File manager - Edit - /home/u816558632/domains/postills.com/public_html/public/plugins.tar
Back
jquery.steps/jquery.steps.css 0000644 00000013023 15002261751 0012404 0 ustar 00 /* Common */ .wizard, .tabcontrol { display: block; width: 100%; overflow: hidden; } .wizard a, .tabcontrol a { outline: 0; } .wizard ul, .tabcontrol ul { list-style: none !important; padding: 0; margin: 0; } .wizard ul > li, .tabcontrol ul > li { display: block; padding: 0; } /* Accessibility */ .wizard > .steps .current-info, .tabcontrol > .steps .current-info { position: absolute; left: -999em; } .wizard > .content > .title, .tabcontrol > .content > .title { position: absolute; left: -999em; } /* Wizard */ .wizard > .steps { position: relative; display: block; width: 100%; } .wizard.vertical > .steps { display: inline; float: left; width: 30%; } .wizard > .steps .number { font-size: 1.429em; } .wizard > .steps > ul > li { width: 25%; } .wizard > .steps > ul > li, .wizard > .actions > ul > li { float: left; } .wizard.vertical > .steps > ul > li { float: none; width: 100%; } .wizard > .steps a, .wizard > .steps a:hover, .wizard > .steps a:active { display: block; width: auto; margin: 0 0.5em 0.5em; padding: 1em 1em; text-decoration: none; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .wizard > .steps .disabled a, .wizard > .steps .disabled a:hover, .wizard > .steps .disabled a:active { background: #eee; color: #aaa; cursor: default; } .wizard > .steps .current a, .wizard > .steps .current a:hover, .wizard > .steps .current a:active { background: #2184be; color: #fff; cursor: default; } .wizard > .steps .done a, .wizard > .steps .done a:hover, .wizard > .steps .done a:active { background: #9dc8e2; color: #fff; } .wizard > .steps .error a, .wizard > .steps .error a:hover, .wizard > .steps .error a:active { background: #d9534f; color: #fff; } .wizard > .content { background: #eee; display: block; margin: 0.5em; min-height: 35em; overflow: hidden; position: relative; width: auto; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .wizard.vertical > .content { display: inline; float: left; margin: 0 2.5% 0.5em 2.5%; width: 65%; } .wizard > .content > .body { float: left; position: relative; width: 95%; height: 95%; padding: 2.5%; } .wizard > .content > .body ul { list-style: disc !important; } .wizard > .content > .body ul > li { display: list-item; } .wizard > .content > .body > iframe { border: 0 none; width: 100%; height: 100%; } .wizard > .content > .body input { display: block; border: 1px solid #ccc; } .wizard > .content > .body input[type="checkbox"] { display: inline-block; } .wizard > .content > .body input.error { /*background: rgb(251, 227, 228);*/ border: 1px solid #fbc2c4; color: #8a1f11; } .wizard > .content > .body label { display: inline-block; margin-bottom: 0.5em; } .wizard > .content > .body label.error { color: #8a1f11; display: inline-block; margin-left: 1.5em; } .wizard > .actions { position: relative; display: block; text-align: right; width: 100%; } .wizard.vertical > .actions { display: inline; float: right; margin: 0 2.5%; width: 95%; } .wizard > .actions > ul { display: inline-block; text-align: right; } .wizard > .actions > ul > li { margin: 0 0.5em; } .wizard.vertical > .actions > ul > li { margin: 0 0 0 1em; } .wizard > .actions a, .wizard > .actions a:hover, .wizard > .actions a:active { /* background: #2184be; color: #fff; display: block; padding: 0.5em 1em; text-decoration: none; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; */ } .wizard > .actions .disabled a, .wizard > .actions .disabled a:hover, .wizard > .actions .disabled a:active { background: #eee; color: #aaa; } .wizard > .loading { } .wizard > .loading .spinner { } /* Tabcontrol */ .tabcontrol > .steps { position: relative; display: block; width: 100%; } .tabcontrol > .steps > ul { position: relative; margin: 6px 0 0 0; top: 1px; z-index: 1; } .tabcontrol > .steps > ul > li { float: left; margin: 5px 2px 0 0; padding: 1px; -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; } .tabcontrol > .steps > ul > li:hover { background: #edecec; border: 1px solid #bbb; padding: 0; } .tabcontrol > .steps > ul > li.current { background: #fff; border: 1px solid #bbb; border-bottom: 0 none; padding: 0 0 1px 0; margin-top: 0; } .tabcontrol > .steps > ul > li > a { color: #5f5f5f; display: inline-block; border: 0 none; margin: 0; padding: 10px 30px; text-decoration: none; } .tabcontrol > .steps > ul > li > a:hover { text-decoration: none; } .tabcontrol > .steps > ul > li.current > a { padding: 15px 30px 10px 30px; } .tabcontrol > .content { position: relative; display: inline-block; width: 100%; height: 35em; overflow: hidden; border-top: 1px solid #bbb; padding-top: 20px; } .tabcontrol > .content > .body { float: left; position: absolute; width: 95%; height: 95%; padding: 2.5%; } .tabcontrol > .content > .body ul { list-style: disc !important; } .tabcontrol > .content > .body ul > li { display: list-item; } jquery.steps/jquery.steps.min.js 0000644 00000033041 15002261751 0013014 0 ustar 00 /*! * jQuery Steps v1.1.0 - 09/04/2014 * Copyright (c) 2014 Rafael Staib (http://www.jquery-steps.com) * Licensed under MIT http://www.opensource.org/licenses/MIT */ !function(a,b){function c(a,b){o(a).push(b)}function d(d,e,f){var g=d.children(e.headerTag),h=d.children(e.bodyTag);g.length>h.length?R(Z,"contents"):g.length<h.length&&R(Z,"titles");var i=e.startIndex;if(f.stepCount=g.length,e.saveState&&a.cookie){var j=a.cookie(U+q(d)),k=parseInt(j,0);!isNaN(k)&&k<f.stepCount&&(i=k)}f.currentIndex=i,g.each(function(e){var f=a(this),g=h.eq(e),i=g.data("mode"),j=null==i?$.html:r($,/^\s*$/.test(i)||isNaN(i)?i:parseInt(i,0)),k=j===$.html||g.data("url")===b?"":g.data("url"),l=j!==$.html&&"1"===g.data("loaded"),m=a.extend({},bb,{title:f.html(),content:j===$.html?g.html():"",contentUrl:k,contentMode:j,contentLoaded:l});c(d,m)})}function e(a){a.triggerHandler("canceled")}function f(a,b){return a.currentIndex-b}function g(b,c){var d=i(b);b.unbind(d).removeData("uid").removeData("options").removeData("state").removeData("steps").removeData("eventNamespace").find(".actions a").unbind(d),b.removeClass(c.clearFixCssClass+" vertical");var e=b.find(".content > *");e.removeData("loaded").removeData("mode").removeData("url"),e.removeAttr("id").removeAttr("role").removeAttr("tabindex").removeAttr("class").removeAttr("style")._removeAria("labelledby")._removeAria("hidden"),b.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty();var f=a('<{0} class="{1}"></{0}>'.format(b.get(0).tagName,b.attr("class"))),g=b._id();return null!=g&&""!==g&&f._id(g),f.html(b.find(".content").html()),b.after(f),b.remove(),f}function h(a,b){var c=a.find(".steps li").eq(b.currentIndex);a.triggerHandler("finishing",[b.currentIndex])?(c.addClass("done").removeClass("error"),a.triggerHandler("finished",[b.currentIndex])):c.addClass("error")}function i(a){var b=a.data("eventNamespace");return null==b&&(b="."+q(a),a.data("eventNamespace",b)),b}function j(a,b){var c=q(a);return a.find("#"+c+V+b)}function k(a,b){var c=q(a);return a.find("#"+c+W+b)}function l(a,b){var c=q(a);return a.find("#"+c+X+b)}function m(a){return a.data("options")}function n(a){return a.data("state")}function o(a){return a.data("steps")}function p(a,b){var c=o(a);return(0>b||b>=c.length)&&R(Y),c[b]}function q(a){var b=a.data("uid");return null==b&&(b=a._id(),null==b&&(b="steps-uid-".concat(T),a._id(b)),T++,a.data("uid",b)),b}function r(a,c){if(S("enumType",a),S("keyOrValue",c),"string"==typeof c){var d=a[c];return d===b&&R("The enum key '{0}' does not exist.",c),d}if("number"==typeof c){for(var e in a)if(a[e]===c)return c;R("Invalid enum value '{0}'.",c)}else R("Invalid key or value type.")}function s(a,b,c){return B(a,b,c,v(c,1))}function t(a,b,c){return B(a,b,c,f(c,1))}function u(a,b,c,d){if((0>d||d>=c.stepCount)&&R(Y),!(b.forceMoveForward&&d<c.currentIndex)){var e=c.currentIndex;return a.triggerHandler("stepChanging",[c.currentIndex,d])?(c.currentIndex=d,O(a,b,c),E(a,b,c,e),D(a,b,c),A(a,b,c),P(a,b,c,d,e,function(){a.triggerHandler("stepChanged",[d,e])})):a.find(".steps li").eq(e).addClass("error"),!0}}function v(a,b){return a.currentIndex+b}function w(b){var c=a.extend(!0,{},cb,b);return this.each(function(){var b=a(this),e={currentIndex:c.startIndex,currentStep:null,stepCount:0,transitionElement:null};b.data("options",c),b.data("state",e),b.data("steps",[]),d(b,c,e),J(b,c,e),G(b,c),c.autoFocus&&0===T&&j(b,c.startIndex).focus(),b.triggerHandler("init",[c.startIndex])})}function x(b,c,d,e,f){(0>e||e>d.stepCount)&&R(Y),f=a.extend({},bb,f),y(b,e,f),d.currentIndex!==d.stepCount&&d.currentIndex>=e&&(d.currentIndex++,O(b,c,d)),d.stepCount++;var g=b.find(".content"),h=a("<{0}>{1}</{0}>".format(c.headerTag,f.title)),i=a("<{0}></{0}>".format(c.bodyTag));return(null==f.contentMode||f.contentMode===$.html)&&i.html(f.content),0===e?g.prepend(i).prepend(h):k(b,e-1).after(i).after(h),K(b,d,i,e),N(b,c,d,h,e),F(b,c,d,e),e===d.currentIndex&&E(b,c,d),D(b,c,d),b}function y(a,b,c){o(a).splice(b,0,c)}function z(b){var c=a(this),d=m(c),e=n(c);if(d.suppressPaginationOnFocus&&c.find(":focus").is(":input"))return b.preventDefault(),!1;var f={left:37,right:39};b.keyCode===f.left?(b.preventDefault(),t(c,d,e)):b.keyCode===f.right&&(b.preventDefault(),s(c,d,e))}function A(b,c,d){if(d.stepCount>0){var e=d.currentIndex,f=p(b,e);if(!c.enableContentCache||!f.contentLoaded)switch(r($,f.contentMode)){case $.iframe:b.find(".content > .body").eq(d.currentIndex).empty().html('<iframe src="'+f.contentUrl+'" frameborder="0" scrolling="no" />').data("loaded","1");break;case $.async:var g=k(b,e)._aria("busy","true").empty().append(M(c.loadingTemplate,{text:c.labels.loading}));a.ajax({url:f.contentUrl,cache:!1}).done(function(a){g.empty().html(a)._aria("busy","false").data("loaded","1"),b.triggerHandler("contentLoaded",[e])})}}}function B(a,b,c,d){var e=c.currentIndex;if(d>=0&&d<c.stepCount&&!(b.forceMoveForward&&d<c.currentIndex)){var f=j(a,d),g=f.parent(),h=g.hasClass("disabled");return g._enableAria(),f.click(),e===c.currentIndex&&h?(g._enableAria(!1),!1):!0}return!1}function C(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),f=m(d),g=n(d),i=c.attr("href");switch(i.substring(i.lastIndexOf("#")+1)){case"cancel":e(d);break;case"finish":h(d,g);break;case"next":s(d,f,g);break;case"previous":t(d,f,g)}}function D(a,b,c){if(b.enablePagination){var d=a.find(".actions a[href$='#finish']").parent(),e=a.find(".actions a[href$='#next']").parent();if(!b.forceMoveForward){var f=a.find(".actions a[href$='#previous']").parent();f._enableAria(c.currentIndex>0)}b.enableFinishButton&&b.showFinishButtonAlways?(d._enableAria(c.stepCount>0),e._enableAria(c.stepCount>1&&c.stepCount>c.currentIndex+1)):(d._showAria(b.enableFinishButton&&c.stepCount===c.currentIndex+1),e._showAria(0===c.stepCount||c.stepCount>c.currentIndex+1)._enableAria(c.stepCount>c.currentIndex+1||!b.enableFinishButton))}}function E(b,c,d,e){var f=j(b,d.currentIndex),g=a('<span class="current-info audible">'+c.labels.current+" </span>"),h=b.find(".content > .title");if(null!=e){var i=j(b,e);i.parent().addClass("done").removeClass("error")._selectAria(!1),h.eq(e).removeClass("current").next(".body").removeClass("current"),g=i.find(".current-info"),f.focus()}f.prepend(g).parent()._selectAria().removeClass("done")._enableAria(),h.eq(d.currentIndex).addClass("current").next(".body").addClass("current")}function F(a,b,c,d){for(var e=q(a),f=d;f<c.stepCount;f++){var g=e+V+f,h=e+W+f,i=e+X+f,j=a.find(".title").eq(f)._id(i);a.find(".steps a").eq(f)._id(g)._aria("controls",h).attr("href","#"+i).html(M(b.titleTemplate,{index:f+1,title:j.html()})),a.find(".body").eq(f)._id(h)._aria("labelledby",i)}}function G(a,b){var c=i(a);a.bind("canceled"+c,b.onCanceled),a.bind("contentLoaded"+c,b.onContentLoaded),a.bind("finishing"+c,b.onFinishing),a.bind("finished"+c,b.onFinished),a.bind("init"+c,b.onInit),a.bind("stepChanging"+c,b.onStepChanging),a.bind("stepChanged"+c,b.onStepChanged),b.enableKeyNavigation&&a.bind("keyup"+c,z),a.find(".actions a").bind("click"+c,C)}function H(a,b,c,d){return 0>d||d>=c.stepCount||c.currentIndex===d?!1:(I(a,d),c.currentIndex>d&&(c.currentIndex--,O(a,b,c)),c.stepCount--,l(a,d).remove(),k(a,d).remove(),j(a,d).parent().remove(),0===d&&a.find(".steps li").first().addClass("first"),d===c.stepCount&&a.find(".steps li").eq(d).addClass("last"),F(a,b,c,d),D(a,b,c),!0)}function I(a,b){o(a).splice(b,1)}function J(b,c,d){var e='<{0} class="{1}">{2}</{0}>',f=r(_,c.stepsOrientation),g=f===_.vertical?" vertical":"",h=a(e.format(c.contentContainerTag,"content "+c.clearFixCssClass,b.html())),i=a(e.format(c.stepsContainerTag,"steps "+c.clearFixCssClass,'<ul role="tablist"></ul>')),j=h.children(c.headerTag),k=h.children(c.bodyTag);b.attr("role","application").empty().append(i).append(h).addClass(c.cssClass+" "+c.clearFixCssClass+g),k.each(function(c){K(b,d,a(this),c)}),j.each(function(e){N(b,c,d,a(this),e)}),E(b,c,d),L(b,c,d)}function K(a,b,c,d){var e=q(a),f=e+W+d,g=e+X+d;c._id(f).attr("role","tabpanel")._aria("labelledby",g).addClass("body")._showAria(b.currentIndex===d)}function L(a,b,c){if(b.enablePagination){var d='<{0} class="actions {1}"><ul role="menu" aria-label="{2}">{3}</ul></{0}>',e='<li><a href="#{0}" role="menuitem">{1}</a></li>',f="";b.forceMoveForward||(f+=e.format("previous",b.labels.previous)),f+=e.format("next",b.labels.next),b.enableFinishButton&&(f+=e.format("finish",b.labels.finish)),b.enableCancelButton&&(f+=e.format("cancel",b.labels.cancel)),a.append(d.format(b.actionContainerTag,b.clearFixCssClass,b.labels.pagination,f)),D(a,b,c),A(a,b,c)}}function M(a,c){for(var d=a.match(/#([a-z]*)#/gi),e=0;e<d.length;e++){var f=d[e],g=f.substring(1,f.length-1);c[g]===b&&R("The key '{0}' does not exist in the substitute collection!",g),a=a.replace(f,c[g])}return a}function N(b,c,d,e,f){var g=q(b),h=g+V+f,j=g+W+f,k=g+X+f,l=b.find(".steps > ul"),m=M(c.titleTemplate,{index:f+1,title:e.html()}),n=a('<li role="tab"><a id="'+h+'" href="#'+k+'" aria-controls="'+j+'">'+m+"</a></li>");n._enableAria(c.enableAllSteps||d.currentIndex>f),d.currentIndex>f&&n.addClass("done"),e._id(k).attr("tabindex","-1").addClass("title"),0===f?l.prepend(n):l.find("li").eq(f-1).after(n),0===f&&l.find("li").removeClass("first").eq(f).addClass("first"),f===d.stepCount-1&&l.find("li").removeClass("last").eq(f).addClass("last"),n.children("a").bind("click"+i(b),Q)}function O(b,c,d){c.saveState&&a.cookie&&a.cookie(U+q(b),d.currentIndex)}function P(b,c,d,e,f,g){var h=b.find(".content > .body"),i=r(ab,c.transitionEffect),j=c.transitionEffectSpeed,k=h.eq(e),l=h.eq(f);switch(i){case ab.fade:case ab.slide:var m=i===ab.fade?"fadeOut":"slideUp",o=i===ab.fade?"fadeIn":"slideDown";d.transitionElement=k,l[m](j,function(){var b=a(this)._showAria(!1).parent().parent(),c=n(b);c.transitionElement&&(c.transitionElement[o](j,function(){a(this)._showAria()}).promise().done(g),c.transitionElement=null)});break;case ab.slideLeft:var p=l.outerWidth(!0),q=e>f?-p:p,s=e>f?p:-p;a.when(l.animate({left:q},j,function(){a(this)._showAria(!1)}),k.css("left",s+"px")._showAria().animate({left:0},j)).done(g);break;default:a.when(l._showAria(!1),k._showAria()).done(g)}}function Q(b){b.preventDefault();var c=a(this),d=c.parent().parent().parent().parent(),e=m(d),f=n(d),g=f.currentIndex;if(c.parent().is(":not(.disabled):not(.current)")){var h=c.attr("href"),i=parseInt(h.substring(h.lastIndexOf("-")+1),0);u(d,e,f,i)}return g===f.currentIndex?(j(d,g).focus(),!1):void 0}function R(a){throw arguments.length>1&&(a=a.format(Array.prototype.slice.call(arguments,1))),new Error(a)}function S(a,b){null==b&&R("The argument '{0}' is null or undefined.",a)}a.fn.extend({_aria:function(a,b){return this.attr("aria-"+a,b)},_removeAria:function(a){return this.removeAttr("aria-"+a)},_enableAria:function(a){return null==a||a?this.removeClass("disabled")._aria("disabled","false"):this.addClass("disabled")._aria("disabled","true")},_showAria:function(a){return null==a||a?this.show()._aria("hidden","false"):this.hide()._aria("hidden","true")},_selectAria:function(a){return null==a||a?this.addClass("current")._aria("selected","true"):this.removeClass("current")._aria("selected","false")},_id:function(a){return a?this.attr("id",a):this.attr("id")}}),String.prototype.format||(String.prototype.format=function(){for(var b=1===arguments.length&&a.isArray(arguments[0])?arguments[0]:arguments,c=this,d=0;d<b.length;d++){var e=new RegExp("\\{"+d+"\\}","gm");c=c.replace(e,b[d])}return c});var T=0,U="jQu3ry_5teps_St@te_",V="-t-",W="-p-",X="-h-",Y="Index out of range.",Z="One or more corresponding step {0} are missing.";a.fn.steps=function(b){return a.fn.steps[b]?a.fn.steps[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.steps"):w.apply(this,arguments)},a.fn.steps.add=function(a){var b=n(this);return x(this,m(this),b,b.stepCount,a)},a.fn.steps.destroy=function(){return g(this,m(this))},a.fn.steps.finish=function(){h(this,n(this))},a.fn.steps.getCurrentIndex=function(){return n(this).currentIndex},a.fn.steps.getCurrentStep=function(){return p(this,n(this).currentIndex)},a.fn.steps.getStep=function(a){return p(this,a)},a.fn.steps.insert=function(a,b){return x(this,m(this),n(this),a,b)},a.fn.steps.next=function(){return s(this,m(this),n(this))},a.fn.steps.previous=function(){return t(this,m(this),n(this))},a.fn.steps.remove=function(a){return H(this,m(this),n(this),a)},a.fn.steps.setStep=function(){throw new Error("Not yet implemented!")},a.fn.steps.skip=function(){throw new Error("Not yet implemented!")};var $=a.fn.steps.contentMode={html:0,iframe:1,async:2},_=a.fn.steps.stepsOrientation={horizontal:0,vertical:1},ab=a.fn.steps.transitionEffect={none:0,fade:1,slide:2,slideLeft:3},bb=a.fn.steps.stepModel={title:"",content:"",contentUrl:"",contentMode:$.html,contentLoaded:!1},cb=a.fn.steps.defaults={headerTag:"h1",bodyTag:"div",contentContainerTag:"div",actionContainerTag:"div",stepsContainerTag:"div",cssClass:"wizard",clearFixCssClass:"clearfix",stepsOrientation:_.horizontal,titleTemplate:'<span class="number">#index#.</span> #title#',loadingTemplate:'<span class="spinner"></span> #text#',autoFocus:!1,enableAllSteps:!1,enableKeyNavigation:!0,enablePagination:!0,suppressPaginationOnFocus:!0,enableContentCache:!0,enableCancelButton:!1,enableFinishButton:!0,preloadContent:!1,showFinishButtonAlways:!1,forceMoveForward:!1,saveState:!1,startIndex:0,transitionEffect:ab.none,transitionEffectSpeed:200,onStepChanging:function(){return!0},onStepChanged:function(){},onCanceled:function(){},onFinishing:function(){return!0},onFinished:function(){},onContentLoaded:function(){},onInit:function(){},labels:{cancel:"Cancel",current:"current step:",pagination:"Pagination",finish:"Finish",next:"Next",previous:"Previous",loading:"Loading ..."}}}(jQuery); jquery.steps/jquery.steps.js 0000644 00000150132 15002261751 0012233 0 ustar 00 /*! * jQuery Steps v1.1.0 - 09/04/2014 * Copyright (c) 2014 Rafael Staib (http://www.jquery-steps.com) * Licensed under MIT http://www.opensource.org/licenses/MIT */ ;(function ($, undefined) { $.fn.extend({ _aria: function (name, value) { return this.attr("aria-" + name, value); }, _removeAria: function (name) { return this.removeAttr("aria-" + name); }, _enableAria: function (enable) { return (enable == null || enable) ? this.removeClass("disabled")._aria("disabled", "false") : this.addClass("disabled")._aria("disabled", "true"); }, _showAria: function (show) { return (show == null || show) ? this.show()._aria("hidden", "false") : this.hide()._aria("hidden", "true"); }, _selectAria: function (select) { return (select == null || select) ? this.addClass("current")._aria("selected", "true") : this.removeClass("current")._aria("selected", "false"); }, _id: function (id) { return (id) ? this.attr("id", id) : this.attr("id"); } }); if (!String.prototype.format) { String.prototype.format = function() { var args = (arguments.length === 1 && $.isArray(arguments[0])) ? arguments[0] : arguments; var formattedString = this; for (var i = 0; i < args.length; i++) { var pattern = new RegExp("\\{" + i + "\\}", "gm"); formattedString = formattedString.replace(pattern, args[i]); } return formattedString; }; } /** * A global unique id count. * * @static * @private * @property _uniqueId * @type Integer **/ var _uniqueId = 0; /** * The plugin prefix for cookies. * * @final * @private * @property _cookiePrefix * @type String **/ var _cookiePrefix = "jQu3ry_5teps_St@te_"; /** * Suffix for the unique tab id. * * @final * @private * @property _tabSuffix * @type String * @since 0.9.7 **/ var _tabSuffix = "-t-"; /** * Suffix for the unique tabpanel id. * * @final * @private * @property _tabpanelSuffix * @type String * @since 0.9.7 **/ var _tabpanelSuffix = "-p-"; /** * Suffix for the unique title id. * * @final * @private * @property _titleSuffix * @type String * @since 0.9.7 **/ var _titleSuffix = "-h-"; /** * An error message for an "index out of range" error. * * @final * @private * @property _indexOutOfRangeErrorMessage * @type String **/ var _indexOutOfRangeErrorMessage = "Index out of range."; /** * An error message for an "missing corresponding element" error. * * @final * @private * @property _missingCorrespondingElementErrorMessage * @type String **/ var _missingCorrespondingElementErrorMessage = "One or more corresponding step {0} are missing."; /** * Adds a step to the cache. * * @static * @private * @method addStepToCache * @param wizard {Object} A jQuery wizard object * @param step {Object} The step object to add **/ function addStepToCache(wizard, step) { getSteps(wizard).push(step); } function analyzeData(wizard, options, state) { var stepTitles = wizard.children(options.headerTag), stepContents = wizard.children(options.bodyTag); // Validate content if (stepTitles.length > stepContents.length) { throwError(_missingCorrespondingElementErrorMessage, "contents"); } else if (stepTitles.length < stepContents.length) { throwError(_missingCorrespondingElementErrorMessage, "titles"); } var startIndex = options.startIndex; state.stepCount = stepTitles.length; // Tries to load the saved state (step position) if (options.saveState && $.cookie) { var savedState = $.cookie(_cookiePrefix + getUniqueId(wizard)); // Sets the saved position to the start index if not undefined or out of range var savedIndex = parseInt(savedState, 0); if (!isNaN(savedIndex) && savedIndex < state.stepCount) { startIndex = savedIndex; } } state.currentIndex = startIndex; stepTitles.each(function (index) { var item = $(this), // item == header content = stepContents.eq(index), modeData = content.data("mode"), mode = (modeData == null) ? contentMode.html : getValidEnumValue(contentMode, (/^\s*$/.test(modeData) || isNaN(modeData)) ? modeData : parseInt(modeData, 0)), contentUrl = (mode === contentMode.html || content.data("url") === undefined) ? "" : content.data("url"), contentLoaded = (mode !== contentMode.html && content.data("loaded") === "1"), step = $.extend({}, stepModel, { title: item.html(), content: (mode === contentMode.html) ? content.html() : "", contentUrl: contentUrl, contentMode: mode, contentLoaded: contentLoaded }); addStepToCache(wizard, step); }); } /** * Triggers the onCanceled event. * * @static * @private * @method cancel * @param wizard {Object} The jQuery wizard object **/ function cancel(wizard) { wizard.triggerHandler("canceled"); } function decreaseCurrentIndexBy(state, decreaseBy) { return state.currentIndex - decreaseBy; } /** * Removes the control functionality completely and transforms the current state to the initial HTML structure. * * @static * @private * @method destroy * @param wizard {Object} A jQuery wizard object **/ function destroy(wizard, options) { var eventNamespace = getEventNamespace(wizard); // Remove virtual data objects from the wizard wizard.unbind(eventNamespace).removeData("uid").removeData("options") .removeData("state").removeData("steps").removeData("eventNamespace") .find(".actions a").unbind(eventNamespace); // Remove attributes and CSS classes from the wizard wizard.removeClass(options.clearFixCssClass + " vertical"); var contents = wizard.find(".content > *"); // Remove virtual data objects from panels and their titles contents.removeData("loaded").removeData("mode").removeData("url"); // Remove attributes, CSS classes and reset inline styles on all panels and their titles contents.removeAttr("id").removeAttr("role").removeAttr("tabindex") .removeAttr("class").removeAttr("style")._removeAria("labelledby") ._removeAria("hidden"); // Empty panels if the mode is set to 'async' or 'iframe' wizard.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty(); var wizardSubstitute = $("<{0} class=\"{1}\"></{0}>".format(wizard.get(0).tagName, wizard.attr("class"))); var wizardId = wizard._id(); if (wizardId != null && wizardId !== "") { wizardSubstitute._id(wizardId); } wizardSubstitute.html(wizard.find(".content").html()); wizard.after(wizardSubstitute); wizard.remove(); return wizardSubstitute; } /** * Triggers the onFinishing and onFinished event. * * @static * @private * @method finishStep * @param wizard {Object} The jQuery wizard object * @param state {Object} The state container of the current wizard **/ function finishStep(wizard, state) { var currentStep = wizard.find(".steps li").eq(state.currentIndex); if (wizard.triggerHandler("finishing", [state.currentIndex])) { currentStep.addClass("done").removeClass("error"); wizard.triggerHandler("finished", [state.currentIndex]); } else { currentStep.addClass("error"); } } /** * Gets or creates if not exist an unique event namespace for the given wizard instance. * * @static * @private * @method getEventNamespace * @param wizard {Object} A jQuery wizard object * @return {String} Returns the unique event namespace for the given wizard */ function getEventNamespace(wizard) { var eventNamespace = wizard.data("eventNamespace"); if (eventNamespace == null) { eventNamespace = "." + getUniqueId(wizard); wizard.data("eventNamespace", eventNamespace); } return eventNamespace; } function getStepAnchor(wizard, index) { var uniqueId = getUniqueId(wizard); return wizard.find("#" + uniqueId + _tabSuffix + index); } function getStepPanel(wizard, index) { var uniqueId = getUniqueId(wizard); return wizard.find("#" + uniqueId + _tabpanelSuffix + index); } function getStepTitle(wizard, index) { var uniqueId = getUniqueId(wizard); return wizard.find("#" + uniqueId + _titleSuffix + index); } function getOptions(wizard) { return wizard.data("options"); } function getState(wizard) { return wizard.data("state"); } function getSteps(wizard) { return wizard.data("steps"); } /** * Gets a specific step object by index. * * @static * @private * @method getStep * @param index {Integer} An integer that belongs to the position of a step * @return {Object} A specific step object **/ function getStep(wizard, index) { var steps = getSteps(wizard); if (index < 0 || index >= steps.length) { throwError(_indexOutOfRangeErrorMessage); } return steps[index]; } /** * Gets or creates if not exist an unique id from the given wizard instance. * * @static * @private * @method getUniqueId * @param wizard {Object} A jQuery wizard object * @return {String} Returns the unique id for the given wizard */ function getUniqueId(wizard) { var uniqueId = wizard.data("uid"); if (uniqueId == null) { uniqueId = wizard._id(); if (uniqueId == null) { uniqueId = "steps-uid-".concat(_uniqueId); wizard._id(uniqueId); } _uniqueId++; wizard.data("uid", uniqueId); } return uniqueId; } /** * Gets a valid enum value by checking a specific enum key or value. * * @static * @private * @method getValidEnumValue * @param enumType {Object} Type of enum * @param keyOrValue {Object} Key as `String` or value as `Integer` to check for */ function getValidEnumValue(enumType, keyOrValue) { validateArgument("enumType", enumType); validateArgument("keyOrValue", keyOrValue); // Is key if (typeof keyOrValue === "string") { var value = enumType[keyOrValue]; if (value === undefined) { throwError("The enum key '{0}' does not exist.", keyOrValue); } return value; } // Is value else if (typeof keyOrValue === "number") { for (var key in enumType) { if (enumType[key] === keyOrValue) { return keyOrValue; } } throwError("Invalid enum value '{0}'.", keyOrValue); } // Type is not supported else { throwError("Invalid key or value type."); } } /** * Routes to the next step. * * @static * @private * @method goToNextStep * @param wizard {Object} The jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @return {Boolean} Indicates whether the action executed **/ function goToNextStep(wizard, options, state) { return paginationClick(wizard, options, state, increaseCurrentIndexBy(state, 1)); } /** * Routes to the previous step. * * @static * @private * @method goToPreviousStep * @param wizard {Object} The jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @return {Boolean} Indicates whether the action executed **/ function goToPreviousStep(wizard, options, state) { return paginationClick(wizard, options, state, decreaseCurrentIndexBy(state, 1)); } /** * Routes to a specific step by a given index. * * @static * @private * @method goToStep * @param wizard {Object} The jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @param index {Integer} The position (zero-based) to route to * @return {Boolean} Indicates whether the action succeeded or failed **/ function goToStep(wizard, options, state, index) { if (index < 0 || index >= state.stepCount) { throwError(_indexOutOfRangeErrorMessage); } if (options.forceMoveForward && index < state.currentIndex) { return; } var oldIndex = state.currentIndex; if (wizard.triggerHandler("stepChanging", [state.currentIndex, index])) { // Save new state state.currentIndex = index; saveCurrentStateToCookie(wizard, options, state); // Change visualisation refreshStepNavigation(wizard, options, state, oldIndex); refreshPagination(wizard, options, state); loadAsyncContent(wizard, options, state); startTransitionEffect(wizard, options, state, index, oldIndex, function() { wizard.triggerHandler("stepChanged", [index, oldIndex]); }); } else { wizard.find(".steps li").eq(oldIndex).addClass("error"); } return true; } function increaseCurrentIndexBy(state, increaseBy) { return state.currentIndex + increaseBy; } /** * Initializes the component. * * @static * @private * @method initialize * @param options {Object} The component settings **/ function initialize(options) { /*jshint -W040 */ var opts = $.extend(true, {}, defaults, options); return this.each(function () { var wizard = $(this); var state = { currentIndex: opts.startIndex, currentStep: null, stepCount: 0, transitionElement: null }; // Create data container wizard.data("options", opts); wizard.data("state", state); wizard.data("steps", []); analyzeData(wizard, opts, state); render(wizard, opts, state); registerEvents(wizard, opts); // Trigger focus if (opts.autoFocus && _uniqueId === 0) { getStepAnchor(wizard, opts.startIndex).focus(); } wizard.triggerHandler("init", [opts.startIndex]); }); } /** * Inserts a new step to a specific position. * * @static * @private * @method insertStep * @param wizard {Object} The jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @param index {Integer} The position (zero-based) to add * @param step {Object} The step object to add * @example * $("#wizard").steps().insert(0, { * title: "Title", * content: "", // optional * contentMode: "async", // optional * contentUrl: "/Content/Step/1" // optional * }); * @chainable **/ function insertStep(wizard, options, state, index, step) { if (index < 0 || index > state.stepCount) { throwError(_indexOutOfRangeErrorMessage); } // TODO: Validate step object // Change data step = $.extend({}, stepModel, step); insertStepToCache(wizard, index, step); if (state.currentIndex !== state.stepCount && state.currentIndex >= index) { state.currentIndex++; saveCurrentStateToCookie(wizard, options, state); } state.stepCount++; var contentContainer = wizard.find(".content"), header = $("<{0}>{1}</{0}>".format(options.headerTag, step.title)), body = $("<{0}></{0}>".format(options.bodyTag)); if (step.contentMode == null || step.contentMode === contentMode.html) { body.html(step.content); } if (index === 0) { contentContainer.prepend(body).prepend(header); } else { getStepPanel(wizard, (index - 1)).after(body).after(header); } renderBody(wizard, state, body, index); renderTitle(wizard, options, state, header, index); refreshSteps(wizard, options, state, index); if (index === state.currentIndex) { refreshStepNavigation(wizard, options, state); } refreshPagination(wizard, options, state); return wizard; } /** * Inserts a step object to the cache at a specific position. * * @static * @private * @method insertStepToCache * @param wizard {Object} A jQuery wizard object * @param index {Integer} The position (zero-based) to add * @param step {Object} The step object to add **/ function insertStepToCache(wizard, index, step) { getSteps(wizard).splice(index, 0, step); } /** * Handles the keyup DOM event for pagination. * * @static * @private * @event keyup * @param event {Object} An event object */ function keyUpHandler(event) { var wizard = $(this), options = getOptions(wizard), state = getState(wizard); if (options.suppressPaginationOnFocus && wizard.find(":focus").is(":input")) { event.preventDefault(); return false; } var keyCodes = { left: 37, right: 39 }; if (event.keyCode === keyCodes.left) { event.preventDefault(); goToPreviousStep(wizard, options, state); } else if (event.keyCode === keyCodes.right) { event.preventDefault(); goToNextStep(wizard, options, state); } } /** * Loads and includes async content. * * @static * @private * @method loadAsyncContent * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard */ function loadAsyncContent(wizard, options, state) { if (state.stepCount > 0) { var currentIndex = state.currentIndex, currentStep = getStep(wizard, currentIndex); if (!options.enableContentCache || !currentStep.contentLoaded) { switch (getValidEnumValue(contentMode, currentStep.contentMode)) { case contentMode.iframe: wizard.find(".content > .body").eq(state.currentIndex).empty() .html("<iframe src=\"" + currentStep.contentUrl + "\" frameborder=\"0\" scrolling=\"no\" />") .data("loaded", "1"); break; case contentMode.async: var currentStepContent = getStepPanel(wizard, currentIndex)._aria("busy", "true") .empty().append(renderTemplate(options.loadingTemplate, { text: options.labels.loading })); $.ajax({ url: currentStep.contentUrl, cache: false }).done(function (data) { currentStepContent.empty().html(data)._aria("busy", "false").data("loaded", "1"); wizard.triggerHandler("contentLoaded", [currentIndex]); }); break; } } } } /** * Fires the action next or previous click event. * * @static * @private * @method paginationClick * @param wizard {Object} The jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @param index {Integer} The position (zero-based) to route to * @return {Boolean} Indicates whether the event fired successfully or not **/ function paginationClick(wizard, options, state, index) { var oldIndex = state.currentIndex; if (index >= 0 && index < state.stepCount && !(options.forceMoveForward && index < state.currentIndex)) { var anchor = getStepAnchor(wizard, index), parent = anchor.parent(), isDisabled = parent.hasClass("disabled"); // Enable the step to make the anchor clickable! parent._enableAria(); anchor.click(); // An error occured if (oldIndex === state.currentIndex && isDisabled) { // Disable the step again if current index has not changed; prevents click action. parent._enableAria(false); return false; } return true; } return false; } /** * Fires when a pagination click happens. * * @static * @private * @event click * @param event {Object} An event object */ function paginationClickHandler(event) { event.preventDefault(); var anchor = $(this), wizard = anchor.parent().parent().parent().parent(), options = getOptions(wizard), state = getState(wizard), href = anchor.attr("href"); switch (href.substring(href.lastIndexOf("#") + 1)) { case "cancel": cancel(wizard); break; case "finish": finishStep(wizard, state); break; case "next": goToNextStep(wizard, options, state); break; case "previous": goToPreviousStep(wizard, options, state); break; } } /** * Refreshs the visualization state for the entire pagination. * * @static * @private * @method refreshPagination * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard */ function refreshPagination(wizard, options, state) { if (options.enablePagination) { var finish = wizard.find(".actions a[href$='#finish']").parent(), next = wizard.find(".actions a[href$='#next']").parent(); if (!options.forceMoveForward) { var previous = wizard.find(".actions a[href$='#previous']").parent(); previous._enableAria(state.currentIndex > 0); } if (options.enableFinishButton && options.showFinishButtonAlways) { finish._enableAria(state.stepCount > 0); next._enableAria(state.stepCount > 1 && state.stepCount > (state.currentIndex + 1)); } else { finish._showAria(options.enableFinishButton && state.stepCount === (state.currentIndex + 1)); next._showAria(state.stepCount === 0 || state.stepCount > (state.currentIndex + 1)). _enableAria(state.stepCount > (state.currentIndex + 1) || !options.enableFinishButton); } } } /** * Refreshs the visualization state for the step navigation (tabs). * * @static * @private * @method refreshStepNavigation * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @param [oldIndex] {Integer} The index of the prior step */ function refreshStepNavigation(wizard, options, state, oldIndex) { var currentOrNewStepAnchor = getStepAnchor(wizard, state.currentIndex), currentInfo = $("<span class=\"current-info audible\">" + options.labels.current + " </span>"), stepTitles = wizard.find(".content > .title"); if (oldIndex != null) { var oldStepAnchor = getStepAnchor(wizard, oldIndex); oldStepAnchor.parent().addClass("done").removeClass("error")._selectAria(false); stepTitles.eq(oldIndex).removeClass("current").next(".body").removeClass("current"); currentInfo = oldStepAnchor.find(".current-info"); currentOrNewStepAnchor.focus(); } currentOrNewStepAnchor.prepend(currentInfo).parent()._selectAria().removeClass("done")._enableAria(); stepTitles.eq(state.currentIndex).addClass("current").next(".body").addClass("current"); } /** * Refreshes step buttons and their related titles beyond a certain position. * * @static * @private * @method refreshSteps * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @param index {Integer} The start point for refreshing ids */ function refreshSteps(wizard, options, state, index) { var uniqueId = getUniqueId(wizard); for (var i = index; i < state.stepCount; i++) { var uniqueStepId = uniqueId + _tabSuffix + i, uniqueBodyId = uniqueId + _tabpanelSuffix + i, uniqueHeaderId = uniqueId + _titleSuffix + i, title = wizard.find(".title").eq(i)._id(uniqueHeaderId); wizard.find(".steps a").eq(i)._id(uniqueStepId) ._aria("controls", uniqueBodyId).attr("href", "#" + uniqueHeaderId) .html(renderTemplate(options.titleTemplate, { index: i + 1, title: title.html() })); wizard.find(".body").eq(i)._id(uniqueBodyId) ._aria("labelledby", uniqueHeaderId); } } function registerEvents(wizard, options) { var eventNamespace = getEventNamespace(wizard); wizard.bind("canceled" + eventNamespace, options.onCanceled); wizard.bind("contentLoaded" + eventNamespace, options.onContentLoaded); wizard.bind("finishing" + eventNamespace, options.onFinishing); wizard.bind("finished" + eventNamespace, options.onFinished); wizard.bind("init" + eventNamespace, options.onInit); wizard.bind("stepChanging" + eventNamespace, options.onStepChanging); wizard.bind("stepChanged" + eventNamespace, options.onStepChanged); if (options.enableKeyNavigation) { wizard.bind("keyup" + eventNamespace, keyUpHandler); } wizard.find(".actions a").bind("click" + eventNamespace, paginationClickHandler); } /** * Removes a specific step by an given index. * * @static * @private * @method removeStep * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @param index {Integer} The position (zero-based) of the step to remove * @return Indecates whether the item is removed. **/ function removeStep(wizard, options, state, index) { // Index out of range and try deleting current item will return false. if (index < 0 || index >= state.stepCount || state.currentIndex === index) { return false; } // Change data removeStepFromCache(wizard, index); if (state.currentIndex > index) { state.currentIndex--; saveCurrentStateToCookie(wizard, options, state); } state.stepCount--; getStepTitle(wizard, index).remove(); getStepPanel(wizard, index).remove(); getStepAnchor(wizard, index).parent().remove(); // Set the "first" class to the new first step button if (index === 0) { wizard.find(".steps li").first().addClass("first"); } // Set the "last" class to the new last step button if (index === state.stepCount) { wizard.find(".steps li").eq(index).addClass("last"); } refreshSteps(wizard, options, state, index); refreshPagination(wizard, options, state); return true; } function removeStepFromCache(wizard, index) { getSteps(wizard).splice(index, 1); } /** * Transforms the base html structure to a more sensible html structure. * * @static * @private * @method render * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard **/ function render(wizard, options, state) { // Create a content wrapper and copy HTML from the intial wizard structure var wrapperTemplate = "<{0} class=\"{1}\">{2}</{0}>", orientation = getValidEnumValue(stepsOrientation, options.stepsOrientation), verticalCssClass = (orientation === stepsOrientation.vertical) ? " vertical" : "", contentWrapper = $(wrapperTemplate.format(options.contentContainerTag, "content " + options.clearFixCssClass, wizard.html())), stepsWrapper = $(wrapperTemplate.format(options.stepsContainerTag, "steps " + options.clearFixCssClass, "<ul role=\"tablist\"></ul>")), stepTitles = contentWrapper.children(options.headerTag), stepContents = contentWrapper.children(options.bodyTag); // Transform the wizard wrapper and remove the inner HTML wizard.attr("role", "application").empty().append(stepsWrapper).append(contentWrapper) .addClass(options.cssClass + " " + options.clearFixCssClass + verticalCssClass); // Add WIA-ARIA support stepContents.each(function (index) { renderBody(wizard, state, $(this), index); }); stepTitles.each(function (index) { renderTitle(wizard, options, state, $(this), index); }); refreshStepNavigation(wizard, options, state); renderPagination(wizard, options, state); } /** * Transforms the body to a proper tabpanel. * * @static * @private * @method renderBody * @param wizard {Object} A jQuery wizard object * @param body {Object} A jQuery body object * @param index {Integer} The position of the body */ function renderBody(wizard, state, body, index) { var uniqueId = getUniqueId(wizard), uniqueBodyId = uniqueId + _tabpanelSuffix + index, uniqueHeaderId = uniqueId + _titleSuffix + index; body._id(uniqueBodyId).attr("role", "tabpanel")._aria("labelledby", uniqueHeaderId) .addClass("body")._showAria(state.currentIndex === index); } /** * Renders a pagination if enabled. * * @static * @private * @method renderPagination * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard */ function renderPagination(wizard, options, state) { if (options.enablePagination) { var pagination = "<{0} class=\"actions {1}\"><ul role=\"menu\" aria-label=\"{2}\">{3}</ul></{0}>", buttonTemplate = "<li><a href=\"#{0}\" role=\"menuitem\">{1}</a></li>", buttons = ""; if (!options.forceMoveForward) { buttons += buttonTemplate.format("previous", options.labels.previous); } buttons += buttonTemplate.format("next", options.labels.next); if (options.enableFinishButton) { buttons += buttonTemplate.format("finish", options.labels.finish); } if (options.enableCancelButton) { buttons += buttonTemplate.format("cancel", options.labels.cancel); } wizard.append(pagination.format(options.actionContainerTag, options.clearFixCssClass, options.labels.pagination, buttons)); refreshPagination(wizard, options, state); loadAsyncContent(wizard, options, state); } } /** * Renders a template and replaces all placeholder. * * @static * @private * @method renderTemplate * @param template {String} A template * @param substitutes {Object} A list of substitute * @return {String} The rendered template */ function renderTemplate(template, substitutes) { var matches = template.match(/#([a-z]*)#/gi); for (var i = 0; i < matches.length; i++) { var match = matches[i], key = match.substring(1, match.length - 1); if (substitutes[key] === undefined) { throwError("The key '{0}' does not exist in the substitute collection!", key); } template = template.replace(match, substitutes[key]); } return template; } /** * Transforms the title to a step item button. * * @static * @private * @method renderTitle * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard * @param header {Object} A jQuery header object * @param index {Integer} The position of the header */ function renderTitle(wizard, options, state, header, index) { var uniqueId = getUniqueId(wizard), uniqueStepId = uniqueId + _tabSuffix + index, uniqueBodyId = uniqueId + _tabpanelSuffix + index, uniqueHeaderId = uniqueId + _titleSuffix + index, stepCollection = wizard.find(".steps > ul"), title = renderTemplate(options.titleTemplate, { index: index + 1, title: header.html() }), stepItem = $("<li role=\"tab\"><a id=\"" + uniqueStepId + "\" href=\"#" + uniqueHeaderId + "\" aria-controls=\"" + uniqueBodyId + "\">" + title + "</a></li>"); stepItem._enableAria(options.enableAllSteps || state.currentIndex > index); if (state.currentIndex > index) { stepItem.addClass("done"); } header._id(uniqueHeaderId).attr("tabindex", "-1").addClass("title"); if (index === 0) { stepCollection.prepend(stepItem); } else { stepCollection.find("li").eq(index - 1).after(stepItem); } // Set the "first" class to the new first step button if (index === 0) { stepCollection.find("li").removeClass("first").eq(index).addClass("first"); } // Set the "last" class to the new last step button if (index === (state.stepCount - 1)) { stepCollection.find("li").removeClass("last").eq(index).addClass("last"); } // Register click event stepItem.children("a").bind("click" + getEventNamespace(wizard), stepClickHandler); } /** * Saves the current state to a cookie. * * @static * @private * @method saveCurrentStateToCookie * @param wizard {Object} A jQuery wizard object * @param options {Object} Settings of the current wizard * @param state {Object} The state container of the current wizard */ function saveCurrentStateToCookie(wizard, options, state) { if (options.saveState && $.cookie) { $.cookie(_cookiePrefix + getUniqueId(wizard), state.currentIndex); } } function startTransitionEffect(wizard, options, state, index, oldIndex, doneCallback) { var stepContents = wizard.find(".content > .body"), effect = getValidEnumValue(transitionEffect, options.transitionEffect), effectSpeed = options.transitionEffectSpeed, newStep = stepContents.eq(index), currentStep = stepContents.eq(oldIndex); switch (effect) { case transitionEffect.fade: case transitionEffect.slide: var hide = (effect === transitionEffect.fade) ? "fadeOut" : "slideUp", show = (effect === transitionEffect.fade) ? "fadeIn" : "slideDown"; state.transitionElement = newStep; currentStep[hide](effectSpeed, function () { var wizard = $(this)._showAria(false).parent().parent(), state = getState(wizard); if (state.transitionElement) { state.transitionElement[show](effectSpeed, function () { $(this)._showAria(); }).promise().done(doneCallback); state.transitionElement = null; } }); break; case transitionEffect.slideLeft: var outerWidth = currentStep.outerWidth(true), posFadeOut = (index > oldIndex) ? -(outerWidth) : outerWidth, posFadeIn = (index > oldIndex) ? outerWidth : -(outerWidth); $.when(currentStep.animate({ left: posFadeOut }, effectSpeed, function () { $(this)._showAria(false); }), newStep.css("left", posFadeIn + "px")._showAria() .animate({ left: 0 }, effectSpeed)).done(doneCallback); break; default: $.when(currentStep._showAria(false), newStep._showAria()) .done(doneCallback); break; } } /** * Fires when a step click happens. * * @static * @private * @event click * @param event {Object} An event object */ function stepClickHandler(event) { event.preventDefault(); var anchor = $(this), wizard = anchor.parent().parent().parent().parent(), options = getOptions(wizard), state = getState(wizard), oldIndex = state.currentIndex; if (anchor.parent().is(":not(.disabled):not(.current)")) { var href = anchor.attr("href"), position = parseInt(href.substring(href.lastIndexOf("-") + 1), 0); goToStep(wizard, options, state, position); } // If nothing has changed if (oldIndex === state.currentIndex) { getStepAnchor(wizard, oldIndex).focus(); return false; } } function throwError(message) { if (arguments.length > 1) { message = message.format(Array.prototype.slice.call(arguments, 1)); } throw new Error(message); } /** * Checks an argument for null or undefined and throws an error if one check applies. * * @static * @private * @method validateArgument * @param argumentName {String} The name of the given argument * @param argumentValue {Object} The argument itself */ function validateArgument(argumentName, argumentValue) { if (argumentValue == null) { throwError("The argument '{0}' is null or undefined.", argumentName); } } /** * Represents a jQuery wizard plugin. * * @class steps * @constructor * @param [method={}] The name of the method as `String` or an JSON object for initialization * @param [params=]* {Array} Additional arguments for a method call * @chainable **/ $.fn.steps = function (method) { if ($.fn.steps[method]) { return $.fn.steps[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === "object" || !method) { return initialize.apply(this, arguments); } else { $.error("Method " + method + " does not exist on jQuery.steps"); } }; /** * Adds a new step. * * @method add * @param step {Object} The step object to add * @chainable **/ $.fn.steps.add = function (step) { var state = getState(this); return insertStep(this, getOptions(this), state, state.stepCount, step); }; /** * Removes the control functionality completely and transforms the current state to the initial HTML structure. * * @method destroy * @chainable **/ $.fn.steps.destroy = function () { return destroy(this, getOptions(this)); }; /** * Triggers the onFinishing and onFinished event. * * @method finish **/ $.fn.steps.finish = function () { finishStep(this, getState(this)); }; /** * Gets the current step index. * * @method getCurrentIndex * @return {Integer} The actual step index (zero-based) * @for steps **/ $.fn.steps.getCurrentIndex = function () { return getState(this).currentIndex; }; /** * Gets the current step object. * * @method getCurrentStep * @return {Object} The actual step object **/ $.fn.steps.getCurrentStep = function () { return getStep(this, getState(this).currentIndex); }; /** * Gets a specific step object by index. * * @method getStep * @param index {Integer} An integer that belongs to the position of a step * @return {Object} A specific step object **/ $.fn.steps.getStep = function (index) { return getStep(this, index); }; /** * Inserts a new step to a specific position. * * @method insert * @param index {Integer} The position (zero-based) to add * @param step {Object} The step object to add * @example * $("#wizard").steps().insert(0, { * title: "Title", * content: "", // optional * contentMode: "async", // optional * contentUrl: "/Content/Step/1" // optional * }); * @chainable **/ $.fn.steps.insert = function (index, step) { return insertStep(this, getOptions(this), getState(this), index, step); }; /** * Routes to the next step. * * @method next * @return {Boolean} Indicates whether the action executed **/ $.fn.steps.next = function () { return goToNextStep(this, getOptions(this), getState(this)); }; /** * Routes to the previous step. * * @method previous * @return {Boolean} Indicates whether the action executed **/ $.fn.steps.previous = function () { return goToPreviousStep(this, getOptions(this), getState(this)); }; /** * Removes a specific step by an given index. * * @method remove * @param index {Integer} The position (zero-based) of the step to remove * @return Indecates whether the item is removed. **/ $.fn.steps.remove = function (index) { return removeStep(this, getOptions(this), getState(this), index); }; /** * Sets a specific step object by index. * * @method setStep * @param index {Integer} An integer that belongs to the position of a step * @param step {Object} The step object to change **/ $.fn.steps.setStep = function (index, step) { throw new Error("Not yet implemented!"); }; /** * Skips an certain amount of steps. * * @method skip * @param count {Integer} The amount of steps that should be skipped * @return {Boolean} Indicates whether the action executed **/ $.fn.steps.skip = function (count) { throw new Error("Not yet implemented!"); }; /** * An enum represents the different content types of a step and their loading mechanisms. * * @class contentMode * @for steps **/ var contentMode = $.fn.steps.contentMode = { /** * HTML embedded content * * @readOnly * @property html * @type Integer * @for contentMode **/ html: 0, /** * IFrame embedded content * * @readOnly * @property iframe * @type Integer * @for contentMode **/ iframe: 1, /** * Async embedded content * * @readOnly * @property async * @type Integer * @for contentMode **/ async: 2 }; /** * An enum represents the orientation of the steps navigation. * * @class stepsOrientation * @for steps **/ var stepsOrientation = $.fn.steps.stepsOrientation = { /** * Horizontal orientation * * @readOnly * @property horizontal * @type Integer * @for stepsOrientation **/ horizontal: 0, /** * Vertical orientation * * @readOnly * @property vertical * @type Integer * @for stepsOrientation **/ vertical: 1 }; /** * An enum that represents the various transition animations. * * @class transitionEffect * @for steps **/ var transitionEffect = $.fn.steps.transitionEffect = { /** * No transition animation * * @readOnly * @property none * @type Integer * @for transitionEffect **/ none: 0, /** * Fade in transition * * @readOnly * @property fade * @type Integer * @for transitionEffect **/ fade: 1, /** * Slide up transition * * @readOnly * @property slide * @type Integer * @for transitionEffect **/ slide: 2, /** * Slide left transition * * @readOnly * @property slideLeft * @type Integer * @for transitionEffect **/ slideLeft: 3 }; var stepModel = $.fn.steps.stepModel = { title: "", content: "", contentUrl: "", contentMode: contentMode.html, contentLoaded: false }; /** * An object that represents the default settings. * There are two possibities to override the sub-properties. * Either by doing it generally (global) or on initialization. * * @static * @class defaults * @for steps * @example * // Global approach * $.steps.defaults.headerTag = "h3"; * @example * // Initialization approach * $("#wizard").steps({ headerTag: "h3" }); **/ var defaults = $.fn.steps.defaults = { /** * The header tag is used to find the step button text within the declared wizard area. * * @property headerTag * @type String * @default "h1" * @for defaults **/ headerTag: "h1", /** * The body tag is used to find the step content within the declared wizard area. * * @property bodyTag * @type String * @default "div" * @for defaults **/ bodyTag: "div", /** * The content container tag which will be used to wrap all step contents. * * @property contentContainerTag * @type String * @default "div" * @for defaults **/ contentContainerTag: "div", /** * The action container tag which will be used to wrap the pagination navigation. * * @property actionContainerTag * @type String * @default "div" * @for defaults **/ actionContainerTag: "div", /** * The steps container tag which will be used to wrap the steps navigation. * * @property stepsContainerTag * @type String * @default "div" * @for defaults **/ stepsContainerTag: "div", /** * The css class which will be added to the outer component wrapper. * * @property cssClass * @type String * @default "wizard" * @for defaults * @example * <div class="wizard"> * ... * </div> **/ cssClass: "wizard", /** * The css class which will be used for floating scenarios. * * @property clearFixCssClass * @type String * @default "clearfix" * @for defaults **/ clearFixCssClass: "clearfix", /** * Determines whether the steps are vertically or horizontally oriented. * * @property stepsOrientation * @type stepsOrientation * @default horizontal * @for defaults * @since 1.0.0 **/ stepsOrientation: stepsOrientation.horizontal, /* * Tempplates */ /** * The title template which will be used to create a step button. * * @property titleTemplate * @type String * @default "<span class=\"number\">#index#.</span> #title#" * @for defaults **/ titleTemplate: "<span class=\"number\">#index#.</span> #title#", /** * The loading template which will be used to create the loading animation. * * @property loadingTemplate * @type String * @default "<span class=\"spinner\"></span> #text#" * @for defaults **/ loadingTemplate: "<span class=\"spinner\"></span> #text#", /* * Behaviour */ /** * Sets the focus to the first wizard instance in order to enable the key navigation from the begining if `true`. * * @property autoFocus * @type Boolean * @default false * @for defaults * @since 0.9.4 **/ autoFocus: false, /** * Enables all steps from the begining if `true` (all steps are clickable). * * @property enableAllSteps * @type Boolean * @default false * @for defaults **/ enableAllSteps: false, /** * Enables keyboard navigation if `true` (arrow left and arrow right). * * @property enableKeyNavigation * @type Boolean * @default true * @for defaults **/ enableKeyNavigation: true, /** * Enables pagination if `true`. * * @property enablePagination * @type Boolean * @default true * @for defaults **/ enablePagination: true, /** * Suppresses pagination if a form field is focused. * * @property suppressPaginationOnFocus * @type Boolean * @default true * @for defaults **/ suppressPaginationOnFocus: true, /** * Enables cache for async loaded or iframe embedded content. * * @property enableContentCache * @type Boolean * @default true * @for defaults **/ enableContentCache: true, /** * Shows the cancel button if enabled. * * @property enableCancelButton * @type Boolean * @default false * @for defaults **/ enableCancelButton: false, /** * Shows the finish button if enabled. * * @property enableFinishButton * @type Boolean * @default true * @for defaults **/ enableFinishButton: true, /** * Not yet implemented. * * @property preloadContent * @type Boolean * @default false * @for defaults **/ preloadContent: false, /** * Shows the finish button always (on each step; right beside the next button) if `true`. * Otherwise the next button will be replaced by the finish button if the last step becomes active. * * @property showFinishButtonAlways * @type Boolean * @default false * @for defaults **/ showFinishButtonAlways: false, /** * Prevents jumping to a previous step. * * @property forceMoveForward * @type Boolean * @default false * @for defaults **/ forceMoveForward: false, /** * Saves the current state (step position) to a cookie. * By coming next time the last active step becomes activated. * * @property saveState * @type Boolean * @default false * @for defaults **/ saveState: false, /** * The position to start on (zero-based). * * @property startIndex * @type Integer * @default 0 * @for defaults **/ startIndex: 0, /* * Animation Effect Configuration */ /** * The animation effect which will be used for step transitions. * * @property transitionEffect * @type transitionEffect * @default none * @for defaults **/ transitionEffect: transitionEffect.none, /** * Animation speed for step transitions (in milliseconds). * * @property transitionEffectSpeed * @type Integer * @default 200 * @for defaults **/ transitionEffectSpeed: 200, /* * Events */ /** * Fires before the step changes and can be used to prevent step changing by returning `false`. * Very useful for form validation. * * @property onStepChanging * @type Event * @default function (event, currentIndex, newIndex) { return true; } * @for defaults **/ onStepChanging: function (event, currentIndex, newIndex) { return true; }, /** * Fires after the step has change. * * @property onStepChanged * @type Event * @default function (event, currentIndex, priorIndex) { } * @for defaults **/ onStepChanged: function (event, currentIndex, priorIndex) { }, /** * Fires after cancelation. * * @property onCanceled * @type Event * @default function (event) { } * @for defaults **/ onCanceled: function (event) { }, /** * Fires before finishing and can be used to prevent completion by returning `false`. * Very useful for form validation. * * @property onFinishing * @type Event * @default function (event, currentIndex) { return true; } * @for defaults **/ onFinishing: function (event, currentIndex) { return true; }, /** * Fires after completion. * * @property onFinished * @type Event * @default function (event, currentIndex) { } * @for defaults **/ onFinished: function (event, currentIndex) { }, /** * Fires after async content is loaded. * * @property onContentLoaded * @type Event * @default function (event, index) { } * @for defaults **/ onContentLoaded: function (event, currentIndex) { }, /** * Fires when the wizard is initialized. * * @property onInit * @type Event * @default function (event) { } * @for defaults **/ onInit: function (event, currentIndex) { }, /** * Contains all labels. * * @property labels * @type Object * @for defaults **/ labels: { /** * Label for the cancel button. * * @property cancel * @type String * @default "Cancel" * @for defaults **/ cancel: "Cancel", /** * This label is important for accessability reasons. * Indicates which step is activated. * * @property current * @type String * @default "current step:" * @for defaults **/ current: "current step:", /** * This label is important for accessability reasons and describes the kind of navigation. * * @property pagination * @type String * @default "Pagination" * @for defaults * @since 0.9.7 **/ pagination: "Pagination", /** * Label for the finish button. * * @property finish * @type String * @default "Finish" * @for defaults **/ finish: "Finish", /** * Label for the next button. * * @property next * @type String * @default "Next" * @for defaults **/ next: "Next", /** * Label for the previous button. * * @property previous * @type String * @default "Previous" * @for defaults **/ previous: "Previous", /** * Label for the loading animation. * * @property loading * @type String * @default "Loading ..." * @for defaults **/ loading: "Loading ..." } }; })(jQuery); fullcalendar/fullcalendar.min.css 0000644 00000037414 15002261751 0013140 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */.fc button,.fc table,body .fc{font-size:1em}.fc .fc-axis,.fc button,.fc-day-grid-event .fc-content,.fc-list-item-marker,.fc-list-item-time,.fc-time-grid-event .fc-time,.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-event,.fc-event:hover,.fc-state-hover,.fc.fc-bootstrap3 a,.ui-widget .fc-event,a.fc-more{text-decoration:none}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}.fc th,.fc-basic-view .fc-day-top .fc-week-number,.fc-basic-view td.fc-week-number,.fc-icon,.fc-toolbar{text-align:center}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;box-shadow:none}.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close,a[data-goto]{cursor:pointer}.fc-button-group{display:inline-block}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc .fc-row .fc-content-skeleton table,.fc .fc-row .fc-content-skeleton td,.fc .fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-day-grid-event .fc-content,.fc-icon,.fc-row.fc-rigid,.fc-time-grid-event{overflow:hidden}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad}.fc-event,.fc-event-dot{background-color:#3a87ad}.fc-event,.fc-event:hover{color:#fff}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-bootstrap3 .fc-popover .panel-body,.fc-bootstrap4 .fc-popover .card-body{padding:0}.fc-now-indicator{position:absolute;border:0 solid red}.fc-bootstrap3 .fc-today.alert,.fc-bootstrap4 .fc-today.alert{border-radius:0}.fc-unselectable{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff;border-width:1px;border-style:solid}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-unthemed .fc-disabled-day{background:#d7d7d7;opacity:.3}.fc-icon{display:inline-block;height:1em;line-height:1em;font-size:1em;font-family:"Courier New",Courier,monospace;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\2039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\D7";font-size:200%;top:6%}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666;font-size:.9em;margin-top:2px}.fc-unthemed .fc-list-item:hover td{background-color:#f5f5f5}.ui-widget .fc-disabled-day{background-image:none}.fc-bootstrap3 .fc-time-grid .fc-slats table,.fc-bootstrap4 .fc-time-grid .fc-slats table,.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-bootstrap3 hr.fc-divider,.fc-bootstrap4 hr.fc-divider{border-color:inherit}.ui-widget .fc-event{color:#fff;font-weight:400}.ui-widget td.fc-axis{font-weight:400}.fc.fc-bootstrap3 a[data-goto]:hover{text-decoration:underline}.fc.fc-bootstrap4 a{text-decoration:none}.fc.fc-bootstrap4 a[data-goto]:hover{text-decoration:underline}.fc-bootstrap4 a.fc-event:not([href]):not([tabindex]){color:#fff}.fc-bootstrap4 .fc-popover.card{position:absolute}.fc-toolbar.fc-header-toolbar{margin-bottom:1em}.fc-toolbar.fc-footer-toolbar{margin-top:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:2px}.fc-basic-view th.fc-day-number,.fc-basic-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-basic-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-basic-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-basic-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px}.fc-rtl .fc-basic-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-basic-view .fc-day-top .fc-week-number{min-width:1.5em;background-color:#f2f2f2;color:grey}.fc-basic-view td.fc-week-number>*{display:inline-block;min-width:1.25em}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\A0-\A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item-marker,.fc-list-item-time{width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee} fullcalendar/locale-all.js 0000644 00000574343 15002261751 0011562 0 ustar 00 !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=438)}([function(a,t){a.exports=e},function(e,t){e.exports=a},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(72);var n=t(1);n.datepickerLocale("af","af",{closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("af",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenisse nie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(74);var n=t(1);n.datepickerLocale("ar-dz","ar-DZ",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-dz",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(76);var n=t(1);n.datepickerLocale("ar-kw","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-kw",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(78);var n=t(1);n.datepickerLocale("ar-ly","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ly",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(a,r,s,d){var i=t(a),o=n[e][t(a)];return 2===i&&(o=o[r?0:1]),o.replace(/%d/i,a)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(80);var n=t(1);n.datepickerLocale("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(82);var n=t(1);n.datepickerLocale("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(84);var n=t(1);n.datepickerLocale("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(86);var n=t(1);n.datepickerLocale("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(88);var n=t(1);n.datepickerLocale("be","be",{closeText:"Зачыніць",prevText:"<Папярэд",nextText:"След>",currentText:"Сёння",monthNames:["Студзень","Люты","Сакавік","Красавік","Трав","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],monthNamesShort:["Студ","Лют","Сак","Крас","Трав","Чэрв","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Ат","Ср","Чц","Пт","Сб"],weekHeader:"Ндз",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("be",{buttonText:{month:"Месяц",week:"Тыдзень",day:"Дзень",list:"Парадак дня"},allDayHtml:"Увесь<br />дзень",eventLimitText:function(e){return"+ яшчэ "+e},noEventsMessage:"Няма падзей для адлюстравання"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+a(r[n],+e)}return e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(90);var n=t(1);n.datepickerLocale("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(e){return"+още "+e},noEventsMessage:"Няма събития за показване"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(92);var n=t(1);n.datepickerLocale("bs","bs",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novmbar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bs",{buttonText:{prev:"Prošli",next:"Sljedeći",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikazivanje"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(94);var n=t(1);n.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(96);var n=t(1);n.datepickerLocale("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Žádné akce k zobrazení"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekund"):s+"sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?s+(a(e)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodin"):s+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?s+(a(e)?"dny":"dní"):s+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?s+(a(e)?"měsíce":"měsíců"):s+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?s+(a(e)?"roky":"let"):s+"lety"}}var n="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),r="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),s=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],d=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;return e.defineLocale("cs",{months:n,monthsShort:r,monthsRegex:d,monthsShortRegex:d,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"}, relativeTime:{future:"za %s",past:"před %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(98);var n=t(1);n.datepickerLocale("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(100);var n=t(1);n.datepickerLocale("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-at",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(102);var n=t(1);n.datepickerLocale("de-ch","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-ch",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(104);var n=t(1);n.datepickerLocale("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen",dayOfMonthFormat:"ddd DD.MM."})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(106);var n=t(1);n.datepickerLocale("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα",noEventsMessage:"Δεν υπάρχουν γεγονότα για να εμφανιστεί"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,a,t){return e>11?t?"μμ":"ΜΜ":t?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n=this._calendarEl[e],r=t&&t.hours();return a(n)&&(n=n.apply(t)),n.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(108);var n=t(1);n.datepickerLocale("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-au")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(110),t(1).locale("en-ca")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(112);var n=t(1);n.datepickerLocale("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-gb")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(114),t(1).locale("en-ie")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(116);var n=t(1);n.datepickerLocale("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-nz")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(118);var n=t(1);n.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(120);var n=t(1);n.datepickerLocale("es-us","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-us",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(122);var n=t(1);n.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha invalida"})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(124);var n=t(1);n.datepickerLocale("et","et",{closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("et",{buttonText:{month:"Kuu",week:"Nädal",day:"Päev",list:"Päevakord"},allDayText:"Kogu päev",eventLimitText:function(e){return"+ veel "+e},noEventsMessage:"Kuvamiseks puuduvad sündmused"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return a?r[t][2]?r[t][2]:r[t][1]:n?r[t][0]:r[t][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(126);var n=t(1);n.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss", L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(128);var n=t(1);n.datepickerLocale("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(e){return"بیش از "+e},noEventsMessage:"هیچ رویدادی به نمایش"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},t={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(130);var n=t(1);n.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei näytettäviä tapahtumia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,n,r){var s="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":s=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":s=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":s=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":s=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":s=r?"vuoden":"vuotta"}return s=t(e,r)+" "+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),r=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",n[7],n[8],n[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(132);var n=t(1);n.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(134);var n=t(1);n.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(136);var n=t(1);n.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(138);var n=t(1);n.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Axenda"},allDayHtml:"Todo<br/>o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(140);var n=t(1);n.datepickerLocale("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("he",{buttonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",eventLimitText:"אחר",noEventsMessage:"אין אירועים להצגה",weekNumberTitle:"שבוע"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?t?'לפנה"צ':"לפני הצהריים":e<18?t?'אחה"צ':"אחרי הצהריים":"בערב"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(142);var n=t(1);n.datepickerLocale("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(e){return"+अधिक "+e},noEventsMessage:"कोई घटनाओं को प्रदर्शित करने के लिए"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),"रात"===a?e<4?e:e+12:"सुबह"===a?e:"दोपहर"===a?e>=10?e:e+12:"शाम"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(144);var n=t(1);n.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hr",{buttonText:{prev:"Prijašnji",next:"Sljedeći",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(146);var n=t(1);n.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető esemény"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e;switch(t){case"s":return n||a?"néhány másodperc":"néhány másodperce";case"ss":return r+(n||a)?" másodperc":" másodperce";case"m":return"egy"+(n||a?" perc":" perce");case"mm":return r+(n||a?" perc":" perce");case"h":return"egy"+(n||a?" óra":" órája");case"hh":return r+(n||a?" óra":" órája");case"d":return"egy"+(n||a?" nap":" napja");case"dd":return r+(n||a?" nap":" napja");case"M":return"egy"+(n||a?" hónap":" hónapja");case"MM":return r+(n||a?" hónap":" hónapja");case"y":return"egy"+(n||a?" év":" éve");case"yy":return r+(n||a?" év":" éve")}return""}function t(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return t.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return t.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(148);var n=t(1);n.datepickerLocale("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(150);var n=t(1);n.datepickerLocale("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%100==11||e%10!=1}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return a(e)?s+(t||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return t?"mínúta":"mínútu";case"mm":return a(e)?s+(t||r?"mínútur":"mínútum"):t?s+"mínúta":s+"mínútu";case"hh":return a(e)?s+(t||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return t?"dagur":r?"dag":"degi";case"dd":return a(e)?t?s+"dagar":s+(r?"daga":"dögum"):t?s+"dagur":s+(r?"dag":"degi");case"M":return t?"mánuður":r?"mánuð":"mánuði";case"MM":return a(e)?t?s+"mánuðir":s+(r?"mánuði":"mánuðum"):t?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return t||r?"ár":"ári";case"yy":return a(e)?s+(t||r?"ár":"árum"):s+(t||r?"ár":"ári")}}return e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,ss:t,m:t,mm:t,h:"klukkustund",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(152);var n=t(1);n.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(154);var n=t(1);n.datepickerLocale("ja","ja",{closeText:"閉じる", prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"表示する予定はありません"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,a){return"元"===a[1]?1:parseInt(a[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,a,t){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,a){switch(a){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(156);var n=t(1);n.datepickerLocale("ka","ka",{closeText:"დახურვა",prevText:"წინა",nextText:"შემდეგი",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],weekHeader:"კვ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ka",{buttonText:{month:"თვე",week:"კვირა",day:"დღე",list:"დღის წესრიგი"},allDayText:"მთელი დღე",eventLimitText:function(e){return"+ კიდევ "+e},noEventsMessage:"ღონისძიებები არ არის"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,function(e,a,t){return"ი"===t?a+"ში":a+t+"ში"})},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(158);var n=t(1);n.datepickerLocale("kk","kk",{closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("kk",{buttonText:{month:"Ай",week:"Апта",day:"Күн",list:"Күн тәртібі"},allDayText:"Күні бойы",eventLimitText:function(e){return"+ тағы "+e},noEventsMessage:"Көрсету үшін оқиғалар жоқ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(160);var n=t(1);n.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),n.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 없습니다"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,a,t){return e<12?"오전":"오후"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(162);var n=t(1);n.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?r[t][0]:r[t][1]}function t(e){return r(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function n(e){return r(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:n,s:"e puer Sekonnen",ss:"%d Sekonnen",m:a,mm:"%d Minutten",h:a,hh:"%d Stonnen",d:a,dd:"%d Deeg",M:a,MM:"%d Méint",y:a,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(164);var n=t(1);n.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){return a?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10==0||e>10&&e<20}function r(e){return d[e].split("_")}function s(e,a,s,d){var i=e+" ";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,ss:s,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(166);var n=t(1);n.datepickerLocale("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function t(e,t,n){return e+" "+a(s[n],e,t)}function n(e,t,n){return a(s[n],e,t)}function r(e,a){return a?"dažas sekundes":"dažām sekundēm"}var s={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:r,ss:t,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(168);var n=t(1);n.datepickerLocale("mk","mk",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("mk",{buttonText:{month:"Месец",week:"Недела",day:"Ден",list:"График"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеќе "+e},noEventsMessage:"Нема настани за прикажување"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(170);var n=t(1);n.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(172);var n=t(1);n.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(174);var n=t(1);n.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(176);var n=t(1);n.datepickerLocale("nl-be","nl-BE",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl-be",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(178);var n=t(1);n.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(180);var n=t(1);n.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nn",{buttonText:{month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0, weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(182);var n=t(1);n.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+(a(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return r+(a(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return r+(a(e)?"godziny":"godzin");case"MM":return r+(a(e)?"miesiące":"miesięcy");case"yy":return r+(a(e)?"lata":"lat")}}var n="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return e.defineLocale("pl",{months:function(e,a){return e?""===a?"("+r[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(a)?r[e.month()]:n[e.month()]:n},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:t,m:t,mm:t,h:t,hh:t,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:t,y:"rok",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(184);var n=t(1);n.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(186);var n=t(1);n.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(188);var n=t(1);n.datepickerLocale("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+n[t]}return e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:a,m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(190);var n=t(1);n.datepickerLocale("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет событий для отображения"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?t?"минута":"минуту":e+" "+a(r[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(192);var n=t(1);n.datepickerLocale("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(e){return"+ďalšie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(a(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(a(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(a(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(a(e)?"roky":"rokov"):s+"rokmi"}}var n="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),r="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return e.defineLocale("sk",{months:n,monthsShort:r,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(194);var n=t(1);n.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e+" ";switch(t){case"s":return a||n?"nekaj sekund":"nekaj sekundami";case"ss":return r+=1===e?a?"sekundo":"sekundi":2===e?a||n?"sekundi":"sekundah":e<5?a||n?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return r+=1===e?a?"minuta":"minuto":2===e?a||n?"minuti":"minutama":e<5?a||n?"minute":"minutami":a||n?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return r+=1===e?a?"ura":"uro":2===e?a||n?"uri":"urama":e<5?a||n?"ure":"urami":a||n?"ur":"urami";case"d":return a||n?"en dan":"enim dnem";case"dd":return r+=1===e?a||n?"dan":"dnem":2===e?a||n?"dni":"dnevoma":a||n?"dni":"dnevi";case"M":return a||n?"en mesec":"enim mesecem";case"MM":return r+=1===e?a||n?"mesec":"mesecem":2===e?a||n?"meseca":"mesecema":e<5?a||n?"mesece":"meseci":a||n?"mesecev":"meseci";case"y":return a||n?"eno leto":"enim letom";case"yy":return r+=1===e?a||n?"leto":"letom":2===e?a||n?"leti":"letoma":e<5?a||n?"leta":"leti":a||n?"let":"leti"}}return e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(196);var n=t(1);n.datepickerLocale("sq","sq",{closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sq",{buttonText:{month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},allDayHtml:"Gjithë<br/>ditën",eventLimitText:function(e){return"+më tepër "+e},noEventsMessage:"Nuk ka evente për të shfaqur"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(198);var n=t(1);n.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr-cyrl",{buttonText:{prev:"Претходна",next:"следећи",month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(200);var n=t(1);n.datepickerLocale("sr","sr-SR",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr",{buttonText:{prev:"Prethodna",next:"Sledeći",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},allDayText:"Cеo dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nеma događaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(202);var n=t(1);n.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"v. ",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?":e":1===a?":a":2===a?":a":":e")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(204);var n=t(1);n.datepickerLocale("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม",noEventsMessage:"ไม่มีกิจกรรมที่จะแสดง"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,a,t){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(206);var n=t(1);n.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün", monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Gösterilecek etkinlik yok"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,r=e%100-n,s=e>=100?100:null;return e+(a[n]||a[r]||a[s])}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(208);var n=t(1);n.datepickerLocale("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"Немає подій для відображення"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+a(r[n],+e)}function n(e,a){var t,n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?(t=/(\[[ВвУу]\]) ?dddd/.test(a)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(a)?"genitive":"nominative",n[t][e.day()]):n.nominative}function r(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:r("[Сьогодні "),nextDay:r("[Завтра "),lastDay:r("[Вчора "),nextWeek:r("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return r("[Минулої] dddd [").call(this);case 1:case 2:case 4:return r("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(210);var n=t(1);n.datepickerLocale("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(e){return"+ thêm "+e},noEventsMessage:"Không có sự kiện để hiển thị"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(212);var n=t(1);n.datepickerLocale("zh-cn","zh-CN",{closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(e){return"另外 "+e+" 个"},noEventsMessage:"没有事件显示"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"下午"===a||"晚上"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(214);var n=t(1);n.datepickerLocale("zh-hk","zh-HK",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-hk",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1200?"上午":1200===n?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(216);var n=t(1);n.datepickerLocale("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){t(71),t(73),t(75),t(77),t(79),t(81),t(83),t(85),t(87),t(89),t(91),t(93),t(95),t(97),t(99),t(101),t(103),t(105),t(107),t(109),t(111),t(113),t(115),t(117),t(119),t(121),t(123),t(125),t(127),t(129),t(131),t(133),t(135),t(137),t(139),t(141),t(143),t(145),t(147),t(149),t(151),t(153),t(155),t(157),t(159),t(161),t(163),t(165),t(167),t(169),t(171),t(173),t(175),t(177),t(179),t(181),t(183),t(185),t(187),t(189),t(191),t(193),t(195),t(197),t(199),t(201),t(203),t(205),t(207),t(209),t(211),t(213),t(215),e.exports=t(439)},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0});var n=t(0),r=t(1);n.locale("en"),r.locale("en"),window.jQuery.datepicker&&window.jQuery.datepicker.setDefaults(window.jQuery.datepicker.regional[""])}])}); fullcalendar/fullcalendar.print.css 0000644 00000012713 15002261751 0013504 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */ /*! * FullCalendar v3.10.2 Print Stylesheet * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */ /* * Include this stylesheet on your page to get a more printer-friendly calendar. * When including this stylesheet, use the media='print' attribute of the <link> tag. * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. */ .fc { max-width: 100% !important; } /* Global Event Restyling --------------------------------------------------------------------------------------------------*/ .fc-event { background: #fff !important; color: #000 !important; page-break-inside: avoid; } .fc-event .fc-resizer { display: none; } /* Table & Day-Row Restyling --------------------------------------------------------------------------------------------------*/ .fc th, .fc td, .fc hr, .fc thead, .fc tbody, .fc-row { border-color: #ccc !important; background: #fff !important; } /* kill the overlaid, absolutely-positioned components */ /* common... */ .fc-bg, .fc-bgevent-skeleton, .fc-highlight-skeleton, .fc-helper-skeleton, .fc-bgevent-container, .fc-business-container, .fc-highlight-container, .fc-helper-container { display: none; } /* don't force a min-height on rows (for DayGrid) */ .fc tbody .fc-row { height: auto !important; /* undo height that JS set in distributeHeight */ min-height: 0 !important; /* undo the min-height from each view's specific stylesheet */ } .fc tbody .fc-row .fc-content-skeleton { position: static; /* undo .fc-rigid */ padding-bottom: 0 !important; /* use a more border-friendly method for this... */ } .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { /* only works in newer browsers */ padding-bottom: 1em; /* ...gives space within the skeleton. also ensures min height in a way */ } .fc tbody .fc-row .fc-content-skeleton table { /* provides a min-height for the row, but only effective for IE, which exaggerates this value, making it look more like 3em. for other browers, it will already be this tall */ height: 1em; } /* Undo month-view event limiting. Display all events and hide the "more" links --------------------------------------------------------------------------------------------------*/ .fc-more-cell, .fc-more { display: none !important; } .fc tr.fc-limited { display: table-row !important; } .fc td.fc-limited { display: table-cell !important; } .fc-popover { display: none; /* never display the "more.." popover in print mode */ } /* TimeGrid Restyling --------------------------------------------------------------------------------------------------*/ /* undo the min-height 100% trick used to fill the container's height */ .fc-time-grid { min-height: 0 !important; } /* don't display the side axis at all ("all-day" and time cells) */ .fc-agenda-view .fc-axis { display: none; } /* don't display the horizontal lines */ .fc-slats, .fc-time-grid hr { /* this hr is used when height is underused and needs to be filled */ display: none !important; /* important overrides inline declaration */ } /* let the container that holds the events be naturally positioned and create real height */ .fc-time-grid .fc-content-skeleton { position: static; } /* in case there are no events, we still want some height */ .fc-time-grid .fc-content-skeleton table { height: 4em; } /* kill the horizontal spacing made by the event container. event margins will be done below */ .fc-time-grid .fc-event-container { margin: 0 !important; } /* TimeGrid *Event* Restyling --------------------------------------------------------------------------------------------------*/ /* naturally position events, vertically stacking them */ .fc-time-grid .fc-event { position: static !important; margin: 3px 2px !important; } /* for events that continue to a future day, give the bottom border back */ .fc-time-grid .fc-event.fc-not-end { border-bottom-width: 1px !important; } /* indicate the event continues via "..." text */ .fc-time-grid .fc-event.fc-not-end:after { content: "..."; } /* for events that are continuations from previous days, give the top border back */ .fc-time-grid .fc-event.fc-not-start { border-top-width: 1px !important; } /* indicate the event is a continuation via "..." text */ .fc-time-grid .fc-event.fc-not-start:before { content: "..."; } /* time */ /* undo a previous declaration and let the time text span to a second line */ .fc-time-grid .fc-event .fc-time { white-space: normal !important; } /* hide the the time that is normally displayed... */ .fc-time-grid .fc-event .fc-time span { display: none; } /* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */ .fc-time-grid .fc-event .fc-time:after { content: attr(data-full); } /* Vertical Scroller & Containers --------------------------------------------------------------------------------------------------*/ /* kill the scrollbars and allow natural height */ .fc-scroller, .fc-day-grid-container, .fc-time-grid-container { /* */ overflow: visible !important; height: auto !important; } /* kill the horizontal border/padding used to compensate for scrollbars */ .fc-row { border: 0 !important; margin: 0 !important; } /* Button Controls --------------------------------------------------------------------------------------------------*/ .fc-button-group, .fc button { display: none; /* don't display any button-related controls */ } fullcalendar/fullcalendar.d.ts 0000644 00000306471 15002261751 0012440 0 ustar 00 declare module 'fullcalendar/src/util' { import * as moment from 'moment'; export function compensateScroll(rowEls: any, scrollbarWidths: any): void; export function uncompensateScroll(rowEls: any): void; export function disableCursor(): void; export function enableCursor(): void; export function distributeHeight(els: any, availableHeight: any, shouldRedistribute: any): void; export function undistributeHeight(els: any): void; export function matchCellWidths(els: any): number; export function subtractInnerElHeight(outerEl: any, innerEl: any): any; export function getScrollParent(el: any): any; export function getOuterRect(el: any, origin?: any): { left: number; right: any; top: number; bottom: any; }; export function getClientRect(el: any, origin?: any): { left: number; right: any; top: number; bottom: any; }; export function getContentRect(el: any, origin: any): { left: number; right: any; top: number; bottom: any; }; export function getScrollbarWidths(el: any): any; export function isPrimaryMouseButton(ev: any): boolean; export function getEvX(ev: any): any; export function getEvY(ev: any): any; export function getEvIsTouch(ev: any): boolean; export function preventSelection(el: any): void; export function allowSelection(el: any): void; export function preventDefault(ev: any): void; export function intersectRects(rect1: any, rect2: any): false | { left: number; right: number; top: number; bottom: number; }; export function constrainPoint(point: any, rect: any): { left: number; top: number; }; export function getRectCenter(rect: any): { left: number; top: number; }; export function diffPoints(point1: any, point2: any): { left: number; top: number; }; export function parseFieldSpecs(input: any): any[]; export function compareByFieldSpecs(obj1: any, obj2: any, fieldSpecs: any, obj1fallback?: any, obj2fallback?: any): any; export function compareByFieldSpec(obj1: any, obj2: any, fieldSpec: any, obj1fallback: any, obj2fallback: any): any; export function flexibleCompare(a: any, b: any): number; export const dayIDs: string[]; export const unitsDesc: string[]; export function diffDayTime(a: any, b: any): moment.Duration; export function diffDay(a: any, b: any): moment.Duration; export function diffByUnit(a: any, b: any, unit: any): moment.Duration; export function computeGreatestUnit(start: any, end?: any): any; export function computeDurationGreatestUnit(duration: any, durationInput: any): any; export function divideRangeByDuration(start: any, end: any, dur: any): number; export function divideDurationByDuration(dur1: any, dur2: any): number; export function multiplyDuration(dur: any, n: any): moment.Duration; export function durationHasTime(dur: any): boolean; export function isNativeDate(input: any): boolean; export function isTimeString(str: any): boolean; export function log(...args: any[]): any; export function warn(...args: any[]): any; export function mergeProps(propObjs: any, complexProps?: any): {}; export function copyOwnProps(src: any, dest: any): void; export function hasOwnProp(obj: any, name: any): any; export function applyAll(functions: any, thisObj: any, args: any): any; export function removeMatching(array: any, testFunc: any): number; export function removeExact(array: any, exactVal: any): number; export function isArraysEqual(a0: any, a1: any): boolean; export function firstDefined(...args: any[]): any; export function htmlEscape(s: any): string; export function stripHtmlEntities(text: any): any; export function cssToStr(cssProps: any): string; export function attrsToStr(attrs: any): string; export function capitaliseFirstLetter(str: any): any; export function compareNumbers(a: any, b: any): number; export function isInt(n: any): boolean; export function proxy(obj: any, methodName: any): () => any; export function debounce(func: any, wait: any, immediate?: boolean): () => any; } declare module 'fullcalendar/Mixin' { export class Default { static mixInto(destClass: any): void; static mixOver(destClass: any): void; } export default Default; } declare module 'fullcalendar/EmitterMixin' { import Mixin from 'fullcalendar/Mixin'; export interface EmitterInterface { on(types: any, handler: any): any; one(types: any, handler: any): any; off(types: any, handler: any): any; trigger(types: any, ...args: any[]): any; triggerWith(types: any, context: any, args: any): any; hasHandlers(type: any): any; } export class Default extends Mixin implements EmitterInterface { on(types: any, handler: any): this; one(types: any, handler: any): this; _prepareIntercept(handler: any): (ev: any, extra: any) => any; off(types: any, handler: any): this; trigger(types: any, ...args: any[]): this; triggerWith(types: any, context: any, args: any): this; hasHandlers(type: any): boolean; } export default Default; } declare module 'fullcalendar/TaskQueue' { import { EmitterInterface } from 'fullcalendar/EmitterMixin'; export class Default { on: EmitterInterface['on']; one: EmitterInterface['one']; off: EmitterInterface['off']; trigger: EmitterInterface['trigger']; triggerWith: EmitterInterface['triggerWith']; hasHandlers: EmitterInterface['hasHandlers']; q: any; isPaused: boolean; isRunning: boolean; queue(...args: any[]): void; pause(): void; resume(): void; getIsIdle(): boolean; tryStart(): void; canRunNext(): any; runRemaining(): void; runTask(task: any): any; } export default Default; } declare module 'fullcalendar/RenderQueue' { import TaskQueue from 'fullcalendar/TaskQueue'; export class Default extends TaskQueue { waitsByNamespace: any; waitNamespace: any; waitId: any; constructor(waitsByNamespace: any); queue(taskFunc: any, namespace: any, type: any): void; startWait(namespace: any, waitMs: any): void; delayWait(waitMs: any): void; spawnWait(waitMs: any): void; clearWait(): void; canRunNext(): boolean; runTask(task: any): void; compoundTask(newTask: any): boolean; } export default Default; } declare module 'fullcalendar/src/options' { export const globalDefaults: { titleRangeSeparator: string; monthYearFormat: string; defaultTimedEventDuration: string; defaultAllDayEventDuration: { days: number; }; forceEventDuration: boolean; nextDayThreshold: string; columnHeader: boolean; defaultView: string; aspectRatio: number; header: { left: string; center: string; right: string; }; weekends: boolean; weekNumbers: boolean; weekNumberTitle: string; weekNumberCalculation: string; scrollTime: string; minTime: string; maxTime: string; showNonCurrentDates: boolean; lazyFetching: boolean; startParam: string; endParam: string; timezoneParam: string; timezone: boolean; locale: any; isRTL: boolean; buttonText: { prev: string; next: string; prevYear: string; nextYear: string; year: string; today: string; month: string; week: string; day: string; }; allDayText: string; agendaEventMinHeight: number; theme: boolean; dragOpacity: number; dragRevertDuration: number; dragScroll: boolean; unselectAuto: boolean; dropAccept: string; eventOrder: string; eventLimit: boolean; eventLimitText: string; eventLimitClick: string; dayPopoverFormat: string; handleWindowResize: boolean; windowResizeDelay: number; longPressDelay: number; }; export const englishDefaults: { dayPopoverFormat: string; }; export const rtlDefaults: { header: { left: string; center: string; right: string; }; buttonIcons: { prev: string; next: string; prevYear: string; nextYear: string; }; themeButtonIcons: { prev: string; next: string; nextYear: string; prevYear: string; }; }; export function mergeOptions(optionObjs: any): {}; } declare module 'fullcalendar/Iterator' { export class Default { items: any; constructor(items: any); proxyCall(methodName: any, ...args: any[]): any[]; } export default Default; } declare module 'fullcalendar/ListenerMixin' { import Mixin from 'fullcalendar/Mixin'; export interface ListenerInterface { listenTo(other: any, arg: any, callback?: any): any; stopListeningTo(other: any, eventName?: any): any; } export class Default extends Mixin implements ListenerInterface { listenerId: any; listenTo(other: any, arg: any, callback?: any): void; stopListeningTo(other: any, eventName?: any): void; getListenerNamespace(): string; } export default Default; } declare module 'fullcalendar/GlobalEmitter' { import { EmitterInterface } from 'fullcalendar/EmitterMixin'; import { ListenerInterface } from 'fullcalendar/ListenerMixin'; export class Default { on: EmitterInterface['on']; one: EmitterInterface['one']; off: EmitterInterface['off']; trigger: EmitterInterface['trigger']; triggerWith: EmitterInterface['triggerWith']; hasHandlers: EmitterInterface['hasHandlers']; listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; isTouching: boolean; mouseIgnoreDepth: number; handleScrollProxy: (ev: Event) => void; handleTouchMoveProxy: (ev: Event) => void; static get(): any; static needed(): void; static unneeded(): void; bind(): void; unbind(): void; handleTouchStart(ev: any): void; handleTouchMove(ev: any): void; handleTouchCancel(ev: any): void; handleTouchEnd(ev: any): void; handleMouseDown(ev: any): void; handleMouseMove(ev: any): void; handleMouseUp(ev: any): void; handleClick(ev: any): void; handleSelectStart(ev: any): void; handleContextMenu(ev: any): void; handleScroll(ev: any): void; stopTouch(ev: any, skipMouseIgnore?: boolean): void; startTouchMouseIgnore(): void; shouldIgnoreMouse(): boolean; } export default Default; } declare module 'fullcalendar/Toolbar' { export class Default { calendar: any; toolbarOptions: any; el: any; viewsWithButtons: any; constructor(calendar: any, toolbarOptions: any); setToolbarOptions(newToolbarOptions: any): void; render(): void; removeElement(): void; renderSection(position: any): JQuery; updateTitle(text: any): void; activateButton(buttonName: any): void; deactivateButton(buttonName: any): void; disableButton(buttonName: any): void; enableButton(buttonName: any): void; getViewsWithButtons(): any; } export default Default; } declare module 'fullcalendar/src/locale' { import * as moment from 'moment'; export const localeOptionHash: {}; export function populateInstanceComputableOptions(options: any): void; export function datepickerLocale(localeCode: any, dpLocaleCode: any, dpOptions: any): void; export function locale(localeCode: any, newFcOptions: any): void; export function getMomentLocaleData(localeCode: any): moment.Locale; } declare module 'fullcalendar/Class' { export class Default { static extend(members: any): any; static mixin(members: any): void; } export default Default; } declare module 'fullcalendar/Model' { import Class from 'fullcalendar/Class'; import { EmitterInterface } from 'fullcalendar/EmitterMixin'; import { ListenerInterface } from 'fullcalendar/ListenerMixin'; export class Default extends Class { on: EmitterInterface['on']; one: EmitterInterface['one']; off: EmitterInterface['off']; trigger: EmitterInterface['trigger']; triggerWith: EmitterInterface['triggerWith']; hasHandlers: EmitterInterface['hasHandlers']; listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; _props: any; _watchers: any; _globalWatchArgs: any; constructor(); static watch(name: any, ...args: any[]): void; constructed(): void; applyGlobalWatchers(): void; has(name: any): boolean; get(name: any): any; set(name: any, val: any): void; reset(newProps: any): void; unset(name: any): void; setProps(newProps: any): void; watch(name: any, depList: any, startFunc: any, stopFunc?: any): void; unwatch(name: any): void; _watchDeps(depList: any, startFunc: any, stopFunc: any): { teardown: () => void; flash: () => void; }; flash(name: any): void; } export default Default; } declare module 'fullcalendar/OptionsManager' { import Model from 'fullcalendar/Model'; export class Default extends Model { _calendar: any; dirDefaults: any; localeDefaults: any; overrides: any; dynamicOverrides: any; constructor(_calendar: any, overrides: any); add(newOptionHash: any): void; compute(): void; recordOverrides(newOptionHash: any): void; } export default Default; } declare module 'fullcalendar/ViewRegistry' { export const viewHash: {}; export function defineView(viewName: any, viewConfig: any): void; export function getViewConfig(viewName: any): any; } declare module 'fullcalendar/ViewSpecManager' { export class Default { _calendar: any; optionsManager: any; viewSpecCache: any; constructor(optionsManager: any, _calendar: any); clearCache(): void; getViewSpec(viewType: any): any; getUnitViewSpec(unit: any): any; buildViewSpec(requestedViewType: any): any; buildViewSpecOptions(spec: any): void; buildViewSpecButtonText(spec: any, requestedViewType: any): void; } export default Default; } declare module 'fullcalendar/Theme' { export class Default { optionsManager: any; classes: any; iconClasses: any; baseIconClass: string; iconOverrideOption: any; iconOverrideCustomButtonOption: any; iconOverridePrefix: string; constructor(optionsManager: any); processIconOverride(): void; setIconOverride(iconOverrideHash: any): void; applyIconOverridePrefix(className: any): any; getClass(key: any): any; getIconClass(buttonName: any): string; getCustomButtonIconClass(customButtonProps: any): string; } export default Default; } declare module 'fullcalendar/src/moment-ext' { import * as moment from 'moment'; type MomentExtDuration = moment.Duration; module 'moment' { interface Moment { hasTime(): boolean; time(): MomentExtDuration; stripZone(): any; stripTime(): any; } } let newMomentProto: any; let oldMomentProto: any; function oldMomentFormat(mom: any, formatStr?: any): any; export { newMomentProto, oldMomentProto, oldMomentFormat }; const momentExt: any; export default momentExt; } declare module 'fullcalendar/UnzonedRange' { export class Default { startMs: number; endMs: number; isStart: boolean; isEnd: boolean; constructor(startInput?: any, endInput?: any); static invertRanges(ranges: any, constraintRange: any): any[]; intersect(otherRange: any): any; intersectsWith(otherRange: any): boolean; containsRange(innerRange: any): boolean; containsDate(date: any): boolean; constrainDate(date: any): any; equals(otherRange: any): boolean; clone(): Default; getStart(): any; getEnd(): any; as(unit: any): number; } export default Default; } declare module 'fullcalendar/ComponentFootprint' { export class Default { unzonedRange: any; isAllDay: boolean; constructor(unzonedRange: any, isAllDay: any); toLegacy(calendar: any): { start: any; end: any; }; } export default Default; } declare module 'fullcalendar/EventFootprint' { export class Default { componentFootprint: any; eventDef: any; eventInstance: any; constructor(componentFootprint: any, eventDef: any, eventInstance: any); getEventLegacy(): any; } export default Default; } declare module 'fullcalendar/ParsableModelMixin' { import Mixin from 'fullcalendar/Mixin'; export interface ParsableModelInterface { applyProps(rawProps: any): any; applyManualStandardProps(rawProps: any): any; applyMiscProps(rawProps: any): any; isStandardProp(propName: any): any; } export class Default extends Mixin implements ParsableModelInterface { standardPropMap: any; static defineStandardProps(propDefs: any): void; static copyVerbatimStandardProps(src: any, dest: any): void; applyProps(rawProps: any): boolean; applyManualStandardProps(rawProps: any): boolean; applyMiscProps(rawProps: any): void; isStandardProp(propName: any): boolean; } export default Default; } declare module 'fullcalendar/EventDef' { import { default as ParsableModelMixin, ParsableModelInterface } from 'fullcalendar/ParsableModelMixin'; export abstract class Default { static uuid: number; static defineStandardProps: typeof ParsableModelMixin.defineStandardProps; static copyVerbatimStandardProps: typeof ParsableModelMixin.copyVerbatimStandardProps; applyProps: ParsableModelInterface['applyProps']; isStandardProp: ParsableModelInterface['isStandardProp']; source: any; id: any; rawId: any; uid: any; title: any; url: any; rendering: any; constraint: any; overlap: any; editable: any; startEditable: any; durationEditable: any; color: any; backgroundColor: any; borderColor: any; textColor: any; className: any; miscProps: any; constructor(source: any); static parse(rawInput: any, source: any): any; static normalizeId(id: any): string; static generateId(): string; abstract isAllDay(): any; abstract buildInstances(unzonedRange: any): any; clone(): any; hasInverseRendering(): boolean; hasBgRendering(): boolean; getRendering(): any; getConstraint(): any; getOverlap(): any; isStartExplicitlyEditable(): any; isDurationExplicitlyEditable(): any; isExplicitlyEditable(): any; toLegacy(): any; applyManualStandardProps(rawProps: any): boolean; applyMiscProps(rawProps: any): void; } export default Default; } declare module 'fullcalendar/EventInstance' { export class Default { def: any; dateProfile: any; constructor(def: any, dateProfile: any); toLegacy(): any; } export default Default; } declare module 'fullcalendar/EventDateProfile' { import UnzonedRange from 'fullcalendar/UnzonedRange'; export class Default { start: any; end: any; unzonedRange: any; constructor(start: any, end: any, calendar: any); static parse(rawProps: any, source: any): false | Default; static isStandardProp(propName: any): boolean; isAllDay(): boolean; buildUnzonedRange(calendar: any): UnzonedRange; getEnd(calendar: any): any; } export default Default; } declare module 'fullcalendar/SingleEventDef' { import EventDef from 'fullcalendar/EventDef'; import EventInstance from 'fullcalendar/EventInstance'; export class Default extends EventDef { dateProfile: any; buildInstances(): EventInstance[]; buildInstance(): EventInstance; isAllDay(): any; clone(): any; rezone(): void; applyManualStandardProps(rawProps: any): boolean; } export default Default; } declare module 'fullcalendar/RecurringEventDef' { import EventDef from 'fullcalendar/EventDef'; export class Default extends EventDef { startTime: any; endTime: any; dowHash: any; isAllDay(): boolean; buildInstances(unzonedRange: any): any[]; setDow(dowNumbers: any): void; clone(): any; } export default Default; } declare module 'fullcalendar/EventDefParser' { const _default: { parse: (eventInput: any, source: any) => any; }; export default _default; } declare module 'fullcalendar/EventSource' { import { default as ParsableModelMixin, ParsableModelInterface } from 'fullcalendar/ParsableModelMixin'; import Class from 'fullcalendar/Class'; import Calendar from 'fullcalendar/Calendar'; export class Default extends Class { static uuid: number; static defineStandardProps: typeof ParsableModelMixin.defineStandardProps; static copyVerbatimStandardProps: typeof ParsableModelMixin.copyVerbatimStandardProps; applyProps: ParsableModelInterface['applyProps']; isStandardProp: ParsableModelInterface['isStandardProp']; calendar: Calendar; id: string; uid: string; color: string; backgroundColor: string; borderColor: string; textColor: string; className: string[]; editable: boolean; startEditable: boolean; durationEditable: boolean; rendering: string | null; overlap: boolean; constraint: any; allDayDefault: boolean; eventDataTransform: any; constructor(calendar: any); static parse(rawInput: any, calendar: any): false | Default; static normalizeId(id: any): string; fetch(start: any, end: any, timezone: any): void; removeEventDefsById(eventDefId: any): void; removeAllEventDefs(): void; getPrimitive(otherSource: any): void; parseEventDefs(rawEventDefs: any): any[]; parseEventDef(rawInput: any): any; applyManualStandardProps(rawProps: any): boolean; } export default Default; } declare module 'fullcalendar/EventRange' { export class Default { unzonedRange: any; eventDef: any; eventInstance: any; constructor(unzonedRange: any, eventDef: any, eventInstance?: any); } export default Default; } declare module 'fullcalendar/src/models/event/util' { import EventRange from 'fullcalendar/EventRange'; import EventFootprint from 'fullcalendar/EventFootprint'; export function eventDefsToEventInstances(eventDefs: any, unzonedRange: any): any[]; export function eventInstanceToEventRange(eventInstance: any): EventRange; export function eventRangeToEventFootprint(eventRange: any): EventFootprint; export function eventInstanceToUnzonedRange(eventInstance: any): any; export function eventFootprintToComponentFootprint(eventFootprint: any): any; } declare module 'fullcalendar/Constraints' { import ComponentFootprint from 'fullcalendar/ComponentFootprint'; import EventFootprint from 'fullcalendar/EventFootprint'; export class Default { eventManager: any; _calendar: any; constructor(eventManager: any, _calendar: any); opt(name: any): any; isEventInstanceGroupAllowed(eventInstanceGroup: any): boolean; getPeerEventInstances(eventDef: any): any; isSelectionFootprintAllowed(componentFootprint: any): boolean; isFootprintAllowed(componentFootprint: any, peerEventFootprints: any, constraintVal: any, overlapVal: any, subjectEventInstance?: any): boolean; isFootprintWithinConstraints(componentFootprint: any, constraintFootprints: any): boolean; constraintValToFootprints(constraintVal: any, isAllDay: any): any[]; buildCurrentBusinessFootprints(isAllDay: any): any[]; eventInstancesToFootprints(eventInstances: any): any[]; collectOverlapEventFootprints(peerEventFootprints: any, targetFootprint: any): any[]; parseEventDefToInstances(eventInput: any): any; eventRangesToEventFootprints(eventRanges: any): any[]; eventRangeToEventFootprints(eventRange: any): EventFootprint[]; parseFootprints(rawInput: any): ComponentFootprint[]; footprintContainsFootprint(outerFootprint: any, innerFootprint: any): any; footprintsIntersect(footprint0: any, footprint1: any): any; } export default Default; } declare module 'fullcalendar/Promise' { const PromiseStub: { construct: (executor: any) => JQueryPromise<{}>; resolve: (val: any) => JQueryPromise<{}>; reject: () => JQueryPromise<{}>; }; export default PromiseStub; } declare module 'fullcalendar/EventInstanceGroup' { export class Default { eventInstances: any; explicitEventDef: any; constructor(eventInstances?: any); getAllEventRanges(constraintRange: any): any; sliceRenderRanges(constraintRange: any): any; sliceNormalRenderRanges(constraintRange: any): any[]; sliceInverseRenderRanges(constraintRange: any): any; isInverse(): any; getEventDef(): any; } export default Default; } declare module 'fullcalendar/EventPeriod' { /// <reference types="jquery" /> import * as moment from 'moment'; import { EmitterInterface } from 'fullcalendar/EmitterMixin'; import UnzonedRange from 'fullcalendar/UnzonedRange'; export class Default { on: EmitterInterface['on']; one: EmitterInterface['one']; off: EmitterInterface['off']; trigger: EmitterInterface['trigger']; triggerWith: EmitterInterface['triggerWith']; hasHandlers: EmitterInterface['hasHandlers']; start: moment.Moment; end: moment.Moment; timezone: any; unzonedRange: UnzonedRange; requestsByUid: any; pendingCnt: number; freezeDepth: number; stuntedReleaseCnt: number; releaseCnt: number; eventDefsByUid: any; eventDefsById: any; eventInstanceGroupsById: any; constructor(start: any, end: any, timezone: any); isWithinRange(start: any, end: any): boolean; requestSources(sources: any): void; requestSource(source: any): void; purgeSource(source: any): void; purgeAllSources(): void; getEventDefByUid(eventDefUid: any): any; getEventDefsById(eventDefId: any): any; addEventDefs(eventDefs: any): void; addEventDef(eventDef: any): void; removeEventDefsById(eventDefId: any): void; removeAllEventDefs(): void; removeEventDef(eventDef: any): void; getEventInstances(): any[]; getEventInstancesWithId(eventDefId: any): any; getEventInstancesWithoutId(eventDefId: any): any[]; addEventInstance(eventInstance: any, eventDefId: any): void; removeEventInstancesForDef(eventDef: any): void; tryRelease(): void; release(): void; whenReleased(): JQueryPromise<{}>; freeze(): void; thaw(): void; } export default Default; } declare module 'fullcalendar/ArrayEventSource' { /// <reference types="jquery" /> import EventSource from 'fullcalendar/EventSource'; export class Default extends EventSource { rawEventDefs: any; eventDefs: any; currentTimezone: any; constructor(calendar: any); static parse(rawInput: any, calendar: any): any; setRawEventDefs(rawEventDefs: any): void; fetch(start: any, end: any, timezone: any): JQueryPromise<{}>; addEventDef(eventDef: any): void; removeEventDefsById(eventDefId: any): number; removeAllEventDefs(): void; getPrimitive(): any; applyManualStandardProps(rawProps: any): boolean; } export default Default; } declare module 'fullcalendar/EventSourceParser' { const _default: { sourceClasses: any[]; registerClass: (EventSourceClass: any) => void; parse: (rawInput: any, calendar: any) => any; }; export default _default; } declare module 'fullcalendar/EventManager' { import EventInstanceGroup from 'fullcalendar/EventInstanceGroup'; import { EmitterInterface } from 'fullcalendar/EmitterMixin'; import { ListenerInterface } from 'fullcalendar/ListenerMixin'; export class Default { on: EmitterInterface['on']; one: EmitterInterface['one']; off: EmitterInterface['off']; trigger: EmitterInterface['trigger']; triggerWith: EmitterInterface['triggerWith']; hasHandlers: EmitterInterface['hasHandlers']; listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; currentPeriod: any; calendar: any; stickySource: any; otherSources: any; constructor(calendar: any); requestEvents(start: any, end: any, timezone: any, force: any): any; addSource(eventSource: any): void; removeSource(doomedSource: any): void; removeAllSources(): void; refetchSource(eventSource: any): void; refetchAllSources(): void; getSources(): any[]; multiQuerySources(matchInputs: any): any[]; querySources(matchInput: any): any[]; getSourceById(id: any): any; setPeriod(eventPeriod: any): void; bindPeriod(eventPeriod: any): void; unbindPeriod(eventPeriod: any): void; getEventDefByUid(uid: any): any; addEventDef(eventDef: any, isSticky: any): void; removeEventDefsById(eventId: any): void; removeAllEventDefs(): void; mutateEventsWithId(eventDefId: any, eventDefMutation: any): () => void; buildMutatedEventInstanceGroup(eventDefId: any, eventDefMutation: any): EventInstanceGroup; freeze(): void; thaw(): void; getEventDefsById(eventDefId: any): any; getEventInstances(): any; getEventInstancesWithId(eventDefId: any): any; getEventInstancesWithoutId(eventDefId: any): any; } export default Default; } declare module 'fullcalendar/BusinessHourGenerator' { export class Default { rawComplexDef: any; calendar: any; constructor(rawComplexDef: any, calendar: any); buildEventInstanceGroup(isAllDay: any, unzonedRange: any): any; buildEventDefs(isAllDay: any): any[]; buildEventDef(isAllDay: any, rawDef: any): any; } export default Default; } declare module 'fullcalendar/EventDefDateMutation' { import EventDateProfile from 'fullcalendar/EventDateProfile'; export class Default { clearEnd: boolean; forceTimed: boolean; forceAllDay: boolean; dateDelta: any; startDelta: any; endDelta: any; static createFromDiff(dateProfile0: any, dateProfile1: any, largeUnit: any): any; buildNewDateProfile(eventDateProfile: any, calendar: any): EventDateProfile; setDateDelta(dateDelta: any): void; setStartDelta(startDelta: any): void; setEndDelta(endDelta: any): void; isEmpty(): boolean; } export default Default; } declare module 'fullcalendar/EventDefMutation' { export class Default { dateMutation: any; eventDefId: any; className: any; verbatimStandardProps: any; miscProps: any; static createFromRawProps(eventInstance: any, rawProps: any, largeUnit: any): any; mutateSingle(eventDef: any): () => void; setDateMutation(dateMutation: any): void; isEmpty(): boolean; } export default Default; } declare module 'fullcalendar/StandardTheme' { import Theme from 'fullcalendar/Theme'; export class Default extends Theme { } export default Default; } declare module 'fullcalendar/JqueryUiTheme' { import Theme from 'fullcalendar/Theme'; export class Default extends Theme { } export default Default; } declare module 'fullcalendar/ThemeRegistry' { export function defineThemeSystem(themeName: any, themeClass: any): void; export function getThemeSystemClass(themeSetting: any): any; } declare module 'fullcalendar/Calendar' { /// <reference types="jquery" /> import * as moment from 'moment'; import Iterator from 'fullcalendar/Iterator'; import { EmitterInterface } from 'fullcalendar/EmitterMixin'; import { ListenerInterface } from 'fullcalendar/ListenerMixin'; import Toolbar from 'fullcalendar/Toolbar'; import OptionsManager from 'fullcalendar/OptionsManager'; import ViewSpecManager from 'fullcalendar/ViewSpecManager'; import View from 'fullcalendar/View'; import Theme from 'fullcalendar/Theme'; import Constraints from 'fullcalendar/Constraints'; import UnzonedRange from 'fullcalendar/UnzonedRange'; import ComponentFootprint from 'fullcalendar/ComponentFootprint'; import EventDateProfile from 'fullcalendar/EventDateProfile'; import EventManager from 'fullcalendar/EventManager'; import BusinessHourGenerator from 'fullcalendar/BusinessHourGenerator'; import EventSource from 'fullcalendar/EventSource'; import { RangeInput, MomentInput, OptionsInput, EventObjectInput, EventSourceInput } from 'fullcalendar/src/types/input-types'; export class Default { static defaults: any; static englishDefaults: any; static rtlDefaults: any; on: EmitterInterface['on']; one: EmitterInterface['one']; off: EmitterInterface['off']; trigger: EmitterInterface['trigger']; triggerWith: EmitterInterface['triggerWith']; hasHandlers: EmitterInterface['hasHandlers']; listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; view: View; viewsByType: { [viewName: string]: View; }; currentDate: moment.Moment; theme: Theme; eventManager: EventManager; constraints: Constraints; optionsManager: OptionsManager; viewSpecManager: ViewSpecManager; businessHourGenerator: BusinessHourGenerator; loadingLevel: number; defaultAllDayEventDuration: moment.Duration; defaultTimedEventDuration: moment.Duration; localeData: object; el: JQuery; contentEl: JQuery; suggestedViewHeight: number; ignoreUpdateViewSize: number; freezeContentHeightDepth: number; windowResizeProxy: any; header: Toolbar; footer: Toolbar; toolbarsManager: Iterator; constructor(el: JQuery, overrides: OptionsInput); constructed(): void; getView(): View; publiclyTrigger(name: string, triggerInfo: any): any; hasPublicHandlers(name: string): boolean; option(name: string | object, value?: any): any; opt(name: string): any; instantiateView(viewType: string): View; isValidViewType(viewType: string): boolean; changeView(viewName: string, dateOrRange: RangeInput | MomentInput): void; zoomTo(newDate: moment.Moment, viewType?: string): void; initCurrentDate(): void; prev(): void; next(): void; prevYear(): void; nextYear(): void; today(): void; gotoDate(zonedDateInput: any): void; incrementDate(delta: any): void; getDate(): moment.Moment; pushLoading(): void; popLoading(): void; render(): void; initialRender(): void; destroy(): void; elementVisible(): boolean; bindViewHandlers(view: any): void; unbindViewHandlers(view: any): void; renderView(viewType?: string): void; clearView(): void; reinitView(): void; getSuggestedViewHeight(): number; isHeightAuto(): boolean; updateViewSize(isResize?: boolean): boolean; calcSize(): void; _calcSize(): void; windowResize(ev: JQueryEventObject): void; freezeContentHeight(): void; forceFreezeContentHeight(): void; thawContentHeight(): void; initToolbars(): void; computeHeaderOptions(): { extraClasses: string; layout: any; }; computeFooterOptions(): { extraClasses: string; layout: any; }; renderHeader(): void; renderFooter(): void; setToolbarsTitle(title: string): void; updateToolbarButtons(dateProfile: any): void; queryToolbarsHeight(): any; select(zonedStartInput: MomentInput, zonedEndInput?: MomentInput): void; unselect(): void; buildSelectFootprint(zonedStartInput: MomentInput, zonedEndInput?: MomentInput): ComponentFootprint; initMomentInternals(): void; moment(...args: any[]): moment.Moment; msToMoment(ms: number, forceAllDay: boolean): moment.Moment; msToUtcMoment(ms: number, forceAllDay: boolean): moment.Moment; localizeMoment(mom: any): void; getIsAmbigTimezone(): boolean; applyTimezone(date: moment.Moment): moment.Moment; footprintToDateProfile(componentFootprint: any, ignoreEnd?: boolean): EventDateProfile; getNow(): moment.Moment; humanizeDuration(duration: moment.Duration): string; parseUnzonedRange(rangeInput: RangeInput): UnzonedRange; initEventManager(): void; requestEvents(start: moment.Moment, end: moment.Moment): any; getEventEnd(event: any): moment.Moment; getDefaultEventEnd(allDay: boolean, zonedStart: moment.Moment): moment.Moment; rerenderEvents(): void; refetchEvents(): void; renderEvents(eventInputs: EventObjectInput[], isSticky?: boolean): void; renderEvent(eventInput: EventObjectInput, isSticky?: boolean): void; removeEvents(legacyQuery: any): void; clientEvents(legacyQuery: any): any; updateEvents(eventPropsArray: EventObjectInput[]): void; updateEvent(eventProps: EventObjectInput): void; getEventSources(): EventSource; getEventSourceById(id: any): EventSource; addEventSource(sourceInput: EventSourceInput): void; removeEventSources(sourceMultiQuery: any): void; removeEventSource(sourceQuery: any): void; refetchEventSources(sourceMultiQuery: any): void; } export default Default; } declare module 'fullcalendar/DateProfileGenerator' { import * as moment from 'moment'; import UnzonedRange from 'fullcalendar/UnzonedRange'; export class Default { _view: any; constructor(_view: any); opt(name: any): any; trimHiddenDays(unzonedRange: any): any; msToUtcMoment(ms: any, forceAllDay: any): any; buildPrev(currentDateProfile: any): { validUnzonedRange: any; currentUnzonedRange: any; currentRangeUnit: any; isRangeAllDay: any; activeUnzonedRange: any; renderUnzonedRange: any; minTime: any; maxTime: any; isValid: any; date: any; dateIncrement: any; }; buildNext(currentDateProfile: any): { validUnzonedRange: any; currentUnzonedRange: any; currentRangeUnit: any; isRangeAllDay: any; activeUnzonedRange: any; renderUnzonedRange: any; minTime: any; maxTime: any; isValid: any; date: any; dateIncrement: any; }; build(date: any, direction: any, forceToValid?: boolean): { validUnzonedRange: any; currentUnzonedRange: any; currentRangeUnit: any; isRangeAllDay: any; activeUnzonedRange: any; renderUnzonedRange: any; minTime: any; maxTime: any; isValid: any; date: any; dateIncrement: any; }; buildValidRange(): any; buildCurrentRangeInfo(date: any, direction: any): { duration: any; unit: any; unzonedRange: any; }; getFallbackDuration(): moment.Duration; adjustActiveRange(unzonedRange: any, minTime: any, maxTime: any): UnzonedRange; buildRangeFromDuration(date: any, direction: any, duration: any, unit: any): any; buildRangeFromDayCount(date: any, direction: any, dayCount: any): UnzonedRange; buildCustomVisibleRange(date: any): any; buildRenderRange(currentUnzonedRange: any, currentRangeUnit: any, isRangeAllDay: any): any; buildDateIncrement(fallback: any): any; } export default Default; } declare module 'fullcalendar/src/date-formatting' { export function formatDate(date: any, formatStr: any): any; export function formatRange(date1: any, date2: any, formatStr: any, separator: any, isRTL: any): any; export function queryMostGranularFormatUnit(formatStr: any): any; } declare module 'fullcalendar/Component' { import Model from 'fullcalendar/Model'; export class Default extends Model { el: any; setElement(el: any): void; removeElement(): void; bindGlobalHandlers(): void; unbindGlobalHandlers(): void; renderSkeleton(): void; unrenderSkeleton(): void; } export default Default; } declare module 'fullcalendar/DateComponent' { import Component from 'fullcalendar/Component'; import EventFootprint from 'fullcalendar/EventFootprint'; export abstract class Default extends Component { static guid: number; eventRendererClass: any; helperRendererClass: any; businessHourRendererClass: any; fillRendererClass: any; uid: any; childrenByUid: any; isRTL: boolean; nextDayThreshold: any; dateProfile: any; eventRenderer: any; helperRenderer: any; businessHourRenderer: any; fillRenderer: any; hitsNeededDepth: number; hasAllDayBusinessHours: boolean; isDatesRendered: boolean; constructor(_view?: any, _options?: any); addChild(child: any): boolean; removeChild(child: any): boolean; updateSize(totalHeight: any, isAuto: any, isResize: any): void; opt(name: any): any; publiclyTrigger(...args: any[]): any; hasPublicHandlers(...args: any[]): any; executeDateRender(dateProfile: any): void; executeDateUnrender(): void; renderDates(dateProfile: any): void; unrenderDates(): void; getNowIndicatorUnit(): void; renderNowIndicator(date: any): void; unrenderNowIndicator(): void; renderBusinessHours(businessHourGenerator: any): void; unrenderBusinessHours(): void; executeEventRender(eventsPayload: any): void; executeEventUnrender(): void; getBusinessHourSegs(): any; getOwnBusinessHourSegs(): any; getEventSegs(): any; getOwnEventSegs(): any; triggerAfterEventsRendered(): void; triggerAfterEventSegsRendered(segs: any): void; triggerBeforeEventsDestroyed(): void; triggerBeforeEventSegsDestroyed(segs: any): void; showEventsWithId(eventDefId: any): void; hideEventsWithId(eventDefId: any): void; renderDrag(eventFootprints: any, seg: any, isTouch: any): boolean; unrenderDrag(): void; renderEventResize(eventFootprints: any, seg: any, isTouch: any): void; unrenderEventResize(): void; renderSelectionFootprint(componentFootprint: any): void; unrenderSelection(): void; renderHighlight(componentFootprint: any): void; unrenderHighlight(): void; hitsNeeded(): void; hitsNotNeeded(): void; prepareHits(): void; releaseHits(): void; queryHit(leftOffset: any, topOffset: any): any; getSafeHitFootprint(hit: any): any; getHitFootprint(hit: any): any; getHitEl(hit: any): any; eventRangesToEventFootprints(eventRanges: any): any[]; eventRangeToEventFootprints(eventRange: any): EventFootprint[]; eventFootprintsToSegs(eventFootprints: any): any[]; eventFootprintToSegs(eventFootprint: any): any; componentFootprintToSegs(componentFootprint: any): any[]; callChildren(methodName: any, args: any): void; iterChildren(func: any): void; _getCalendar(): any; _getView(): any; _getDateProfile(): any; buildGotoAnchorHtml(gotoOptions: any, attrs: any, innerHtml: any): string; getAllDayHtml(): any; getDayClasses(date: any, noThemeHighlight?: any): any[]; formatRange(range: any, isAllDay: any, formatStr: any, separator: any): any; currentRangeAs(unit: any): any; computeDayRange(unzonedRange: any): { start: any; end: any; }; isMultiDayRange(unzonedRange: any): boolean; } export default Default; } declare module 'fullcalendar/InteractiveDateComponent' { import * as moment from 'moment'; import DateComponent from 'fullcalendar/DateComponent'; export abstract class Default extends DateComponent { dateClickingClass: any; dateSelectingClass: any; eventPointingClass: any; eventDraggingClass: any; eventResizingClass: any; externalDroppingClass: any; dateClicking: any; dateSelecting: any; eventPointing: any; eventDragging: any; eventResizing: any; externalDropping: any; segSelector: string; largeUnit: any; constructor(_view?: any, _options?: any); setElement(el: any): void; removeElement(): void; executeEventUnrender(): void; bindGlobalHandlers(): void; unbindGlobalHandlers(): void; bindDateHandlerToEl(el: any, name: any, handler: any): void; bindAllSegHandlersToEl(el: any): void; bindSegHandlerToEl(el: any, name: any, handler: any): void; shouldIgnoreMouse(): any; shouldIgnoreTouch(): any; shouldIgnoreEventPointing(): any; canStartSelection(seg: any, ev: any): any; canStartDrag(seg: any, ev: any): any; canStartResize(seg: any, ev: any): boolean; endInteractions(): void; isEventDefDraggable(eventDef: any): any; isEventDefStartEditable(eventDef: any): any; isEventDefGenerallyEditable(eventDef: any): any; isEventDefResizableFromStart(eventDef: any): any; isEventDefResizableFromEnd(eventDef: any): any; isEventDefResizable(eventDef: any): any; diffDates(a: any, b: any): moment.Duration; isEventInstanceGroupAllowed(eventInstanceGroup: any): any; isExternalInstanceGroupAllowed(eventInstanceGroup: any): boolean; } export default Default; } declare module 'fullcalendar/View' { import * as moment from 'moment'; import RenderQueue from 'fullcalendar/RenderQueue'; import Calendar from 'fullcalendar/Calendar'; import InteractiveDateComponent from 'fullcalendar/InteractiveDateComponent'; import UnzonedRange from 'fullcalendar/UnzonedRange'; import EventInstance from 'fullcalendar/EventInstance'; export abstract class Default extends InteractiveDateComponent { type: string; name: string; title: string; calendar: Calendar; viewSpec: any; options: any; renderQueue: RenderQueue; batchRenderDepth: number; queuedScroll: object; isSelected: boolean; selectedEventInstance: EventInstance; eventOrderSpecs: any; isHiddenDayHash: boolean[]; isNowIndicatorRendered: boolean; initialNowDate: moment.Moment; initialNowQueriedMs: number; nowIndicatorTimeoutID: any; nowIndicatorIntervalID: any; dateProfileGeneratorClass: any; dateProfileGenerator: any; usesMinMaxTime: boolean; start: moment.Moment; end: moment.Moment; intervalStart: moment.Moment; intervalEnd: moment.Moment; constructor(calendar: any, viewSpec: any); _getView(): this; opt(name: any): any; initRenderQueue(): void; onRenderQueueStart(): void; onRenderQueueStop(): void; startBatchRender(): void; stopBatchRender(): void; requestRender(func: any, namespace: any, actionType: any): void; whenSizeUpdated(func: any): void; computeTitle(dateProfile: any): any; computeTitleFormat(dateProfile: any): any; setDate(date: any): void; unsetDate(): void; fetchInitialEvents(dateProfile: any): any; bindEventChanges(): void; unbindEventChanges(): void; setEvents(eventsPayload: any): void; unsetEvents(): void; resetEvents(eventsPayload: any): void; requestDateRender(dateProfile: any): void; requestDateUnrender(): void; executeDateRender(dateProfile: any): void; executeDateUnrender(): void; bindBaseRenderHandlers(): void; triggerViewRender(): void; triggerViewDestroy(): void; requestEventsRender(eventsPayload: any): void; requestEventsUnrender(): void; requestBusinessHoursRender(businessHourGenerator: any): void; requestBusinessHoursUnrender(): void; bindGlobalHandlers(): void; unbindGlobalHandlers(): void; startNowIndicator(): void; updateNowIndicator(): void; stopNowIndicator(): void; updateSize(totalHeight: any, isAuto: any, isResize: any): void; addScroll(scroll: any): void; popScroll(): void; applyQueuedScroll(): void; queryScroll(): {}; applyScroll(scroll: any): void; computeInitialDateScroll(): {}; queryDateScroll(): {}; applyDateScroll(scroll: any): void; reportEventDrop(eventInstance: any, eventMutation: any, el: any, ev: any): void; triggerEventDrop(eventInstance: any, dateDelta: any, undoFunc: any, el: any, ev: any): void; reportExternalDrop(singleEventDef: any, isEvent: any, isSticky: any, el: any, ev: any, ui: any): void; triggerExternalDrop(singleEventDef: any, isEvent: any, el: any, ev: any, ui: any): void; reportEventResize(eventInstance: any, eventMutation: any, el: any, ev: any): void; triggerEventResize(eventInstance: any, resizeDelta: any, undoFunc: any, el: any, ev: any): void; select(footprint: any, ev?: any): void; renderSelectionFootprint(footprint: any): void; reportSelection(footprint: any, ev?: any): void; triggerSelect(footprint: any, ev?: any): void; unselect(ev?: any): void; selectEventInstance(eventInstance: any): void; unselectEventInstance(): void; isEventDefSelected(eventDef: any): boolean; handleDocumentMousedown(ev: any): void; processUnselect(ev: any): void; processRangeUnselect(ev: any): void; processEventUnselect(ev: any): void; triggerBaseRendered(): void; triggerBaseUnrendered(): void; triggerDayClick(footprint: any, dayEl: any, ev: any): void; isDateInOtherMonth(date: any, dateProfile: any): boolean; getUnzonedRangeOption(name: any): UnzonedRange; initHiddenDays(): void; trimHiddenDays(inputUnzonedRange: any): UnzonedRange; isHiddenDay(day: any): boolean; skipHiddenDays(date: any, inc?: number, isExclusive?: boolean): any; } export default Default; } declare module 'fullcalendar/src/types/input-types' { /// <reference types="jquery" /> import * as moment from 'moment'; import View from 'fullcalendar/View'; import EventSource from 'fullcalendar/EventSource'; export type MomentInput = moment.Moment | Date | object | string | number; export type DurationInput = moment.Duration | object | string | number; export interface RangeInput { start?: MomentInput; end?: MomentInput; } export type ConstraintInput = RangeInput | BusinessHoursInput | 'businessHours'; export interface EventOptionsBase { className?: string | string[]; editable?: boolean; startEditable?: boolean; durationEditable?: boolean; rendering?: string; overlap?: boolean; constraint?: ConstraintInput; color?: string; backgroundColor?: string; borderColor?: string; textColor?: string; } export interface EventObjectInput extends EventOptionsBase, RangeInput { _id?: string; id?: string | number; title: string; allDay?: boolean; url?: string; source?: EventSource; [customField: string]: any; } export type EventSourceFunction = (start: moment.Moment, end: moment.Moment, timezone: string, callback: ((events: EventObjectInput[]) => void)) => void; export type EventSourceSimpleInput = EventObjectInput[] | EventSourceFunction | string; export interface EventSourceExtendedInput extends EventOptionsBase, JQueryAjaxSettings { url?: string; events?: EventSourceSimpleInput; allDayDefault?: boolean; startParam?: string; endParam?: string; eventDataTransform?(eventData: any): EventObjectInput; } export type EventSourceInput = EventSourceSimpleInput | EventSourceExtendedInput; export interface ToolbarInput { left?: string; center?: string; right?: string; } export interface CustomButtonInput { text: string; icon?: string; themeIcon?: string; bootstrapGlyphicon?: string; bootstrapFontAwesome?: string; click(element: JQuery): void; } export interface ButtonIconsInput { prev?: string; next?: string; prevYear?: string; nextYear?: string; } export interface ButtonTextCompoundInput { prev?: string; next?: string; prevYear?: string; nextYear?: string; today?: string; month?: string; week?: string; day?: string; [viewId: string]: string | undefined; } export interface BusinessHoursInput { start?: MomentInput; end?: MomentInput; dow?: number[]; } export interface EventSegment { event: EventObjectInput; start: moment.Moment; end: moment.Moment; isStart: boolean; isEnd: boolean; } export interface CellInfo { date: moment.Moment; dayEl: JQuery; moreEl: JQuery; segs: EventSegment[]; hiddenSegs: EventSegment[]; } export interface DropInfo { start: moment.Moment; end: moment.Moment; } export interface SelectInfo { start: moment.Moment; end: moment.Moment; resourceId?: string; } export interface OptionsInputBase { header?: boolean | ToolbarInput; footer?: boolean | ToolbarInput; customButtons?: { [name: string]: CustomButtonInput; }; buttonIcons?: boolean | ButtonIconsInput; themeSystem?: 'standard' | 'bootstrap3' | 'bootstrap4' | 'jquery-ui'; themeButtonIcons?: boolean | ButtonIconsInput; bootstrapGlyphicons?: boolean | ButtonIconsInput; bootstrapFontAwesome?: boolean | ButtonIconsInput; firstDay?: number; isRTL?: boolean; weekends?: boolean; hiddenDays?: number[]; fixedWeekCount?: boolean; weekNumbers?: boolean; weekNumbersWithinDays?: boolean; weekNumberCalculation?: 'local' | 'ISO' | ((m: moment.Moment) => number); businessHours?: boolean | BusinessHoursInput | BusinessHoursInput[]; showNonCurrentDates?: boolean; height?: number | 'auto' | 'parent' | (() => number); contentHeight?: number | 'auto' | (() => number); aspectRatio?: number; handleWindowResize?: boolean; windowResizeDelay?: number; eventLimit?: boolean | number; eventLimitClick?: 'popover' | 'week' | 'day' | string | ((cellinfo: CellInfo, jsevent: Event) => void); timezone?: string | boolean; now?: MomentInput | (() => MomentInput); defaultView?: string; allDaySlot?: boolean; allDayText?: string; slotDuration?: DurationInput; slotLabelFormat?: string; slotLabelInterval?: DurationInput; snapDuration?: DurationInput; scrollTime?: DurationInput; minTime?: DurationInput; maxTime?: DurationInput; slotEventOverlap?: boolean; listDayFormat?: string | boolean; listDayAltFormat?: string | boolean; noEventsMessage?: string; defaultDate?: MomentInput; nowIndicator?: boolean; visibleRange?: ((currentDate: moment.Moment) => RangeInput) | RangeInput; validRange?: RangeInput; dateIncrement?: DurationInput; dateAlignment?: string; duration?: DurationInput; dayCount?: number; locale?: string; timeFormat?: string; columnHeader?: boolean; columnHeaderFormat?: string; columnHeaderText?: string | ((date: MomentInput) => string); columnHeaderHtml?: string | ((date: MomentInput) => string); titleFormat?: string; monthNames?: string[]; monthNamesShort?: string[]; dayNames?: string[]; dayNamesShort?: string[]; weekNumberTitle?: string; displayEventTime?: boolean; displayEventEnd?: boolean; eventLimitText?: string | ((eventCnt: number) => string); dayPopoverFormat?: string; navLinks?: boolean; navLinkDayClick?: string | ((date: moment.Moment, jsEvent: Event) => void); navLinkWeekClick?: string | ((weekStart: any, jsEvent: Event) => void); selectable?: boolean; selectHelper?: boolean; unselectAuto?: boolean; unselectCancel?: string; selectOverlap?: boolean | ((event: EventObjectInput) => boolean); selectConstraint?: ConstraintInput; selectAllow?: ((selectInfo: SelectInfo) => boolean); events?: EventSourceInput; eventSources?: EventSourceInput[]; allDayDefault?: boolean; startParam?: string; endParam?: string; lazyFetching?: boolean; eventColor?: string; eventBackgroundColor?: string; eventBorderColor?: string; eventTextColor?: string; nextDayThreshold?: DurationInput; eventOrder?: string | Array<((a: EventObjectInput, b: EventObjectInput) => number) | (string | ((a: EventObjectInput, b: EventObjectInput) => number))>; eventRenderWait?: number | null; editable?: boolean; eventStartEditable?: boolean; eventDurationEditable?: boolean; dragRevertDuration?: number; dragOpacity?: number; dragScroll?: boolean; eventOverlap?: boolean | ((stillEvent: EventObjectInput, movingEvent: EventObjectInput) => boolean); eventConstraint?: ConstraintInput; eventAllow?: ((dropInfo: DropInfo, draggedEvent: EventObjectInput) => boolean); longPressDelay?: number; eventLongPressDelay?: number; droppable?: boolean; dropAccept?: string | ((draggable: any) => boolean); viewRender?(view: View, element: JQuery): void; viewDestroy?(view: View, element: JQuery): void; dayRender?(date: moment.Moment, cell: JQuery): void; windowResize?(view: View): void; dayClick?(date: moment.Moment, jsEvent: MouseEvent, view: View, resourceObj?: any): void; eventClick?(event: EventObjectInput, jsEvent: MouseEvent, view: View): boolean | void; eventMouseover?(event: EventObjectInput, jsEvent: MouseEvent, view: View): void; eventMouseout?(event: EventObjectInput, jsEvent: MouseEvent, view: View): void; select?(start: moment.Moment, end: moment.Moment, jsEvent: MouseEvent, view: View, resource?: any): void; unselect?(view: View, jsEvent: Event): void; eventDataTransform?(eventData: any): EventObjectInput; loading?(isLoading: boolean, view: View): void; eventRender?(event: EventObjectInput, element: JQuery, view: View): void; eventAfterRender?(event: EventObjectInput, element: JQuery, view: View): void; eventAfterAllRender?(view: View): void; eventDestroy?(event: EventObjectInput, element: JQuery, view: View): void; eventDragStart?(event: EventObjectInput, jsEvent: MouseEvent, ui: any, view: View): void; eventDragStop?(event: EventObjectInput, jsEvent: MouseEvent, ui: any, view: View): void; eventDrop?(event: EventObjectInput, delta: moment.Duration, revertFunc: Function, jsEvent: Event, ui: any, view: View): void; eventResizeStart?(event: EventObjectInput, jsEvent: MouseEvent, ui: any, view: View): void; eventResizeStop?(event: EventObjectInput, jsEvent: MouseEvent, ui: any, view: View): void; eventResize?(event: EventObjectInput, delta: moment.Duration, revertFunc: Function, jsEvent: Event, ui: any, view: View): void; drop?(date: moment.Moment, jsEvent: MouseEvent, ui: any): void; eventReceive?(event: EventObjectInput): void; } export interface ViewOptionsInput extends OptionsInputBase { type?: string; buttonText?: string; } export interface OptionsInput extends OptionsInputBase { buttonText?: ButtonTextCompoundInput; views?: { [viewId: string]: ViewOptionsInput; }; } } declare module 'fullcalendar/FuncEventSource' { /// <reference types="jquery" /> import EventSource from 'fullcalendar/EventSource'; export class Default extends EventSource { func: any; static parse(rawInput: any, calendar: any): any; fetch(start: any, end: any, timezone: any): JQueryPromise<{}>; getPrimitive(): any; applyManualStandardProps(rawProps: any): boolean; } export default Default; } declare module 'fullcalendar/JsonFeedEventSource' { /// <reference types="jquery" /> import EventSource from 'fullcalendar/EventSource'; export class Default extends EventSource { static AJAX_DEFAULTS: { dataType: string; cache: boolean; }; url: any; startParam: any; endParam: any; timezoneParam: any; ajaxSettings: any; static parse(rawInput: any, calendar: any): any; fetch(start: any, end: any, timezone: any): JQueryPromise<{}>; buildRequestParams(start: any, end: any, timezone: any): {}; getPrimitive(): any; applyMiscProps(rawProps: any): void; } export default Default; } declare module 'fullcalendar/CoordCache' { export class Default { els: any; forcedOffsetParentEl: any; origin: any; boundingRect: any; isHorizontal: boolean; isVertical: boolean; lefts: any; rights: any; tops: any; bottoms: any; constructor(options: any); build(): void; clear(): void; ensureBuilt(): void; buildElHorizontals(): void; buildElVerticals(): void; getHorizontalIndex(leftOffset: any): any; getVerticalIndex(topOffset: any): any; getLeftOffset(leftIndex: any): any; getLeftPosition(leftIndex: any): number; getRightOffset(leftIndex: any): any; getRightPosition(leftIndex: any): number; getWidth(leftIndex: any): number; getTopOffset(topIndex: any): any; getTopPosition(topIndex: any): number; getBottomOffset(topIndex: any): any; getBottomPosition(topIndex: any): number; getHeight(topIndex: any): number; queryBoundingRect(): { left: number; right: any; top: number; bottom: any; }; isPointInBounds(leftOffset: any, topOffset: any): boolean; isLeftInBounds(leftOffset: any): boolean; isTopInBounds(topOffset: any): boolean; } export default Default; } declare module 'fullcalendar/DragListener' { import { ListenerInterface } from 'fullcalendar/ListenerMixin'; export class Default { listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; options: any; subjectEl: any; originX: any; originY: any; scrollEl: any; isInteracting: boolean; isDistanceSurpassed: boolean; isDelayEnded: boolean; isDragging: boolean; isTouch: boolean; isGeneric: boolean; delay: any; delayTimeoutId: any; minDistance: any; shouldCancelTouchScroll: boolean; scrollAlwaysKills: boolean; isAutoScroll: boolean; scrollBounds: any; scrollTopVel: any; scrollLeftVel: any; scrollIntervalId: any; scrollSensitivity: number; scrollSpeed: number; scrollIntervalMs: number; constructor(options: any); startInteraction(ev: any, extraOptions?: any): void; handleInteractionStart(ev: any): void; endInteraction(ev: any, isCancelled: any): void; handleInteractionEnd(ev: any, isCancelled: any): void; bindHandlers(): void; unbindHandlers(): void; startDrag(ev: any, extraOptions?: any): void; handleDragStart(ev: any): void; handleMove(ev: any): void; handleDrag(dx: any, dy: any, ev: any): void; endDrag(ev: any): void; handleDragEnd(ev: any): void; startDelay(initialEv: any): void; handleDelayEnd(initialEv: any): void; handleDistanceSurpassed(ev: any): void; handleTouchMove(ev: any): void; handleMouseMove(ev: any): void; handleTouchScroll(ev: any): void; trigger(name: any, ...args: any[]): void; initAutoScroll(): void; destroyAutoScroll(): void; computeScrollBounds(): void; updateAutoScroll(ev: any): void; setScrollVel(topVel: any, leftVel: any): void; constrainScrollVel(): void; scrollIntervalFunc(): void; endAutoScroll(): void; handleDebouncedScroll(): void; handleScrollEnd(): void; } export default Default; } declare module 'fullcalendar/HitDragListener' { import DragListener from 'fullcalendar/DragListener'; export class Default extends DragListener { component: any; origHit: any; hit: any; coordAdjust: any; constructor(component: any, options: any); handleInteractionStart(ev: any): void; handleDragStart(ev: any): void; handleDrag(dx: any, dy: any, ev: any): void; handleDragEnd(ev: any): void; handleHitOver(hit: any): void; handleHitOut(): void; handleHitDone(): void; handleInteractionEnd(ev: any, isCancelled: any): void; handleScrollEnd(): void; queryHit(left: any, top: any): any; } export default Default; } declare module 'fullcalendar/MouseFollower' { import { ListenerInterface } from 'fullcalendar/ListenerMixin'; export class Default { listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; options: any; sourceEl: any; el: any; parentEl: any; top0: any; left0: any; y0: any; x0: any; topDelta: any; leftDelta: any; isFollowing: boolean; isHidden: boolean; isAnimating: boolean; constructor(sourceEl: any, options: any); start(ev: any): void; stop(shouldRevert: any, callback: any): void; getEl(): any; removeElement(): void; updatePosition(): void; handleMove(ev: any): void; hide(): void; show(): void; } export default Default; } declare module 'fullcalendar/Popover' { import { ListenerInterface } from 'fullcalendar/ListenerMixin'; export class Default { listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; isHidden: boolean; options: any; el: any; margin: number; constructor(options: any); show(): void; hide(): void; render(): void; documentMousedown(ev: any): void; removeElement(): void; position(): void; trigger(name: any): void; } export default Default; } declare module 'fullcalendar/Scroller' { import Class from 'fullcalendar/Class'; export class Default extends Class { el: any; scrollEl: any; overflowX: any; overflowY: any; constructor(options?: any); render(): void; renderEl(): JQuery; clear(): void; destroy(): void; applyOverflow(): void; lockOverflow(scrollbarWidths: any): void; setHeight(height: any): void; getScrollTop(): any; setScrollTop(top: any): void; getClientWidth(): any; getClientHeight(): any; getScrollbarWidths(): any; } export default Default; } declare module 'fullcalendar/DayTableMixin' { import Mixin from 'fullcalendar/Mixin'; export interface DayTableInterface { dayDates: any; daysPerRow: any; rowCnt: any; colCnt: any; updateDayTable(): any; renderHeadHtml(): any; renderBgTrHtml(row: any): any; bookendCells(trEl: any): any; getCellDate(row: any, col: any): any; getCellRange(row: any, col: any): any; sliceRangeByDay(unzonedRange: any): any; sliceRangeByRow(unzonedRange: any): any; renderIntroHtml(): any; } export class Default extends Mixin implements DayTableInterface { breakOnWeeks: boolean; dayDates: any; dayIndices: any; daysPerRow: any; rowCnt: any; colCnt: any; colHeadFormat: any; updateDayTable(): void; updateDayTableCols(): void; computeColCnt(): any; getCellDate(row: any, col: any): any; getCellRange(row: any, col: any): { start: any; end: any; }; getCellDayIndex(row: any, col: any): any; getColDayIndex(col: any): any; getDateDayIndex(date: any): any; computeColHeadFormat(): any; sliceRangeByRow(unzonedRange: any): any[]; sliceRangeByDay(unzonedRange: any): any[]; renderHeadHtml(): string; renderHeadIntroHtml(): void; renderHeadTrHtml(): string; renderHeadDateCellsHtml(): string; renderHeadDateCellHtml(date: any, colspan: any, otherAttrs: any): string; renderBgTrHtml(row: any): string; renderBgIntroHtml(row: any): void; renderBgCellsHtml(row: any): string; renderBgCellHtml(date: any, otherAttrs: any): string; renderIntroHtml(): void; bookendCells(trEl: any): void; } export default Default; } declare module 'fullcalendar/BusinessHourRenderer' { export class Default { component: any; fillRenderer: any; segs: any; constructor(component: any, fillRenderer: any); render(businessHourGenerator: any): void; renderEventFootprints(eventFootprints: any): void; renderSegs(segs: any): void; unrender(): void; getSegs(): any; } export default Default; } declare module 'fullcalendar/EventRenderer' { export class Default { view: any; component: any; fillRenderer: any; fgSegs: any; bgSegs: any; eventTimeFormat: any; displayEventTime: any; displayEventEnd: any; constructor(component: any, fillRenderer: any); opt(name: any): any; rangeUpdated(): void; render(eventsPayload: any): void; unrender(): void; renderFgRanges(eventRanges: any): void; unrenderFgRanges(): void; renderBgRanges(eventRanges: any): void; unrenderBgRanges(): void; getSegs(): any; renderFgSegs(segs: any): (boolean | void); unrenderFgSegs(segs: any): void; renderBgSegs(segs: any): boolean; unrenderBgSegs(): void; renderFgSegEls(segs: any, disableResizing?: boolean): any[]; beforeFgSegHtml(seg: any): void; fgSegHtml(seg: any, disableResizing: any): void; getSegClasses(seg: any, isDraggable: any, isResizable: any): string[]; filterEventRenderEl(eventFootprint: any, el: any): any; getTimeText(eventFootprint: any, formatStr?: any, displayEnd?: any): any; _getTimeText(start: any, end: any, isAllDay: any, formatStr?: any, displayEnd?: any): any; computeEventTimeFormat(): any; computeDisplayEventTime(): boolean; computeDisplayEventEnd(): boolean; getBgClasses(eventDef: any): any[]; getClasses(eventDef: any): any[]; getSkinCss(eventDef: any): { 'background-color': any; 'border-color': any; color: any; }; getBgColor(eventDef: any): any; getBorderColor(eventDef: any): any; getTextColor(eventDef: any): any; getStylingObjs(eventDef: any): any[]; getFallbackStylingObjs(eventDef: any): any[]; sortEventSegs(segs: any): void; compareEventSegs(seg1: any, seg2: any): any; } export default Default; } declare module 'fullcalendar/FillRenderer' { export class Default { fillSegTag: string; component: any; elsByFill: any; constructor(component: any); renderFootprint(type: any, componentFootprint: any, props: any): void; renderSegs(type: any, segs: any, props: any): any; unrender(type: any): void; buildSegEls(type: any, segs: any, props: any): any[]; buildSegHtml(type: any, seg: any, props: any): string; attachSegEls(type: any, segs: any): void; reportEls(type: any, nodes: any): void; } export default Default; } declare module 'fullcalendar/HelperRenderer' { import EventFootprint from 'fullcalendar/EventFootprint'; export class Default { view: any; component: any; eventRenderer: any; helperEls: any; constructor(component: any, eventRenderer: any); renderComponentFootprint(componentFootprint: any): void; renderEventDraggingFootprints(eventFootprints: any, sourceSeg: any, isTouch: any): void; renderEventResizingFootprints(eventFootprints: any, sourceSeg: any, isTouch: any): void; renderEventFootprints(eventFootprints: any, sourceSeg?: any, extraClassNames?: any, opacity?: any): void; renderSegs(segs: any, sourceSeg?: any): void; unrender(): void; fabricateEventFootprint(componentFootprint: any): EventFootprint; } export default Default; } declare module 'fullcalendar/Interaction' { export class Default { view: any; component: any; constructor(component: any); opt(name: any): any; end(): void; } export default Default; } declare module 'fullcalendar/ExternalDropping' { import { ListenerInterface } from 'fullcalendar/ListenerMixin'; import Interaction from 'fullcalendar/Interaction'; export class Default extends Interaction { listenTo: ListenerInterface['listenTo']; stopListeningTo: ListenerInterface['stopListeningTo']; dragListener: any; isDragging: boolean; end(): void; bindToDocument(): void; unbindFromDocument(): void; handleDragStart(ev: any, ui: any): void; listenToExternalDrag(el: any, ev: any, ui: any): void; computeExternalDrop(componentFootprint: any, meta: any): any; } export default Default; } declare module 'fullcalendar/EventResizing' { import HitDragListener from 'fullcalendar/HitDragListener'; import Interaction from 'fullcalendar/Interaction'; export class Default extends Interaction { eventPointing: any; dragListener: any; isResizing: boolean; constructor(component: any, eventPointing: any); end(): void; bindToEl(el: any): void; handleMouseDown(seg: any, ev: any): void; handleTouchStart(seg: any, ev: any): void; buildDragListener(seg: any, isStart: any): HitDragListener; segResizeStart(seg: any, ev: any): void; segResizeStop(seg: any, ev: any): void; computeEventStartResizeMutation(startFootprint: any, endFootprint: any, origEventFootprint: any): any; computeEventEndResizeMutation(startFootprint: any, endFootprint: any, origEventFootprint: any): any; } export default Default; } declare module 'fullcalendar/EventPointing' { import Interaction from 'fullcalendar/Interaction'; export class Default extends Interaction { mousedOverSeg: any; bindToEl(el: any): void; handleClick(seg: any, ev: any): void; handleMouseover(seg: any, ev: any): void; handleMouseout(seg: any, ev?: any): void; end(): void; } export default Default; } declare module 'fullcalendar/EventDragging' { import EventDefMutation from 'fullcalendar/EventDefMutation'; import Interaction from 'fullcalendar/Interaction'; export class Default extends Interaction { eventPointing: any; dragListener: any; isDragging: boolean; constructor(component: any, eventPointing: any); end(): void; getSelectionDelay(): any; bindToEl(el: any): void; handleMousedown(seg: any, ev: any): void; handleTouchStart(seg: any, ev: any): void; buildSelectListener(seg: any): any; buildDragListener(seg: any): any; segDragStart(seg: any, ev: any): void; segDragStop(seg: any, ev: any): void; computeEventDropMutation(startFootprint: any, endFootprint: any, eventDef: any): EventDefMutation; computeEventDateMutation(startFootprint: any, endFootprint: any): any; } export default Default; } declare module 'fullcalendar/DateSelecting' { import HitDragListener from 'fullcalendar/HitDragListener'; import ComponentFootprint from 'fullcalendar/ComponentFootprint'; import Interaction from 'fullcalendar/Interaction'; export class Default extends Interaction { dragListener: any; constructor(component: any); end(): void; getDelay(): any; bindToEl(el: any): void; buildDragListener(): HitDragListener; computeSelection(footprint0: any, footprint1: any): false | ComponentFootprint; computeSelectionFootprint(footprint0: any, footprint1: any): ComponentFootprint; isSelectionFootprintAllowed(componentFootprint: any): any; } export default Default; } declare module 'fullcalendar/DateClicking' { import HitDragListener from 'fullcalendar/HitDragListener'; import Interaction from 'fullcalendar/Interaction'; export class Default extends Interaction { dragListener: any; constructor(component: any); end(): void; bindToEl(el: any): void; buildDragListener(): HitDragListener; } export default Default; } declare module 'fullcalendar/StandardInteractionsMixin' { import Mixin from 'fullcalendar/Mixin'; export class Default extends Mixin { } export default Default; } declare module 'fullcalendar/TimeGridEventRenderer' { import EventRenderer from 'fullcalendar/EventRenderer'; export class Default extends EventRenderer { timeGrid: any; constructor(timeGrid: any, fillRenderer: any); renderFgSegs(segs: any): void; renderFgSegsIntoContainers(segs: any, containerEls: any): void; unrenderFgSegs(): void; computeEventTimeFormat(): any; computeDisplayEventEnd(): boolean; fgSegHtml(seg: any, disableResizing: any): string; updateFgSegCoords(segs: any): void; computeFgSegHorizontals(segs: any): void; computeFgSegForwardBack(seg: any, seriesBackwardPressure: any, seriesBackwardCoord: any): void; sortForwardSegs(forwardSegs: any): void; compareForwardSegs(seg1: any, seg2: any): any; assignFgSegHorizontals(segs: any): void; generateFgSegHorizontalCss(seg: any): any; } export default Default; } declare module 'fullcalendar/TimeGridHelperRenderer' { import HelperRenderer from 'fullcalendar/HelperRenderer'; export class Default extends HelperRenderer { renderSegs(segs: any, sourceSeg: any): JQuery; } export default Default; } declare module 'fullcalendar/TimeGridFillRenderer' { import FillRenderer from 'fullcalendar/FillRenderer'; export class Default extends FillRenderer { attachSegEls(type: any, segs: any): any; } export default Default; } declare module 'fullcalendar/TimeGrid' { import * as moment from 'moment'; import InteractiveDateComponent from 'fullcalendar/InteractiveDateComponent'; import { DayTableInterface } from 'fullcalendar/DayTableMixin'; import ComponentFootprint from 'fullcalendar/ComponentFootprint'; export class Default extends InteractiveDateComponent { dayDates: DayTableInterface['dayDates']; daysPerRow: DayTableInterface['daysPerRow']; colCnt: DayTableInterface['colCnt']; updateDayTable: DayTableInterface['updateDayTable']; renderHeadHtml: DayTableInterface['renderHeadHtml']; renderBgTrHtml: DayTableInterface['renderBgTrHtml']; bookendCells: DayTableInterface['bookendCells']; getCellDate: DayTableInterface['getCellDate']; view: any; helperRenderer: any; dayRanges: any; slotDuration: any; snapDuration: any; snapsPerSlot: any; labelFormat: any; labelInterval: any; headContainerEl: any; colEls: any; slatContainerEl: any; slatEls: any; nowIndicatorEls: any; colCoordCache: any; slatCoordCache: any; bottomRuleEl: any; contentSkeletonEl: any; colContainerEls: any; fgContainerEls: any; bgContainerEls: any; helperContainerEls: any; highlightContainerEls: any; businessContainerEls: any; helperSegs: any; highlightSegs: any; businessSegs: any; constructor(view: any); componentFootprintToSegs(componentFootprint: any): any[]; sliceRangeByTimes(unzonedRange: any): any[]; processOptions(): void; computeLabelInterval(slotDuration: any): any; renderDates(dateProfile: any): void; unrenderDates(): void; renderSkeleton(): void; renderSlats(): void; renderSlatRowHtml(): string; renderColumns(): void; unrenderColumns(): void; renderContentSkeleton(): void; unrenderContentSkeleton(): void; groupSegsByCol(segs: any): any[]; attachSegsByCol(segsByCol: any, containerEls: any): void; getNowIndicatorUnit(): string; renderNowIndicator(date: any): void; unrenderNowIndicator(): void; updateSize(totalHeight: any, isAuto: any, isResize: any): void; getTotalSlatHeight(): any; computeDateTop(ms: any, startOfDayDate: any): any; computeTimeTop(time: any): any; updateSegVerticals(segs: any): void; computeSegVerticals(segs: any): void; assignSegVerticals(segs: any): void; generateSegVerticalCss(seg: any): { top: any; bottom: number; }; prepareHits(): void; releaseHits(): void; queryHit(leftOffset: any, topOffset: any): any; getHitFootprint(hit: any): ComponentFootprint; computeSnapTime(snapIndex: any): moment.Duration; getHitEl(hit: any): any; renderDrag(eventFootprints: any, seg: any, isTouch: any): boolean; unrenderDrag(): void; renderEventResize(eventFootprints: any, seg: any, isTouch: any): void; unrenderEventResize(): void; renderSelectionFootprint(componentFootprint: any): void; unrenderSelection(): void; } export default Default; } declare module 'fullcalendar/DayGridEventRenderer' { import EventRenderer from 'fullcalendar/EventRenderer'; export class Default extends EventRenderer { dayGrid: any; rowStructs: any; constructor(dayGrid: any, fillRenderer: any); renderBgRanges(eventRanges: any): void; renderFgSegs(segs: any): void; unrenderFgSegs(): void; renderSegRows(segs: any): any[]; renderSegRow(row: any, rowSegs: any): { row: any; tbodyEl: JQuery; cellMatrix: any[]; segMatrix: any[]; segLevels: any[]; segs: any; }; buildSegLevels(segs: any): any[]; groupSegRows(segs: any): any[]; computeEventTimeFormat(): any; computeDisplayEventEnd(): boolean; fgSegHtml(seg: any, disableResizing: any): string; } export default Default; } declare module 'fullcalendar/DayGridHelperRenderer' { import HelperRenderer from 'fullcalendar/HelperRenderer'; export class Default extends HelperRenderer { renderSegs(segs: any, sourceSeg: any): JQuery; } export default Default; } declare module 'fullcalendar/DayGridFillRenderer' { import FillRenderer from 'fullcalendar/FillRenderer'; export class Default extends FillRenderer { fillSegTag: string; attachSegEls(type: any, segs: any): any[]; renderFillRow(type: any, seg: any): any; } export default Default; } declare module 'fullcalendar/DayGrid' { import ComponentFootprint from 'fullcalendar/ComponentFootprint'; import InteractiveDateComponent from 'fullcalendar/InteractiveDateComponent'; import { DayTableInterface } from 'fullcalendar/DayTableMixin'; export class Default extends InteractiveDateComponent { rowCnt: DayTableInterface['rowCnt']; colCnt: DayTableInterface['colCnt']; daysPerRow: DayTableInterface['daysPerRow']; sliceRangeByRow: DayTableInterface['sliceRangeByRow']; updateDayTable: DayTableInterface['updateDayTable']; renderHeadHtml: DayTableInterface['renderHeadHtml']; getCellDate: DayTableInterface['getCellDate']; renderBgTrHtml: DayTableInterface['renderBgTrHtml']; renderIntroHtml: DayTableInterface['renderIntroHtml']; getCellRange: DayTableInterface['getCellRange']; sliceRangeByDay: DayTableInterface['sliceRangeByDay']; view: any; helperRenderer: any; cellWeekNumbersVisible: boolean; bottomCoordPadding: number; headContainerEl: any; rowEls: any; cellEls: any; rowCoordCache: any; colCoordCache: any; isRigid: boolean; hasAllDayBusinessHours: boolean; segPopover: any; popoverSegs: any; constructor(view: any); componentFootprintToSegs(componentFootprint: any): any; renderDates(dateProfile: any): void; unrenderDates(): void; renderGrid(): void; renderDayRowHtml(row: any, isRigid: any): string; getIsNumbersVisible(): boolean; getIsDayNumbersVisible(): boolean; renderNumberTrHtml(row: any): string; renderNumberIntroHtml(row: any): any; renderNumberCellsHtml(row: any): string; renderNumberCellHtml(date: any): string; prepareHits(): void; releaseHits(): void; queryHit(leftOffset: any, topOffset: any): any; getHitFootprint(hit: any): ComponentFootprint; getHitEl(hit: any): any; getCellHit(row: any, col: any): any; getCellEl(row: any, col: any): any; executeEventUnrender(): void; getOwnEventSegs(): any; renderDrag(eventFootprints: any, seg: any, isTouch: any): boolean; unrenderDrag(): void; renderEventResize(eventFootprints: any, seg: any, isTouch: any): void; unrenderEventResize(): void; removeSegPopover(): void; limitRows(levelLimit: any): void; computeRowLevelLimit(row: any): (number | false); limitRow(row: any, levelLimit: any): void; unlimitRow(row: any): void; renderMoreLink(row: any, col: any, hiddenSegs: any): JQuery; showSegPopover(row: any, col: any, moreLink: any, segs: any): void; renderSegPopoverContent(row: any, col: any, segs: any): JQuery; resliceDaySegs(segs: any, dayDate: any): any[]; getMoreLinkText(num: any): any; getCellSegs(row: any, col: any, startLevel?: any): any[]; } export default Default; } declare module 'fullcalendar/AgendaView' { import View from 'fullcalendar/View'; export class Default extends View { timeGridClass: any; dayGridClass: any; timeGrid: any; dayGrid: any; scroller: any; axisWidth: any; usesMinMaxTime: boolean; constructor(calendar: any, viewSpec: any); instantiateTimeGrid(): any; instantiateDayGrid(): any; renderSkeleton(): void; unrenderSkeleton(): void; renderSkeletonHtml(): string; axisStyleAttr(): string; getNowIndicatorUnit(): any; updateSize(totalHeight: any, isAuto: any, isResize: any): void; computeScrollerHeight(totalHeight: any): number; computeInitialDateScroll(): { top: any; }; queryDateScroll(): { top: any; }; applyDateScroll(scroll: any): void; getHitFootprint(hit: any): any; getHitEl(hit: any): any; executeEventRender(eventsPayload: any): void; renderDrag(eventFootprints: any, seg: any, isTouch: any): boolean; renderEventResize(eventFootprints: any, seg: any, isTouch: any): void; renderSelectionFootprint(componentFootprint: any): void; } export default Default; } declare module 'fullcalendar/BasicViewDateProfileGenerator' { import UnzonedRange from 'fullcalendar/UnzonedRange'; import DateProfileGenerator from 'fullcalendar/DateProfileGenerator'; export class Default extends DateProfileGenerator { buildRenderRange(currentUnzonedRange: any, currentRangeUnit: any, isRangeAllDay: any): UnzonedRange; } export default Default; } declare module 'fullcalendar/BasicView' { import View from 'fullcalendar/View'; export class Default extends View { dateProfileGeneratorClass: any; dayGridClass: any; scroller: any; dayGrid: any; weekNumberWidth: any; constructor(calendar: any, viewSpec: any); instantiateDayGrid(): any; executeDateRender(dateProfile: any): void; renderSkeleton(): void; unrenderSkeleton(): void; renderSkeletonHtml(): string; weekNumberStyleAttr(): string; hasRigidRows(): boolean; updateSize(totalHeight: any, isAuto: any, isResize: any): void; computeScrollerHeight(totalHeight: any): number; setGridHeight(height: any, isAuto: any): void; computeInitialDateScroll(): { top: number; }; queryDateScroll(): { top: any; }; applyDateScroll(scroll: any): void; } export default Default; } declare module 'fullcalendar/MonthViewDateProfileGenerator' { import BasicViewDateProfileGenerator from 'fullcalendar/BasicViewDateProfileGenerator'; import UnzonedRange from 'fullcalendar/UnzonedRange'; export class Default extends BasicViewDateProfileGenerator { buildRenderRange(currentUnzonedRange: any, currentRangeUnit: any, isRangeAllDay: any): UnzonedRange; } export default Default; } declare module 'fullcalendar/MonthView' { import BasicView from 'fullcalendar/BasicView'; export class Default extends BasicView { setGridHeight(height: any, isAuto: any): void; isDateInOtherMonth(date: any, dateProfile: any): boolean; } export default Default; } declare module 'fullcalendar/ListEventRenderer' { import EventRenderer from 'fullcalendar/EventRenderer'; export class Default extends EventRenderer { renderFgSegs(segs: any): void; fgSegHtml(seg: any): string; computeEventTimeFormat(): any; } export default Default; } declare module 'fullcalendar/ListEventPointing' { import EventPointing from 'fullcalendar/EventPointing'; export class Default extends EventPointing { handleClick(seg: any, ev: any): void; } export default Default; } declare module 'fullcalendar/ListView' { import View from 'fullcalendar/View'; export class Default extends View { eventRendererClass: any; eventPointingClass: any; segSelector: any; scroller: any; contentEl: any; dayDates: any; dayRanges: any; constructor(calendar: any, viewSpec: any); renderSkeleton(): void; unrenderSkeleton(): void; updateSize(totalHeight: any, isAuto: any, isResize: any): void; computeScrollerHeight(totalHeight: any): number; renderDates(dateProfile: any): void; componentFootprintToSegs(footprint: any): any[]; renderEmptyMessage(): void; renderSegList(allSegs: any): void; groupSegsByDay(segs: any): any[]; dayHeaderHtml(dayDate: any): string; } export default Default; } declare module 'fullcalendar/src/exports' { export const version = "<%= version %>"; export const internalApiVersion = 12; export { BusinessHoursInput, EventOptionsBase, OptionsInput, OptionsInputBase, RangeInput, ToolbarInput, ViewOptionsInput, ButtonIconsInput, ButtonTextCompoundInput, CellInfo, EventObjectInput } from 'fullcalendar/src/types/input-types'; export { applyAll, debounce, isInt, htmlEscape, cssToStr, proxy, capitaliseFirstLetter, getOuterRect, getClientRect, getContentRect, getScrollbarWidths, preventDefault, parseFieldSpecs, compareByFieldSpecs, compareByFieldSpec, flexibleCompare, computeGreatestUnit, divideRangeByDuration, divideDurationByDuration, multiplyDuration, durationHasTime, log, warn, removeExact, intersectRects, allowSelection, attrsToStr, compareNumbers, compensateScroll, computeDurationGreatestUnit, constrainPoint, copyOwnProps, diffByUnit, diffDay, diffDayTime, diffPoints, disableCursor, distributeHeight, enableCursor, firstDefined, getEvIsTouch, getEvX, getEvY, getRectCenter, getScrollParent, hasOwnProp, isArraysEqual, isNativeDate, isPrimaryMouseButton, isTimeString, matchCellWidths, mergeProps, preventSelection, removeMatching, stripHtmlEntities, subtractInnerElHeight, uncompensateScroll, undistributeHeight, dayIDs, unitsDesc } from 'fullcalendar/src/util'; export { formatDate, formatRange, queryMostGranularFormatUnit } from 'fullcalendar/src/date-formatting'; export { datepickerLocale, locale, getMomentLocaleData, populateInstanceComputableOptions } from 'fullcalendar/src/locale'; export { eventDefsToEventInstances, eventFootprintToComponentFootprint, eventInstanceToEventRange, eventInstanceToUnzonedRange, eventRangeToEventFootprint } from 'fullcalendar/src/models/event/util'; export { default as moment } from 'fullcalendar/src/moment-ext'; export { default as EmitterMixin, EmitterInterface } from 'fullcalendar/EmitterMixin'; export { default as ListenerMixin, ListenerInterface } from 'fullcalendar/ListenerMixin'; export { default as Model } from 'fullcalendar/Model'; export { default as Constraints } from 'fullcalendar/Constraints'; export { default as DateProfileGenerator } from 'fullcalendar/DateProfileGenerator'; export { default as UnzonedRange } from 'fullcalendar/UnzonedRange'; export { default as ComponentFootprint } from 'fullcalendar/ComponentFootprint'; export { default as BusinessHourGenerator } from 'fullcalendar/BusinessHourGenerator'; export { default as EventPeriod } from 'fullcalendar/EventPeriod'; export { default as EventManager } from 'fullcalendar/EventManager'; export { default as EventDef } from 'fullcalendar/EventDef'; export { default as EventDefMutation } from 'fullcalendar/EventDefMutation'; export { default as EventDefParser } from 'fullcalendar/EventDefParser'; export { default as EventInstance } from 'fullcalendar/EventInstance'; export { default as EventRange } from 'fullcalendar/EventRange'; export { default as RecurringEventDef } from 'fullcalendar/RecurringEventDef'; export { default as SingleEventDef } from 'fullcalendar/SingleEventDef'; export { default as EventDefDateMutation } from 'fullcalendar/EventDefDateMutation'; export { default as EventDateProfile } from 'fullcalendar/EventDateProfile'; export { default as EventSourceParser } from 'fullcalendar/EventSourceParser'; export { default as EventSource } from 'fullcalendar/EventSource'; export { defineThemeSystem, getThemeSystemClass } from 'fullcalendar/ThemeRegistry'; export { default as EventInstanceGroup } from 'fullcalendar/EventInstanceGroup'; export { default as ArrayEventSource } from 'fullcalendar/ArrayEventSource'; export { default as FuncEventSource } from 'fullcalendar/FuncEventSource'; export { default as JsonFeedEventSource } from 'fullcalendar/JsonFeedEventSource'; export { default as EventFootprint } from 'fullcalendar/EventFootprint'; export { default as Class } from 'fullcalendar/Class'; export { default as Mixin } from 'fullcalendar/Mixin'; export { default as CoordCache } from 'fullcalendar/CoordCache'; export { default as Iterator } from 'fullcalendar/Iterator'; export { default as DragListener } from 'fullcalendar/DragListener'; export { default as HitDragListener } from 'fullcalendar/HitDragListener'; export { default as MouseFollower } from 'fullcalendar/MouseFollower'; export { default as ParsableModelMixin, ParsableModelInterface } from 'fullcalendar/ParsableModelMixin'; export { default as Popover } from 'fullcalendar/Popover'; export { default as Promise } from 'fullcalendar/Promise'; export { default as TaskQueue } from 'fullcalendar/TaskQueue'; export { default as RenderQueue } from 'fullcalendar/RenderQueue'; export { default as Scroller } from 'fullcalendar/Scroller'; export { default as Theme } from 'fullcalendar/Theme'; export { default as Component } from 'fullcalendar/Component'; export { default as DateComponent } from 'fullcalendar/DateComponent'; export { default as InteractiveDateComponent } from 'fullcalendar/InteractiveDateComponent'; export { default as Calendar } from 'fullcalendar/Calendar'; export { default as View } from 'fullcalendar/View'; export { defineView, getViewConfig } from 'fullcalendar/ViewRegistry'; export { default as DayTableMixin } from 'fullcalendar/DayTableMixin'; export { default as BusinessHourRenderer } from 'fullcalendar/BusinessHourRenderer'; export { default as EventRenderer } from 'fullcalendar/EventRenderer'; export { default as FillRenderer } from 'fullcalendar/FillRenderer'; export { default as HelperRenderer } from 'fullcalendar/HelperRenderer'; export { default as ExternalDropping } from 'fullcalendar/ExternalDropping'; export { default as EventResizing } from 'fullcalendar/EventResizing'; export { default as EventPointing } from 'fullcalendar/EventPointing'; export { default as EventDragging } from 'fullcalendar/EventDragging'; export { default as DateSelecting } from 'fullcalendar/DateSelecting'; export { default as DateClicking } from 'fullcalendar/DateClicking'; export { default as Interaction } from 'fullcalendar/Interaction'; export { default as StandardInteractionsMixin } from 'fullcalendar/StandardInteractionsMixin'; export { default as AgendaView } from 'fullcalendar/AgendaView'; export { default as TimeGrid } from 'fullcalendar/TimeGrid'; export { default as TimeGridEventRenderer } from 'fullcalendar/TimeGridEventRenderer'; export { default as TimeGridFillRenderer } from 'fullcalendar/TimeGridFillRenderer'; export { default as TimeGridHelperRenderer } from 'fullcalendar/TimeGridHelperRenderer'; export { default as DayGrid } from 'fullcalendar/DayGrid'; export { default as DayGridEventRenderer } from 'fullcalendar/DayGridEventRenderer'; export { default as DayGridFillRenderer } from 'fullcalendar/DayGridFillRenderer'; export { default as DayGridHelperRenderer } from 'fullcalendar/DayGridHelperRenderer'; export { default as BasicView } from 'fullcalendar/BasicView'; export { default as BasicViewDateProfileGenerator } from 'fullcalendar/BasicViewDateProfileGenerator'; export { default as MonthView } from 'fullcalendar/MonthView'; export { default as MonthViewDateProfileGenerator } from 'fullcalendar/MonthViewDateProfileGenerator'; export { default as ListView } from 'fullcalendar/ListView'; export { default as ListEventPointing } from 'fullcalendar/ListEventPointing'; export { default as ListEventRenderer } from 'fullcalendar/ListEventRenderer'; } declare module 'fullcalendar/src/models/event-source/config' { export {}; } declare module 'fullcalendar/Bootstrap3Theme' { import Theme from 'fullcalendar/Theme'; export class Default extends Theme { } export default Default; } declare module 'fullcalendar/Bootstrap4Theme' { import Theme from 'fullcalendar/Theme'; export class Default extends Theme { } export default Default; } declare module 'fullcalendar/src/theme/config' { export {}; } declare module 'fullcalendar/src/basic/config' { export {}; } declare module 'fullcalendar/src/agenda/config' { export {}; } declare module 'fullcalendar/src/list/config' { export {}; } declare module 'fullcalendar/src/types/jquery-hooks' { import * as moment from 'moment'; import Calendar from 'fullcalendar/Calendar'; import View from 'fullcalendar/View'; import EventSource from 'fullcalendar/EventSource'; import { RangeInput, MomentInput, OptionsInput, EventObjectInput, EventSourceInput } from 'fullcalendar/src/types/input-types'; global { interface JQueryStatic { fullCalendar: object; } interface JQuery { fullCalendar(options?: OptionsInput): JQuery; fullCalendar(method: 'getCalendar'): Calendar; fullCalendar(method: 'getView'): View; fullCalendar(method: 'destroy'): JQuery; fullCalendar(method: 'option', name: string | object, value?: any): any; fullCalendar(method: 'isValidViewType', viewType: string): boolean; fullCalendar(method: 'changeView', viewName: string, dateOrRange?: RangeInput | MomentInput): JQuery; fullCalendar(method: 'zoomTo', newDate: moment.Moment, viewType?: string): JQuery; fullCalendar(method: 'prev'): JQuery; fullCalendar(method: 'next'): JQuery; fullCalendar(method: 'prevYear'): JQuery; fullCalendar(method: 'nextYear'): JQuery; fullCalendar(method: 'today'): JQuery; fullCalendar(method: 'gotoDate', zonedDateInput: any): JQuery; fullCalendar(method: 'incrementDate', delta: any): JQuery; fullCalendar(method: 'getDate'): moment.Moment; fullCalendar(method: 'render'): JQuery; fullCalendar(method: 'select', zonedStartInput: MomentInput, zonedEndInput?: MomentInput, resourceId?: string): JQuery; fullCalendar(method: 'unselect'): JQuery; fullCalendar(method: 'moment', ...args: any[]): moment.Moment; fullCalendar(method: 'getNow'): moment.Moment; fullCalendar(method: 'rerenderEvents'): JQuery; fullCalendar(method: 'refetchEvents'): JQuery; fullCalendar(method: 'renderEvents', eventInputs: EventObjectInput[], isSticky?: boolean): JQuery; fullCalendar(method: 'renderEvent', eventInput: EventObjectInput, isSticky?: boolean): JQuery; fullCalendar(method: 'removeEvents', legacyQuery?: any): JQuery; fullCalendar(method: 'clientEvents', legacyQuery: any): any; fullCalendar(method: 'updateEvents', eventPropsArray: EventObjectInput[]): JQuery; fullCalendar(method: 'updateEvent', eventProps: EventObjectInput): JQuery; fullCalendar(method: 'getEventSources'): EventSource; fullCalendar(method: 'getEventSourceById', id: any): EventSource; fullCalendar(method: 'addEventSource', sourceInput: EventSourceInput): JQuery; fullCalendar(method: 'removeEventSources', sourceMultiQuery: any): JQuery; fullCalendar(method: 'removeEventSource', sourceQuery: any): JQuery; fullCalendar(method: 'refetchEventSources', sourceMultiQuery: any): JQuery; } } } declare module 'fullcalendar/src/main' { import * as exportHooks from 'fullcalendar/src/exports'; import 'fullcalendar/src/moment-ext'; import 'fullcalendar/src/date-formatting'; import 'fullcalendar/src/models/event-source/config'; import 'fullcalendar/src/theme/config'; import 'fullcalendar/src/basic/config'; import 'fullcalendar/src/agenda/config'; import 'fullcalendar/src/list/config'; import 'fullcalendar/src/types/jquery-hooks'; export = exportHooks; } declare module 'fullcalendar/plugins/gcal/GcalEventSource' { /// <reference types="jquery" /> import { EventSource } from 'fullcalendar'; export class Default extends EventSource { static API_BASE: string; googleCalendarApiKey: any; googleCalendarId: any; googleCalendarError: any; ajaxSettings: any; static parse(rawInput: any, calendar: any): any; fetch(start: any, end: any, timezone: any): JQueryPromise<{}>; gcalItemsToRawEventDefs(items: any, gcalTimezone: any): any; gcalItemToRawEventDef(item: any, gcalTimezone: any): { id: any; title: any; start: any; end: any; url: any; location: any; description: any; extendedProperties: {}; }; buildUrl(): string; buildRequestParams(start: any, end: any, timezone: any): any; reportError(message: any, apiErrorObjs?: any): void; getPrimitive(): any; applyManualStandardProps(rawProps: any): any; applyMiscProps(rawProps: any): void; } export default Default; } declare module 'fullcalendar/plugins/gcal/main' { export {}; } declare module 'fullcalendar' { import main = require('fullcalendar/src/main'); export = main; } fullcalendar/fullcalendar.css 0000644 00000102500 15002261751 0012343 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */ .fc { direction: ltr; text-align: left; } .fc-rtl { text-align: right; } body .fc { /* extra precedence to overcome jqui */ font-size: 1em; } /* Colors --------------------------------------------------------------------------------------------------*/ .fc-highlight { /* when user is selecting cells */ background: #bce8f1; opacity: .3; } .fc-bgevent { /* default look for background events */ background: #8fdf82; opacity: .3; } .fc-nonbusiness { /* default look for non-business-hours areas */ /* will inherit .fc-bgevent's styles */ background: #d7d7d7; } /* Buttons (styled <button> tags, normalized to work cross-browser) --------------------------------------------------------------------------------------------------*/ .fc button { /* force height to include the border and padding */ -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; /* dimensions */ margin: 0; height: 2.1em; padding: 0 .6em; /* text & cursor */ font-size: 1em; /* normalize */ white-space: nowrap; cursor: pointer; } /* Firefox has an annoying inner border */ .fc button::-moz-focus-inner { margin: 0; padding: 0; } .fc-state-default { /* non-theme */ border: 1px solid; } .fc-state-default.fc-corner-left { /* non-theme */ border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .fc-state-default.fc-corner-right { /* non-theme */ border-top-right-radius: 4px; border-bottom-right-radius: 4px; } /* icons in buttons */ .fc button .fc-icon { /* non-theme */ position: relative; top: -0.05em; /* seems to be a good adjustment across browsers */ margin: 0 .2em; vertical-align: middle; } /* button states borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/) */ .fc-state-default { background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); background-repeat: repeat-x; border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); color: #333; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .fc-state-hover, .fc-state-down, .fc-state-active, .fc-state-disabled { color: #333333; background-color: #e6e6e6; } .fc-state-hover { color: #333333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } .fc-state-down, .fc-state-active { background-color: #cccccc; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .fc-state-disabled { cursor: default; background-image: none; opacity: 0.65; box-shadow: none; } /* Buttons Groups --------------------------------------------------------------------------------------------------*/ .fc-button-group { display: inline-block; } /* every button that is not first in a button group should scootch over one pixel and cover the previous button's border... */ .fc .fc-button-group > * { /* extra precedence b/c buttons have margin set to zero */ float: left; margin: 0 0 0 -1px; } .fc .fc-button-group > :first-child { /* same */ margin-left: 0; } /* Popover --------------------------------------------------------------------------------------------------*/ .fc-popover { position: absolute; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); } .fc-popover .fc-header { /* TODO: be more consistent with fc-head/fc-body */ padding: 2px 4px; } .fc-popover .fc-header .fc-title { margin: 0 2px; } .fc-popover .fc-header .fc-close { cursor: pointer; } .fc-ltr .fc-popover .fc-header .fc-title, .fc-rtl .fc-popover .fc-header .fc-close { float: left; } .fc-rtl .fc-popover .fc-header .fc-title, .fc-ltr .fc-popover .fc-header .fc-close { float: right; } /* Misc Reusable Components --------------------------------------------------------------------------------------------------*/ .fc-divider { border-style: solid; border-width: 1px; } hr.fc-divider { height: 0; margin: 0; padding: 0 0 2px; /* height is unreliable across browsers, so use padding */ border-width: 1px 0; } .fc-clear { clear: both; } .fc-bg, .fc-bgevent-skeleton, .fc-highlight-skeleton, .fc-helper-skeleton { /* these element should always cling to top-left/right corners */ position: absolute; top: 0; left: 0; right: 0; } .fc-bg { bottom: 0; /* strech bg to bottom edge */ } .fc-bg table { height: 100%; /* strech bg to bottom edge */ } /* Tables --------------------------------------------------------------------------------------------------*/ .fc table { width: 100%; box-sizing: border-box; /* fix scrollbar issue in firefox */ table-layout: fixed; border-collapse: collapse; border-spacing: 0; font-size: 1em; /* normalize cross-browser */ } .fc th { text-align: center; } .fc th, .fc td { border-style: solid; border-width: 1px; padding: 0; vertical-align: top; } .fc td.fc-today { border-style: double; /* overcome neighboring borders */ } /* Internal Nav Links --------------------------------------------------------------------------------------------------*/ a[data-goto] { cursor: pointer; } a[data-goto]:hover { text-decoration: underline; } /* Fake Table Rows --------------------------------------------------------------------------------------------------*/ .fc .fc-row { /* extra precedence to overcome themes w/ .ui-widget-content forcing a 1px border */ /* no visible border by default. but make available if need be (scrollbar width compensation) */ border-style: solid; border-width: 0; } .fc-row table { /* don't put left/right border on anything within a fake row. the outer tbody will worry about this */ border-left: 0 hidden transparent; border-right: 0 hidden transparent; /* no bottom borders on rows */ border-bottom: 0 hidden transparent; } .fc-row:first-child table { border-top: 0 hidden transparent; /* no top border on first row */ } /* Day Row (used within the header and the DayGrid) --------------------------------------------------------------------------------------------------*/ .fc-row { position: relative; } .fc-row .fc-bg { z-index: 1; } /* highlighting cells & background event skeleton */ .fc-row .fc-bgevent-skeleton, .fc-row .fc-highlight-skeleton { bottom: 0; /* stretch skeleton to bottom of row */ } .fc-row .fc-bgevent-skeleton table, .fc-row .fc-highlight-skeleton table { height: 100%; /* stretch skeleton to bottom of row */ } .fc-row .fc-highlight-skeleton td, .fc-row .fc-bgevent-skeleton td { border-color: transparent; } .fc-row .fc-bgevent-skeleton { z-index: 2; } .fc-row .fc-highlight-skeleton { z-index: 3; } /* row content (which contains day/week numbers and events) as well as "helper" (which contains temporary rendered events). */ .fc-row .fc-content-skeleton { position: relative; z-index: 4; padding-bottom: 2px; /* matches the space above the events */ } .fc-row .fc-helper-skeleton { z-index: 5; } .fc .fc-row .fc-content-skeleton table, .fc .fc-row .fc-content-skeleton td, .fc .fc-row .fc-helper-skeleton td { /* see-through to the background below */ /* extra precedence to prevent theme-provided backgrounds */ background: none; /* in case <td>s are globally styled */ border-color: transparent; } .fc-row .fc-content-skeleton td, .fc-row .fc-helper-skeleton td { /* don't put a border between events and/or the day number */ border-bottom: 0; } .fc-row .fc-content-skeleton tbody td, .fc-row .fc-helper-skeleton tbody td { /* don't put a border between event cells */ border-top: 0; } /* Scrolling Container --------------------------------------------------------------------------------------------------*/ .fc-scroller { -webkit-overflow-scrolling: touch; } /* TODO: move to agenda/basic */ .fc-scroller > .fc-day-grid, .fc-scroller > .fc-time-grid { position: relative; /* re-scope all positions */ width: 100%; /* hack to force re-sizing this inner element when scrollbars appear/disappear */ } /* Global Event Styles --------------------------------------------------------------------------------------------------*/ .fc-event { position: relative; /* for resize handle and other inner positioning */ display: block; /* make the <a> tag block */ font-size: .85em; line-height: 1.3; border-radius: 3px; border: 1px solid #3a87ad; /* default BORDER color */ } .fc-event, .fc-event-dot { background-color: #3a87ad; /* default BACKGROUND color */ } .fc-event, .fc-event:hover { color: #fff; /* default TEXT color */ text-decoration: none; /* if <a> has an href */ } .fc-event[href], .fc-event.fc-draggable { cursor: pointer; /* give events with links and draggable events a hand mouse pointer */ } .fc-not-allowed, .fc-not-allowed .fc-event { /* to override an event's custom cursor */ cursor: not-allowed; } .fc-event .fc-bg { /* the generic .fc-bg already does position */ z-index: 1; background: #fff; opacity: .25; } .fc-event .fc-content { position: relative; z-index: 2; } /* resizer (cursor AND touch devices) */ .fc-event .fc-resizer { position: absolute; z-index: 4; } /* resizer (touch devices) */ .fc-event .fc-resizer { display: none; } .fc-event.fc-allow-mouse-resize .fc-resizer, .fc-event.fc-selected .fc-resizer { /* only show when hovering or selected (with touch) */ display: block; } /* hit area */ .fc-event.fc-selected .fc-resizer:before { /* 40x40 touch area */ content: ""; position: absolute; z-index: 9999; /* user of this util can scope within a lower z-index */ top: 50%; left: 50%; width: 40px; height: 40px; margin-left: -20px; margin-top: -20px; } /* Event Selection (only for touch devices) --------------------------------------------------------------------------------------------------*/ .fc-event.fc-selected { z-index: 9999 !important; /* overcomes inline z-index */ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } .fc-event.fc-selected.fc-dragging { box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); } /* Horizontal Events --------------------------------------------------------------------------------------------------*/ /* bigger touch area when selected */ .fc-h-event.fc-selected:before { content: ""; position: absolute; z-index: 3; /* below resizers */ top: -10px; bottom: -10px; left: 0; right: 0; } /* events that are continuing to/from another week. kill rounded corners and butt up against edge */ .fc-ltr .fc-h-event.fc-not-start, .fc-rtl .fc-h-event.fc-not-end { margin-left: 0; border-left-width: 0; padding-left: 1px; /* replace the border with padding */ border-top-left-radius: 0; border-bottom-left-radius: 0; } .fc-ltr .fc-h-event.fc-not-end, .fc-rtl .fc-h-event.fc-not-start { margin-right: 0; border-right-width: 0; padding-right: 1px; /* replace the border with padding */ border-top-right-radius: 0; border-bottom-right-radius: 0; } /* resizer (cursor AND touch devices) */ /* left resizer */ .fc-ltr .fc-h-event .fc-start-resizer, .fc-rtl .fc-h-event .fc-end-resizer { cursor: w-resize; left: -1px; /* overcome border */ } /* right resizer */ .fc-ltr .fc-h-event .fc-end-resizer, .fc-rtl .fc-h-event .fc-start-resizer { cursor: e-resize; right: -1px; /* overcome border */ } /* resizer (mouse devices) */ .fc-h-event.fc-allow-mouse-resize .fc-resizer { width: 7px; top: -1px; /* overcome top border */ bottom: -1px; /* overcome bottom border */ } /* resizer (touch devices) */ .fc-h-event.fc-selected .fc-resizer { /* 8x8 little dot */ border-radius: 4px; border-width: 1px; width: 6px; height: 6px; border-style: solid; border-color: inherit; background: #fff; /* vertically center */ top: 50%; margin-top: -4px; } /* left resizer */ .fc-ltr .fc-h-event.fc-selected .fc-start-resizer, .fc-rtl .fc-h-event.fc-selected .fc-end-resizer { margin-left: -4px; /* centers the 8x8 dot on the left edge */ } /* right resizer */ .fc-ltr .fc-h-event.fc-selected .fc-end-resizer, .fc-rtl .fc-h-event.fc-selected .fc-start-resizer { margin-right: -4px; /* centers the 8x8 dot on the right edge */ } /* DayGrid events ---------------------------------------------------------------------------------------------------- We use the full "fc-day-grid-event" class instead of using descendants because the event won't be a descendant of the grid when it is being dragged. */ .fc-day-grid-event { margin: 1px 2px 0; /* spacing between events and edges */ padding: 0 1px; } tr:first-child > td > .fc-day-grid-event { margin-top: 2px; /* a little bit more space before the first event */ } .fc-day-grid-event.fc-selected:after { content: ""; position: absolute; z-index: 1; /* same z-index as fc-bg, behind text */ /* overcome the borders */ top: -1px; right: -1px; bottom: -1px; left: -1px; /* darkening effect */ background: #000; opacity: .25; } .fc-day-grid-event .fc-content { /* force events to be one-line tall */ white-space: nowrap; overflow: hidden; } .fc-day-grid-event .fc-time { font-weight: bold; } /* resizer (cursor devices) */ /* left resizer */ .fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer, .fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer { margin-left: -2px; /* to the day cell's edge */ } /* right resizer */ .fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer, .fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer { margin-right: -2px; /* to the day cell's edge */ } /* Event Limiting --------------------------------------------------------------------------------------------------*/ /* "more" link that represents hidden events */ a.fc-more { margin: 1px 3px; font-size: .85em; cursor: pointer; text-decoration: none; } a.fc-more:hover { text-decoration: underline; } .fc-limited { /* rows and cells that are hidden because of a "more" link */ display: none; } /* popover that appears when "more" link is clicked */ .fc-day-grid .fc-row { z-index: 1; /* make the "more" popover one higher than this */ } .fc-more-popover { z-index: 2; width: 220px; } .fc-more-popover .fc-event-container { padding: 10px; } /* Now Indicator --------------------------------------------------------------------------------------------------*/ .fc-now-indicator { position: absolute; border: 0 solid red; } /* Utilities --------------------------------------------------------------------------------------------------*/ .fc-unselectable { -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } /* TODO: more distinction between this file and common.css */ /* Colors --------------------------------------------------------------------------------------------------*/ .fc-unthemed th, .fc-unthemed td, .fc-unthemed thead, .fc-unthemed tbody, .fc-unthemed .fc-divider, .fc-unthemed .fc-row, .fc-unthemed .fc-content, .fc-unthemed .fc-popover, .fc-unthemed .fc-list-view, .fc-unthemed .fc-list-heading td { border-color: #ddd; } .fc-unthemed .fc-popover { background-color: #fff; } .fc-unthemed .fc-divider, .fc-unthemed .fc-popover .fc-header, .fc-unthemed .fc-list-heading td { background: #eee; } .fc-unthemed .fc-popover .fc-header .fc-close { color: #666; } .fc-unthemed td.fc-today { background: #fcf8e3; } .fc-unthemed .fc-disabled-day { background: #d7d7d7; opacity: .3; } /* Icons (inline elements with styled text that mock arrow icons) --------------------------------------------------------------------------------------------------*/ .fc-icon { display: inline-block; height: 1em; line-height: 1em; font-size: 1em; text-align: center; overflow: hidden; font-family: "Courier New", Courier, monospace; /* don't allow browser text-selection */ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } /* Acceptable font-family overrides for individual icons: "Arial", sans-serif "Times New Roman", serif NOTE: use percentage font sizes or else old IE chokes */ .fc-icon:after { position: relative; } .fc-icon-left-single-arrow:after { content: "\2039"; font-weight: bold; font-size: 200%; top: -7%; } .fc-icon-right-single-arrow:after { content: "\203A"; font-weight: bold; font-size: 200%; top: -7%; } .fc-icon-left-double-arrow:after { content: "\AB"; font-size: 160%; top: -7%; } .fc-icon-right-double-arrow:after { content: "\BB"; font-size: 160%; top: -7%; } .fc-icon-left-triangle:after { content: "\25C4"; font-size: 125%; top: 3%; } .fc-icon-right-triangle:after { content: "\25BA"; font-size: 125%; top: 3%; } .fc-icon-down-triangle:after { content: "\25BC"; font-size: 125%; top: 2%; } .fc-icon-x:after { content: "\D7"; font-size: 200%; top: 6%; } /* Popover --------------------------------------------------------------------------------------------------*/ .fc-unthemed .fc-popover { border-width: 1px; border-style: solid; } .fc-unthemed .fc-popover .fc-header .fc-close { font-size: .9em; margin-top: 2px; } /* List View --------------------------------------------------------------------------------------------------*/ .fc-unthemed .fc-list-item:hover td { background-color: #f5f5f5; } /* Colors --------------------------------------------------------------------------------------------------*/ .ui-widget .fc-disabled-day { background-image: none; } /* Popover --------------------------------------------------------------------------------------------------*/ .fc-popover > .ui-widget-header + .ui-widget-content { border-top: 0; /* where they meet, let the header have the border */ } /* Global Event Styles --------------------------------------------------------------------------------------------------*/ .ui-widget .fc-event { /* overpower jqui's styles on <a> tags. TODO: more DRY */ color: #fff; /* default TEXT color */ text-decoration: none; /* if <a> has an href */ /* undo ui-widget-header bold */ font-weight: normal; } /* TimeGrid axis running down the side (for both the all-day area and the slot area) --------------------------------------------------------------------------------------------------*/ .ui-widget td.fc-axis { font-weight: normal; /* overcome bold */ } /* TimeGrid Slats (lines that run horizontally) --------------------------------------------------------------------------------------------------*/ .fc-time-grid .fc-slats .ui-widget-content { background: none; /* see through to fc-bg */ } .fc.fc-bootstrap3 a { text-decoration: none; } .fc.fc-bootstrap3 a[data-goto]:hover { text-decoration: underline; } .fc-bootstrap3 hr.fc-divider { border-color: inherit; } .fc-bootstrap3 .fc-today.alert { border-radius: 0; } /* Popover --------------------------------------------------------------------------------------------------*/ .fc-bootstrap3 .fc-popover .panel-body { padding: 0; } /* TimeGrid Slats (lines that run horizontally) --------------------------------------------------------------------------------------------------*/ .fc-bootstrap3 .fc-time-grid .fc-slats table { /* some themes have background color. see through to slats */ background: none; } .fc.fc-bootstrap4 a { text-decoration: none; } .fc.fc-bootstrap4 a[data-goto]:hover { text-decoration: underline; } .fc-bootstrap4 hr.fc-divider { border-color: inherit; } .fc-bootstrap4 .fc-today.alert { border-radius: 0; } .fc-bootstrap4 a.fc-event:not([href]):not([tabindex]) { color: #fff; } .fc-bootstrap4 .fc-popover.card { position: absolute; } /* Popover --------------------------------------------------------------------------------------------------*/ .fc-bootstrap4 .fc-popover .card-body { padding: 0; } /* TimeGrid Slats (lines that run horizontally) --------------------------------------------------------------------------------------------------*/ .fc-bootstrap4 .fc-time-grid .fc-slats table { /* some themes have background color. see through to slats */ background: none; } /* Toolbar --------------------------------------------------------------------------------------------------*/ .fc-toolbar { text-align: center; } .fc-toolbar.fc-header-toolbar { margin-bottom: 1em; } .fc-toolbar.fc-footer-toolbar { margin-top: 1em; } .fc-toolbar .fc-left { float: left; } .fc-toolbar .fc-right { float: right; } .fc-toolbar .fc-center { display: inline-block; } /* the things within each left/right/center section */ .fc .fc-toolbar > * > * { /* extra precedence to override button border margins */ float: left; margin-left: .75em; } /* the first thing within each left/center/right section */ .fc .fc-toolbar > * > :first-child { /* extra precedence to override button border margins */ margin-left: 0; } /* title text */ .fc-toolbar h2 { margin: 0; } /* button layering (for border precedence) */ .fc-toolbar button { position: relative; } .fc-toolbar .fc-state-hover, .fc-toolbar .ui-state-hover { z-index: 2; } .fc-toolbar .fc-state-down { z-index: 3; } .fc-toolbar .fc-state-active, .fc-toolbar .ui-state-active { z-index: 4; } .fc-toolbar button:focus { z-index: 5; } /* View Structure --------------------------------------------------------------------------------------------------*/ /* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */ /* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */ .fc-view-container *, .fc-view-container *:before, .fc-view-container *:after { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } .fc-view, .fc-view > table { /* so dragged elements can be above the view's main element */ position: relative; z-index: 1; } /* BasicView --------------------------------------------------------------------------------------------------*/ /* day row structure */ .fc-basicWeek-view .fc-content-skeleton, .fc-basicDay-view .fc-content-skeleton { /* there may be week numbers in these views, so no padding-top */ padding-bottom: 1em; /* ensure a space at bottom of cell for user selecting/clicking */ } .fc-basic-view .fc-body .fc-row { min-height: 4em; /* ensure that all rows are at least this tall */ } /* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */ .fc-row.fc-rigid { overflow: hidden; } .fc-row.fc-rigid .fc-content-skeleton { position: absolute; top: 0; left: 0; right: 0; } /* week and day number styling */ .fc-day-top.fc-other-month { opacity: 0.3; } .fc-basic-view .fc-week-number, .fc-basic-view .fc-day-number { padding: 2px; } .fc-basic-view th.fc-week-number, .fc-basic-view th.fc-day-number { padding: 0 2px; /* column headers can't have as much v space */ } .fc-ltr .fc-basic-view .fc-day-top .fc-day-number { float: right; } .fc-rtl .fc-basic-view .fc-day-top .fc-day-number { float: left; } .fc-ltr .fc-basic-view .fc-day-top .fc-week-number { float: left; border-radius: 0 0 3px 0; } .fc-rtl .fc-basic-view .fc-day-top .fc-week-number { float: right; border-radius: 0 0 0 3px; } .fc-basic-view .fc-day-top .fc-week-number { min-width: 1.5em; text-align: center; background-color: #f2f2f2; color: #808080; } /* when week/day number have own column */ .fc-basic-view td.fc-week-number { text-align: center; } .fc-basic-view td.fc-week-number > * { /* work around the way we do column resizing and ensure a minimum width */ display: inline-block; min-width: 1.25em; } /* AgendaView all-day area --------------------------------------------------------------------------------------------------*/ .fc-agenda-view .fc-day-grid { position: relative; z-index: 2; /* so the "more.." popover will be over the time grid */ } .fc-agenda-view .fc-day-grid .fc-row { min-height: 3em; /* all-day section will never get shorter than this */ } .fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton { padding-bottom: 1em; /* give space underneath events for clicking/selecting days */ } /* TimeGrid axis running down the side (for both the all-day area and the slot area) --------------------------------------------------------------------------------------------------*/ .fc .fc-axis { /* .fc to overcome default cell styles */ vertical-align: middle; padding: 0 4px; white-space: nowrap; } .fc-ltr .fc-axis { text-align: right; } .fc-rtl .fc-axis { text-align: left; } /* TimeGrid Structure --------------------------------------------------------------------------------------------------*/ .fc-time-grid-container, .fc-time-grid { /* so slats/bg/content/etc positions get scoped within here */ position: relative; z-index: 1; } .fc-time-grid { min-height: 100%; /* so if height setting is 'auto', .fc-bg stretches to fill height */ } .fc-time-grid table { /* don't put outer borders on slats/bg/content/etc */ border: 0 hidden transparent; } .fc-time-grid > .fc-bg { z-index: 1; } .fc-time-grid .fc-slats, .fc-time-grid > hr { /* the <hr> AgendaView injects when grid is shorter than scroller */ position: relative; z-index: 2; } .fc-time-grid .fc-content-col { position: relative; /* because now-indicator lives directly inside */ } .fc-time-grid .fc-content-skeleton { position: absolute; z-index: 3; top: 0; left: 0; right: 0; } /* divs within a cell within the fc-content-skeleton */ .fc-time-grid .fc-business-container { position: relative; z-index: 1; } .fc-time-grid .fc-bgevent-container { position: relative; z-index: 2; } .fc-time-grid .fc-highlight-container { position: relative; z-index: 3; } .fc-time-grid .fc-event-container { position: relative; z-index: 4; } .fc-time-grid .fc-now-indicator-line { z-index: 5; } .fc-time-grid .fc-helper-container { /* also is fc-event-container */ position: relative; z-index: 6; } /* TimeGrid Slats (lines that run horizontally) --------------------------------------------------------------------------------------------------*/ .fc-time-grid .fc-slats td { height: 1.5em; border-bottom: 0; /* each cell is responsible for its top border */ } .fc-time-grid .fc-slats .fc-minor td { border-top-style: dotted; } /* TimeGrid Highlighting Slots --------------------------------------------------------------------------------------------------*/ .fc-time-grid .fc-highlight-container { /* a div within a cell within the fc-highlight-skeleton */ position: relative; /* scopes the left/right of the fc-highlight to be in the column */ } .fc-time-grid .fc-highlight { position: absolute; left: 0; right: 0; /* top and bottom will be in by JS */ } /* TimeGrid Event Containment --------------------------------------------------------------------------------------------------*/ .fc-ltr .fc-time-grid .fc-event-container { /* space on the sides of events for LTR (default) */ margin: 0 2.5% 0 2px; } .fc-rtl .fc-time-grid .fc-event-container { /* space on the sides of events for RTL */ margin: 0 2px 0 2.5%; } .fc-time-grid .fc-event, .fc-time-grid .fc-bgevent { position: absolute; z-index: 1; /* scope inner z-index's */ } .fc-time-grid .fc-bgevent { /* background events always span full width */ left: 0; right: 0; } /* Generic Vertical Event --------------------------------------------------------------------------------------------------*/ .fc-v-event.fc-not-start { /* events that are continuing from another day */ /* replace space made by the top border with padding */ border-top-width: 0; padding-top: 1px; /* remove top rounded corners */ border-top-left-radius: 0; border-top-right-radius: 0; } .fc-v-event.fc-not-end { /* replace space made by the top border with padding */ border-bottom-width: 0; padding-bottom: 1px; /* remove bottom rounded corners */ border-bottom-left-radius: 0; border-bottom-right-radius: 0; } /* TimeGrid Event Styling ---------------------------------------------------------------------------------------------------- We use the full "fc-time-grid-event" class instead of using descendants because the event won't be a descendant of the grid when it is being dragged. */ .fc-time-grid-event { overflow: hidden; /* don't let the bg flow over rounded corners */ } .fc-time-grid-event.fc-selected { /* need to allow touch resizers to extend outside event's bounding box */ /* common fc-selected styles hide the fc-bg, so don't need this anyway */ overflow: visible; } .fc-time-grid-event.fc-selected .fc-bg { display: none; /* hide semi-white background, to appear darker */ } .fc-time-grid-event .fc-content { overflow: hidden; /* for when .fc-selected */ } .fc-time-grid-event .fc-time, .fc-time-grid-event .fc-title { padding: 0 1px; } .fc-time-grid-event .fc-time { font-size: .85em; white-space: nowrap; } /* short mode, where time and title are on the same line */ .fc-time-grid-event.fc-short .fc-content { /* don't wrap to second line (now that contents will be inline) */ white-space: nowrap; } .fc-time-grid-event.fc-short .fc-time, .fc-time-grid-event.fc-short .fc-title { /* put the time and title on the same line */ display: inline-block; vertical-align: top; } .fc-time-grid-event.fc-short .fc-time span { display: none; /* don't display the full time text... */ } .fc-time-grid-event.fc-short .fc-time:before { content: attr(data-start); /* ...instead, display only the start time */ } .fc-time-grid-event.fc-short .fc-time:after { content: "\A0-\A0"; /* seperate with a dash, wrapped in nbsp's */ } .fc-time-grid-event.fc-short .fc-title { font-size: .85em; /* make the title text the same size as the time */ padding: 0; /* undo padding from above */ } /* resizer (cursor device) */ .fc-time-grid-event.fc-allow-mouse-resize .fc-resizer { left: 0; right: 0; bottom: 0; height: 8px; overflow: hidden; line-height: 8px; font-size: 11px; font-family: monospace; text-align: center; cursor: s-resize; } .fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after { content: "="; } /* resizer (touch device) */ .fc-time-grid-event.fc-selected .fc-resizer { /* 10x10 dot */ border-radius: 5px; border-width: 1px; width: 8px; height: 8px; border-style: solid; border-color: inherit; background: #fff; /* horizontally center */ left: 50%; margin-left: -5px; /* center on the bottom edge */ bottom: -5px; } /* Now Indicator --------------------------------------------------------------------------------------------------*/ .fc-time-grid .fc-now-indicator-line { border-top-width: 1px; left: 0; right: 0; } /* arrow on axis */ .fc-time-grid .fc-now-indicator-arrow { margin-top: -5px; /* vertically center on top coordinate */ } .fc-ltr .fc-time-grid .fc-now-indicator-arrow { left: 0; /* triangle pointing right... */ border-width: 5px 0 5px 6px; border-top-color: transparent; border-bottom-color: transparent; } .fc-rtl .fc-time-grid .fc-now-indicator-arrow { right: 0; /* triangle pointing left... */ border-width: 5px 6px 5px 0; border-top-color: transparent; border-bottom-color: transparent; } /* List View --------------------------------------------------------------------------------------------------*/ /* possibly reusable */ .fc-event-dot { display: inline-block; width: 10px; height: 10px; border-radius: 5px; } /* view wrapper */ .fc-rtl .fc-list-view { direction: rtl; /* unlike core views, leverage browser RTL */ } .fc-list-view { border-width: 1px; border-style: solid; } /* table resets */ .fc .fc-list-table { table-layout: auto; /* for shrinkwrapping cell content */ } .fc-list-table td { border-width: 1px 0 0; padding: 8px 14px; } .fc-list-table tr:first-child td { border-top-width: 0; } /* day headings with the list */ .fc-list-heading { border-bottom-width: 1px; } .fc-list-heading td { font-weight: bold; } .fc-ltr .fc-list-heading-main { float: left; } .fc-ltr .fc-list-heading-alt { float: right; } .fc-rtl .fc-list-heading-main { float: right; } .fc-rtl .fc-list-heading-alt { float: left; } /* event list items */ .fc-list-item.fc-has-url { cursor: pointer; /* whole row will be clickable */ } .fc-list-item-marker, .fc-list-item-time { white-space: nowrap; width: 1px; } /* make the dot closer to the event title */ .fc-ltr .fc-list-item-marker { padding-right: 0; } .fc-rtl .fc-list-item-marker { padding-left: 0; } .fc-list-item-title a { /* every event title cell has an <a> tag */ text-decoration: none; color: inherit; } .fc-list-item-title a[href]:hover { /* hover effect only on titles with hrefs */ text-decoration: underline; } /* message when no events */ .fc-list-empty-wrap2 { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .fc-list-empty-wrap1 { width: 100%; height: 100%; display: table; } .fc-list-empty { display: table-cell; vertical-align: middle; text-align: center; } .fc-unthemed .fc-list-empty { /* theme will provide own background */ background-color: #eee; } fullcalendar/fullcalendar.js 0000644 00002274753 15002261751 0012215 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("moment"), require("jquery")); else if(typeof define === 'function' && define.amd) define(["moment", "jquery"], factory); else if(typeof exports === 'object') exports["FullCalendar"] = factory(require("moment"), require("jquery")); else root["FullCalendar"] = factory(root["moment"], root["jQuery"]); })(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_3__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 256); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_0__; /***/ }), /* 1 */, /* 2 */ /***/ (function(module, exports) { /* derived from: https://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js only include the helpers we need, to keep down filesize */ var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; exports.__extends = function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_3__; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var moment = __webpack_require__(0); var $ = __webpack_require__(3); /* FullCalendar-specific DOM Utilities ----------------------------------------------------------------------------------------------------------------------*/ // Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left // and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that. function compensateScroll(rowEls, scrollbarWidths) { if (scrollbarWidths.left) { rowEls.css({ 'border-left-width': 1, 'margin-left': scrollbarWidths.left - 1 }); } if (scrollbarWidths.right) { rowEls.css({ 'border-right-width': 1, 'margin-right': scrollbarWidths.right - 1 }); } } exports.compensateScroll = compensateScroll; // Undoes compensateScroll and restores all borders/margins function uncompensateScroll(rowEls) { rowEls.css({ 'margin-left': '', 'margin-right': '', 'border-left-width': '', 'border-right-width': '' }); } exports.uncompensateScroll = uncompensateScroll; // Make the mouse cursor express that an event is not allowed in the current area function disableCursor() { $('body').addClass('fc-not-allowed'); } exports.disableCursor = disableCursor; // Returns the mouse cursor to its original look function enableCursor() { $('body').removeClass('fc-not-allowed'); } exports.enableCursor = enableCursor; // Given a total available height to fill, have `els` (essentially child rows) expand to accomodate. // By default, all elements that are shorter than the recommended height are expanded uniformly, not considering // any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and // reduces the available height. function distributeHeight(els, availableHeight, shouldRedistribute) { // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions, // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars. var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE* var flexEls = []; // elements that are allowed to expand. array of DOM nodes var flexOffsets = []; // amount of vertical space it takes up var flexHeights = []; // actual css height var usedHeight = 0; undistributeHeight(els); // give all elements their natural height // find elements that are below the recommended height (expandable). // important to query for heights in a single first pass (to avoid reflow oscillation). els.each(function (i, el) { var minOffset = i === els.length - 1 ? minOffset2 : minOffset1; var naturalOffset = $(el).outerHeight(true); if (naturalOffset < minOffset) { flexEls.push(el); flexOffsets.push(naturalOffset); flexHeights.push($(el).height()); } else { // this element stretches past recommended height (non-expandable). mark the space as occupied. usedHeight += naturalOffset; } }); // readjust the recommended height to only consider the height available to non-maxed-out rows. if (shouldRedistribute) { availableHeight -= usedHeight; minOffset1 = Math.floor(availableHeight / flexEls.length); minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE* } // assign heights to all expandable elements $(flexEls).each(function (i, el) { var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1; var naturalOffset = flexOffsets[i]; var naturalHeight = flexHeights[i]; var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things $(el).height(newHeight); } }); } exports.distributeHeight = distributeHeight; // Undoes distrubuteHeight, restoring all els to their natural height function undistributeHeight(els) { els.height(''); } exports.undistributeHeight = undistributeHeight; // Given `els`, a jQuery set of <td> cells, find the cell with the largest natural width and set the widths of all the // cells to be that width. // PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline function matchCellWidths(els) { var maxInnerWidth = 0; els.find('> *').each(function (i, innerEl) { var innerWidth = $(innerEl).outerWidth(); if (innerWidth > maxInnerWidth) { maxInnerWidth = innerWidth; } }); maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance els.width(maxInnerWidth); return maxInnerWidth; } exports.matchCellWidths = matchCellWidths; // Given one element that resides inside another, // Subtracts the height of the inner element from the outer element. function subtractInnerElHeight(outerEl, innerEl) { var both = outerEl.add(innerEl); var diff; // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked both.css({ position: 'relative', left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll }); diff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions both.css({ position: '', left: '' }); // undo hack return diff; } exports.subtractInnerElHeight = subtractInnerElHeight; /* Element Geom Utilities ----------------------------------------------------------------------------------------------------------------------*/ // borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51 function getScrollParent(el) { var position = el.css('position'); var scrollParent = el.parents().filter(function () { var parent = $(this); return (/(auto|scroll)/).test(parent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x')); }).eq(0); return position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent; } exports.getScrollParent = getScrollParent; // Queries the outer bounding area of a jQuery element. // Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). // Origin is optional. function getOuterRect(el, origin) { var offset = el.offset(); var left = offset.left - (origin ? origin.left : 0); var top = offset.top - (origin ? origin.top : 0); return { left: left, right: left + el.outerWidth(), top: top, bottom: top + el.outerHeight() }; } exports.getOuterRect = getOuterRect; // Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding. // Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). // Origin is optional. // WARNING: given element can't have borders // NOTE: should use clientLeft/clientTop, but very unreliable cross-browser. function getClientRect(el, origin) { var offset = el.offset(); var scrollbarWidths = getScrollbarWidths(el); var left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0); var top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0); return { left: left, right: left + el[0].clientWidth, top: top, bottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars }; } exports.getClientRect = getClientRect; // Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars. // Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). // Origin is optional. function getContentRect(el, origin) { var offset = el.offset(); // just outside of border, margin not included var left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') - (origin ? origin.left : 0); var top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') - (origin ? origin.top : 0); return { left: left, right: left + el.width(), top: top, bottom: top + el.height() }; } exports.getContentRect = getContentRect; // Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element. // WARNING: given element can't have borders (which will cause offsetWidth/offsetHeight to be larger). // NOTE: should use clientLeft/clientTop, but very unreliable cross-browser. function getScrollbarWidths(el) { var leftRightWidth = el[0].offsetWidth - el[0].clientWidth; var bottomWidth = el[0].offsetHeight - el[0].clientHeight; var widths; leftRightWidth = sanitizeScrollbarWidth(leftRightWidth); bottomWidth = sanitizeScrollbarWidth(bottomWidth); widths = { left: 0, right: 0, top: 0, bottom: bottomWidth }; if (getIsLeftRtlScrollbars() && el.css('direction') === 'rtl') { // is the scrollbar on the left side? widths.left = leftRightWidth; } else { widths.right = leftRightWidth; } return widths; } exports.getScrollbarWidths = getScrollbarWidths; // The scrollbar width computations in getScrollbarWidths are sometimes flawed when it comes to // retina displays, rounding, and IE11. Massage them into a usable value. function sanitizeScrollbarWidth(width) { width = Math.max(0, width); // no negatives width = Math.round(width); return width; } // Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side var _isLeftRtlScrollbars = null; function getIsLeftRtlScrollbars() { if (_isLeftRtlScrollbars === null) { _isLeftRtlScrollbars = computeIsLeftRtlScrollbars(); } return _isLeftRtlScrollbars; } function computeIsLeftRtlScrollbars() { var el = $('<div><div></div></div>') .css({ position: 'absolute', top: -1000, left: 0, border: 0, padding: 0, overflow: 'scroll', direction: 'rtl' }) .appendTo('body'); var innerEl = el.children(); var res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar? el.remove(); return res; } // Retrieves a jQuery element's computed CSS value as a floating-point number. // If the queried value is non-numeric (ex: IE can return "medium" for border width), will just return zero. function getCssFloat(el, prop) { return parseFloat(el.css(prop)) || 0; } /* Mouse / Touch Utilities ----------------------------------------------------------------------------------------------------------------------*/ // Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) function isPrimaryMouseButton(ev) { return ev.which === 1 && !ev.ctrlKey; } exports.isPrimaryMouseButton = isPrimaryMouseButton; function getEvX(ev) { var touches = ev.originalEvent.touches; // on mobile FF, pageX for touch events is present, but incorrect, // so, look at touch coordinates first. if (touches && touches.length) { return touches[0].pageX; } return ev.pageX; } exports.getEvX = getEvX; function getEvY(ev) { var touches = ev.originalEvent.touches; // on mobile FF, pageX for touch events is present, but incorrect, // so, look at touch coordinates first. if (touches && touches.length) { return touches[0].pageY; } return ev.pageY; } exports.getEvY = getEvY; function getEvIsTouch(ev) { return /^touch/.test(ev.type); } exports.getEvIsTouch = getEvIsTouch; function preventSelection(el) { el.addClass('fc-unselectable') .on('selectstart', preventDefault); } exports.preventSelection = preventSelection; function allowSelection(el) { el.removeClass('fc-unselectable') .off('selectstart', preventDefault); } exports.allowSelection = allowSelection; // Stops a mouse/touch event from doing it's native browser action function preventDefault(ev) { ev.preventDefault(); } exports.preventDefault = preventDefault; /* General Geometry Utils ----------------------------------------------------------------------------------------------------------------------*/ // Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false function intersectRects(rect1, rect2) { var res = { left: Math.max(rect1.left, rect2.left), right: Math.min(rect1.right, rect2.right), top: Math.max(rect1.top, rect2.top), bottom: Math.min(rect1.bottom, rect2.bottom) }; if (res.left < res.right && res.top < res.bottom) { return res; } return false; } exports.intersectRects = intersectRects; // Returns a new point that will have been moved to reside within the given rectangle function constrainPoint(point, rect) { return { left: Math.min(Math.max(point.left, rect.left), rect.right), top: Math.min(Math.max(point.top, rect.top), rect.bottom) }; } exports.constrainPoint = constrainPoint; // Returns a point that is the center of the given rectangle function getRectCenter(rect) { return { left: (rect.left + rect.right) / 2, top: (rect.top + rect.bottom) / 2 }; } exports.getRectCenter = getRectCenter; // Subtracts point2's coordinates from point1's coordinates, returning a delta function diffPoints(point1, point2) { return { left: point1.left - point2.left, top: point1.top - point2.top }; } exports.diffPoints = diffPoints; /* Object Ordering by Field ----------------------------------------------------------------------------------------------------------------------*/ function parseFieldSpecs(input) { var specs = []; var tokens = []; var i; var token; if (typeof input === 'string') { tokens = input.split(/\s*,\s*/); } else if (typeof input === 'function') { tokens = [input]; } else if ($.isArray(input)) { tokens = input; } for (i = 0; i < tokens.length; i++) { token = tokens[i]; if (typeof token === 'string') { specs.push(token.charAt(0) === '-' ? { field: token.substring(1), order: -1 } : { field: token, order: 1 }); } else if (typeof token === 'function') { specs.push({ func: token }); } } return specs; } exports.parseFieldSpecs = parseFieldSpecs; function compareByFieldSpecs(obj1, obj2, fieldSpecs, obj1fallback, obj2fallback) { var i; var cmp; for (i = 0; i < fieldSpecs.length; i++) { cmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i], obj1fallback, obj2fallback); if (cmp) { return cmp; } } return 0; } exports.compareByFieldSpecs = compareByFieldSpecs; function compareByFieldSpec(obj1, obj2, fieldSpec, obj1fallback, obj2fallback) { if (fieldSpec.func) { return fieldSpec.func(obj1, obj2); } var val1 = obj1[fieldSpec.field]; var val2 = obj2[fieldSpec.field]; if (val1 == null && obj1fallback) { val1 = obj1fallback[fieldSpec.field]; } if (val2 == null && obj2fallback) { val2 = obj2fallback[fieldSpec.field]; } return flexibleCompare(val1, val2) * (fieldSpec.order || 1); } exports.compareByFieldSpec = compareByFieldSpec; function flexibleCompare(a, b) { if (!a && !b) { return 0; } if (b == null) { return -1; } if (a == null) { return 1; } if ($.type(a) === 'string' || $.type(b) === 'string') { return String(a).localeCompare(String(b)); } return a - b; } exports.flexibleCompare = flexibleCompare; /* Date Utilities ----------------------------------------------------------------------------------------------------------------------*/ exports.dayIDs = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; exports.unitsDesc = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; // descending // Diffs the two moments into a Duration where full-days are recorded first, then the remaining time. // Moments will have their timezones normalized. function diffDayTime(a, b) { return moment.duration({ days: a.clone().stripTime().diff(b.clone().stripTime(), 'days'), ms: a.time() - b.time() // time-of-day from day start. disregards timezone }); } exports.diffDayTime = diffDayTime; // Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations. function diffDay(a, b) { return moment.duration({ days: a.clone().stripTime().diff(b.clone().stripTime(), 'days') }); } exports.diffDay = diffDay; // Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding. function diffByUnit(a, b, unit) { return moment.duration(Math.round(a.diff(b, unit, true)), // returnFloat=true unit); } exports.diffByUnit = diffByUnit; // Computes the unit name of the largest whole-unit period of time. // For example, 48 hours will be "days" whereas 49 hours will be "hours". // Accepts start/end, a range object, or an original duration object. function computeGreatestUnit(start, end) { var i; var unit; var val; for (i = 0; i < exports.unitsDesc.length; i++) { unit = exports.unitsDesc[i]; val = computeRangeAs(unit, start, end); if (val >= 1 && isInt(val)) { break; } } return unit; // will be "milliseconds" if nothing else matches } exports.computeGreatestUnit = computeGreatestUnit; // like computeGreatestUnit, but has special abilities to interpret the source input for clues function computeDurationGreatestUnit(duration, durationInput) { var unit = computeGreatestUnit(duration); // prevent days:7 from being interpreted as a week if (unit === 'week' && typeof durationInput === 'object' && durationInput.days) { unit = 'day'; } return unit; } exports.computeDurationGreatestUnit = computeDurationGreatestUnit; // Computes the number of units (like "hours") in the given range. // Range can be a {start,end} object, separate start/end args, or a Duration. // Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling // of month-diffing logic (which tends to vary from version to version). function computeRangeAs(unit, start, end) { if (end != null) { // given start, end return end.diff(start, unit, true); } else if (moment.isDuration(start)) { // given duration return start.as(unit); } else { // given { start, end } range object return start.end.diff(start.start, unit, true); } } // Intelligently divides a range (specified by a start/end params) by a duration function divideRangeByDuration(start, end, dur) { var months; if (durationHasTime(dur)) { return (end - start) / dur; } months = dur.asMonths(); if (Math.abs(months) >= 1 && isInt(months)) { return end.diff(start, 'months', true) / months; } return end.diff(start, 'days', true) / dur.asDays(); } exports.divideRangeByDuration = divideRangeByDuration; // Intelligently divides one duration by another function divideDurationByDuration(dur1, dur2) { var months1; var months2; if (durationHasTime(dur1) || durationHasTime(dur2)) { return dur1 / dur2; } months1 = dur1.asMonths(); months2 = dur2.asMonths(); if (Math.abs(months1) >= 1 && isInt(months1) && Math.abs(months2) >= 1 && isInt(months2)) { return months1 / months2; } return dur1.asDays() / dur2.asDays(); } exports.divideDurationByDuration = divideDurationByDuration; // Intelligently multiplies a duration by a number function multiplyDuration(dur, n) { var months; if (durationHasTime(dur)) { return moment.duration(dur * n); } months = dur.asMonths(); if (Math.abs(months) >= 1 && isInt(months)) { return moment.duration({ months: months * n }); } return moment.duration({ days: dur.asDays() * n }); } exports.multiplyDuration = multiplyDuration; // Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms) function durationHasTime(dur) { return Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds()); } exports.durationHasTime = durationHasTime; function isNativeDate(input) { return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; } exports.isNativeDate = isNativeDate; // Returns a boolean about whether the given input is a time string, like "06:40:00" or "06:00" function isTimeString(str) { return typeof str === 'string' && /^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(str); } exports.isTimeString = isTimeString; /* Logging and Debug ----------------------------------------------------------------------------------------------------------------------*/ function log() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var console = window.console; if (console && console.log) { return console.log.apply(console, args); } } exports.log = log; function warn() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var console = window.console; if (console && console.warn) { return console.warn.apply(console, args); } else { return log.apply(null, args); } } exports.warn = warn; /* General Utilities ----------------------------------------------------------------------------------------------------------------------*/ var hasOwnPropMethod = {}.hasOwnProperty; // Merges an array of objects into a single object. // The second argument allows for an array of property names who's object values will be merged together. function mergeProps(propObjs, complexProps) { var dest = {}; var i; var name; var complexObjs; var j; var val; var props; if (complexProps) { for (i = 0; i < complexProps.length; i++) { name = complexProps[i]; complexObjs = []; // collect the trailing object values, stopping when a non-object is discovered for (j = propObjs.length - 1; j >= 0; j--) { val = propObjs[j][name]; if (typeof val === 'object') { complexObjs.unshift(val); } else if (val !== undefined) { dest[name] = val; // if there were no objects, this value will be used break; } } // if the trailing values were objects, use the merged value if (complexObjs.length) { dest[name] = mergeProps(complexObjs); } } } // copy values into the destination, going from last to first for (i = propObjs.length - 1; i >= 0; i--) { props = propObjs[i]; for (name in props) { if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign dest[name] = props[name]; } } } return dest; } exports.mergeProps = mergeProps; function copyOwnProps(src, dest) { for (var name_1 in src) { if (hasOwnProp(src, name_1)) { dest[name_1] = src[name_1]; } } } exports.copyOwnProps = copyOwnProps; function hasOwnProp(obj, name) { return hasOwnPropMethod.call(obj, name); } exports.hasOwnProp = hasOwnProp; function applyAll(functions, thisObj, args) { if ($.isFunction(functions)) { functions = [functions]; } if (functions) { var i = void 0; var ret = void 0; for (i = 0; i < functions.length; i++) { ret = functions[i].apply(thisObj, args) || ret; } return ret; } } exports.applyAll = applyAll; function removeMatching(array, testFunc) { var removeCnt = 0; var i = 0; while (i < array.length) { if (testFunc(array[i])) { // truthy value means *remove* array.splice(i, 1); removeCnt++; } else { i++; } } return removeCnt; } exports.removeMatching = removeMatching; function removeExact(array, exactVal) { var removeCnt = 0; var i = 0; while (i < array.length) { if (array[i] === exactVal) { array.splice(i, 1); removeCnt++; } else { i++; } } return removeCnt; } exports.removeExact = removeExact; function isArraysEqual(a0, a1) { var len = a0.length; var i; if (len == null || len !== a1.length) { // not array? or not same length? return false; } for (i = 0; i < len; i++) { if (a0[i] !== a1[i]) { return false; } } return true; } exports.isArraysEqual = isArraysEqual; function firstDefined() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } for (var i = 0; i < args.length; i++) { if (args[i] !== undefined) { return args[i]; } } } exports.firstDefined = firstDefined; function htmlEscape(s) { return (s + '').replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/'/g, ''') .replace(/"/g, '"') .replace(/\n/g, '<br>'); } exports.htmlEscape = htmlEscape; function stripHtmlEntities(text) { return text.replace(/&.*?;/g, ''); } exports.stripHtmlEntities = stripHtmlEntities; // Given a hash of CSS properties, returns a string of CSS. // Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values. function cssToStr(cssProps) { var statements = []; $.each(cssProps, function (name, val) { if (val != null) { statements.push(name + ':' + val); } }); return statements.join(';'); } exports.cssToStr = cssToStr; // Given an object hash of HTML attribute names to values, // generates a string that can be injected between < > in HTML function attrsToStr(attrs) { var parts = []; $.each(attrs, function (name, val) { if (val != null) { parts.push(name + '="' + htmlEscape(val) + '"'); } }); return parts.join(' '); } exports.attrsToStr = attrsToStr; function capitaliseFirstLetter(str) { return str.charAt(0).toUpperCase() + str.slice(1); } exports.capitaliseFirstLetter = capitaliseFirstLetter; function compareNumbers(a, b) { return a - b; } exports.compareNumbers = compareNumbers; function isInt(n) { return n % 1 === 0; } exports.isInt = isInt; // Returns a method bound to the given object context. // Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with // different contexts as identical when binding/unbinding events. function proxy(obj, methodName) { var method = obj[methodName]; return function () { return method.apply(obj, arguments); }; } exports.proxy = proxy; // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for // N milliseconds. If `immediate` is passed, trigger the function on the // leading edge, instead of the trailing. // https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714 function debounce(func, wait, immediate) { if (immediate === void 0) { immediate = false; } var timeout; var args; var context; var timestamp; var result; var later = function () { var last = +new Date() - timestamp; if (last < wait) { timeout = setTimeout(later, wait - last); } else { timeout = null; if (!immediate) { result = func.apply(context, args); context = args = null; } } }; return function () { context = this; args = arguments; timestamp = +new Date(); var callNow = immediate && !timeout; if (!timeout) { timeout = setTimeout(later, wait); } if (callNow) { result = func.apply(context, args); context = args = null; } return result; }; } exports.debounce = debounce; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var moment = __webpack_require__(0); var moment_ext_1 = __webpack_require__(11); var UnzonedRange = /** @class */ (function () { function UnzonedRange(startInput, endInput) { // TODO: move these into footprint. // Especially, doesn't make sense for null startMs/endMs. this.isStart = true; this.isEnd = true; if (moment.isMoment(startInput)) { startInput = startInput.clone().stripZone(); } if (moment.isMoment(endInput)) { endInput = endInput.clone().stripZone(); } if (startInput) { this.startMs = startInput.valueOf(); } if (endInput) { this.endMs = endInput.valueOf(); } } /* SIDEEFFECT: will mutate eventRanges. Will return a new array result. Only works for non-open-ended ranges. */ UnzonedRange.invertRanges = function (ranges, constraintRange) { var invertedRanges = []; var startMs = constraintRange.startMs; // the end of the previous range. the start of the new range var i; var dateRange; // ranges need to be in order. required for our date-walking algorithm ranges.sort(compareUnzonedRanges); for (i = 0; i < ranges.length; i++) { dateRange = ranges[i]; // add the span of time before the event (if there is any) if (dateRange.startMs > startMs) { // compare millisecond time (skip any ambig logic) invertedRanges.push(new UnzonedRange(startMs, dateRange.startMs)); } if (dateRange.endMs > startMs) { startMs = dateRange.endMs; } } // add the span of time after the last event (if there is any) if (startMs < constraintRange.endMs) { // compare millisecond time (skip any ambig logic) invertedRanges.push(new UnzonedRange(startMs, constraintRange.endMs)); } return invertedRanges; }; UnzonedRange.prototype.intersect = function (otherRange) { var startMs = this.startMs; var endMs = this.endMs; var newRange = null; if (otherRange.startMs != null) { if (startMs == null) { startMs = otherRange.startMs; } else { startMs = Math.max(startMs, otherRange.startMs); } } if (otherRange.endMs != null) { if (endMs == null) { endMs = otherRange.endMs; } else { endMs = Math.min(endMs, otherRange.endMs); } } if (startMs == null || endMs == null || startMs < endMs) { newRange = new UnzonedRange(startMs, endMs); newRange.isStart = this.isStart && startMs === this.startMs; newRange.isEnd = this.isEnd && endMs === this.endMs; } return newRange; }; UnzonedRange.prototype.intersectsWith = function (otherRange) { return (this.endMs == null || otherRange.startMs == null || this.endMs > otherRange.startMs) && (this.startMs == null || otherRange.endMs == null || this.startMs < otherRange.endMs); }; UnzonedRange.prototype.containsRange = function (innerRange) { return (this.startMs == null || (innerRange.startMs != null && innerRange.startMs >= this.startMs)) && (this.endMs == null || (innerRange.endMs != null && innerRange.endMs <= this.endMs)); }; // `date` can be a moment, a Date, or a millisecond time. UnzonedRange.prototype.containsDate = function (date) { var ms = date.valueOf(); return (this.startMs == null || ms >= this.startMs) && (this.endMs == null || ms < this.endMs); }; // If the given date is not within the given range, move it inside. // (If it's past the end, make it one millisecond before the end). // `date` can be a moment, a Date, or a millisecond time. // Returns a MS-time. UnzonedRange.prototype.constrainDate = function (date) { var ms = date.valueOf(); if (this.startMs != null && ms < this.startMs) { ms = this.startMs; } if (this.endMs != null && ms >= this.endMs) { ms = this.endMs - 1; } return ms; }; UnzonedRange.prototype.equals = function (otherRange) { return this.startMs === otherRange.startMs && this.endMs === otherRange.endMs; }; UnzonedRange.prototype.clone = function () { var range = new UnzonedRange(this.startMs, this.endMs); range.isStart = this.isStart; range.isEnd = this.isEnd; return range; }; // Returns an ambig-zoned moment from startMs. // BEWARE: returned moment is not localized. // Formatting and start-of-week will be default. UnzonedRange.prototype.getStart = function () { if (this.startMs != null) { return moment_ext_1.default.utc(this.startMs).stripZone(); } return null; }; // Returns an ambig-zoned moment from startMs. // BEWARE: returned moment is not localized. // Formatting and start-of-week will be default. UnzonedRange.prototype.getEnd = function () { if (this.endMs != null) { return moment_ext_1.default.utc(this.endMs).stripZone(); } return null; }; UnzonedRange.prototype.as = function (unit) { return moment.utc(this.endMs).diff(moment.utc(this.startMs), unit, true); }; return UnzonedRange; }()); exports.default = UnzonedRange; /* Only works for non-open-ended ranges. */ function compareUnzonedRanges(range1, range2) { return range1.startMs - range2.startMs; // earlier ranges go first } /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var ParsableModelMixin_1 = __webpack_require__(52); var Class_1 = __webpack_require__(35); var EventDefParser_1 = __webpack_require__(36); var EventSource = /** @class */ (function (_super) { tslib_1.__extends(EventSource, _super); // can we do away with calendar? at least for the abstract? // useful for buildEventDef function EventSource(calendar) { var _this = _super.call(this) || this; _this.calendar = calendar; _this.className = []; _this.uid = String(EventSource.uuid++); return _this; } /* rawInput can be any data type! */ EventSource.parse = function (rawInput, calendar) { var source = new this(calendar); if (typeof rawInput === 'object') { if (source.applyProps(rawInput)) { return source; } } return false; }; EventSource.normalizeId = function (id) { if (id) { return String(id); } return null; }; EventSource.prototype.fetch = function (start, end, timezone) { // subclasses must implement. must return a promise. }; EventSource.prototype.removeEventDefsById = function (eventDefId) { // optional for subclasses to implement }; EventSource.prototype.removeAllEventDefs = function () { // optional for subclasses to implement }; /* For compairing/matching */ EventSource.prototype.getPrimitive = function (otherSource) { // subclasses must implement }; EventSource.prototype.parseEventDefs = function (rawEventDefs) { var i; var eventDef; var eventDefs = []; for (i = 0; i < rawEventDefs.length; i++) { eventDef = this.parseEventDef(rawEventDefs[i]); if (eventDef) { eventDefs.push(eventDef); } } return eventDefs; }; EventSource.prototype.parseEventDef = function (rawInput) { var calendarTransform = this.calendar.opt('eventDataTransform'); var sourceTransform = this.eventDataTransform; if (calendarTransform) { rawInput = calendarTransform(rawInput, this.calendar); } if (sourceTransform) { rawInput = sourceTransform(rawInput, this.calendar); } return EventDefParser_1.default.parse(rawInput, this); }; EventSource.prototype.applyManualStandardProps = function (rawProps) { if (rawProps.id != null) { this.id = EventSource.normalizeId(rawProps.id); } // TODO: converge with EventDef if ($.isArray(rawProps.className)) { this.className = rawProps.className; } else if (typeof rawProps.className === 'string') { this.className = rawProps.className.split(/\s+/); } return true; }; EventSource.uuid = 0; EventSource.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps; EventSource.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps; return EventSource; }(Class_1.default)); exports.default = EventSource; ParsableModelMixin_1.default.mixInto(EventSource); // Parsing // --------------------------------------------------------------------------------------------------------------------- EventSource.defineStandardProps({ // manually process... id: false, className: false, // automatically transfer... color: true, backgroundColor: true, borderColor: true, textColor: true, editable: true, startEditable: true, durationEditable: true, rendering: true, overlap: true, constraint: true, allDayDefault: true, eventDataTransform: true }); /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { /* Utility methods for easily listening to events on another object, and more importantly, easily unlistening from them. USAGE: import { default as ListenerMixin, ListenerInterface } from './ListenerMixin' in class: listenTo: ListenerInterface['listenTo'] stopListeningTo: ListenerInterface['stopListeningTo'] after class: ListenerMixin.mixInto(TheClass) */ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var Mixin_1 = __webpack_require__(15); var guid = 0; var ListenerMixin = /** @class */ (function (_super) { tslib_1.__extends(ListenerMixin, _super); function ListenerMixin() { return _super !== null && _super.apply(this, arguments) || this; } /* Given an `other` object that has on/off methods, bind the given `callback` to an event by the given name. The `callback` will be called with the `this` context of the object that .listenTo is being called on. Can be called: .listenTo(other, eventName, callback) OR .listenTo(other, { eventName1: callback1, eventName2: callback2 }) */ ListenerMixin.prototype.listenTo = function (other, arg, callback) { if (typeof arg === 'object') { // given dictionary of callbacks for (var eventName in arg) { if (arg.hasOwnProperty(eventName)) { this.listenTo(other, eventName, arg[eventName]); } } } else if (typeof arg === 'string') { other.on(arg + '.' + this.getListenerNamespace(), // use event namespacing to identify this object $.proxy(callback, this) // always use `this` context // the usually-undesired jQuery guid behavior doesn't matter, // because we always unbind via namespace ); } }; /* Causes the current object to stop listening to events on the `other` object. `eventName` is optional. If omitted, will stop listening to ALL events on `other`. */ ListenerMixin.prototype.stopListeningTo = function (other, eventName) { other.off((eventName || '') + '.' + this.getListenerNamespace()); }; /* Returns a string, unique to this object, to be used for event namespacing */ ListenerMixin.prototype.getListenerNamespace = function () { if (this.listenerId == null) { this.listenerId = guid++; } return '_listener' + this.listenerId; }; return ListenerMixin; }(Mixin_1.default)); exports.default = ListenerMixin; /***/ }), /* 8 */, /* 9 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var EventDef_1 = __webpack_require__(37); var EventInstance_1 = __webpack_require__(53); var EventDateProfile_1 = __webpack_require__(16); var SingleEventDef = /** @class */ (function (_super) { tslib_1.__extends(SingleEventDef, _super); function SingleEventDef() { return _super !== null && _super.apply(this, arguments) || this; } /* Will receive start/end params, but will be ignored. */ SingleEventDef.prototype.buildInstances = function () { return [this.buildInstance()]; }; SingleEventDef.prototype.buildInstance = function () { return new EventInstance_1.default(this, // definition this.dateProfile); }; SingleEventDef.prototype.isAllDay = function () { return this.dateProfile.isAllDay(); }; SingleEventDef.prototype.clone = function () { var def = _super.prototype.clone.call(this); def.dateProfile = this.dateProfile; return def; }; SingleEventDef.prototype.rezone = function () { var calendar = this.source.calendar; var dateProfile = this.dateProfile; this.dateProfile = new EventDateProfile_1.default(calendar.moment(dateProfile.start), dateProfile.end ? calendar.moment(dateProfile.end) : null, calendar); }; /* NOTE: if super-method fails, should still attempt to apply */ SingleEventDef.prototype.applyManualStandardProps = function (rawProps) { var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps); var dateProfile = EventDateProfile_1.default.parse(rawProps, this.source); // returns null on failure if (dateProfile) { this.dateProfile = dateProfile; // make sure `date` shows up in the legacy event objects as-is if (rawProps.date != null) { this.miscProps.date = rawProps.date; } return superSuccess; } else { return false; } }; return SingleEventDef; }(EventDef_1.default)); exports.default = SingleEventDef; // Parsing // --------------------------------------------------------------------------------------------------------------------- SingleEventDef.defineStandardProps({ start: false, date: false, end: false, allDay: false }); /***/ }), /* 10 */, /* 11 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var moment = __webpack_require__(0); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var ambigDateOfMonthRegex = /^\s*\d{4}-\d\d$/; var ambigTimeOrZoneRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/; var newMomentProto = moment.fn; // where we will attach our new methods exports.newMomentProto = newMomentProto; var oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods exports.oldMomentProto = oldMomentProto; // tell momentjs to transfer these properties upon clone var momentProperties = moment.momentProperties; momentProperties.push('_fullCalendar'); momentProperties.push('_ambigTime'); momentProperties.push('_ambigZone'); /* Call this if you want Moment's original format method to be used */ function oldMomentFormat(mom, formatStr) { return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js } exports.oldMomentFormat = oldMomentFormat; // Creating // ------------------------------------------------------------------------------------------------- // Creates a new moment, similar to the vanilla moment(...) constructor, but with // extra features (ambiguous time, enhanced formatting). When given an existing moment, // it will function as a clone (and retain the zone of the moment). Anything else will // result in a moment in the local zone. var momentExt = function () { return makeMoment(arguments); }; exports.default = momentExt; // Sames as momentExt, but forces the resulting moment to be in the UTC timezone. momentExt.utc = function () { var mom = makeMoment(arguments, true); // Force it into UTC because makeMoment doesn't guarantee it // (if given a pre-existing moment for example) if (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone mom.utc(); } return mom; }; // Same as momentExt, but when given an ISO8601 string, the timezone offset is preserved. // ISO8601 strings with no timezone offset will become ambiguously zoned. momentExt.parseZone = function () { return makeMoment(arguments, true, true); }; // Builds an enhanced moment from args. When given an existing moment, it clones. When given a // native Date, or called with no arguments (the current time), the resulting moment will be local. // Anything else needs to be "parsed" (a string or an array), and will be affected by: // parseAsUTC - if there is no zone information, should we parse the input in UTC? // parseZone - if there is zone information, should we force the zone of the moment? function makeMoment(args, parseAsUTC, parseZone) { if (parseAsUTC === void 0) { parseAsUTC = false; } if (parseZone === void 0) { parseZone = false; } var input = args[0]; var isSingleString = args.length === 1 && typeof input === 'string'; var isAmbigTime; var isAmbigZone; var ambigMatch; var mom; if (moment.isMoment(input) || util_1.isNativeDate(input) || input === undefined) { mom = moment.apply(null, args); } else { // "parsing" is required isAmbigTime = false; isAmbigZone = false; if (isSingleString) { if (ambigDateOfMonthRegex.test(input)) { // accept strings like '2014-05', but convert to the first of the month input += '-01'; args = [input]; // for when we pass it on to moment's constructor isAmbigTime = true; isAmbigZone = true; } else if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) { isAmbigTime = !ambigMatch[5]; // no time part? isAmbigZone = true; } } else if ($.isArray(input)) { // arrays have no timezone information, so assume ambiguous zone isAmbigZone = true; } // otherwise, probably a string with a format if (parseAsUTC || isAmbigTime) { mom = moment.utc.apply(moment, args); } else { mom = moment.apply(null, args); } if (isAmbigTime) { mom._ambigTime = true; mom._ambigZone = true; // ambiguous time always means ambiguous zone } else if (parseZone) { // let's record the inputted zone somehow if (isAmbigZone) { mom._ambigZone = true; } else if (isSingleString) { mom.utcOffset(input); // if not a valid zone, will assign UTC } } } mom._fullCalendar = true; // flag for extended functionality return mom; } // Week Number // ------------------------------------------------------------------------------------------------- // Returns the week number, considering the locale's custom week number calcuation // `weeks` is an alias for `week` newMomentProto.week = newMomentProto.weeks = function (input) { var weekCalc = this._locale._fullCalendar_weekCalc; if (input == null && typeof weekCalc === 'function') { // custom function only works for getter return weekCalc(this); } else if (weekCalc === 'ISO') { return oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter } return oldMomentProto.week.apply(this, arguments); // local getter/setter }; // Time-of-day // ------------------------------------------------------------------------------------------------- // GETTER // Returns a Duration with the hours/minutes/seconds/ms values of the moment. // If the moment has an ambiguous time, a duration of 00:00 will be returned. // // SETTER // You can supply a Duration, a Moment, or a Duration-like argument. // When setting the time, and the moment has an ambiguous time, it then becomes unambiguous. newMomentProto.time = function (time) { // Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar. // `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins. if (!this._fullCalendar) { return oldMomentProto.time.apply(this, arguments); } if (time == null) { // getter return moment.duration({ hours: this.hours(), minutes: this.minutes(), seconds: this.seconds(), milliseconds: this.milliseconds() }); } else { // setter this._ambigTime = false; // mark that the moment now has a time if (!moment.isDuration(time) && !moment.isMoment(time)) { time = moment.duration(time); } // The day value should cause overflow (so 24 hours becomes 00:00:00 of next day). // Only for Duration times, not Moment times. var dayHours = 0; if (moment.isDuration(time)) { dayHours = Math.floor(time.asDays()) * 24; } // We need to set the individual fields. // Can't use startOf('day') then add duration. In case of DST at start of day. return this.hours(dayHours + time.hours()) .minutes(time.minutes()) .seconds(time.seconds()) .milliseconds(time.milliseconds()); } }; // Converts the moment to UTC, stripping out its time-of-day and timezone offset, // but preserving its YMD. A moment with a stripped time will display no time // nor timezone offset when .format() is called. newMomentProto.stripTime = function () { if (!this._ambigTime) { this.utc(true); // keepLocalTime=true (for keeping *date* value) // set time to zero this.set({ hours: 0, minutes: 0, seconds: 0, ms: 0 }); // Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(), // which clears all ambig flags. this._ambigTime = true; this._ambigZone = true; // if ambiguous time, also ambiguous timezone offset } return this; // for chaining }; // Returns if the moment has a non-ambiguous time (boolean) newMomentProto.hasTime = function () { return !this._ambigTime; }; // Timezone // ------------------------------------------------------------------------------------------------- // Converts the moment to UTC, stripping out its timezone offset, but preserving its // YMD and time-of-day. A moment with a stripped timezone offset will display no // timezone offset when .format() is called. newMomentProto.stripZone = function () { var wasAmbigTime; if (!this._ambigZone) { wasAmbigTime = this._ambigTime; this.utc(true); // keepLocalTime=true (for keeping date and time values) // the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore this._ambigTime = wasAmbigTime || false; // Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(), // which clears the ambig flags. this._ambigZone = true; } return this; // for chaining }; // Returns of the moment has a non-ambiguous timezone offset (boolean) newMomentProto.hasZone = function () { return !this._ambigZone; }; // implicitly marks a zone newMomentProto.local = function (keepLocalTime) { // for when converting from ambiguously-zoned to local, // keep the time values when converting from UTC -> local oldMomentProto.local.call(this, this._ambigZone || keepLocalTime); // ensure non-ambiguous // this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals this._ambigTime = false; this._ambigZone = false; return this; // for chaining }; // implicitly marks a zone newMomentProto.utc = function (keepLocalTime) { oldMomentProto.utc.call(this, keepLocalTime); // ensure non-ambiguous // this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals this._ambigTime = false; this._ambigZone = false; return this; }; // implicitly marks a zone (will probably get called upon .utc() and .local()) newMomentProto.utcOffset = function (tzo) { if (tzo != null) { // setter // these assignments needs to happen before the original zone method is called. // I forget why, something to do with a browser crash. this._ambigTime = false; this._ambigZone = false; } return oldMomentProto.utcOffset.apply(this, arguments); }; /***/ }), /* 12 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); /* Meant to be immutable */ var ComponentFootprint = /** @class */ (function () { function ComponentFootprint(unzonedRange, isAllDay) { this.isAllDay = false; // component can choose to ignore this this.unzonedRange = unzonedRange; this.isAllDay = isAllDay; } /* Only works for non-open-ended ranges. */ ComponentFootprint.prototype.toLegacy = function (calendar) { return { start: calendar.msToMoment(this.unzonedRange.startMs, this.isAllDay), end: calendar.msToMoment(this.unzonedRange.endMs, this.isAllDay) }; }; return ComponentFootprint; }()); exports.default = ComponentFootprint; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { /* USAGE: import { default as EmitterMixin, EmitterInterface } from './EmitterMixin' in class: on: EmitterInterface['on'] one: EmitterInterface['one'] off: EmitterInterface['off'] trigger: EmitterInterface['trigger'] triggerWith: EmitterInterface['triggerWith'] hasHandlers: EmitterInterface['hasHandlers'] after class: EmitterMixin.mixInto(TheClass) */ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var Mixin_1 = __webpack_require__(15); var EmitterMixin = /** @class */ (function (_super) { tslib_1.__extends(EmitterMixin, _super); function EmitterMixin() { return _super !== null && _super.apply(this, arguments) || this; } // jQuery-ification via $(this) allows a non-DOM object to have // the same event handling capabilities (including namespaces). EmitterMixin.prototype.on = function (types, handler) { $(this).on(types, this._prepareIntercept(handler)); return this; // for chaining }; EmitterMixin.prototype.one = function (types, handler) { $(this).one(types, this._prepareIntercept(handler)); return this; // for chaining }; EmitterMixin.prototype._prepareIntercept = function (handler) { // handlers are always called with an "event" object as their first param. // sneak the `this` context and arguments into the extra parameter object // and forward them on to the original handler. var intercept = function (ev, extra) { return handler.apply(extra.context || this, extra.args || []); }; // mimick jQuery's internal "proxy" system (risky, I know) // causing all functions with the same .guid to appear to be the same. // https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448 // this is needed for calling .off with the original non-intercept handler. if (!handler.guid) { handler.guid = $.guid++; } intercept.guid = handler.guid; return intercept; }; EmitterMixin.prototype.off = function (types, handler) { $(this).off(types, handler); return this; // for chaining }; EmitterMixin.prototype.trigger = function (types) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } // pass in "extra" info to the intercept $(this).triggerHandler(types, { args: args }); return this; // for chaining }; EmitterMixin.prototype.triggerWith = function (types, context, args) { // `triggerHandler` is less reliant on the DOM compared to `trigger`. // pass in "extra" info to the intercept. $(this).triggerHandler(types, { context: context, args: args }); return this; // for chaining }; EmitterMixin.prototype.hasHandlers = function (type) { var hash = $._data(this, 'events'); // http://blog.jquery.com/2012/08/09/jquery-1-8-released/ return hash && hash[type] && hash[type].length > 0; }; return EmitterMixin; }(Mixin_1.default)); exports.default = EmitterMixin; /***/ }), /* 14 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var Interaction = /** @class */ (function () { function Interaction(component) { this.view = component._getView(); this.component = component; } Interaction.prototype.opt = function (name) { return this.view.opt(name); }; Interaction.prototype.end = function () { // subclasses can implement }; return Interaction; }()); exports.default = Interaction; /***/ }), /* 15 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var Mixin = /** @class */ (function () { function Mixin() { } Mixin.mixInto = function (destClass) { var _this = this; Object.getOwnPropertyNames(this.prototype).forEach(function (name) { if (!destClass.prototype[name]) { // if destination class doesn't already define it destClass.prototype[name] = _this.prototype[name]; } }); }; /* will override existing methods TODO: remove! not used anymore */ Mixin.mixOver = function (destClass) { var _this = this; Object.getOwnPropertyNames(this.prototype).forEach(function (name) { destClass.prototype[name] = _this.prototype[name]; }); }; return Mixin; }()); exports.default = Mixin; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var UnzonedRange_1 = __webpack_require__(5); /* Meant to be immutable */ var EventDateProfile = /** @class */ (function () { function EventDateProfile(start, end, calendar) { this.start = start; this.end = end || null; this.unzonedRange = this.buildUnzonedRange(calendar); } /* Needs an EventSource object */ EventDateProfile.parse = function (rawProps, source) { var startInput = rawProps.start || rawProps.date; var endInput = rawProps.end; if (!startInput) { return false; } var calendar = source.calendar; var start = calendar.moment(startInput); var end = endInput ? calendar.moment(endInput) : null; var forcedAllDay = rawProps.allDay; var forceEventDuration = calendar.opt('forceEventDuration'); if (!start.isValid()) { return false; } if (forcedAllDay == null) { forcedAllDay = source.allDayDefault; if (forcedAllDay == null) { forcedAllDay = calendar.opt('allDayDefault'); } } if (forcedAllDay === true) { start.stripTime(); if (end) { end.stripTime(); } } else if (forcedAllDay === false) { if (!start.hasTime()) { start.time(0); } if (end && !end.hasTime()) { end.time(0); } } if (end && (!end.isValid() || !end.isAfter(start))) { end = null; } if (!end && forceEventDuration) { end = calendar.getDefaultEventEnd(!start.hasTime(), start); } return new EventDateProfile(start, end, calendar); }; EventDateProfile.isStandardProp = function (propName) { return propName === 'start' || propName === 'date' || propName === 'end' || propName === 'allDay'; }; EventDateProfile.prototype.isAllDay = function () { return !(this.start.hasTime() || (this.end && this.end.hasTime())); }; /* Needs a Calendar object */ EventDateProfile.prototype.buildUnzonedRange = function (calendar) { var startMs = this.start.clone().stripZone().valueOf(); var endMs = this.getEnd(calendar).stripZone().valueOf(); return new UnzonedRange_1.default(startMs, endMs); }; /* Needs a Calendar object */ EventDateProfile.prototype.getEnd = function (calendar) { return this.end ? this.end.clone() : // derive the end from the start and allDay. compute allDay if necessary calendar.getDefaultEventEnd(this.isAllDay(), this.start); }; return EventDateProfile; }()); exports.default = EventDateProfile; /***/ }), /* 17 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); var DragListener_1 = __webpack_require__(59); /* Tracks mouse movements over a component and raises events about which hit the mouse is over. ------------------------------------------------------------------------------------------------------------------------ options: - subjectEl - subjectCenter */ var HitDragListener = /** @class */ (function (_super) { tslib_1.__extends(HitDragListener, _super); function HitDragListener(component, options) { var _this = _super.call(this, options) || this; _this.component = component; return _this; } // Called when drag listening starts (but a real drag has not necessarily began). // ev might be undefined if dragging was started manually. HitDragListener.prototype.handleInteractionStart = function (ev) { var subjectEl = this.subjectEl; var subjectRect; var origPoint; var point; this.component.hitsNeeded(); this.computeScrollBounds(); // for autoscroll if (ev) { origPoint = { left: util_1.getEvX(ev), top: util_1.getEvY(ev) }; point = origPoint; // constrain the point to bounds of the element being dragged if (subjectEl) { subjectRect = util_1.getOuterRect(subjectEl); // used for centering as well point = util_1.constrainPoint(point, subjectRect); } this.origHit = this.queryHit(point.left, point.top); // treat the center of the subject as the collision point? if (subjectEl && this.options.subjectCenter) { // only consider the area the subject overlaps the hit. best for large subjects. // TODO: skip this if hit didn't supply left/right/top/bottom if (this.origHit) { subjectRect = util_1.intersectRects(this.origHit, subjectRect) || subjectRect; // in case there is no intersection } point = util_1.getRectCenter(subjectRect); } this.coordAdjust = util_1.diffPoints(point, origPoint); // point - origPoint } else { this.origHit = null; this.coordAdjust = null; } // call the super-method. do it after origHit has been computed _super.prototype.handleInteractionStart.call(this, ev); }; // Called when the actual drag has started HitDragListener.prototype.handleDragStart = function (ev) { var hit; _super.prototype.handleDragStart.call(this, ev); // might be different from this.origHit if the min-distance is large hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev)); // report the initial hit the mouse is over // especially important if no min-distance and drag starts immediately if (hit) { this.handleHitOver(hit); } }; // Called when the drag moves HitDragListener.prototype.handleDrag = function (dx, dy, ev) { var hit; _super.prototype.handleDrag.call(this, dx, dy, ev); hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev)); if (!isHitsEqual(hit, this.hit)) { // a different hit than before? if (this.hit) { this.handleHitOut(); } if (hit) { this.handleHitOver(hit); } } }; // Called when dragging has been stopped HitDragListener.prototype.handleDragEnd = function (ev) { this.handleHitDone(); _super.prototype.handleDragEnd.call(this, ev); }; // Called when a the mouse has just moved over a new hit HitDragListener.prototype.handleHitOver = function (hit) { var isOrig = isHitsEqual(hit, this.origHit); this.hit = hit; this.trigger('hitOver', this.hit, isOrig, this.origHit); }; // Called when the mouse has just moved out of a hit HitDragListener.prototype.handleHitOut = function () { if (this.hit) { this.trigger('hitOut', this.hit); this.handleHitDone(); this.hit = null; } }; // Called after a hitOut. Also called before a dragStop HitDragListener.prototype.handleHitDone = function () { if (this.hit) { this.trigger('hitDone', this.hit); } }; // Called when the interaction ends, whether there was a real drag or not HitDragListener.prototype.handleInteractionEnd = function (ev, isCancelled) { _super.prototype.handleInteractionEnd.call(this, ev, isCancelled); this.origHit = null; this.hit = null; this.component.hitsNotNeeded(); }; // Called when scrolling has stopped, whether through auto scroll, or the user scrolling HitDragListener.prototype.handleScrollEnd = function () { _super.prototype.handleScrollEnd.call(this); // hits' absolute positions will be in new places after a user's scroll. // HACK for recomputing. if (this.isDragging) { this.component.releaseHits(); this.component.prepareHits(); } }; // Gets the hit underneath the coordinates for the given mouse event HitDragListener.prototype.queryHit = function (left, top) { if (this.coordAdjust) { left += this.coordAdjust.left; top += this.coordAdjust.top; } return this.component.queryHit(left, top); }; return HitDragListener; }(DragListener_1.default)); exports.default = HitDragListener; // Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component. // Two null values will be considered equal, as two "out of the component" states are the same. function isHitsEqual(hit0, hit1) { if (!hit0 && !hit1) { return true; } if (hit0 && hit1) { return hit0.component === hit1.component && isHitPropsWithin(hit0, hit1) && isHitPropsWithin(hit1, hit0); // ensures all props are identical } return false; } // Returns true if all of subHit's non-standard properties are within superHit function isHitPropsWithin(subHit, superHit) { for (var propName in subHit) { if (!/^(component|left|right|top|bottom)$/.test(propName)) { if (subHit[propName] !== superHit[propName]) { return false; } } } return true; } /***/ }), /* 18 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); exports.version = '3.10.2'; // When introducing internal API incompatibilities (where fullcalendar plugins would break), // the minor version of the calendar should be upped (ex: 2.7.2 -> 2.8.0) // and the below integer should be incremented. exports.internalApiVersion = 12; var util_1 = __webpack_require__(4); exports.applyAll = util_1.applyAll; exports.debounce = util_1.debounce; exports.isInt = util_1.isInt; exports.htmlEscape = util_1.htmlEscape; exports.cssToStr = util_1.cssToStr; exports.proxy = util_1.proxy; exports.capitaliseFirstLetter = util_1.capitaliseFirstLetter; exports.getOuterRect = util_1.getOuterRect; exports.getClientRect = util_1.getClientRect; exports.getContentRect = util_1.getContentRect; exports.getScrollbarWidths = util_1.getScrollbarWidths; exports.preventDefault = util_1.preventDefault; exports.parseFieldSpecs = util_1.parseFieldSpecs; exports.compareByFieldSpecs = util_1.compareByFieldSpecs; exports.compareByFieldSpec = util_1.compareByFieldSpec; exports.flexibleCompare = util_1.flexibleCompare; exports.computeGreatestUnit = util_1.computeGreatestUnit; exports.divideRangeByDuration = util_1.divideRangeByDuration; exports.divideDurationByDuration = util_1.divideDurationByDuration; exports.multiplyDuration = util_1.multiplyDuration; exports.durationHasTime = util_1.durationHasTime; exports.log = util_1.log; exports.warn = util_1.warn; exports.removeExact = util_1.removeExact; exports.intersectRects = util_1.intersectRects; exports.allowSelection = util_1.allowSelection; exports.attrsToStr = util_1.attrsToStr; exports.compareNumbers = util_1.compareNumbers; exports.compensateScroll = util_1.compensateScroll; exports.computeDurationGreatestUnit = util_1.computeDurationGreatestUnit; exports.constrainPoint = util_1.constrainPoint; exports.copyOwnProps = util_1.copyOwnProps; exports.diffByUnit = util_1.diffByUnit; exports.diffDay = util_1.diffDay; exports.diffDayTime = util_1.diffDayTime; exports.diffPoints = util_1.diffPoints; exports.disableCursor = util_1.disableCursor; exports.distributeHeight = util_1.distributeHeight; exports.enableCursor = util_1.enableCursor; exports.firstDefined = util_1.firstDefined; exports.getEvIsTouch = util_1.getEvIsTouch; exports.getEvX = util_1.getEvX; exports.getEvY = util_1.getEvY; exports.getRectCenter = util_1.getRectCenter; exports.getScrollParent = util_1.getScrollParent; exports.hasOwnProp = util_1.hasOwnProp; exports.isArraysEqual = util_1.isArraysEqual; exports.isNativeDate = util_1.isNativeDate; exports.isPrimaryMouseButton = util_1.isPrimaryMouseButton; exports.isTimeString = util_1.isTimeString; exports.matchCellWidths = util_1.matchCellWidths; exports.mergeProps = util_1.mergeProps; exports.preventSelection = util_1.preventSelection; exports.removeMatching = util_1.removeMatching; exports.stripHtmlEntities = util_1.stripHtmlEntities; exports.subtractInnerElHeight = util_1.subtractInnerElHeight; exports.uncompensateScroll = util_1.uncompensateScroll; exports.undistributeHeight = util_1.undistributeHeight; exports.dayIDs = util_1.dayIDs; exports.unitsDesc = util_1.unitsDesc; var date_formatting_1 = __webpack_require__(49); exports.formatDate = date_formatting_1.formatDate; exports.formatRange = date_formatting_1.formatRange; exports.queryMostGranularFormatUnit = date_formatting_1.queryMostGranularFormatUnit; var locale_1 = __webpack_require__(32); exports.datepickerLocale = locale_1.datepickerLocale; exports.locale = locale_1.locale; exports.getMomentLocaleData = locale_1.getMomentLocaleData; exports.populateInstanceComputableOptions = locale_1.populateInstanceComputableOptions; var util_2 = __webpack_require__(19); exports.eventDefsToEventInstances = util_2.eventDefsToEventInstances; exports.eventFootprintToComponentFootprint = util_2.eventFootprintToComponentFootprint; exports.eventInstanceToEventRange = util_2.eventInstanceToEventRange; exports.eventInstanceToUnzonedRange = util_2.eventInstanceToUnzonedRange; exports.eventRangeToEventFootprint = util_2.eventRangeToEventFootprint; var moment_ext_1 = __webpack_require__(11); exports.moment = moment_ext_1.default; var EmitterMixin_1 = __webpack_require__(13); exports.EmitterMixin = EmitterMixin_1.default; var ListenerMixin_1 = __webpack_require__(7); exports.ListenerMixin = ListenerMixin_1.default; var Model_1 = __webpack_require__(51); exports.Model = Model_1.default; var Constraints_1 = __webpack_require__(217); exports.Constraints = Constraints_1.default; var DateProfileGenerator_1 = __webpack_require__(55); exports.DateProfileGenerator = DateProfileGenerator_1.default; var UnzonedRange_1 = __webpack_require__(5); exports.UnzonedRange = UnzonedRange_1.default; var ComponentFootprint_1 = __webpack_require__(12); exports.ComponentFootprint = ComponentFootprint_1.default; var BusinessHourGenerator_1 = __webpack_require__(218); exports.BusinessHourGenerator = BusinessHourGenerator_1.default; var EventPeriod_1 = __webpack_require__(219); exports.EventPeriod = EventPeriod_1.default; var EventManager_1 = __webpack_require__(220); exports.EventManager = EventManager_1.default; var EventDef_1 = __webpack_require__(37); exports.EventDef = EventDef_1.default; var EventDefMutation_1 = __webpack_require__(39); exports.EventDefMutation = EventDefMutation_1.default; var EventDefParser_1 = __webpack_require__(36); exports.EventDefParser = EventDefParser_1.default; var EventInstance_1 = __webpack_require__(53); exports.EventInstance = EventInstance_1.default; var EventRange_1 = __webpack_require__(50); exports.EventRange = EventRange_1.default; var RecurringEventDef_1 = __webpack_require__(54); exports.RecurringEventDef = RecurringEventDef_1.default; var SingleEventDef_1 = __webpack_require__(9); exports.SingleEventDef = SingleEventDef_1.default; var EventDefDateMutation_1 = __webpack_require__(40); exports.EventDefDateMutation = EventDefDateMutation_1.default; var EventDateProfile_1 = __webpack_require__(16); exports.EventDateProfile = EventDateProfile_1.default; var EventSourceParser_1 = __webpack_require__(38); exports.EventSourceParser = EventSourceParser_1.default; var EventSource_1 = __webpack_require__(6); exports.EventSource = EventSource_1.default; var ThemeRegistry_1 = __webpack_require__(57); exports.defineThemeSystem = ThemeRegistry_1.defineThemeSystem; exports.getThemeSystemClass = ThemeRegistry_1.getThemeSystemClass; var EventInstanceGroup_1 = __webpack_require__(20); exports.EventInstanceGroup = EventInstanceGroup_1.default; var ArrayEventSource_1 = __webpack_require__(56); exports.ArrayEventSource = ArrayEventSource_1.default; var FuncEventSource_1 = __webpack_require__(223); exports.FuncEventSource = FuncEventSource_1.default; var JsonFeedEventSource_1 = __webpack_require__(224); exports.JsonFeedEventSource = JsonFeedEventSource_1.default; var EventFootprint_1 = __webpack_require__(34); exports.EventFootprint = EventFootprint_1.default; var Class_1 = __webpack_require__(35); exports.Class = Class_1.default; var Mixin_1 = __webpack_require__(15); exports.Mixin = Mixin_1.default; var CoordCache_1 = __webpack_require__(58); exports.CoordCache = CoordCache_1.default; var Iterator_1 = __webpack_require__(225); exports.Iterator = Iterator_1.default; var DragListener_1 = __webpack_require__(59); exports.DragListener = DragListener_1.default; var HitDragListener_1 = __webpack_require__(17); exports.HitDragListener = HitDragListener_1.default; var MouseFollower_1 = __webpack_require__(226); exports.MouseFollower = MouseFollower_1.default; var ParsableModelMixin_1 = __webpack_require__(52); exports.ParsableModelMixin = ParsableModelMixin_1.default; var Popover_1 = __webpack_require__(227); exports.Popover = Popover_1.default; var Promise_1 = __webpack_require__(21); exports.Promise = Promise_1.default; var TaskQueue_1 = __webpack_require__(228); exports.TaskQueue = TaskQueue_1.default; var RenderQueue_1 = __webpack_require__(229); exports.RenderQueue = RenderQueue_1.default; var Scroller_1 = __webpack_require__(41); exports.Scroller = Scroller_1.default; var Theme_1 = __webpack_require__(22); exports.Theme = Theme_1.default; var Component_1 = __webpack_require__(230); exports.Component = Component_1.default; var DateComponent_1 = __webpack_require__(231); exports.DateComponent = DateComponent_1.default; var InteractiveDateComponent_1 = __webpack_require__(42); exports.InteractiveDateComponent = InteractiveDateComponent_1.default; var Calendar_1 = __webpack_require__(232); exports.Calendar = Calendar_1.default; var View_1 = __webpack_require__(43); exports.View = View_1.default; var ViewRegistry_1 = __webpack_require__(24); exports.defineView = ViewRegistry_1.defineView; exports.getViewConfig = ViewRegistry_1.getViewConfig; var DayTableMixin_1 = __webpack_require__(60); exports.DayTableMixin = DayTableMixin_1.default; var BusinessHourRenderer_1 = __webpack_require__(61); exports.BusinessHourRenderer = BusinessHourRenderer_1.default; var EventRenderer_1 = __webpack_require__(44); exports.EventRenderer = EventRenderer_1.default; var FillRenderer_1 = __webpack_require__(62); exports.FillRenderer = FillRenderer_1.default; var HelperRenderer_1 = __webpack_require__(63); exports.HelperRenderer = HelperRenderer_1.default; var ExternalDropping_1 = __webpack_require__(233); exports.ExternalDropping = ExternalDropping_1.default; var EventResizing_1 = __webpack_require__(234); exports.EventResizing = EventResizing_1.default; var EventPointing_1 = __webpack_require__(64); exports.EventPointing = EventPointing_1.default; var EventDragging_1 = __webpack_require__(235); exports.EventDragging = EventDragging_1.default; var DateSelecting_1 = __webpack_require__(236); exports.DateSelecting = DateSelecting_1.default; var DateClicking_1 = __webpack_require__(237); exports.DateClicking = DateClicking_1.default; var Interaction_1 = __webpack_require__(14); exports.Interaction = Interaction_1.default; var StandardInteractionsMixin_1 = __webpack_require__(65); exports.StandardInteractionsMixin = StandardInteractionsMixin_1.default; var AgendaView_1 = __webpack_require__(238); exports.AgendaView = AgendaView_1.default; var TimeGrid_1 = __webpack_require__(239); exports.TimeGrid = TimeGrid_1.default; var TimeGridEventRenderer_1 = __webpack_require__(240); exports.TimeGridEventRenderer = TimeGridEventRenderer_1.default; var TimeGridFillRenderer_1 = __webpack_require__(242); exports.TimeGridFillRenderer = TimeGridFillRenderer_1.default; var TimeGridHelperRenderer_1 = __webpack_require__(241); exports.TimeGridHelperRenderer = TimeGridHelperRenderer_1.default; var DayGrid_1 = __webpack_require__(66); exports.DayGrid = DayGrid_1.default; var DayGridEventRenderer_1 = __webpack_require__(243); exports.DayGridEventRenderer = DayGridEventRenderer_1.default; var DayGridFillRenderer_1 = __webpack_require__(245); exports.DayGridFillRenderer = DayGridFillRenderer_1.default; var DayGridHelperRenderer_1 = __webpack_require__(244); exports.DayGridHelperRenderer = DayGridHelperRenderer_1.default; var BasicView_1 = __webpack_require__(67); exports.BasicView = BasicView_1.default; var BasicViewDateProfileGenerator_1 = __webpack_require__(68); exports.BasicViewDateProfileGenerator = BasicViewDateProfileGenerator_1.default; var MonthView_1 = __webpack_require__(246); exports.MonthView = MonthView_1.default; var MonthViewDateProfileGenerator_1 = __webpack_require__(247); exports.MonthViewDateProfileGenerator = MonthViewDateProfileGenerator_1.default; var ListView_1 = __webpack_require__(248); exports.ListView = ListView_1.default; var ListEventPointing_1 = __webpack_require__(250); exports.ListEventPointing = ListEventPointing_1.default; var ListEventRenderer_1 = __webpack_require__(249); exports.ListEventRenderer = ListEventRenderer_1.default; /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var EventRange_1 = __webpack_require__(50); var EventFootprint_1 = __webpack_require__(34); var ComponentFootprint_1 = __webpack_require__(12); function eventDefsToEventInstances(eventDefs, unzonedRange) { var eventInstances = []; var i; for (i = 0; i < eventDefs.length; i++) { eventInstances.push.apply(eventInstances, // append eventDefs[i].buildInstances(unzonedRange)); } return eventInstances; } exports.eventDefsToEventInstances = eventDefsToEventInstances; function eventInstanceToEventRange(eventInstance) { return new EventRange_1.default(eventInstance.dateProfile.unzonedRange, eventInstance.def, eventInstance); } exports.eventInstanceToEventRange = eventInstanceToEventRange; function eventRangeToEventFootprint(eventRange) { return new EventFootprint_1.default(new ComponentFootprint_1.default(eventRange.unzonedRange, eventRange.eventDef.isAllDay()), eventRange.eventDef, eventRange.eventInstance // might not exist ); } exports.eventRangeToEventFootprint = eventRangeToEventFootprint; function eventInstanceToUnzonedRange(eventInstance) { return eventInstance.dateProfile.unzonedRange; } exports.eventInstanceToUnzonedRange = eventInstanceToUnzonedRange; function eventFootprintToComponentFootprint(eventFootprint) { return eventFootprint.componentFootprint; } exports.eventFootprintToComponentFootprint = eventFootprintToComponentFootprint; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var UnzonedRange_1 = __webpack_require__(5); var util_1 = __webpack_require__(19); var EventRange_1 = __webpack_require__(50); /* It's expected that there will be at least one EventInstance, OR that an explicitEventDef is assigned. */ var EventInstanceGroup = /** @class */ (function () { function EventInstanceGroup(eventInstances) { this.eventInstances = eventInstances || []; } EventInstanceGroup.prototype.getAllEventRanges = function (constraintRange) { if (constraintRange) { return this.sliceNormalRenderRanges(constraintRange); } else { return this.eventInstances.map(util_1.eventInstanceToEventRange); } }; EventInstanceGroup.prototype.sliceRenderRanges = function (constraintRange) { if (this.isInverse()) { return this.sliceInverseRenderRanges(constraintRange); } else { return this.sliceNormalRenderRanges(constraintRange); } }; EventInstanceGroup.prototype.sliceNormalRenderRanges = function (constraintRange) { var eventInstances = this.eventInstances; var i; var eventInstance; var slicedRange; var slicedEventRanges = []; for (i = 0; i < eventInstances.length; i++) { eventInstance = eventInstances[i]; slicedRange = eventInstance.dateProfile.unzonedRange.intersect(constraintRange); if (slicedRange) { slicedEventRanges.push(new EventRange_1.default(slicedRange, eventInstance.def, eventInstance)); } } return slicedEventRanges; }; EventInstanceGroup.prototype.sliceInverseRenderRanges = function (constraintRange) { var unzonedRanges = this.eventInstances.map(util_1.eventInstanceToUnzonedRange); var ownerDef = this.getEventDef(); unzonedRanges = UnzonedRange_1.default.invertRanges(unzonedRanges, constraintRange); return unzonedRanges.map(function (unzonedRange) { return new EventRange_1.default(unzonedRange, ownerDef); // don't give an EventInstance }); }; EventInstanceGroup.prototype.isInverse = function () { return this.getEventDef().hasInverseRendering(); }; EventInstanceGroup.prototype.getEventDef = function () { return this.explicitEventDef || this.eventInstances[0].def; }; return EventInstanceGroup; }()); exports.default = EventInstanceGroup; /***/ }), /* 21 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var PromiseStub = { construct: function (executor) { var deferred = $.Deferred(); var promise = deferred.promise(); if (typeof executor === 'function') { executor(function (val) { deferred.resolve(val); attachImmediatelyResolvingThen(promise, val); }, function () { deferred.reject(); attachImmediatelyRejectingThen(promise); }); } return promise; }, resolve: function (val) { var deferred = $.Deferred().resolve(val); var promise = deferred.promise(); attachImmediatelyResolvingThen(promise, val); return promise; }, reject: function () { var deferred = $.Deferred().reject(); var promise = deferred.promise(); attachImmediatelyRejectingThen(promise); return promise; } }; exports.default = PromiseStub; function attachImmediatelyResolvingThen(promise, val) { promise.then = function (onResolve) { if (typeof onResolve === 'function') { return PromiseStub.resolve(onResolve(val)); } return promise; }; } function attachImmediatelyRejectingThen(promise) { promise.then = function (onResolve, onReject) { if (typeof onReject === 'function') { onReject(); } return promise; }; } /***/ }), /* 22 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var Theme = /** @class */ (function () { function Theme(optionsManager) { this.optionsManager = optionsManager; this.processIconOverride(); } Theme.prototype.processIconOverride = function () { if (this.iconOverrideOption) { this.setIconOverride(this.optionsManager.get(this.iconOverrideOption)); } }; Theme.prototype.setIconOverride = function (iconOverrideHash) { var iconClassesCopy; var buttonName; if ($.isPlainObject(iconOverrideHash)) { iconClassesCopy = $.extend({}, this.iconClasses); for (buttonName in iconOverrideHash) { iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]); } this.iconClasses = iconClassesCopy; } else if (iconOverrideHash === false) { this.iconClasses = {}; } }; Theme.prototype.applyIconOverridePrefix = function (className) { var prefix = this.iconOverridePrefix; if (prefix && className.indexOf(prefix) !== 0) { // if not already present className = prefix + className; } return className; }; Theme.prototype.getClass = function (key) { return this.classes[key] || ''; }; Theme.prototype.getIconClass = function (buttonName) { var className = this.iconClasses[buttonName]; if (className) { return this.baseIconClass + ' ' + className; } return ''; }; Theme.prototype.getCustomButtonIconClass = function (customButtonProps) { var className; if (this.iconOverrideCustomButtonOption) { className = customButtonProps[this.iconOverrideCustomButtonOption]; if (className) { return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className); } } return ''; }; return Theme; }()); exports.default = Theme; Theme.prototype.classes = {}; Theme.prototype.iconClasses = {}; Theme.prototype.baseIconClass = ''; Theme.prototype.iconOverridePrefix = ''; /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var exportHooks = __webpack_require__(18); var EmitterMixin_1 = __webpack_require__(13); var ListenerMixin_1 = __webpack_require__(7); exportHooks.touchMouseIgnoreWait = 500; var globalEmitter = null; var neededCount = 0; /* Listens to document and window-level user-interaction events, like touch events and mouse events, and fires these events as-is to whoever is observing a GlobalEmitter. Best when used as a singleton via GlobalEmitter.get() Normalizes mouse/touch events. For examples: - ignores the the simulated mouse events that happen after a quick tap: mousemove+mousedown+mouseup+click - compensates for various buggy scenarios where a touchend does not fire */ var GlobalEmitter = /** @class */ (function () { function GlobalEmitter() { this.isTouching = false; this.mouseIgnoreDepth = 0; } // gets the singleton GlobalEmitter.get = function () { if (!globalEmitter) { globalEmitter = new GlobalEmitter(); globalEmitter.bind(); } return globalEmitter; }; // called when an object knows it will need a GlobalEmitter in the near future. GlobalEmitter.needed = function () { GlobalEmitter.get(); // ensures globalEmitter neededCount++; }; // called when the object that originally called needed() doesn't need a GlobalEmitter anymore. GlobalEmitter.unneeded = function () { neededCount--; if (!neededCount) { // nobody else needs it globalEmitter.unbind(); globalEmitter = null; } }; GlobalEmitter.prototype.bind = function () { var _this = this; this.listenTo($(document), { touchstart: this.handleTouchStart, touchcancel: this.handleTouchCancel, touchend: this.handleTouchEnd, mousedown: this.handleMouseDown, mousemove: this.handleMouseMove, mouseup: this.handleMouseUp, click: this.handleClick, selectstart: this.handleSelectStart, contextmenu: this.handleContextMenu }); // because we need to call preventDefault // because https://www.chromestatus.com/features/5093566007214080 // TODO: investigate performance because this is a global handler window.addEventListener('touchmove', this.handleTouchMoveProxy = function (ev) { _this.handleTouchMove($.Event(ev)); }, { passive: false } // allows preventDefault() ); // attach a handler to get called when ANY scroll action happens on the page. // this was impossible to do with normal on/off because 'scroll' doesn't bubble. // http://stackoverflow.com/a/32954565/96342 window.addEventListener('scroll', this.handleScrollProxy = function (ev) { _this.handleScroll($.Event(ev)); }, true // useCapture ); }; GlobalEmitter.prototype.unbind = function () { this.stopListeningTo($(document)); window.removeEventListener('touchmove', this.handleTouchMoveProxy, { passive: false } // use same options as addEventListener ); window.removeEventListener('scroll', this.handleScrollProxy, true // useCapture ); }; // Touch Handlers // ----------------------------------------------------------------------------------------------------------------- GlobalEmitter.prototype.handleTouchStart = function (ev) { // if a previous touch interaction never ended with a touchend, then implicitly end it, // but since a new touch interaction is about to begin, don't start the mouse ignore period. this.stopTouch(ev, true); // skipMouseIgnore=true this.isTouching = true; this.trigger('touchstart', ev); }; GlobalEmitter.prototype.handleTouchMove = function (ev) { if (this.isTouching) { this.trigger('touchmove', ev); } }; GlobalEmitter.prototype.handleTouchCancel = function (ev) { if (this.isTouching) { this.trigger('touchcancel', ev); // Have touchcancel fire an artificial touchend. That way, handlers won't need to listen to both. // If touchend fires later, it won't have any effect b/c isTouching will be false. this.stopTouch(ev); } }; GlobalEmitter.prototype.handleTouchEnd = function (ev) { this.stopTouch(ev); }; // Mouse Handlers // ----------------------------------------------------------------------------------------------------------------- GlobalEmitter.prototype.handleMouseDown = function (ev) { if (!this.shouldIgnoreMouse()) { this.trigger('mousedown', ev); } }; GlobalEmitter.prototype.handleMouseMove = function (ev) { if (!this.shouldIgnoreMouse()) { this.trigger('mousemove', ev); } }; GlobalEmitter.prototype.handleMouseUp = function (ev) { if (!this.shouldIgnoreMouse()) { this.trigger('mouseup', ev); } }; GlobalEmitter.prototype.handleClick = function (ev) { if (!this.shouldIgnoreMouse()) { this.trigger('click', ev); } }; // Misc Handlers // ----------------------------------------------------------------------------------------------------------------- GlobalEmitter.prototype.handleSelectStart = function (ev) { this.trigger('selectstart', ev); }; GlobalEmitter.prototype.handleContextMenu = function (ev) { this.trigger('contextmenu', ev); }; GlobalEmitter.prototype.handleScroll = function (ev) { this.trigger('scroll', ev); }; // Utils // ----------------------------------------------------------------------------------------------------------------- GlobalEmitter.prototype.stopTouch = function (ev, skipMouseIgnore) { if (skipMouseIgnore === void 0) { skipMouseIgnore = false; } if (this.isTouching) { this.isTouching = false; this.trigger('touchend', ev); if (!skipMouseIgnore) { this.startTouchMouseIgnore(); } } }; GlobalEmitter.prototype.startTouchMouseIgnore = function () { var _this = this; var wait = exportHooks.touchMouseIgnoreWait; if (wait) { this.mouseIgnoreDepth++; setTimeout(function () { _this.mouseIgnoreDepth--; }, wait); } }; GlobalEmitter.prototype.shouldIgnoreMouse = function () { return this.isTouching || Boolean(this.mouseIgnoreDepth); }; return GlobalEmitter; }()); exports.default = GlobalEmitter; ListenerMixin_1.default.mixInto(GlobalEmitter); EmitterMixin_1.default.mixInto(GlobalEmitter); /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var exportHooks = __webpack_require__(18); exports.viewHash = {}; exportHooks.views = exports.viewHash; function defineView(viewName, viewConfig) { exports.viewHash[viewName] = viewConfig; } exports.defineView = defineView; function getViewConfig(viewName) { return exports.viewHash[viewName]; } exports.getViewConfig = getViewConfig; /***/ }), /* 25 */, /* 26 */, /* 27 */, /* 28 */, /* 29 */, /* 30 */, /* 31 */, /* 32 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var moment = __webpack_require__(0); var exportHooks = __webpack_require__(18); var options_1 = __webpack_require__(33); var util_1 = __webpack_require__(4); exports.localeOptionHash = {}; exportHooks.locales = exports.localeOptionHash; // NOTE: can't guarantee any of these computations will run because not every locale has datepicker // configs, so make sure there are English fallbacks for these in the defaults file. var dpComputableOptions = { buttonText: function (dpOptions) { return { // the translations sometimes wrongly contain HTML entities prev: util_1.stripHtmlEntities(dpOptions.prevText), next: util_1.stripHtmlEntities(dpOptions.nextText), today: util_1.stripHtmlEntities(dpOptions.currentText) }; }, // Produces format strings like "MMMM YYYY" -> "September 2014" monthYearFormat: function (dpOptions) { return dpOptions.showMonthAfterYear ? 'YYYY[' + dpOptions.yearSuffix + '] MMMM' : 'MMMM YYYY[' + dpOptions.yearSuffix + ']'; } }; var momComputableOptions = { // Produces format strings like "ddd M/D" -> "Fri 9/15" dayOfMonthFormat: function (momOptions, fcOptions) { var format = momOptions.longDateFormat('l'); // for the format like "M/D/YYYY" // strip the year off the edge, as well as other misc non-whitespace chars format = format.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g, ''); if (fcOptions.isRTL) { format += ' ddd'; // for RTL, add day-of-week to end } else { format = 'ddd ' + format; // for LTR, add day-of-week to beginning } return format; }, // Produces format strings like "h:mma" -> "6:00pm" mediumTimeFormat: function (momOptions) { return momOptions.longDateFormat('LT') .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand }, // Produces format strings like "h(:mm)a" -> "6pm" / "6:30pm" smallTimeFormat: function (momOptions) { return momOptions.longDateFormat('LT') .replace(':mm', '(:mm)') .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand }, // Produces format strings like "h(:mm)t" -> "6p" / "6:30p" extraSmallTimeFormat: function (momOptions) { return momOptions.longDateFormat('LT') .replace(':mm', '(:mm)') .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales .replace(/\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand }, // Produces format strings like "ha" / "H" -> "6pm" / "18" hourFormat: function (momOptions) { return momOptions.longDateFormat('LT') .replace(':mm', '') .replace(/(\Wmm)$/, '') // like above, but for foreign locales .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand }, // Produces format strings like "h:mm" -> "6:30" (with no AM/PM) noMeridiemTimeFormat: function (momOptions) { return momOptions.longDateFormat('LT') .replace(/\s*a$/i, ''); // remove trailing AM/PM } }; // options that should be computed off live calendar options (considers override options) // TODO: best place for this? related to locale? // TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it var instanceComputableOptions = { // Produces format strings for results like "Mo 16" smallDayDateFormat: function (options) { return options.isRTL ? 'D dd' : 'dd D'; }, // Produces format strings for results like "Wk 5" weekFormat: function (options) { return options.isRTL ? 'w[ ' + options.weekNumberTitle + ']' : '[' + options.weekNumberTitle + ' ]w'; }, // Produces format strings for results like "Wk5" smallWeekFormat: function (options) { return options.isRTL ? 'w[' + options.weekNumberTitle + ']' : '[' + options.weekNumberTitle + ']w'; } }; // TODO: make these computable properties in optionsManager function populateInstanceComputableOptions(options) { $.each(instanceComputableOptions, function (name, func) { if (options[name] == null) { options[name] = func(options); } }); } exports.populateInstanceComputableOptions = populateInstanceComputableOptions; // Initialize jQuery UI datepicker translations while using some of the translations // Will set this as the default locales for datepicker. function datepickerLocale(localeCode, dpLocaleCode, dpOptions) { // get the FullCalendar internal option hash for this locale. create if necessary var fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {}); // transfer some simple options from datepicker to fc fcOptions.isRTL = dpOptions.isRTL; fcOptions.weekNumberTitle = dpOptions.weekHeader; // compute some more complex options from datepicker $.each(dpComputableOptions, function (name, func) { fcOptions[name] = func(dpOptions); }); var jqDatePicker = $.datepicker; // is jQuery UI Datepicker is on the page? if (jqDatePicker) { // Register the locale data. // FullCalendar and MomentJS use locale codes like "pt-br" but Datepicker // does it like "pt-BR" or if it doesn't have the locale, maybe just "pt". // Make an alias so the locale can be referenced either way. jqDatePicker.regional[dpLocaleCode] = jqDatePicker.regional[localeCode] = // alias dpOptions; // Alias 'en' to the default locale data. Do this every time. jqDatePicker.regional.en = jqDatePicker.regional['']; // Set as Datepicker's global defaults. jqDatePicker.setDefaults(dpOptions); } } exports.datepickerLocale = datepickerLocale; // Sets FullCalendar-specific translations. Will set the locales as the global default. function locale(localeCode, newFcOptions) { var fcOptions; var momOptions; // get the FullCalendar internal option hash for this locale. create if necessary fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {}); // provided new options for this locales? merge them in if (newFcOptions) { fcOptions = exports.localeOptionHash[localeCode] = options_1.mergeOptions([fcOptions, newFcOptions]); } // compute locale options that weren't defined. // always do this. newFcOptions can be undefined when initializing from i18n file, // so no way to tell if this is an initialization or a default-setting. momOptions = getMomentLocaleData(localeCode); // will fall back to en $.each(momComputableOptions, function (name, func) { if (fcOptions[name] == null) { fcOptions[name] = (func)(momOptions, fcOptions); } }); // set it as the default locale for FullCalendar options_1.globalDefaults.locale = localeCode; } exports.locale = locale; // Returns moment's internal locale data. If doesn't exist, returns English. function getMomentLocaleData(localeCode) { return moment.localeData(localeCode) || moment.localeData('en'); } exports.getMomentLocaleData = getMomentLocaleData; // Initialize English by forcing computation of moment-derived options. // Also, sets it as the default. locale('en', options_1.englishDefaults); /***/ }), /* 33 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var util_1 = __webpack_require__(4); exports.globalDefaults = { titleRangeSeparator: ' \u2013 ', monthYearFormat: 'MMMM YYYY', defaultTimedEventDuration: '02:00:00', defaultAllDayEventDuration: { days: 1 }, forceEventDuration: false, nextDayThreshold: '09:00:00', // display columnHeader: true, defaultView: 'month', aspectRatio: 1.35, header: { left: 'title', center: '', right: 'today prev,next' }, weekends: true, weekNumbers: false, weekNumberTitle: 'W', weekNumberCalculation: 'local', // editable: false, // nowIndicator: false, scrollTime: '06:00:00', minTime: '00:00:00', maxTime: '24:00:00', showNonCurrentDates: true, // event ajax lazyFetching: true, startParam: 'start', endParam: 'end', timezoneParam: 'timezone', timezone: false, // allDayDefault: undefined, // locale locale: null, isRTL: false, buttonText: { prev: 'prev', next: 'next', prevYear: 'prev year', nextYear: 'next year', year: 'year', today: 'today', month: 'month', week: 'week', day: 'day' }, // buttonIcons: null, allDayText: 'all-day', // allows setting a min-height to the event segment to prevent short events overlapping each other agendaEventMinHeight: 0, // jquery-ui theming theme: false, // themeButtonIcons: null, // eventResizableFromStart: false, dragOpacity: .75, dragRevertDuration: 500, dragScroll: true, // selectable: false, unselectAuto: true, // selectMinDistance: 0, dropAccept: '*', eventOrder: 'title', // eventRenderWait: null, eventLimit: false, eventLimitText: 'more', eventLimitClick: 'popover', dayPopoverFormat: 'LL', handleWindowResize: true, windowResizeDelay: 100, longPressDelay: 1000 }; exports.englishDefaults = { dayPopoverFormat: 'dddd, MMMM D' }; exports.rtlDefaults = { header: { left: 'next,prev today', center: '', right: 'title' }, buttonIcons: { prev: 'right-single-arrow', next: 'left-single-arrow', prevYear: 'right-double-arrow', nextYear: 'left-double-arrow' }, themeButtonIcons: { prev: 'circle-triangle-e', next: 'circle-triangle-w', nextYear: 'seek-prev', prevYear: 'seek-next' } }; var complexOptions = [ 'header', 'footer', 'buttonText', 'buttonIcons', 'themeButtonIcons' ]; // Merges an array of option objects into a single object function mergeOptions(optionObjs) { return util_1.mergeProps(optionObjs, complexOptions); } exports.mergeOptions = mergeOptions; /***/ }), /* 34 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var EventFootprint = /** @class */ (function () { function EventFootprint(componentFootprint, eventDef, eventInstance) { this.componentFootprint = componentFootprint; this.eventDef = eventDef; if (eventInstance) { this.eventInstance = eventInstance; } } EventFootprint.prototype.getEventLegacy = function () { return (this.eventInstance || this.eventDef).toLegacy(); }; return EventFootprint; }()); exports.default = EventFootprint; /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); // Class that all other classes will inherit from var Class = /** @class */ (function () { function Class() { } // Called on a class to create a subclass. // LIMITATION: cannot provide a constructor! Class.extend = function (members) { var SubClass = /** @class */ (function (_super) { tslib_1.__extends(SubClass, _super); function SubClass() { return _super !== null && _super.apply(this, arguments) || this; } return SubClass; }(this)); util_1.copyOwnProps(members, SubClass.prototype); return SubClass; }; // Adds new member variables/methods to the class's prototype. // Can be called with another class, or a plain object hash containing new members. Class.mixin = function (members) { util_1.copyOwnProps(members, this.prototype); }; return Class; }()); exports.default = Class; /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var moment = __webpack_require__(0); var util_1 = __webpack_require__(4); var SingleEventDef_1 = __webpack_require__(9); var RecurringEventDef_1 = __webpack_require__(54); exports.default = { parse: function (eventInput, source) { if (util_1.isTimeString(eventInput.start) || moment.isDuration(eventInput.start) || util_1.isTimeString(eventInput.end) || moment.isDuration(eventInput.end)) { return RecurringEventDef_1.default.parse(eventInput, source); } else { return SingleEventDef_1.default.parse(eventInput, source); } } }; /***/ }), /* 37 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var ParsableModelMixin_1 = __webpack_require__(52); var EventDef = /** @class */ (function () { function EventDef(source) { this.source = source; this.className = []; this.miscProps = {}; } EventDef.parse = function (rawInput, source) { var def = new this(source); if (def.applyProps(rawInput)) { return def; } return false; }; EventDef.normalizeId = function (id) { return String(id); }; EventDef.generateId = function () { return '_fc' + (EventDef.uuid++); }; EventDef.prototype.clone = function () { var copy = new this.constructor(this.source); copy.id = this.id; copy.rawId = this.rawId; copy.uid = this.uid; // not really unique anymore :( EventDef.copyVerbatimStandardProps(this, copy); copy.className = this.className.slice(); // copy copy.miscProps = $.extend({}, this.miscProps); return copy; }; EventDef.prototype.hasInverseRendering = function () { return this.getRendering() === 'inverse-background'; }; EventDef.prototype.hasBgRendering = function () { var rendering = this.getRendering(); return rendering === 'inverse-background' || rendering === 'background'; }; EventDef.prototype.getRendering = function () { if (this.rendering != null) { return this.rendering; } return this.source.rendering; }; EventDef.prototype.getConstraint = function () { if (this.constraint != null) { return this.constraint; } if (this.source.constraint != null) { return this.source.constraint; } return this.source.calendar.opt('eventConstraint'); // what about View option? }; EventDef.prototype.getOverlap = function () { if (this.overlap != null) { return this.overlap; } if (this.source.overlap != null) { return this.source.overlap; } return this.source.calendar.opt('eventOverlap'); // what about View option? }; EventDef.prototype.isStartExplicitlyEditable = function () { if (this.startEditable != null) { return this.startEditable; } return this.source.startEditable; }; EventDef.prototype.isDurationExplicitlyEditable = function () { if (this.durationEditable != null) { return this.durationEditable; } return this.source.durationEditable; }; EventDef.prototype.isExplicitlyEditable = function () { if (this.editable != null) { return this.editable; } return this.source.editable; }; EventDef.prototype.toLegacy = function () { var obj = $.extend({}, this.miscProps); obj._id = this.uid; obj.source = this.source; obj.className = this.className.slice(); // copy obj.allDay = this.isAllDay(); if (this.rawId != null) { obj.id = this.rawId; } EventDef.copyVerbatimStandardProps(this, obj); return obj; }; EventDef.prototype.applyManualStandardProps = function (rawProps) { if (rawProps.id != null) { this.id = EventDef.normalizeId((this.rawId = rawProps.id)); } else { this.id = EventDef.generateId(); } if (rawProps._id != null) { // accept this prop, even tho somewhat internal this.uid = String(rawProps._id); } else { this.uid = EventDef.generateId(); } // TODO: converge with EventSource if ($.isArray(rawProps.className)) { this.className = rawProps.className; } if (typeof rawProps.className === 'string') { this.className = rawProps.className.split(/\s+/); } return true; }; EventDef.prototype.applyMiscProps = function (rawProps) { $.extend(this.miscProps, rawProps); }; EventDef.uuid = 0; EventDef.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps; EventDef.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps; return EventDef; }()); exports.default = EventDef; ParsableModelMixin_1.default.mixInto(EventDef); EventDef.defineStandardProps({ // not automatically assigned (`false`) _id: false, id: false, className: false, source: false, // automatically assigned (`true`) title: true, url: true, rendering: true, constraint: true, overlap: true, editable: true, startEditable: true, durationEditable: true, color: true, backgroundColor: true, borderColor: true, textColor: true }); /***/ }), /* 38 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = { sourceClasses: [], registerClass: function (EventSourceClass) { this.sourceClasses.unshift(EventSourceClass); // give highest priority }, parse: function (rawInput, calendar) { var sourceClasses = this.sourceClasses; var i; var eventSource; for (i = 0; i < sourceClasses.length; i++) { eventSource = sourceClasses[i].parse(rawInput, calendar); if (eventSource) { return eventSource; } } } }; /***/ }), /* 39 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var util_1 = __webpack_require__(4); var EventDateProfile_1 = __webpack_require__(16); var EventDef_1 = __webpack_require__(37); var EventDefDateMutation_1 = __webpack_require__(40); var SingleEventDef_1 = __webpack_require__(9); var EventDefMutation = /** @class */ (function () { function EventDefMutation() { } EventDefMutation.createFromRawProps = function (eventInstance, rawProps, largeUnit) { var eventDef = eventInstance.def; var dateProps = {}; var standardProps = {}; var miscProps = {}; var verbatimStandardProps = {}; var eventDefId = null; var className = null; var propName; var dateProfile; var dateMutation; var defMutation; for (propName in rawProps) { if (EventDateProfile_1.default.isStandardProp(propName)) { dateProps[propName] = rawProps[propName]; } else if (eventDef.isStandardProp(propName)) { standardProps[propName] = rawProps[propName]; } else if (eventDef.miscProps[propName] !== rawProps[propName]) { // only if changed miscProps[propName] = rawProps[propName]; } } dateProfile = EventDateProfile_1.default.parse(dateProps, eventDef.source); if (dateProfile) { // no failure? dateMutation = EventDefDateMutation_1.default.createFromDiff(eventInstance.dateProfile, dateProfile, largeUnit); } if (standardProps.id !== eventDef.id) { eventDefId = standardProps.id; // only apply if there's a change } if (!util_1.isArraysEqual(standardProps.className, eventDef.className)) { className = standardProps.className; // only apply if there's a change } EventDef_1.default.copyVerbatimStandardProps(standardProps, // src verbatimStandardProps // dest ); defMutation = new EventDefMutation(); defMutation.eventDefId = eventDefId; defMutation.className = className; defMutation.verbatimStandardProps = verbatimStandardProps; defMutation.miscProps = miscProps; if (dateMutation) { defMutation.dateMutation = dateMutation; } return defMutation; }; /* eventDef assumed to be a SingleEventDef. returns an undo function. */ EventDefMutation.prototype.mutateSingle = function (eventDef) { var origDateProfile; if (this.dateMutation) { origDateProfile = eventDef.dateProfile; eventDef.dateProfile = this.dateMutation.buildNewDateProfile(origDateProfile, eventDef.source.calendar); } // can't undo // TODO: more DRY with EventDef::applyManualStandardProps if (this.eventDefId != null) { eventDef.id = EventDef_1.default.normalizeId((eventDef.rawId = this.eventDefId)); } // can't undo // TODO: more DRY with EventDef::applyManualStandardProps if (this.className) { eventDef.className = this.className; } // can't undo if (this.verbatimStandardProps) { SingleEventDef_1.default.copyVerbatimStandardProps(this.verbatimStandardProps, // src eventDef // dest ); } // can't undo if (this.miscProps) { eventDef.applyMiscProps(this.miscProps); } if (origDateProfile) { return function () { eventDef.dateProfile = origDateProfile; }; } else { return function () { }; } }; EventDefMutation.prototype.setDateMutation = function (dateMutation) { if (dateMutation && !dateMutation.isEmpty()) { this.dateMutation = dateMutation; } else { this.dateMutation = null; } }; EventDefMutation.prototype.isEmpty = function () { return !this.dateMutation; }; return EventDefMutation; }()); exports.default = EventDefMutation; /***/ }), /* 40 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var util_1 = __webpack_require__(4); var EventDateProfile_1 = __webpack_require__(16); var EventDefDateMutation = /** @class */ (function () { function EventDefDateMutation() { this.clearEnd = false; this.forceTimed = false; this.forceAllDay = false; } EventDefDateMutation.createFromDiff = function (dateProfile0, dateProfile1, largeUnit) { var clearEnd = dateProfile0.end && !dateProfile1.end; var forceTimed = dateProfile0.isAllDay() && !dateProfile1.isAllDay(); var forceAllDay = !dateProfile0.isAllDay() && dateProfile1.isAllDay(); var dateDelta; var endDiff; var endDelta; var mutation; // subtracts the dates in the appropriate way, returning a duration function subtractDates(date1, date0) { if (largeUnit) { return util_1.diffByUnit(date1, date0, largeUnit); // poorly named } else if (dateProfile1.isAllDay()) { return util_1.diffDay(date1, date0); // poorly named } else { return util_1.diffDayTime(date1, date0); // poorly named } } dateDelta = subtractDates(dateProfile1.start, dateProfile0.start); if (dateProfile1.end) { // use unzonedRanges because dateProfile0.end might be null endDiff = subtractDates(dateProfile1.unzonedRange.getEnd(), dateProfile0.unzonedRange.getEnd()); endDelta = endDiff.subtract(dateDelta); } mutation = new EventDefDateMutation(); mutation.clearEnd = clearEnd; mutation.forceTimed = forceTimed; mutation.forceAllDay = forceAllDay; mutation.setDateDelta(dateDelta); mutation.setEndDelta(endDelta); return mutation; }; /* returns an undo function. */ EventDefDateMutation.prototype.buildNewDateProfile = function (eventDateProfile, calendar) { var start = eventDateProfile.start.clone(); var end = null; var shouldRezone = false; if (eventDateProfile.end && !this.clearEnd) { end = eventDateProfile.end.clone(); } else if (this.endDelta && !end) { end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start); } if (this.forceTimed) { shouldRezone = true; if (!start.hasTime()) { start.time(0); } if (end && !end.hasTime()) { end.time(0); } } else if (this.forceAllDay) { if (start.hasTime()) { start.stripTime(); } if (end && end.hasTime()) { end.stripTime(); } } if (this.dateDelta) { shouldRezone = true; start.add(this.dateDelta); if (end) { end.add(this.dateDelta); } } // do this before adding startDelta to start, so we can work off of start if (this.endDelta) { shouldRezone = true; end.add(this.endDelta); } if (this.startDelta) { shouldRezone = true; start.add(this.startDelta); } if (shouldRezone) { start = calendar.applyTimezone(start); if (end) { end = calendar.applyTimezone(end); } } // TODO: okay to access calendar option? if (!end && calendar.opt('forceEventDuration')) { end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start); } return new EventDateProfile_1.default(start, end, calendar); }; EventDefDateMutation.prototype.setDateDelta = function (dateDelta) { if (dateDelta && dateDelta.valueOf()) { this.dateDelta = dateDelta; } else { this.dateDelta = null; } }; EventDefDateMutation.prototype.setStartDelta = function (startDelta) { if (startDelta && startDelta.valueOf()) { this.startDelta = startDelta; } else { this.startDelta = null; } }; EventDefDateMutation.prototype.setEndDelta = function (endDelta) { if (endDelta && endDelta.valueOf()) { this.endDelta = endDelta; } else { this.endDelta = null; } }; EventDefDateMutation.prototype.isEmpty = function () { return !this.clearEnd && !this.forceTimed && !this.forceAllDay && !this.dateDelta && !this.startDelta && !this.endDelta; }; return EventDefDateMutation; }()); exports.default = EventDefDateMutation; /***/ }), /* 41 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var Class_1 = __webpack_require__(35); /* Embodies a div that has potential scrollbars */ var Scroller = /** @class */ (function (_super) { tslib_1.__extends(Scroller, _super); function Scroller(options) { var _this = _super.call(this) || this; options = options || {}; _this.overflowX = options.overflowX || options.overflow || 'auto'; _this.overflowY = options.overflowY || options.overflow || 'auto'; return _this; } Scroller.prototype.render = function () { this.el = this.renderEl(); this.applyOverflow(); }; Scroller.prototype.renderEl = function () { return (this.scrollEl = $('<div class="fc-scroller"></div>')); }; // sets to natural height, unlocks overflow Scroller.prototype.clear = function () { this.setHeight('auto'); this.applyOverflow(); }; Scroller.prototype.destroy = function () { this.el.remove(); }; // Overflow // ----------------------------------------------------------------------------------------------------------------- Scroller.prototype.applyOverflow = function () { this.scrollEl.css({ 'overflow-x': this.overflowX, 'overflow-y': this.overflowY }); }; // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'. // Useful for preserving scrollbar widths regardless of future resizes. // Can pass in scrollbarWidths for optimization. Scroller.prototype.lockOverflow = function (scrollbarWidths) { var overflowX = this.overflowX; var overflowY = this.overflowY; scrollbarWidths = scrollbarWidths || this.getScrollbarWidths(); if (overflowX === 'auto') { overflowX = (scrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars? // OR scrolling pane with massless scrollbars? this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth // subtract 1 because of IE off-by-one issue ) ? 'scroll' : 'hidden'; } if (overflowY === 'auto') { overflowY = (scrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars? // OR scrolling pane with massless scrollbars? this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight // subtract 1 because of IE off-by-one issue ) ? 'scroll' : 'hidden'; } this.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY }); }; // Getters / Setters // ----------------------------------------------------------------------------------------------------------------- Scroller.prototype.setHeight = function (height) { this.scrollEl.height(height); }; Scroller.prototype.getScrollTop = function () { return this.scrollEl.scrollTop(); }; Scroller.prototype.setScrollTop = function (top) { this.scrollEl.scrollTop(top); }; Scroller.prototype.getClientWidth = function () { return this.scrollEl[0].clientWidth; }; Scroller.prototype.getClientHeight = function () { return this.scrollEl[0].clientHeight; }; Scroller.prototype.getScrollbarWidths = function () { return util_1.getScrollbarWidths(this.scrollEl); }; return Scroller; }(Class_1.default)); exports.default = Scroller; /***/ }), /* 42 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var DateComponent_1 = __webpack_require__(231); var GlobalEmitter_1 = __webpack_require__(23); var InteractiveDateComponent = /** @class */ (function (_super) { tslib_1.__extends(InteractiveDateComponent, _super); function InteractiveDateComponent(_view, _options) { var _this = _super.call(this, _view, _options) || this; // self-config, overridable by subclasses _this.segSelector = '.fc-event-container > *'; // what constitutes an event element? if (_this.dateSelectingClass) { _this.dateClicking = new _this.dateClickingClass(_this); } if (_this.dateSelectingClass) { _this.dateSelecting = new _this.dateSelectingClass(_this); } if (_this.eventPointingClass) { _this.eventPointing = new _this.eventPointingClass(_this); } if (_this.eventDraggingClass && _this.eventPointing) { _this.eventDragging = new _this.eventDraggingClass(_this, _this.eventPointing); } if (_this.eventResizingClass && _this.eventPointing) { _this.eventResizing = new _this.eventResizingClass(_this, _this.eventPointing); } if (_this.externalDroppingClass) { _this.externalDropping = new _this.externalDroppingClass(_this); } return _this; } // Sets the container element that the view should render inside of, does global DOM-related initializations, // and renders all the non-date-related content inside. InteractiveDateComponent.prototype.setElement = function (el) { _super.prototype.setElement.call(this, el); if (this.dateClicking) { this.dateClicking.bindToEl(el); } if (this.dateSelecting) { this.dateSelecting.bindToEl(el); } this.bindAllSegHandlersToEl(el); }; InteractiveDateComponent.prototype.removeElement = function () { this.endInteractions(); _super.prototype.removeElement.call(this); }; InteractiveDateComponent.prototype.executeEventUnrender = function () { this.endInteractions(); _super.prototype.executeEventUnrender.call(this); }; InteractiveDateComponent.prototype.bindGlobalHandlers = function () { _super.prototype.bindGlobalHandlers.call(this); if (this.externalDropping) { this.externalDropping.bindToDocument(); } }; InteractiveDateComponent.prototype.unbindGlobalHandlers = function () { _super.prototype.unbindGlobalHandlers.call(this); if (this.externalDropping) { this.externalDropping.unbindFromDocument(); } }; InteractiveDateComponent.prototype.bindDateHandlerToEl = function (el, name, handler) { var _this = this; // attach a handler to the grid's root element. // jQuery will take care of unregistering them when removeElement gets called. this.el.on(name, function (ev) { if (!$(ev.target).is(_this.segSelector + ':not(.fc-helper),' + // directly on an event element _this.segSelector + ':not(.fc-helper) *,' + // within an event element '.fc-more,' + // a "more.." link 'a[data-goto]' // a clickable nav link )) { return handler.call(_this, ev); } }); }; InteractiveDateComponent.prototype.bindAllSegHandlersToEl = function (el) { [ this.eventPointing, this.eventDragging, this.eventResizing ].forEach(function (eventInteraction) { if (eventInteraction) { eventInteraction.bindToEl(el); } }); }; InteractiveDateComponent.prototype.bindSegHandlerToEl = function (el, name, handler) { var _this = this; el.on(name, this.segSelector, function (ev) { var segEl = $(ev.currentTarget); if (!segEl.is('.fc-helper')) { var seg = segEl.data('fc-seg'); // grab segment data. put there by View::renderEventsPayload if (seg && !_this.shouldIgnoreEventPointing()) { return handler.call(_this, seg, ev); // context will be the Grid } } }); }; InteractiveDateComponent.prototype.shouldIgnoreMouse = function () { // HACK // This will still work even though bindDateHandlerToEl doesn't use GlobalEmitter. return GlobalEmitter_1.default.get().shouldIgnoreMouse(); }; InteractiveDateComponent.prototype.shouldIgnoreTouch = function () { var view = this._getView(); // On iOS (and Android?) when a new selection is initiated overtop another selection, // the touchend never fires because the elements gets removed mid-touch-interaction (my theory). // HACK: simply don't allow this to happen. // ALSO: prevent selection when an *event* is already raised. return view.isSelected || view.selectedEvent; }; InteractiveDateComponent.prototype.shouldIgnoreEventPointing = function () { // only call the handlers if there is not a drag/resize in progress return (this.eventDragging && this.eventDragging.isDragging) || (this.eventResizing && this.eventResizing.isResizing); }; InteractiveDateComponent.prototype.canStartSelection = function (seg, ev) { return util_1.getEvIsTouch(ev) && !this.canStartResize(seg, ev) && (this.isEventDefDraggable(seg.footprint.eventDef) || this.isEventDefResizable(seg.footprint.eventDef)); }; InteractiveDateComponent.prototype.canStartDrag = function (seg, ev) { return !this.canStartResize(seg, ev) && this.isEventDefDraggable(seg.footprint.eventDef); }; InteractiveDateComponent.prototype.canStartResize = function (seg, ev) { var view = this._getView(); var eventDef = seg.footprint.eventDef; return (!util_1.getEvIsTouch(ev) || view.isEventDefSelected(eventDef)) && this.isEventDefResizable(eventDef) && $(ev.target).is('.fc-resizer'); }; // Kills all in-progress dragging. // Useful for when public API methods that result in re-rendering are invoked during a drag. // Also useful for when touch devices misbehave and don't fire their touchend. InteractiveDateComponent.prototype.endInteractions = function () { [ this.dateClicking, this.dateSelecting, this.eventPointing, this.eventDragging, this.eventResizing ].forEach(function (interaction) { if (interaction) { interaction.end(); } }); }; // Event Drag-n-Drop // --------------------------------------------------------------------------------------------------------------- // Computes if the given event is allowed to be dragged by the user InteractiveDateComponent.prototype.isEventDefDraggable = function (eventDef) { return this.isEventDefStartEditable(eventDef); }; InteractiveDateComponent.prototype.isEventDefStartEditable = function (eventDef) { var isEditable = eventDef.isStartExplicitlyEditable(); if (isEditable == null) { isEditable = this.opt('eventStartEditable'); if (isEditable == null) { isEditable = this.isEventDefGenerallyEditable(eventDef); } } return isEditable; }; InteractiveDateComponent.prototype.isEventDefGenerallyEditable = function (eventDef) { var isEditable = eventDef.isExplicitlyEditable(); if (isEditable == null) { isEditable = this.opt('editable'); } return isEditable; }; // Event Resizing // --------------------------------------------------------------------------------------------------------------- // Computes if the given event is allowed to be resized from its starting edge InteractiveDateComponent.prototype.isEventDefResizableFromStart = function (eventDef) { return this.opt('eventResizableFromStart') && this.isEventDefResizable(eventDef); }; // Computes if the given event is allowed to be resized from its ending edge InteractiveDateComponent.prototype.isEventDefResizableFromEnd = function (eventDef) { return this.isEventDefResizable(eventDef); }; // Computes if the given event is allowed to be resized by the user at all InteractiveDateComponent.prototype.isEventDefResizable = function (eventDef) { var isResizable = eventDef.isDurationExplicitlyEditable(); if (isResizable == null) { isResizable = this.opt('eventDurationEditable'); if (isResizable == null) { isResizable = this.isEventDefGenerallyEditable(eventDef); } } return isResizable; }; // Event Mutation / Constraints // --------------------------------------------------------------------------------------------------------------- // Diffs the two dates, returning a duration, based on granularity of the grid // TODO: port isTimeScale into this system? InteractiveDateComponent.prototype.diffDates = function (a, b) { if (this.largeUnit) { return util_1.diffByUnit(a, b, this.largeUnit); } else { return util_1.diffDayTime(a, b); } }; // is it allowed, in relation to the view's validRange? // NOTE: very similar to isExternalInstanceGroupAllowed InteractiveDateComponent.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) { var view = this._getView(); var dateProfile = this.dateProfile; var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges()); var i; for (i = 0; i < eventFootprints.length; i++) { // TODO: just use getAllEventRanges directly if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) { return false; } } return view.calendar.constraints.isEventInstanceGroupAllowed(eventInstanceGroup); }; // NOTE: very similar to isEventInstanceGroupAllowed // when it's a completely anonymous external drag, no event. InteractiveDateComponent.prototype.isExternalInstanceGroupAllowed = function (eventInstanceGroup) { var view = this._getView(); var dateProfile = this.dateProfile; var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges()); var i; for (i = 0; i < eventFootprints.length; i++) { if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) { return false; } } for (i = 0; i < eventFootprints.length; i++) { // treat it as a selection // TODO: pass in eventInstanceGroup instead // because we don't want calendar's constraint system to depend on a component's // determination of footprints. if (!view.calendar.constraints.isSelectionFootprintAllowed(eventFootprints[i].componentFootprint)) { return false; } } return true; }; return InteractiveDateComponent; }(DateComponent_1.default)); exports.default = InteractiveDateComponent; /***/ }), /* 43 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var moment = __webpack_require__(0); var util_1 = __webpack_require__(4); var RenderQueue_1 = __webpack_require__(229); var DateProfileGenerator_1 = __webpack_require__(55); var InteractiveDateComponent_1 = __webpack_require__(42); var GlobalEmitter_1 = __webpack_require__(23); var UnzonedRange_1 = __webpack_require__(5); /* An abstract class from which other views inherit from ----------------------------------------------------------------------------------------------------------------------*/ var View = /** @class */ (function (_super) { tslib_1.__extends(View, _super); function View(calendar, viewSpec) { var _this = _super.call(this, null, viewSpec.options) || this; _this.batchRenderDepth = 0; _this.isSelected = false; // boolean whether a range of time is user-selected or not _this.calendar = calendar; _this.viewSpec = viewSpec; // shortcuts _this.type = viewSpec.type; // .name is deprecated _this.name = _this.type; _this.initRenderQueue(); _this.initHiddenDays(); _this.dateProfileGenerator = new _this.dateProfileGeneratorClass(_this); _this.bindBaseRenderHandlers(); _this.eventOrderSpecs = util_1.parseFieldSpecs(_this.opt('eventOrder')); // legacy if (_this['initialize']) { _this['initialize'](); } return _this; } View.prototype._getView = function () { return this; }; // Retrieves an option with the given name View.prototype.opt = function (name) { return this.options[name]; }; /* Render Queue ------------------------------------------------------------------------------------------------------------------*/ View.prototype.initRenderQueue = function () { this.renderQueue = new RenderQueue_1.default({ event: this.opt('eventRenderWait') }); this.renderQueue.on('start', this.onRenderQueueStart.bind(this)); this.renderQueue.on('stop', this.onRenderQueueStop.bind(this)); this.on('before:change', this.startBatchRender); this.on('change', this.stopBatchRender); }; View.prototype.onRenderQueueStart = function () { this.calendar.freezeContentHeight(); this.addScroll(this.queryScroll()); }; View.prototype.onRenderQueueStop = function () { if (this.calendar.updateViewSize()) { // success? this.popScroll(); } this.calendar.thawContentHeight(); }; View.prototype.startBatchRender = function () { if (!(this.batchRenderDepth++)) { this.renderQueue.pause(); } }; View.prototype.stopBatchRender = function () { if (!(--this.batchRenderDepth)) { this.renderQueue.resume(); } }; View.prototype.requestRender = function (func, namespace, actionType) { this.renderQueue.queue(func, namespace, actionType); }; // given func will auto-bind to `this` View.prototype.whenSizeUpdated = function (func) { if (this.renderQueue.isRunning) { this.renderQueue.one('stop', func.bind(this)); } else { func.call(this); } }; /* Title and Date Formatting ------------------------------------------------------------------------------------------------------------------*/ // Computes what the title at the top of the calendar should be for this view View.prototype.computeTitle = function (dateProfile) { var unzonedRange; // for views that span a large unit of time, show the proper interval, ignoring stray days before and after if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) { unzonedRange = dateProfile.currentUnzonedRange; } else { // for day units or smaller, use the actual day range unzonedRange = dateProfile.activeUnzonedRange; } return this.formatRange({ start: this.calendar.msToMoment(unzonedRange.startMs, dateProfile.isRangeAllDay), end: this.calendar.msToMoment(unzonedRange.endMs, dateProfile.isRangeAllDay) }, dateProfile.isRangeAllDay, this.opt('titleFormat') || this.computeTitleFormat(dateProfile), this.opt('titleRangeSeparator')); }; // Generates the format string that should be used to generate the title for the current date range. // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`. View.prototype.computeTitleFormat = function (dateProfile) { var currentRangeUnit = dateProfile.currentRangeUnit; if (currentRangeUnit === 'year') { return 'YYYY'; } else if (currentRangeUnit === 'month') { return this.opt('monthYearFormat'); // like "September 2014" } else if (dateProfile.currentUnzonedRange.as('days') > 1) { return 'll'; // multi-day range. shorter, like "Sep 9 - 10 2014" } else { return 'LL'; // one day. longer, like "September 9 2014" } }; // Date Setting/Unsetting // ----------------------------------------------------------------------------------------------------------------- View.prototype.setDate = function (date) { var currentDateProfile = this.get('dateProfile'); var newDateProfile = this.dateProfileGenerator.build(date, undefined, true); // forceToValid=true if (!currentDateProfile || !currentDateProfile.activeUnzonedRange.equals(newDateProfile.activeUnzonedRange)) { this.set('dateProfile', newDateProfile); } }; View.prototype.unsetDate = function () { this.unset('dateProfile'); }; // Event Data // ----------------------------------------------------------------------------------------------------------------- View.prototype.fetchInitialEvents = function (dateProfile) { var calendar = this.calendar; var forceAllDay = dateProfile.isRangeAllDay && !this.usesMinMaxTime; return calendar.requestEvents(calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, forceAllDay), calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, forceAllDay)); }; View.prototype.bindEventChanges = function () { this.listenTo(this.calendar, 'eventsReset', this.resetEvents); // TODO: make this a real event }; View.prototype.unbindEventChanges = function () { this.stopListeningTo(this.calendar, 'eventsReset'); }; View.prototype.setEvents = function (eventsPayload) { this.set('currentEvents', eventsPayload); this.set('hasEvents', true); }; View.prototype.unsetEvents = function () { this.unset('currentEvents'); this.unset('hasEvents'); }; View.prototype.resetEvents = function (eventsPayload) { this.startBatchRender(); this.unsetEvents(); this.setEvents(eventsPayload); this.stopBatchRender(); }; // Date High-level Rendering // ----------------------------------------------------------------------------------------------------------------- View.prototype.requestDateRender = function (dateProfile) { var _this = this; this.requestRender(function () { _this.executeDateRender(dateProfile); }, 'date', 'init'); }; View.prototype.requestDateUnrender = function () { var _this = this; this.requestRender(function () { _this.executeDateUnrender(); }, 'date', 'destroy'); }; // if dateProfile not specified, uses current View.prototype.executeDateRender = function (dateProfile) { _super.prototype.executeDateRender.call(this, dateProfile); if (this['render']) { this['render'](); // TODO: deprecate } this.trigger('datesRendered'); this.addScroll({ isDateInit: true }); this.startNowIndicator(); // shouldn't render yet because updateSize will be called soon }; View.prototype.executeDateUnrender = function () { this.unselect(); this.stopNowIndicator(); this.trigger('before:datesUnrendered'); if (this['destroy']) { this['destroy'](); // TODO: deprecate } _super.prototype.executeDateUnrender.call(this); }; // "Base" rendering // ----------------------------------------------------------------------------------------------------------------- View.prototype.bindBaseRenderHandlers = function () { var _this = this; this.on('datesRendered', function () { _this.whenSizeUpdated(_this.triggerViewRender); }); this.on('before:datesUnrendered', function () { _this.triggerViewDestroy(); }); }; View.prototype.triggerViewRender = function () { this.publiclyTrigger('viewRender', { context: this, args: [this, this.el] }); }; View.prototype.triggerViewDestroy = function () { this.publiclyTrigger('viewDestroy', { context: this, args: [this, this.el] }); }; // Event High-level Rendering // ----------------------------------------------------------------------------------------------------------------- View.prototype.requestEventsRender = function (eventsPayload) { var _this = this; this.requestRender(function () { _this.executeEventRender(eventsPayload); _this.whenSizeUpdated(_this.triggerAfterEventsRendered); }, 'event', 'init'); }; View.prototype.requestEventsUnrender = function () { var _this = this; this.requestRender(function () { _this.triggerBeforeEventsDestroyed(); _this.executeEventUnrender(); }, 'event', 'destroy'); }; // Business Hour High-level Rendering // ----------------------------------------------------------------------------------------------------------------- View.prototype.requestBusinessHoursRender = function (businessHourGenerator) { var _this = this; this.requestRender(function () { _this.renderBusinessHours(businessHourGenerator); }, 'businessHours', 'init'); }; View.prototype.requestBusinessHoursUnrender = function () { var _this = this; this.requestRender(function () { _this.unrenderBusinessHours(); }, 'businessHours', 'destroy'); }; // Misc view rendering utils // ----------------------------------------------------------------------------------------------------------------- // Binds DOM handlers to elements that reside outside the view container, such as the document View.prototype.bindGlobalHandlers = function () { _super.prototype.bindGlobalHandlers.call(this); this.listenTo(GlobalEmitter_1.default.get(), { touchstart: this.processUnselect, mousedown: this.handleDocumentMousedown }); }; // Unbinds DOM handlers from elements that reside outside the view container View.prototype.unbindGlobalHandlers = function () { _super.prototype.unbindGlobalHandlers.call(this); this.stopListeningTo(GlobalEmitter_1.default.get()); }; /* Now Indicator ------------------------------------------------------------------------------------------------------------------*/ // Immediately render the current time indicator and begins re-rendering it at an interval, // which is defined by this.getNowIndicatorUnit(). // TODO: somehow do this for the current whole day's background too View.prototype.startNowIndicator = function () { var _this = this; var unit; var update; var delay; // ms wait value if (this.opt('nowIndicator')) { unit = this.getNowIndicatorUnit(); if (unit) { update = util_1.proxy(this, 'updateNowIndicator'); // bind to `this` this.initialNowDate = this.calendar.getNow(); this.initialNowQueriedMs = new Date().valueOf(); // wait until the beginning of the next interval delay = this.initialNowDate.clone().startOf(unit).add(1, unit).valueOf() - this.initialNowDate.valueOf(); this.nowIndicatorTimeoutID = setTimeout(function () { _this.nowIndicatorTimeoutID = null; update(); delay = +moment.duration(1, unit); delay = Math.max(100, delay); // prevent too frequent _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval }, delay); } // rendering will be initiated in updateSize } }; // rerenders the now indicator, computing the new current time from the amount of time that has passed // since the initial getNow call. View.prototype.updateNowIndicator = function () { if (this.isDatesRendered && this.initialNowDate // activated before? ) { this.unrenderNowIndicator(); // won't unrender if unnecessary this.renderNowIndicator(this.initialNowDate.clone().add(new Date().valueOf() - this.initialNowQueriedMs) // add ms ); this.isNowIndicatorRendered = true; } }; // Immediately unrenders the view's current time indicator and stops any re-rendering timers. // Won't cause side effects if indicator isn't rendered. View.prototype.stopNowIndicator = function () { if (this.isNowIndicatorRendered) { if (this.nowIndicatorTimeoutID) { clearTimeout(this.nowIndicatorTimeoutID); this.nowIndicatorTimeoutID = null; } if (this.nowIndicatorIntervalID) { clearInterval(this.nowIndicatorIntervalID); this.nowIndicatorIntervalID = null; } this.unrenderNowIndicator(); this.isNowIndicatorRendered = false; } }; /* Dimensions ------------------------------------------------------------------------------------------------------------------*/ View.prototype.updateSize = function (totalHeight, isAuto, isResize) { if (this['setHeight']) { // for legacy API this['setHeight'](totalHeight, isAuto); } else { _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); } this.updateNowIndicator(); }; /* Scroller ------------------------------------------------------------------------------------------------------------------*/ View.prototype.addScroll = function (scroll) { var queuedScroll = this.queuedScroll || (this.queuedScroll = {}); $.extend(queuedScroll, scroll); }; View.prototype.popScroll = function () { this.applyQueuedScroll(); this.queuedScroll = null; }; View.prototype.applyQueuedScroll = function () { if (this.queuedScroll) { this.applyScroll(this.queuedScroll); } }; View.prototype.queryScroll = function () { var scroll = {}; if (this.isDatesRendered) { $.extend(scroll, this.queryDateScroll()); } return scroll; }; View.prototype.applyScroll = function (scroll) { if (scroll.isDateInit && this.isDatesRendered) { $.extend(scroll, this.computeInitialDateScroll()); } if (this.isDatesRendered) { this.applyDateScroll(scroll); } }; View.prototype.computeInitialDateScroll = function () { return {}; // subclasses must implement }; View.prototype.queryDateScroll = function () { return {}; // subclasses must implement }; View.prototype.applyDateScroll = function (scroll) { // subclasses must implement }; /* Event Drag-n-Drop ------------------------------------------------------------------------------------------------------------------*/ View.prototype.reportEventDrop = function (eventInstance, eventMutation, el, ev) { var eventManager = this.calendar.eventManager; var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation); var dateMutation = eventMutation.dateMutation; // update the EventInstance, for handlers if (dateMutation) { eventInstance.dateProfile = dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar); } this.triggerEventDrop(eventInstance, // a drop doesn't necessarily mean a date mutation (ex: resource change) (dateMutation && dateMutation.dateDelta) || moment.duration(), undoFunc, el, ev); }; // Triggers event-drop handlers that have subscribed via the API View.prototype.triggerEventDrop = function (eventInstance, dateDelta, undoFunc, el, ev) { this.publiclyTrigger('eventDrop', { context: el[0], args: [ eventInstance.toLegacy(), dateDelta, undoFunc, ev, {}, this ] }); }; /* External Element Drag-n-Drop ------------------------------------------------------------------------------------------------------------------*/ // Must be called when an external element, via jQuery UI, has been dropped onto the calendar. // `meta` is the parsed data that has been embedded into the dragging event. // `dropLocation` is an object that contains the new zoned start/end/allDay values for the event. View.prototype.reportExternalDrop = function (singleEventDef, isEvent, isSticky, el, ev, ui) { if (isEvent) { this.calendar.eventManager.addEventDef(singleEventDef, isSticky); } this.triggerExternalDrop(singleEventDef, isEvent, el, ev, ui); }; // Triggers external-drop handlers that have subscribed via the API View.prototype.triggerExternalDrop = function (singleEventDef, isEvent, el, ev, ui) { // trigger 'drop' regardless of whether element represents an event this.publiclyTrigger('drop', { context: el[0], args: [ singleEventDef.dateProfile.start.clone(), ev, ui, this ] }); if (isEvent) { // signal an external event landed this.publiclyTrigger('eventReceive', { context: this, args: [ singleEventDef.buildInstance().toLegacy(), this ] }); } }; /* Event Resizing ------------------------------------------------------------------------------------------------------------------*/ // Must be called when an event in the view has been resized to a new length View.prototype.reportEventResize = function (eventInstance, eventMutation, el, ev) { var eventManager = this.calendar.eventManager; var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation); // update the EventInstance, for handlers eventInstance.dateProfile = eventMutation.dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar); var resizeDelta = eventMutation.dateMutation.endDelta || eventMutation.dateMutation.startDelta; this.triggerEventResize(eventInstance, resizeDelta, undoFunc, el, ev); }; // Triggers event-resize handlers that have subscribed via the API View.prototype.triggerEventResize = function (eventInstance, resizeDelta, undoFunc, el, ev) { this.publiclyTrigger('eventResize', { context: el[0], args: [ eventInstance.toLegacy(), resizeDelta, undoFunc, ev, {}, this ] }); }; /* Selection (time range) ------------------------------------------------------------------------------------------------------------------*/ // Selects a date span on the view. `start` and `end` are both Moments. // `ev` is the native mouse event that begin the interaction. View.prototype.select = function (footprint, ev) { this.unselect(ev); this.renderSelectionFootprint(footprint); this.reportSelection(footprint, ev); }; View.prototype.renderSelectionFootprint = function (footprint) { if (this['renderSelection']) { // legacy method in custom view classes this['renderSelection'](footprint.toLegacy(this.calendar)); } else { _super.prototype.renderSelectionFootprint.call(this, footprint); } }; // Called when a new selection is made. Updates internal state and triggers handlers. View.prototype.reportSelection = function (footprint, ev) { this.isSelected = true; this.triggerSelect(footprint, ev); }; // Triggers handlers to 'select' View.prototype.triggerSelect = function (footprint, ev) { var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of "Event"DateProfile? this.publiclyTrigger('select', { context: this, args: [ dateProfile.start, dateProfile.end, ev, this ] }); }; // Undoes a selection. updates in the internal state and triggers handlers. // `ev` is the native mouse event that began the interaction. View.prototype.unselect = function (ev) { if (this.isSelected) { this.isSelected = false; if (this['destroySelection']) { this['destroySelection'](); // TODO: deprecate } this.unrenderSelection(); this.publiclyTrigger('unselect', { context: this, args: [ev, this] }); } }; /* Event Selection ------------------------------------------------------------------------------------------------------------------*/ View.prototype.selectEventInstance = function (eventInstance) { if (!this.selectedEventInstance || this.selectedEventInstance !== eventInstance) { this.unselectEventInstance(); this.getEventSegs().forEach(function (seg) { if (seg.footprint.eventInstance === eventInstance && seg.el // necessary? ) { seg.el.addClass('fc-selected'); } }); this.selectedEventInstance = eventInstance; } }; View.prototype.unselectEventInstance = function () { if (this.selectedEventInstance) { this.getEventSegs().forEach(function (seg) { if (seg.el) { // necessary? seg.el.removeClass('fc-selected'); } }); this.selectedEventInstance = null; } }; View.prototype.isEventDefSelected = function (eventDef) { // event references might change on refetchEvents(), while selectedEventInstance doesn't, // so compare IDs return this.selectedEventInstance && this.selectedEventInstance.def.id === eventDef.id; }; /* Mouse / Touch Unselecting (time range & event unselection) ------------------------------------------------------------------------------------------------------------------*/ // TODO: move consistently to down/start or up/end? // TODO: don't kill previous selection if touch scrolling View.prototype.handleDocumentMousedown = function (ev) { if (util_1.isPrimaryMouseButton(ev)) { this.processUnselect(ev); } }; View.prototype.processUnselect = function (ev) { this.processRangeUnselect(ev); this.processEventUnselect(ev); }; View.prototype.processRangeUnselect = function (ev) { var ignore; // is there a time-range selection? if (this.isSelected && this.opt('unselectAuto')) { // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element ignore = this.opt('unselectCancel'); if (!ignore || !$(ev.target).closest(ignore).length) { this.unselect(ev); } } }; View.prototype.processEventUnselect = function (ev) { if (this.selectedEventInstance) { if (!$(ev.target).closest('.fc-selected').length) { this.unselectEventInstance(); } } }; /* Triggers ------------------------------------------------------------------------------------------------------------------*/ View.prototype.triggerBaseRendered = function () { this.publiclyTrigger('viewRender', { context: this, args: [this, this.el] }); }; View.prototype.triggerBaseUnrendered = function () { this.publiclyTrigger('viewDestroy', { context: this, args: [this, this.el] }); }; // Triggers handlers to 'dayClick' // Span has start/end of the clicked area. Only the start is useful. View.prototype.triggerDayClick = function (footprint, dayEl, ev) { var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of "Event"DateProfile? this.publiclyTrigger('dayClick', { context: dayEl, args: [dateProfile.start, ev, this] }); }; /* Date Utils ------------------------------------------------------------------------------------------------------------------*/ // For DateComponent::getDayClasses View.prototype.isDateInOtherMonth = function (date, dateProfile) { return false; }; // Arguments after name will be forwarded to a hypothetical function value // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects. // Always clone your objects if you fear mutation. View.prototype.getUnzonedRangeOption = function (name) { var val = this.opt(name); if (typeof val === 'function') { val = val.apply(null, Array.prototype.slice.call(arguments, 1)); } if (val) { return this.calendar.parseUnzonedRange(val); } }; /* Hidden Days ------------------------------------------------------------------------------------------------------------------*/ // Initializes internal variables related to calculating hidden days-of-week View.prototype.initHiddenDays = function () { var hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) var dayCnt = 0; var i; if (this.opt('weekends') === false) { hiddenDays.push(0, 6); // 0=sunday, 6=saturday } for (i = 0; i < 7; i++) { if (!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)) { dayCnt++; } } if (!dayCnt) { throw new Error('invalid hiddenDays'); // all days were hidden? bad. } this.isHiddenDayHash = isHiddenDayHash; }; // Remove days from the beginning and end of the range that are computed as hidden. // If the whole range is trimmed off, returns null View.prototype.trimHiddenDays = function (inputUnzonedRange) { var start = inputUnzonedRange.getStart(); var end = inputUnzonedRange.getEnd(); if (start) { start = this.skipHiddenDays(start); } if (end) { end = this.skipHiddenDays(end, -1, true); } if (start === null || end === null || start < end) { return new UnzonedRange_1.default(start, end); } return null; }; // Is the current day hidden? // `day` is a day-of-week index (0-6), or a Moment View.prototype.isHiddenDay = function (day) { if (moment.isMoment(day)) { day = day.day(); } return this.isHiddenDayHash[day]; }; // Incrementing the current day until it is no longer a hidden day, returning a copy. // DOES NOT CONSIDER validUnzonedRange! // If the initial value of `date` is not a hidden day, don't do anything. // Pass `isExclusive` as `true` if you are dealing with an end date. // `inc` defaults to `1` (increment one day forward each time) View.prototype.skipHiddenDays = function (date, inc, isExclusive) { if (inc === void 0) { inc = 1; } if (isExclusive === void 0) { isExclusive = false; } var out = date.clone(); while (this.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]) { out.add(inc, 'days'); } return out; }; return View; }(InteractiveDateComponent_1.default)); exports.default = View; View.prototype.usesMinMaxTime = false; View.prototype.dateProfileGeneratorClass = DateProfileGenerator_1.default; View.watch('displayingDates', ['isInDom', 'dateProfile'], function (deps) { this.requestDateRender(deps.dateProfile); }, function () { this.requestDateUnrender(); }); View.watch('displayingBusinessHours', ['displayingDates', 'businessHourGenerator'], function (deps) { this.requestBusinessHoursRender(deps.businessHourGenerator); }, function () { this.requestBusinessHoursUnrender(); }); View.watch('initialEvents', ['dateProfile'], function (deps) { return this.fetchInitialEvents(deps.dateProfile); }); View.watch('bindingEvents', ['initialEvents'], function (deps) { this.setEvents(deps.initialEvents); this.bindEventChanges(); }, function () { this.unbindEventChanges(); this.unsetEvents(); }); View.watch('displayingEvents', ['displayingDates', 'hasEvents'], function () { this.requestEventsRender(this.get('currentEvents')); }, function () { this.requestEventsUnrender(); }); View.watch('title', ['dateProfile'], function (deps) { return (this.title = this.computeTitle(deps.dateProfile)); // assign to View for legacy reasons }); View.watch('legacyDateProps', ['dateProfile'], function (deps) { var calendar = this.calendar; var dateProfile = deps.dateProfile; // DEPRECATED, but we need to keep it updated... this.start = calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, dateProfile.isRangeAllDay); this.end = calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, dateProfile.isRangeAllDay); this.intervalStart = calendar.msToMoment(dateProfile.currentUnzonedRange.startMs, dateProfile.isRangeAllDay); this.intervalEnd = calendar.msToMoment(dateProfile.currentUnzonedRange.endMs, dateProfile.isRangeAllDay); }); /***/ }), /* 44 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var EventRenderer = /** @class */ (function () { function EventRenderer(component, fillRenderer) { this.view = component._getView(); this.component = component; this.fillRenderer = fillRenderer; } EventRenderer.prototype.opt = function (name) { return this.view.opt(name); }; // Updates values that rely on options and also relate to range EventRenderer.prototype.rangeUpdated = function () { var displayEventTime; var displayEventEnd; this.eventTimeFormat = this.opt('eventTimeFormat') || this.opt('timeFormat') || // deprecated this.computeEventTimeFormat(); displayEventTime = this.opt('displayEventTime'); if (displayEventTime == null) { displayEventTime = this.computeDisplayEventTime(); // might be based off of range } displayEventEnd = this.opt('displayEventEnd'); if (displayEventEnd == null) { displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range } this.displayEventTime = displayEventTime; this.displayEventEnd = displayEventEnd; }; EventRenderer.prototype.render = function (eventsPayload) { var dateProfile = this.component._getDateProfile(); var eventDefId; var instanceGroup; var eventRanges; var bgRanges = []; var fgRanges = []; for (eventDefId in eventsPayload) { instanceGroup = eventsPayload[eventDefId]; eventRanges = instanceGroup.sliceRenderRanges(dateProfile.activeUnzonedRange); if (instanceGroup.getEventDef().hasBgRendering()) { bgRanges.push.apply(bgRanges, eventRanges); } else { fgRanges.push.apply(fgRanges, eventRanges); } } this.renderBgRanges(bgRanges); this.renderFgRanges(fgRanges); }; EventRenderer.prototype.unrender = function () { this.unrenderBgRanges(); this.unrenderFgRanges(); }; EventRenderer.prototype.renderFgRanges = function (eventRanges) { var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges); var segs = this.component.eventFootprintsToSegs(eventFootprints); // render an `.el` on each seg // returns a subset of the segs. segs that were actually rendered segs = this.renderFgSegEls(segs); if (this.renderFgSegs(segs) !== false) { // no failure? this.fgSegs = segs; } }; EventRenderer.prototype.unrenderFgRanges = function () { this.unrenderFgSegs(this.fgSegs || []); this.fgSegs = null; }; EventRenderer.prototype.renderBgRanges = function (eventRanges) { var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges); var segs = this.component.eventFootprintsToSegs(eventFootprints); if (this.renderBgSegs(segs) !== false) { // no failure? this.bgSegs = segs; } }; EventRenderer.prototype.unrenderBgRanges = function () { this.unrenderBgSegs(); this.bgSegs = null; }; EventRenderer.prototype.getSegs = function () { return (this.bgSegs || []).concat(this.fgSegs || []); }; // Renders foreground event segments onto the grid EventRenderer.prototype.renderFgSegs = function (segs) { // subclasses must implement // segs already has rendered els, and has been filtered. return false; // signal failure if not implemented }; // Unrenders all currently rendered foreground segments EventRenderer.prototype.unrenderFgSegs = function (segs) { // subclasses must implement }; EventRenderer.prototype.renderBgSegs = function (segs) { var _this = this; if (this.fillRenderer) { this.fillRenderer.renderSegs('bgEvent', segs, { getClasses: function (seg) { return _this.getBgClasses(seg.footprint.eventDef); }, getCss: function (seg) { return { 'background-color': _this.getBgColor(seg.footprint.eventDef) }; }, filterEl: function (seg, el) { return _this.filterEventRenderEl(seg.footprint, el); } }); } else { return false; // signal failure if no fillRenderer } }; EventRenderer.prototype.unrenderBgSegs = function () { if (this.fillRenderer) { this.fillRenderer.unrender('bgEvent'); } }; // Renders and assigns an `el` property for each foreground event segment. // Only returns segments that successfully rendered. EventRenderer.prototype.renderFgSegEls = function (segs, disableResizing) { var _this = this; if (disableResizing === void 0) { disableResizing = false; } var hasEventRenderHandlers = this.view.hasPublicHandlers('eventRender'); var html = ''; var renderedSegs = []; var i; if (segs.length) { // don't build an empty html string // build a large concatenation of event segment HTML for (i = 0; i < segs.length; i++) { this.beforeFgSegHtml(segs[i]); html += this.fgSegHtml(segs[i], disableResizing); } // Grab individual elements from the combined HTML string. Use each as the default rendering. // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false. $(html).each(function (i, node) { var seg = segs[i]; var el = $(node); if (hasEventRenderHandlers) { // optimization el = _this.filterEventRenderEl(seg.footprint, el); } if (el) { el.data('fc-seg', seg); // used by handlers seg.el = el; renderedSegs.push(seg); } }); } return renderedSegs; }; EventRenderer.prototype.beforeFgSegHtml = function (seg) { }; // Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls() EventRenderer.prototype.fgSegHtml = function (seg, disableResizing) { // subclasses should implement }; // Generic utility for generating the HTML classNames for an event segment's element EventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable) { var classes = [ 'fc-event', seg.isStart ? 'fc-start' : 'fc-not-start', seg.isEnd ? 'fc-end' : 'fc-not-end' ].concat(this.getClasses(seg.footprint.eventDef)); if (isDraggable) { classes.push('fc-draggable'); } if (isResizable) { classes.push('fc-resizable'); } // event is currently selected? attach a className. if (this.view.isEventDefSelected(seg.footprint.eventDef)) { classes.push('fc-selected'); } return classes; }; // Given an event and the default element used for rendering, returns the element that should actually be used. // Basically runs events and elements through the eventRender hook. EventRenderer.prototype.filterEventRenderEl = function (eventFootprint, el) { var legacy = eventFootprint.getEventLegacy(); var custom = this.view.publiclyTrigger('eventRender', { context: legacy, args: [legacy, el, this.view] }); if (custom === false) { // means don't render at all el = null; } else if (custom && custom !== true) { el = $(custom); } return el; }; // Compute the text that should be displayed on an event's element. // `range` can be the Event object itself, or something range-like, with at least a `start`. // If event times are disabled, or the event has no time, will return a blank string. // If not specified, formatStr will default to the eventTimeFormat setting, // and displayEnd will default to the displayEventEnd setting. EventRenderer.prototype.getTimeText = function (eventFootprint, formatStr, displayEnd) { return this._getTimeText(eventFootprint.eventInstance.dateProfile.start, eventFootprint.eventInstance.dateProfile.end, eventFootprint.componentFootprint.isAllDay, formatStr, displayEnd); }; EventRenderer.prototype._getTimeText = function (start, end, isAllDay, formatStr, displayEnd) { if (formatStr == null) { formatStr = this.eventTimeFormat; } if (displayEnd == null) { displayEnd = this.displayEventEnd; } if (this.displayEventTime && !isAllDay) { if (displayEnd && end) { return this.view.formatRange({ start: start, end: end }, false, // allDay formatStr); } else { return start.format(formatStr); } } return ''; }; EventRenderer.prototype.computeEventTimeFormat = function () { return this.opt('smallTimeFormat'); }; EventRenderer.prototype.computeDisplayEventTime = function () { return true; }; EventRenderer.prototype.computeDisplayEventEnd = function () { return true; }; EventRenderer.prototype.getBgClasses = function (eventDef) { var classNames = this.getClasses(eventDef); classNames.push('fc-bgevent'); return classNames; }; EventRenderer.prototype.getClasses = function (eventDef) { var objs = this.getStylingObjs(eventDef); var i; var classNames = []; for (i = 0; i < objs.length; i++) { classNames.push.apply(// append classNames, objs[i].eventClassName || objs[i].className || []); } return classNames; }; // Utility for generating event skin-related CSS properties EventRenderer.prototype.getSkinCss = function (eventDef) { return { 'background-color': this.getBgColor(eventDef), 'border-color': this.getBorderColor(eventDef), color: this.getTextColor(eventDef) }; }; // Queries for caller-specified color, then falls back to default EventRenderer.prototype.getBgColor = function (eventDef) { var objs = this.getStylingObjs(eventDef); var i; var val; for (i = 0; i < objs.length && !val; i++) { val = objs[i].eventBackgroundColor || objs[i].eventColor || objs[i].backgroundColor || objs[i].color; } if (!val) { val = this.opt('eventBackgroundColor') || this.opt('eventColor'); } return val; }; // Queries for caller-specified color, then falls back to default EventRenderer.prototype.getBorderColor = function (eventDef) { var objs = this.getStylingObjs(eventDef); var i; var val; for (i = 0; i < objs.length && !val; i++) { val = objs[i].eventBorderColor || objs[i].eventColor || objs[i].borderColor || objs[i].color; } if (!val) { val = this.opt('eventBorderColor') || this.opt('eventColor'); } return val; }; // Queries for caller-specified color, then falls back to default EventRenderer.prototype.getTextColor = function (eventDef) { var objs = this.getStylingObjs(eventDef); var i; var val; for (i = 0; i < objs.length && !val; i++) { val = objs[i].eventTextColor || objs[i].textColor; } if (!val) { val = this.opt('eventTextColor'); } return val; }; EventRenderer.prototype.getStylingObjs = function (eventDef) { var objs = this.getFallbackStylingObjs(eventDef); objs.unshift(eventDef); return objs; }; EventRenderer.prototype.getFallbackStylingObjs = function (eventDef) { return [eventDef.source]; }; EventRenderer.prototype.sortEventSegs = function (segs) { segs.sort(util_1.proxy(this, 'compareEventSegs')); }; // A cmp function for determining which segments should take visual priority EventRenderer.prototype.compareEventSegs = function (seg1, seg2) { var f1 = seg1.footprint; var f2 = seg2.footprint; var cf1 = f1.componentFootprint; var cf2 = f2.componentFootprint; var r1 = cf1.unzonedRange; var r2 = cf2.unzonedRange; return r1.startMs - r2.startMs || // earlier events go first (r2.endMs - r2.startMs) - (r1.endMs - r1.startMs) || // tie? longer events go first cf2.isAllDay - cf1.isAllDay || // tie? put all-day events first (booleans cast to 0/1) util_1.compareByFieldSpecs(f1.eventDef, f2.eventDef, this.view.eventOrderSpecs, f1.eventDef.miscProps, f2.eventDef.miscProps); }; return EventRenderer; }()); exports.default = EventRenderer; /***/ }), /* 45 */, /* 46 */, /* 47 */, /* 48 */, /* 49 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var moment_ext_1 = __webpack_require__(11); // Plugin // ------------------------------------------------------------------------------------------------- moment_ext_1.newMomentProto.format = function () { if (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided? return formatDate(this, arguments[0]); // our extended formatting } if (this._ambigTime) { return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD'); } if (this._ambigZone) { return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss'); } if (this._fullCalendar) { // enhanced non-ambig moment? // moment.format() doesn't ensure english, but we want to. return moment_ext_1.oldMomentFormat(englishMoment(this)); } return moment_ext_1.oldMomentProto.format.apply(this, arguments); }; moment_ext_1.newMomentProto.toISOString = function () { if (this._ambigTime) { return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD'); } if (this._ambigZone) { return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss'); } if (this._fullCalendar) { // enhanced non-ambig moment? // depending on browser, moment might not output english. ensure english. // https://github.com/moment/moment/blob/2.18.1/src/lib/moment/format.js#L22 return moment_ext_1.oldMomentProto.toISOString.apply(englishMoment(this), arguments); } return moment_ext_1.oldMomentProto.toISOString.apply(this, arguments); }; function englishMoment(mom) { if (mom.locale() !== 'en') { return mom.clone().locale('en'); } return mom; } // Config // --------------------------------------------------------------------------------------------------------------------- /* Inserted between chunks in the fake ("intermediate") formatting string. Important that it passes as whitespace (\s) because moment often identifies non-standalone months via a regexp with an \s. */ var PART_SEPARATOR = '\u000b'; // vertical tab /* Inserted as the first character of a literal-text chunk to indicate that the literal text is not actually literal text, but rather, a "special" token that has custom rendering (see specialTokens map). */ var SPECIAL_TOKEN_MARKER = '\u001f'; // information separator 1 /* Inserted at the beginning and end of a span of text that must have non-zero numeric characters. Handling of these markers is done in a post-processing step at the very end of text rendering. */ var MAYBE_MARKER = '\u001e'; // information separator 2 var MAYBE_REGEXP = new RegExp(MAYBE_MARKER + '([^' + MAYBE_MARKER + ']*)' + MAYBE_MARKER, 'g'); // must be global /* Addition formatting tokens we want recognized */ var specialTokens = { t: function (date) { return moment_ext_1.oldMomentFormat(date, 'a').charAt(0); }, T: function (date) { return moment_ext_1.oldMomentFormat(date, 'A').charAt(0); } }; /* The first characters of formatting tokens for units that are 1 day or larger. `value` is for ranking relative size (lower means bigger). `unit` is a normalized unit, used for comparing moments. */ var largeTokenMap = { Y: { value: 1, unit: 'year' }, M: { value: 2, unit: 'month' }, W: { value: 3, unit: 'week' }, w: { value: 3, unit: 'week' }, D: { value: 4, unit: 'day' }, d: { value: 4, unit: 'day' } // day of week }; // Single Date Formatting // --------------------------------------------------------------------------------------------------------------------- /* Formats `date` with a Moment formatting string, but allow our non-zero areas and special token */ function formatDate(date, formatStr) { return renderFakeFormatString(getParsedFormatString(formatStr).fakeFormatString, date); } exports.formatDate = formatDate; // Date Range Formatting // ------------------------------------------------------------------------------------------------- // TODO: make it work with timezone offset /* Using a formatting string meant for a single date, generate a range string, like "Sep 2 - 9 2013", that intelligently inserts a separator where the dates differ. If the dates are the same as far as the format string is concerned, just return a single rendering of one date, without any separator. */ function formatRange(date1, date2, formatStr, separator, isRTL) { var localeData; date1 = moment_ext_1.default.parseZone(date1); date2 = moment_ext_1.default.parseZone(date2); localeData = date1.localeData(); // Expand localized format strings, like "LL" -> "MMMM D YYYY". // BTW, this is not important for `formatDate` because it is impossible to put custom tokens // or non-zero areas in Moment's localized format strings. formatStr = localeData.longDateFormat(formatStr) || formatStr; return renderParsedFormat(getParsedFormatString(formatStr), date1, date2, separator || ' - ', isRTL); } exports.formatRange = formatRange; /* Renders a range with an already-parsed format string. */ function renderParsedFormat(parsedFormat, date1, date2, separator, isRTL) { var sameUnits = parsedFormat.sameUnits; var unzonedDate1 = date1.clone().stripZone(); // for same-unit comparisons var unzonedDate2 = date2.clone().stripZone(); // " var renderedParts1 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date1); var renderedParts2 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date2); var leftI; var leftStr = ''; var rightI; var rightStr = ''; var middleI; var middleStr1 = ''; var middleStr2 = ''; var middleStr = ''; // Start at the leftmost side of the formatting string and continue until you hit a token // that is not the same between dates. for (leftI = 0; leftI < sameUnits.length && (!sameUnits[leftI] || unzonedDate1.isSame(unzonedDate2, sameUnits[leftI])); leftI++) { leftStr += renderedParts1[leftI]; } // Similarly, start at the rightmost side of the formatting string and move left for (rightI = sameUnits.length - 1; rightI > leftI && (!sameUnits[rightI] || unzonedDate1.isSame(unzonedDate2, sameUnits[rightI])); rightI--) { // If current chunk is on the boundary of unique date-content, and is a special-case // date-formatting postfix character, then don't consume it. Consider it unique date-content. // TODO: make configurable if (rightI - 1 === leftI && renderedParts1[rightI] === '.') { break; } rightStr = renderedParts1[rightI] + rightStr; } // The area in the middle is different for both of the dates. // Collect them distinctly so we can jam them together later. for (middleI = leftI; middleI <= rightI; middleI++) { middleStr1 += renderedParts1[middleI]; middleStr2 += renderedParts2[middleI]; } if (middleStr1 || middleStr2) { if (isRTL) { middleStr = middleStr2 + separator + middleStr1; } else { middleStr = middleStr1 + separator + middleStr2; } } return processMaybeMarkers(leftStr + middleStr + rightStr); } // Format String Parsing // --------------------------------------------------------------------------------------------------------------------- var parsedFormatStrCache = {}; /* Returns a parsed format string, leveraging a cache. */ function getParsedFormatString(formatStr) { return parsedFormatStrCache[formatStr] || (parsedFormatStrCache[formatStr] = parseFormatString(formatStr)); } /* Parses a format string into the following: - fakeFormatString: a momentJS formatting string, littered with special control characters that get post-processed. - sameUnits: for every part in fakeFormatString, if the part is a token, the value will be a unit string (like "day"), that indicates how similar a range's start & end must be in order to share the same formatted text. If not a token, then the value is null. Always a flat array (not nested liked "chunks"). */ function parseFormatString(formatStr) { var chunks = chunkFormatString(formatStr); return { fakeFormatString: buildFakeFormatString(chunks), sameUnits: buildSameUnits(chunks) }; } /* Break the formatting string into an array of chunks. A 'maybe' chunk will have nested chunks. */ function chunkFormatString(formatStr) { var chunks = []; var match; // TODO: more descrimination // \4 is a backreference to the first character of a multi-character set. var chunker = /\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g; while ((match = chunker.exec(formatStr))) { if (match[1]) { // a literal string inside [ ... ] chunks.push.apply(chunks, // append splitStringLiteral(match[1])); } else if (match[2]) { // non-zero formatting inside ( ... ) chunks.push({ maybe: chunkFormatString(match[2]) }); } else if (match[3]) { // a formatting token chunks.push({ token: match[3] }); } else if (match[5]) { // an unenclosed literal string chunks.push.apply(chunks, // append splitStringLiteral(match[5])); } } return chunks; } /* Potentially splits a literal-text string into multiple parts. For special cases. */ function splitStringLiteral(s) { if (s === '. ') { return ['.', ' ']; // for locales with periods bound to the end of each year/month/date } else { return [s]; } } /* Given chunks parsed from a real format string, generate a fake (aka "intermediate") format string with special control characters that will eventually be given to moment for formatting, and then post-processed. */ function buildFakeFormatString(chunks) { var parts = []; var i; var chunk; for (i = 0; i < chunks.length; i++) { chunk = chunks[i]; if (typeof chunk === 'string') { parts.push('[' + chunk + ']'); } else if (chunk.token) { if (chunk.token in specialTokens) { parts.push(SPECIAL_TOKEN_MARKER + // useful during post-processing '[' + chunk.token + ']' // preserve as literal text ); } else { parts.push(chunk.token); // unprotected text implies a format string } } else if (chunk.maybe) { parts.push(MAYBE_MARKER + // useful during post-processing buildFakeFormatString(chunk.maybe) + MAYBE_MARKER); } } return parts.join(PART_SEPARATOR); } /* Given parsed chunks from a real formatting string, generates an array of unit strings (like "day") that indicate in which regard two dates must be similar in order to share range formatting text. The `chunks` can be nested (because of "maybe" chunks), however, the returned array will be flat. */ function buildSameUnits(chunks) { var units = []; var i; var chunk; var tokenInfo; for (i = 0; i < chunks.length; i++) { chunk = chunks[i]; if (chunk.token) { tokenInfo = largeTokenMap[chunk.token.charAt(0)]; units.push(tokenInfo ? tokenInfo.unit : 'second'); // default to a very strict same-second } else if (chunk.maybe) { units.push.apply(units, // append buildSameUnits(chunk.maybe)); } else { units.push(null); } } return units; } // Rendering to text // --------------------------------------------------------------------------------------------------------------------- /* Formats a date with a fake format string, post-processes the control characters, then returns. */ function renderFakeFormatString(fakeFormatString, date) { return processMaybeMarkers(renderFakeFormatStringParts(fakeFormatString, date).join('')); } /* Formats a date into parts that will have been post-processed, EXCEPT for the "maybe" markers. */ function renderFakeFormatStringParts(fakeFormatString, date) { var parts = []; var fakeRender = moment_ext_1.oldMomentFormat(date, fakeFormatString); var fakeParts = fakeRender.split(PART_SEPARATOR); var i; var fakePart; for (i = 0; i < fakeParts.length; i++) { fakePart = fakeParts[i]; if (fakePart.charAt(0) === SPECIAL_TOKEN_MARKER) { parts.push( // the literal string IS the token's name. // call special token's registered function. specialTokens[fakePart.substring(1)](date)); } else { parts.push(fakePart); } } return parts; } /* Accepts an almost-finally-formatted string and processes the "maybe" control characters, returning a new string. */ function processMaybeMarkers(s) { return s.replace(MAYBE_REGEXP, function (m0, m1) { if (m1.match(/[1-9]/)) { // any non-zero numeric characters? return m1; } else { return ''; } }); } // Misc Utils // ------------------------------------------------------------------------------------------------- /* Returns a unit string, either 'year', 'month', 'day', or null for the most granular formatting token in the string. */ function queryMostGranularFormatUnit(formatStr) { var chunks = chunkFormatString(formatStr); var i; var chunk; var candidate; var best; for (i = 0; i < chunks.length; i++) { chunk = chunks[i]; if (chunk.token) { candidate = largeTokenMap[chunk.token.charAt(0)]; if (candidate) { if (!best || candidate.value > best.value) { best = candidate; } } } } if (best) { return best.unit; } return null; } exports.queryMostGranularFormatUnit = queryMostGranularFormatUnit; /***/ }), /* 50 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var EventRange = /** @class */ (function () { function EventRange(unzonedRange, eventDef, eventInstance) { this.unzonedRange = unzonedRange; this.eventDef = eventDef; if (eventInstance) { this.eventInstance = eventInstance; } } return EventRange; }()); exports.default = EventRange; /***/ }), /* 51 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var Class_1 = __webpack_require__(35); var EmitterMixin_1 = __webpack_require__(13); var ListenerMixin_1 = __webpack_require__(7); var Model = /** @class */ (function (_super) { tslib_1.__extends(Model, _super); function Model() { var _this = _super.call(this) || this; _this._watchers = {}; _this._props = {}; _this.applyGlobalWatchers(); _this.constructed(); return _this; } Model.watch = function (name) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } // subclasses should make a masked-copy of the superclass's map // TODO: write test if (!this.prototype.hasOwnProperty('_globalWatchArgs')) { this.prototype._globalWatchArgs = Object.create(this.prototype._globalWatchArgs); } this.prototype._globalWatchArgs[name] = args; }; Model.prototype.constructed = function () { // useful for monkeypatching. TODO: BaseClass? }; Model.prototype.applyGlobalWatchers = function () { var map = this._globalWatchArgs; var name; for (name in map) { this.watch.apply(this, [name].concat(map[name])); } }; Model.prototype.has = function (name) { return name in this._props; }; Model.prototype.get = function (name) { if (name === undefined) { return this._props; } return this._props[name]; }; Model.prototype.set = function (name, val) { var newProps; if (typeof name === 'string') { newProps = {}; newProps[name] = val === undefined ? null : val; } else { newProps = name; } this.setProps(newProps); }; Model.prototype.reset = function (newProps) { var oldProps = this._props; var changeset = {}; // will have undefined's to signal unsets var name; for (name in oldProps) { changeset[name] = undefined; } for (name in newProps) { changeset[name] = newProps[name]; } this.setProps(changeset); }; Model.prototype.unset = function (name) { var newProps = {}; var names; var i; if (typeof name === 'string') { names = [name]; } else { names = name; } for (i = 0; i < names.length; i++) { newProps[names[i]] = undefined; } this.setProps(newProps); }; Model.prototype.setProps = function (newProps) { var changedProps = {}; var changedCnt = 0; var name; var val; for (name in newProps) { val = newProps[name]; // a change in value? // if an object, don't check equality, because might have been mutated internally. // TODO: eventually enforce immutability. if (typeof val === 'object' || val !== this._props[name]) { changedProps[name] = val; changedCnt++; } } if (changedCnt) { this.trigger('before:batchChange', changedProps); for (name in changedProps) { val = changedProps[name]; this.trigger('before:change', name, val); this.trigger('before:change:' + name, val); } for (name in changedProps) { val = changedProps[name]; if (val === undefined) { delete this._props[name]; } else { this._props[name] = val; } this.trigger('change:' + name, val); this.trigger('change', name, val); } this.trigger('batchChange', changedProps); } }; Model.prototype.watch = function (name, depList, startFunc, stopFunc) { var _this = this; this.unwatch(name); this._watchers[name] = this._watchDeps(depList, function (deps) { var res = startFunc.call(_this, deps); if (res && res.then) { _this.unset(name); // put in an unset state while resolving res.then(function (val) { _this.set(name, val); }); } else { _this.set(name, res); } }, function (deps) { _this.unset(name); if (stopFunc) { stopFunc.call(_this, deps); } }); }; Model.prototype.unwatch = function (name) { var watcher = this._watchers[name]; if (watcher) { delete this._watchers[name]; watcher.teardown(); } }; Model.prototype._watchDeps = function (depList, startFunc, stopFunc) { var _this = this; var queuedChangeCnt = 0; var depCnt = depList.length; var satisfyCnt = 0; var values = {}; // what's passed as the `deps` arguments var bindTuples = []; // array of [ eventName, handlerFunc ] arrays var isCallingStop = false; var onBeforeDepChange = function (depName, val, isOptional) { queuedChangeCnt++; if (queuedChangeCnt === 1) { // first change to cause a "stop" ? if (satisfyCnt === depCnt) { // all deps previously satisfied? isCallingStop = true; stopFunc(values); isCallingStop = false; } } }; var onDepChange = function (depName, val, isOptional) { if (val === undefined) { // unsetting a value? // required dependency that was previously set? if (!isOptional && values[depName] !== undefined) { satisfyCnt--; } delete values[depName]; } else { // setting a value? // required dependency that was previously unset? if (!isOptional && values[depName] === undefined) { satisfyCnt++; } values[depName] = val; } queuedChangeCnt--; if (!queuedChangeCnt) { // last change to cause a "start"? // now finally satisfied or satisfied all along? if (satisfyCnt === depCnt) { // if the stopFunc initiated another value change, ignore it. // it will be processed by another change event anyway. if (!isCallingStop) { startFunc(values); } } } }; // intercept for .on() that remembers handlers var bind = function (eventName, handler) { _this.on(eventName, handler); bindTuples.push([eventName, handler]); }; // listen to dependency changes depList.forEach(function (depName) { var isOptional = false; if (depName.charAt(0) === '?') { // TODO: more DRY depName = depName.substring(1); isOptional = true; } bind('before:change:' + depName, function (val) { onBeforeDepChange(depName, val, isOptional); }); bind('change:' + depName, function (val) { onDepChange(depName, val, isOptional); }); }); // process current dependency values depList.forEach(function (depName) { var isOptional = false; if (depName.charAt(0) === '?') { // TODO: more DRY depName = depName.substring(1); isOptional = true; } if (_this.has(depName)) { values[depName] = _this.get(depName); satisfyCnt++; } else if (isOptional) { satisfyCnt++; } }); // initially satisfied if (satisfyCnt === depCnt) { startFunc(values); } return { teardown: function () { // remove all handlers for (var i = 0; i < bindTuples.length; i++) { _this.off(bindTuples[i][0], bindTuples[i][1]); } bindTuples = null; // was satisfied, so call stopFunc if (satisfyCnt === depCnt) { stopFunc(); } }, flash: function () { if (satisfyCnt === depCnt) { stopFunc(); startFunc(values); } } }; }; Model.prototype.flash = function (name) { var watcher = this._watchers[name]; if (watcher) { watcher.flash(); } }; return Model; }(Class_1.default)); exports.default = Model; Model.prototype._globalWatchArgs = {}; // mutation protection in Model.watch EmitterMixin_1.default.mixInto(Model); ListenerMixin_1.default.mixInto(Model); /***/ }), /* 52 */ /***/ (function(module, exports, __webpack_require__) { /* USAGE: import { default as ParsableModelMixin, ParsableModelInterface } from './ParsableModelMixin' in class: applyProps: ParsableModelInterface['applyProps'] applyManualStandardProps: ParsableModelInterface['applyManualStandardProps'] applyMiscProps: ParsableModelInterface['applyMiscProps'] isStandardProp: ParsableModelInterface['isStandardProp'] static defineStandardProps = ParsableModelMixin.defineStandardProps static copyVerbatimStandardProps = ParsableModelMixin.copyVerbatimStandardProps after class: ParsableModelMixin.mixInto(TheClass) */ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); var Mixin_1 = __webpack_require__(15); var ParsableModelMixin = /** @class */ (function (_super) { tslib_1.__extends(ParsableModelMixin, _super); function ParsableModelMixin() { return _super !== null && _super.apply(this, arguments) || this; } ParsableModelMixin.defineStandardProps = function (propDefs) { var proto = this.prototype; if (!proto.hasOwnProperty('standardPropMap')) { proto.standardPropMap = Object.create(proto.standardPropMap); } util_1.copyOwnProps(propDefs, proto.standardPropMap); }; ParsableModelMixin.copyVerbatimStandardProps = function (src, dest) { var map = this.prototype.standardPropMap; var propName; for (propName in map) { if (src[propName] != null && // in the src object? map[propName] === true // false means "copy verbatim" ) { dest[propName] = src[propName]; } } }; /* Returns true/false for success. Meant to be only called ONCE, at object creation. */ ParsableModelMixin.prototype.applyProps = function (rawProps) { var standardPropMap = this.standardPropMap; var manualProps = {}; var miscProps = {}; var propName; for (propName in rawProps) { if (standardPropMap[propName] === true) { // copy verbatim this[propName] = rawProps[propName]; } else if (standardPropMap[propName] === false) { manualProps[propName] = rawProps[propName]; } else { miscProps[propName] = rawProps[propName]; } } this.applyMiscProps(miscProps); return this.applyManualStandardProps(manualProps); }; /* If subclasses override, they must call this supermethod and return the boolean response. Meant to be only called ONCE, at object creation. */ ParsableModelMixin.prototype.applyManualStandardProps = function (rawProps) { return true; }; /* Can be called even after initial object creation. */ ParsableModelMixin.prototype.applyMiscProps = function (rawProps) { // subclasses can implement }; /* TODO: why is this a method when defineStandardProps is static */ ParsableModelMixin.prototype.isStandardProp = function (propName) { return propName in this.standardPropMap; }; return ParsableModelMixin; }(Mixin_1.default)); exports.default = ParsableModelMixin; ParsableModelMixin.prototype.standardPropMap = {}; // will be cloned by defineStandardProps /***/ }), /* 53 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var EventInstance = /** @class */ (function () { function EventInstance(def, dateProfile) { this.def = def; this.dateProfile = dateProfile; } EventInstance.prototype.toLegacy = function () { var dateProfile = this.dateProfile; var obj = this.def.toLegacy(); obj.start = dateProfile.start.clone(); obj.end = dateProfile.end ? dateProfile.end.clone() : null; return obj; }; return EventInstance; }()); exports.default = EventInstance; /***/ }), /* 54 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var moment = __webpack_require__(0); var EventDef_1 = __webpack_require__(37); var EventInstance_1 = __webpack_require__(53); var EventDateProfile_1 = __webpack_require__(16); var RecurringEventDef = /** @class */ (function (_super) { tslib_1.__extends(RecurringEventDef, _super); function RecurringEventDef() { return _super !== null && _super.apply(this, arguments) || this; } RecurringEventDef.prototype.isAllDay = function () { return !this.startTime && !this.endTime; }; RecurringEventDef.prototype.buildInstances = function (unzonedRange) { var calendar = this.source.calendar; var unzonedDate = unzonedRange.getStart(); var unzonedEnd = unzonedRange.getEnd(); var zonedDayStart; var instanceStart; var instanceEnd; var instances = []; while (unzonedDate.isBefore(unzonedEnd)) { // if everyday, or this particular day-of-week if (!this.dowHash || this.dowHash[unzonedDate.day()]) { zonedDayStart = calendar.applyTimezone(unzonedDate); instanceStart = zonedDayStart.clone(); instanceEnd = null; if (this.startTime) { instanceStart.time(this.startTime); } else { instanceStart.stripTime(); } if (this.endTime) { instanceEnd = zonedDayStart.clone().time(this.endTime); } instances.push(new EventInstance_1.default(this, // definition new EventDateProfile_1.default(instanceStart, instanceEnd, calendar))); } unzonedDate.add(1, 'days'); } return instances; }; RecurringEventDef.prototype.setDow = function (dowNumbers) { if (!this.dowHash) { this.dowHash = {}; } for (var i = 0; i < dowNumbers.length; i++) { this.dowHash[dowNumbers[i]] = true; } }; RecurringEventDef.prototype.clone = function () { var def = _super.prototype.clone.call(this); if (def.startTime) { def.startTime = moment.duration(this.startTime); } if (def.endTime) { def.endTime = moment.duration(this.endTime); } if (this.dowHash) { def.dowHash = $.extend({}, this.dowHash); } return def; }; return RecurringEventDef; }(EventDef_1.default)); exports.default = RecurringEventDef; /* HACK to work with TypeScript mixins NOTE: if super-method fails, should still attempt to apply */ RecurringEventDef.prototype.applyProps = function (rawProps) { var superSuccess = EventDef_1.default.prototype.applyProps.call(this, rawProps); if (rawProps.start) { this.startTime = moment.duration(rawProps.start); } if (rawProps.end) { this.endTime = moment.duration(rawProps.end); } if (rawProps.dow) { this.setDow(rawProps.dow); } return superSuccess; }; // Parsing // --------------------------------------------------------------------------------------------------------------------- RecurringEventDef.defineStandardProps({ start: false, end: false, dow: false }); /***/ }), /* 55 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var moment = __webpack_require__(0); var util_1 = __webpack_require__(4); var UnzonedRange_1 = __webpack_require__(5); var DateProfileGenerator = /** @class */ (function () { function DateProfileGenerator(_view) { this._view = _view; } DateProfileGenerator.prototype.opt = function (name) { return this._view.opt(name); }; DateProfileGenerator.prototype.trimHiddenDays = function (unzonedRange) { return this._view.trimHiddenDays(unzonedRange); }; DateProfileGenerator.prototype.msToUtcMoment = function (ms, forceAllDay) { return this._view.calendar.msToUtcMoment(ms, forceAllDay); }; /* Date Range Computation ------------------------------------------------------------------------------------------------------------------*/ // Builds a structure with info about what the dates/ranges will be for the "prev" view. DateProfileGenerator.prototype.buildPrev = function (currentDateProfile) { var prevDate = currentDateProfile.date.clone() .startOf(currentDateProfile.currentRangeUnit) .subtract(currentDateProfile.dateIncrement); return this.build(prevDate, -1); }; // Builds a structure with info about what the dates/ranges will be for the "next" view. DateProfileGenerator.prototype.buildNext = function (currentDateProfile) { var nextDate = currentDateProfile.date.clone() .startOf(currentDateProfile.currentRangeUnit) .add(currentDateProfile.dateIncrement); return this.build(nextDate, 1); }; // Builds a structure holding dates/ranges for rendering around the given date. // Optional direction param indicates whether the date is being incremented/decremented // from its previous value. decremented = -1, incremented = 1 (default). DateProfileGenerator.prototype.build = function (date, direction, forceToValid) { if (forceToValid === void 0) { forceToValid = false; } var isDateAllDay = !date.hasTime(); var validUnzonedRange; var minTime = null; var maxTime = null; var currentInfo; var isRangeAllDay; var renderUnzonedRange; var activeUnzonedRange; var isValid; validUnzonedRange = this.buildValidRange(); validUnzonedRange = this.trimHiddenDays(validUnzonedRange); if (forceToValid) { date = this.msToUtcMoment(validUnzonedRange.constrainDate(date), // returns MS isDateAllDay); } currentInfo = this.buildCurrentRangeInfo(date, direction); isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit); renderUnzonedRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.unzonedRange), currentInfo.unit, isRangeAllDay); renderUnzonedRange = this.trimHiddenDays(renderUnzonedRange); activeUnzonedRange = renderUnzonedRange.clone(); if (!this.opt('showNonCurrentDates')) { activeUnzonedRange = activeUnzonedRange.intersect(currentInfo.unzonedRange); } minTime = moment.duration(this.opt('minTime')); maxTime = moment.duration(this.opt('maxTime')); activeUnzonedRange = this.adjustActiveRange(activeUnzonedRange, minTime, maxTime); activeUnzonedRange = activeUnzonedRange.intersect(validUnzonedRange); // might return null if (activeUnzonedRange) { date = this.msToUtcMoment(activeUnzonedRange.constrainDate(date), // returns MS isDateAllDay); } // it's invalid if the originally requested date is not contained, // or if the range is completely outside of the valid range. isValid = currentInfo.unzonedRange.intersectsWith(validUnzonedRange); return { // constraint for where prev/next operations can go and where events can be dragged/resized to. // an object with optional start and end properties. validUnzonedRange: validUnzonedRange, // range the view is formally responsible for. // for example, a month view might have 1st-31st, excluding padded dates currentUnzonedRange: currentInfo.unzonedRange, // name of largest unit being displayed, like "month" or "week" currentRangeUnit: currentInfo.unit, isRangeAllDay: isRangeAllDay, // dates that display events and accept drag-n-drop // will be `null` if no dates accept events activeUnzonedRange: activeUnzonedRange, // date range with a rendered skeleton // includes not-active days that need some sort of DOM renderUnzonedRange: renderUnzonedRange, // Duration object that denotes the first visible time of any given day minTime: minTime, // Duration object that denotes the exclusive visible end time of any given day maxTime: maxTime, isValid: isValid, date: date, // how far the current date will move for a prev/next operation dateIncrement: this.buildDateIncrement(currentInfo.duration) // pass a fallback (might be null) ^ }; }; // Builds an object with optional start/end properties. // Indicates the minimum/maximum dates to display. // not responsible for trimming hidden days. DateProfileGenerator.prototype.buildValidRange = function () { return this._view.getUnzonedRangeOption('validRange', this._view.calendar.getNow()) || new UnzonedRange_1.default(); // completely open-ended }; // Builds a structure with info about the "current" range, the range that is // highlighted as being the current month for example. // See build() for a description of `direction`. // Guaranteed to have `range` and `unit` properties. `duration` is optional. // TODO: accept a MS-time instead of a moment `date`? DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) { var viewSpec = this._view.viewSpec; var duration = null; var unit = null; var unzonedRange = null; var dayCount; if (viewSpec.duration) { duration = viewSpec.duration; unit = viewSpec.durationUnit; unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit); } else if ((dayCount = this.opt('dayCount'))) { unit = 'day'; unzonedRange = this.buildRangeFromDayCount(date, direction, dayCount); } else if ((unzonedRange = this.buildCustomVisibleRange(date))) { unit = util_1.computeGreatestUnit(unzonedRange.getStart(), unzonedRange.getEnd()); } else { duration = this.getFallbackDuration(); unit = util_1.computeGreatestUnit(duration); unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit); } return { duration: duration, unit: unit, unzonedRange: unzonedRange }; }; DateProfileGenerator.prototype.getFallbackDuration = function () { return moment.duration({ days: 1 }); }; // Returns a new activeUnzonedRange to have time values (un-ambiguate) // minTime or maxTime causes the range to expand. DateProfileGenerator.prototype.adjustActiveRange = function (unzonedRange, minTime, maxTime) { var start = unzonedRange.getStart(); var end = unzonedRange.getEnd(); if (this._view.usesMinMaxTime) { if (minTime < 0) { start.time(0).add(minTime); } if (maxTime > 24 * 60 * 60 * 1000) { // beyond 24 hours? end.time(maxTime - (24 * 60 * 60 * 1000)); } } return new UnzonedRange_1.default(start, end); }; // Builds the "current" range when it is specified as an explicit duration. // `unit` is the already-computed computeGreatestUnit value of duration. // TODO: accept a MS-time instead of a moment `date`? DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) { var alignment = this.opt('dateAlignment'); var dateIncrementInput; var dateIncrementDuration; var start; var end; var res; // compute what the alignment should be if (!alignment) { dateIncrementInput = this.opt('dateIncrement'); if (dateIncrementInput) { dateIncrementDuration = moment.duration(dateIncrementInput); // use the smaller of the two units if (dateIncrementDuration < duration) { alignment = util_1.computeDurationGreatestUnit(dateIncrementDuration, dateIncrementInput); } else { alignment = unit; } } else { alignment = unit; } } // if the view displays a single day or smaller if (duration.as('days') <= 1) { if (this._view.isHiddenDay(start)) { start = this._view.skipHiddenDays(start, direction); start.startOf('day'); } } function computeRes() { start = date.clone().startOf(alignment); end = start.clone().add(duration); res = new UnzonedRange_1.default(start, end); } computeRes(); // if range is completely enveloped by hidden days, go past the hidden days if (!this.trimHiddenDays(res)) { date = this._view.skipHiddenDays(date, direction); computeRes(); } return res; }; // Builds the "current" range when a dayCount is specified. // TODO: accept a MS-time instead of a moment `date`? DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) { var customAlignment = this.opt('dateAlignment'); var runningCount = 0; var start; var end; if (customAlignment || direction !== -1) { start = date.clone(); if (customAlignment) { start.startOf(customAlignment); } start.startOf('day'); start = this._view.skipHiddenDays(start); end = start.clone(); do { end.add(1, 'day'); if (!this._view.isHiddenDay(end)) { runningCount++; } } while (runningCount < dayCount); } else { end = date.clone().startOf('day').add(1, 'day'); end = this._view.skipHiddenDays(end, -1, true); start = end.clone(); do { start.add(-1, 'day'); if (!this._view.isHiddenDay(start)) { runningCount++; } } while (runningCount < dayCount); } return new UnzonedRange_1.default(start, end); }; // Builds a normalized range object for the "visible" range, // which is a way to define the currentUnzonedRange and activeUnzonedRange at the same time. // TODO: accept a MS-time instead of a moment `date`? DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) { var visibleUnzonedRange = this._view.getUnzonedRangeOption('visibleRange', this._view.calendar.applyTimezone(date) // correct zone. also generates new obj that avoids mutations ); if (visibleUnzonedRange && (visibleUnzonedRange.startMs == null || visibleUnzonedRange.endMs == null)) { return null; } return visibleUnzonedRange; }; // Computes the range that will represent the element/cells for *rendering*, // but which may have voided days/times. // not responsible for trimming hidden days. DateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) { return currentUnzonedRange.clone(); }; // Compute the duration value that should be added/substracted to the current date // when a prev/next operation happens. DateProfileGenerator.prototype.buildDateIncrement = function (fallback) { var dateIncrementInput = this.opt('dateIncrement'); var customAlignment; if (dateIncrementInput) { return moment.duration(dateIncrementInput); } else if ((customAlignment = this.opt('dateAlignment'))) { return moment.duration(1, customAlignment); } else if (fallback) { return fallback; } else { return moment.duration({ days: 1 }); } }; return DateProfileGenerator; }()); exports.default = DateProfileGenerator; /***/ }), /* 56 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var Promise_1 = __webpack_require__(21); var EventSource_1 = __webpack_require__(6); var SingleEventDef_1 = __webpack_require__(9); var ArrayEventSource = /** @class */ (function (_super) { tslib_1.__extends(ArrayEventSource, _super); function ArrayEventSource(calendar) { var _this = _super.call(this, calendar) || this; _this.eventDefs = []; // for if setRawEventDefs is never called return _this; } ArrayEventSource.parse = function (rawInput, calendar) { var rawProps; // normalize raw input if ($.isArray(rawInput.events)) { // extended form rawProps = rawInput; } else if ($.isArray(rawInput)) { // short form rawProps = { events: rawInput }; } if (rawProps) { return EventSource_1.default.parse.call(this, rawProps, calendar); } return false; }; ArrayEventSource.prototype.setRawEventDefs = function (rawEventDefs) { this.rawEventDefs = rawEventDefs; this.eventDefs = this.parseEventDefs(rawEventDefs); }; ArrayEventSource.prototype.fetch = function (start, end, timezone) { var eventDefs = this.eventDefs; var i; if (this.currentTimezone != null && this.currentTimezone !== timezone) { for (i = 0; i < eventDefs.length; i++) { if (eventDefs[i] instanceof SingleEventDef_1.default) { eventDefs[i].rezone(); } } } this.currentTimezone = timezone; return Promise_1.default.resolve(eventDefs); }; ArrayEventSource.prototype.addEventDef = function (eventDef) { this.eventDefs.push(eventDef); }; /* eventDefId already normalized to a string */ ArrayEventSource.prototype.removeEventDefsById = function (eventDefId) { return util_1.removeMatching(this.eventDefs, function (eventDef) { return eventDef.id === eventDefId; }); }; ArrayEventSource.prototype.removeAllEventDefs = function () { this.eventDefs = []; }; ArrayEventSource.prototype.getPrimitive = function () { return this.rawEventDefs; }; ArrayEventSource.prototype.applyManualStandardProps = function (rawProps) { var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps); this.setRawEventDefs(rawProps.events); return superSuccess; }; return ArrayEventSource; }(EventSource_1.default)); exports.default = ArrayEventSource; ArrayEventSource.defineStandardProps({ events: false // don't automatically transfer }); /***/ }), /* 57 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var StandardTheme_1 = __webpack_require__(221); var JqueryUiTheme_1 = __webpack_require__(222); var themeClassHash = {}; function defineThemeSystem(themeName, themeClass) { themeClassHash[themeName] = themeClass; } exports.defineThemeSystem = defineThemeSystem; function getThemeSystemClass(themeSetting) { if (!themeSetting) { return StandardTheme_1.default; } else if (themeSetting === true) { return JqueryUiTheme_1.default; } else { return themeClassHash[themeSetting]; } } exports.getThemeSystemClass = getThemeSystemClass; /***/ }), /* 58 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); /* A cache for the left/right/top/bottom/width/height values for one or more elements. Works with both offset (from topleft document) and position (from offsetParent). options: - els - isHorizontal - isVertical */ var CoordCache = /** @class */ (function () { function CoordCache(options) { this.isHorizontal = false; // whether to query for left/right/width this.isVertical = false; // whether to query for top/bottom/height this.els = $(options.els); this.isHorizontal = options.isHorizontal; this.isVertical = options.isVertical; this.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null; } // Queries the els for coordinates and stores them. // Call this method before using and of the get* methods below. CoordCache.prototype.build = function () { var offsetParentEl = this.forcedOffsetParentEl; if (!offsetParentEl && this.els.length > 0) { offsetParentEl = this.els.eq(0).offsetParent(); } this.origin = offsetParentEl ? offsetParentEl.offset() : null; this.boundingRect = this.queryBoundingRect(); if (this.isHorizontal) { this.buildElHorizontals(); } if (this.isVertical) { this.buildElVerticals(); } }; // Destroys all internal data about coordinates, freeing memory CoordCache.prototype.clear = function () { this.origin = null; this.boundingRect = null; this.lefts = null; this.rights = null; this.tops = null; this.bottoms = null; }; // When called, if coord caches aren't built, builds them CoordCache.prototype.ensureBuilt = function () { if (!this.origin) { this.build(); } }; // Populates the left/right internal coordinate arrays CoordCache.prototype.buildElHorizontals = function () { var lefts = []; var rights = []; this.els.each(function (i, node) { var el = $(node); var left = el.offset().left; var width = el.outerWidth(); lefts.push(left); rights.push(left + width); }); this.lefts = lefts; this.rights = rights; }; // Populates the top/bottom internal coordinate arrays CoordCache.prototype.buildElVerticals = function () { var tops = []; var bottoms = []; this.els.each(function (i, node) { var el = $(node); var top = el.offset().top; var height = el.outerHeight(); tops.push(top); bottoms.push(top + height); }); this.tops = tops; this.bottoms = bottoms; }; // Given a left offset (from document left), returns the index of the el that it horizontally intersects. // If no intersection is made, returns undefined. CoordCache.prototype.getHorizontalIndex = function (leftOffset) { this.ensureBuilt(); var lefts = this.lefts; var rights = this.rights; var len = lefts.length; var i; for (i = 0; i < len; i++) { if (leftOffset >= lefts[i] && leftOffset < rights[i]) { return i; } } }; // Given a top offset (from document top), returns the index of the el that it vertically intersects. // If no intersection is made, returns undefined. CoordCache.prototype.getVerticalIndex = function (topOffset) { this.ensureBuilt(); var tops = this.tops; var bottoms = this.bottoms; var len = tops.length; var i; for (i = 0; i < len; i++) { if (topOffset >= tops[i] && topOffset < bottoms[i]) { return i; } } }; // Gets the left offset (from document left) of the element at the given index CoordCache.prototype.getLeftOffset = function (leftIndex) { this.ensureBuilt(); return this.lefts[leftIndex]; }; // Gets the left position (from offsetParent left) of the element at the given index CoordCache.prototype.getLeftPosition = function (leftIndex) { this.ensureBuilt(); return this.lefts[leftIndex] - this.origin.left; }; // Gets the right offset (from document left) of the element at the given index. // This value is NOT relative to the document's right edge, like the CSS concept of "right" would be. CoordCache.prototype.getRightOffset = function (leftIndex) { this.ensureBuilt(); return this.rights[leftIndex]; }; // Gets the right position (from offsetParent left) of the element at the given index. // This value is NOT relative to the offsetParent's right edge, like the CSS concept of "right" would be. CoordCache.prototype.getRightPosition = function (leftIndex) { this.ensureBuilt(); return this.rights[leftIndex] - this.origin.left; }; // Gets the width of the element at the given index CoordCache.prototype.getWidth = function (leftIndex) { this.ensureBuilt(); return this.rights[leftIndex] - this.lefts[leftIndex]; }; // Gets the top offset (from document top) of the element at the given index CoordCache.prototype.getTopOffset = function (topIndex) { this.ensureBuilt(); return this.tops[topIndex]; }; // Gets the top position (from offsetParent top) of the element at the given position CoordCache.prototype.getTopPosition = function (topIndex) { this.ensureBuilt(); return this.tops[topIndex] - this.origin.top; }; // Gets the bottom offset (from the document top) of the element at the given index. // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be. CoordCache.prototype.getBottomOffset = function (topIndex) { this.ensureBuilt(); return this.bottoms[topIndex]; }; // Gets the bottom position (from the offsetParent top) of the element at the given index. // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be. CoordCache.prototype.getBottomPosition = function (topIndex) { this.ensureBuilt(); return this.bottoms[topIndex] - this.origin.top; }; // Gets the height of the element at the given index CoordCache.prototype.getHeight = function (topIndex) { this.ensureBuilt(); return this.bottoms[topIndex] - this.tops[topIndex]; }; // Bounding Rect // TODO: decouple this from CoordCache // Compute and return what the elements' bounding rectangle is, from the user's perspective. // Right now, only returns a rectangle if constrained by an overflow:scroll element. // Returns null if there are no elements CoordCache.prototype.queryBoundingRect = function () { var scrollParentEl; if (this.els.length > 0) { scrollParentEl = util_1.getScrollParent(this.els.eq(0)); if (!scrollParentEl.is(document) && !scrollParentEl.is('html,body') // don't consider these bounding rects. solves issue 3615 ) { return util_1.getClientRect(scrollParentEl); } } return null; }; CoordCache.prototype.isPointInBounds = function (leftOffset, topOffset) { return this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset); }; CoordCache.prototype.isLeftInBounds = function (leftOffset) { return !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right); }; CoordCache.prototype.isTopInBounds = function (topOffset) { return !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom); }; return CoordCache; }()); exports.default = CoordCache; /***/ }), /* 59 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var ListenerMixin_1 = __webpack_require__(7); var GlobalEmitter_1 = __webpack_require__(23); /* Tracks a drag's mouse movement, firing various handlers ----------------------------------------------------------------------------------------------------------------------*/ // TODO: use Emitter var DragListener = /** @class */ (function () { function DragListener(options) { this.isInteracting = false; this.isDistanceSurpassed = false; this.isDelayEnded = false; this.isDragging = false; this.isTouch = false; this.isGeneric = false; // initiated by 'dragstart' (jqui) this.shouldCancelTouchScroll = true; this.scrollAlwaysKills = false; this.isAutoScroll = false; // defaults this.scrollSensitivity = 30; // pixels from edge for scrolling to start this.scrollSpeed = 200; // pixels per second, at maximum speed this.scrollIntervalMs = 50; // millisecond wait between scroll increment this.options = options || {}; } // Interaction (high-level) // ----------------------------------------------------------------------------------------------------------------- DragListener.prototype.startInteraction = function (ev, extraOptions) { if (extraOptions === void 0) { extraOptions = {}; } if (ev.type === 'mousedown') { if (GlobalEmitter_1.default.get().shouldIgnoreMouse()) { return; } else if (!util_1.isPrimaryMouseButton(ev)) { return; } else { ev.preventDefault(); // prevents native selection in most browsers } } if (!this.isInteracting) { // process options this.delay = util_1.firstDefined(extraOptions.delay, this.options.delay, 0); this.minDistance = util_1.firstDefined(extraOptions.distance, this.options.distance, 0); this.subjectEl = this.options.subjectEl; util_1.preventSelection($('body')); this.isInteracting = true; this.isTouch = util_1.getEvIsTouch(ev); this.isGeneric = ev.type === 'dragstart'; this.isDelayEnded = false; this.isDistanceSurpassed = false; this.originX = util_1.getEvX(ev); this.originY = util_1.getEvY(ev); this.scrollEl = util_1.getScrollParent($(ev.target)); this.bindHandlers(); this.initAutoScroll(); this.handleInteractionStart(ev); this.startDelay(ev); if (!this.minDistance) { this.handleDistanceSurpassed(ev); } } }; DragListener.prototype.handleInteractionStart = function (ev) { this.trigger('interactionStart', ev); }; DragListener.prototype.endInteraction = function (ev, isCancelled) { if (this.isInteracting) { this.endDrag(ev); if (this.delayTimeoutId) { clearTimeout(this.delayTimeoutId); this.delayTimeoutId = null; } this.destroyAutoScroll(); this.unbindHandlers(); this.isInteracting = false; this.handleInteractionEnd(ev, isCancelled); util_1.allowSelection($('body')); } }; DragListener.prototype.handleInteractionEnd = function (ev, isCancelled) { this.trigger('interactionEnd', ev, isCancelled || false); }; // Binding To DOM // ----------------------------------------------------------------------------------------------------------------- DragListener.prototype.bindHandlers = function () { // some browsers (Safari in iOS 10) don't allow preventDefault on touch events that are bound after touchstart, // so listen to the GlobalEmitter singleton, which is always bound, instead of the document directly. var globalEmitter = GlobalEmitter_1.default.get(); if (this.isGeneric) { this.listenTo($(document), { drag: this.handleMove, dragstop: this.endInteraction }); } else if (this.isTouch) { this.listenTo(globalEmitter, { touchmove: this.handleTouchMove, touchend: this.endInteraction, scroll: this.handleTouchScroll }); } else { this.listenTo(globalEmitter, { mousemove: this.handleMouseMove, mouseup: this.endInteraction }); } this.listenTo(globalEmitter, { selectstart: util_1.preventDefault, contextmenu: util_1.preventDefault // long taps would open menu on Chrome dev tools }); }; DragListener.prototype.unbindHandlers = function () { this.stopListeningTo(GlobalEmitter_1.default.get()); this.stopListeningTo($(document)); // for isGeneric }; // Drag (high-level) // ----------------------------------------------------------------------------------------------------------------- // extraOptions ignored if drag already started DragListener.prototype.startDrag = function (ev, extraOptions) { this.startInteraction(ev, extraOptions); // ensure interaction began if (!this.isDragging) { this.isDragging = true; this.handleDragStart(ev); } }; DragListener.prototype.handleDragStart = function (ev) { this.trigger('dragStart', ev); }; DragListener.prototype.handleMove = function (ev) { var dx = util_1.getEvX(ev) - this.originX; var dy = util_1.getEvY(ev) - this.originY; var minDistance = this.minDistance; var distanceSq; // current distance from the origin, squared if (!this.isDistanceSurpassed) { distanceSq = dx * dx + dy * dy; if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem this.handleDistanceSurpassed(ev); } } if (this.isDragging) { this.handleDrag(dx, dy, ev); } }; // Called while the mouse is being moved and when we know a legitimate drag is taking place DragListener.prototype.handleDrag = function (dx, dy, ev) { this.trigger('drag', dx, dy, ev); this.updateAutoScroll(ev); // will possibly cause scrolling }; DragListener.prototype.endDrag = function (ev) { if (this.isDragging) { this.isDragging = false; this.handleDragEnd(ev); } }; DragListener.prototype.handleDragEnd = function (ev) { this.trigger('dragEnd', ev); }; // Delay // ----------------------------------------------------------------------------------------------------------------- DragListener.prototype.startDelay = function (initialEv) { var _this = this; if (this.delay) { this.delayTimeoutId = setTimeout(function () { _this.handleDelayEnd(initialEv); }, this.delay); } else { this.handleDelayEnd(initialEv); } }; DragListener.prototype.handleDelayEnd = function (initialEv) { this.isDelayEnded = true; if (this.isDistanceSurpassed) { this.startDrag(initialEv); } }; // Distance // ----------------------------------------------------------------------------------------------------------------- DragListener.prototype.handleDistanceSurpassed = function (ev) { this.isDistanceSurpassed = true; if (this.isDelayEnded) { this.startDrag(ev); } }; // Mouse / Touch // ----------------------------------------------------------------------------------------------------------------- DragListener.prototype.handleTouchMove = function (ev) { // prevent inertia and touchmove-scrolling while dragging if (this.isDragging && this.shouldCancelTouchScroll) { ev.preventDefault(); } this.handleMove(ev); }; DragListener.prototype.handleMouseMove = function (ev) { this.handleMove(ev); }; // Scrolling (unrelated to auto-scroll) // ----------------------------------------------------------------------------------------------------------------- DragListener.prototype.handleTouchScroll = function (ev) { // if the drag is being initiated by touch, but a scroll happens before // the drag-initiating delay is over, cancel the drag if (!this.isDragging || this.scrollAlwaysKills) { this.endInteraction(ev, true); // isCancelled=true } }; // Utils // ----------------------------------------------------------------------------------------------------------------- // Triggers a callback. Calls a function in the option hash of the same name. // Arguments beyond the first `name` are forwarded on. DragListener.prototype.trigger = function (name) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } if (this.options[name]) { this.options[name].apply(this, args); } // makes _methods callable by event name. TODO: kill this if (this['_' + name]) { this['_' + name].apply(this, args); } }; // Auto-scroll // ----------------------------------------------------------------------------------------------------------------- DragListener.prototype.initAutoScroll = function () { var scrollEl = this.scrollEl; this.isAutoScroll = this.options.scroll && scrollEl && !scrollEl.is(window) && !scrollEl.is(document); if (this.isAutoScroll) { // debounce makes sure rapid calls don't happen this.listenTo(scrollEl, 'scroll', util_1.debounce(this.handleDebouncedScroll, 100)); } }; DragListener.prototype.destroyAutoScroll = function () { this.endAutoScroll(); // kill any animation loop // remove the scroll handler if there is a scrollEl if (this.isAutoScroll) { this.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :( } }; // Computes and stores the bounding rectangle of scrollEl DragListener.prototype.computeScrollBounds = function () { if (this.isAutoScroll) { this.scrollBounds = util_1.getOuterRect(this.scrollEl); // TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars } }; // Called when the dragging is in progress and scrolling should be updated DragListener.prototype.updateAutoScroll = function (ev) { var sensitivity = this.scrollSensitivity; var bounds = this.scrollBounds; var topCloseness; var bottomCloseness; var leftCloseness; var rightCloseness; var topVel = 0; var leftVel = 0; if (bounds) { // only scroll if scrollEl exists // compute closeness to edges. valid range is from 0.0 - 1.0 topCloseness = (sensitivity - (util_1.getEvY(ev) - bounds.top)) / sensitivity; bottomCloseness = (sensitivity - (bounds.bottom - util_1.getEvY(ev))) / sensitivity; leftCloseness = (sensitivity - (util_1.getEvX(ev) - bounds.left)) / sensitivity; rightCloseness = (sensitivity - (bounds.right - util_1.getEvX(ev))) / sensitivity; // translate vertical closeness into velocity. // mouse must be completely in bounds for velocity to happen. if (topCloseness >= 0 && topCloseness <= 1) { topVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up } else if (bottomCloseness >= 0 && bottomCloseness <= 1) { topVel = bottomCloseness * this.scrollSpeed; } // translate horizontal closeness into velocity if (leftCloseness >= 0 && leftCloseness <= 1) { leftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left } else if (rightCloseness >= 0 && rightCloseness <= 1) { leftVel = rightCloseness * this.scrollSpeed; } } this.setScrollVel(topVel, leftVel); }; // Sets the speed-of-scrolling for the scrollEl DragListener.prototype.setScrollVel = function (topVel, leftVel) { this.scrollTopVel = topVel; this.scrollLeftVel = leftVel; this.constrainScrollVel(); // massages into realistic values // if there is non-zero velocity, and an animation loop hasn't already started, then START if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) { this.scrollIntervalId = setInterval(util_1.proxy(this, 'scrollIntervalFunc'), // scope to `this` this.scrollIntervalMs); } }; // Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way DragListener.prototype.constrainScrollVel = function () { var el = this.scrollEl; if (this.scrollTopVel < 0) { // scrolling up? if (el.scrollTop() <= 0) { // already scrolled all the way up? this.scrollTopVel = 0; } } else if (this.scrollTopVel > 0) { // scrolling down? if (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down? this.scrollTopVel = 0; } } if (this.scrollLeftVel < 0) { // scrolling left? if (el.scrollLeft() <= 0) { // already scrolled all the left? this.scrollLeftVel = 0; } } else if (this.scrollLeftVel > 0) { // scrolling right? if (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right? this.scrollLeftVel = 0; } } }; // This function gets called during every iteration of the scrolling animation loop DragListener.prototype.scrollIntervalFunc = function () { var el = this.scrollEl; var frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by // change the value of scrollEl's scroll if (this.scrollTopVel) { el.scrollTop(el.scrollTop() + this.scrollTopVel * frac); } if (this.scrollLeftVel) { el.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac); } this.constrainScrollVel(); // since the scroll values changed, recompute the velocities // if scrolled all the way, which causes the vels to be zero, stop the animation loop if (!this.scrollTopVel && !this.scrollLeftVel) { this.endAutoScroll(); } }; // Kills any existing scrolling animation loop DragListener.prototype.endAutoScroll = function () { if (this.scrollIntervalId) { clearInterval(this.scrollIntervalId); this.scrollIntervalId = null; this.handleScrollEnd(); } }; // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce) DragListener.prototype.handleDebouncedScroll = function () { // recompute all coordinates, but *only* if this is *not* part of our scrolling animation if (!this.scrollIntervalId) { this.handleScrollEnd(); } }; DragListener.prototype.handleScrollEnd = function () { // Called when scrolling has stopped, whether through auto scroll, or the user scrolling }; return DragListener; }()); exports.default = DragListener; ListenerMixin_1.default.mixInto(DragListener); /***/ }), /* 60 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); var Mixin_1 = __webpack_require__(15); /* A set of rendering and date-related methods for a visual component comprised of one or more rows of day columns. Prerequisite: the object being mixed into needs to be a *Grid* */ var DayTableMixin = /** @class */ (function (_super) { tslib_1.__extends(DayTableMixin, _super); function DayTableMixin() { return _super !== null && _super.apply(this, arguments) || this; } // Populates internal variables used for date calculation and rendering DayTableMixin.prototype.updateDayTable = function () { var t = this; var view = t.view; var calendar = view.calendar; var date = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.startMs, true); var end = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.endMs, true); var dayIndex = -1; var dayIndices = []; var dayDates = []; var daysPerRow; var firstDay; var rowCnt; while (date.isBefore(end)) { // loop each day from start to end if (view.isHiddenDay(date)) { dayIndices.push(dayIndex + 0.5); // mark that it's between indices } else { dayIndex++; dayIndices.push(dayIndex); dayDates.push(date.clone()); } date.add(1, 'days'); } if (this.breakOnWeeks) { // count columns until the day-of-week repeats firstDay = dayDates[0].day(); for (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) { if (dayDates[daysPerRow].day() === firstDay) { break; } } rowCnt = Math.ceil(dayDates.length / daysPerRow); } else { rowCnt = 1; daysPerRow = dayDates.length; } this.dayDates = dayDates; this.dayIndices = dayIndices; this.daysPerRow = daysPerRow; this.rowCnt = rowCnt; this.updateDayTableCols(); }; // Computes and assigned the colCnt property and updates any options that may be computed from it DayTableMixin.prototype.updateDayTableCols = function () { this.colCnt = this.computeColCnt(); this.colHeadFormat = this.opt('columnHeaderFormat') || this.opt('columnFormat') || // deprecated this.computeColHeadFormat(); }; // Determines how many columns there should be in the table DayTableMixin.prototype.computeColCnt = function () { return this.daysPerRow; }; // Computes the ambiguously-timed moment for the given cell DayTableMixin.prototype.getCellDate = function (row, col) { return this.dayDates[this.getCellDayIndex(row, col)].clone(); }; // Computes the ambiguously-timed date range for the given cell DayTableMixin.prototype.getCellRange = function (row, col) { var start = this.getCellDate(row, col); var end = start.clone().add(1, 'days'); return { start: start, end: end }; }; // Returns the number of day cells, chronologically, from the first of the grid (0-based) DayTableMixin.prototype.getCellDayIndex = function (row, col) { return row * this.daysPerRow + this.getColDayIndex(col); }; // Returns the numner of day cells, chronologically, from the first cell in *any given row* DayTableMixin.prototype.getColDayIndex = function (col) { if (this.isRTL) { return this.colCnt - 1 - col; } else { return col; } }; // Given a date, returns its chronolocial cell-index from the first cell of the grid. // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. // If before the first offset, returns a negative number. // If after the last offset, returns an offset past the last cell offset. // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. DayTableMixin.prototype.getDateDayIndex = function (date) { var dayIndices = this.dayIndices; var dayOffset = date.diff(this.dayDates[0], 'days'); if (dayOffset < 0) { return dayIndices[0] - 1; } else if (dayOffset >= dayIndices.length) { return dayIndices[dayIndices.length - 1] + 1; } else { return dayIndices[dayOffset]; } }; /* Options ------------------------------------------------------------------------------------------------------------------*/ // Computes a default column header formatting string if `colFormat` is not explicitly defined DayTableMixin.prototype.computeColHeadFormat = function () { // if more than one week row, or if there are a lot of columns with not much space, // put just the day numbers will be in each cell if (this.rowCnt > 1 || this.colCnt > 10) { return 'ddd'; // "Sat" } else if (this.colCnt > 1) { return this.opt('dayOfMonthFormat'); // "Sat 12/10" } else { return 'dddd'; // "Saturday" } }; /* Slicing ------------------------------------------------------------------------------------------------------------------*/ // Slices up a date range into a segment for every week-row it intersects with DayTableMixin.prototype.sliceRangeByRow = function (unzonedRange) { var daysPerRow = this.daysPerRow; var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index var segs = []; var row; var rowFirst; var rowLast; // inclusive day-index range for current row var segFirst; var segLast; // inclusive day-index range for segment for (row = 0; row < this.rowCnt; row++) { rowFirst = row * daysPerRow; rowLast = rowFirst + daysPerRow - 1; // intersect segment's offset range with the row's segFirst = Math.max(rangeFirst, rowFirst); segLast = Math.min(rangeLast, rowLast); // deal with in-between indices segFirst = Math.ceil(segFirst); // in-between starts round to next cell segLast = Math.floor(segLast); // in-between ends round to prev cell if (segFirst <= segLast) { // was there any intersection with the current row? segs.push({ row: row, // normalize to start of row firstRowDayIndex: segFirst - rowFirst, lastRowDayIndex: segLast - rowFirst, // must be matching integers to be the segment's start/end isStart: segFirst === rangeFirst, isEnd: segLast === rangeLast }); } } return segs; }; // Slices up a date range into a segment for every day-cell it intersects with. // TODO: make more DRY with sliceRangeByRow somehow. DayTableMixin.prototype.sliceRangeByDay = function (unzonedRange) { var daysPerRow = this.daysPerRow; var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index var segs = []; var row; var rowFirst; var rowLast; // inclusive day-index range for current row var i; var segFirst; var segLast; // inclusive day-index range for segment for (row = 0; row < this.rowCnt; row++) { rowFirst = row * daysPerRow; rowLast = rowFirst + daysPerRow - 1; for (i = rowFirst; i <= rowLast; i++) { // intersect segment's offset range with the row's segFirst = Math.max(rangeFirst, i); segLast = Math.min(rangeLast, i); // deal with in-between indices segFirst = Math.ceil(segFirst); // in-between starts round to next cell segLast = Math.floor(segLast); // in-between ends round to prev cell if (segFirst <= segLast) { // was there any intersection with the current row? segs.push({ row: row, // normalize to start of row firstRowDayIndex: segFirst - rowFirst, lastRowDayIndex: segLast - rowFirst, // must be matching integers to be the segment's start/end isStart: segFirst === rangeFirst, isEnd: segLast === rangeLast }); } } } return segs; }; /* Header Rendering ------------------------------------------------------------------------------------------------------------------*/ DayTableMixin.prototype.renderHeadHtml = function () { var theme = this.view.calendar.theme; return '' + '<div class="fc-row ' + theme.getClass('headerRow') + '">' + '<table class="' + theme.getClass('tableGrid') + '">' + '<thead>' + this.renderHeadTrHtml() + '</thead>' + '</table>' + '</div>'; }; DayTableMixin.prototype.renderHeadIntroHtml = function () { return this.renderIntroHtml(); // fall back to generic }; DayTableMixin.prototype.renderHeadTrHtml = function () { return '' + '<tr>' + (this.isRTL ? '' : this.renderHeadIntroHtml()) + this.renderHeadDateCellsHtml() + (this.isRTL ? this.renderHeadIntroHtml() : '') + '</tr>'; }; DayTableMixin.prototype.renderHeadDateCellsHtml = function () { var htmls = []; var col; var date; for (col = 0; col < this.colCnt; col++) { date = this.getCellDate(0, col); htmls.push(this.renderHeadDateCellHtml(date)); } return htmls.join(''); }; // TODO: when internalApiVersion, accept an object for HTML attributes // (colspan should be no different) DayTableMixin.prototype.renderHeadDateCellHtml = function (date, colspan, otherAttrs) { var t = this; var view = t.view; var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow. var classNames = [ 'fc-day-header', view.calendar.theme.getClass('widgetHeader') ]; var innerHtml; if (typeof t.opt('columnHeaderHtml') === 'function') { innerHtml = t.opt('columnHeaderHtml')(date); } else if (typeof t.opt('columnHeaderText') === 'function') { innerHtml = util_1.htmlEscape(t.opt('columnHeaderText')(date)); } else { innerHtml = util_1.htmlEscape(date.format(t.colHeadFormat)); } // if only one row of days, the classNames on the header can represent the specific days beneath if (t.rowCnt === 1) { classNames = classNames.concat( // includes the day-of-week class // noThemeHighlight=true (don't highlight the header) t.getDayClasses(date, true)); } else { classNames.push('fc-' + util_1.dayIDs[date.day()]); // only add the day-of-week class } return '' + '<th class="' + classNames.join(' ') + '"' + ((isDateValid && t.rowCnt) === 1 ? ' data-date="' + date.format('YYYY-MM-DD') + '"' : '') + (colspan > 1 ? ' colspan="' + colspan + '"' : '') + (otherAttrs ? ' ' + otherAttrs : '') + '>' + (isDateValid ? // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff) view.buildGotoAnchorHtml({ date: date, forceOff: t.rowCnt > 1 || t.colCnt === 1 }, innerHtml) : // if not valid, display text, but no link innerHtml) + '</th>'; }; /* Background Rendering ------------------------------------------------------------------------------------------------------------------*/ DayTableMixin.prototype.renderBgTrHtml = function (row) { return '' + '<tr>' + (this.isRTL ? '' : this.renderBgIntroHtml(row)) + this.renderBgCellsHtml(row) + (this.isRTL ? this.renderBgIntroHtml(row) : '') + '</tr>'; }; DayTableMixin.prototype.renderBgIntroHtml = function (row) { return this.renderIntroHtml(); // fall back to generic }; DayTableMixin.prototype.renderBgCellsHtml = function (row) { var htmls = []; var col; var date; for (col = 0; col < this.colCnt; col++) { date = this.getCellDate(row, col); htmls.push(this.renderBgCellHtml(date)); } return htmls.join(''); }; DayTableMixin.prototype.renderBgCellHtml = function (date, otherAttrs) { var t = this; var view = t.view; var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow. var classes = t.getDayClasses(date); classes.unshift('fc-day', view.calendar.theme.getClass('widgetContent')); return '<td class="' + classes.join(' ') + '"' + (isDateValid ? ' data-date="' + date.format('YYYY-MM-DD') + '"' : // if date has a time, won't format it '') + (otherAttrs ? ' ' + otherAttrs : '') + '></td>'; }; /* Generic ------------------------------------------------------------------------------------------------------------------*/ DayTableMixin.prototype.renderIntroHtml = function () { // Generates the default HTML intro for any row. User classes should override }; // TODO: a generic method for dealing with <tr>, RTL, intro // when increment internalApiVersion // wrapTr (scheduler) /* Utils ------------------------------------------------------------------------------------------------------------------*/ // Applies the generic "intro" and "outro" HTML to the given cells. // Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro. DayTableMixin.prototype.bookendCells = function (trEl) { var introHtml = this.renderIntroHtml(); if (introHtml) { if (this.isRTL) { trEl.append(introHtml); } else { trEl.prepend(introHtml); } } }; return DayTableMixin; }(Mixin_1.default)); exports.default = DayTableMixin; /***/ }), /* 61 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var BusinessHourRenderer = /** @class */ (function () { /* component implements: - eventRangesToEventFootprints - eventFootprintsToSegs */ function BusinessHourRenderer(component, fillRenderer) { this.component = component; this.fillRenderer = fillRenderer; } BusinessHourRenderer.prototype.render = function (businessHourGenerator) { var component = this.component; var unzonedRange = component._getDateProfile().activeUnzonedRange; var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(component.hasAllDayBusinessHours, unzonedRange); var eventFootprints = eventInstanceGroup ? component.eventRangesToEventFootprints(eventInstanceGroup.sliceRenderRanges(unzonedRange)) : []; this.renderEventFootprints(eventFootprints); }; BusinessHourRenderer.prototype.renderEventFootprints = function (eventFootprints) { var segs = this.component.eventFootprintsToSegs(eventFootprints); this.renderSegs(segs); this.segs = segs; }; BusinessHourRenderer.prototype.renderSegs = function (segs) { if (this.fillRenderer) { this.fillRenderer.renderSegs('businessHours', segs, { getClasses: function (seg) { return ['fc-nonbusiness', 'fc-bgevent']; } }); } }; BusinessHourRenderer.prototype.unrender = function () { if (this.fillRenderer) { this.fillRenderer.unrender('businessHours'); } this.segs = null; }; BusinessHourRenderer.prototype.getSegs = function () { return this.segs || []; }; return BusinessHourRenderer; }()); exports.default = BusinessHourRenderer; /***/ }), /* 62 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var FillRenderer = /** @class */ (function () { function FillRenderer(component) { this.fillSegTag = 'div'; this.component = component; this.elsByFill = {}; } FillRenderer.prototype.renderFootprint = function (type, componentFootprint, props) { this.renderSegs(type, this.component.componentFootprintToSegs(componentFootprint), props); }; FillRenderer.prototype.renderSegs = function (type, segs, props) { var els; segs = this.buildSegEls(type, segs, props); // assignes `.el` to each seg. returns successfully rendered segs els = this.attachSegEls(type, segs); if (els) { this.reportEls(type, els); } return segs; }; // Unrenders a specific type of fill that is currently rendered on the grid FillRenderer.prototype.unrender = function (type) { var el = this.elsByFill[type]; if (el) { el.remove(); delete this.elsByFill[type]; } }; // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types. // Only returns segments that successfully rendered. FillRenderer.prototype.buildSegEls = function (type, segs, props) { var _this = this; var html = ''; var renderedSegs = []; var i; if (segs.length) { // build a large concatenation of segment HTML for (i = 0; i < segs.length; i++) { html += this.buildSegHtml(type, segs[i], props); } // Grab individual elements from the combined HTML string. Use each as the default rendering. // Then, compute the 'el' for each segment. $(html).each(function (i, node) { var seg = segs[i]; var el = $(node); // allow custom filter methods per-type if (props.filterEl) { el = props.filterEl(seg, el); } if (el) { // custom filters did not cancel the render el = $(el); // allow custom filter to return raw DOM node // correct element type? (would be bad if a non-TD were inserted into a table for example) if (el.is(_this.fillSegTag)) { seg.el = el; renderedSegs.push(seg); } } }); } return renderedSegs; }; // Builds the HTML needed for one fill segment. Generic enough to work with different types. FillRenderer.prototype.buildSegHtml = function (type, seg, props) { // custom hooks per-type var classes = props.getClasses ? props.getClasses(seg) : []; var css = util_1.cssToStr(props.getCss ? props.getCss(seg) : {}); return '<' + this.fillSegTag + (classes.length ? ' class="' + classes.join(' ') + '"' : '') + (css ? ' style="' + css + '"' : '') + '></' + this.fillSegTag + '>'; }; // Should return wrapping DOM structure FillRenderer.prototype.attachSegEls = function (type, segs) { // subclasses must implement }; FillRenderer.prototype.reportEls = function (type, nodes) { if (this.elsByFill[type]) { this.elsByFill[type] = this.elsByFill[type].add(nodes); } else { this.elsByFill[type] = $(nodes); } }; return FillRenderer; }()); exports.default = FillRenderer; /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var SingleEventDef_1 = __webpack_require__(9); var EventFootprint_1 = __webpack_require__(34); var EventSource_1 = __webpack_require__(6); var HelperRenderer = /** @class */ (function () { function HelperRenderer(component, eventRenderer) { this.view = component._getView(); this.component = component; this.eventRenderer = eventRenderer; } HelperRenderer.prototype.renderComponentFootprint = function (componentFootprint) { this.renderEventFootprints([ this.fabricateEventFootprint(componentFootprint) ]); }; HelperRenderer.prototype.renderEventDraggingFootprints = function (eventFootprints, sourceSeg, isTouch) { this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-dragging', isTouch ? null : this.view.opt('dragOpacity')); }; HelperRenderer.prototype.renderEventResizingFootprints = function (eventFootprints, sourceSeg, isTouch) { this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-resizing'); }; HelperRenderer.prototype.renderEventFootprints = function (eventFootprints, sourceSeg, extraClassNames, opacity) { var segs = this.component.eventFootprintsToSegs(eventFootprints); var classNames = 'fc-helper ' + (extraClassNames || ''); var i; // assigns each seg's el and returns a subset of segs that were rendered segs = this.eventRenderer.renderFgSegEls(segs); for (i = 0; i < segs.length; i++) { segs[i].el.addClass(classNames); } if (opacity != null) { for (i = 0; i < segs.length; i++) { segs[i].el.css('opacity', opacity); } } this.helperEls = this.renderSegs(segs, sourceSeg); }; /* Must return all mock event elements */ HelperRenderer.prototype.renderSegs = function (segs, sourceSeg) { // Subclasses must implement }; HelperRenderer.prototype.unrender = function () { if (this.helperEls) { this.helperEls.remove(); this.helperEls = null; } }; HelperRenderer.prototype.fabricateEventFootprint = function (componentFootprint) { var calendar = this.view.calendar; var eventDateProfile = calendar.footprintToDateProfile(componentFootprint); var dummyEvent = new SingleEventDef_1.default(new EventSource_1.default(calendar)); var dummyInstance; dummyEvent.dateProfile = eventDateProfile; dummyInstance = dummyEvent.buildInstance(); return new EventFootprint_1.default(componentFootprint, dummyEvent, dummyInstance); }; return HelperRenderer; }()); exports.default = HelperRenderer; /***/ }), /* 64 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var GlobalEmitter_1 = __webpack_require__(23); var Interaction_1 = __webpack_require__(14); var EventPointing = /** @class */ (function (_super) { tslib_1.__extends(EventPointing, _super); function EventPointing() { return _super !== null && _super.apply(this, arguments) || this; } /* component must implement: - publiclyTrigger */ EventPointing.prototype.bindToEl = function (el) { var component = this.component; component.bindSegHandlerToEl(el, 'click', this.handleClick.bind(this)); component.bindSegHandlerToEl(el, 'mouseenter', this.handleMouseover.bind(this)); component.bindSegHandlerToEl(el, 'mouseleave', this.handleMouseout.bind(this)); }; EventPointing.prototype.handleClick = function (seg, ev) { var res = this.component.publiclyTrigger('eventClick', { context: seg.el[0], args: [seg.footprint.getEventLegacy(), ev, this.view] }); if (res === false) { ev.preventDefault(); } }; // Updates internal state and triggers handlers for when an event element is moused over EventPointing.prototype.handleMouseover = function (seg, ev) { if (!GlobalEmitter_1.default.get().shouldIgnoreMouse() && !this.mousedOverSeg) { this.mousedOverSeg = seg; // TODO: move to EventSelecting's responsibility if (this.view.isEventDefResizable(seg.footprint.eventDef)) { seg.el.addClass('fc-allow-mouse-resize'); } this.component.publiclyTrigger('eventMouseover', { context: seg.el[0], args: [seg.footprint.getEventLegacy(), ev, this.view] }); } }; // Updates internal state and triggers handlers for when an event element is moused out. // Can be given no arguments, in which case it will mouseout the segment that was previously moused over. EventPointing.prototype.handleMouseout = function (seg, ev) { if (this.mousedOverSeg) { this.mousedOverSeg = null; // TODO: move to EventSelecting's responsibility if (this.view.isEventDefResizable(seg.footprint.eventDef)) { seg.el.removeClass('fc-allow-mouse-resize'); } this.component.publiclyTrigger('eventMouseout', { context: seg.el[0], args: [ seg.footprint.getEventLegacy(), ev || {}, this.view ] }); } }; EventPointing.prototype.end = function () { if (this.mousedOverSeg) { this.handleMouseout(this.mousedOverSeg); } }; return EventPointing; }(Interaction_1.default)); exports.default = EventPointing; /***/ }), /* 65 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var Mixin_1 = __webpack_require__(15); var DateClicking_1 = __webpack_require__(237); var DateSelecting_1 = __webpack_require__(236); var EventPointing_1 = __webpack_require__(64); var EventDragging_1 = __webpack_require__(235); var EventResizing_1 = __webpack_require__(234); var ExternalDropping_1 = __webpack_require__(233); var StandardInteractionsMixin = /** @class */ (function (_super) { tslib_1.__extends(StandardInteractionsMixin, _super); function StandardInteractionsMixin() { return _super !== null && _super.apply(this, arguments) || this; } return StandardInteractionsMixin; }(Mixin_1.default)); exports.default = StandardInteractionsMixin; StandardInteractionsMixin.prototype.dateClickingClass = DateClicking_1.default; StandardInteractionsMixin.prototype.dateSelectingClass = DateSelecting_1.default; StandardInteractionsMixin.prototype.eventPointingClass = EventPointing_1.default; StandardInteractionsMixin.prototype.eventDraggingClass = EventDragging_1.default; StandardInteractionsMixin.prototype.eventResizingClass = EventResizing_1.default; StandardInteractionsMixin.prototype.externalDroppingClass = ExternalDropping_1.default; /***/ }), /* 66 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var CoordCache_1 = __webpack_require__(58); var Popover_1 = __webpack_require__(227); var UnzonedRange_1 = __webpack_require__(5); var ComponentFootprint_1 = __webpack_require__(12); var EventFootprint_1 = __webpack_require__(34); var BusinessHourRenderer_1 = __webpack_require__(61); var StandardInteractionsMixin_1 = __webpack_require__(65); var InteractiveDateComponent_1 = __webpack_require__(42); var DayTableMixin_1 = __webpack_require__(60); var DayGridEventRenderer_1 = __webpack_require__(243); var DayGridHelperRenderer_1 = __webpack_require__(244); var DayGridFillRenderer_1 = __webpack_require__(245); /* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week. ----------------------------------------------------------------------------------------------------------------------*/ var DayGrid = /** @class */ (function (_super) { tslib_1.__extends(DayGrid, _super); function DayGrid(view) { var _this = _super.call(this, view) || this; _this.cellWeekNumbersVisible = false; // display week numbers in day cell? _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid // isRigid determines whether the individual rows should ignore the contents and be a constant height. // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient. _this.isRigid = false; _this.hasAllDayBusinessHours = true; return _this; } // Slices up the given span (unzoned start/end with other misc data) into an array of segments DayGrid.prototype.componentFootprintToSegs = function (componentFootprint) { var segs = this.sliceRangeByRow(componentFootprint.unzonedRange); var i; var seg; for (i = 0; i < segs.length; i++) { seg = segs[i]; if (this.isRTL) { seg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex; seg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex; } else { seg.leftCol = seg.firstRowDayIndex; seg.rightCol = seg.lastRowDayIndex; } } return segs; }; /* Date Rendering ------------------------------------------------------------------------------------------------------------------*/ DayGrid.prototype.renderDates = function (dateProfile) { this.dateProfile = dateProfile; this.updateDayTable(); this.renderGrid(); }; DayGrid.prototype.unrenderDates = function () { this.removeSegPopover(); }; // Renders the rows and columns into the component's `this.el`, which should already be assigned. DayGrid.prototype.renderGrid = function () { var view = this.view; var rowCnt = this.rowCnt; var colCnt = this.colCnt; var html = ''; var row; var col; if (this.headContainerEl) { this.headContainerEl.html(this.renderHeadHtml()); } for (row = 0; row < rowCnt; row++) { html += this.renderDayRowHtml(row, this.isRigid); } this.el.html(html); this.rowEls = this.el.find('.fc-row'); this.cellEls = this.el.find('.fc-day, .fc-disabled-day'); this.rowCoordCache = new CoordCache_1.default({ els: this.rowEls, isVertical: true }); this.colCoordCache = new CoordCache_1.default({ els: this.cellEls.slice(0, this.colCnt), isHorizontal: true }); // trigger dayRender with each cell's element for (row = 0; row < rowCnt; row++) { for (col = 0; col < colCnt; col++) { this.publiclyTrigger('dayRender', { context: view, args: [ this.getCellDate(row, col), this.getCellEl(row, col), view ] }); } } }; // Generates the HTML for a single row, which is a div that wraps a table. // `row` is the row number. DayGrid.prototype.renderDayRowHtml = function (row, isRigid) { var theme = this.view.calendar.theme; var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')]; if (isRigid) { classes.push('fc-rigid'); } return '' + '<div class="' + classes.join(' ') + '">' + '<div class="fc-bg">' + '<table class="' + theme.getClass('tableGrid') + '">' + this.renderBgTrHtml(row) + '</table>' + '</div>' + '<div class="fc-content-skeleton">' + '<table>' + (this.getIsNumbersVisible() ? '<thead>' + this.renderNumberTrHtml(row) + '</thead>' : '') + '</table>' + '</div>' + '</div>'; }; DayGrid.prototype.getIsNumbersVisible = function () { return this.getIsDayNumbersVisible() || this.cellWeekNumbersVisible; }; DayGrid.prototype.getIsDayNumbersVisible = function () { return this.rowCnt > 1; }; /* Grid Number Rendering ------------------------------------------------------------------------------------------------------------------*/ DayGrid.prototype.renderNumberTrHtml = function (row) { return '' + '<tr>' + (this.isRTL ? '' : this.renderNumberIntroHtml(row)) + this.renderNumberCellsHtml(row) + (this.isRTL ? this.renderNumberIntroHtml(row) : '') + '</tr>'; }; DayGrid.prototype.renderNumberIntroHtml = function (row) { return this.renderIntroHtml(); }; DayGrid.prototype.renderNumberCellsHtml = function (row) { var htmls = []; var col; var date; for (col = 0; col < this.colCnt; col++) { date = this.getCellDate(row, col); htmls.push(this.renderNumberCellHtml(date)); } return htmls.join(''); }; // Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton. // The number row will only exist if either day numbers or week numbers are turned on. DayGrid.prototype.renderNumberCellHtml = function (date) { var view = this.view; var html = ''; var isDateValid = this.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow. var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid; var classes; var weekCalcFirstDoW; if (!isDayNumberVisible && !this.cellWeekNumbersVisible) { // no numbers in day cell (week number must be along the side) return '<td></td>'; // will create an empty space above events :( } classes = this.getDayClasses(date); classes.unshift('fc-day-top'); if (this.cellWeekNumbersVisible) { // To determine the day of week number change under ISO, we cannot // rely on moment.js methods such as firstDayOfWeek() or weekday(), // because they rely on the locale's dow (possibly overridden by // our firstDay option), which may not be Monday. We cannot change // dow, because that would affect the calendar start day as well. if (date._locale._fullCalendar_weekCalc === 'ISO') { weekCalcFirstDoW = 1; // Monday by ISO 8601 definition } else { weekCalcFirstDoW = date._locale.firstDayOfWeek(); } } html += '<td class="' + classes.join(' ') + '"' + (isDateValid ? ' data-date="' + date.format() + '"' : '') + '>'; if (this.cellWeekNumbersVisible && (date.day() === weekCalcFirstDoW)) { html += view.buildGotoAnchorHtml({ date: date, type: 'week' }, { 'class': 'fc-week-number' }, date.format('w') // inner HTML ); } if (isDayNumberVisible) { html += view.buildGotoAnchorHtml(date, { 'class': 'fc-day-number' }, date.format('D') // inner HTML ); } html += '</td>'; return html; }; /* Hit System ------------------------------------------------------------------------------------------------------------------*/ DayGrid.prototype.prepareHits = function () { this.colCoordCache.build(); this.rowCoordCache.build(); this.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack }; DayGrid.prototype.releaseHits = function () { this.colCoordCache.clear(); this.rowCoordCache.clear(); }; DayGrid.prototype.queryHit = function (leftOffset, topOffset) { if (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) { var col = this.colCoordCache.getHorizontalIndex(leftOffset); var row = this.rowCoordCache.getVerticalIndex(topOffset); if (row != null && col != null) { return this.getCellHit(row, col); } } }; DayGrid.prototype.getHitFootprint = function (hit) { var range = this.getCellRange(hit.row, hit.col); return new ComponentFootprint_1.default(new UnzonedRange_1.default(range.start, range.end), true // all-day? ); }; DayGrid.prototype.getHitEl = function (hit) { return this.getCellEl(hit.row, hit.col); }; /* Cell System ------------------------------------------------------------------------------------------------------------------*/ // FYI: the first column is the leftmost column, regardless of date DayGrid.prototype.getCellHit = function (row, col) { return { row: row, col: col, component: this, left: this.colCoordCache.getLeftOffset(col), right: this.colCoordCache.getRightOffset(col), top: this.rowCoordCache.getTopOffset(row), bottom: this.rowCoordCache.getBottomOffset(row) }; }; DayGrid.prototype.getCellEl = function (row, col) { return this.cellEls.eq(row * this.colCnt + col); }; /* Event Rendering ------------------------------------------------------------------------------------------------------------------*/ // Unrenders all events currently rendered on the grid DayGrid.prototype.executeEventUnrender = function () { this.removeSegPopover(); // removes the "more.." events popover _super.prototype.executeEventUnrender.call(this); }; // Retrieves all rendered segment objects currently rendered on the grid DayGrid.prototype.getOwnEventSegs = function () { // append the segments from the "more..." popover return _super.prototype.getOwnEventSegs.call(this).concat(this.popoverSegs || []); }; /* Event Drag Visualization ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event or external element being dragged. // `eventLocation` has zoned start and end (optional) DayGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) { var i; for (i = 0; i < eventFootprints.length; i++) { this.renderHighlight(eventFootprints[i].componentFootprint); } // render drags from OTHER components as helpers if (eventFootprints.length && seg && seg.component !== this) { this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch); return true; // signal helpers rendered } }; // Unrenders any visual indication of a hovering event DayGrid.prototype.unrenderDrag = function () { this.unrenderHighlight(); this.helperRenderer.unrender(); }; /* Event Resize Visualization ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event being resized DayGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { var i; for (i = 0; i < eventFootprints.length; i++) { this.renderHighlight(eventFootprints[i].componentFootprint); } this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch); }; // Unrenders a visual indication of an event being resized DayGrid.prototype.unrenderEventResize = function () { this.unrenderHighlight(); this.helperRenderer.unrender(); }; /* More+ Link Popover ------------------------------------------------------------------------------------------------------------------*/ DayGrid.prototype.removeSegPopover = function () { if (this.segPopover) { this.segPopover.hide(); // in handler, will call segPopover's removeElement } }; // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid. // `levelLimit` can be false (don't limit), a number, or true (should be computed). DayGrid.prototype.limitRows = function (levelLimit) { var rowStructs = this.eventRenderer.rowStructs || []; var row; // row # var rowLevelLimit; for (row = 0; row < rowStructs.length; row++) { this.unlimitRow(row); if (!levelLimit) { rowLevelLimit = false; } else if (typeof levelLimit === 'number') { rowLevelLimit = levelLimit; } else { rowLevelLimit = this.computeRowLevelLimit(row); } if (rowLevelLimit !== false) { this.limitRow(row, rowLevelLimit); } } }; // Computes the number of levels a row will accomodate without going outside its bounds. // Assumes the row is "rigid" (maintains a constant height regardless of what is inside). // `row` is the row number. DayGrid.prototype.computeRowLevelLimit = function (row) { var rowEl = this.rowEls.eq(row); // the containing "fake" row div var rowHeight = rowEl.height(); // TODO: cache somehow? var trEls = this.eventRenderer.rowStructs[row].tbodyEl.children(); var i; var trEl; var trHeight; function iterInnerHeights(i, childNode) { trHeight = Math.max(trHeight, $(childNode).outerHeight()); } // Reveal one level <tr> at a time and stop when we find one out of bounds for (i = 0; i < trEls.length; i++) { trEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal) // with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell, // so instead, find the tallest inner content element. trHeight = 0; trEl.find('> td > :first-child').each(iterInnerHeights); if (trEl.position().top + trHeight > rowHeight) { return i; } } return false; // should not limit at all }; // Limits the given grid row to the maximum number of levels and injects "more" links if necessary. // `row` is the row number. // `levelLimit` is a number for the maximum (inclusive) number of levels allowed. DayGrid.prototype.limitRow = function (row, levelLimit) { var _this = this; var rowStruct = this.eventRenderer.rowStructs[row]; var moreNodes = []; // array of "more" <a> links and <td> DOM nodes var col = 0; // col #, left-to-right (not chronologically) var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right var cellMatrix; // a matrix (by level, then column) of all <td> jQuery elements in the row var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes var i; var seg; var segsBelow; // array of segment objects below `seg` in the current `col` var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column) var td; var rowspan; var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell var j; var moreTd; var moreWrap; var moreLink; // Iterates through empty level cells and places "more" links inside if need be var emptyCellsUntil = function (endCol) { while (col < endCol) { segsBelow = _this.getCellSegs(row, col, levelLimit); if (segsBelow.length) { td = cellMatrix[levelLimit - 1][col]; moreLink = _this.renderMoreLink(row, col, segsBelow); moreWrap = $('<div>').append(moreLink); td.append(moreWrap); moreNodes.push(moreWrap[0]); } col++; } }; if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit? levelSegs = rowStruct.segLevels[levelLimit - 1]; cellMatrix = rowStruct.cellMatrix; limitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level <tr> elements past the limit .addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array // iterate though segments in the last allowable level for (i = 0; i < levelSegs.length; i++) { seg = levelSegs[i]; emptyCellsUntil(seg.leftCol); // process empty cells before the segment // determine *all* segments below `seg` that occupy the same columns colSegsBelow = []; totalSegsBelow = 0; while (col <= seg.rightCol) { segsBelow = this.getCellSegs(row, col, levelLimit); colSegsBelow.push(segsBelow); totalSegsBelow += segsBelow.length; col++; } if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links? td = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell rowspan = td.attr('rowspan') || 1; segMoreNodes = []; // make a replacement <td> for each column the segment occupies. will be one for each colspan for (j = 0; j < colSegsBelow.length; j++) { moreTd = $('<td class="fc-more-cell">').attr('rowspan', rowspan); segsBelow = colSegsBelow[j]; moreLink = this.renderMoreLink(row, seg.leftCol + j, [seg].concat(segsBelow) // count seg as hidden too ); moreWrap = $('<div>').append(moreLink); moreTd.append(moreWrap); segMoreNodes.push(moreTd[0]); moreNodes.push(moreTd[0]); } td.addClass('fc-limited').after($(segMoreNodes)); // hide original <td> and inject replacements limitedNodes.push(td[0]); } } emptyCellsUntil(this.colCnt); // finish off the level rowStruct.moreEls = $(moreNodes); // for easy undoing later rowStruct.limitedEls = $(limitedNodes); // for easy undoing later } }; // Reveals all levels and removes all "more"-related elements for a grid's row. // `row` is a row number. DayGrid.prototype.unlimitRow = function (row) { var rowStruct = this.eventRenderer.rowStructs[row]; if (rowStruct.moreEls) { rowStruct.moreEls.remove(); rowStruct.moreEls = null; } if (rowStruct.limitedEls) { rowStruct.limitedEls.removeClass('fc-limited'); rowStruct.limitedEls = null; } }; // Renders an <a> element that represents hidden event element for a cell. // Responsible for attaching click handler as well. DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) { var _this = this; var view = this.view; return $('<a class="fc-more">') .text(this.getMoreLinkText(hiddenSegs.length)) .on('click', function (ev) { var clickOption = _this.opt('eventLimitClick'); var date = _this.getCellDate(row, col); var moreEl = $(ev.currentTarget); var dayEl = _this.getCellEl(row, col); var allSegs = _this.getCellSegs(row, col); // rescope the segments to be within the cell's date var reslicedAllSegs = _this.resliceDaySegs(allSegs, date); var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date); if (typeof clickOption === 'function') { // the returned value can be an atomic option clickOption = _this.publiclyTrigger('eventLimitClick', { context: view, args: [ { date: date.clone(), dayEl: dayEl, moreEl: moreEl, segs: reslicedAllSegs, hiddenSegs: reslicedHiddenSegs }, ev, view ] }); } if (clickOption === 'popover') { _this.showSegPopover(row, col, moreEl, reslicedAllSegs); } else if (typeof clickOption === 'string') { // a view name view.calendar.zoomTo(date, clickOption); } }); }; // Reveals the popover that displays all events within a cell DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) { var _this = this; var view = this.view; var moreWrap = moreLink.parent(); // the <div> wrapper around the <a> var topEl; // the element we want to match the top coordinate of var options; if (this.rowCnt === 1) { topEl = view.el; // will cause the popover to cover any sort of header } else { topEl = this.rowEls.eq(row); // will align with top of row } options = { className: 'fc-more-popover ' + view.calendar.theme.getClass('popover'), content: this.renderSegPopoverContent(row, col, segs), parentEl: view.el, top: topEl.offset().top, autoHide: true, viewportConstrain: this.opt('popoverViewportConstrain'), hide: function () { // kill everything when the popover is hidden // notify events to be removed if (_this.popoverSegs) { _this.triggerBeforeEventSegsDestroyed(_this.popoverSegs); } _this.segPopover.removeElement(); _this.segPopover = null; _this.popoverSegs = null; } }; // Determine horizontal coordinate. // We use the moreWrap instead of the <td> to avoid border confusion. if (this.isRTL) { options.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border } else { options.left = moreWrap.offset().left - 1; // -1 to be over cell border } this.segPopover = new Popover_1.default(options); this.segPopover.show(); // the popover doesn't live within the grid's container element, and thus won't get the event // delegated-handlers for free. attach event-related handlers to the popover. this.bindAllSegHandlersToEl(this.segPopover.el); this.triggerAfterEventSegsRendered(segs); }; // Builds the inner DOM contents of the segment popover DayGrid.prototype.renderSegPopoverContent = function (row, col, segs) { var view = this.view; var theme = view.calendar.theme; var title = this.getCellDate(row, col).format(this.opt('dayPopoverFormat')); var content = $('<div class="fc-header ' + theme.getClass('popoverHeader') + '">' + '<span class="fc-close ' + theme.getIconClass('close') + '"></span>' + '<span class="fc-title">' + util_1.htmlEscape(title) + '</span>' + '<div class="fc-clear"></div>' + '</div>' + '<div class="fc-body ' + theme.getClass('popoverContent') + '">' + '<div class="fc-event-container"></div>' + '</div>'); var segContainer = content.find('.fc-event-container'); var i; // render each seg's `el` and only return the visible segs segs = this.eventRenderer.renderFgSegEls(segs, true); // disableResizing=true this.popoverSegs = segs; for (i = 0; i < segs.length; i++) { // because segments in the popover are not part of a grid coordinate system, provide a hint to any // grids that want to do drag-n-drop about which cell it came from this.hitsNeeded(); segs[i].hit = this.getCellHit(row, col); this.hitsNotNeeded(); segContainer.append(segs[i].el); } return content; }; // Given the events within an array of segment objects, reslice them to be in a single day DayGrid.prototype.resliceDaySegs = function (segs, dayDate) { var dayStart = dayDate.clone(); var dayEnd = dayStart.clone().add(1, 'days'); var dayRange = new UnzonedRange_1.default(dayStart, dayEnd); var newSegs = []; var i; var seg; var slicedRange; for (i = 0; i < segs.length; i++) { seg = segs[i]; slicedRange = seg.footprint.componentFootprint.unzonedRange.intersect(dayRange); if (slicedRange) { newSegs.push($.extend({}, seg, { footprint: new EventFootprint_1.default(new ComponentFootprint_1.default(slicedRange, seg.footprint.componentFootprint.isAllDay), seg.footprint.eventDef, seg.footprint.eventInstance), isStart: seg.isStart && slicedRange.isStart, isEnd: seg.isEnd && slicedRange.isEnd })); } } // force an order because eventsToSegs doesn't guarantee one // TODO: research if still needed this.eventRenderer.sortEventSegs(newSegs); return newSegs; }; // Generates the text that should be inside a "more" link, given the number of events it represents DayGrid.prototype.getMoreLinkText = function (num) { var opt = this.opt('eventLimitText'); if (typeof opt === 'function') { return opt(num); } else { return '+' + num + ' ' + opt; } }; // Returns segments within a given cell. // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs. DayGrid.prototype.getCellSegs = function (row, col, startLevel) { var segMatrix = this.eventRenderer.rowStructs[row].segMatrix; var level = startLevel || 0; var segs = []; var seg; while (level < segMatrix.length) { seg = segMatrix[level][col]; if (seg) { segs.push(seg); } level++; } return segs; }; return DayGrid; }(InteractiveDateComponent_1.default)); exports.default = DayGrid; DayGrid.prototype.eventRendererClass = DayGridEventRenderer_1.default; DayGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default; DayGrid.prototype.helperRendererClass = DayGridHelperRenderer_1.default; DayGrid.prototype.fillRendererClass = DayGridFillRenderer_1.default; StandardInteractionsMixin_1.default.mixInto(DayGrid); DayTableMixin_1.default.mixInto(DayGrid); /***/ }), /* 67 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var Scroller_1 = __webpack_require__(41); var View_1 = __webpack_require__(43); var BasicViewDateProfileGenerator_1 = __webpack_require__(68); var DayGrid_1 = __webpack_require__(66); /* An abstract class for the "basic" views, as well as month view. Renders one or more rows of day cells. ----------------------------------------------------------------------------------------------------------------------*/ // It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. // It is responsible for managing width/height. var BasicView = /** @class */ (function (_super) { tslib_1.__extends(BasicView, _super); function BasicView(calendar, viewSpec) { var _this = _super.call(this, calendar, viewSpec) || this; _this.dayGrid = _this.instantiateDayGrid(); _this.dayGrid.isRigid = _this.hasRigidRows(); if (_this.opt('weekNumbers')) { if (_this.opt('weekNumbersWithinDays')) { _this.dayGrid.cellWeekNumbersVisible = true; _this.dayGrid.colWeekNumbersVisible = false; } else { _this.dayGrid.cellWeekNumbersVisible = false; _this.dayGrid.colWeekNumbersVisible = true; } } _this.addChild(_this.dayGrid); _this.scroller = new Scroller_1.default({ overflowX: 'hidden', overflowY: 'auto' }); return _this; } // Generates the DayGrid object this view needs. Draws from this.dayGridClass BasicView.prototype.instantiateDayGrid = function () { // generate a subclass on the fly with BasicView-specific behavior // TODO: cache this subclass var subclass = makeDayGridSubclass(this.dayGridClass); return new subclass(this); }; BasicView.prototype.executeDateRender = function (dateProfile) { this.dayGrid.breakOnWeeks = /year|month|week/.test(dateProfile.currentRangeUnit); _super.prototype.executeDateRender.call(this, dateProfile); }; BasicView.prototype.renderSkeleton = function () { var dayGridContainerEl; var dayGridEl; this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml()); this.scroller.render(); dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container'); dayGridEl = $('<div class="fc-day-grid">').appendTo(dayGridContainerEl); this.el.find('.fc-body > tr > td').append(dayGridContainerEl); this.dayGrid.headContainerEl = this.el.find('.fc-head-container'); this.dayGrid.setElement(dayGridEl); }; BasicView.prototype.unrenderSkeleton = function () { this.dayGrid.removeElement(); this.scroller.destroy(); }; // Builds the HTML skeleton for the view. // The day-grid component will render inside of a container defined by this HTML. BasicView.prototype.renderSkeletonHtml = function () { var theme = this.calendar.theme; return '' + '<table class="' + theme.getClass('tableGrid') + '">' + (this.opt('columnHeader') ? '<thead class="fc-head">' + '<tr>' + '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '"> </td>' + '</tr>' + '</thead>' : '') + '<tbody class="fc-body">' + '<tr>' + '<td class="' + theme.getClass('widgetContent') + '"></td>' + '</tr>' + '</tbody>' + '</table>'; }; // Generates an HTML attribute string for setting the width of the week number column, if it is known BasicView.prototype.weekNumberStyleAttr = function () { if (this.weekNumberWidth != null) { return 'style="width:' + this.weekNumberWidth + 'px"'; } return ''; }; // Determines whether each row should have a constant height BasicView.prototype.hasRigidRows = function () { var eventLimit = this.opt('eventLimit'); return eventLimit && typeof eventLimit !== 'number'; }; /* Dimensions ------------------------------------------------------------------------------------------------------------------*/ // Refreshes the horizontal dimensions of the view BasicView.prototype.updateSize = function (totalHeight, isAuto, isResize) { var eventLimit = this.opt('eventLimit'); var headRowEl = this.dayGrid.headContainerEl.find('.fc-row'); var scrollerHeight; var scrollbarWidths; // hack to give the view some height prior to dayGrid's columns being rendered // TODO: separate setting height from scroller VS dayGrid. if (!this.dayGrid.rowEls) { if (!isAuto) { scrollerHeight = this.computeScrollerHeight(totalHeight); this.scroller.setHeight(scrollerHeight); } return; } _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); if (this.dayGrid.colWeekNumbersVisible) { // Make sure all week number cells running down the side have the same width. // Record the width for cells created later. this.weekNumberWidth = util_1.matchCellWidths(this.el.find('.fc-week-number')); } // reset all heights to be natural this.scroller.clear(); util_1.uncompensateScroll(headRowEl); this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed // is the event limit a constant level number? if (eventLimit && typeof eventLimit === 'number') { this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after } // distribute the height to the rows // (totalHeight is a "recommended" value if isAuto) scrollerHeight = this.computeScrollerHeight(totalHeight); this.setGridHeight(scrollerHeight, isAuto); // is the event limit dynamically calculated? if (eventLimit && typeof eventLimit !== 'number') { this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set } if (!isAuto) { // should we force dimensions of the scroll container? this.scroller.setHeight(scrollerHeight); scrollbarWidths = this.scroller.getScrollbarWidths(); if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? util_1.compensateScroll(headRowEl, scrollbarWidths); // doing the scrollbar compensation might have created text overflow which created more height. redo scrollerHeight = this.computeScrollerHeight(totalHeight); this.scroller.setHeight(scrollerHeight); } // guarantees the same scrollbar widths this.scroller.lockOverflow(scrollbarWidths); } }; // given a desired total height of the view, returns what the height of the scroller should be BasicView.prototype.computeScrollerHeight = function (totalHeight) { return totalHeight - util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller }; // Sets the height of just the DayGrid component in this view BasicView.prototype.setGridHeight = function (height, isAuto) { if (isAuto) { util_1.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding } else { util_1.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows } }; /* Scroll ------------------------------------------------------------------------------------------------------------------*/ BasicView.prototype.computeInitialDateScroll = function () { return { top: 0 }; }; BasicView.prototype.queryDateScroll = function () { return { top: this.scroller.getScrollTop() }; }; BasicView.prototype.applyDateScroll = function (scroll) { if (scroll.top !== undefined) { this.scroller.setScrollTop(scroll.top); } }; return BasicView; }(View_1.default)); exports.default = BasicView; BasicView.prototype.dateProfileGeneratorClass = BasicViewDateProfileGenerator_1.default; BasicView.prototype.dayGridClass = DayGrid_1.default; // customize the rendering behavior of BasicView's dayGrid function makeDayGridSubclass(SuperClass) { return /** @class */ (function (_super) { tslib_1.__extends(SubClass, _super); function SubClass() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.colWeekNumbersVisible = false; // display week numbers along the side? return _this; } // Generates the HTML that will go before the day-of week header cells SubClass.prototype.renderHeadIntroHtml = function () { var view = this.view; if (this.colWeekNumbersVisible) { return '' + '<th class="fc-week-number ' + view.calendar.theme.getClass('widgetHeader') + '" ' + view.weekNumberStyleAttr() + '>' + '<span>' + // needed for matchCellWidths util_1.htmlEscape(this.opt('weekNumberTitle')) + '</span>' + '</th>'; } return ''; }; // Generates the HTML that will go before content-skeleton cells that display the day/week numbers SubClass.prototype.renderNumberIntroHtml = function (row) { var view = this.view; var weekStart = this.getCellDate(row, 0); if (this.colWeekNumbersVisible) { return '' + '<td class="fc-week-number" ' + view.weekNumberStyleAttr() + '>' + view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths { date: weekStart, type: 'week', forceOff: this.colCnt === 1 }, weekStart.format('w') // inner HTML ) + '</td>'; } return ''; }; // Generates the HTML that goes before the day bg cells for each day-row SubClass.prototype.renderBgIntroHtml = function () { var view = this.view; if (this.colWeekNumbersVisible) { return '<td class="fc-week-number ' + view.calendar.theme.getClass('widgetContent') + '" ' + view.weekNumberStyleAttr() + '></td>'; } return ''; }; // Generates the HTML that goes before every other type of row generated by DayGrid. // Affects helper-skeleton and highlight-skeleton rows. SubClass.prototype.renderIntroHtml = function () { var view = this.view; if (this.colWeekNumbersVisible) { return '<td class="fc-week-number" ' + view.weekNumberStyleAttr() + '></td>'; } return ''; }; SubClass.prototype.getIsNumbersVisible = function () { return DayGrid_1.default.prototype.getIsNumbersVisible.apply(this, arguments) || this.colWeekNumbersVisible; }; return SubClass; }(SuperClass)); } /***/ }), /* 68 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var UnzonedRange_1 = __webpack_require__(5); var DateProfileGenerator_1 = __webpack_require__(55); var BasicViewDateProfileGenerator = /** @class */ (function (_super) { tslib_1.__extends(BasicViewDateProfileGenerator, _super); function BasicViewDateProfileGenerator() { return _super !== null && _super.apply(this, arguments) || this; } // Computes the date range that will be rendered. BasicViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) { var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay); // an UnzonedRange var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay); var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay); // year and month views should be aligned with weeks. this is already done for week if (/^(year|month)$/.test(currentRangeUnit)) { start.startOf('week'); // make end-of-week if not already if (end.weekday()) { end.add(1, 'week').startOf('week'); // exclusively move backwards } } return new UnzonedRange_1.default(start, end); }; return BasicViewDateProfileGenerator; }(DateProfileGenerator_1.default)); exports.default = BasicViewDateProfileGenerator; /***/ }), /* 69 */, /* 70 */, /* 71 */, /* 72 */, /* 73 */, /* 74 */, /* 75 */, /* 76 */, /* 77 */, /* 78 */, /* 79 */, /* 80 */, /* 81 */, /* 82 */, /* 83 */, /* 84 */, /* 85 */, /* 86 */, /* 87 */, /* 88 */, /* 89 */, /* 90 */, /* 91 */, /* 92 */, /* 93 */, /* 94 */, /* 95 */, /* 96 */, /* 97 */, /* 98 */, /* 99 */, /* 100 */, /* 101 */, /* 102 */, /* 103 */, /* 104 */, /* 105 */, /* 106 */, /* 107 */, /* 108 */, /* 109 */, /* 110 */, /* 111 */, /* 112 */, /* 113 */, /* 114 */, /* 115 */, /* 116 */, /* 117 */, /* 118 */, /* 119 */, /* 120 */, /* 121 */, /* 122 */, /* 123 */, /* 124 */, /* 125 */, /* 126 */, /* 127 */, /* 128 */, /* 129 */, /* 130 */, /* 131 */, /* 132 */, /* 133 */, /* 134 */, /* 135 */, /* 136 */, /* 137 */, /* 138 */, /* 139 */, /* 140 */, /* 141 */, /* 142 */, /* 143 */, /* 144 */, /* 145 */, /* 146 */, /* 147 */, /* 148 */, /* 149 */, /* 150 */, /* 151 */, /* 152 */, /* 153 */, /* 154 */, /* 155 */, /* 156 */, /* 157 */, /* 158 */, /* 159 */, /* 160 */, /* 161 */, /* 162 */, /* 163 */, /* 164 */, /* 165 */, /* 166 */, /* 167 */, /* 168 */, /* 169 */, /* 170 */, /* 171 */, /* 172 */, /* 173 */, /* 174 */, /* 175 */, /* 176 */, /* 177 */, /* 178 */, /* 179 */, /* 180 */, /* 181 */, /* 182 */, /* 183 */, /* 184 */, /* 185 */, /* 186 */, /* 187 */, /* 188 */, /* 189 */, /* 190 */, /* 191 */, /* 192 */, /* 193 */, /* 194 */, /* 195 */, /* 196 */, /* 197 */, /* 198 */, /* 199 */, /* 200 */, /* 201 */, /* 202 */, /* 203 */, /* 204 */, /* 205 */, /* 206 */, /* 207 */, /* 208 */, /* 209 */, /* 210 */, /* 211 */, /* 212 */, /* 213 */, /* 214 */, /* 215 */, /* 216 */, /* 217 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var UnzonedRange_1 = __webpack_require__(5); var ComponentFootprint_1 = __webpack_require__(12); var EventDefParser_1 = __webpack_require__(36); var EventSource_1 = __webpack_require__(6); var util_1 = __webpack_require__(19); var Constraints = /** @class */ (function () { function Constraints(eventManager, _calendar) { this.eventManager = eventManager; this._calendar = _calendar; } Constraints.prototype.opt = function (name) { return this._calendar.opt(name); }; /* determines if eventInstanceGroup is allowed, in relation to other EVENTS and business hours. */ Constraints.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) { var eventDef = eventInstanceGroup.getEventDef(); var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges()); var i; var peerEventInstances = this.getPeerEventInstances(eventDef); var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange); var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges); var constraintVal = eventDef.getConstraint(); var overlapVal = eventDef.getOverlap(); var eventAllowFunc = this.opt('eventAllow'); for (i = 0; i < eventFootprints.length; i++) { if (!this.isFootprintAllowed(eventFootprints[i].componentFootprint, peerEventFootprints, constraintVal, overlapVal, eventFootprints[i].eventInstance)) { return false; } } if (eventAllowFunc) { for (i = 0; i < eventFootprints.length; i++) { if (eventAllowFunc(eventFootprints[i].componentFootprint.toLegacy(this._calendar), eventFootprints[i].getEventLegacy()) === false) { return false; } } } return true; }; Constraints.prototype.getPeerEventInstances = function (eventDef) { return this.eventManager.getEventInstancesWithoutId(eventDef.id); }; Constraints.prototype.isSelectionFootprintAllowed = function (componentFootprint) { var peerEventInstances = this.eventManager.getEventInstances(); var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange); var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges); var selectAllowFunc; if (this.isFootprintAllowed(componentFootprint, peerEventFootprints, this.opt('selectConstraint'), this.opt('selectOverlap'))) { selectAllowFunc = this.opt('selectAllow'); if (selectAllowFunc) { return selectAllowFunc(componentFootprint.toLegacy(this._calendar)) !== false; } else { return true; } } return false; }; Constraints.prototype.isFootprintAllowed = function (componentFootprint, peerEventFootprints, constraintVal, overlapVal, subjectEventInstance // optional ) { var constraintFootprints; // ComponentFootprint[] var overlapEventFootprints; // EventFootprint[] if (constraintVal != null) { constraintFootprints = this.constraintValToFootprints(constraintVal, componentFootprint.isAllDay); if (!this.isFootprintWithinConstraints(componentFootprint, constraintFootprints)) { return false; } } overlapEventFootprints = this.collectOverlapEventFootprints(peerEventFootprints, componentFootprint); if (overlapVal === false) { if (overlapEventFootprints.length) { return false; } } else if (typeof overlapVal === 'function') { if (!isOverlapsAllowedByFunc(overlapEventFootprints, overlapVal, subjectEventInstance)) { return false; } } if (subjectEventInstance) { if (!isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance)) { return false; } } return true; }; // Constraint // ------------------------------------------------------------------------------------------------ Constraints.prototype.isFootprintWithinConstraints = function (componentFootprint, constraintFootprints) { var i; for (i = 0; i < constraintFootprints.length; i++) { if (this.footprintContainsFootprint(constraintFootprints[i], componentFootprint)) { return true; } } return false; }; Constraints.prototype.constraintValToFootprints = function (constraintVal, isAllDay) { var eventInstances; if (constraintVal === 'businessHours') { return this.buildCurrentBusinessFootprints(isAllDay); } else if (typeof constraintVal === 'object') { eventInstances = this.parseEventDefToInstances(constraintVal); // handles recurring events if (!eventInstances) { // invalid input. fallback to parsing footprint directly return this.parseFootprints(constraintVal); } else { return this.eventInstancesToFootprints(eventInstances); } } else if (constraintVal != null) { // an ID eventInstances = this.eventManager.getEventInstancesWithId(constraintVal); return this.eventInstancesToFootprints(eventInstances); } }; // returns ComponentFootprint[] // uses current view's range Constraints.prototype.buildCurrentBusinessFootprints = function (isAllDay) { var view = this._calendar.view; var businessHourGenerator = view.get('businessHourGenerator'); var unzonedRange = view.dateProfile.activeUnzonedRange; var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(isAllDay, unzonedRange); if (eventInstanceGroup) { return this.eventInstancesToFootprints(eventInstanceGroup.eventInstances); } else { return []; } }; // conversion util Constraints.prototype.eventInstancesToFootprints = function (eventInstances) { var eventRanges = eventInstances.map(util_1.eventInstanceToEventRange); var eventFootprints = this.eventRangesToEventFootprints(eventRanges); return eventFootprints.map(util_1.eventFootprintToComponentFootprint); }; // Overlap // ------------------------------------------------------------------------------------------------ Constraints.prototype.collectOverlapEventFootprints = function (peerEventFootprints, targetFootprint) { var overlapEventFootprints = []; var i; for (i = 0; i < peerEventFootprints.length; i++) { if (this.footprintsIntersect(targetFootprint, peerEventFootprints[i].componentFootprint)) { overlapEventFootprints.push(peerEventFootprints[i]); } } return overlapEventFootprints; }; // Conversion: eventDefs -> eventInstances -> eventRanges -> eventFootprints -> componentFootprints // ------------------------------------------------------------------------------------------------ // NOTE: this might seem like repetitive code with the Grid class, however, this code is related to // constraints whereas the Grid code is related to rendering. Each approach might want to convert // eventRanges -> eventFootprints in a different way. Regardless, there are opportunities to make // this more DRY. /* Returns false on invalid input. */ Constraints.prototype.parseEventDefToInstances = function (eventInput) { var eventManager = this.eventManager; var eventDef = EventDefParser_1.default.parse(eventInput, new EventSource_1.default(this._calendar)); if (!eventDef) { // invalid return false; } return eventDef.buildInstances(eventManager.currentPeriod.unzonedRange); }; Constraints.prototype.eventRangesToEventFootprints = function (eventRanges) { var i; var eventFootprints = []; for (i = 0; i < eventRanges.length; i++) { eventFootprints.push.apply(// footprints eventFootprints, this.eventRangeToEventFootprints(eventRanges[i])); } return eventFootprints; }; Constraints.prototype.eventRangeToEventFootprints = function (eventRange) { return [util_1.eventRangeToEventFootprint(eventRange)]; }; /* Parses footprints directly. Very similar to EventDateProfile::parse :( */ Constraints.prototype.parseFootprints = function (rawInput) { var start; var end; if (rawInput.start) { start = this._calendar.moment(rawInput.start); if (!start.isValid()) { start = null; } } if (rawInput.end) { end = this._calendar.moment(rawInput.end); if (!end.isValid()) { end = null; } } return [ new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), (start && !start.hasTime()) || (end && !end.hasTime()) // isAllDay ) ]; }; // Footprint Utils // ---------------------------------------------------------------------------------------- Constraints.prototype.footprintContainsFootprint = function (outerFootprint, innerFootprint) { return outerFootprint.unzonedRange.containsRange(innerFootprint.unzonedRange); }; Constraints.prototype.footprintsIntersect = function (footprint0, footprint1) { return footprint0.unzonedRange.intersectsWith(footprint1.unzonedRange); }; return Constraints; }()); exports.default = Constraints; // optional subjectEventInstance function isOverlapsAllowedByFunc(overlapEventFootprints, overlapFunc, subjectEventInstance) { var i; for (i = 0; i < overlapEventFootprints.length; i++) { if (!overlapFunc(overlapEventFootprints[i].eventInstance.toLegacy(), subjectEventInstance ? subjectEventInstance.toLegacy() : null)) { return false; } } return true; } function isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance) { var subjectLegacyInstance = subjectEventInstance.toLegacy(); var i; var overlapEventInstance; var overlapEventDef; var overlapVal; for (i = 0; i < overlapEventFootprints.length; i++) { overlapEventInstance = overlapEventFootprints[i].eventInstance; overlapEventDef = overlapEventInstance.def; // don't need to pass in calendar, because don't want to consider global eventOverlap property, // because we already considered that earlier in the process. overlapVal = overlapEventDef.getOverlap(); if (overlapVal === false) { return false; } else if (typeof overlapVal === 'function') { if (!overlapVal(overlapEventInstance.toLegacy(), subjectLegacyInstance)) { return false; } } } return true; } /***/ }), /* 218 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(19); var EventInstanceGroup_1 = __webpack_require__(20); var RecurringEventDef_1 = __webpack_require__(54); var EventSource_1 = __webpack_require__(6); var BUSINESS_HOUR_EVENT_DEFAULTS = { start: '09:00', end: '17:00', dow: [1, 2, 3, 4, 5], rendering: 'inverse-background' // classNames are defined in businessHoursSegClasses }; var BusinessHourGenerator = /** @class */ (function () { function BusinessHourGenerator(rawComplexDef, calendar) { this.rawComplexDef = rawComplexDef; this.calendar = calendar; } BusinessHourGenerator.prototype.buildEventInstanceGroup = function (isAllDay, unzonedRange) { var eventDefs = this.buildEventDefs(isAllDay); var eventInstanceGroup; if (eventDefs.length) { eventInstanceGroup = new EventInstanceGroup_1.default(util_1.eventDefsToEventInstances(eventDefs, unzonedRange)); // so that inverse-background rendering can happen even when no eventRanges in view eventInstanceGroup.explicitEventDef = eventDefs[0]; return eventInstanceGroup; } }; BusinessHourGenerator.prototype.buildEventDefs = function (isAllDay) { var rawComplexDef = this.rawComplexDef; var rawDefs = []; var requireDow = false; var i; var defs = []; if (rawComplexDef === true) { rawDefs = [{}]; // will get BUSINESS_HOUR_EVENT_DEFAULTS verbatim } else if ($.isPlainObject(rawComplexDef)) { rawDefs = [rawComplexDef]; } else if ($.isArray(rawComplexDef)) { rawDefs = rawComplexDef; requireDow = true; // every sub-definition NEEDS a day-of-week } for (i = 0; i < rawDefs.length; i++) { if (!requireDow || rawDefs[i].dow) { defs.push(this.buildEventDef(isAllDay, rawDefs[i])); } } return defs; }; BusinessHourGenerator.prototype.buildEventDef = function (isAllDay, rawDef) { var fullRawDef = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, rawDef); if (isAllDay) { fullRawDef.start = null; fullRawDef.end = null; } return RecurringEventDef_1.default.parse(fullRawDef, new EventSource_1.default(this.calendar) // dummy source ); }; return BusinessHourGenerator; }()); exports.default = BusinessHourGenerator; /***/ }), /* 219 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var Promise_1 = __webpack_require__(21); var EmitterMixin_1 = __webpack_require__(13); var UnzonedRange_1 = __webpack_require__(5); var EventInstanceGroup_1 = __webpack_require__(20); var EventPeriod = /** @class */ (function () { function EventPeriod(start, end, timezone) { this.pendingCnt = 0; this.freezeDepth = 0; this.stuntedReleaseCnt = 0; this.releaseCnt = 0; this.start = start; this.end = end; this.timezone = timezone; this.unzonedRange = new UnzonedRange_1.default(start.clone().stripZone(), end.clone().stripZone()); this.requestsByUid = {}; this.eventDefsByUid = {}; this.eventDefsById = {}; this.eventInstanceGroupsById = {}; } EventPeriod.prototype.isWithinRange = function (start, end) { // TODO: use a range util function? return !start.isBefore(this.start) && !end.isAfter(this.end); }; // Requesting and Purging // ----------------------------------------------------------------------------------------------------------------- EventPeriod.prototype.requestSources = function (sources) { this.freeze(); for (var i = 0; i < sources.length; i++) { this.requestSource(sources[i]); } this.thaw(); }; EventPeriod.prototype.requestSource = function (source) { var _this = this; var request = { source: source, status: 'pending', eventDefs: null }; this.requestsByUid[source.uid] = request; this.pendingCnt += 1; source.fetch(this.start, this.end, this.timezone).then(function (eventDefs) { if (request.status !== 'cancelled') { request.status = 'completed'; request.eventDefs = eventDefs; _this.addEventDefs(eventDefs); _this.pendingCnt--; _this.tryRelease(); } }, function () { if (request.status !== 'cancelled') { request.status = 'failed'; _this.pendingCnt--; _this.tryRelease(); } }); }; EventPeriod.prototype.purgeSource = function (source) { var request = this.requestsByUid[source.uid]; if (request) { delete this.requestsByUid[source.uid]; if (request.status === 'pending') { request.status = 'cancelled'; this.pendingCnt--; this.tryRelease(); } else if (request.status === 'completed') { request.eventDefs.forEach(this.removeEventDef.bind(this)); } } }; EventPeriod.prototype.purgeAllSources = function () { var requestsByUid = this.requestsByUid; var uid; var request; var completedCnt = 0; for (uid in requestsByUid) { request = requestsByUid[uid]; if (request.status === 'pending') { request.status = 'cancelled'; } else if (request.status === 'completed') { completedCnt++; } } this.requestsByUid = {}; this.pendingCnt = 0; if (completedCnt) { this.removeAllEventDefs(); // might release } }; // Event Definitions // ----------------------------------------------------------------------------------------------------------------- EventPeriod.prototype.getEventDefByUid = function (eventDefUid) { return this.eventDefsByUid[eventDefUid]; }; EventPeriod.prototype.getEventDefsById = function (eventDefId) { var a = this.eventDefsById[eventDefId]; if (a) { return a.slice(); // clone } return []; }; EventPeriod.prototype.addEventDefs = function (eventDefs) { for (var i = 0; i < eventDefs.length; i++) { this.addEventDef(eventDefs[i]); } }; EventPeriod.prototype.addEventDef = function (eventDef) { var eventDefsById = this.eventDefsById; var eventDefId = eventDef.id; var eventDefs = eventDefsById[eventDefId] || (eventDefsById[eventDefId] = []); var eventInstances = eventDef.buildInstances(this.unzonedRange); var i; eventDefs.push(eventDef); this.eventDefsByUid[eventDef.uid] = eventDef; for (i = 0; i < eventInstances.length; i++) { this.addEventInstance(eventInstances[i], eventDefId); } }; EventPeriod.prototype.removeEventDefsById = function (eventDefId) { var _this = this; this.getEventDefsById(eventDefId).forEach(function (eventDef) { _this.removeEventDef(eventDef); }); }; EventPeriod.prototype.removeAllEventDefs = function () { var isEmpty = $.isEmptyObject(this.eventDefsByUid); this.eventDefsByUid = {}; this.eventDefsById = {}; this.eventInstanceGroupsById = {}; if (!isEmpty) { this.tryRelease(); } }; EventPeriod.prototype.removeEventDef = function (eventDef) { var eventDefsById = this.eventDefsById; var eventDefs = eventDefsById[eventDef.id]; delete this.eventDefsByUid[eventDef.uid]; if (eventDefs) { util_1.removeExact(eventDefs, eventDef); if (!eventDefs.length) { delete eventDefsById[eventDef.id]; } this.removeEventInstancesForDef(eventDef); } }; // Event Instances // ----------------------------------------------------------------------------------------------------------------- EventPeriod.prototype.getEventInstances = function () { var eventInstanceGroupsById = this.eventInstanceGroupsById; var eventInstances = []; var id; for (id in eventInstanceGroupsById) { eventInstances.push.apply(eventInstances, // append eventInstanceGroupsById[id].eventInstances); } return eventInstances; }; EventPeriod.prototype.getEventInstancesWithId = function (eventDefId) { var eventInstanceGroup = this.eventInstanceGroupsById[eventDefId]; if (eventInstanceGroup) { return eventInstanceGroup.eventInstances.slice(); // clone } return []; }; EventPeriod.prototype.getEventInstancesWithoutId = function (eventDefId) { var eventInstanceGroupsById = this.eventInstanceGroupsById; var matchingInstances = []; var id; for (id in eventInstanceGroupsById) { if (id !== eventDefId) { matchingInstances.push.apply(matchingInstances, // append eventInstanceGroupsById[id].eventInstances); } } return matchingInstances; }; EventPeriod.prototype.addEventInstance = function (eventInstance, eventDefId) { var eventInstanceGroupsById = this.eventInstanceGroupsById; var eventInstanceGroup = eventInstanceGroupsById[eventDefId] || (eventInstanceGroupsById[eventDefId] = new EventInstanceGroup_1.default()); eventInstanceGroup.eventInstances.push(eventInstance); this.tryRelease(); }; EventPeriod.prototype.removeEventInstancesForDef = function (eventDef) { var eventInstanceGroupsById = this.eventInstanceGroupsById; var eventInstanceGroup = eventInstanceGroupsById[eventDef.id]; var removeCnt; if (eventInstanceGroup) { removeCnt = util_1.removeMatching(eventInstanceGroup.eventInstances, function (currentEventInstance) { return currentEventInstance.def === eventDef; }); if (!eventInstanceGroup.eventInstances.length) { delete eventInstanceGroupsById[eventDef.id]; } if (removeCnt) { this.tryRelease(); } } }; // Releasing and Freezing // ----------------------------------------------------------------------------------------------------------------- EventPeriod.prototype.tryRelease = function () { if (!this.pendingCnt) { if (!this.freezeDepth) { this.release(); } else { this.stuntedReleaseCnt++; } } }; EventPeriod.prototype.release = function () { this.releaseCnt++; this.trigger('release', this.eventInstanceGroupsById); }; EventPeriod.prototype.whenReleased = function () { var _this = this; if (this.releaseCnt) { return Promise_1.default.resolve(this.eventInstanceGroupsById); } else { return Promise_1.default.construct(function (onResolve) { _this.one('release', onResolve); }); } }; EventPeriod.prototype.freeze = function () { if (!(this.freezeDepth++)) { this.stuntedReleaseCnt = 0; } }; EventPeriod.prototype.thaw = function () { if (!(--this.freezeDepth) && this.stuntedReleaseCnt && !this.pendingCnt) { this.release(); } }; return EventPeriod; }()); exports.default = EventPeriod; EmitterMixin_1.default.mixInto(EventPeriod); /***/ }), /* 220 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var EventPeriod_1 = __webpack_require__(219); var ArrayEventSource_1 = __webpack_require__(56); var EventSource_1 = __webpack_require__(6); var EventSourceParser_1 = __webpack_require__(38); var SingleEventDef_1 = __webpack_require__(9); var EventInstanceGroup_1 = __webpack_require__(20); var EmitterMixin_1 = __webpack_require__(13); var ListenerMixin_1 = __webpack_require__(7); var EventManager = /** @class */ (function () { function EventManager(calendar) { this.calendar = calendar; this.stickySource = new ArrayEventSource_1.default(calendar); this.otherSources = []; } EventManager.prototype.requestEvents = function (start, end, timezone, force) { if (force || !this.currentPeriod || !this.currentPeriod.isWithinRange(start, end) || timezone !== this.currentPeriod.timezone) { this.setPeriod(// will change this.currentPeriod new EventPeriod_1.default(start, end, timezone)); } return this.currentPeriod.whenReleased(); }; // Source Adding/Removing // ----------------------------------------------------------------------------------------------------------------- EventManager.prototype.addSource = function (eventSource) { this.otherSources.push(eventSource); if (this.currentPeriod) { this.currentPeriod.requestSource(eventSource); // might release } }; EventManager.prototype.removeSource = function (doomedSource) { util_1.removeExact(this.otherSources, doomedSource); if (this.currentPeriod) { this.currentPeriod.purgeSource(doomedSource); // might release } }; EventManager.prototype.removeAllSources = function () { this.otherSources = []; if (this.currentPeriod) { this.currentPeriod.purgeAllSources(); // might release } }; // Source Refetching // ----------------------------------------------------------------------------------------------------------------- EventManager.prototype.refetchSource = function (eventSource) { var currentPeriod = this.currentPeriod; if (currentPeriod) { currentPeriod.freeze(); currentPeriod.purgeSource(eventSource); currentPeriod.requestSource(eventSource); currentPeriod.thaw(); } }; EventManager.prototype.refetchAllSources = function () { var currentPeriod = this.currentPeriod; if (currentPeriod) { currentPeriod.freeze(); currentPeriod.purgeAllSources(); currentPeriod.requestSources(this.getSources()); currentPeriod.thaw(); } }; // Source Querying // ----------------------------------------------------------------------------------------------------------------- EventManager.prototype.getSources = function () { return [this.stickySource].concat(this.otherSources); }; // like querySources, but accepts multple match criteria (like multiple IDs) EventManager.prototype.multiQuerySources = function (matchInputs) { // coerce into an array if (!matchInputs) { matchInputs = []; } else if (!$.isArray(matchInputs)) { matchInputs = [matchInputs]; } var matchingSources = []; var i; // resolve raw inputs to real event source objects for (i = 0; i < matchInputs.length; i++) { matchingSources.push.apply(// append matchingSources, this.querySources(matchInputs[i])); } return matchingSources; }; // matchInput can either by a real event source object, an ID, or the function/URL for the source. // returns an array of matching source objects. EventManager.prototype.querySources = function (matchInput) { var sources = this.otherSources; var i; var source; // given a proper event source object for (i = 0; i < sources.length; i++) { source = sources[i]; if (source === matchInput) { return [source]; } } // an ID match source = this.getSourceById(EventSource_1.default.normalizeId(matchInput)); if (source) { return [source]; } // parse as an event source matchInput = EventSourceParser_1.default.parse(matchInput, this.calendar); if (matchInput) { return $.grep(sources, function (source) { return isSourcesEquivalent(matchInput, source); }); } }; /* ID assumed to already be normalized */ EventManager.prototype.getSourceById = function (id) { return $.grep(this.otherSources, function (source) { return source.id && source.id === id; })[0]; }; // Event-Period // ----------------------------------------------------------------------------------------------------------------- EventManager.prototype.setPeriod = function (eventPeriod) { if (this.currentPeriod) { this.unbindPeriod(this.currentPeriod); this.currentPeriod = null; } this.currentPeriod = eventPeriod; this.bindPeriod(eventPeriod); eventPeriod.requestSources(this.getSources()); }; EventManager.prototype.bindPeriod = function (eventPeriod) { this.listenTo(eventPeriod, 'release', function (eventsPayload) { this.trigger('release', eventsPayload); }); }; EventManager.prototype.unbindPeriod = function (eventPeriod) { this.stopListeningTo(eventPeriod); }; // Event Getting/Adding/Removing // ----------------------------------------------------------------------------------------------------------------- EventManager.prototype.getEventDefByUid = function (uid) { if (this.currentPeriod) { return this.currentPeriod.getEventDefByUid(uid); } }; EventManager.prototype.addEventDef = function (eventDef, isSticky) { if (isSticky) { this.stickySource.addEventDef(eventDef); } if (this.currentPeriod) { this.currentPeriod.addEventDef(eventDef); // might release } }; EventManager.prototype.removeEventDefsById = function (eventId) { this.getSources().forEach(function (eventSource) { eventSource.removeEventDefsById(eventId); }); if (this.currentPeriod) { this.currentPeriod.removeEventDefsById(eventId); // might release } }; EventManager.prototype.removeAllEventDefs = function () { this.getSources().forEach(function (eventSource) { eventSource.removeAllEventDefs(); }); if (this.currentPeriod) { this.currentPeriod.removeAllEventDefs(); } }; // Event Mutating // ----------------------------------------------------------------------------------------------------------------- /* Returns an undo function. */ EventManager.prototype.mutateEventsWithId = function (eventDefId, eventDefMutation) { var currentPeriod = this.currentPeriod; var eventDefs; var undoFuncs = []; if (currentPeriod) { currentPeriod.freeze(); eventDefs = currentPeriod.getEventDefsById(eventDefId); eventDefs.forEach(function (eventDef) { // add/remove esp because id might change currentPeriod.removeEventDef(eventDef); undoFuncs.push(eventDefMutation.mutateSingle(eventDef)); currentPeriod.addEventDef(eventDef); }); currentPeriod.thaw(); return function () { currentPeriod.freeze(); for (var i = 0; i < eventDefs.length; i++) { currentPeriod.removeEventDef(eventDefs[i]); undoFuncs[i](); currentPeriod.addEventDef(eventDefs[i]); } currentPeriod.thaw(); }; } return function () { }; }; /* copies and then mutates */ EventManager.prototype.buildMutatedEventInstanceGroup = function (eventDefId, eventDefMutation) { var eventDefs = this.getEventDefsById(eventDefId); var i; var defCopy; var allInstances = []; for (i = 0; i < eventDefs.length; i++) { defCopy = eventDefs[i].clone(); if (defCopy instanceof SingleEventDef_1.default) { eventDefMutation.mutateSingle(defCopy); allInstances.push.apply(allInstances, // append defCopy.buildInstances()); } } return new EventInstanceGroup_1.default(allInstances); }; // Freezing // ----------------------------------------------------------------------------------------------------------------- EventManager.prototype.freeze = function () { if (this.currentPeriod) { this.currentPeriod.freeze(); } }; EventManager.prototype.thaw = function () { if (this.currentPeriod) { this.currentPeriod.thaw(); } }; // methods that simply forward to EventPeriod EventManager.prototype.getEventDefsById = function (eventDefId) { return this.currentPeriod.getEventDefsById(eventDefId); }; EventManager.prototype.getEventInstances = function () { return this.currentPeriod.getEventInstances(); }; EventManager.prototype.getEventInstancesWithId = function (eventDefId) { return this.currentPeriod.getEventInstancesWithId(eventDefId); }; EventManager.prototype.getEventInstancesWithoutId = function (eventDefId) { return this.currentPeriod.getEventInstancesWithoutId(eventDefId); }; return EventManager; }()); exports.default = EventManager; EmitterMixin_1.default.mixInto(EventManager); ListenerMixin_1.default.mixInto(EventManager); function isSourcesEquivalent(source0, source1) { return source0.getPrimitive() === source1.getPrimitive(); } /***/ }), /* 221 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var Theme_1 = __webpack_require__(22); var StandardTheme = /** @class */ (function (_super) { tslib_1.__extends(StandardTheme, _super); function StandardTheme() { return _super !== null && _super.apply(this, arguments) || this; } return StandardTheme; }(Theme_1.default)); exports.default = StandardTheme; StandardTheme.prototype.classes = { widget: 'fc-unthemed', widgetHeader: 'fc-widget-header', widgetContent: 'fc-widget-content', buttonGroup: 'fc-button-group', button: 'fc-button', cornerLeft: 'fc-corner-left', cornerRight: 'fc-corner-right', stateDefault: 'fc-state-default', stateActive: 'fc-state-active', stateDisabled: 'fc-state-disabled', stateHover: 'fc-state-hover', stateDown: 'fc-state-down', popoverHeader: 'fc-widget-header', popoverContent: 'fc-widget-content', // day grid headerRow: 'fc-widget-header', dayRow: 'fc-widget-content', // list view listView: 'fc-widget-content' }; StandardTheme.prototype.baseIconClass = 'fc-icon'; StandardTheme.prototype.iconClasses = { close: 'fc-icon-x', prev: 'fc-icon-left-single-arrow', next: 'fc-icon-right-single-arrow', prevYear: 'fc-icon-left-double-arrow', nextYear: 'fc-icon-right-double-arrow' }; StandardTheme.prototype.iconOverrideOption = 'buttonIcons'; StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'; StandardTheme.prototype.iconOverridePrefix = 'fc-icon-'; /***/ }), /* 222 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var Theme_1 = __webpack_require__(22); var JqueryUiTheme = /** @class */ (function (_super) { tslib_1.__extends(JqueryUiTheme, _super); function JqueryUiTheme() { return _super !== null && _super.apply(this, arguments) || this; } return JqueryUiTheme; }(Theme_1.default)); exports.default = JqueryUiTheme; JqueryUiTheme.prototype.classes = { widget: 'ui-widget', widgetHeader: 'ui-widget-header', widgetContent: 'ui-widget-content', buttonGroup: 'fc-button-group', button: 'ui-button', cornerLeft: 'ui-corner-left', cornerRight: 'ui-corner-right', stateDefault: 'ui-state-default', stateActive: 'ui-state-active', stateDisabled: 'ui-state-disabled', stateHover: 'ui-state-hover', stateDown: 'ui-state-down', today: 'ui-state-highlight', popoverHeader: 'ui-widget-header', popoverContent: 'ui-widget-content', // day grid headerRow: 'ui-widget-header', dayRow: 'ui-widget-content', // list view listView: 'ui-widget-content' }; JqueryUiTheme.prototype.baseIconClass = 'ui-icon'; JqueryUiTheme.prototype.iconClasses = { close: 'ui-icon-closethick', prev: 'ui-icon-circle-triangle-w', next: 'ui-icon-circle-triangle-e', prevYear: 'ui-icon-seek-prev', nextYear: 'ui-icon-seek-next' }; JqueryUiTheme.prototype.iconOverrideOption = 'themeButtonIcons'; JqueryUiTheme.prototype.iconOverrideCustomButtonOption = 'themeIcon'; JqueryUiTheme.prototype.iconOverridePrefix = 'ui-icon-'; /***/ }), /* 223 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var Promise_1 = __webpack_require__(21); var EventSource_1 = __webpack_require__(6); var FuncEventSource = /** @class */ (function (_super) { tslib_1.__extends(FuncEventSource, _super); function FuncEventSource() { return _super !== null && _super.apply(this, arguments) || this; } FuncEventSource.parse = function (rawInput, calendar) { var rawProps; // normalize raw input if ($.isFunction(rawInput.events)) { // extended form rawProps = rawInput; } else if ($.isFunction(rawInput)) { // short form rawProps = { events: rawInput }; } if (rawProps) { return EventSource_1.default.parse.call(this, rawProps, calendar); } return false; }; FuncEventSource.prototype.fetch = function (start, end, timezone) { var _this = this; this.calendar.pushLoading(); return Promise_1.default.construct(function (onResolve) { _this.func.call(_this.calendar, start.clone(), end.clone(), timezone, function (rawEventDefs) { _this.calendar.popLoading(); onResolve(_this.parseEventDefs(rawEventDefs)); }); }); }; FuncEventSource.prototype.getPrimitive = function () { return this.func; }; FuncEventSource.prototype.applyManualStandardProps = function (rawProps) { var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps); this.func = rawProps.events; return superSuccess; }; return FuncEventSource; }(EventSource_1.default)); exports.default = FuncEventSource; FuncEventSource.defineStandardProps({ events: false // don't automatically transfer }); /***/ }), /* 224 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var Promise_1 = __webpack_require__(21); var EventSource_1 = __webpack_require__(6); var JsonFeedEventSource = /** @class */ (function (_super) { tslib_1.__extends(JsonFeedEventSource, _super); function JsonFeedEventSource() { return _super !== null && _super.apply(this, arguments) || this; } JsonFeedEventSource.parse = function (rawInput, calendar) { var rawProps; // normalize raw input if (typeof rawInput.url === 'string') { // extended form rawProps = rawInput; } else if (typeof rawInput === 'string') { // short form rawProps = { url: rawInput }; } if (rawProps) { return EventSource_1.default.parse.call(this, rawProps, calendar); } return false; }; JsonFeedEventSource.prototype.fetch = function (start, end, timezone) { var _this = this; var ajaxSettings = this.ajaxSettings; var onSuccess = ajaxSettings.success; var onError = ajaxSettings.error; var requestParams = this.buildRequestParams(start, end, timezone); // todo: eventually handle the promise's then, // don't intercept success/error // tho will be a breaking API change this.calendar.pushLoading(); return Promise_1.default.construct(function (onResolve, onReject) { $.ajax($.extend({}, // destination JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, { url: _this.url, data: requestParams, success: function (rawEventDefs, status, xhr) { var callbackRes; _this.calendar.popLoading(); if (rawEventDefs) { callbackRes = util_1.applyAll(onSuccess, _this, [rawEventDefs, status, xhr]); // redirect `this` if ($.isArray(callbackRes)) { rawEventDefs = callbackRes; } onResolve(_this.parseEventDefs(rawEventDefs)); } else { onReject(); } }, error: function (xhr, statusText, errorThrown) { _this.calendar.popLoading(); util_1.applyAll(onError, _this, [xhr, statusText, errorThrown]); // redirect `this` onReject(); } })); }); }; JsonFeedEventSource.prototype.buildRequestParams = function (start, end, timezone) { var calendar = this.calendar; var ajaxSettings = this.ajaxSettings; var startParam; var endParam; var timezoneParam; var customRequestParams; var params = {}; startParam = this.startParam; if (startParam == null) { startParam = calendar.opt('startParam'); } endParam = this.endParam; if (endParam == null) { endParam = calendar.opt('endParam'); } timezoneParam = this.timezoneParam; if (timezoneParam == null) { timezoneParam = calendar.opt('timezoneParam'); } // retrieve any outbound GET/POST $.ajax data from the options if ($.isFunction(ajaxSettings.data)) { // supplied as a function that returns a key/value object customRequestParams = ajaxSettings.data(); } else { // probably supplied as a straight key/value object customRequestParams = ajaxSettings.data || {}; } $.extend(params, customRequestParams); params[startParam] = start.format(); params[endParam] = end.format(); if (timezone && timezone !== 'local') { params[timezoneParam] = timezone; } return params; }; JsonFeedEventSource.prototype.getPrimitive = function () { return this.url; }; JsonFeedEventSource.prototype.applyMiscProps = function (rawProps) { this.ajaxSettings = rawProps; }; JsonFeedEventSource.AJAX_DEFAULTS = { dataType: 'json', cache: false }; return JsonFeedEventSource; }(EventSource_1.default)); exports.default = JsonFeedEventSource; JsonFeedEventSource.defineStandardProps({ // automatically transfer (true)... url: true, startParam: true, endParam: true, timezoneParam: true }); /***/ }), /* 225 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var Iterator = /** @class */ (function () { function Iterator(items) { this.items = items || []; } /* Calls a method on every item passing the arguments through */ Iterator.prototype.proxyCall = function (methodName) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var results = []; this.items.forEach(function (item) { results.push(item[methodName].apply(item, args)); }); return results; }; return Iterator; }()); exports.default = Iterator; /***/ }), /* 226 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var ListenerMixin_1 = __webpack_require__(7); /* Creates a clone of an element and lets it track the mouse as it moves ----------------------------------------------------------------------------------------------------------------------*/ var MouseFollower = /** @class */ (function () { function MouseFollower(sourceEl, options) { this.isFollowing = false; this.isHidden = false; this.isAnimating = false; // doing the revert animation? this.options = options = options || {}; this.sourceEl = sourceEl; this.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent } // Causes the element to start following the mouse MouseFollower.prototype.start = function (ev) { if (!this.isFollowing) { this.isFollowing = true; this.y0 = util_1.getEvY(ev); this.x0 = util_1.getEvX(ev); this.topDelta = 0; this.leftDelta = 0; if (!this.isHidden) { this.updatePosition(); } if (util_1.getEvIsTouch(ev)) { this.listenTo($(document), 'touchmove', this.handleMove); } else { this.listenTo($(document), 'mousemove', this.handleMove); } } }; // Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position. // `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately. MouseFollower.prototype.stop = function (shouldRevert, callback) { var _this = this; var revertDuration = this.options.revertDuration; var complete = function () { _this.isAnimating = false; _this.removeElement(); _this.top0 = _this.left0 = null; // reset state for future updatePosition calls if (callback) { callback(); } }; if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time this.isFollowing = false; this.stopListeningTo($(document)); if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation? this.isAnimating = true; this.el.animate({ top: this.top0, left: this.left0 }, { duration: revertDuration, complete: complete }); } else { complete(); } } }; // Gets the tracking element. Create it if necessary MouseFollower.prototype.getEl = function () { var el = this.el; if (!el) { el = this.el = this.sourceEl.clone() .addClass(this.options.additionalClass || '') .css({ position: 'absolute', visibility: '', display: this.isHidden ? 'none' : '', margin: 0, right: 'auto', bottom: 'auto', width: this.sourceEl.width(), height: this.sourceEl.height(), opacity: this.options.opacity || '', zIndex: this.options.zIndex }); // we don't want long taps or any mouse interaction causing selection/menus. // would use preventSelection(), but that prevents selectstart, causing problems. el.addClass('fc-unselectable'); el.appendTo(this.parentEl); } return el; }; // Removes the tracking element if it has already been created MouseFollower.prototype.removeElement = function () { if (this.el) { this.el.remove(); this.el = null; } }; // Update the CSS position of the tracking element MouseFollower.prototype.updatePosition = function () { var sourceOffset; var origin; this.getEl(); // ensure this.el // make sure origin info was computed if (this.top0 == null) { sourceOffset = this.sourceEl.offset(); origin = this.el.offsetParent().offset(); this.top0 = sourceOffset.top - origin.top; this.left0 = sourceOffset.left - origin.left; } this.el.css({ top: this.top0 + this.topDelta, left: this.left0 + this.leftDelta }); }; // Gets called when the user moves the mouse MouseFollower.prototype.handleMove = function (ev) { this.topDelta = util_1.getEvY(ev) - this.y0; this.leftDelta = util_1.getEvX(ev) - this.x0; if (!this.isHidden) { this.updatePosition(); } }; // Temporarily makes the tracking element invisible. Can be called before following starts MouseFollower.prototype.hide = function () { if (!this.isHidden) { this.isHidden = true; if (this.el) { this.el.hide(); } } }; // Show the tracking element after it has been temporarily hidden MouseFollower.prototype.show = function () { if (this.isHidden) { this.isHidden = false; this.updatePosition(); this.getEl().show(); } }; return MouseFollower; }()); exports.default = MouseFollower; ListenerMixin_1.default.mixInto(MouseFollower); /***/ }), /* 227 */ /***/ (function(module, exports, __webpack_require__) { /* A rectangular panel that is absolutely positioned over other content ------------------------------------------------------------------------------------------------------------------------ Options: - className (string) - content (HTML string or jQuery element set) - parentEl - top - left - right (the x coord of where the right edge should be. not a "CSS" right) - autoHide (boolean) - show (callback) - hide (callback) */ Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var ListenerMixin_1 = __webpack_require__(7); var Popover = /** @class */ (function () { function Popover(options) { this.isHidden = true; this.margin = 10; // the space required between the popover and the edges of the scroll container this.options = options || {}; } // Shows the popover on the specified position. Renders it if not already Popover.prototype.show = function () { if (this.isHidden) { if (!this.el) { this.render(); } this.el.show(); this.position(); this.isHidden = false; this.trigger('show'); } }; // Hides the popover, through CSS, but does not remove it from the DOM Popover.prototype.hide = function () { if (!this.isHidden) { this.el.hide(); this.isHidden = true; this.trigger('hide'); } }; // Creates `this.el` and renders content inside of it Popover.prototype.render = function () { var _this = this; var options = this.options; this.el = $('<div class="fc-popover">') .addClass(options.className || '') .css({ // position initially to the top left to avoid creating scrollbars top: 0, left: 0 }) .append(options.content) .appendTo(options.parentEl); // when a click happens on anything inside with a 'fc-close' className, hide the popover this.el.on('click', '.fc-close', function () { _this.hide(); }); if (options.autoHide) { this.listenTo($(document), 'mousedown', this.documentMousedown); } }; // Triggered when the user clicks *anywhere* in the document, for the autoHide feature Popover.prototype.documentMousedown = function (ev) { // only hide the popover if the click happened outside the popover if (this.el && !$(ev.target).closest(this.el).length) { this.hide(); } }; // Hides and unregisters any handlers Popover.prototype.removeElement = function () { this.hide(); if (this.el) { this.el.remove(); this.el = null; } this.stopListeningTo($(document), 'mousedown'); }; // Positions the popover optimally, using the top/left/right options Popover.prototype.position = function () { var options = this.options; var origin = this.el.offsetParent().offset(); var width = this.el.outerWidth(); var height = this.el.outerHeight(); var windowEl = $(window); var viewportEl = util_1.getScrollParent(this.el); var viewportTop; var viewportLeft; var viewportOffset; var top; // the "position" (not "offset") values for the popover var left; // // compute top and left top = options.top || 0; if (options.left !== undefined) { left = options.left; } else if (options.right !== undefined) { left = options.right - width; // derive the left value from the right value } else { left = 0; } if (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result viewportEl = windowEl; viewportTop = 0; // the window is always at the top left viewportLeft = 0; // (and .offset() won't work if called here) } else { viewportOffset = viewportEl.offset(); viewportTop = viewportOffset.top; viewportLeft = viewportOffset.left; } // if the window is scrolled, it causes the visible area to be further down viewportTop += windowEl.scrollTop(); viewportLeft += windowEl.scrollLeft(); // constrain to the view port. if constrained by two edges, give precedence to top/left if (options.viewportConstrain !== false) { top = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin); top = Math.max(top, viewportTop + this.margin); left = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin); left = Math.max(left, viewportLeft + this.margin); } this.el.css({ top: top - origin.top, left: left - origin.left }); }; // Triggers a callback. Calls a function in the option hash of the same name. // Arguments beyond the first `name` are forwarded on. // TODO: better code reuse for this. Repeat code Popover.prototype.trigger = function (name) { if (this.options[name]) { this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); } }; return Popover; }()); exports.default = Popover; ListenerMixin_1.default.mixInto(Popover); /***/ }), /* 228 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var EmitterMixin_1 = __webpack_require__(13); var TaskQueue = /** @class */ (function () { function TaskQueue() { this.q = []; this.isPaused = false; this.isRunning = false; } TaskQueue.prototype.queue = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.q.push.apply(this.q, args); // append this.tryStart(); }; TaskQueue.prototype.pause = function () { this.isPaused = true; }; TaskQueue.prototype.resume = function () { this.isPaused = false; this.tryStart(); }; TaskQueue.prototype.getIsIdle = function () { return !this.isRunning && !this.isPaused; }; TaskQueue.prototype.tryStart = function () { if (!this.isRunning && this.canRunNext()) { this.isRunning = true; this.trigger('start'); this.runRemaining(); } }; TaskQueue.prototype.canRunNext = function () { return !this.isPaused && this.q.length; }; TaskQueue.prototype.runRemaining = function () { var _this = this; var task; var res; do { task = this.q.shift(); // always freshly reference q. might have been reassigned. res = this.runTask(task); if (res && res.then) { res.then(function () { if (_this.canRunNext()) { _this.runRemaining(); } }); return; // prevent marking as stopped } } while (this.canRunNext()); this.trigger('stop'); // not really a 'stop' ... more of a 'drained' this.isRunning = false; // if 'stop' handler added more tasks.... TODO: write test for this this.tryStart(); }; TaskQueue.prototype.runTask = function (task) { return task(); // task *is* the function, but subclasses can change the format of a task }; return TaskQueue; }()); exports.default = TaskQueue; EmitterMixin_1.default.mixInto(TaskQueue); /***/ }), /* 229 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var TaskQueue_1 = __webpack_require__(228); var RenderQueue = /** @class */ (function (_super) { tslib_1.__extends(RenderQueue, _super); function RenderQueue(waitsByNamespace) { var _this = _super.call(this) || this; _this.waitsByNamespace = waitsByNamespace || {}; return _this; } RenderQueue.prototype.queue = function (taskFunc, namespace, type) { var task = { func: taskFunc, namespace: namespace, type: type }; var waitMs; if (namespace) { waitMs = this.waitsByNamespace[namespace]; } if (this.waitNamespace) { if (namespace === this.waitNamespace && waitMs != null) { this.delayWait(waitMs); } else { this.clearWait(); this.tryStart(); } } if (this.compoundTask(task)) { // appended to queue? if (!this.waitNamespace && waitMs != null) { this.startWait(namespace, waitMs); } else { this.tryStart(); } } }; RenderQueue.prototype.startWait = function (namespace, waitMs) { this.waitNamespace = namespace; this.spawnWait(waitMs); }; RenderQueue.prototype.delayWait = function (waitMs) { clearTimeout(this.waitId); this.spawnWait(waitMs); }; RenderQueue.prototype.spawnWait = function (waitMs) { var _this = this; this.waitId = setTimeout(function () { _this.waitNamespace = null; _this.tryStart(); }, waitMs); }; RenderQueue.prototype.clearWait = function () { if (this.waitNamespace) { clearTimeout(this.waitId); this.waitId = null; this.waitNamespace = null; } }; RenderQueue.prototype.canRunNext = function () { if (!_super.prototype.canRunNext.call(this)) { return false; } // waiting for a certain namespace to stop receiving tasks? if (this.waitNamespace) { var q = this.q; // if there was a different namespace task in the meantime, // that forces all previously-waiting tasks to suddenly execute. // TODO: find a way to do this in constant time. for (var i = 0; i < q.length; i++) { if (q[i].namespace !== this.waitNamespace) { return true; // allow execution } } return false; } return true; }; RenderQueue.prototype.runTask = function (task) { task.func(); }; RenderQueue.prototype.compoundTask = function (newTask) { var q = this.q; var shouldAppend = true; var i; var task; if (newTask.namespace && newTask.type === 'destroy') { // remove all init/add/remove ops with same namespace, regardless of order for (i = q.length - 1; i >= 0; i--) { task = q[i]; if (task.namespace === newTask.namespace) { switch (task.type) { case 'init': shouldAppend = false; // the latest destroy is cancelled out by not doing the init /* falls through */ case 'add': /* falls through */ case 'remove': q.splice(i, 1); // remove task } } } } if (shouldAppend) { q.push(newTask); } return shouldAppend; }; return RenderQueue; }(TaskQueue_1.default)); exports.default = RenderQueue; /***/ }), /* 230 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var Model_1 = __webpack_require__(51); var Component = /** @class */ (function (_super) { tslib_1.__extends(Component, _super); function Component() { return _super !== null && _super.apply(this, arguments) || this; } Component.prototype.setElement = function (el) { this.el = el; this.bindGlobalHandlers(); this.renderSkeleton(); this.set('isInDom', true); }; Component.prototype.removeElement = function () { this.unset('isInDom'); this.unrenderSkeleton(); this.unbindGlobalHandlers(); this.el.remove(); // NOTE: don't null-out this.el in case the View was destroyed within an API callback. // We don't null-out the View's other jQuery element references upon destroy, // so we shouldn't kill this.el either. }; Component.prototype.bindGlobalHandlers = function () { // subclasses can override }; Component.prototype.unbindGlobalHandlers = function () { // subclasses can override }; /* NOTE: Can't have a `render` method. Read the deprecation notice in View::executeDateRender */ // Renders the basic structure of the view before any content is rendered Component.prototype.renderSkeleton = function () { // subclasses should implement }; // Unrenders the basic structure of the view Component.prototype.unrenderSkeleton = function () { // subclasses should implement }; return Component; }(Model_1.default)); exports.default = Component; /***/ }), /* 231 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var moment = __webpack_require__(0); var util_1 = __webpack_require__(4); var moment_ext_1 = __webpack_require__(11); var date_formatting_1 = __webpack_require__(49); var Component_1 = __webpack_require__(230); var util_2 = __webpack_require__(19); var DateComponent = /** @class */ (function (_super) { tslib_1.__extends(DateComponent, _super); function DateComponent(_view, _options) { var _this = _super.call(this) || this; _this.isRTL = false; // frequently accessed options _this.hitsNeededDepth = 0; // necessary because multiple callers might need the same hits _this.hasAllDayBusinessHours = false; // TODO: unify with largeUnit and isTimeScale? _this.isDatesRendered = false; // hack to set options prior to the this.opt calls if (_view) { _this['view'] = _view; } if (_options) { _this['options'] = _options; } _this.uid = String(DateComponent.guid++); _this.childrenByUid = {}; _this.nextDayThreshold = moment.duration(_this.opt('nextDayThreshold')); _this.isRTL = _this.opt('isRTL'); if (_this.fillRendererClass) { _this.fillRenderer = new _this.fillRendererClass(_this); } if (_this.eventRendererClass) { // fillRenderer is optional -----v _this.eventRenderer = new _this.eventRendererClass(_this, _this.fillRenderer); } if (_this.helperRendererClass && _this.eventRenderer) { _this.helperRenderer = new _this.helperRendererClass(_this, _this.eventRenderer); } if (_this.businessHourRendererClass && _this.fillRenderer) { _this.businessHourRenderer = new _this.businessHourRendererClass(_this, _this.fillRenderer); } return _this; } DateComponent.prototype.addChild = function (child) { if (!this.childrenByUid[child.uid]) { this.childrenByUid[child.uid] = child; return true; } return false; }; DateComponent.prototype.removeChild = function (child) { if (this.childrenByUid[child.uid]) { delete this.childrenByUid[child.uid]; return true; } return false; }; // TODO: only do if isInDom? // TODO: make part of Component, along with children/batch-render system? DateComponent.prototype.updateSize = function (totalHeight, isAuto, isResize) { this.callChildren('updateSize', arguments); }; // Options // ----------------------------------------------------------------------------------------------------------------- DateComponent.prototype.opt = function (name) { return this._getView().opt(name); // default implementation }; DateComponent.prototype.publiclyTrigger = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var calendar = this._getCalendar(); return calendar.publiclyTrigger.apply(calendar, args); }; DateComponent.prototype.hasPublicHandlers = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var calendar = this._getCalendar(); return calendar.hasPublicHandlers.apply(calendar, args); }; // Date // ----------------------------------------------------------------------------------------------------------------- DateComponent.prototype.executeDateRender = function (dateProfile) { this.dateProfile = dateProfile; // for rendering this.renderDates(dateProfile); this.isDatesRendered = true; this.callChildren('executeDateRender', arguments); }; DateComponent.prototype.executeDateUnrender = function () { this.callChildren('executeDateUnrender', arguments); this.dateProfile = null; this.unrenderDates(); this.isDatesRendered = false; }; // date-cell content only DateComponent.prototype.renderDates = function (dateProfile) { // subclasses should implement }; // date-cell content only DateComponent.prototype.unrenderDates = function () { // subclasses should override }; // Now-Indicator // ----------------------------------------------------------------------------------------------------------------- // Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator // should be refreshed. If something falsy is returned, no time indicator is rendered at all. DateComponent.prototype.getNowIndicatorUnit = function () { // subclasses should implement }; // Renders a current time indicator at the given datetime DateComponent.prototype.renderNowIndicator = function (date) { this.callChildren('renderNowIndicator', arguments); }; // Undoes the rendering actions from renderNowIndicator DateComponent.prototype.unrenderNowIndicator = function () { this.callChildren('unrenderNowIndicator', arguments); }; // Business Hours // --------------------------------------------------------------------------------------------------------------- DateComponent.prototype.renderBusinessHours = function (businessHourGenerator) { if (this.businessHourRenderer) { this.businessHourRenderer.render(businessHourGenerator); } this.callChildren('renderBusinessHours', arguments); }; // Unrenders previously-rendered business-hours DateComponent.prototype.unrenderBusinessHours = function () { this.callChildren('unrenderBusinessHours', arguments); if (this.businessHourRenderer) { this.businessHourRenderer.unrender(); } }; // Event Displaying // ----------------------------------------------------------------------------------------------------------------- DateComponent.prototype.executeEventRender = function (eventsPayload) { if (this.eventRenderer) { this.eventRenderer.rangeUpdated(); // poorly named now this.eventRenderer.render(eventsPayload); } else if (this['renderEvents']) { // legacy this['renderEvents'](convertEventsPayloadToLegacyArray(eventsPayload)); } this.callChildren('executeEventRender', arguments); }; DateComponent.prototype.executeEventUnrender = function () { this.callChildren('executeEventUnrender', arguments); if (this.eventRenderer) { this.eventRenderer.unrender(); } else if (this['destroyEvents']) { // legacy this['destroyEvents'](); } }; DateComponent.prototype.getBusinessHourSegs = function () { var segs = this.getOwnBusinessHourSegs(); this.iterChildren(function (child) { segs.push.apply(segs, child.getBusinessHourSegs()); }); return segs; }; DateComponent.prototype.getOwnBusinessHourSegs = function () { if (this.businessHourRenderer) { return this.businessHourRenderer.getSegs(); } return []; }; DateComponent.prototype.getEventSegs = function () { var segs = this.getOwnEventSegs(); this.iterChildren(function (child) { segs.push.apply(segs, child.getEventSegs()); }); return segs; }; DateComponent.prototype.getOwnEventSegs = function () { if (this.eventRenderer) { return this.eventRenderer.getSegs(); } return []; }; // Event Rendering Triggering // ----------------------------------------------------------------------------------------------------------------- DateComponent.prototype.triggerAfterEventsRendered = function () { this.triggerAfterEventSegsRendered(this.getEventSegs()); this.publiclyTrigger('eventAfterAllRender', { context: this, args: [this] }); }; DateComponent.prototype.triggerAfterEventSegsRendered = function (segs) { var _this = this; // an optimization, because getEventLegacy is expensive if (this.hasPublicHandlers('eventAfterRender')) { segs.forEach(function (seg) { var legacy; if (seg.el) { // necessary? legacy = seg.footprint.getEventLegacy(); _this.publiclyTrigger('eventAfterRender', { context: legacy, args: [legacy, seg.el, _this] }); } }); } }; DateComponent.prototype.triggerBeforeEventsDestroyed = function () { this.triggerBeforeEventSegsDestroyed(this.getEventSegs()); }; DateComponent.prototype.triggerBeforeEventSegsDestroyed = function (segs) { var _this = this; if (this.hasPublicHandlers('eventDestroy')) { segs.forEach(function (seg) { var legacy; if (seg.el) { // necessary? legacy = seg.footprint.getEventLegacy(); _this.publiclyTrigger('eventDestroy', { context: legacy, args: [legacy, seg.el, _this] }); } }); } }; // Event Rendering Utils // ----------------------------------------------------------------------------------------------------------------- // Hides all rendered event segments linked to the given event // RECURSIVE with subcomponents DateComponent.prototype.showEventsWithId = function (eventDefId) { this.getEventSegs().forEach(function (seg) { if (seg.footprint.eventDef.id === eventDefId && seg.el // necessary? ) { seg.el.css('visibility', ''); } }); this.callChildren('showEventsWithId', arguments); }; // Shows all rendered event segments linked to the given event // RECURSIVE with subcomponents DateComponent.prototype.hideEventsWithId = function (eventDefId) { this.getEventSegs().forEach(function (seg) { if (seg.footprint.eventDef.id === eventDefId && seg.el // necessary? ) { seg.el.css('visibility', 'hidden'); } }); this.callChildren('hideEventsWithId', arguments); }; // Drag-n-Drop Rendering (for both events and external elements) // --------------------------------------------------------------------------------------------------------------- // Renders a visual indication of a event or external-element drag over the given drop zone. // If an external-element, seg will be `null`. // Must return elements used for any mock events. DateComponent.prototype.renderDrag = function (eventFootprints, seg, isTouch) { var renderedHelper = false; this.iterChildren(function (child) { if (child.renderDrag(eventFootprints, seg, isTouch)) { renderedHelper = true; } }); return renderedHelper; }; // Unrenders a visual indication of an event or external-element being dragged. DateComponent.prototype.unrenderDrag = function () { this.callChildren('unrenderDrag', arguments); }; // Event Resizing // --------------------------------------------------------------------------------------------------------------- // Renders a visual indication of an event being resized. DateComponent.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { this.callChildren('renderEventResize', arguments); }; // Unrenders a visual indication of an event being resized. DateComponent.prototype.unrenderEventResize = function () { this.callChildren('unrenderEventResize', arguments); }; // Selection // --------------------------------------------------------------------------------------------------------------- // Renders a visual indication of the selection // TODO: rename to `renderSelection` after legacy is gone DateComponent.prototype.renderSelectionFootprint = function (componentFootprint) { this.renderHighlight(componentFootprint); this.callChildren('renderSelectionFootprint', arguments); }; // Unrenders a visual indication of selection DateComponent.prototype.unrenderSelection = function () { this.unrenderHighlight(); this.callChildren('unrenderSelection', arguments); }; // Highlight // --------------------------------------------------------------------------------------------------------------- // Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data) DateComponent.prototype.renderHighlight = function (componentFootprint) { if (this.fillRenderer) { this.fillRenderer.renderFootprint('highlight', componentFootprint, { getClasses: function () { return ['fc-highlight']; } }); } this.callChildren('renderHighlight', arguments); }; // Unrenders the emphasis on a date range DateComponent.prototype.unrenderHighlight = function () { if (this.fillRenderer) { this.fillRenderer.unrender('highlight'); } this.callChildren('unrenderHighlight', arguments); }; // Hit Areas // --------------------------------------------------------------------------------------------------------------- // just because all DateComponents support this interface // doesn't mean they need to have their own internal coord system. they can defer to sub-components. DateComponent.prototype.hitsNeeded = function () { if (!(this.hitsNeededDepth++)) { this.prepareHits(); } this.callChildren('hitsNeeded', arguments); }; DateComponent.prototype.hitsNotNeeded = function () { if (this.hitsNeededDepth && !(--this.hitsNeededDepth)) { this.releaseHits(); } this.callChildren('hitsNotNeeded', arguments); }; DateComponent.prototype.prepareHits = function () { // subclasses can implement }; DateComponent.prototype.releaseHits = function () { // subclasses can implement }; // Given coordinates from the topleft of the document, return data about the date-related area underneath. // Can return an object with arbitrary properties (although top/right/left/bottom are encouraged). // Must have a `grid` property, a reference to this current grid. TODO: avoid this // The returned object will be processed by getHitFootprint and getHitEl. DateComponent.prototype.queryHit = function (leftOffset, topOffset) { var childrenByUid = this.childrenByUid; var uid; var hit; for (uid in childrenByUid) { hit = childrenByUid[uid].queryHit(leftOffset, topOffset); if (hit) { break; } } return hit; }; DateComponent.prototype.getSafeHitFootprint = function (hit) { var footprint = this.getHitFootprint(hit); if (!this.dateProfile.activeUnzonedRange.containsRange(footprint.unzonedRange)) { return null; } return footprint; }; DateComponent.prototype.getHitFootprint = function (hit) { // what about being abstract!? }; // Given position-level information about a date-related area within the grid, // should return a jQuery element that best represents it. passed to dayClick callback. DateComponent.prototype.getHitEl = function (hit) { // what about being abstract!? }; /* Converting eventRange -> eventFootprint ------------------------------------------------------------------------------------------------------------------*/ DateComponent.prototype.eventRangesToEventFootprints = function (eventRanges) { var eventFootprints = []; var i; for (i = 0; i < eventRanges.length; i++) { eventFootprints.push.apply(// append eventFootprints, this.eventRangeToEventFootprints(eventRanges[i])); } return eventFootprints; }; DateComponent.prototype.eventRangeToEventFootprints = function (eventRange) { return [util_2.eventRangeToEventFootprint(eventRange)]; }; /* Converting componentFootprint/eventFootprint -> segs ------------------------------------------------------------------------------------------------------------------*/ DateComponent.prototype.eventFootprintsToSegs = function (eventFootprints) { var segs = []; var i; for (i = 0; i < eventFootprints.length; i++) { segs.push.apply(segs, this.eventFootprintToSegs(eventFootprints[i])); } return segs; }; // Given an event's span (unzoned start/end and other misc data), and the event itself, // slices into segments and attaches event-derived properties to them. // eventSpan - { start, end, isStart, isEnd, otherthings... } DateComponent.prototype.eventFootprintToSegs = function (eventFootprint) { var unzonedRange = eventFootprint.componentFootprint.unzonedRange; var segs; var i; var seg; segs = this.componentFootprintToSegs(eventFootprint.componentFootprint); for (i = 0; i < segs.length; i++) { seg = segs[i]; if (!unzonedRange.isStart) { seg.isStart = false; } if (!unzonedRange.isEnd) { seg.isEnd = false; } seg.footprint = eventFootprint; // TODO: rename to seg.eventFootprint } return segs; }; DateComponent.prototype.componentFootprintToSegs = function (componentFootprint) { return []; }; // Utils // --------------------------------------------------------------------------------------------------------------- DateComponent.prototype.callChildren = function (methodName, args) { this.iterChildren(function (child) { child[methodName].apply(child, args); }); }; DateComponent.prototype.iterChildren = function (func) { var childrenByUid = this.childrenByUid; var uid; for (uid in childrenByUid) { func(childrenByUid[uid]); } }; DateComponent.prototype._getCalendar = function () { var t = this; return t.calendar || t.view.calendar; }; DateComponent.prototype._getView = function () { return this.view; }; DateComponent.prototype._getDateProfile = function () { return this._getView().get('dateProfile'); }; // Generates HTML for an anchor to another view into the calendar. // Will either generate an <a> tag or a non-clickable <span> tag, depending on enabled settings. // `gotoOptions` can either be a moment input, or an object with the form: // { date, type, forceOff } // `type` is a view-type like "day" or "week". default value is "day". // `attrs` and `innerHtml` are use to generate the rest of the HTML tag. DateComponent.prototype.buildGotoAnchorHtml = function (gotoOptions, attrs, innerHtml) { var date; var type; var forceOff; var finalOptions; if ($.isPlainObject(gotoOptions)) { date = gotoOptions.date; type = gotoOptions.type; forceOff = gotoOptions.forceOff; } else { date = gotoOptions; // a single moment input } date = moment_ext_1.default(date); // if a string, parse it finalOptions = { date: date.format('YYYY-MM-DD'), type: type || 'day' }; if (typeof attrs === 'string') { innerHtml = attrs; attrs = null; } attrs = attrs ? ' ' + util_1.attrsToStr(attrs) : ''; // will have a leading space innerHtml = innerHtml || ''; if (!forceOff && this.opt('navLinks')) { return '<a' + attrs + ' data-goto="' + util_1.htmlEscape(JSON.stringify(finalOptions)) + '">' + innerHtml + '</a>'; } else { return '<span' + attrs + '>' + innerHtml + '</span>'; } }; DateComponent.prototype.getAllDayHtml = function () { return this.opt('allDayHtml') || util_1.htmlEscape(this.opt('allDayText')); }; // Computes HTML classNames for a single-day element DateComponent.prototype.getDayClasses = function (date, noThemeHighlight) { var view = this._getView(); var classes = []; var today; if (!this.dateProfile.activeUnzonedRange.containsDate(date)) { classes.push('fc-disabled-day'); // TODO: jQuery UI theme? } else { classes.push('fc-' + util_1.dayIDs[date.day()]); if (view.isDateInOtherMonth(date, this.dateProfile)) { // TODO: use DateComponent subclass somehow classes.push('fc-other-month'); } today = view.calendar.getNow(); if (date.isSame(today, 'day')) { classes.push('fc-today'); if (noThemeHighlight !== true) { classes.push(view.calendar.theme.getClass('today')); } } else if (date < today) { classes.push('fc-past'); } else { classes.push('fc-future'); } } return classes; }; // Utility for formatting a range. Accepts a range object, formatting string, and optional separator. // Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account. // The timezones of the dates within `range` will be respected. DateComponent.prototype.formatRange = function (range, isAllDay, formatStr, separator) { var end = range.end; if (isAllDay) { end = end.clone().subtract(1); // convert to inclusive. last ms of previous day } return date_formatting_1.formatRange(range.start, end, formatStr, separator, this.isRTL); }; // Compute the number of the give units in the "current" range. // Will return a floating-point number. Won't round. DateComponent.prototype.currentRangeAs = function (unit) { return this._getDateProfile().currentUnzonedRange.as(unit); }; // Returns the date range of the full days the given range visually appears to occupy. // Returns a plain object with start/end, NOT an UnzonedRange! DateComponent.prototype.computeDayRange = function (unzonedRange) { var calendar = this._getCalendar(); var startDay = calendar.msToUtcMoment(unzonedRange.startMs, true); // the beginning of the day the range starts var end = calendar.msToUtcMoment(unzonedRange.endMs); var endTimeMS = +end.time(); // # of milliseconds into `endDay` var endDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends // If the end time is actually inclusively part of the next day and is equal to or // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`. // Otherwise, leaving it as inclusive will cause it to exclude `endDay`. if (endTimeMS && endTimeMS >= this.nextDayThreshold) { endDay.add(1, 'days'); } // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day. if (endDay <= startDay) { endDay = startDay.clone().add(1, 'days'); } return { start: startDay, end: endDay }; }; // Does the given range visually appear to occupy more than one day? DateComponent.prototype.isMultiDayRange = function (unzonedRange) { var dayRange = this.computeDayRange(unzonedRange); return dayRange.end.diff(dayRange.start, 'days') > 1; }; DateComponent.guid = 0; // TODO: better system for this? return DateComponent; }(Component_1.default)); exports.default = DateComponent; // legacy function convertEventsPayloadToLegacyArray(eventsPayload) { var eventDefId; var eventInstances; var legacyEvents = []; var i; for (eventDefId in eventsPayload) { eventInstances = eventsPayload[eventDefId].eventInstances; for (i = 0; i < eventInstances.length; i++) { legacyEvents.push(eventInstances[i].toLegacy()); } } return legacyEvents; } /***/ }), /* 232 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var moment = __webpack_require__(0); var util_1 = __webpack_require__(4); var options_1 = __webpack_require__(33); var Iterator_1 = __webpack_require__(225); var GlobalEmitter_1 = __webpack_require__(23); var EmitterMixin_1 = __webpack_require__(13); var ListenerMixin_1 = __webpack_require__(7); var Toolbar_1 = __webpack_require__(257); var OptionsManager_1 = __webpack_require__(258); var ViewSpecManager_1 = __webpack_require__(259); var Constraints_1 = __webpack_require__(217); var locale_1 = __webpack_require__(32); var moment_ext_1 = __webpack_require__(11); var UnzonedRange_1 = __webpack_require__(5); var ComponentFootprint_1 = __webpack_require__(12); var EventDateProfile_1 = __webpack_require__(16); var EventManager_1 = __webpack_require__(220); var BusinessHourGenerator_1 = __webpack_require__(218); var EventSourceParser_1 = __webpack_require__(38); var EventDefParser_1 = __webpack_require__(36); var SingleEventDef_1 = __webpack_require__(9); var EventDefMutation_1 = __webpack_require__(39); var EventSource_1 = __webpack_require__(6); var ThemeRegistry_1 = __webpack_require__(57); var Calendar = /** @class */ (function () { function Calendar(el, overrides) { this.loadingLevel = 0; // number of simultaneous loading tasks this.ignoreUpdateViewSize = 0; this.freezeContentHeightDepth = 0; // declare the current calendar instance relies on GlobalEmitter. needed for garbage collection. // unneeded() is called in destroy. GlobalEmitter_1.default.needed(); this.el = el; this.viewsByType = {}; this.optionsManager = new OptionsManager_1.default(this, overrides); this.viewSpecManager = new ViewSpecManager_1.default(this.optionsManager, this); this.initMomentInternals(); // needs to happen after options hash initialized this.initCurrentDate(); this.initEventManager(); this.constraints = new Constraints_1.default(this.eventManager, this); this.constructed(); } Calendar.prototype.constructed = function () { // useful for monkeypatching. used? }; Calendar.prototype.getView = function () { return this.view; }; Calendar.prototype.publiclyTrigger = function (name, triggerInfo) { var optHandler = this.opt(name); var context; var args; if ($.isPlainObject(triggerInfo)) { context = triggerInfo.context; args = triggerInfo.args; } else if ($.isArray(triggerInfo)) { args = triggerInfo; } if (context == null) { context = this.el[0]; // fallback context } if (!args) { args = []; } this.triggerWith(name, context, args); // Emitter's method if (optHandler) { return optHandler.apply(context, args); } }; Calendar.prototype.hasPublicHandlers = function (name) { return this.hasHandlers(name) || this.opt(name); // handler specified in options }; // Options Public API // ----------------------------------------------------------------------------------------------------------------- // public getter/setter Calendar.prototype.option = function (name, value) { var newOptionHash; if (typeof name === 'string') { if (value === undefined) { // getter return this.optionsManager.get(name); } else { // setter for individual option newOptionHash = {}; newOptionHash[name] = value; this.optionsManager.add(newOptionHash); } } else if (typeof name === 'object') { // compound setter with object input this.optionsManager.add(name); } }; // private getter Calendar.prototype.opt = function (name) { return this.optionsManager.get(name); }; // View // ----------------------------------------------------------------------------------------------------------------- // Given a view name for a custom view or a standard view, creates a ready-to-go View object Calendar.prototype.instantiateView = function (viewType) { var spec = this.viewSpecManager.getViewSpec(viewType); if (!spec) { throw new Error("View type \"" + viewType + "\" is not valid"); } return new spec['class'](this, spec); }; // Returns a boolean about whether the view is okay to instantiate at some point Calendar.prototype.isValidViewType = function (viewType) { return Boolean(this.viewSpecManager.getViewSpec(viewType)); }; Calendar.prototype.changeView = function (viewName, dateOrRange) { if (dateOrRange) { if (dateOrRange.start && dateOrRange.end) { // a range this.optionsManager.recordOverrides({ visibleRange: dateOrRange }); } else { // a date this.currentDate = this.moment(dateOrRange).stripZone(); // just like gotoDate } } this.renderView(viewName); }; // Forces navigation to a view for the given date. // `viewType` can be a specific view name or a generic one like "week" or "day". Calendar.prototype.zoomTo = function (newDate, viewType) { var spec; viewType = viewType || 'day'; // day is default zoom spec = this.viewSpecManager.getViewSpec(viewType) || this.viewSpecManager.getUnitViewSpec(viewType); this.currentDate = newDate.clone(); this.renderView(spec ? spec.type : null); }; // Current Date // ----------------------------------------------------------------------------------------------------------------- Calendar.prototype.initCurrentDate = function () { var defaultDateInput = this.opt('defaultDate'); // compute the initial ambig-timezone date if (defaultDateInput != null) { this.currentDate = this.moment(defaultDateInput).stripZone(); } else { this.currentDate = this.getNow(); // getNow already returns unzoned } }; Calendar.prototype.prev = function () { var view = this.view; var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile')); if (prevInfo.isValid) { this.currentDate = prevInfo.date; this.renderView(); } }; Calendar.prototype.next = function () { var view = this.view; var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile')); if (nextInfo.isValid) { this.currentDate = nextInfo.date; this.renderView(); } }; Calendar.prototype.prevYear = function () { this.currentDate.add(-1, 'years'); this.renderView(); }; Calendar.prototype.nextYear = function () { this.currentDate.add(1, 'years'); this.renderView(); }; Calendar.prototype.today = function () { this.currentDate = this.getNow(); // should deny like prev/next? this.renderView(); }; Calendar.prototype.gotoDate = function (zonedDateInput) { this.currentDate = this.moment(zonedDateInput).stripZone(); this.renderView(); }; Calendar.prototype.incrementDate = function (delta) { this.currentDate.add(moment.duration(delta)); this.renderView(); }; // for external API Calendar.prototype.getDate = function () { return this.applyTimezone(this.currentDate); // infuse the calendar's timezone }; // Loading Triggering // ----------------------------------------------------------------------------------------------------------------- // Should be called when any type of async data fetching begins Calendar.prototype.pushLoading = function () { if (!(this.loadingLevel++)) { this.publiclyTrigger('loading', [true, this.view]); } }; // Should be called when any type of async data fetching completes Calendar.prototype.popLoading = function () { if (!(--this.loadingLevel)) { this.publiclyTrigger('loading', [false, this.view]); } }; // High-level Rendering // ----------------------------------------------------------------------------------- Calendar.prototype.render = function () { if (!this.contentEl) { this.initialRender(); } else if (this.elementVisible()) { // mainly for the public API this.calcSize(); this.updateViewSize(); } }; Calendar.prototype.initialRender = function () { var _this = this; var el = this.el; el.addClass('fc'); // event delegation for nav links el.on('click.fc', 'a[data-goto]', function (ev) { var anchorEl = $(ev.currentTarget); var gotoOptions = anchorEl.data('goto'); // will automatically parse JSON var date = _this.moment(gotoOptions.date); var viewType = gotoOptions.type; // property like "navLinkDayClick". might be a string or a function var customAction = _this.view.opt('navLink' + util_1.capitaliseFirstLetter(viewType) + 'Click'); if (typeof customAction === 'function') { customAction(date, ev); } else { if (typeof customAction === 'string') { viewType = customAction; } _this.zoomTo(date, viewType); } }); // called immediately, and upon option change this.optionsManager.watch('settingTheme', ['?theme', '?themeSystem'], function (opts) { var themeClass = ThemeRegistry_1.getThemeSystemClass(opts.themeSystem || opts.theme); var theme = new themeClass(_this.optionsManager); var widgetClass = theme.getClass('widget'); _this.theme = theme; if (widgetClass) { el.addClass(widgetClass); } }, function () { var widgetClass = _this.theme.getClass('widget'); _this.theme = null; if (widgetClass) { el.removeClass(widgetClass); } }); this.optionsManager.watch('settingBusinessHourGenerator', ['?businessHours'], function (deps) { _this.businessHourGenerator = new BusinessHourGenerator_1.default(deps.businessHours, _this); if (_this.view) { _this.view.set('businessHourGenerator', _this.businessHourGenerator); } }, function () { _this.businessHourGenerator = null; }); // called immediately, and upon option change. // HACK: locale often affects isRTL, so we explicitly listen to that too. this.optionsManager.watch('applyingDirClasses', ['?isRTL', '?locale'], function (opts) { el.toggleClass('fc-ltr', !opts.isRTL); el.toggleClass('fc-rtl', opts.isRTL); }); this.contentEl = $("<div class='fc-view-container'>").prependTo(el); this.initToolbars(); this.renderHeader(); this.renderFooter(); this.renderView(this.opt('defaultView')); if (this.opt('handleWindowResize')) { $(window).resize(this.windowResizeProxy = util_1.debounce(// prevents rapid calls this.windowResize.bind(this), this.opt('windowResizeDelay'))); } }; Calendar.prototype.destroy = function () { if (this.view) { this.clearView(); } this.toolbarsManager.proxyCall('removeElement'); this.contentEl.remove(); this.el.removeClass('fc fc-ltr fc-rtl'); // removes theme-related root className this.optionsManager.unwatch('settingTheme'); this.optionsManager.unwatch('settingBusinessHourGenerator'); this.el.off('.fc'); // unbind nav link handlers if (this.windowResizeProxy) { $(window).unbind('resize', this.windowResizeProxy); this.windowResizeProxy = null; } GlobalEmitter_1.default.unneeded(); }; Calendar.prototype.elementVisible = function () { return this.el.is(':visible'); }; // Render Queue // ----------------------------------------------------------------------------------------------------------------- Calendar.prototype.bindViewHandlers = function (view) { var _this = this; view.watch('titleForCalendar', ['title'], function (deps) { if (view === _this.view) { // hack _this.setToolbarsTitle(deps.title); } }); view.watch('dateProfileForCalendar', ['dateProfile'], function (deps) { if (view === _this.view) { // hack _this.currentDate = deps.dateProfile.date; // might have been constrained by view dates _this.updateToolbarButtons(deps.dateProfile); } }); }; Calendar.prototype.unbindViewHandlers = function (view) { view.unwatch('titleForCalendar'); view.unwatch('dateProfileForCalendar'); }; // View Rendering // ----------------------------------------------------------------------------------- // Renders a view because of a date change, view-type change, or for the first time. // If not given a viewType, keep the current view but render different dates. // Accepts an optional scroll state to restore to. Calendar.prototype.renderView = function (viewType) { var oldView = this.view; var newView; this.freezeContentHeight(); if (oldView && viewType && oldView.type !== viewType) { this.clearView(); } // if viewType changed, or the view was never created, create a fresh view if (!this.view && viewType) { newView = this.view = this.viewsByType[viewType] || (this.viewsByType[viewType] = this.instantiateView(viewType)); this.bindViewHandlers(newView); newView.startBatchRender(); // so that setElement+setDate rendering are joined newView.setElement($("<div class='fc-view fc-" + viewType + "-view'>").appendTo(this.contentEl)); this.toolbarsManager.proxyCall('activateButton', viewType); } if (this.view) { // prevent unnecessary change firing if (this.view.get('businessHourGenerator') !== this.businessHourGenerator) { this.view.set('businessHourGenerator', this.businessHourGenerator); } this.view.setDate(this.currentDate); if (newView) { newView.stopBatchRender(); } } this.thawContentHeight(); }; // Unrenders the current view and reflects this change in the Header. // Unregsiters the `view`, but does not remove from viewByType hash. Calendar.prototype.clearView = function () { var currentView = this.view; this.toolbarsManager.proxyCall('deactivateButton', currentView.type); this.unbindViewHandlers(currentView); currentView.removeElement(); currentView.unsetDate(); // so bindViewHandlers doesn't fire with old values next time this.view = null; }; // Destroys the view, including the view object. Then, re-instantiates it and renders it. // Maintains the same scroll state. // TODO: maintain any other user-manipulated state. Calendar.prototype.reinitView = function () { var oldView = this.view; var scroll = oldView.queryScroll(); // wouldn't be so complicated if Calendar owned the scroll this.freezeContentHeight(); this.clearView(); this.calcSize(); this.renderView(oldView.type); // needs the type to freshly render this.view.applyScroll(scroll); this.thawContentHeight(); }; // Resizing // ----------------------------------------------------------------------------------- Calendar.prototype.getSuggestedViewHeight = function () { if (this.suggestedViewHeight == null) { this.calcSize(); } return this.suggestedViewHeight; }; Calendar.prototype.isHeightAuto = function () { return this.opt('contentHeight') === 'auto' || this.opt('height') === 'auto'; }; Calendar.prototype.updateViewSize = function (isResize) { if (isResize === void 0) { isResize = false; } var view = this.view; var scroll; if (!this.ignoreUpdateViewSize && view) { if (isResize) { this.calcSize(); scroll = view.queryScroll(); } this.ignoreUpdateViewSize++; view.updateSize(this.getSuggestedViewHeight(), this.isHeightAuto(), isResize); this.ignoreUpdateViewSize--; if (isResize) { view.applyScroll(scroll); } return true; // signal success } }; Calendar.prototype.calcSize = function () { if (this.elementVisible()) { this._calcSize(); } }; Calendar.prototype._calcSize = function () { var contentHeightInput = this.opt('contentHeight'); var heightInput = this.opt('height'); if (typeof contentHeightInput === 'number') { // exists and not 'auto' this.suggestedViewHeight = contentHeightInput; } else if (typeof contentHeightInput === 'function') { // exists and is a function this.suggestedViewHeight = contentHeightInput(); } else if (typeof heightInput === 'number') { // exists and not 'auto' this.suggestedViewHeight = heightInput - this.queryToolbarsHeight(); } else if (typeof heightInput === 'function') { // exists and is a function this.suggestedViewHeight = heightInput() - this.queryToolbarsHeight(); } else if (heightInput === 'parent') { // set to height of parent element this.suggestedViewHeight = this.el.parent().height() - this.queryToolbarsHeight(); } else { this.suggestedViewHeight = Math.round(this.contentEl.width() / Math.max(this.opt('aspectRatio'), .5)); } }; Calendar.prototype.windowResize = function (ev) { if ( // the purpose: so we don't process jqui "resize" events that have bubbled up // cast to any because .target, which is Element, can't be compared to window for some reason. ev.target === window && this.view && this.view.isDatesRendered) { if (this.updateViewSize(true)) { // isResize=true, returns true on success this.publiclyTrigger('windowResize', [this.view]); } } }; /* Height "Freezing" -----------------------------------------------------------------------------*/ Calendar.prototype.freezeContentHeight = function () { if (!(this.freezeContentHeightDepth++)) { this.forceFreezeContentHeight(); } }; Calendar.prototype.forceFreezeContentHeight = function () { this.contentEl.css({ width: '100%', height: this.contentEl.height(), overflow: 'hidden' }); }; Calendar.prototype.thawContentHeight = function () { this.freezeContentHeightDepth--; // always bring back to natural height this.contentEl.css({ width: '', height: '', overflow: '' }); // but if there are future thaws, re-freeze if (this.freezeContentHeightDepth) { this.forceFreezeContentHeight(); } }; // Toolbar // ----------------------------------------------------------------------------------------------------------------- Calendar.prototype.initToolbars = function () { this.header = new Toolbar_1.default(this, this.computeHeaderOptions()); this.footer = new Toolbar_1.default(this, this.computeFooterOptions()); this.toolbarsManager = new Iterator_1.default([this.header, this.footer]); }; Calendar.prototype.computeHeaderOptions = function () { return { extraClasses: 'fc-header-toolbar', layout: this.opt('header') }; }; Calendar.prototype.computeFooterOptions = function () { return { extraClasses: 'fc-footer-toolbar', layout: this.opt('footer') }; }; // can be called repeatedly and Header will rerender Calendar.prototype.renderHeader = function () { var header = this.header; header.setToolbarOptions(this.computeHeaderOptions()); header.render(); if (header.el) { this.el.prepend(header.el); } }; // can be called repeatedly and Footer will rerender Calendar.prototype.renderFooter = function () { var footer = this.footer; footer.setToolbarOptions(this.computeFooterOptions()); footer.render(); if (footer.el) { this.el.append(footer.el); } }; Calendar.prototype.setToolbarsTitle = function (title) { this.toolbarsManager.proxyCall('updateTitle', title); }; Calendar.prototype.updateToolbarButtons = function (dateProfile) { var now = this.getNow(); var view = this.view; var todayInfo = view.dateProfileGenerator.build(now); var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile')); var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile')); this.toolbarsManager.proxyCall((todayInfo.isValid && !dateProfile.currentUnzonedRange.containsDate(now)) ? 'enableButton' : 'disableButton', 'today'); this.toolbarsManager.proxyCall(prevInfo.isValid ? 'enableButton' : 'disableButton', 'prev'); this.toolbarsManager.proxyCall(nextInfo.isValid ? 'enableButton' : 'disableButton', 'next'); }; Calendar.prototype.queryToolbarsHeight = function () { return this.toolbarsManager.items.reduce(function (accumulator, toolbar) { var toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin return accumulator + toolbarHeight; }, 0); }; // Selection // ----------------------------------------------------------------------------------------------------------------- // this public method receives start/end dates in any format, with any timezone Calendar.prototype.select = function (zonedStartInput, zonedEndInput) { this.view.select(this.buildSelectFootprint.apply(this, arguments)); }; Calendar.prototype.unselect = function () { if (this.view) { this.view.unselect(); } }; // Given arguments to the select method in the API, returns a span (unzoned start/end and other info) Calendar.prototype.buildSelectFootprint = function (zonedStartInput, zonedEndInput) { var start = this.moment(zonedStartInput).stripZone(); var end; if (zonedEndInput) { end = this.moment(zonedEndInput).stripZone(); } else if (start.hasTime()) { end = start.clone().add(this.defaultTimedEventDuration); } else { end = start.clone().add(this.defaultAllDayEventDuration); } return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), !start.hasTime()); }; // Date Utils // ----------------------------------------------------------------------------------------------------------------- Calendar.prototype.initMomentInternals = function () { var _this = this; this.defaultAllDayEventDuration = moment.duration(this.opt('defaultAllDayEventDuration')); this.defaultTimedEventDuration = moment.duration(this.opt('defaultTimedEventDuration')); // Called immediately, and when any of the options change. // Happens before any internal objects rebuild or rerender, because this is very core. this.optionsManager.watch('buildingMomentLocale', [ '?locale', '?monthNames', '?monthNamesShort', '?dayNames', '?dayNamesShort', '?firstDay', '?weekNumberCalculation' ], function (opts) { var weekNumberCalculation = opts.weekNumberCalculation; var firstDay = opts.firstDay; var _week; // normalize if (weekNumberCalculation === 'iso') { weekNumberCalculation = 'ISO'; // normalize } var localeData = Object.create(// make a cheap copy locale_1.getMomentLocaleData(opts.locale) // will fall back to en ); if (opts.monthNames) { localeData._months = opts.monthNames; } if (opts.monthNamesShort) { localeData._monthsShort = opts.monthNamesShort; } if (opts.dayNames) { localeData._weekdays = opts.dayNames; } if (opts.dayNamesShort) { localeData._weekdaysShort = opts.dayNamesShort; } if (firstDay == null && weekNumberCalculation === 'ISO') { firstDay = 1; } if (firstDay != null) { _week = Object.create(localeData._week); // _week: { dow: # } _week.dow = firstDay; localeData._week = _week; } if ( // whitelist certain kinds of input weekNumberCalculation === 'ISO' || weekNumberCalculation === 'local' || typeof weekNumberCalculation === 'function') { localeData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it } _this.localeData = localeData; // If the internal current date object already exists, move to new locale. // We do NOT need to do this technique for event dates, because this happens when converting to "segments". if (_this.currentDate) { _this.localizeMoment(_this.currentDate); // sets to localeData } }); }; // Builds a moment using the settings of the current calendar: timezone and locale. // Accepts anything the vanilla moment() constructor accepts. Calendar.prototype.moment = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var mom; if (this.opt('timezone') === 'local') { mom = moment_ext_1.default.apply(null, args); // Force the moment to be local, because momentExt doesn't guarantee it. if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone mom.local(); } } else if (this.opt('timezone') === 'UTC') { mom = moment_ext_1.default.utc.apply(null, args); // process as UTC } else { mom = moment_ext_1.default.parseZone.apply(null, args); // let the input decide the zone } this.localizeMoment(mom); // TODO return mom; }; Calendar.prototype.msToMoment = function (ms, forceAllDay) { var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC if (forceAllDay) { mom.stripTime(); } else { mom = this.applyTimezone(mom); // may or may not apply locale } this.localizeMoment(mom); return mom; }; Calendar.prototype.msToUtcMoment = function (ms, forceAllDay) { var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC if (forceAllDay) { mom.stripTime(); } this.localizeMoment(mom); return mom; }; // Updates the given moment's locale settings to the current calendar locale settings. Calendar.prototype.localizeMoment = function (mom) { mom._locale = this.localeData; }; // Returns a boolean about whether or not the calendar knows how to calculate // the timezone offset of arbitrary dates in the current timezone. Calendar.prototype.getIsAmbigTimezone = function () { return this.opt('timezone') !== 'local' && this.opt('timezone') !== 'UTC'; }; // Returns a copy of the given date in the current timezone. Has no effect on dates without times. Calendar.prototype.applyTimezone = function (date) { if (!date.hasTime()) { return date.clone(); } var zonedDate = this.moment(date.toArray()); var timeAdjust = date.time().asMilliseconds() - zonedDate.time().asMilliseconds(); var adjustedZonedDate; // Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396) if (timeAdjust) { // is the time result different than expected? adjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds if (date.time().asMilliseconds() - adjustedZonedDate.time().asMilliseconds() === 0) { // does it match perfectly now? zonedDate = adjustedZonedDate; } } return zonedDate; }; /* Assumes the footprint is non-open-ended. */ Calendar.prototype.footprintToDateProfile = function (componentFootprint, ignoreEnd) { if (ignoreEnd === void 0) { ignoreEnd = false; } var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs); var end; if (!ignoreEnd) { end = moment_ext_1.default.utc(componentFootprint.unzonedRange.endMs); } if (componentFootprint.isAllDay) { start.stripTime(); if (end) { end.stripTime(); } } else { start = this.applyTimezone(start); if (end) { end = this.applyTimezone(end); } } this.localizeMoment(start); if (end) { this.localizeMoment(end); } return new EventDateProfile_1.default(start, end, this); }; // Returns a moment for the current date, as defined by the client's computer or from the `now` option. // Will return an moment with an ambiguous timezone. Calendar.prototype.getNow = function () { var now = this.opt('now'); if (typeof now === 'function') { now = now(); } return this.moment(now).stripZone(); }; // Produces a human-readable string for the given duration. // Side-effect: changes the locale of the given duration. Calendar.prototype.humanizeDuration = function (duration) { return duration.locale(this.opt('locale')).humanize(); }; // will return `null` if invalid range Calendar.prototype.parseUnzonedRange = function (rangeInput) { var start = null; var end = null; if (rangeInput.start) { start = this.moment(rangeInput.start).stripZone(); } if (rangeInput.end) { end = this.moment(rangeInput.end).stripZone(); } if (!start && !end) { return null; } if (start && end && end.isBefore(start)) { return null; } return new UnzonedRange_1.default(start, end); }; // Event-Date Utilities // ----------------------------------------------------------------------------------------------------------------- Calendar.prototype.initEventManager = function () { var _this = this; var eventManager = new EventManager_1.default(this); var rawSources = this.opt('eventSources') || []; var singleRawSource = this.opt('events'); this.eventManager = eventManager; if (singleRawSource) { rawSources.unshift(singleRawSource); } eventManager.on('release', function (eventsPayload) { _this.trigger('eventsReset', eventsPayload); }); eventManager.freeze(); rawSources.forEach(function (rawSource) { var source = EventSourceParser_1.default.parse(rawSource, _this); if (source) { eventManager.addSource(source); } }); eventManager.thaw(); }; Calendar.prototype.requestEvents = function (start, end) { return this.eventManager.requestEvents(start, end, this.opt('timezone'), !this.opt('lazyFetching')); }; // Get an event's normalized end date. If not present, calculate it from the defaults. Calendar.prototype.getEventEnd = function (event) { if (event.end) { return event.end.clone(); } else { return this.getDefaultEventEnd(event.allDay, event.start); } }; // Given an event's allDay status and start date, return what its fallback end date should be. // TODO: rename to computeDefaultEventEnd Calendar.prototype.getDefaultEventEnd = function (allDay, zonedStart) { var end = zonedStart.clone(); if (allDay) { end.stripTime().add(this.defaultAllDayEventDuration); } else { end.add(this.defaultTimedEventDuration); } if (this.getIsAmbigTimezone()) { end.stripZone(); // we don't know what the tzo should be } return end; }; // Public Events API // ----------------------------------------------------------------------------------------------------------------- Calendar.prototype.rerenderEvents = function () { this.view.flash('displayingEvents'); }; Calendar.prototype.refetchEvents = function () { this.eventManager.refetchAllSources(); }; Calendar.prototype.renderEvents = function (eventInputs, isSticky) { this.eventManager.freeze(); for (var i = 0; i < eventInputs.length; i++) { this.renderEvent(eventInputs[i], isSticky); } this.eventManager.thaw(); }; Calendar.prototype.renderEvent = function (eventInput, isSticky) { if (isSticky === void 0) { isSticky = false; } var eventManager = this.eventManager; var eventDef = EventDefParser_1.default.parse(eventInput, eventInput.source || eventManager.stickySource); if (eventDef) { eventManager.addEventDef(eventDef, isSticky); } }; // legacyQuery operates on legacy event instance objects Calendar.prototype.removeEvents = function (legacyQuery) { var eventManager = this.eventManager; var legacyInstances = []; var idMap = {}; var eventDef; var i; if (legacyQuery == null) { // shortcut for removing all eventManager.removeAllEventDefs(); // persist=true } else { eventManager.getEventInstances().forEach(function (eventInstance) { legacyInstances.push(eventInstance.toLegacy()); }); legacyInstances = filterLegacyEventInstances(legacyInstances, legacyQuery); // compute unique IDs for (i = 0; i < legacyInstances.length; i++) { eventDef = this.eventManager.getEventDefByUid(legacyInstances[i]._id); idMap[eventDef.id] = true; } eventManager.freeze(); for (i in idMap) { // reuse `i` as an "id" eventManager.removeEventDefsById(i); // persist=true } eventManager.thaw(); } }; // legacyQuery operates on legacy event instance objects Calendar.prototype.clientEvents = function (legacyQuery) { var legacyEventInstances = []; this.eventManager.getEventInstances().forEach(function (eventInstance) { legacyEventInstances.push(eventInstance.toLegacy()); }); return filterLegacyEventInstances(legacyEventInstances, legacyQuery); }; Calendar.prototype.updateEvents = function (eventPropsArray) { this.eventManager.freeze(); for (var i = 0; i < eventPropsArray.length; i++) { this.updateEvent(eventPropsArray[i]); } this.eventManager.thaw(); }; Calendar.prototype.updateEvent = function (eventProps) { var eventDef = this.eventManager.getEventDefByUid(eventProps._id); var eventInstance; var eventDefMutation; if (eventDef instanceof SingleEventDef_1.default) { eventInstance = eventDef.buildInstance(); eventDefMutation = EventDefMutation_1.default.createFromRawProps(eventInstance, eventProps, // raw props null // largeUnit -- who uses it? ); this.eventManager.mutateEventsWithId(eventDef.id, eventDefMutation); // will release } }; // Public Event Sources API // ------------------------------------------------------------------------------------ Calendar.prototype.getEventSources = function () { return this.eventManager.otherSources.slice(); // clone }; Calendar.prototype.getEventSourceById = function (id) { return this.eventManager.getSourceById(EventSource_1.default.normalizeId(id)); }; Calendar.prototype.addEventSource = function (sourceInput) { var source = EventSourceParser_1.default.parse(sourceInput, this); if (source) { this.eventManager.addSource(source); } }; Calendar.prototype.removeEventSources = function (sourceMultiQuery) { var eventManager = this.eventManager; var sources; var i; if (sourceMultiQuery == null) { this.eventManager.removeAllSources(); } else { sources = eventManager.multiQuerySources(sourceMultiQuery); eventManager.freeze(); for (i = 0; i < sources.length; i++) { eventManager.removeSource(sources[i]); } eventManager.thaw(); } }; Calendar.prototype.removeEventSource = function (sourceQuery) { var eventManager = this.eventManager; var sources = eventManager.querySources(sourceQuery); var i; eventManager.freeze(); for (i = 0; i < sources.length; i++) { eventManager.removeSource(sources[i]); } eventManager.thaw(); }; Calendar.prototype.refetchEventSources = function (sourceMultiQuery) { var eventManager = this.eventManager; var sources = eventManager.multiQuerySources(sourceMultiQuery); var i; eventManager.freeze(); for (i = 0; i < sources.length; i++) { eventManager.refetchSource(sources[i]); } eventManager.thaw(); }; // not for internal use. use options module directly instead. Calendar.defaults = options_1.globalDefaults; Calendar.englishDefaults = options_1.englishDefaults; Calendar.rtlDefaults = options_1.rtlDefaults; return Calendar; }()); exports.default = Calendar; EmitterMixin_1.default.mixInto(Calendar); ListenerMixin_1.default.mixInto(Calendar); function filterLegacyEventInstances(legacyEventInstances, legacyQuery) { if (legacyQuery == null) { return legacyEventInstances; } else if ($.isFunction(legacyQuery)) { return legacyEventInstances.filter(legacyQuery); } else { // an event ID legacyQuery += ''; // normalize to string return legacyEventInstances.filter(function (legacyEventInstance) { // soft comparison because id not be normalized to string // tslint:disable-next-line return legacyEventInstance.id == legacyQuery || legacyEventInstance._id === legacyQuery; // can specify internal id, but must exactly match }); } } /***/ }), /* 233 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var moment = __webpack_require__(0); var exportHooks = __webpack_require__(18); var util_1 = __webpack_require__(4); var moment_ext_1 = __webpack_require__(11); var ListenerMixin_1 = __webpack_require__(7); var HitDragListener_1 = __webpack_require__(17); var SingleEventDef_1 = __webpack_require__(9); var EventInstanceGroup_1 = __webpack_require__(20); var EventSource_1 = __webpack_require__(6); var Interaction_1 = __webpack_require__(14); var ExternalDropping = /** @class */ (function (_super) { tslib_1.__extends(ExternalDropping, _super); function ExternalDropping() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.isDragging = false; // jqui-dragging an external element? boolean return _this; } /* component impements: - eventRangesToEventFootprints - isEventInstanceGroupAllowed - isExternalInstanceGroupAllowed - renderDrag - unrenderDrag */ ExternalDropping.prototype.end = function () { if (this.dragListener) { this.dragListener.endInteraction(); } }; ExternalDropping.prototype.bindToDocument = function () { this.listenTo($(document), { dragstart: this.handleDragStart, sortstart: this.handleDragStart // jqui }); }; ExternalDropping.prototype.unbindFromDocument = function () { this.stopListeningTo($(document)); }; // Called when a jQuery UI drag is initiated anywhere in the DOM ExternalDropping.prototype.handleDragStart = function (ev, ui) { var el; var accept; if (this.opt('droppable')) { // only listen if this setting is on el = $((ui ? ui.item : null) || ev.target); // Test that the dragged element passes the dropAccept selector or filter function. // FYI, the default is "*" (matches all) accept = this.opt('dropAccept'); if ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) { if (!this.isDragging) { // prevent double-listening if fired twice this.listenToExternalDrag(el, ev, ui); } } } }; // Called when a jQuery UI drag starts and it needs to be monitored for dropping ExternalDropping.prototype.listenToExternalDrag = function (el, ev, ui) { var _this = this; var component = this.component; var view = this.view; var meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create var singleEventDef; // a null value signals an unsuccessful drag // listener that tracks mouse movement over date-associated pixel regions var dragListener = this.dragListener = new HitDragListener_1.default(component, { interactionStart: function () { _this.isDragging = true; }, hitOver: function (hit) { var isAllowed = true; var hitFootprint = hit.component.getSafeHitFootprint(hit); // hit might not belong to this grid var mutatedEventInstanceGroup; if (hitFootprint) { singleEventDef = _this.computeExternalDrop(hitFootprint, meta); if (singleEventDef) { mutatedEventInstanceGroup = new EventInstanceGroup_1.default(singleEventDef.buildInstances()); isAllowed = meta.eventProps ? // isEvent? component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup) : component.isExternalInstanceGroupAllowed(mutatedEventInstanceGroup); } else { isAllowed = false; } } else { isAllowed = false; } if (!isAllowed) { singleEventDef = null; util_1.disableCursor(); } if (singleEventDef) { component.renderDrag(// called without a seg parameter component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, view.calendar))); } }, hitOut: function () { singleEventDef = null; // signal unsuccessful }, hitDone: function () { util_1.enableCursor(); component.unrenderDrag(); }, interactionEnd: function (ev) { if (singleEventDef) { // element was dropped on a valid hit view.reportExternalDrop(singleEventDef, Boolean(meta.eventProps), // isEvent Boolean(meta.stick), // isSticky el, ev, ui); } _this.isDragging = false; _this.dragListener = null; } }); dragListener.startDrag(ev); // start listening immediately }; // Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object), // returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null. // Returning a null value signals an invalid drop hit. // DOES NOT consider overlap/constraint. // Assumes both footprints are non-open-ended. ExternalDropping.prototype.computeExternalDrop = function (componentFootprint, meta) { var calendar = this.view.calendar; var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs).stripZone(); var end; var eventDef; if (componentFootprint.isAllDay) { // if dropped on an all-day span, and element's metadata specified a time, set it if (meta.startTime) { start.time(meta.startTime); } else { start.stripTime(); } } if (meta.duration) { end = start.clone().add(meta.duration); } start = calendar.applyTimezone(start); if (end) { end = calendar.applyTimezone(end); } eventDef = SingleEventDef_1.default.parse($.extend({}, meta.eventProps, { start: start, end: end }), new EventSource_1.default(calendar)); return eventDef; }; return ExternalDropping; }(Interaction_1.default)); exports.default = ExternalDropping; ListenerMixin_1.default.mixInto(ExternalDropping); /* External-Dragging-Element Data ----------------------------------------------------------------------------------------------------------------------*/ // Require all HTML5 data-* attributes used by FullCalendar to have this prefix. // A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event. exportHooks.dataAttrPrefix = ''; // Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure // to be used for Event Object creation. // A defined `.eventProps`, even when empty, indicates that an event should be created. function getDraggedElMeta(el) { var prefix = exportHooks.dataAttrPrefix; var eventProps; // properties for creating the event, not related to date/time var startTime; // a Duration var duration; var stick; if (prefix) { prefix += '-'; } eventProps = el.data(prefix + 'event') || null; if (eventProps) { if (typeof eventProps === 'object') { eventProps = $.extend({}, eventProps); // make a copy } else { // something like 1 or true. still signal event creation eventProps = {}; } // pluck special-cased date/time properties startTime = eventProps.start; if (startTime == null) { startTime = eventProps.time; } // accept 'time' as well duration = eventProps.duration; stick = eventProps.stick; delete eventProps.start; delete eventProps.time; delete eventProps.duration; delete eventProps.stick; } // fallback to standalone attribute values for each of the date/time properties if (startTime == null) { startTime = el.data(prefix + 'start'); } if (startTime == null) { startTime = el.data(prefix + 'time'); } // accept 'time' as well if (duration == null) { duration = el.data(prefix + 'duration'); } if (stick == null) { stick = el.data(prefix + 'stick'); } // massage into correct data types startTime = startTime != null ? moment.duration(startTime) : null; duration = duration != null ? moment.duration(duration) : null; stick = Boolean(stick); return { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick }; } /***/ }), /* 234 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var EventDefMutation_1 = __webpack_require__(39); var EventDefDateMutation_1 = __webpack_require__(40); var HitDragListener_1 = __webpack_require__(17); var Interaction_1 = __webpack_require__(14); var EventResizing = /** @class */ (function (_super) { tslib_1.__extends(EventResizing, _super); /* component impements: - bindSegHandlerToEl - publiclyTrigger - diffDates - eventRangesToEventFootprints - isEventInstanceGroupAllowed - getSafeHitFootprint */ function EventResizing(component, eventPointing) { var _this = _super.call(this, component) || this; _this.isResizing = false; _this.eventPointing = eventPointing; return _this; } EventResizing.prototype.end = function () { if (this.dragListener) { this.dragListener.endInteraction(); } }; EventResizing.prototype.bindToEl = function (el) { var component = this.component; component.bindSegHandlerToEl(el, 'mousedown', this.handleMouseDown.bind(this)); component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this)); }; EventResizing.prototype.handleMouseDown = function (seg, ev) { if (this.component.canStartResize(seg, ev)) { this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer')) .startInteraction(ev, { distance: 5 }); } }; EventResizing.prototype.handleTouchStart = function (seg, ev) { if (this.component.canStartResize(seg, ev)) { this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer')) .startInteraction(ev); } }; // Creates a listener that tracks the user as they resize an event segment. // Generic enough to work with any type of Grid. EventResizing.prototype.buildDragListener = function (seg, isStart) { var _this = this; var component = this.component; var view = this.view; var calendar = view.calendar; var eventManager = calendar.eventManager; var el = seg.el; var eventDef = seg.footprint.eventDef; var eventInstance = seg.footprint.eventInstance; var isDragging; var resizeMutation; // zoned event date properties. falsy if invalid resize // Tracks mouse movement over the *grid's* coordinate map var dragListener = this.dragListener = new HitDragListener_1.default(component, { scroll: this.opt('dragScroll'), subjectEl: el, interactionStart: function () { isDragging = false; }, dragStart: function (ev) { isDragging = true; // ensure a mouseout on the manipulated event has been reported _this.eventPointing.handleMouseout(seg, ev); _this.segResizeStart(seg, ev); }, hitOver: function (hit, isOrig, origHit) { var isAllowed = true; var origHitFootprint = component.getSafeHitFootprint(origHit); var hitFootprint = component.getSafeHitFootprint(hit); var mutatedEventInstanceGroup; if (origHitFootprint && hitFootprint) { resizeMutation = isStart ? _this.computeEventStartResizeMutation(origHitFootprint, hitFootprint, seg.footprint) : _this.computeEventEndResizeMutation(origHitFootprint, hitFootprint, seg.footprint); if (resizeMutation) { mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, resizeMutation); isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup); } else { isAllowed = false; } } else { isAllowed = false; } if (!isAllowed) { resizeMutation = null; util_1.disableCursor(); } else if (resizeMutation.isEmpty()) { // no change. (FYI, event dates might have zones) resizeMutation = null; } if (resizeMutation) { view.hideEventsWithId(seg.footprint.eventDef.id); view.renderEventResize(component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg); } }, hitOut: function () { resizeMutation = null; }, hitDone: function () { view.unrenderEventResize(seg); view.showEventsWithId(seg.footprint.eventDef.id); util_1.enableCursor(); }, interactionEnd: function (ev) { if (isDragging) { _this.segResizeStop(seg, ev); } if (resizeMutation) { // valid date to resize to? // no need to re-show original, will rerender all anyways. esp important if eventRenderWait view.reportEventResize(eventInstance, resizeMutation, el, ev); } _this.dragListener = null; } }); return dragListener; }; // Called before event segment resizing starts EventResizing.prototype.segResizeStart = function (seg, ev) { this.isResizing = true; this.component.publiclyTrigger('eventResizeStart', { context: seg.el[0], args: [ seg.footprint.getEventLegacy(), ev, {}, this.view ] }); }; // Called after event segment resizing stops EventResizing.prototype.segResizeStop = function (seg, ev) { this.isResizing = false; this.component.publiclyTrigger('eventResizeStop', { context: seg.el[0], args: [ seg.footprint.getEventLegacy(), ev, {}, this.view ] }); }; // Returns new date-information for an event segment being resized from its start EventResizing.prototype.computeEventStartResizeMutation = function (startFootprint, endFootprint, origEventFootprint) { var origRange = origEventFootprint.componentFootprint.unzonedRange; var startDelta = this.component.diffDates(endFootprint.unzonedRange.getStart(), startFootprint.unzonedRange.getStart()); var dateMutation; var eventDefMutation; if (origRange.getStart().add(startDelta) < origRange.getEnd()) { dateMutation = new EventDefDateMutation_1.default(); dateMutation.setStartDelta(startDelta); eventDefMutation = new EventDefMutation_1.default(); eventDefMutation.setDateMutation(dateMutation); return eventDefMutation; } return false; }; // Returns new date-information for an event segment being resized from its end EventResizing.prototype.computeEventEndResizeMutation = function (startFootprint, endFootprint, origEventFootprint) { var origRange = origEventFootprint.componentFootprint.unzonedRange; var endDelta = this.component.diffDates(endFootprint.unzonedRange.getEnd(), startFootprint.unzonedRange.getEnd()); var dateMutation; var eventDefMutation; if (origRange.getEnd().add(endDelta) > origRange.getStart()) { dateMutation = new EventDefDateMutation_1.default(); dateMutation.setEndDelta(endDelta); eventDefMutation = new EventDefMutation_1.default(); eventDefMutation.setDateMutation(dateMutation); return eventDefMutation; } return false; }; return EventResizing; }(Interaction_1.default)); exports.default = EventResizing; /***/ }), /* 235 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); var EventDefMutation_1 = __webpack_require__(39); var EventDefDateMutation_1 = __webpack_require__(40); var DragListener_1 = __webpack_require__(59); var HitDragListener_1 = __webpack_require__(17); var MouseFollower_1 = __webpack_require__(226); var Interaction_1 = __webpack_require__(14); var EventDragging = /** @class */ (function (_super) { tslib_1.__extends(EventDragging, _super); /* component implements: - bindSegHandlerToEl - publiclyTrigger - diffDates - eventRangesToEventFootprints - isEventInstanceGroupAllowed */ function EventDragging(component, eventPointing) { var _this = _super.call(this, component) || this; _this.isDragging = false; _this.eventPointing = eventPointing; return _this; } EventDragging.prototype.end = function () { if (this.dragListener) { this.dragListener.endInteraction(); } }; EventDragging.prototype.getSelectionDelay = function () { var delay = this.opt('eventLongPressDelay'); if (delay == null) { delay = this.opt('longPressDelay'); // fallback } return delay; }; EventDragging.prototype.bindToEl = function (el) { var component = this.component; component.bindSegHandlerToEl(el, 'mousedown', this.handleMousedown.bind(this)); component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this)); }; EventDragging.prototype.handleMousedown = function (seg, ev) { if (!this.component.shouldIgnoreMouse() && this.component.canStartDrag(seg, ev)) { this.buildDragListener(seg).startInteraction(ev, { distance: 5 }); } }; EventDragging.prototype.handleTouchStart = function (seg, ev) { var component = this.component; var settings = { delay: this.view.isEventDefSelected(seg.footprint.eventDef) ? // already selected? 0 : this.getSelectionDelay() }; if (component.canStartDrag(seg, ev)) { this.buildDragListener(seg).startInteraction(ev, settings); } else if (component.canStartSelection(seg, ev)) { this.buildSelectListener(seg).startInteraction(ev, settings); } }; // seg isn't draggable, but let's use a generic DragListener // simply for the delay, so it can be selected. // Has side effect of setting/unsetting `dragListener` EventDragging.prototype.buildSelectListener = function (seg) { var _this = this; var view = this.view; var eventDef = seg.footprint.eventDef; var eventInstance = seg.footprint.eventInstance; // null for inverse-background events if (this.dragListener) { return this.dragListener; } var dragListener = this.dragListener = new DragListener_1.default({ dragStart: function (ev) { if (dragListener.isTouch && !view.isEventDefSelected(eventDef) && eventInstance) { // if not previously selected, will fire after a delay. then, select the event view.selectEventInstance(eventInstance); } }, interactionEnd: function (ev) { _this.dragListener = null; } }); return dragListener; }; // Builds a listener that will track user-dragging on an event segment. // Generic enough to work with any type of Grid. // Has side effect of setting/unsetting `dragListener` EventDragging.prototype.buildDragListener = function (seg) { var _this = this; var component = this.component; var view = this.view; var calendar = view.calendar; var eventManager = calendar.eventManager; var el = seg.el; var eventDef = seg.footprint.eventDef; var eventInstance = seg.footprint.eventInstance; // null for inverse-background events var isDragging; var mouseFollower; // A clone of the original element that will move with the mouse var eventDefMutation; if (this.dragListener) { return this.dragListener; } // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents // of the view. var dragListener = this.dragListener = new HitDragListener_1.default(view, { scroll: this.opt('dragScroll'), subjectEl: el, subjectCenter: true, interactionStart: function (ev) { seg.component = component; // for renderDrag isDragging = false; mouseFollower = new MouseFollower_1.default(seg.el, { additionalClass: 'fc-dragging', parentEl: view.el, opacity: dragListener.isTouch ? null : _this.opt('dragOpacity'), revertDuration: _this.opt('dragRevertDuration'), zIndex: 2 // one above the .fc-view }); mouseFollower.hide(); // don't show until we know this is a real drag mouseFollower.start(ev); }, dragStart: function (ev) { if (dragListener.isTouch && !view.isEventDefSelected(eventDef) && eventInstance) { // if not previously selected, will fire after a delay. then, select the event view.selectEventInstance(eventInstance); } isDragging = true; // ensure a mouseout on the manipulated event has been reported _this.eventPointing.handleMouseout(seg, ev); _this.segDragStart(seg, ev); view.hideEventsWithId(seg.footprint.eventDef.id); }, hitOver: function (hit, isOrig, origHit) { var isAllowed = true; var origFootprint; var footprint; var mutatedEventInstanceGroup; // starting hit could be forced (DayGrid.limit) if (seg.hit) { origHit = seg.hit; } // hit might not belong to this grid, so query origin grid origFootprint = origHit.component.getSafeHitFootprint(origHit); footprint = hit.component.getSafeHitFootprint(hit); if (origFootprint && footprint) { eventDefMutation = _this.computeEventDropMutation(origFootprint, footprint, eventDef); if (eventDefMutation) { mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, eventDefMutation); isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup); } else { isAllowed = false; } } else { isAllowed = false; } if (!isAllowed) { eventDefMutation = null; util_1.disableCursor(); } // if a valid drop location, have the subclass render a visual indication if (eventDefMutation && view.renderDrag(// truthy if rendered something component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg, dragListener.isTouch)) { mouseFollower.hide(); // if the subclass is already using a mock event "helper", hide our own } else { mouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping) } if (isOrig) { // needs to have moved hits to be a valid drop eventDefMutation = null; } }, hitOut: function () { view.unrenderDrag(seg); // unrender whatever was done in renderDrag mouseFollower.show(); // show in case we are moving out of all hits eventDefMutation = null; }, hitDone: function () { util_1.enableCursor(); }, interactionEnd: function (ev) { delete seg.component; // prevent side effects // do revert animation if hasn't changed. calls a callback when finished (whether animation or not) mouseFollower.stop(!eventDefMutation, function () { if (isDragging) { view.unrenderDrag(seg); _this.segDragStop(seg, ev); } view.showEventsWithId(seg.footprint.eventDef.id); if (eventDefMutation) { // no need to re-show original, will rerender all anyways. esp important if eventRenderWait view.reportEventDrop(eventInstance, eventDefMutation, el, ev); } }); _this.dragListener = null; } }); return dragListener; }; // Called before event segment dragging starts EventDragging.prototype.segDragStart = function (seg, ev) { this.isDragging = true; this.component.publiclyTrigger('eventDragStart', { context: seg.el[0], args: [ seg.footprint.getEventLegacy(), ev, {}, this.view ] }); }; // Called after event segment dragging stops EventDragging.prototype.segDragStop = function (seg, ev) { this.isDragging = false; this.component.publiclyTrigger('eventDragStop', { context: seg.el[0], args: [ seg.footprint.getEventLegacy(), ev, {}, this.view ] }); }; // DOES NOT consider overlap/constraint EventDragging.prototype.computeEventDropMutation = function (startFootprint, endFootprint, eventDef) { var eventDefMutation = new EventDefMutation_1.default(); eventDefMutation.setDateMutation(this.computeEventDateMutation(startFootprint, endFootprint)); return eventDefMutation; }; EventDragging.prototype.computeEventDateMutation = function (startFootprint, endFootprint) { var date0 = startFootprint.unzonedRange.getStart(); var date1 = endFootprint.unzonedRange.getStart(); var clearEnd = false; var forceTimed = false; var forceAllDay = false; var dateDelta; var dateMutation; if (startFootprint.isAllDay !== endFootprint.isAllDay) { clearEnd = true; if (endFootprint.isAllDay) { forceAllDay = true; date0.stripTime(); } else { forceTimed = true; } } dateDelta = this.component.diffDates(date1, date0); dateMutation = new EventDefDateMutation_1.default(); dateMutation.clearEnd = clearEnd; dateMutation.forceTimed = forceTimed; dateMutation.forceAllDay = forceAllDay; dateMutation.setDateDelta(dateDelta); return dateMutation; }; return EventDragging; }(Interaction_1.default)); exports.default = EventDragging; /***/ }), /* 236 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); var HitDragListener_1 = __webpack_require__(17); var ComponentFootprint_1 = __webpack_require__(12); var UnzonedRange_1 = __webpack_require__(5); var Interaction_1 = __webpack_require__(14); var DateSelecting = /** @class */ (function (_super) { tslib_1.__extends(DateSelecting, _super); /* component must implement: - bindDateHandlerToEl - getSafeHitFootprint - renderHighlight - unrenderHighlight */ function DateSelecting(component) { var _this = _super.call(this, component) || this; _this.dragListener = _this.buildDragListener(); return _this; } DateSelecting.prototype.end = function () { this.dragListener.endInteraction(); }; DateSelecting.prototype.getDelay = function () { var delay = this.opt('selectLongPressDelay'); if (delay == null) { delay = this.opt('longPressDelay'); // fallback } return delay; }; DateSelecting.prototype.bindToEl = function (el) { var _this = this; var component = this.component; var dragListener = this.dragListener; component.bindDateHandlerToEl(el, 'mousedown', function (ev) { if (_this.opt('selectable') && !component.shouldIgnoreMouse()) { dragListener.startInteraction(ev, { distance: _this.opt('selectMinDistance') }); } }); component.bindDateHandlerToEl(el, 'touchstart', function (ev) { if (_this.opt('selectable') && !component.shouldIgnoreTouch()) { dragListener.startInteraction(ev, { delay: _this.getDelay() }); } }); util_1.preventSelection(el); }; // Creates a listener that tracks the user's drag across day elements, for day selecting. DateSelecting.prototype.buildDragListener = function () { var _this = this; var component = this.component; var selectionFootprint; // null if invalid selection var dragListener = new HitDragListener_1.default(component, { scroll: this.opt('dragScroll'), interactionStart: function () { selectionFootprint = null; }, dragStart: function (ev) { _this.view.unselect(ev); // since we could be rendering a new selection, we want to clear any old one }, hitOver: function (hit, isOrig, origHit) { var origHitFootprint; var hitFootprint; if (origHit) { // click needs to have started on a hit origHitFootprint = component.getSafeHitFootprint(origHit); hitFootprint = component.getSafeHitFootprint(hit); if (origHitFootprint && hitFootprint) { selectionFootprint = _this.computeSelection(origHitFootprint, hitFootprint); } else { selectionFootprint = null; } if (selectionFootprint) { component.renderSelectionFootprint(selectionFootprint); } else if (selectionFootprint === false) { util_1.disableCursor(); } } }, hitOut: function () { selectionFootprint = null; component.unrenderSelection(); }, hitDone: function () { util_1.enableCursor(); }, interactionEnd: function (ev, isCancelled) { if (!isCancelled && selectionFootprint) { // the selection will already have been rendered. just report it _this.view.reportSelection(selectionFootprint, ev); } } }); return dragListener; }; // Given the first and last date-spans of a selection, returns another date-span object. // Subclasses can override and provide additional data in the span object. Will be passed to renderSelectionFootprint(). // Will return false if the selection is invalid and this should be indicated to the user. // Will return null/undefined if a selection invalid but no error should be reported. DateSelecting.prototype.computeSelection = function (footprint0, footprint1) { var wholeFootprint = this.computeSelectionFootprint(footprint0, footprint1); if (wholeFootprint && !this.isSelectionFootprintAllowed(wholeFootprint)) { return false; } return wholeFootprint; }; // Given two spans, must return the combination of the two. // TODO: do this separation of concerns (combining VS validation) for event dnd/resize too. // Assumes both footprints are non-open-ended. DateSelecting.prototype.computeSelectionFootprint = function (footprint0, footprint1) { var ms = [ footprint0.unzonedRange.startMs, footprint0.unzonedRange.endMs, footprint1.unzonedRange.startMs, footprint1.unzonedRange.endMs ]; ms.sort(util_1.compareNumbers); return new ComponentFootprint_1.default(new UnzonedRange_1.default(ms[0], ms[3]), footprint0.isAllDay); }; DateSelecting.prototype.isSelectionFootprintAllowed = function (componentFootprint) { return this.component.dateProfile.validUnzonedRange.containsRange(componentFootprint.unzonedRange) && this.view.calendar.constraints.isSelectionFootprintAllowed(componentFootprint); }; return DateSelecting; }(Interaction_1.default)); exports.default = DateSelecting; /***/ }), /* 237 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var HitDragListener_1 = __webpack_require__(17); var Interaction_1 = __webpack_require__(14); var DateClicking = /** @class */ (function (_super) { tslib_1.__extends(DateClicking, _super); /* component must implement: - bindDateHandlerToEl - getSafeHitFootprint - getHitEl */ function DateClicking(component) { var _this = _super.call(this, component) || this; _this.dragListener = _this.buildDragListener(); return _this; } DateClicking.prototype.end = function () { this.dragListener.endInteraction(); }; DateClicking.prototype.bindToEl = function (el) { var component = this.component; var dragListener = this.dragListener; component.bindDateHandlerToEl(el, 'mousedown', function (ev) { if (!component.shouldIgnoreMouse()) { dragListener.startInteraction(ev); } }); component.bindDateHandlerToEl(el, 'touchstart', function (ev) { if (!component.shouldIgnoreTouch()) { dragListener.startInteraction(ev); } }); }; // Creates a listener that tracks the user's drag across day elements, for day clicking. DateClicking.prototype.buildDragListener = function () { var _this = this; var component = this.component; var dayClickHit; // null if invalid dayClick var dragListener = new HitDragListener_1.default(component, { scroll: this.opt('dragScroll'), interactionStart: function () { dayClickHit = dragListener.origHit; }, hitOver: function (hit, isOrig, origHit) { // if user dragged to another cell at any point, it can no longer be a dayClick if (!isOrig) { dayClickHit = null; } }, hitOut: function () { dayClickHit = null; }, interactionEnd: function (ev, isCancelled) { var componentFootprint; if (!isCancelled && dayClickHit) { componentFootprint = component.getSafeHitFootprint(dayClickHit); if (componentFootprint) { _this.view.triggerDayClick(componentFootprint, component.getHitEl(dayClickHit), ev); } } } }); // because dragListener won't be called with any time delay, "dragging" will begin immediately, // which will kill any touchmoving/scrolling. Prevent this. dragListener.shouldCancelTouchScroll = false; dragListener.scrollAlwaysKills = true; return dragListener; }; return DateClicking; }(Interaction_1.default)); exports.default = DateClicking; /***/ }), /* 238 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var moment = __webpack_require__(0); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var Scroller_1 = __webpack_require__(41); var View_1 = __webpack_require__(43); var TimeGrid_1 = __webpack_require__(239); var DayGrid_1 = __webpack_require__(66); var AGENDA_ALL_DAY_EVENT_LIMIT = 5; var agendaTimeGridMethods; var agendaDayGridMethods; /* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically. ----------------------------------------------------------------------------------------------------------------------*/ // Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on). // Responsible for managing width/height. var AgendaView = /** @class */ (function (_super) { tslib_1.__extends(AgendaView, _super); function AgendaView(calendar, viewSpec) { var _this = _super.call(this, calendar, viewSpec) || this; _this.usesMinMaxTime = true; // indicates that minTime/maxTime affects rendering _this.timeGrid = _this.instantiateTimeGrid(); _this.addChild(_this.timeGrid); if (_this.opt('allDaySlot')) { // should we display the "all-day" area? _this.dayGrid = _this.instantiateDayGrid(); // the all-day subcomponent of this view _this.addChild(_this.dayGrid); } _this.scroller = new Scroller_1.default({ overflowX: 'hidden', overflowY: 'auto' }); return _this; } // Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass AgendaView.prototype.instantiateTimeGrid = function () { var timeGrid = new this.timeGridClass(this); util_1.copyOwnProps(agendaTimeGridMethods, timeGrid); return timeGrid; }; // Instantiates the DayGrid object this view might need. Draws from this.dayGridClass AgendaView.prototype.instantiateDayGrid = function () { var dayGrid = new this.dayGridClass(this); util_1.copyOwnProps(agendaDayGridMethods, dayGrid); return dayGrid; }; /* Rendering ------------------------------------------------------------------------------------------------------------------*/ AgendaView.prototype.renderSkeleton = function () { var timeGridWrapEl; var timeGridEl; this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml()); this.scroller.render(); timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container'); timeGridEl = $('<div class="fc-time-grid">').appendTo(timeGridWrapEl); this.el.find('.fc-body > tr > td').append(timeGridWrapEl); this.timeGrid.headContainerEl = this.el.find('.fc-head-container'); this.timeGrid.setElement(timeGridEl); if (this.dayGrid) { this.dayGrid.setElement(this.el.find('.fc-day-grid')); // have the day-grid extend it's coordinate area over the <hr> dividing the two grids this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight(); } }; AgendaView.prototype.unrenderSkeleton = function () { this.timeGrid.removeElement(); if (this.dayGrid) { this.dayGrid.removeElement(); } this.scroller.destroy(); }; // Builds the HTML skeleton for the view. // The day-grid and time-grid components will render inside containers defined by this HTML. AgendaView.prototype.renderSkeletonHtml = function () { var theme = this.calendar.theme; return '' + '<table class="' + theme.getClass('tableGrid') + '">' + (this.opt('columnHeader') ? '<thead class="fc-head">' + '<tr>' + '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '"> </td>' + '</tr>' + '</thead>' : '') + '<tbody class="fc-body">' + '<tr>' + '<td class="' + theme.getClass('widgetContent') + '">' + (this.dayGrid ? '<div class="fc-day-grid"></div>' + '<hr class="fc-divider ' + theme.getClass('widgetHeader') + '"></hr>' : '') + '</td>' + '</tr>' + '</tbody>' + '</table>'; }; // Generates an HTML attribute string for setting the width of the axis, if it is known AgendaView.prototype.axisStyleAttr = function () { if (this.axisWidth != null) { return 'style="width:' + this.axisWidth + 'px"'; } return ''; }; /* Now Indicator ------------------------------------------------------------------------------------------------------------------*/ AgendaView.prototype.getNowIndicatorUnit = function () { return this.timeGrid.getNowIndicatorUnit(); }; /* Dimensions ------------------------------------------------------------------------------------------------------------------*/ // Adjusts the vertical dimensions of the view to the specified values AgendaView.prototype.updateSize = function (totalHeight, isAuto, isResize) { var eventLimit; var scrollerHeight; var scrollbarWidths; _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); // make all axis cells line up, and record the width so newly created axis cells will have it this.axisWidth = util_1.matchCellWidths(this.el.find('.fc-axis')); // hack to give the view some height prior to timeGrid's columns being rendered // TODO: separate setting height from scroller VS timeGrid. if (!this.timeGrid.colEls) { if (!isAuto) { scrollerHeight = this.computeScrollerHeight(totalHeight); this.scroller.setHeight(scrollerHeight); } return; } // set of fake row elements that must compensate when scroller has scrollbars var noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); // reset all dimensions back to the original state this.timeGrid.bottomRuleEl.hide(); // .show() will be called later if this <hr> is necessary this.scroller.clear(); // sets height to 'auto' and clears overflow util_1.uncompensateScroll(noScrollRowEls); // limit number of events in the all-day area if (this.dayGrid) { this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed eventLimit = this.opt('eventLimit'); if (eventLimit && typeof eventLimit !== 'number') { eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure "auto" goes to a real number } if (eventLimit) { this.dayGrid.limitRows(eventLimit); } } if (!isAuto) { // should we force dimensions of the scroll container? scrollerHeight = this.computeScrollerHeight(totalHeight); this.scroller.setHeight(scrollerHeight); scrollbarWidths = this.scroller.getScrollbarWidths(); if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? // make the all-day and header rows lines up util_1.compensateScroll(noScrollRowEls, scrollbarWidths); // the scrollbar compensation might have changed text flow, which might affect height, so recalculate // and reapply the desired height to the scroller. scrollerHeight = this.computeScrollerHeight(totalHeight); this.scroller.setHeight(scrollerHeight); } // guarantees the same scrollbar widths this.scroller.lockOverflow(scrollbarWidths); // if there's any space below the slats, show the horizontal rule. // this won't cause any new overflow, because lockOverflow already called. if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) { this.timeGrid.bottomRuleEl.show(); } } }; // given a desired total height of the view, returns what the height of the scroller should be AgendaView.prototype.computeScrollerHeight = function (totalHeight) { return totalHeight - util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller }; /* Scroll ------------------------------------------------------------------------------------------------------------------*/ // Computes the initial pre-configured scroll state prior to allowing the user to change it AgendaView.prototype.computeInitialDateScroll = function () { var scrollTime = moment.duration(this.opt('scrollTime')); var top = this.timeGrid.computeTimeTop(scrollTime); // zoom can give weird floating-point values. rather scroll a little bit further top = Math.ceil(top); if (top) { top++; // to overcome top border that slots beyond the first have. looks better } return { top: top }; }; AgendaView.prototype.queryDateScroll = function () { return { top: this.scroller.getScrollTop() }; }; AgendaView.prototype.applyDateScroll = function (scroll) { if (scroll.top !== undefined) { this.scroller.setScrollTop(scroll.top); } }; /* Hit Areas ------------------------------------------------------------------------------------------------------------------*/ // forward all hit-related method calls to the grids (dayGrid might not be defined) AgendaView.prototype.getHitFootprint = function (hit) { // TODO: hit.component is set as a hack to identify where the hit came from return hit.component.getHitFootprint(hit); }; AgendaView.prototype.getHitEl = function (hit) { // TODO: hit.component is set as a hack to identify where the hit came from return hit.component.getHitEl(hit); }; /* Event Rendering ------------------------------------------------------------------------------------------------------------------*/ AgendaView.prototype.executeEventRender = function (eventsPayload) { var dayEventsPayload = {}; var timedEventsPayload = {}; var id; var eventInstanceGroup; // separate the events into all-day and timed for (id in eventsPayload) { eventInstanceGroup = eventsPayload[id]; if (eventInstanceGroup.getEventDef().isAllDay()) { dayEventsPayload[id] = eventInstanceGroup; } else { timedEventsPayload[id] = eventInstanceGroup; } } this.timeGrid.executeEventRender(timedEventsPayload); if (this.dayGrid) { this.dayGrid.executeEventRender(dayEventsPayload); } }; /* Dragging/Resizing Routing ------------------------------------------------------------------------------------------------------------------*/ // A returned value of `true` signals that a mock "helper" event has been rendered. AgendaView.prototype.renderDrag = function (eventFootprints, seg, isTouch) { var groups = groupEventFootprintsByAllDay(eventFootprints); var renderedHelper = false; renderedHelper = this.timeGrid.renderDrag(groups.timed, seg, isTouch); if (this.dayGrid) { renderedHelper = this.dayGrid.renderDrag(groups.allDay, seg, isTouch) || renderedHelper; } return renderedHelper; }; AgendaView.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { var groups = groupEventFootprintsByAllDay(eventFootprints); this.timeGrid.renderEventResize(groups.timed, seg, isTouch); if (this.dayGrid) { this.dayGrid.renderEventResize(groups.allDay, seg, isTouch); } }; /* Selection ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of a selection AgendaView.prototype.renderSelectionFootprint = function (componentFootprint) { if (!componentFootprint.isAllDay) { this.timeGrid.renderSelectionFootprint(componentFootprint); } else if (this.dayGrid) { this.dayGrid.renderSelectionFootprint(componentFootprint); } }; return AgendaView; }(View_1.default)); exports.default = AgendaView; AgendaView.prototype.timeGridClass = TimeGrid_1.default; AgendaView.prototype.dayGridClass = DayGrid_1.default; // Will customize the rendering behavior of the AgendaView's timeGrid agendaTimeGridMethods = { // Generates the HTML that will go before the day-of week header cells renderHeadIntroHtml: function () { var view = this.view; var calendar = view.calendar; var weekStart = calendar.msToUtcMoment(this.dateProfile.renderUnzonedRange.startMs, true); var weekText; if (this.opt('weekNumbers')) { weekText = weekStart.format(this.opt('smallWeekFormat')); return '' + '<th class="fc-axis fc-week-number ' + calendar.theme.getClass('widgetHeader') + '" ' + view.axisStyleAttr() + '>' + view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths { date: weekStart, type: 'week', forceOff: this.colCnt > 1 }, util_1.htmlEscape(weekText) // inner HTML ) + '</th>'; } else { return '<th class="fc-axis ' + calendar.theme.getClass('widgetHeader') + '" ' + view.axisStyleAttr() + '></th>'; } }, // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column. renderBgIntroHtml: function () { var view = this.view; return '<td class="fc-axis ' + view.calendar.theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '></td>'; }, // Generates the HTML that goes before all other types of cells. // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. renderIntroHtml: function () { var view = this.view; return '<td class="fc-axis" ' + view.axisStyleAttr() + '></td>'; } }; // Will customize the rendering behavior of the AgendaView's dayGrid agendaDayGridMethods = { // Generates the HTML that goes before the all-day cells renderBgIntroHtml: function () { var view = this.view; return '' + '<td class="fc-axis ' + view.calendar.theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '>' + '<span>' + // needed for matchCellWidths view.getAllDayHtml() + '</span>' + '</td>'; }, // Generates the HTML that goes before all other types of cells. // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. renderIntroHtml: function () { var view = this.view; return '<td class="fc-axis" ' + view.axisStyleAttr() + '></td>'; } }; function groupEventFootprintsByAllDay(eventFootprints) { var allDay = []; var timed = []; var i; for (i = 0; i < eventFootprints.length; i++) { if (eventFootprints[i].componentFootprint.isAllDay) { allDay.push(eventFootprints[i]); } else { timed.push(eventFootprints[i]); } } return { allDay: allDay, timed: timed }; } /***/ }), /* 239 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var moment = __webpack_require__(0); var util_1 = __webpack_require__(4); var InteractiveDateComponent_1 = __webpack_require__(42); var BusinessHourRenderer_1 = __webpack_require__(61); var StandardInteractionsMixin_1 = __webpack_require__(65); var DayTableMixin_1 = __webpack_require__(60); var CoordCache_1 = __webpack_require__(58); var UnzonedRange_1 = __webpack_require__(5); var ComponentFootprint_1 = __webpack_require__(12); var TimeGridEventRenderer_1 = __webpack_require__(240); var TimeGridHelperRenderer_1 = __webpack_require__(241); var TimeGridFillRenderer_1 = __webpack_require__(242); /* A component that renders one or more columns of vertical time slots ----------------------------------------------------------------------------------------------------------------------*/ // We mixin DayTable, even though there is only a single row of days // potential nice values for the slot-duration and interval-duration // from largest to smallest var AGENDA_STOCK_SUB_DURATIONS = [ { hours: 1 }, { minutes: 30 }, { minutes: 15 }, { seconds: 30 }, { seconds: 15 } ]; var TimeGrid = /** @class */ (function (_super) { tslib_1.__extends(TimeGrid, _super); function TimeGrid(view) { var _this = _super.call(this, view) || this; _this.processOptions(); return _this; } // Slices up the given span (unzoned start/end with other misc data) into an array of segments TimeGrid.prototype.componentFootprintToSegs = function (componentFootprint) { var segs = this.sliceRangeByTimes(componentFootprint.unzonedRange); var i; for (i = 0; i < segs.length; i++) { if (this.isRTL) { segs[i].col = this.daysPerRow - 1 - segs[i].dayIndex; } else { segs[i].col = segs[i].dayIndex; } } return segs; }; /* Date Handling ------------------------------------------------------------------------------------------------------------------*/ TimeGrid.prototype.sliceRangeByTimes = function (unzonedRange) { var segs = []; var segRange; var dayIndex; for (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) { segRange = unzonedRange.intersect(this.dayRanges[dayIndex]); if (segRange) { segs.push({ startMs: segRange.startMs, endMs: segRange.endMs, isStart: segRange.isStart, isEnd: segRange.isEnd, dayIndex: dayIndex }); } } return segs; }; /* Options ------------------------------------------------------------------------------------------------------------------*/ // Parses various options into properties of this object TimeGrid.prototype.processOptions = function () { var slotDuration = this.opt('slotDuration'); var snapDuration = this.opt('snapDuration'); var input; slotDuration = moment.duration(slotDuration); snapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration; this.slotDuration = slotDuration; this.snapDuration = snapDuration; this.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple? // might be an array value (for TimelineView). // if so, getting the most granular entry (the last one probably). input = this.opt('slotLabelFormat'); if ($.isArray(input)) { input = input[input.length - 1]; } this.labelFormat = input || this.opt('smallTimeFormat'); // the computed default input = this.opt('slotLabelInterval'); this.labelInterval = input ? moment.duration(input) : this.computeLabelInterval(slotDuration); }; // Computes an automatic value for slotLabelInterval TimeGrid.prototype.computeLabelInterval = function (slotDuration) { var i; var labelInterval; var slotsPerLabel; // find the smallest stock label interval that results in more than one slots-per-label for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) { labelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]); slotsPerLabel = util_1.divideDurationByDuration(labelInterval, slotDuration); if (util_1.isInt(slotsPerLabel) && slotsPerLabel > 1) { return labelInterval; } } return moment.duration(slotDuration); // fall back. clone }; /* Date Rendering ------------------------------------------------------------------------------------------------------------------*/ TimeGrid.prototype.renderDates = function (dateProfile) { this.dateProfile = dateProfile; this.updateDayTable(); this.renderSlats(); this.renderColumns(); }; TimeGrid.prototype.unrenderDates = function () { // this.unrenderSlats(); // don't need this because repeated .html() calls clear this.unrenderColumns(); }; TimeGrid.prototype.renderSkeleton = function () { var theme = this.view.calendar.theme; this.el.html('<div class="fc-bg"></div>' + '<div class="fc-slats"></div>' + '<hr class="fc-divider ' + theme.getClass('widgetHeader') + '" style="display:none"></hr>'); this.bottomRuleEl = this.el.find('hr'); }; TimeGrid.prototype.renderSlats = function () { var theme = this.view.calendar.theme; this.slatContainerEl = this.el.find('> .fc-slats') .html(// avoids needing ::unrenderSlats() '<table class="' + theme.getClass('tableGrid') + '">' + this.renderSlatRowHtml() + '</table>'); this.slatEls = this.slatContainerEl.find('tr'); this.slatCoordCache = new CoordCache_1.default({ els: this.slatEls, isVertical: true }); }; // Generates the HTML for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL. TimeGrid.prototype.renderSlatRowHtml = function () { var view = this.view; var calendar = view.calendar; var theme = calendar.theme; var isRTL = this.isRTL; var dateProfile = this.dateProfile; var html = ''; var slotTime = moment.duration(+dateProfile.minTime); // wish there was .clone() for durations var slotIterator = moment.duration(0); var slotDate; // will be on the view's first day, but we only care about its time var isLabeled; var axisHtml; // Calculate the time for each slot while (slotTime < dateProfile.maxTime) { slotDate = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs).time(slotTime); isLabeled = util_1.isInt(util_1.divideDurationByDuration(slotIterator, this.labelInterval)); axisHtml = '<td class="fc-axis fc-time ' + theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '>' + (isLabeled ? '<span>' + // for matchCellWidths util_1.htmlEscape(slotDate.format(this.labelFormat)) + '</span>' : '') + '</td>'; html += '<tr data-time="' + slotDate.format('HH:mm:ss') + '"' + (isLabeled ? '' : ' class="fc-minor"') + '>' + (!isRTL ? axisHtml : '') + '<td class="' + theme.getClass('widgetContent') + '"></td>' + (isRTL ? axisHtml : '') + '</tr>'; slotTime.add(this.slotDuration); slotIterator.add(this.slotDuration); } return html; }; TimeGrid.prototype.renderColumns = function () { var dateProfile = this.dateProfile; var theme = this.view.calendar.theme; this.dayRanges = this.dayDates.map(function (dayDate) { return new UnzonedRange_1.default(dayDate.clone().add(dateProfile.minTime), dayDate.clone().add(dateProfile.maxTime)); }); if (this.headContainerEl) { this.headContainerEl.html(this.renderHeadHtml()); } this.el.find('> .fc-bg').html('<table class="' + theme.getClass('tableGrid') + '">' + this.renderBgTrHtml(0) + // row=0 '</table>'); this.colEls = this.el.find('.fc-day, .fc-disabled-day'); this.colCoordCache = new CoordCache_1.default({ els: this.colEls, isHorizontal: true }); this.renderContentSkeleton(); }; TimeGrid.prototype.unrenderColumns = function () { this.unrenderContentSkeleton(); }; /* Content Skeleton ------------------------------------------------------------------------------------------------------------------*/ // Renders the DOM that the view's content will live in TimeGrid.prototype.renderContentSkeleton = function () { var cellHtml = ''; var i; var skeletonEl; for (i = 0; i < this.colCnt; i++) { cellHtml += '<td>' + '<div class="fc-content-col">' + '<div class="fc-event-container fc-helper-container"></div>' + '<div class="fc-event-container"></div>' + '<div class="fc-highlight-container"></div>' + '<div class="fc-bgevent-container"></div>' + '<div class="fc-business-container"></div>' + '</div>' + '</td>'; } skeletonEl = this.contentSkeletonEl = $('<div class="fc-content-skeleton">' + '<table>' + '<tr>' + cellHtml + '</tr>' + '</table>' + '</div>'); this.colContainerEls = skeletonEl.find('.fc-content-col'); this.helperContainerEls = skeletonEl.find('.fc-helper-container'); this.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)'); this.bgContainerEls = skeletonEl.find('.fc-bgevent-container'); this.highlightContainerEls = skeletonEl.find('.fc-highlight-container'); this.businessContainerEls = skeletonEl.find('.fc-business-container'); this.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level this.el.append(skeletonEl); }; TimeGrid.prototype.unrenderContentSkeleton = function () { if (this.contentSkeletonEl) { // defensive :( this.contentSkeletonEl.remove(); this.contentSkeletonEl = null; this.colContainerEls = null; this.helperContainerEls = null; this.fgContainerEls = null; this.bgContainerEls = null; this.highlightContainerEls = null; this.businessContainerEls = null; } }; // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col TimeGrid.prototype.groupSegsByCol = function (segs) { var segsByCol = []; var i; for (i = 0; i < this.colCnt; i++) { segsByCol.push([]); } for (i = 0; i < segs.length; i++) { segsByCol[segs[i].col].push(segs[i]); } return segsByCol; }; // Given segments grouped by column, insert the segments' elements into a parallel array of container // elements, each living within a column. TimeGrid.prototype.attachSegsByCol = function (segsByCol, containerEls) { var col; var segs; var i; for (col = 0; col < this.colCnt; col++) { // iterate each column grouping segs = segsByCol[col]; for (i = 0; i < segs.length; i++) { containerEls.eq(col).append(segs[i].el); } } }; /* Now Indicator ------------------------------------------------------------------------------------------------------------------*/ TimeGrid.prototype.getNowIndicatorUnit = function () { return 'minute'; // will refresh on the minute }; TimeGrid.prototype.renderNowIndicator = function (date) { // HACK: if date columns not ready for some reason (scheduler) if (!this.colContainerEls) { return; } // seg system might be overkill, but it handles scenario where line needs to be rendered // more than once because of columns with the same date (resources columns for example) var segs = this.componentFootprintToSegs(new ComponentFootprint_1.default(new UnzonedRange_1.default(date, date.valueOf() + 1), // protect against null range false // all-day )); var top = this.computeDateTop(date, date); var nodes = []; var i; // render lines within the columns for (i = 0; i < segs.length; i++) { nodes.push($('<div class="fc-now-indicator fc-now-indicator-line"></div>') .css('top', top) .appendTo(this.colContainerEls.eq(segs[i].col))[0]); } // render an arrow over the axis if (segs.length > 0) { // is the current time in view? nodes.push($('<div class="fc-now-indicator fc-now-indicator-arrow"></div>') .css('top', top) .appendTo(this.el.find('.fc-content-skeleton'))[0]); } this.nowIndicatorEls = $(nodes); }; TimeGrid.prototype.unrenderNowIndicator = function () { if (this.nowIndicatorEls) { this.nowIndicatorEls.remove(); this.nowIndicatorEls = null; } }; /* Coordinates ------------------------------------------------------------------------------------------------------------------*/ TimeGrid.prototype.updateSize = function (totalHeight, isAuto, isResize) { _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); this.slatCoordCache.build(); if (isResize) { this.updateSegVerticals([].concat(this.eventRenderer.getSegs(), this.businessSegs || [])); } }; TimeGrid.prototype.getTotalSlatHeight = function () { return this.slatContainerEl.outerHeight(); }; // Computes the top coordinate, relative to the bounds of the grid, of the given date. // `ms` can be a millisecond UTC time OR a UTC moment. // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight. TimeGrid.prototype.computeDateTop = function (ms, startOfDayDate) { return this.computeTimeTop(moment.duration(ms - startOfDayDate.clone().stripTime())); }; // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration). TimeGrid.prototype.computeTimeTop = function (time) { var len = this.slatEls.length; var dateProfile = this.dateProfile; var slatCoverage = (time - dateProfile.minTime) / this.slotDuration; // floating-point value of # of slots covered var slatIndex; var slatRemainder; // compute a floating-point number for how many slats should be progressed through. // from 0 to number of slats (inclusive) // constrained because minTime/maxTime might be customized. slatCoverage = Math.max(0, slatCoverage); slatCoverage = Math.min(len, slatCoverage); // an integer index of the furthest whole slat // from 0 to number slats (*exclusive*, so len-1) slatIndex = Math.floor(slatCoverage); slatIndex = Math.min(slatIndex, len - 1); // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition. // could be 1.0 if slatCoverage is covering *all* the slots slatRemainder = slatCoverage - slatIndex; return this.slatCoordCache.getTopPosition(slatIndex) + this.slatCoordCache.getHeight(slatIndex) * slatRemainder; }; // Refreshes the CSS top/bottom coordinates for each segment element. // Works when called after initial render, after a window resize/zoom for example. TimeGrid.prototype.updateSegVerticals = function (segs) { this.computeSegVerticals(segs); this.assignSegVerticals(segs); }; // For each segment in an array, computes and assigns its top and bottom properties TimeGrid.prototype.computeSegVerticals = function (segs) { var eventMinHeight = this.opt('agendaEventMinHeight'); var i; var seg; var dayDate; for (i = 0; i < segs.length; i++) { seg = segs[i]; dayDate = this.dayDates[seg.dayIndex]; seg.top = this.computeDateTop(seg.startMs, dayDate); seg.bottom = Math.max(seg.top + eventMinHeight, this.computeDateTop(seg.endMs, dayDate)); } }; // Given segments that already have their top/bottom properties computed, applies those values to // the segments' elements. TimeGrid.prototype.assignSegVerticals = function (segs) { var i; var seg; for (i = 0; i < segs.length; i++) { seg = segs[i]; seg.el.css(this.generateSegVerticalCss(seg)); } }; // Generates an object with CSS properties for the top/bottom coordinates of a segment element TimeGrid.prototype.generateSegVerticalCss = function (seg) { return { top: seg.top, bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container }; }; /* Hit System ------------------------------------------------------------------------------------------------------------------*/ TimeGrid.prototype.prepareHits = function () { this.colCoordCache.build(); this.slatCoordCache.build(); }; TimeGrid.prototype.releaseHits = function () { this.colCoordCache.clear(); // NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop }; TimeGrid.prototype.queryHit = function (leftOffset, topOffset) { var snapsPerSlot = this.snapsPerSlot; var colCoordCache = this.colCoordCache; var slatCoordCache = this.slatCoordCache; if (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) { var colIndex = colCoordCache.getHorizontalIndex(leftOffset); var slatIndex = slatCoordCache.getVerticalIndex(topOffset); if (colIndex != null && slatIndex != null) { var slatTop = slatCoordCache.getTopOffset(slatIndex); var slatHeight = slatCoordCache.getHeight(slatIndex); var partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1 var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat var snapIndex = slatIndex * snapsPerSlot + localSnapIndex; var snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight; var snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight; return { col: colIndex, snap: snapIndex, component: this, left: colCoordCache.getLeftOffset(colIndex), right: colCoordCache.getRightOffset(colIndex), top: snapTop, bottom: snapBottom }; } } }; TimeGrid.prototype.getHitFootprint = function (hit) { var start = this.getCellDate(0, hit.col); // row=0 var time = this.computeSnapTime(hit.snap); // pass in the snap-index var end; start.time(time); end = start.clone().add(this.snapDuration); return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), false // all-day? ); }; // Given a row number of the grid, representing a "snap", returns a time (Duration) from its start-of-day TimeGrid.prototype.computeSnapTime = function (snapIndex) { return moment.duration(this.dateProfile.minTime + this.snapDuration * snapIndex); }; TimeGrid.prototype.getHitEl = function (hit) { return this.colEls.eq(hit.col); }; /* Event Drag Visualization ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event being dragged over the specified date(s). // A returned value of `true` signals that a mock "helper" event has been rendered. TimeGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) { var i; if (seg) { // if there is event information for this drag, render a helper event if (eventFootprints.length) { this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch); // signal that a helper has been rendered return true; } } else { // otherwise, just render a highlight for (i = 0; i < eventFootprints.length; i++) { this.renderHighlight(eventFootprints[i].componentFootprint); } } }; // Unrenders any visual indication of an event being dragged TimeGrid.prototype.unrenderDrag = function () { this.unrenderHighlight(); this.helperRenderer.unrender(); }; /* Event Resize Visualization ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event being resized TimeGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch); }; // Unrenders any visual indication of an event being resized TimeGrid.prototype.unrenderEventResize = function () { this.helperRenderer.unrender(); }; /* Selection ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight. TimeGrid.prototype.renderSelectionFootprint = function (componentFootprint) { if (this.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered this.helperRenderer.renderComponentFootprint(componentFootprint); } else { this.renderHighlight(componentFootprint); } }; // Unrenders any visual indication of a selection TimeGrid.prototype.unrenderSelection = function () { this.helperRenderer.unrender(); this.unrenderHighlight(); }; return TimeGrid; }(InteractiveDateComponent_1.default)); exports.default = TimeGrid; TimeGrid.prototype.eventRendererClass = TimeGridEventRenderer_1.default; TimeGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default; TimeGrid.prototype.helperRendererClass = TimeGridHelperRenderer_1.default; TimeGrid.prototype.fillRendererClass = TimeGridFillRenderer_1.default; StandardInteractionsMixin_1.default.mixInto(TimeGrid); DayTableMixin_1.default.mixInto(TimeGrid); /***/ }), /* 240 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); var EventRenderer_1 = __webpack_require__(44); /* Only handles foreground segs. Does not own rendering. Use for low-level util methods by TimeGrid. */ var TimeGridEventRenderer = /** @class */ (function (_super) { tslib_1.__extends(TimeGridEventRenderer, _super); function TimeGridEventRenderer(timeGrid, fillRenderer) { var _this = _super.call(this, timeGrid, fillRenderer) || this; _this.timeGrid = timeGrid; return _this; } TimeGridEventRenderer.prototype.renderFgSegs = function (segs) { this.renderFgSegsIntoContainers(segs, this.timeGrid.fgContainerEls); }; // Given an array of foreground segments, render a DOM element for each, computes position, // and attaches to the column inner-container elements. TimeGridEventRenderer.prototype.renderFgSegsIntoContainers = function (segs, containerEls) { var segsByCol; var col; segsByCol = this.timeGrid.groupSegsByCol(segs); for (col = 0; col < this.timeGrid.colCnt; col++) { this.updateFgSegCoords(segsByCol[col]); } this.timeGrid.attachSegsByCol(segsByCol, containerEls); }; TimeGridEventRenderer.prototype.unrenderFgSegs = function () { if (this.fgSegs) { // hack this.fgSegs.forEach(function (seg) { seg.el.remove(); }); } }; // Computes a default event time formatting string if `timeFormat` is not explicitly defined TimeGridEventRenderer.prototype.computeEventTimeFormat = function () { return this.opt('noMeridiemTimeFormat'); // like "6:30" (no AM/PM) }; // Computes a default `displayEventEnd` value if one is not expliclty defined TimeGridEventRenderer.prototype.computeDisplayEventEnd = function () { return true; }; // Renders the HTML for a single event segment's default rendering TimeGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) { var view = this.view; var calendar = view.calendar; var componentFootprint = seg.footprint.componentFootprint; var isAllDay = componentFootprint.isAllDay; var eventDef = seg.footprint.eventDef; var isDraggable = view.isEventDefDraggable(eventDef); var isResizableFromStart = !disableResizing && seg.isStart && view.isEventDefResizableFromStart(eventDef); var isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventDefResizableFromEnd(eventDef); var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd); var skinCss = util_1.cssToStr(this.getSkinCss(eventDef)); var timeText; var fullTimeText; // more verbose time text. for the print stylesheet var startTimeText; // just the start time text classes.unshift('fc-time-grid-event', 'fc-v-event'); // if the event appears to span more than one day... if (view.isMultiDayRange(componentFootprint.unzonedRange)) { // Don't display time text on segments that run entirely through a day. // That would appear as midnight-midnight and would look dumb. // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am) if (seg.isStart || seg.isEnd) { var zonedStart = calendar.msToMoment(seg.startMs); var zonedEnd = calendar.msToMoment(seg.endMs); timeText = this._getTimeText(zonedStart, zonedEnd, isAllDay); fullTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, 'LT'); startTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, null, false); // displayEnd=false } } else { // Display the normal time text for the *event's* times timeText = this.getTimeText(seg.footprint); fullTimeText = this.getTimeText(seg.footprint, 'LT'); startTimeText = this.getTimeText(seg.footprint, null, false); // displayEnd=false } return '<a class="' + classes.join(' ') + '"' + (eventDef.url ? ' href="' + util_1.htmlEscape(eventDef.url) + '"' : '') + (skinCss ? ' style="' + skinCss + '"' : '') + '>' + '<div class="fc-content">' + (timeText ? '<div class="fc-time"' + ' data-start="' + util_1.htmlEscape(startTimeText) + '"' + ' data-full="' + util_1.htmlEscape(fullTimeText) + '"' + '>' + '<span>' + util_1.htmlEscape(timeText) + '</span>' + '</div>' : '') + (eventDef.title ? '<div class="fc-title">' + util_1.htmlEscape(eventDef.title) + '</div>' : '') + '</div>' + '<div class="fc-bg"></div>' + /* TODO: write CSS for this (isResizableFromStart ? '<div class="fc-resizer fc-start-resizer"></div>' : '' ) + */ (isResizableFromEnd ? '<div class="fc-resizer fc-end-resizer"></div>' : '') + '</a>'; }; // Given segments that are assumed to all live in the *same column*, // compute their verical/horizontal coordinates and assign to their elements. TimeGridEventRenderer.prototype.updateFgSegCoords = function (segs) { this.timeGrid.computeSegVerticals(segs); // horizontals relies on this this.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array this.timeGrid.assignSegVerticals(segs); this.assignFgSegHorizontals(segs); }; // Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each. // NOTE: Also reorders the given array by date! TimeGridEventRenderer.prototype.computeFgSegHorizontals = function (segs) { var levels; var level0; var i; this.sortEventSegs(segs); // order by certain criteria levels = buildSlotSegLevels(segs); computeForwardSlotSegs(levels); if ((level0 = levels[0])) { for (i = 0; i < level0.length; i++) { computeSlotSegPressures(level0[i]); } for (i = 0; i < level0.length; i++) { this.computeFgSegForwardBack(level0[i], 0, 0); } } }; // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to "left" and // seg.forwardCoord maps to "right" (via percentage). Vice-versa if the calendar is right-to-left. // // The segment might be part of a "series", which means consecutive segments with the same pressure // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of // segments behind this one in the current series, and `seriesBackwardCoord` is the starting // coordinate of the first segment in the series. TimeGridEventRenderer.prototype.computeFgSegForwardBack = function (seg, seriesBackwardPressure, seriesBackwardCoord) { var forwardSegs = seg.forwardSegs; var i; if (seg.forwardCoord === undefined) { // not already computed if (!forwardSegs.length) { // if there are no forward segments, this segment should butt up against the edge seg.forwardCoord = 1; } else { // sort highest pressure first this.sortForwardSegs(forwardSegs); // this segment's forwardCoord will be calculated from the backwardCoord of the // highest-pressure forward segment. this.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord); seg.forwardCoord = forwardSegs[0].backwardCoord; } // calculate the backwardCoord from the forwardCoord. consider the series seg.backwardCoord = seg.forwardCoord - (seg.forwardCoord - seriesBackwardCoord) / // available width for series (seriesBackwardPressure + 1); // # of segments in the series // use this segment's coordinates to computed the coordinates of the less-pressurized // forward segments for (i = 0; i < forwardSegs.length; i++) { this.computeFgSegForwardBack(forwardSegs[i], 0, seg.forwardCoord); } } }; TimeGridEventRenderer.prototype.sortForwardSegs = function (forwardSegs) { forwardSegs.sort(util_1.proxy(this, 'compareForwardSegs')); }; // A cmp function for determining which forward segment to rely on more when computing coordinates. TimeGridEventRenderer.prototype.compareForwardSegs = function (seg1, seg2) { // put higher-pressure first return seg2.forwardPressure - seg1.forwardPressure || // put segments that are closer to initial edge first (and favor ones with no coords yet) (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) || // do normal sorting... this.compareEventSegs(seg1, seg2); }; // Given foreground event segments that have already had their position coordinates computed, // assigns position-related CSS values to their elements. TimeGridEventRenderer.prototype.assignFgSegHorizontals = function (segs) { var i; var seg; for (i = 0; i < segs.length; i++) { seg = segs[i]; seg.el.css(this.generateFgSegHorizontalCss(seg)); // if the event is short that the title will be cut off, // attach a className that condenses the title into the time area. if (seg.footprint.eventDef.title && seg.bottom - seg.top < 30) { seg.el.addClass('fc-short'); // TODO: "condensed" is a better name } } }; // Generates an object with CSS properties/values that should be applied to an event segment element. // Contains important positioning-related properties that should be applied to any event element, customized or not. TimeGridEventRenderer.prototype.generateFgSegHorizontalCss = function (seg) { var shouldOverlap = this.opt('slotEventOverlap'); var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point var props = this.timeGrid.generateSegVerticalCss(seg); // get top/bottom first var isRTL = this.timeGrid.isRTL; var left; // amount of space from left edge, a fraction of the total width var right; // amount of space from right edge, a fraction of the total width if (shouldOverlap) { // double the width, but don't go beyond the maximum forward coordinate (1.0) forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2); } if (isRTL) { left = 1 - forwardCoord; right = backwardCoord; } else { left = backwardCoord; right = 1 - forwardCoord; } props.zIndex = seg.level + 1; // convert from 0-base to 1-based props.left = left * 100 + '%'; props.right = right * 100 + '%'; if (shouldOverlap && seg.forwardPressure) { // add padding to the edge so that forward stacked events don't cover the resizer's icon props[isRTL ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width } return props; }; return TimeGridEventRenderer; }(EventRenderer_1.default)); exports.default = TimeGridEventRenderer; // Builds an array of segments "levels". The first level will be the leftmost tier of segments if the calendar is // left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date. function buildSlotSegLevels(segs) { var levels = []; var i; var seg; var j; for (i = 0; i < segs.length; i++) { seg = segs[i]; // go through all the levels and stop on the first level where there are no collisions for (j = 0; j < levels.length; j++) { if (!computeSlotSegCollisions(seg, levels[j]).length) { break; } } seg.level = j; (levels[j] || (levels[j] = [])).push(seg); } return levels; } // For every segment, figure out the other segments that are in subsequent // levels that also occupy the same vertical space. Accumulate in seg.forwardSegs function computeForwardSlotSegs(levels) { var i; var level; var j; var seg; var k; for (i = 0; i < levels.length; i++) { level = levels[i]; for (j = 0; j < level.length; j++) { seg = level[j]; seg.forwardSegs = []; for (k = i + 1; k < levels.length; k++) { computeSlotSegCollisions(seg, levels[k], seg.forwardSegs); } } } } // Figure out which path forward (via seg.forwardSegs) results in the longest path until // the furthest edge is reached. The number of segments in this path will be seg.forwardPressure function computeSlotSegPressures(seg) { var forwardSegs = seg.forwardSegs; var forwardPressure = 0; var i; var forwardSeg; if (seg.forwardPressure === undefined) { // not already computed for (i = 0; i < forwardSegs.length; i++) { forwardSeg = forwardSegs[i]; // figure out the child's maximum forward path computeSlotSegPressures(forwardSeg); // either use the existing maximum, or use the child's forward pressure // plus one (for the forwardSeg itself) forwardPressure = Math.max(forwardPressure, 1 + forwardSeg.forwardPressure); } seg.forwardPressure = forwardPressure; } } // Find all the segments in `otherSegs` that vertically collide with `seg`. // Append into an optionally-supplied `results` array and return. function computeSlotSegCollisions(seg, otherSegs, results) { if (results === void 0) { results = []; } for (var i = 0; i < otherSegs.length; i++) { if (isSlotSegCollision(seg, otherSegs[i])) { results.push(otherSegs[i]); } } return results; } // Do these segments occupy the same vertical space? function isSlotSegCollision(seg1, seg2) { return seg1.bottom > seg2.top && seg1.top < seg2.bottom; } /***/ }), /* 241 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var HelperRenderer_1 = __webpack_require__(63); var TimeGridHelperRenderer = /** @class */ (function (_super) { tslib_1.__extends(TimeGridHelperRenderer, _super); function TimeGridHelperRenderer() { return _super !== null && _super.apply(this, arguments) || this; } TimeGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) { var helperNodes = []; var i; var seg; var sourceEl; // TODO: not good to call eventRenderer this way this.eventRenderer.renderFgSegsIntoContainers(segs, this.component.helperContainerEls); // Try to make the segment that is in the same row as sourceSeg look the same for (i = 0; i < segs.length; i++) { seg = segs[i]; if (sourceSeg && sourceSeg.col === seg.col) { sourceEl = sourceSeg.el; seg.el.css({ left: sourceEl.css('left'), right: sourceEl.css('right'), 'margin-left': sourceEl.css('margin-left'), 'margin-right': sourceEl.css('margin-right') }); } helperNodes.push(seg.el[0]); } return $(helperNodes); // must return the elements rendered }; return TimeGridHelperRenderer; }(HelperRenderer_1.default)); exports.default = TimeGridHelperRenderer; /***/ }), /* 242 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var FillRenderer_1 = __webpack_require__(62); var TimeGridFillRenderer = /** @class */ (function (_super) { tslib_1.__extends(TimeGridFillRenderer, _super); function TimeGridFillRenderer() { return _super !== null && _super.apply(this, arguments) || this; } TimeGridFillRenderer.prototype.attachSegEls = function (type, segs) { var timeGrid = this.component; var containerEls; // TODO: more efficient lookup if (type === 'bgEvent') { containerEls = timeGrid.bgContainerEls; } else if (type === 'businessHours') { containerEls = timeGrid.businessContainerEls; } else if (type === 'highlight') { containerEls = timeGrid.highlightContainerEls; } timeGrid.updateSegVerticals(segs); timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls); return segs.map(function (seg) { return seg.el[0]; }); }; return TimeGridFillRenderer; }(FillRenderer_1.default)); exports.default = TimeGridFillRenderer; /***/ }), /* 243 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var EventRenderer_1 = __webpack_require__(44); /* Event-rendering methods for the DayGrid class ----------------------------------------------------------------------------------------------------------------------*/ var DayGridEventRenderer = /** @class */ (function (_super) { tslib_1.__extends(DayGridEventRenderer, _super); function DayGridEventRenderer(dayGrid, fillRenderer) { var _this = _super.call(this, dayGrid, fillRenderer) || this; _this.dayGrid = dayGrid; return _this; } DayGridEventRenderer.prototype.renderBgRanges = function (eventRanges) { // don't render timed background events eventRanges = $.grep(eventRanges, function (eventRange) { return eventRange.eventDef.isAllDay(); }); _super.prototype.renderBgRanges.call(this, eventRanges); }; // Renders the given foreground event segments onto the grid DayGridEventRenderer.prototype.renderFgSegs = function (segs) { var rowStructs = this.rowStructs = this.renderSegRows(segs); // append to each row's content skeleton this.dayGrid.rowEls.each(function (i, rowNode) { $(rowNode).find('.fc-content-skeleton > table').append(rowStructs[i].tbodyEl); }); }; // Unrenders all currently rendered foreground event segments DayGridEventRenderer.prototype.unrenderFgSegs = function () { var rowStructs = this.rowStructs || []; var rowStruct; while ((rowStruct = rowStructs.pop())) { rowStruct.tbodyEl.remove(); } this.rowStructs = null; }; // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton. // Returns an array of rowStruct objects (see the bottom of `renderSegRow`). // PRECONDITION: each segment shoud already have a rendered and assigned `.el` DayGridEventRenderer.prototype.renderSegRows = function (segs) { var rowStructs = []; var segRows; var row; segRows = this.groupSegRows(segs); // group into nested arrays // iterate each row of segment groupings for (row = 0; row < segRows.length; row++) { rowStructs.push(this.renderSegRow(row, segRows[row])); } return rowStructs; }; // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains // the segments. Returns object with a bunch of internal data about how the render was calculated. // NOTE: modifies rowSegs DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) { var colCnt = this.dayGrid.colCnt; var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels var levelCnt = Math.max(1, segLevels.length); // ensure at least one level var tbody = $('<tbody>'); var segMatrix = []; // lookup for which segments are rendered into which level+col cells var cellMatrix = []; // lookup for all <td> elements of the level+col matrix var loneCellMatrix = []; // lookup for <td> elements that only take up a single column var i; var levelSegs; var col; var tr; var j; var seg; var td; // populates empty cells from the current column (`col`) to `endCol` function emptyCellsUntil(endCol) { while (col < endCol) { // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell td = (loneCellMatrix[i - 1] || [])[col]; if (td) { td.attr('rowspan', parseInt(td.attr('rowspan') || 1, 10) + 1); } else { td = $('<td>'); tr.append(td); } cellMatrix[i][col] = td; loneCellMatrix[i][col] = td; col++; } } for (i = 0; i < levelCnt; i++) { // iterate through all levels levelSegs = segLevels[i]; col = 0; tr = $('<tr>'); segMatrix.push([]); cellMatrix.push([]); loneCellMatrix.push([]); // levelCnt might be 1 even though there are no actual levels. protect against this. // this single empty row is useful for styling. if (levelSegs) { for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level seg = levelSegs[j]; emptyCellsUntil(seg.leftCol); // create a container that occupies or more columns. append the event element. td = $('<td class="fc-event-container">').append(seg.el); if (seg.leftCol !== seg.rightCol) { td.attr('colspan', seg.rightCol - seg.leftCol + 1); } else { // a single-column segment loneCellMatrix[i][col] = td; } while (col <= seg.rightCol) { cellMatrix[i][col] = td; segMatrix[i][col] = seg; col++; } tr.append(td); } } emptyCellsUntil(colCnt); // finish off the row this.dayGrid.bookendCells(tr); tbody.append(tr); } return { row: row, tbodyEl: tbody, cellMatrix: cellMatrix, segMatrix: segMatrix, segLevels: segLevels, segs: rowSegs }; }; // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels. // NOTE: modifies segs DayGridEventRenderer.prototype.buildSegLevels = function (segs) { var levels = []; var i; var seg; var j; // Give preference to elements with certain criteria, so they have // a chance to be closer to the top. this.sortEventSegs(segs); for (i = 0; i < segs.length; i++) { seg = segs[i]; // loop through levels, starting with the topmost, until the segment doesn't collide with other segments for (j = 0; j < levels.length; j++) { if (!isDaySegCollision(seg, levels[j])) { break; } } // `j` now holds the desired subrow index seg.level = j; // create new level array if needed and append segment (levels[j] || (levels[j] = [])).push(seg); } // order segments left-to-right. very important if calendar is RTL for (j = 0; j < levels.length; j++) { levels[j].sort(compareDaySegCols); } return levels; }; // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row DayGridEventRenderer.prototype.groupSegRows = function (segs) { var segRows = []; var i; for (i = 0; i < this.dayGrid.rowCnt; i++) { segRows.push([]); } for (i = 0; i < segs.length; i++) { segRows[segs[i].row].push(segs[i]); } return segRows; }; // Computes a default event time formatting string if `timeFormat` is not explicitly defined DayGridEventRenderer.prototype.computeEventTimeFormat = function () { return this.opt('extraSmallTimeFormat'); // like "6p" or "6:30p" }; // Computes a default `displayEventEnd` value if one is not expliclty defined DayGridEventRenderer.prototype.computeDisplayEventEnd = function () { return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day }; // Builds the HTML to be used for the default element for an individual segment DayGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) { var view = this.view; var eventDef = seg.footprint.eventDef; var isAllDay = seg.footprint.componentFootprint.isAllDay; var isDraggable = view.isEventDefDraggable(eventDef); var isResizableFromStart = !disableResizing && isAllDay && seg.isStart && view.isEventDefResizableFromStart(eventDef); var isResizableFromEnd = !disableResizing && isAllDay && seg.isEnd && view.isEventDefResizableFromEnd(eventDef); var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd); var skinCss = util_1.cssToStr(this.getSkinCss(eventDef)); var timeHtml = ''; var timeText; var titleHtml; classes.unshift('fc-day-grid-event', 'fc-h-event'); // Only display a timed events time if it is the starting segment if (seg.isStart) { timeText = this.getTimeText(seg.footprint); if (timeText) { timeHtml = '<span class="fc-time">' + util_1.htmlEscape(timeText) + '</span>'; } } titleHtml = '<span class="fc-title">' + (util_1.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height '</span>'; return '<a class="' + classes.join(' ') + '"' + (eventDef.url ? ' href="' + util_1.htmlEscape(eventDef.url) + '"' : '') + (skinCss ? ' style="' + skinCss + '"' : '') + '>' + '<div class="fc-content">' + (this.dayGrid.isRTL ? titleHtml + ' ' + timeHtml : // put a natural space in between timeHtml + ' ' + titleHtml // ) + '</div>' + (isResizableFromStart ? '<div class="fc-resizer fc-start-resizer"></div>' : '') + (isResizableFromEnd ? '<div class="fc-resizer fc-end-resizer"></div>' : '') + '</a>'; }; return DayGridEventRenderer; }(EventRenderer_1.default)); exports.default = DayGridEventRenderer; // Computes whether two segments' columns collide. They are assumed to be in the same row. function isDaySegCollision(seg, otherSegs) { var i; var otherSeg; for (i = 0; i < otherSegs.length; i++) { otherSeg = otherSegs[i]; if (otherSeg.leftCol <= seg.rightCol && otherSeg.rightCol >= seg.leftCol) { return true; } } return false; } // A cmp function for determining the leftmost event function compareDaySegCols(a, b) { return a.leftCol - b.leftCol; } /***/ }), /* 244 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var HelperRenderer_1 = __webpack_require__(63); var DayGridHelperRenderer = /** @class */ (function (_super) { tslib_1.__extends(DayGridHelperRenderer, _super); function DayGridHelperRenderer() { return _super !== null && _super.apply(this, arguments) || this; } // Renders a mock "helper" event. `sourceSeg` is the associated internal segment object. It can be null. DayGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) { var helperNodes = []; var rowStructs; // TODO: not good to call eventRenderer this way rowStructs = this.eventRenderer.renderSegRows(segs); // inject each new event skeleton into each associated row this.component.rowEls.each(function (row, rowNode) { var rowEl = $(rowNode); // the .fc-row var skeletonEl = $('<div class="fc-helper-skeleton"><table></table></div>'); // will be absolutely positioned var skeletonTopEl; var skeletonTop; // If there is an original segment, match the top position. Otherwise, put it at the row's top level if (sourceSeg && sourceSeg.row === row) { skeletonTop = sourceSeg.el.position().top; } else { skeletonTopEl = rowEl.find('.fc-content-skeleton tbody'); if (!skeletonTopEl.length) { // when no events skeletonTopEl = rowEl.find('.fc-content-skeleton table'); } skeletonTop = skeletonTopEl.position().top; } skeletonEl.css('top', skeletonTop) .find('table') .append(rowStructs[row].tbodyEl); rowEl.append(skeletonEl); helperNodes.push(skeletonEl[0]); }); return $(helperNodes); // must return the elements rendered }; return DayGridHelperRenderer; }(HelperRenderer_1.default)); exports.default = DayGridHelperRenderer; /***/ }), /* 245 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var FillRenderer_1 = __webpack_require__(62); var DayGridFillRenderer = /** @class */ (function (_super) { tslib_1.__extends(DayGridFillRenderer, _super); function DayGridFillRenderer() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.fillSegTag = 'td'; // override the default tag name return _this; } DayGridFillRenderer.prototype.attachSegEls = function (type, segs) { var nodes = []; var i; var seg; var skeletonEl; for (i = 0; i < segs.length; i++) { seg = segs[i]; skeletonEl = this.renderFillRow(type, seg); this.component.rowEls.eq(seg.row).append(skeletonEl); nodes.push(skeletonEl[0]); } return nodes; }; // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered. DayGridFillRenderer.prototype.renderFillRow = function (type, seg) { var colCnt = this.component.colCnt; var startCol = seg.leftCol; var endCol = seg.rightCol + 1; var className; var skeletonEl; var trEl; if (type === 'businessHours') { className = 'bgevent'; } else { className = type.toLowerCase(); } skeletonEl = $('<div class="fc-' + className + '-skeleton">' + '<table><tr></tr></table>' + '</div>'); trEl = skeletonEl.find('tr'); if (startCol > 0) { trEl.append( // will create (startCol + 1) td's new Array(startCol + 1).join('<td></td>')); } trEl.append(seg.el.attr('colspan', endCol - startCol)); if (endCol < colCnt) { trEl.append( // will create (colCnt - endCol) td's new Array(colCnt - endCol + 1).join('<td></td>')); } this.component.bookendCells(trEl); return skeletonEl; }; return DayGridFillRenderer; }(FillRenderer_1.default)); exports.default = DayGridFillRenderer; /***/ }), /* 246 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var moment = __webpack_require__(0); var util_1 = __webpack_require__(4); var BasicView_1 = __webpack_require__(67); var MonthViewDateProfileGenerator_1 = __webpack_require__(247); /* A month view with day cells running in rows (one-per-week) and columns ----------------------------------------------------------------------------------------------------------------------*/ var MonthView = /** @class */ (function (_super) { tslib_1.__extends(MonthView, _super); function MonthView() { return _super !== null && _super.apply(this, arguments) || this; } // Overrides the default BasicView behavior to have special multi-week auto-height logic MonthView.prototype.setGridHeight = function (height, isAuto) { // if auto, make the height of each row the height that it would be if there were 6 weeks if (isAuto) { height *= this.dayGrid.rowCnt / 6; } util_1.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows }; MonthView.prototype.isDateInOtherMonth = function (date, dateProfile) { return date.month() !== moment.utc(dateProfile.currentUnzonedRange.startMs).month(); // TODO: optimize }; return MonthView; }(BasicView_1.default)); exports.default = MonthView; MonthView.prototype.dateProfileGeneratorClass = MonthViewDateProfileGenerator_1.default; /***/ }), /* 247 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var BasicViewDateProfileGenerator_1 = __webpack_require__(68); var UnzonedRange_1 = __webpack_require__(5); var MonthViewDateProfileGenerator = /** @class */ (function (_super) { tslib_1.__extends(MonthViewDateProfileGenerator, _super); function MonthViewDateProfileGenerator() { return _super !== null && _super.apply(this, arguments) || this; } // Computes the date range that will be rendered. MonthViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) { var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay); var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay); var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay); var rowCnt; // ensure 6 weeks if (this.opt('fixedWeekCount')) { rowCnt = Math.ceil(// could be partial weeks due to hiddenDays end.diff(start, 'weeks', true) // dontRound=true ); end.add(6 - rowCnt, 'weeks'); } return new UnzonedRange_1.default(start, end); }; return MonthViewDateProfileGenerator; }(BasicViewDateProfileGenerator_1.default)); exports.default = MonthViewDateProfileGenerator; /***/ }), /* 248 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var UnzonedRange_1 = __webpack_require__(5); var View_1 = __webpack_require__(43); var Scroller_1 = __webpack_require__(41); var ListEventRenderer_1 = __webpack_require__(249); var ListEventPointing_1 = __webpack_require__(250); /* Responsible for the scroller, and forwarding event-related actions into the "grid". */ var ListView = /** @class */ (function (_super) { tslib_1.__extends(ListView, _super); function ListView(calendar, viewSpec) { var _this = _super.call(this, calendar, viewSpec) || this; _this.segSelector = '.fc-list-item'; // which elements accept event actions _this.scroller = new Scroller_1.default({ overflowX: 'hidden', overflowY: 'auto' }); return _this; } ListView.prototype.renderSkeleton = function () { this.el.addClass('fc-list-view ' + this.calendar.theme.getClass('listView')); this.scroller.render(); this.scroller.el.appendTo(this.el); this.contentEl = this.scroller.scrollEl; // shortcut }; ListView.prototype.unrenderSkeleton = function () { this.scroller.destroy(); // will remove the Grid too }; ListView.prototype.updateSize = function (totalHeight, isAuto, isResize) { _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); this.scroller.clear(); // sets height to 'auto' and clears overflow if (!isAuto) { this.scroller.setHeight(this.computeScrollerHeight(totalHeight)); } }; ListView.prototype.computeScrollerHeight = function (totalHeight) { return totalHeight - util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller }; ListView.prototype.renderDates = function (dateProfile) { var calendar = this.calendar; var dayStart = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs, true); var viewEnd = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.endMs, true); var dayDates = []; var dayRanges = []; while (dayStart < viewEnd) { dayDates.push(dayStart.clone()); dayRanges.push(new UnzonedRange_1.default(dayStart, dayStart.clone().add(1, 'day'))); dayStart.add(1, 'day'); } this.dayDates = dayDates; this.dayRanges = dayRanges; // all real rendering happens in EventRenderer }; // slices by day ListView.prototype.componentFootprintToSegs = function (footprint) { var dayRanges = this.dayRanges; var dayIndex; var segRange; var seg; var segs = []; for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) { segRange = footprint.unzonedRange.intersect(dayRanges[dayIndex]); if (segRange) { seg = { startMs: segRange.startMs, endMs: segRange.endMs, isStart: segRange.isStart, isEnd: segRange.isEnd, dayIndex: dayIndex }; segs.push(seg); // detect when footprint won't go fully into the next day, // and mutate the latest seg to the be the end. if (!seg.isEnd && !footprint.isAllDay && dayIndex + 1 < dayRanges.length && footprint.unzonedRange.endMs < dayRanges[dayIndex + 1].startMs + this.nextDayThreshold) { seg.endMs = footprint.unzonedRange.endMs; seg.isEnd = true; break; } } } return segs; }; ListView.prototype.renderEmptyMessage = function () { this.contentEl.html('<div class="fc-list-empty-wrap2">' + // TODO: try less wraps '<div class="fc-list-empty-wrap1">' + '<div class="fc-list-empty">' + util_1.htmlEscape(this.opt('noEventsMessage')) + '</div>' + '</div>' + '</div>'); }; // render the event segments in the view ListView.prototype.renderSegList = function (allSegs) { var segsByDay = this.groupSegsByDay(allSegs); // sparse array var dayIndex; var daySegs; var i; var tableEl = $('<table class="fc-list-table ' + this.calendar.theme.getClass('tableList') + '"><tbody></tbody></table>'); var tbodyEl = tableEl.find('tbody'); for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) { daySegs = segsByDay[dayIndex]; if (daySegs) { // sparse array, so might be undefined // append a day header tbodyEl.append(this.dayHeaderHtml(this.dayDates[dayIndex])); this.eventRenderer.sortEventSegs(daySegs); for (i = 0; i < daySegs.length; i++) { tbodyEl.append(daySegs[i].el); // append event row } } } this.contentEl.empty().append(tableEl); }; // Returns a sparse array of arrays, segs grouped by their dayIndex ListView.prototype.groupSegsByDay = function (segs) { var segsByDay = []; // sparse array var i; var seg; for (i = 0; i < segs.length; i++) { seg = segs[i]; (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = [])) .push(seg); } return segsByDay; }; // generates the HTML for the day headers that live amongst the event rows ListView.prototype.dayHeaderHtml = function (dayDate) { var mainFormat = this.opt('listDayFormat'); var altFormat = this.opt('listDayAltFormat'); return '<tr class="fc-list-heading" data-date="' + dayDate.format('YYYY-MM-DD') + '">' + '<td class="' + (this.calendar.theme.getClass('tableListHeading') || this.calendar.theme.getClass('widgetHeader')) + '" colspan="3">' + (mainFormat ? this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-main' }, util_1.htmlEscape(dayDate.format(mainFormat)) // inner HTML ) : '') + (altFormat ? this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-alt' }, util_1.htmlEscape(dayDate.format(altFormat)) // inner HTML ) : '') + '</td>' + '</tr>'; }; return ListView; }(View_1.default)); exports.default = ListView; ListView.prototype.eventRendererClass = ListEventRenderer_1.default; ListView.prototype.eventPointingClass = ListEventPointing_1.default; /***/ }), /* 249 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var util_1 = __webpack_require__(4); var EventRenderer_1 = __webpack_require__(44); var ListEventRenderer = /** @class */ (function (_super) { tslib_1.__extends(ListEventRenderer, _super); function ListEventRenderer() { return _super !== null && _super.apply(this, arguments) || this; } ListEventRenderer.prototype.renderFgSegs = function (segs) { if (!segs.length) { this.component.renderEmptyMessage(); } else { this.component.renderSegList(segs); } }; // generates the HTML for a single event row ListEventRenderer.prototype.fgSegHtml = function (seg) { var view = this.view; var calendar = view.calendar; var theme = calendar.theme; var eventFootprint = seg.footprint; var eventDef = eventFootprint.eventDef; var componentFootprint = eventFootprint.componentFootprint; var url = eventDef.url; var classes = ['fc-list-item'].concat(this.getClasses(eventDef)); var bgColor = this.getBgColor(eventDef); var timeHtml; if (componentFootprint.isAllDay) { timeHtml = view.getAllDayHtml(); } else if (view.isMultiDayRange(componentFootprint.unzonedRange)) { if (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day timeHtml = util_1.htmlEscape(this._getTimeText(calendar.msToMoment(seg.startMs), calendar.msToMoment(seg.endMs), componentFootprint.isAllDay)); } else { // inner segment that lasts the whole day timeHtml = view.getAllDayHtml(); } } else { // Display the normal time text for the *event's* times timeHtml = util_1.htmlEscape(this.getTimeText(eventFootprint)); } if (url) { classes.push('fc-has-url'); } return '<tr class="' + classes.join(' ') + '">' + (this.displayEventTime ? '<td class="fc-list-item-time ' + theme.getClass('widgetContent') + '">' + (timeHtml || '') + '</td>' : '') + '<td class="fc-list-item-marker ' + theme.getClass('widgetContent') + '">' + '<span class="fc-event-dot"' + (bgColor ? ' style="background-color:' + bgColor + '"' : '') + '></span>' + '</td>' + '<td class="fc-list-item-title ' + theme.getClass('widgetContent') + '">' + '<a' + (url ? ' href="' + util_1.htmlEscape(url) + '"' : '') + '>' + util_1.htmlEscape(eventDef.title || '') + '</a>' + '</td>' + '</tr>'; }; // like "4:00am" ListEventRenderer.prototype.computeEventTimeFormat = function () { return this.opt('mediumTimeFormat'); }; return ListEventRenderer; }(EventRenderer_1.default)); exports.default = ListEventRenderer; /***/ }), /* 250 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var EventPointing_1 = __webpack_require__(64); var ListEventPointing = /** @class */ (function (_super) { tslib_1.__extends(ListEventPointing, _super); function ListEventPointing() { return _super !== null && _super.apply(this, arguments) || this; } // for events with a url, the whole <tr> should be clickable, // but it's impossible to wrap with an <a> tag. simulate this. ListEventPointing.prototype.handleClick = function (seg, ev) { var url; _super.prototype.handleClick.call(this, seg, ev); // might prevent the default action // not clicking on or within an <a> with an href if (!$(ev.target).closest('a[href]').length) { url = seg.footprint.eventDef.url; if (url && !ev.isDefaultPrevented()) { // jsEvent not cancelled in handler window.location.href = url; // simulate link click } } }; return ListEventPointing; }(EventPointing_1.default)); exports.default = ListEventPointing; /***/ }), /* 251 */, /* 252 */, /* 253 */, /* 254 */, /* 255 */, /* 256 */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(3); var exportHooks = __webpack_require__(18); var util_1 = __webpack_require__(4); var Calendar_1 = __webpack_require__(232); // for intentional side-effects __webpack_require__(11); __webpack_require__(49); __webpack_require__(260); __webpack_require__(261); __webpack_require__(264); __webpack_require__(265); __webpack_require__(266); __webpack_require__(267); $.fullCalendar = exportHooks; $.fn.fullCalendar = function (options) { var args = Array.prototype.slice.call(arguments, 1); // for a possible method call var res = this; // what this function will return (this jQuery object by default) this.each(function (i, _element) { var element = $(_element); var calendar = element.data('fullCalendar'); // get the existing calendar object (if any) var singleRes; // the returned value of this single method call // a method call if (typeof options === 'string') { if (options === 'getCalendar') { if (!i) { // first element only res = calendar; } } else if (options === 'destroy') { // don't warn if no calendar object if (calendar) { calendar.destroy(); element.removeData('fullCalendar'); } } else if (!calendar) { util_1.warn('Attempting to call a FullCalendar method on an element with no calendar.'); } else if ($.isFunction(calendar[options])) { singleRes = calendar[options].apply(calendar, args); if (!i) { res = singleRes; // record the first method call result } if (options === 'destroy') { // for the destroy method, must remove Calendar object data element.removeData('fullCalendar'); } } else { util_1.warn("'" + options + "' is an unknown FullCalendar method."); } } else if (!calendar) { // don't initialize twice calendar = new Calendar_1.default(element, options); element.data('fullCalendar', calendar); calendar.render(); } }); return res; }; module.exports = exportHooks; /***/ }), /* 257 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); /* Toolbar with buttons and title ----------------------------------------------------------------------------------------------------------------------*/ var Toolbar = /** @class */ (function () { function Toolbar(calendar, toolbarOptions) { this.el = null; // mirrors local `el` this.viewsWithButtons = []; this.calendar = calendar; this.toolbarOptions = toolbarOptions; } // method to update toolbar-specific options, not calendar-wide options Toolbar.prototype.setToolbarOptions = function (newToolbarOptions) { this.toolbarOptions = newToolbarOptions; }; // can be called repeatedly and will rerender Toolbar.prototype.render = function () { var sections = this.toolbarOptions.layout; var el = this.el; if (sections) { if (!el) { el = this.el = $("<div class='fc-toolbar " + this.toolbarOptions.extraClasses + "'>"); } else { el.empty(); } el.append(this.renderSection('left')) .append(this.renderSection('right')) .append(this.renderSection('center')) .append('<div class="fc-clear"></div>'); } else { this.removeElement(); } }; Toolbar.prototype.removeElement = function () { if (this.el) { this.el.remove(); this.el = null; } }; Toolbar.prototype.renderSection = function (position) { var _this = this; var calendar = this.calendar; var theme = calendar.theme; var optionsManager = calendar.optionsManager; var viewSpecManager = calendar.viewSpecManager; var sectionEl = $('<div class="fc-' + position + '">'); var buttonStr = this.toolbarOptions.layout[position]; var calendarCustomButtons = optionsManager.get('customButtons') || {}; var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {}; var calendarButtonText = optionsManager.get('buttonText') || {}; if (buttonStr) { $.each(buttonStr.split(' '), function (i, buttonGroupStr) { var groupChildren = $(); var isOnlyButtons = true; var groupEl; $.each(buttonGroupStr.split(','), function (j, buttonName) { var customButtonProps; var viewSpec; var buttonClick; var buttonIcon; // only one of these will be set var buttonText; // " var buttonInnerHtml; var buttonClasses; var buttonEl; var buttonAriaAttr; if (buttonName === 'title') { groupChildren = groupChildren.add($('<h2> </h2>')); // we always want it to take up height isOnlyButtons = false; } else { if ((customButtonProps = calendarCustomButtons[buttonName])) { buttonClick = function (ev) { if (customButtonProps.click) { customButtonProps.click.call(buttonEl[0], ev); } }; (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || (buttonIcon = theme.getIconClass(buttonName)) || (buttonText = customButtonProps.text); } else if ((viewSpec = viewSpecManager.getViewSpec(buttonName))) { _this.viewsWithButtons.push(buttonName); buttonClick = function () { calendar.changeView(buttonName); }; (buttonText = viewSpec.buttonTextOverride) || (buttonIcon = theme.getIconClass(buttonName)) || (buttonText = viewSpec.buttonTextDefault); } else if (calendar[buttonName]) { // a calendar method buttonClick = function () { calendar[buttonName](); }; (buttonText = calendarButtonTextOverrides[buttonName]) || (buttonIcon = theme.getIconClass(buttonName)) || (buttonText = calendarButtonText[buttonName]); // ^ everything else is considered default } if (buttonClick) { buttonClasses = [ 'fc-' + buttonName + '-button', theme.getClass('button'), theme.getClass('stateDefault') ]; if (buttonText) { buttonInnerHtml = util_1.htmlEscape(buttonText); buttonAriaAttr = ''; } else if (buttonIcon) { buttonInnerHtml = "<span class='" + buttonIcon + "'></span>"; buttonAriaAttr = ' aria-label="' + buttonName + '"'; } buttonEl = $(// type="button" so that it doesn't submit a form '<button type="button" class="' + buttonClasses.join(' ') + '"' + buttonAriaAttr + '>' + buttonInnerHtml + '</button>') .click(function (ev) { // don't process clicks for disabled buttons if (!buttonEl.hasClass(theme.getClass('stateDisabled'))) { buttonClick(ev); // after the click action, if the button becomes the "active" tab, or disabled, // it should never have a hover class, so remove it now. if (buttonEl.hasClass(theme.getClass('stateActive')) || buttonEl.hasClass(theme.getClass('stateDisabled'))) { buttonEl.removeClass(theme.getClass('stateHover')); } } }) .mousedown(function () { // the *down* effect (mouse pressed in). // only on buttons that are not the "active" tab, or disabled buttonEl .not('.' + theme.getClass('stateActive')) .not('.' + theme.getClass('stateDisabled')) .addClass(theme.getClass('stateDown')); }) .mouseup(function () { // undo the *down* effect buttonEl.removeClass(theme.getClass('stateDown')); }) .hover(function () { // the *hover* effect. // only on buttons that are not the "active" tab, or disabled buttonEl .not('.' + theme.getClass('stateActive')) .not('.' + theme.getClass('stateDisabled')) .addClass(theme.getClass('stateHover')); }, function () { // undo the *hover* effect buttonEl .removeClass(theme.getClass('stateHover')) .removeClass(theme.getClass('stateDown')); // if mouseleave happens before mouseup }); groupChildren = groupChildren.add(buttonEl); } } }); if (isOnlyButtons) { groupChildren .first().addClass(theme.getClass('cornerLeft')).end() .last().addClass(theme.getClass('cornerRight')).end(); } if (groupChildren.length > 1) { groupEl = $('<div>'); if (isOnlyButtons) { groupEl.addClass(theme.getClass('buttonGroup')); } groupEl.append(groupChildren); sectionEl.append(groupEl); } else { sectionEl.append(groupChildren); // 1 or 0 children } }); } return sectionEl; }; Toolbar.prototype.updateTitle = function (text) { if (this.el) { this.el.find('h2').text(text); } }; Toolbar.prototype.activateButton = function (buttonName) { if (this.el) { this.el.find('.fc-' + buttonName + '-button') .addClass(this.calendar.theme.getClass('stateActive')); } }; Toolbar.prototype.deactivateButton = function (buttonName) { if (this.el) { this.el.find('.fc-' + buttonName + '-button') .removeClass(this.calendar.theme.getClass('stateActive')); } }; Toolbar.prototype.disableButton = function (buttonName) { if (this.el) { this.el.find('.fc-' + buttonName + '-button') .prop('disabled', true) .addClass(this.calendar.theme.getClass('stateDisabled')); } }; Toolbar.prototype.enableButton = function (buttonName) { if (this.el) { this.el.find('.fc-' + buttonName + '-button') .prop('disabled', false) .removeClass(this.calendar.theme.getClass('stateDisabled')); } }; Toolbar.prototype.getViewsWithButtons = function () { return this.viewsWithButtons; }; return Toolbar; }()); exports.default = Toolbar; /***/ }), /* 258 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var util_1 = __webpack_require__(4); var options_1 = __webpack_require__(33); var locale_1 = __webpack_require__(32); var Model_1 = __webpack_require__(51); var OptionsManager = /** @class */ (function (_super) { tslib_1.__extends(OptionsManager, _super); function OptionsManager(_calendar, overrides) { var _this = _super.call(this) || this; _this._calendar = _calendar; _this.overrides = $.extend({}, overrides); // make a copy _this.dynamicOverrides = {}; _this.compute(); return _this; } OptionsManager.prototype.add = function (newOptionHash) { var optionCnt = 0; var optionName; this.recordOverrides(newOptionHash); // will trigger this model's watchers for (optionName in newOptionHash) { optionCnt++; } // special-case handling of single option change. // if only one option change, `optionName` will be its name. if (optionCnt === 1) { if (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') { this._calendar.updateViewSize(true); // isResize=true return; } else if (optionName === 'defaultDate') { return; // can't change date this way. use gotoDate instead } else if (optionName === 'businessHours') { return; // this model already reacts to this } else if (/^(event|select)(Overlap|Constraint|Allow)$/.test(optionName)) { return; // doesn't affect rendering. only interactions. } else if (optionName === 'timezone') { this._calendar.view.flash('initialEvents'); return; } } // catch-all. rerender the header and footer and rebuild/rerender the current view this._calendar.renderHeader(); this._calendar.renderFooter(); // even non-current views will be affected by this option change. do before rerender // TODO: detangle this._calendar.viewsByType = {}; this._calendar.reinitView(); }; // Computes the flattened options hash for the calendar and assigns to `this.options`. // Assumes this.overrides and this.dynamicOverrides have already been initialized. OptionsManager.prototype.compute = function () { var locale; var localeDefaults; var isRTL; var dirDefaults; var rawOptions; locale = util_1.firstDefined(// explicit locale option given? this.dynamicOverrides.locale, this.overrides.locale); localeDefaults = locale_1.localeOptionHash[locale]; if (!localeDefaults) { // explicit locale option not given or invalid? locale = options_1.globalDefaults.locale; localeDefaults = locale_1.localeOptionHash[locale] || {}; } isRTL = util_1.firstDefined(// based on options computed so far, is direction RTL? this.dynamicOverrides.isRTL, this.overrides.isRTL, localeDefaults.isRTL, options_1.globalDefaults.isRTL); dirDefaults = isRTL ? options_1.rtlDefaults : {}; this.dirDefaults = dirDefaults; this.localeDefaults = localeDefaults; rawOptions = options_1.mergeOptions([ options_1.globalDefaults, dirDefaults, localeDefaults, this.overrides, this.dynamicOverrides ]); locale_1.populateInstanceComputableOptions(rawOptions); // fill in gaps with computed options this.reset(rawOptions); }; // stores the new options internally, but does not rerender anything. OptionsManager.prototype.recordOverrides = function (newOptionHash) { var optionName; for (optionName in newOptionHash) { this.dynamicOverrides[optionName] = newOptionHash[optionName]; } this._calendar.viewSpecManager.clearCache(); // the dynamic override invalidates the options in this cache, so just clear it this.compute(); // this.options needs to be recomputed after the dynamic override }; return OptionsManager; }(Model_1.default)); exports.default = OptionsManager; /***/ }), /* 259 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var moment = __webpack_require__(0); var $ = __webpack_require__(3); var ViewRegistry_1 = __webpack_require__(24); var util_1 = __webpack_require__(4); var options_1 = __webpack_require__(33); var locale_1 = __webpack_require__(32); var ViewSpecManager = /** @class */ (function () { function ViewSpecManager(optionsManager, _calendar) { this.optionsManager = optionsManager; this._calendar = _calendar; this.clearCache(); } ViewSpecManager.prototype.clearCache = function () { this.viewSpecCache = {}; }; // Gets information about how to create a view. Will use a cache. ViewSpecManager.prototype.getViewSpec = function (viewType) { var cache = this.viewSpecCache; return cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType)); }; // Given a duration singular unit, like "week" or "day", finds a matching view spec. // Preference is given to views that have corresponding buttons. ViewSpecManager.prototype.getUnitViewSpec = function (unit) { var viewTypes; var i; var spec; if ($.inArray(unit, util_1.unitsDesc) !== -1) { // put views that have buttons first. there will be duplicates, but oh well viewTypes = this._calendar.header.getViewsWithButtons(); // TODO: include footer as well? $.each(ViewRegistry_1.viewHash, function (viewType) { viewTypes.push(viewType); }); for (i = 0; i < viewTypes.length; i++) { spec = this.getViewSpec(viewTypes[i]); if (spec) { if (spec.singleUnit === unit) { return spec; } } } } }; // Builds an object with information on how to create a given view ViewSpecManager.prototype.buildViewSpec = function (requestedViewType) { var viewOverrides = this.optionsManager.overrides.views || {}; var specChain = []; // for the view. lowest to highest priority var defaultsChain = []; // for the view. lowest to highest priority var overridesChain = []; // for the view. lowest to highest priority var viewType = requestedViewType; var spec; // for the view var overrides; // for the view var durationInput; var duration; var unit; // iterate from the specific view definition to a more general one until we hit an actual View class while (viewType) { spec = ViewRegistry_1.viewHash[viewType]; overrides = viewOverrides[viewType]; viewType = null; // clear. might repopulate for another iteration if (typeof spec === 'function') { // TODO: deprecate spec = { 'class': spec }; } if (spec) { specChain.unshift(spec); defaultsChain.unshift(spec.defaults || {}); durationInput = durationInput || spec.duration; viewType = viewType || spec.type; } if (overrides) { overridesChain.unshift(overrides); // view-specific option hashes have options at zero-level durationInput = durationInput || overrides.duration; viewType = viewType || overrides.type; } } spec = util_1.mergeProps(specChain); spec.type = requestedViewType; if (!spec['class']) { return false; } // fall back to top-level `duration` option durationInput = durationInput || this.optionsManager.dynamicOverrides.duration || this.optionsManager.overrides.duration; if (durationInput) { duration = moment.duration(durationInput); if (duration.valueOf()) { // valid? unit = util_1.computeDurationGreatestUnit(duration, durationInput); spec.duration = duration; spec.durationUnit = unit; // view is a single-unit duration, like "week" or "day" // incorporate options for this. lowest priority if (duration.as(unit) === 1) { spec.singleUnit = unit; overridesChain.unshift(viewOverrides[unit] || {}); } } } spec.defaults = options_1.mergeOptions(defaultsChain); spec.overrides = options_1.mergeOptions(overridesChain); this.buildViewSpecOptions(spec); this.buildViewSpecButtonText(spec, requestedViewType); return spec; }; // Builds and assigns a view spec's options object from its already-assigned defaults and overrides ViewSpecManager.prototype.buildViewSpecOptions = function (spec) { var optionsManager = this.optionsManager; spec.options = options_1.mergeOptions([ options_1.globalDefaults, spec.defaults, optionsManager.dirDefaults, optionsManager.localeDefaults, optionsManager.overrides, spec.overrides, optionsManager.dynamicOverrides // dynamically set via setter. highest precedence ]); locale_1.populateInstanceComputableOptions(spec.options); }; // Computes and assigns a view spec's buttonText-related options ViewSpecManager.prototype.buildViewSpecButtonText = function (spec, requestedViewType) { var optionsManager = this.optionsManager; // given an options object with a possible `buttonText` hash, lookup the buttonText for the // requested view, falling back to a generic unit entry like "week" or "day" function queryButtonText(options) { var buttonText = options.buttonText || {}; return buttonText[requestedViewType] || // view can decide to look up a certain key (spec.buttonTextKey ? buttonText[spec.buttonTextKey] : null) || // a key like "month" (spec.singleUnit ? buttonText[spec.singleUnit] : null); } // highest to lowest priority spec.buttonTextOverride = queryButtonText(optionsManager.dynamicOverrides) || queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence spec.overrides.buttonText; // `buttonText` for view-specific options is a string // highest to lowest priority. mirrors buildViewSpecOptions spec.buttonTextDefault = queryButtonText(optionsManager.localeDefaults) || queryButtonText(optionsManager.dirDefaults) || spec.defaults.buttonText || // a single string. from ViewSubclass.defaults queryButtonText(options_1.globalDefaults) || (spec.duration ? this._calendar.humanizeDuration(spec.duration) : null) || // like "3 days" requestedViewType; // fall back to given view name }; return ViewSpecManager; }()); exports.default = ViewSpecManager; /***/ }), /* 260 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var EventSourceParser_1 = __webpack_require__(38); var ArrayEventSource_1 = __webpack_require__(56); var FuncEventSource_1 = __webpack_require__(223); var JsonFeedEventSource_1 = __webpack_require__(224); EventSourceParser_1.default.registerClass(ArrayEventSource_1.default); EventSourceParser_1.default.registerClass(FuncEventSource_1.default); EventSourceParser_1.default.registerClass(JsonFeedEventSource_1.default); /***/ }), /* 261 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var ThemeRegistry_1 = __webpack_require__(57); var StandardTheme_1 = __webpack_require__(221); var JqueryUiTheme_1 = __webpack_require__(222); var Bootstrap3Theme_1 = __webpack_require__(262); var Bootstrap4Theme_1 = __webpack_require__(263); ThemeRegistry_1.defineThemeSystem('standard', StandardTheme_1.default); ThemeRegistry_1.defineThemeSystem('jquery-ui', JqueryUiTheme_1.default); ThemeRegistry_1.defineThemeSystem('bootstrap3', Bootstrap3Theme_1.default); ThemeRegistry_1.defineThemeSystem('bootstrap4', Bootstrap4Theme_1.default); /***/ }), /* 262 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var Theme_1 = __webpack_require__(22); var Bootstrap3Theme = /** @class */ (function (_super) { tslib_1.__extends(Bootstrap3Theme, _super); function Bootstrap3Theme() { return _super !== null && _super.apply(this, arguments) || this; } return Bootstrap3Theme; }(Theme_1.default)); exports.default = Bootstrap3Theme; Bootstrap3Theme.prototype.classes = { widget: 'fc-bootstrap3', tableGrid: 'table-bordered', tableList: 'table', tableListHeading: 'active', buttonGroup: 'btn-group', button: 'btn btn-default', stateActive: 'active', stateDisabled: 'disabled', today: 'alert alert-info', popover: 'panel panel-default', popoverHeader: 'panel-heading', popoverContent: 'panel-body', // day grid // for left/right border color when border is inset from edges (all-day in agenda view) // avoid `panel` class b/c don't want margins/radius. only border color. headerRow: 'panel-default', dayRow: 'panel-default', // list view listView: 'panel panel-default' }; Bootstrap3Theme.prototype.baseIconClass = 'glyphicon'; Bootstrap3Theme.prototype.iconClasses = { close: 'glyphicon-remove', prev: 'glyphicon-chevron-left', next: 'glyphicon-chevron-right', prevYear: 'glyphicon-backward', nextYear: 'glyphicon-forward' }; Bootstrap3Theme.prototype.iconOverrideOption = 'bootstrapGlyphicons'; Bootstrap3Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapGlyphicon'; Bootstrap3Theme.prototype.iconOverridePrefix = 'glyphicon-'; /***/ }), /* 263 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var Theme_1 = __webpack_require__(22); var Bootstrap4Theme = /** @class */ (function (_super) { tslib_1.__extends(Bootstrap4Theme, _super); function Bootstrap4Theme() { return _super !== null && _super.apply(this, arguments) || this; } return Bootstrap4Theme; }(Theme_1.default)); exports.default = Bootstrap4Theme; Bootstrap4Theme.prototype.classes = { widget: 'fc-bootstrap4', tableGrid: 'table-bordered', tableList: 'table', tableListHeading: 'table-active', buttonGroup: 'btn-group', button: 'btn btn-primary', stateActive: 'active', stateDisabled: 'disabled', today: 'alert alert-info', popover: 'card card-primary', popoverHeader: 'card-header', popoverContent: 'card-body', // day grid // for left/right border color when border is inset from edges (all-day in agenda view) // avoid `table` class b/c don't want margins/padding/structure. only border color. headerRow: 'table-bordered', dayRow: 'table-bordered', // list view listView: 'card card-primary' }; Bootstrap4Theme.prototype.baseIconClass = 'fa'; Bootstrap4Theme.prototype.iconClasses = { close: 'fa-times', prev: 'fa-chevron-left', next: 'fa-chevron-right', prevYear: 'fa-angle-double-left', nextYear: 'fa-angle-double-right' }; Bootstrap4Theme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; Bootstrap4Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome'; Bootstrap4Theme.prototype.iconOverridePrefix = 'fa-'; /***/ }), /* 264 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var ViewRegistry_1 = __webpack_require__(24); var BasicView_1 = __webpack_require__(67); var MonthView_1 = __webpack_require__(246); ViewRegistry_1.defineView('basic', { 'class': BasicView_1.default }); ViewRegistry_1.defineView('basicDay', { type: 'basic', duration: { days: 1 } }); ViewRegistry_1.defineView('basicWeek', { type: 'basic', duration: { weeks: 1 } }); ViewRegistry_1.defineView('month', { 'class': MonthView_1.default, duration: { months: 1 }, defaults: { fixedWeekCount: true } }); /***/ }), /* 265 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var ViewRegistry_1 = __webpack_require__(24); var AgendaView_1 = __webpack_require__(238); ViewRegistry_1.defineView('agenda', { 'class': AgendaView_1.default, defaults: { allDaySlot: true, slotDuration: '00:30:00', slotEventOverlap: true // a bad name. confused with overlap/constraint system } }); ViewRegistry_1.defineView('agendaDay', { type: 'agenda', duration: { days: 1 } }); ViewRegistry_1.defineView('agendaWeek', { type: 'agenda', duration: { weeks: 1 } }); /***/ }), /* 266 */ /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var ViewRegistry_1 = __webpack_require__(24); var ListView_1 = __webpack_require__(248); ViewRegistry_1.defineView('list', { 'class': ListView_1.default, buttonTextKey: 'list', defaults: { buttonText: 'list', listDayFormat: 'LL', noEventsMessage: 'No events to display' } }); ViewRegistry_1.defineView('listDay', { type: 'list', duration: { days: 1 }, defaults: { listDayFormat: 'dddd' // day-of-week is all we need. full date is probably in header } }); ViewRegistry_1.defineView('listWeek', { type: 'list', duration: { weeks: 1 }, defaults: { listDayFormat: 'dddd', listDayAltFormat: 'LL' } }); ViewRegistry_1.defineView('listMonth', { type: 'list', duration: { month: 1 }, defaults: { listDayAltFormat: 'dddd' // day-of-week is nice-to-have } }); ViewRegistry_1.defineView('listYear', { type: 'list', duration: { year: 1 }, defaults: { listDayAltFormat: 'dddd' // day-of-week is nice-to-have } }); /***/ }), /* 267 */ /***/ (function(module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); /***/ }) /******/ ]); }); fullcalendar/fullcalendar.min.js 0000644 00000647702 15002261751 0012773 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("moment"),require("jquery")):"function"==typeof define&&define.amd?define(["moment","jquery"],e):"object"==typeof exports?exports.FullCalendar=e(require("moment"),require("jquery")):t.FullCalendar=e(t.moment,t.jQuery)}("undefined"!=typeof self?self:this,function(t,e){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=256)}([function(e,n){e.exports=t},,function(t,e){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};e.__extends=function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}},function(t,n){t.exports=e},function(t,e,n){function r(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function i(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function o(){ht("body").addClass("fc-not-allowed")}function s(){ht("body").removeClass("fc-not-allowed")}function a(t,e,n){var r=Math.floor(e/t.length),i=Math.floor(e-r*(t.length-1)),o=[],s=[],a=[],u=0;l(t),t.each(function(e,n){var l=e===t.length-1?i:r,d=ht(n).outerHeight(!0);d<l?(o.push(n),s.push(d),a.push(ht(n).height())):u+=d}),n&&(e-=u,r=Math.floor(e/o.length),i=Math.floor(e-r*(o.length-1))),ht(o).each(function(t,e){var n=t===o.length-1?i:r,l=s[t],u=a[t],d=n-(l-u);l<n&&ht(e).height(d)})}function l(t){t.height("")}function u(t){var e=0;return t.find("> *").each(function(t,n){var r=ht(n).outerWidth();r>e&&(e=r)}),e++,t.width(e),e}function d(t,e){var n,r=t.add(e);return r.css({position:"relative",left:-1}),n=t.outerHeight()-e.outerHeight(),r.css({position:"",left:""}),n}function c(t){var e=t.css("position"),n=t.parents().filter(function(){var t=ht(this);return/(auto|scroll)/.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&n.length?n:ht(t[0].ownerDocument||document)}function p(t,e){var n=t.offset(),r=n.left-(e?e.left:0),i=n.top-(e?e.top:0);return{left:r,right:r+t.outerWidth(),top:i,bottom:i+t.outerHeight()}}function h(t,e){var n=t.offset(),r=g(t),i=n.left+b(t,"border-left-width")+r.left-(e?e.left:0),o=n.top+b(t,"border-top-width")+r.top-(e?e.top:0);return{left:i,right:i+t[0].clientWidth,top:o,bottom:o+t[0].clientHeight}}function f(t,e){var n=t.offset(),r=n.left+b(t,"border-left-width")+b(t,"padding-left")-(e?e.left:0),i=n.top+b(t,"border-top-width")+b(t,"padding-top")-(e?e.top:0);return{left:r,right:r+t.width(),top:i,bottom:i+t.height()}}function g(t){var e,n=t[0].offsetWidth-t[0].clientWidth,r=t[0].offsetHeight-t[0].clientHeight;return n=v(n),r=v(r),e={left:0,right:0,top:0,bottom:r},y()&&"rtl"===t.css("direction")?e.left=n:e.right=n,e}function v(t){return t=Math.max(0,t),t=Math.round(t)}function y(){return null===ft&&(ft=m()),ft}function m(){var t=ht("<div><div></div></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),e=t.children(),n=e.offset().left>t.offset().left;return t.remove(),n}function b(t,e){return parseFloat(t.css(e))||0}function w(t){return 1===t.which&&!t.ctrlKey}function D(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageX:t.pageX}function E(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageY:t.pageY}function S(t){return/^touch/.test(t.type)}function C(t){t.addClass("fc-unselectable").on("selectstart",T)}function R(t){t.removeClass("fc-unselectable").off("selectstart",T)}function T(t){t.preventDefault()}function M(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function I(t,e){return{left:Math.min(Math.max(t.left,e.left),e.right),top:Math.min(Math.max(t.top,e.top),e.bottom)}}function H(t){return{left:(t.left+t.right)/2,top:(t.top+t.bottom)/2}}function P(t,e){return{left:t.left-e.left,top:t.top-e.top}}function _(t){var e,n,r=[],i=[];for("string"==typeof t?i=t.split(/\s*,\s*/):"function"==typeof t?i=[t]:ht.isArray(t)&&(i=t),e=0;e<i.length;e++)n=i[e],"string"==typeof n?r.push("-"===n.charAt(0)?{field:n.substring(1),order:-1}:{field:n,order:1}):"function"==typeof n&&r.push({func:n});return r}function x(t,e,n,r,i){var o,s;for(o=0;o<n.length;o++)if(s=O(t,e,n[o],r,i))return s;return 0}function O(t,e,n,r,i){if(n.func)return n.func(t,e);var o=t[n.field],s=e[n.field];return null==o&&r&&(o=r[n.field]),null==s&&i&&(s=i[n.field]),F(o,s)*(n.order||1)}function F(t,e){return t||e?null==e?-1:null==t?1:"string"===ht.type(t)||"string"===ht.type(e)?String(t).localeCompare(String(e)):t-e:0}function z(t,e){return pt.duration({days:t.clone().stripTime().diff(e.clone().stripTime(),"days"),ms:t.time()-e.time()})}function B(t,e){return pt.duration({days:t.clone().stripTime().diff(e.clone().stripTime(),"days")})}function A(t,e,n){return pt.duration(Math.round(t.diff(e,n,!0)),n)}function k(t,n){var r,i,o;for(r=0;r<e.unitsDesc.length&&(i=e.unitsDesc[r],!((o=V(i,t,n))>=1&&ut(o)));r++);return i}function L(t,e){var n=k(t);return"week"===n&&"object"==typeof e&&e.days&&(n="day"),n}function V(t,e,n){return null!=n?n.diff(e,t,!0):pt.isDuration(e)?e.as(t):e.end.diff(e.start,t,!0)}function G(t,e,n){var r;return U(n)?(e-t)/n:(r=n.asMonths(),Math.abs(r)>=1&&ut(r)?e.diff(t,"months",!0)/r:e.diff(t,"days",!0)/n.asDays())}function N(t,e){var n,r;return U(t)||U(e)?t/e:(n=t.asMonths(),r=e.asMonths(),Math.abs(n)>=1&&ut(n)&&Math.abs(r)>=1&&ut(r)?n/r:t.asDays()/e.asDays())}function j(t,e){var n;return U(t)?pt.duration(t*e):(n=t.asMonths(),Math.abs(n)>=1&&ut(n)?pt.duration({months:n*e}):pt.duration({days:t.asDays()*e}))}function U(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function W(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function q(t){return"string"==typeof t&&/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function Y(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=window.console;if(n&&n.log)return n.log.apply(n,t)}function Z(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=window.console;return n&&n.warn?n.warn.apply(n,t):Y.apply(null,t)}function X(t,e){var n,r,i,o,s,a,l={};if(e)for(n=0;n<e.length;n++){for(r=e[n],i=[],o=t.length-1;o>=0;o--)if("object"==typeof(s=t[o][r]))i.unshift(s);else if(void 0!==s){l[r]=s;break}i.length&&(l[r]=X(i))}for(n=t.length-1;n>=0;n--){a=t[n];for(r in a)r in l||(l[r]=a[r])}return l}function Q(t,e){for(var n in t)$(t,n)&&(e[n]=t[n])}function $(t,e){return gt.call(t,e)}function K(t,e,n){if(ht.isFunction(t)&&(t=[t]),t){var r=void 0,i=void 0;for(r=0;r<t.length;r++)i=t[r].apply(e,n)||i;return i}}function J(t,e){for(var n=0,r=0;r<t.length;)e(t[r])?(t.splice(r,1),n++):r++;return n}function tt(t,e){for(var n=0,r=0;r<t.length;)t[r]===e?(t.splice(r,1),n++):r++;return n}function et(t,e){var n,r=t.length;if(null==r||r!==e.length)return!1;for(n=0;n<r;n++)if(t[n]!==e[n])return!1;return!0}function nt(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0;n<t.length;n++)if(void 0!==t[n])return t[n]}function rt(t){return(t+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"<br>")}function it(t){return t.replace(/&.*?;/g,"")}function ot(t){var e=[];return ht.each(t,function(t,n){null!=n&&e.push(t+":"+n)}),e.join(";")}function st(t){var e=[];return ht.each(t,function(t,n){null!=n&&e.push(t+'="'+rt(n)+'"')}),e.join(" ")}function at(t){return t.charAt(0).toUpperCase()+t.slice(1)}function lt(t,e){return t-e}function ut(t){return t%1==0}function dt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function ct(t,e,n){void 0===n&&(n=!1);var r,i,o,s,a,l=function(){var u=+new Date-s;u<e?r=setTimeout(l,e-u):(r=null,n||(a=t.apply(o,i),o=i=null))};return function(){o=this,i=arguments,s=+new Date;var u=n&&!r;return r||(r=setTimeout(l,e)),u&&(a=t.apply(o,i),o=i=null),a}}Object.defineProperty(e,"__esModule",{value:!0});var pt=n(0),ht=n(3);e.compensateScroll=r,e.uncompensateScroll=i,e.disableCursor=o,e.enableCursor=s,e.distributeHeight=a,e.undistributeHeight=l,e.matchCellWidths=u,e.subtractInnerElHeight=d,e.getScrollParent=c,e.getOuterRect=p,e.getClientRect=h,e.getContentRect=f,e.getScrollbarWidths=g;var ft=null;e.isPrimaryMouseButton=w,e.getEvX=D,e.getEvY=E,e.getEvIsTouch=S,e.preventSelection=C,e.allowSelection=R,e.preventDefault=T,e.intersectRects=M,e.constrainPoint=I,e.getRectCenter=H,e.diffPoints=P,e.parseFieldSpecs=_,e.compareByFieldSpecs=x,e.compareByFieldSpec=O,e.flexibleCompare=F,e.dayIDs=["sun","mon","tue","wed","thu","fri","sat"],e.unitsDesc=["year","month","week","day","hour","minute","second","millisecond"],e.diffDayTime=z,e.diffDay=B,e.diffByUnit=A,e.computeGreatestUnit=k,e.computeDurationGreatestUnit=L,e.divideRangeByDuration=G,e.divideDurationByDuration=N,e.multiplyDuration=j,e.durationHasTime=U,e.isNativeDate=W,e.isTimeString=q,e.log=Y,e.warn=Z;var gt={}.hasOwnProperty;e.mergeProps=X,e.copyOwnProps=Q,e.hasOwnProp=$,e.applyAll=K,e.removeMatching=J,e.removeExact=tt,e.isArraysEqual=et,e.firstDefined=nt,e.htmlEscape=rt,e.stripHtmlEntities=it,e.cssToStr=ot,e.attrsToStr=st,e.capitaliseFirstLetter=at,e.compareNumbers=lt,e.isInt=ut,e.proxy=dt,e.debounce=ct},function(t,e,n){function r(t,e){return t.startMs-e.startMs}Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=n(11),s=function(){function t(t,e){this.isStart=!0,this.isEnd=!0,i.isMoment(t)&&(t=t.clone().stripZone()),i.isMoment(e)&&(e=e.clone().stripZone()),t&&(this.startMs=t.valueOf()),e&&(this.endMs=e.valueOf())}return t.invertRanges=function(e,n){var i,o,s=[],a=n.startMs;for(e.sort(r),i=0;i<e.length;i++)o=e[i],o.startMs>a&&s.push(new t(a,o.startMs)),o.endMs>a&&(a=o.endMs);return a<n.endMs&&s.push(new t(a,n.endMs)),s},t.prototype.intersect=function(e){var n=this.startMs,r=this.endMs,i=null;return null!=e.startMs&&(n=null==n?e.startMs:Math.max(n,e.startMs)),null!=e.endMs&&(r=null==r?e.endMs:Math.min(r,e.endMs)),(null==n||null==r||n<r)&&(i=new t(n,r),i.isStart=this.isStart&&n===this.startMs,i.isEnd=this.isEnd&&r===this.endMs),i},t.prototype.intersectsWith=function(t){return(null==this.endMs||null==t.startMs||this.endMs>t.startMs)&&(null==this.startMs||null==t.endMs||this.startMs<t.endMs)},t.prototype.containsRange=function(t){return(null==this.startMs||null!=t.startMs&&t.startMs>=this.startMs)&&(null==this.endMs||null!=t.endMs&&t.endMs<=this.endMs)},t.prototype.containsDate=function(t){var e=t.valueOf();return(null==this.startMs||e>=this.startMs)&&(null==this.endMs||e<this.endMs)},t.prototype.constrainDate=function(t){var e=t.valueOf();return null!=this.startMs&&e<this.startMs&&(e=this.startMs),null!=this.endMs&&e>=this.endMs&&(e=this.endMs-1),e},t.prototype.equals=function(t){return this.startMs===t.startMs&&this.endMs===t.endMs},t.prototype.clone=function(){var e=new t(this.startMs,this.endMs);return e.isStart=this.isStart,e.isEnd=this.isEnd,e},t.prototype.getStart=function(){return null!=this.startMs?o.default.utc(this.startMs).stripZone():null},t.prototype.getEnd=function(){return null!=this.endMs?o.default.utc(this.endMs).stripZone():null},t.prototype.as=function(t){return i.utc(this.endMs).diff(i.utc(this.startMs),t,!0)},t}();e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(52),s=n(35),a=n(36),l=function(t){function e(n){var r=t.call(this)||this;return r.calendar=n,r.className=[],r.uid=String(e.uuid++),r}return r.__extends(e,t),e.parse=function(t,e){var n=new this(e);return!("object"!=typeof t||!n.applyProps(t))&&n},e.normalizeId=function(t){return t?String(t):null},e.prototype.fetch=function(t,e,n){},e.prototype.removeEventDefsById=function(t){},e.prototype.removeAllEventDefs=function(){},e.prototype.getPrimitive=function(t){},e.prototype.parseEventDefs=function(t){var e,n,r=[];for(e=0;e<t.length;e++)(n=this.parseEventDef(t[e]))&&r.push(n);return r},e.prototype.parseEventDef=function(t){var e=this.calendar.opt("eventDataTransform"),n=this.eventDataTransform;return e&&(t=e(t,this.calendar)),n&&(t=n(t,this.calendar)),a.default.parse(t,this)},e.prototype.applyManualStandardProps=function(t){return null!=t.id&&(this.id=e.normalizeId(t.id)),i.isArray(t.className)?this.className=t.className:"string"==typeof t.className&&(this.className=t.className.split(/\s+/)),!0},e.uuid=0,e.defineStandardProps=o.default.defineStandardProps,e.copyVerbatimStandardProps=o.default.copyVerbatimStandardProps,e}(s.default);e.default=l,o.default.mixInto(l),l.defineStandardProps({id:!1,className:!1,color:!0,backgroundColor:!0,borderColor:!0,textColor:!0,editable:!0,startEditable:!0,durationEditable:!0,rendering:!0,overlap:!0,constraint:!0,allDayDefault:!0,eventDataTransform:!0})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(15),s=0,a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.listenTo=function(t,e,n){if("object"==typeof e)for(var r in e)e.hasOwnProperty(r)&&this.listenTo(t,r,e[r]);else"string"==typeof e&&t.on(e+"."+this.getListenerNamespace(),i.proxy(n,this))},e.prototype.stopListeningTo=function(t,e){t.off((e||"")+"."+this.getListenerNamespace())},e.prototype.getListenerNamespace=function(){return null==this.listenerId&&(this.listenerId=s++),"_listener"+this.listenerId},e}(o.default);e.default=a},,function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(37),o=n(53),s=n(16),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.buildInstances=function(){return[this.buildInstance()]},e.prototype.buildInstance=function(){return new o.default(this,this.dateProfile)},e.prototype.isAllDay=function(){return this.dateProfile.isAllDay()},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e.dateProfile=this.dateProfile,e},e.prototype.rezone=function(){var t=this.source.calendar,e=this.dateProfile;this.dateProfile=new s.default(t.moment(e.start),e.end?t.moment(e.end):null,t)},e.prototype.applyManualStandardProps=function(e){var n=t.prototype.applyManualStandardProps.call(this,e),r=s.default.parse(e,this.source);return!!r&&(this.dateProfile=r,null!=e.date&&(this.miscProps.date=e.date),n)},e}(i.default);e.default=a,a.defineStandardProps({start:!1,date:!1,end:!1,allDay:!1})},,function(t,e,n){function r(t,e){return c.format.call(t,e)}function i(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var r,i,d,c,p=t[0],h=1===t.length&&"string"==typeof p;return o.isMoment(p)||a.isNativeDate(p)||void 0===p?c=o.apply(null,t):(r=!1,i=!1,h?l.test(p)?(p+="-01",t=[p],r=!0,i=!0):(d=u.exec(p))&&(r=!d[5],i=!0):s.isArray(p)&&(i=!0),c=e||r?o.utc.apply(o,t):o.apply(null,t),r?(c._ambigTime=!0,c._ambigZone=!0):n&&(i?c._ambigZone=!0:h&&c.utcOffset(p))),c._fullCalendar=!0,c}Object.defineProperty(e,"__esModule",{value:!0});var o=n(0),s=n(3),a=n(4),l=/^\s*\d{4}-\d\d$/,u=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,d=o.fn;e.newMomentProto=d;var c=s.extend({},d);e.oldMomentProto=c;var p=o.momentProperties;p.push("_fullCalendar"),p.push("_ambigTime"),p.push("_ambigZone"),e.oldMomentFormat=r;var h=function(){return i(arguments)};e.default=h,h.utc=function(){var t=i(arguments,!0);return t.hasTime()&&t.utc(),t},h.parseZone=function(){return i(arguments,!0,!0)},d.week=d.weeks=function(t){var e=this._locale._fullCalendar_weekCalc;return null==t&&"function"==typeof e?e(this):"ISO"===e?c.isoWeek.apply(this,arguments):c.week.apply(this,arguments)},d.time=function(t){if(!this._fullCalendar)return c.time.apply(this,arguments);if(null==t)return o.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,o.isDuration(t)||o.isMoment(t)||(t=o.duration(t));var e=0;return o.isDuration(t)&&(e=24*Math.floor(t.asDays())),this.hours(e+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},d.stripTime=function(){return this._ambigTime||(this.utc(!0),this.set({hours:0,minutes:0,seconds:0,ms:0}),this._ambigTime=!0,this._ambigZone=!0),this},d.hasTime=function(){return!this._ambigTime},d.stripZone=function(){var t;return this._ambigZone||(t=this._ambigTime,this.utc(!0),this._ambigTime=t||!1,this._ambigZone=!0),this},d.hasZone=function(){return!this._ambigZone},d.local=function(t){return c.local.call(this,this._ambigZone||t),this._ambigTime=!1,this._ambigZone=!1,this},d.utc=function(t){return c.utc.call(this,t),this._ambigTime=!1,this._ambigZone=!1,this},d.utcOffset=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),c.utcOffset.apply(this,arguments)}},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){this.isAllDay=!1,this.unzonedRange=t,this.isAllDay=e}return t.prototype.toLegacy=function(t){return{start:t.msToMoment(this.unzonedRange.startMs,this.isAllDay),end:t.msToMoment(this.unzonedRange.endMs,this.isAllDay)}},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.on=function(t,e){return i(this).on(t,this._prepareIntercept(e)),this},e.prototype.one=function(t,e){return i(this).one(t,this._prepareIntercept(e)),this},e.prototype._prepareIntercept=function(t){var e=function(e,n){return t.apply(n.context||this,n.args||[])};return t.guid||(t.guid=i.guid++),e.guid=t.guid,e},e.prototype.off=function(t,e){return i(this).off(t,e),this},e.prototype.trigger=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return i(this).triggerHandler(t,{args:e}),this},e.prototype.triggerWith=function(t,e,n){return i(this).triggerHandler(t,{context:e,args:n}),this},e.prototype.hasHandlers=function(t){var e=i._data(this,"events");return e&&e[t]&&e[t].length>0},e}(o.default);e.default=s},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this.view=t._getView(),this.component=t}return t.prototype.opt=function(t){return this.view.opt(t)},t.prototype.end=function(){},t}();e.default=n},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(){}return t.mixInto=function(t){var e=this;Object.getOwnPropertyNames(this.prototype).forEach(function(n){t.prototype[n]||(t.prototype[n]=e.prototype[n])})},t.mixOver=function(t){var e=this;Object.getOwnPropertyNames(this.prototype).forEach(function(n){t.prototype[n]=e.prototype[n]})},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(5),i=function(){function t(t,e,n){this.start=t,this.end=e||null,this.unzonedRange=this.buildUnzonedRange(n)}return t.parse=function(e,n){var r=e.start||e.date,i=e.end;if(!r)return!1;var o=n.calendar,s=o.moment(r),a=i?o.moment(i):null,l=e.allDay,u=o.opt("forceEventDuration");return!!s.isValid()&&(null==l&&null==(l=n.allDayDefault)&&(l=o.opt("allDayDefault")),!0===l?(s.stripTime(),a&&a.stripTime()):!1===l&&(s.hasTime()||s.time(0),a&&!a.hasTime()&&a.time(0)),!a||a.isValid()&&a.isAfter(s)||(a=null),!a&&u&&(a=o.getDefaultEventEnd(!s.hasTime(),s)),new t(s,a,o))},t.isStandardProp=function(t){return"start"===t||"date"===t||"end"===t||"allDay"===t},t.prototype.isAllDay=function(){return!(this.start.hasTime()||this.end&&this.end.hasTime())},t.prototype.buildUnzonedRange=function(t){var e=this.start.clone().stripZone().valueOf(),n=this.getEnd(t).stripZone().valueOf();return new r.default(e,n)},t.prototype.getEnd=function(t){return this.end?this.end.clone():t.getDefaultEventEnd(this.isAllDay(),this.start)},t}();e.default=i},function(t,e,n){function r(t,e){return!t&&!e||!(!t||!e)&&(t.component===e.component&&i(t,e)&&i(e,t))}function i(t,e){for(var n in t)if(!/^(component|left|right|top|bottom)$/.test(n)&&t[n]!==e[n])return!1;return!0}Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),s=n(4),a=n(59),l=function(t){function e(e,n){var r=t.call(this,n)||this;return r.component=e,r}return o.__extends(e,t),e.prototype.handleInteractionStart=function(e){var n,r,i,o=this.subjectEl;this.component.hitsNeeded(),this.computeScrollBounds(),e?(r={left:s.getEvX(e),top:s.getEvY(e)},i=r,o&&(n=s.getOuterRect(o),i=s.constrainPoint(i,n)),this.origHit=this.queryHit(i.left,i.top),o&&this.options.subjectCenter&&(this.origHit&&(n=s.intersectRects(this.origHit,n)||n),i=s.getRectCenter(n)),this.coordAdjust=s.diffPoints(i,r)):(this.origHit=null,this.coordAdjust=null),t.prototype.handleInteractionStart.call(this,e)},e.prototype.handleDragStart=function(e){var n;t.prototype.handleDragStart.call(this,e),(n=this.queryHit(s.getEvX(e),s.getEvY(e)))&&this.handleHitOver(n)},e.prototype.handleDrag=function(e,n,i){var o;t.prototype.handleDrag.call(this,e,n,i),o=this.queryHit(s.getEvX(i),s.getEvY(i)),r(o,this.hit)||(this.hit&&this.handleHitOut(),o&&this.handleHitOver(o))},e.prototype.handleDragEnd=function(e){this.handleHitDone(),t.prototype.handleDragEnd.call(this,e)},e.prototype.handleHitOver=function(t){var e=r(t,this.origHit);this.hit=t,this.trigger("hitOver",this.hit,e,this.origHit)},e.prototype.handleHitOut=function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},e.prototype.handleHitDone=function(){this.hit&&this.trigger("hitDone",this.hit)},e.prototype.handleInteractionEnd=function(e,n){t.prototype.handleInteractionEnd.call(this,e,n),this.origHit=null,this.hit=null,this.component.hitsNotNeeded()},e.prototype.handleScrollEnd=function(){t.prototype.handleScrollEnd.call(this),this.isDragging&&(this.component.releaseHits(),this.component.prepareHits())},e.prototype.queryHit=function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)},e}(a.default);e.default=l},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0}),e.version="3.10.2",e.internalApiVersion=12;var r=n(4);e.applyAll=r.applyAll,e.debounce=r.debounce,e.isInt=r.isInt,e.htmlEscape=r.htmlEscape,e.cssToStr=r.cssToStr,e.proxy=r.proxy,e.capitaliseFirstLetter=r.capitaliseFirstLetter,e.getOuterRect=r.getOuterRect,e.getClientRect=r.getClientRect,e.getContentRect=r.getContentRect,e.getScrollbarWidths=r.getScrollbarWidths,e.preventDefault=r.preventDefault,e.parseFieldSpecs=r.parseFieldSpecs,e.compareByFieldSpecs=r.compareByFieldSpecs,e.compareByFieldSpec=r.compareByFieldSpec,e.flexibleCompare=r.flexibleCompare,e.computeGreatestUnit=r.computeGreatestUnit,e.divideRangeByDuration=r.divideRangeByDuration,e.divideDurationByDuration=r.divideDurationByDuration,e.multiplyDuration=r.multiplyDuration,e.durationHasTime=r.durationHasTime,e.log=r.log,e.warn=r.warn,e.removeExact=r.removeExact,e.intersectRects=r.intersectRects,e.allowSelection=r.allowSelection,e.attrsToStr=r.attrsToStr,e.compareNumbers=r.compareNumbers,e.compensateScroll=r.compensateScroll,e.computeDurationGreatestUnit=r.computeDurationGreatestUnit,e.constrainPoint=r.constrainPoint,e.copyOwnProps=r.copyOwnProps,e.diffByUnit=r.diffByUnit,e.diffDay=r.diffDay,e.diffDayTime=r.diffDayTime,e.diffPoints=r.diffPoints,e.disableCursor=r.disableCursor,e.distributeHeight=r.distributeHeight,e.enableCursor=r.enableCursor,e.firstDefined=r.firstDefined,e.getEvIsTouch=r.getEvIsTouch,e.getEvX=r.getEvX,e.getEvY=r.getEvY,e.getRectCenter=r.getRectCenter,e.getScrollParent=r.getScrollParent,e.hasOwnProp=r.hasOwnProp,e.isArraysEqual=r.isArraysEqual,e.isNativeDate=r.isNativeDate,e.isPrimaryMouseButton=r.isPrimaryMouseButton,e.isTimeString=r.isTimeString,e.matchCellWidths=r.matchCellWidths,e.mergeProps=r.mergeProps,e.preventSelection=r.preventSelection,e.removeMatching=r.removeMatching,e.stripHtmlEntities=r.stripHtmlEntities,e.subtractInnerElHeight=r.subtractInnerElHeight,e.uncompensateScroll=r.uncompensateScroll,e.undistributeHeight=r.undistributeHeight,e.dayIDs=r.dayIDs,e.unitsDesc=r.unitsDesc;var i=n(49);e.formatDate=i.formatDate,e.formatRange=i.formatRange,e.queryMostGranularFormatUnit=i.queryMostGranularFormatUnit;var o=n(32);e.datepickerLocale=o.datepickerLocale,e.locale=o.locale,e.getMomentLocaleData=o.getMomentLocaleData,e.populateInstanceComputableOptions=o.populateInstanceComputableOptions;var s=n(19);e.eventDefsToEventInstances=s.eventDefsToEventInstances,e.eventFootprintToComponentFootprint=s.eventFootprintToComponentFootprint,e.eventInstanceToEventRange=s.eventInstanceToEventRange,e.eventInstanceToUnzonedRange=s.eventInstanceToUnzonedRange,e.eventRangeToEventFootprint=s.eventRangeToEventFootprint;var a=n(11);e.moment=a.default;var l=n(13);e.EmitterMixin=l.default;var u=n(7);e.ListenerMixin=u.default;var d=n(51);e.Model=d.default;var c=n(217);e.Constraints=c.default;var p=n(55);e.DateProfileGenerator=p.default;var h=n(5);e.UnzonedRange=h.default;var f=n(12);e.ComponentFootprint=f.default;var g=n(218);e.BusinessHourGenerator=g.default;var v=n(219);e.EventPeriod=v.default;var y=n(220);e.EventManager=y.default;var m=n(37);e.EventDef=m.default;var b=n(39);e.EventDefMutation=b.default;var w=n(36);e.EventDefParser=w.default;var D=n(53);e.EventInstance=D.default;var E=n(50);e.EventRange=E.default;var S=n(54);e.RecurringEventDef=S.default;var C=n(9);e.SingleEventDef=C.default;var R=n(40);e.EventDefDateMutation=R.default;var T=n(16);e.EventDateProfile=T.default;var M=n(38);e.EventSourceParser=M.default;var I=n(6);e.EventSource=I.default;var H=n(57);e.defineThemeSystem=H.defineThemeSystem,e.getThemeSystemClass=H.getThemeSystemClass;var P=n(20);e.EventInstanceGroup=P.default;var _=n(56);e.ArrayEventSource=_.default;var x=n(223);e.FuncEventSource=x.default;var O=n(224);e.JsonFeedEventSource=O.default;var F=n(34);e.EventFootprint=F.default;var z=n(35);e.Class=z.default;var B=n(15);e.Mixin=B.default;var A=n(58);e.CoordCache=A.default;var k=n(225);e.Iterator=k.default;var L=n(59);e.DragListener=L.default;var V=n(17);e.HitDragListener=V.default;var G=n(226);e.MouseFollower=G.default;var N=n(52);e.ParsableModelMixin=N.default;var j=n(227);e.Popover=j.default;var U=n(21);e.Promise=U.default;var W=n(228);e.TaskQueue=W.default;var q=n(229);e.RenderQueue=q.default;var Y=n(41);e.Scroller=Y.default;var Z=n(22);e.Theme=Z.default;var X=n(230);e.Component=X.default;var Q=n(231);e.DateComponent=Q.default;var $=n(42);e.InteractiveDateComponent=$.default;var K=n(232);e.Calendar=K.default;var J=n(43);e.View=J.default;var tt=n(24);e.defineView=tt.defineView,e.getViewConfig=tt.getViewConfig;var et=n(60);e.DayTableMixin=et.default;var nt=n(61);e.BusinessHourRenderer=nt.default;var rt=n(44);e.EventRenderer=rt.default;var it=n(62);e.FillRenderer=it.default;var ot=n(63);e.HelperRenderer=ot.default;var st=n(233);e.ExternalDropping=st.default;var at=n(234);e.EventResizing=at.default;var lt=n(64);e.EventPointing=lt.default;var ut=n(235);e.EventDragging=ut.default;var dt=n(236);e.DateSelecting=dt.default;var ct=n(237);e.DateClicking=ct.default;var pt=n(14);e.Interaction=pt.default;var ht=n(65);e.StandardInteractionsMixin=ht.default;var ft=n(238);e.AgendaView=ft.default;var gt=n(239);e.TimeGrid=gt.default;var vt=n(240);e.TimeGridEventRenderer=vt.default;var yt=n(242);e.TimeGridFillRenderer=yt.default;var mt=n(241);e.TimeGridHelperRenderer=mt.default;var bt=n(66);e.DayGrid=bt.default;var wt=n(243);e.DayGridEventRenderer=wt.default;var Dt=n(245);e.DayGridFillRenderer=Dt.default;var Et=n(244);e.DayGridHelperRenderer=Et.default;var St=n(67);e.BasicView=St.default;var Ct=n(68);e.BasicViewDateProfileGenerator=Ct.default;var Rt=n(246);e.MonthView=Rt.default;var Tt=n(247);e.MonthViewDateProfileGenerator=Tt.default;var Mt=n(248);e.ListView=Mt.default;var It=n(250);e.ListEventPointing=It.default;var Ht=n(249);e.ListEventRenderer=Ht.default},function(t,e,n){function r(t,e){var n,r=[];for(n=0;n<t.length;n++)r.push.apply(r,t[n].buildInstances(e));return r}function i(t){return new l.default(t.dateProfile.unzonedRange,t.def,t)}function o(t){return new u.default(new d.default(t.unzonedRange,t.eventDef.isAllDay()),t.eventDef,t.eventInstance)}function s(t){return t.dateProfile.unzonedRange}function a(t){return t.componentFootprint}Object.defineProperty(e,"__esModule",{value:!0});var l=n(50),u=n(34),d=n(12);e.eventDefsToEventInstances=r,e.eventInstanceToEventRange=i,e.eventRangeToEventFootprint=o,e.eventInstanceToUnzonedRange=s,e.eventFootprintToComponentFootprint=a},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(5),i=n(19),o=n(50),s=function(){function t(t){this.eventInstances=t||[]}return t.prototype.getAllEventRanges=function(t){return t?this.sliceNormalRenderRanges(t):this.eventInstances.map(i.eventInstanceToEventRange)},t.prototype.sliceRenderRanges=function(t){return this.isInverse()?this.sliceInverseRenderRanges(t):this.sliceNormalRenderRanges(t)},t.prototype.sliceNormalRenderRanges=function(t){var e,n,r,i=this.eventInstances,s=[];for(e=0;e<i.length;e++)n=i[e],(r=n.dateProfile.unzonedRange.intersect(t))&&s.push(new o.default(r,n.def,n));return s},t.prototype.sliceInverseRenderRanges=function(t){var e=this.eventInstances.map(i.eventInstanceToUnzonedRange),n=this.getEventDef();return e=r.default.invertRanges(e,t),e.map(function(t){return new o.default(t,n)})},t.prototype.isInverse=function(){return this.getEventDef().hasInverseRendering()},t.prototype.getEventDef=function(){return this.explicitEventDef||this.eventInstances[0].def},t}();e.default=s},function(t,e,n){function r(t,e){t.then=function(n){return"function"==typeof n?s.resolve(n(e)):t}}function i(t){t.then=function(e,n){return"function"==typeof n&&n(),t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(3),s={construct:function(t){var e=o.Deferred(),n=e.promise();return"function"==typeof t&&t(function(t){e.resolve(t),r(n,t)},function(){e.reject(),i(n)}),n},resolve:function(t){var e=o.Deferred().resolve(t),n=e.promise();return r(n,t),n},reject:function(){var t=o.Deferred().reject(),e=t.promise();return i(e),e}};e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=function(){function t(t){this.optionsManager=t,this.processIconOverride()}return t.prototype.processIconOverride=function(){this.iconOverrideOption&&this.setIconOverride(this.optionsManager.get(this.iconOverrideOption))},t.prototype.setIconOverride=function(t){var e,n;if(r.isPlainObject(t)){e=r.extend({},this.iconClasses);for(n in t)e[n]=this.applyIconOverridePrefix(t[n]);this.iconClasses=e}else!1===t&&(this.iconClasses={})},t.prototype.applyIconOverridePrefix=function(t){var e=this.iconOverridePrefix;return e&&0!==t.indexOf(e)&&(t=e+t),t},t.prototype.getClass=function(t){return this.classes[t]||""},t.prototype.getIconClass=function(t){var e=this.iconClasses[t];return e?this.baseIconClass+" "+e:""},t.prototype.getCustomButtonIconClass=function(t){var e;return this.iconOverrideCustomButtonOption&&(e=t[this.iconOverrideCustomButtonOption])?this.baseIconClass+" "+this.applyIconOverridePrefix(e):""},t}();e.default=i,i.prototype.classes={},i.prototype.iconClasses={},i.prototype.baseIconClass="",i.prototype.iconOverridePrefix=""},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(18),o=n(13),s=n(7);i.touchMouseIgnoreWait=500;var a=null,l=0,u=function(){function t(){this.isTouching=!1,this.mouseIgnoreDepth=0}return t.get=function(){return a||(a=new t,a.bind()),a},t.needed=function(){t.get(),l++},t.unneeded=function(){--l||(a.unbind(),a=null)},t.prototype.bind=function(){var t=this;this.listenTo(r(document),{touchstart:this.handleTouchStart, touchcancel:this.handleTouchCancel,touchend:this.handleTouchEnd,mousedown:this.handleMouseDown,mousemove:this.handleMouseMove,mouseup:this.handleMouseUp,click:this.handleClick,selectstart:this.handleSelectStart,contextmenu:this.handleContextMenu}),window.addEventListener("touchmove",this.handleTouchMoveProxy=function(e){t.handleTouchMove(r.Event(e))},{passive:!1}),window.addEventListener("scroll",this.handleScrollProxy=function(e){t.handleScroll(r.Event(e))},!0)},t.prototype.unbind=function(){this.stopListeningTo(r(document)),window.removeEventListener("touchmove",this.handleTouchMoveProxy,{passive:!1}),window.removeEventListener("scroll",this.handleScrollProxy,!0)},t.prototype.handleTouchStart=function(t){this.stopTouch(t,!0),this.isTouching=!0,this.trigger("touchstart",t)},t.prototype.handleTouchMove=function(t){this.isTouching&&this.trigger("touchmove",t)},t.prototype.handleTouchCancel=function(t){this.isTouching&&(this.trigger("touchcancel",t),this.stopTouch(t))},t.prototype.handleTouchEnd=function(t){this.stopTouch(t)},t.prototype.handleMouseDown=function(t){this.shouldIgnoreMouse()||this.trigger("mousedown",t)},t.prototype.handleMouseMove=function(t){this.shouldIgnoreMouse()||this.trigger("mousemove",t)},t.prototype.handleMouseUp=function(t){this.shouldIgnoreMouse()||this.trigger("mouseup",t)},t.prototype.handleClick=function(t){this.shouldIgnoreMouse()||this.trigger("click",t)},t.prototype.handleSelectStart=function(t){this.trigger("selectstart",t)},t.prototype.handleContextMenu=function(t){this.trigger("contextmenu",t)},t.prototype.handleScroll=function(t){this.trigger("scroll",t)},t.prototype.stopTouch=function(t,e){void 0===e&&(e=!1),this.isTouching&&(this.isTouching=!1,this.trigger("touchend",t),e||this.startTouchMouseIgnore())},t.prototype.startTouchMouseIgnore=function(){var t=this,e=i.touchMouseIgnoreWait;e&&(this.mouseIgnoreDepth++,setTimeout(function(){t.mouseIgnoreDepth--},e))},t.prototype.shouldIgnoreMouse=function(){return this.isTouching||Boolean(this.mouseIgnoreDepth)},t}();e.default=u,s.default.mixInto(u),o.default.mixInto(u)},function(t,e,n){function r(t,n){e.viewHash[t]=n}function i(t){return e.viewHash[t]}Object.defineProperty(e,"__esModule",{value:!0});var o=n(18);e.viewHash={},o.views=e.viewHash,e.defineView=r,e.getViewConfig=i},,,,,,,,function(t,e,n){function r(t){a.each(f,function(e,n){null==t[e]&&(t[e]=n(t))})}function i(t,n,r){var i=e.localeOptionHash[t]||(e.localeOptionHash[t]={});i.isRTL=r.isRTL,i.weekNumberTitle=r.weekHeader,a.each(p,function(t,e){i[t]=e(r)});var o=a.datepicker;o&&(o.regional[n]=o.regional[t]=r,o.regional.en=o.regional[""],o.setDefaults(r))}function o(t,n){var r,i;r=e.localeOptionHash[t]||(e.localeOptionHash[t]={}),n&&(r=e.localeOptionHash[t]=d.mergeOptions([r,n])),i=s(t),a.each(h,function(t,e){null==r[t]&&(r[t]=e(i,r))}),d.globalDefaults.locale=t}function s(t){return l.localeData(t)||l.localeData("en")}Object.defineProperty(e,"__esModule",{value:!0});var a=n(3),l=n(0),u=n(18),d=n(33),c=n(4);e.localeOptionHash={},u.locales=e.localeOptionHash;var p={buttonText:function(t){return{prev:c.stripHtmlEntities(t.prevText),next:c.stripHtmlEntities(t.nextText),today:c.stripHtmlEntities(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?"YYYY["+t.yearSuffix+"] MMMM":"MMMM YYYY["+t.yearSuffix+"]"}},h={dayOfMonthFormat:function(t,e){var n=t.longDateFormat("l");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),e.isRTL?n+=" ddd":n="ddd "+n,n},mediumTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(t){return t.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"")}},f={smallDayDateFormat:function(t){return t.isRTL?"D dd":"dd D"},weekFormat:function(t){return t.isRTL?"w[ "+t.weekNumberTitle+"]":"["+t.weekNumberTitle+" ]w"},smallWeekFormat:function(t){return t.isRTL?"w["+t.weekNumberTitle+"]":"["+t.weekNumberTitle+"]w"}};e.populateInstanceComputableOptions=r,e.datepickerLocale=i,e.locale=o,e.getMomentLocaleData=s,o("en",d.englishDefaults)},function(t,e,n){function r(t){return i.mergeProps(t,o)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(4);e.globalDefaults={titleRangeSeparator:" – ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",columnHeader:!0,defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",minTime:"00:00:00",maxTime:"24:00:00",showNonCurrentDates:!0,lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,locale:null,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},allDayText:"all-day",agendaEventMinHeight:0,theme:!1,dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3},e.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},e.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var o=["header","footer","buttonText","buttonIcons","themeButtonIcons"];e.mergeOptions=r},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e,n){this.componentFootprint=t,this.eventDef=e,n&&(this.eventInstance=n)}return t.prototype.getEventLegacy=function(){return(this.eventInstance||this.eventDef).toLegacy()},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=function(){function t(){}return t.extend=function(t){var e=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(this);return i.copyOwnProps(t,e.prototype),e},t.mixin=function(t){i.copyOwnProps(t,this.prototype)},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(0),i=n(4),o=n(9),s=n(54);e.default={parse:function(t,e){return i.isTimeString(t.start)||r.isDuration(t.start)||i.isTimeString(t.end)||r.isDuration(t.end)?s.default.parse(t,e):o.default.parse(t,e)}}},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(52),o=function(){function t(t){this.source=t,this.className=[],this.miscProps={}}return t.parse=function(t,e){var n=new this(e);return!!n.applyProps(t)&&n},t.normalizeId=function(t){return String(t)},t.generateId=function(){return"_fc"+t.uuid++},t.prototype.clone=function(){var e=new this.constructor(this.source);return e.id=this.id,e.rawId=this.rawId,e.uid=this.uid,t.copyVerbatimStandardProps(this,e),e.className=this.className.slice(),e.miscProps=r.extend({},this.miscProps),e},t.prototype.hasInverseRendering=function(){return"inverse-background"===this.getRendering()},t.prototype.hasBgRendering=function(){var t=this.getRendering();return"inverse-background"===t||"background"===t},t.prototype.getRendering=function(){return null!=this.rendering?this.rendering:this.source.rendering},t.prototype.getConstraint=function(){return null!=this.constraint?this.constraint:null!=this.source.constraint?this.source.constraint:this.source.calendar.opt("eventConstraint")},t.prototype.getOverlap=function(){return null!=this.overlap?this.overlap:null!=this.source.overlap?this.source.overlap:this.source.calendar.opt("eventOverlap")},t.prototype.isStartExplicitlyEditable=function(){return null!=this.startEditable?this.startEditable:this.source.startEditable},t.prototype.isDurationExplicitlyEditable=function(){return null!=this.durationEditable?this.durationEditable:this.source.durationEditable},t.prototype.isExplicitlyEditable=function(){return null!=this.editable?this.editable:this.source.editable},t.prototype.toLegacy=function(){var e=r.extend({},this.miscProps);return e._id=this.uid,e.source=this.source,e.className=this.className.slice(),e.allDay=this.isAllDay(),null!=this.rawId&&(e.id=this.rawId),t.copyVerbatimStandardProps(this,e),e},t.prototype.applyManualStandardProps=function(e){return null!=e.id?this.id=t.normalizeId(this.rawId=e.id):this.id=t.generateId(),null!=e._id?this.uid=String(e._id):this.uid=t.generateId(),r.isArray(e.className)&&(this.className=e.className),"string"==typeof e.className&&(this.className=e.className.split(/\s+/)),!0},t.prototype.applyMiscProps=function(t){r.extend(this.miscProps,t)},t.uuid=0,t.defineStandardProps=i.default.defineStandardProps,t.copyVerbatimStandardProps=i.default.copyVerbatimStandardProps,t}();e.default=o,i.default.mixInto(o),o.defineStandardProps({_id:!1,id:!1,className:!1,source:!1,title:!0,url:!0,rendering:!0,constraint:!0,overlap:!0,editable:!0,startEditable:!0,durationEditable:!0,color:!0,backgroundColor:!0,borderColor:!0,textColor:!0})},function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default={sourceClasses:[],registerClass:function(t){this.sourceClasses.unshift(t)},parse:function(t,e){var n,r,i=this.sourceClasses;for(n=0;n<i.length;n++)if(r=i[n].parse(t,e))return r}}},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(4),i=n(16),o=n(37),s=n(40),a=n(9),l=function(){function t(){}return t.createFromRawProps=function(e,n,a){var l,u,d,c,p=e.def,h={},f={},g={},v={},y=null,m=null;for(l in n)i.default.isStandardProp(l)?h[l]=n[l]:p.isStandardProp(l)?f[l]=n[l]:p.miscProps[l]!==n[l]&&(g[l]=n[l]);return u=i.default.parse(h,p.source),u&&(d=s.default.createFromDiff(e.dateProfile,u,a)),f.id!==p.id&&(y=f.id),r.isArraysEqual(f.className,p.className)||(m=f.className),o.default.copyVerbatimStandardProps(f,v),c=new t,c.eventDefId=y,c.className=m,c.verbatimStandardProps=v,c.miscProps=g,d&&(c.dateMutation=d),c},t.prototype.mutateSingle=function(t){var e;return this.dateMutation&&(e=t.dateProfile,t.dateProfile=this.dateMutation.buildNewDateProfile(e,t.source.calendar)),null!=this.eventDefId&&(t.id=o.default.normalizeId(t.rawId=this.eventDefId)),this.className&&(t.className=this.className),this.verbatimStandardProps&&a.default.copyVerbatimStandardProps(this.verbatimStandardProps,t),this.miscProps&&t.applyMiscProps(this.miscProps),e?function(){t.dateProfile=e}:function(){}},t.prototype.setDateMutation=function(t){t&&!t.isEmpty()?this.dateMutation=t:this.dateMutation=null},t.prototype.isEmpty=function(){return!this.dateMutation},t}();e.default=l},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(4),i=n(16),o=function(){function t(){this.clearEnd=!1,this.forceTimed=!1,this.forceAllDay=!1}return t.createFromDiff=function(e,n,i){function o(t,e){return i?r.diffByUnit(t,e,i):n.isAllDay()?r.diffDay(t,e):r.diffDayTime(t,e)}var s,a,l,u,d=e.end&&!n.end,c=e.isAllDay()&&!n.isAllDay(),p=!e.isAllDay()&&n.isAllDay();return s=o(n.start,e.start),n.end&&(a=o(n.unzonedRange.getEnd(),e.unzonedRange.getEnd()),l=a.subtract(s)),u=new t,u.clearEnd=d,u.forceTimed=c,u.forceAllDay=p,u.setDateDelta(s),u.setEndDelta(l),u},t.prototype.buildNewDateProfile=function(t,e){var n=t.start.clone(),r=null,o=!1;return t.end&&!this.clearEnd?r=t.end.clone():this.endDelta&&!r&&(r=e.getDefaultEventEnd(t.isAllDay(),n)),this.forceTimed?(o=!0,n.hasTime()||n.time(0),r&&!r.hasTime()&&r.time(0)):this.forceAllDay&&(n.hasTime()&&n.stripTime(),r&&r.hasTime()&&r.stripTime()),this.dateDelta&&(o=!0,n.add(this.dateDelta),r&&r.add(this.dateDelta)),this.endDelta&&(o=!0,r.add(this.endDelta)),this.startDelta&&(o=!0,n.add(this.startDelta)),o&&(n=e.applyTimezone(n),r&&(r=e.applyTimezone(r))),!r&&e.opt("forceEventDuration")&&(r=e.getDefaultEventEnd(t.isAllDay(),n)),new i.default(n,r,e)},t.prototype.setDateDelta=function(t){t&&t.valueOf()?this.dateDelta=t:this.dateDelta=null},t.prototype.setStartDelta=function(t){t&&t.valueOf()?this.startDelta=t:this.startDelta=null},t.prototype.setEndDelta=function(t){t&&t.valueOf()?this.endDelta=t:this.endDelta=null},t.prototype.isEmpty=function(){return!(this.clearEnd||this.forceTimed||this.forceAllDay||this.dateDelta||this.startDelta||this.endDelta)},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(35),a=function(t){function e(e){var n=t.call(this)||this;return e=e||{},n.overflowX=e.overflowX||e.overflow||"auto",n.overflowY=e.overflowY||e.overflow||"auto",n}return r.__extends(e,t),e.prototype.render=function(){this.el=this.renderEl(),this.applyOverflow()},e.prototype.renderEl=function(){return this.scrollEl=i('<div class="fc-scroller"></div>')},e.prototype.clear=function(){this.setHeight("auto"),this.applyOverflow()},e.prototype.destroy=function(){this.el.remove()},e.prototype.applyOverflow=function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},e.prototype.lockOverflow=function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),"auto"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":e,"overflow-y":n})},e.prototype.setHeight=function(t){this.scrollEl.height(t)},e.prototype.getScrollTop=function(){return this.scrollEl.scrollTop()},e.prototype.setScrollTop=function(t){this.scrollEl.scrollTop(t)},e.prototype.getClientWidth=function(){return this.scrollEl[0].clientWidth},e.prototype.getClientHeight=function(){return this.scrollEl[0].clientHeight},e.prototype.getScrollbarWidths=function(){return o.getScrollbarWidths(this.scrollEl)},e}(s.default);e.default=a},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(231),a=n(23),l=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.segSelector=".fc-event-container > *",r.dateSelectingClass&&(r.dateClicking=new r.dateClickingClass(r)),r.dateSelectingClass&&(r.dateSelecting=new r.dateSelectingClass(r)),r.eventPointingClass&&(r.eventPointing=new r.eventPointingClass(r)),r.eventDraggingClass&&r.eventPointing&&(r.eventDragging=new r.eventDraggingClass(r,r.eventPointing)),r.eventResizingClass&&r.eventPointing&&(r.eventResizing=new r.eventResizingClass(r,r.eventPointing)),r.externalDroppingClass&&(r.externalDropping=new r.externalDroppingClass(r)),r}return r.__extends(e,t),e.prototype.setElement=function(e){t.prototype.setElement.call(this,e),this.dateClicking&&this.dateClicking.bindToEl(e),this.dateSelecting&&this.dateSelecting.bindToEl(e),this.bindAllSegHandlersToEl(e)},e.prototype.removeElement=function(){this.endInteractions(),t.prototype.removeElement.call(this)},e.prototype.executeEventUnrender=function(){this.endInteractions(),t.prototype.executeEventUnrender.call(this)},e.prototype.bindGlobalHandlers=function(){t.prototype.bindGlobalHandlers.call(this),this.externalDropping&&this.externalDropping.bindToDocument()},e.prototype.unbindGlobalHandlers=function(){t.prototype.unbindGlobalHandlers.call(this),this.externalDropping&&this.externalDropping.unbindFromDocument()},e.prototype.bindDateHandlerToEl=function(t,e,n){var r=this;this.el.on(e,function(t){if(!i(t.target).is(r.segSelector+":not(.fc-helper),"+r.segSelector+":not(.fc-helper) *,.fc-more,a[data-goto]"))return n.call(r,t)})},e.prototype.bindAllSegHandlersToEl=function(t){[this.eventPointing,this.eventDragging,this.eventResizing].forEach(function(e){e&&e.bindToEl(t)})},e.prototype.bindSegHandlerToEl=function(t,e,n){var r=this;t.on(e,this.segSelector,function(t){var e=i(t.currentTarget);if(!e.is(".fc-helper")){var o=e.data("fc-seg");if(o&&!r.shouldIgnoreEventPointing())return n.call(r,o,t)}})},e.prototype.shouldIgnoreMouse=function(){return a.default.get().shouldIgnoreMouse()},e.prototype.shouldIgnoreTouch=function(){var t=this._getView();return t.isSelected||t.selectedEvent},e.prototype.shouldIgnoreEventPointing=function(){return this.eventDragging&&this.eventDragging.isDragging||this.eventResizing&&this.eventResizing.isResizing},e.prototype.canStartSelection=function(t,e){return o.getEvIsTouch(e)&&!this.canStartResize(t,e)&&(this.isEventDefDraggable(t.footprint.eventDef)||this.isEventDefResizable(t.footprint.eventDef))},e.prototype.canStartDrag=function(t,e){return!this.canStartResize(t,e)&&this.isEventDefDraggable(t.footprint.eventDef)},e.prototype.canStartResize=function(t,e){var n=this._getView(),r=t.footprint.eventDef;return(!o.getEvIsTouch(e)||n.isEventDefSelected(r))&&this.isEventDefResizable(r)&&i(e.target).is(".fc-resizer")},e.prototype.endInteractions=function(){[this.dateClicking,this.dateSelecting,this.eventPointing,this.eventDragging,this.eventResizing].forEach(function(t){t&&t.end()})},e.prototype.isEventDefDraggable=function(t){return this.isEventDefStartEditable(t)},e.prototype.isEventDefStartEditable=function(t){var e=t.isStartExplicitlyEditable();return null==e&&null==(e=this.opt("eventStartEditable"))&&(e=this.isEventDefGenerallyEditable(t)),e},e.prototype.isEventDefGenerallyEditable=function(t){var e=t.isExplicitlyEditable();return null==e&&(e=this.opt("editable")),e},e.prototype.isEventDefResizableFromStart=function(t){return this.opt("eventResizableFromStart")&&this.isEventDefResizable(t)},e.prototype.isEventDefResizableFromEnd=function(t){return this.isEventDefResizable(t)},e.prototype.isEventDefResizable=function(t){var e=t.isDurationExplicitlyEditable();return null==e&&null==(e=this.opt("eventDurationEditable"))&&(e=this.isEventDefGenerallyEditable(t)),e},e.prototype.diffDates=function(t,e){return this.largeUnit?o.diffByUnit(t,e,this.largeUnit):o.diffDayTime(t,e)},e.prototype.isEventInstanceGroupAllowed=function(t){var e,n=this._getView(),r=this.dateProfile,i=this.eventRangesToEventFootprints(t.getAllEventRanges());for(e=0;e<i.length;e++)if(!r.validUnzonedRange.containsRange(i[e].componentFootprint.unzonedRange))return!1;return n.calendar.constraints.isEventInstanceGroupAllowed(t)},e.prototype.isExternalInstanceGroupAllowed=function(t){var e,n=this._getView(),r=this.dateProfile,i=this.eventRangesToEventFootprints(t.getAllEventRanges());for(e=0;e<i.length;e++)if(!r.validUnzonedRange.containsRange(i[e].componentFootprint.unzonedRange))return!1;for(e=0;e<i.length;e++)if(!n.calendar.constraints.isSelectionFootprintAllowed(i[e].componentFootprint))return!1;return!0},e}(s.default);e.default=l},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(0),s=n(4),a=n(229),l=n(55),u=n(42),d=n(23),c=n(5),p=function(t){function e(e,n){var r=t.call(this,null,n.options)||this;return r.batchRenderDepth=0,r.isSelected=!1,r.calendar=e,r.viewSpec=n,r.type=n.type,r.name=r.type,r.initRenderQueue(),r.initHiddenDays(),r.dateProfileGenerator=new r.dateProfileGeneratorClass(r),r.bindBaseRenderHandlers(),r.eventOrderSpecs=s.parseFieldSpecs(r.opt("eventOrder")),r.initialize&&r.initialize(),r}return r.__extends(e,t),e.prototype._getView=function(){return this},e.prototype.opt=function(t){return this.options[t]},e.prototype.initRenderQueue=function(){this.renderQueue=new a.default({event:this.opt("eventRenderWait")}),this.renderQueue.on("start",this.onRenderQueueStart.bind(this)),this.renderQueue.on("stop",this.onRenderQueueStop.bind(this)),this.on("before:change",this.startBatchRender),this.on("change",this.stopBatchRender)},e.prototype.onRenderQueueStart=function(){this.calendar.freezeContentHeight(),this.addScroll(this.queryScroll())},e.prototype.onRenderQueueStop=function(){this.calendar.updateViewSize()&&this.popScroll(),this.calendar.thawContentHeight()},e.prototype.startBatchRender=function(){this.batchRenderDepth++||this.renderQueue.pause()},e.prototype.stopBatchRender=function(){--this.batchRenderDepth||this.renderQueue.resume()},e.prototype.requestRender=function(t,e,n){this.renderQueue.queue(t,e,n)},e.prototype.whenSizeUpdated=function(t){this.renderQueue.isRunning?this.renderQueue.one("stop",t.bind(this)):t.call(this)},e.prototype.computeTitle=function(t){var e;return e=/^(year|month)$/.test(t.currentRangeUnit)?t.currentUnzonedRange:t.activeUnzonedRange,this.formatRange({start:this.calendar.msToMoment(e.startMs,t.isRangeAllDay),end:this.calendar.msToMoment(e.endMs,t.isRangeAllDay)},t.isRangeAllDay,this.opt("titleFormat")||this.computeTitleFormat(t),this.opt("titleRangeSeparator"))},e.prototype.computeTitleFormat=function(t){var e=t.currentRangeUnit;return"year"===e?"YYYY":"month"===e?this.opt("monthYearFormat"):t.currentUnzonedRange.as("days")>1?"ll":"LL"},e.prototype.setDate=function(t){var e=this.get("dateProfile"),n=this.dateProfileGenerator.build(t,void 0,!0);e&&e.activeUnzonedRange.equals(n.activeUnzonedRange)||this.set("dateProfile",n)},e.prototype.unsetDate=function(){this.unset("dateProfile")},e.prototype.fetchInitialEvents=function(t){var e=this.calendar,n=t.isRangeAllDay&&!this.usesMinMaxTime;return e.requestEvents(e.msToMoment(t.activeUnzonedRange.startMs,n),e.msToMoment(t.activeUnzonedRange.endMs,n))},e.prototype.bindEventChanges=function(){this.listenTo(this.calendar,"eventsReset",this.resetEvents)},e.prototype.unbindEventChanges=function(){this.stopListeningTo(this.calendar,"eventsReset")},e.prototype.setEvents=function(t){this.set("currentEvents",t),this.set("hasEvents",!0)},e.prototype.unsetEvents=function(){this.unset("currentEvents"),this.unset("hasEvents")},e.prototype.resetEvents=function(t){this.startBatchRender(),this.unsetEvents(),this.setEvents(t),this.stopBatchRender()},e.prototype.requestDateRender=function(t){var e=this;this.requestRender(function(){e.executeDateRender(t)},"date","init")},e.prototype.requestDateUnrender=function(){var t=this;this.requestRender(function(){t.executeDateUnrender()},"date","destroy")},e.prototype.executeDateRender=function(e){t.prototype.executeDateRender.call(this,e),this.render&&this.render(),this.trigger("datesRendered"),this.addScroll({isDateInit:!0}),this.startNowIndicator()},e.prototype.executeDateUnrender=function(){this.unselect(),this.stopNowIndicator(),this.trigger("before:datesUnrendered"),this.destroy&&this.destroy(),t.prototype.executeDateUnrender.call(this)},e.prototype.bindBaseRenderHandlers=function(){var t=this;this.on("datesRendered",function(){t.whenSizeUpdated(t.triggerViewRender)}),this.on("before:datesUnrendered",function(){t.triggerViewDestroy()})},e.prototype.triggerViewRender=function(){this.publiclyTrigger("viewRender",{context:this,args:[this,this.el]})},e.prototype.triggerViewDestroy=function(){this.publiclyTrigger("viewDestroy",{context:this,args:[this,this.el]})},e.prototype.requestEventsRender=function(t){var e=this;this.requestRender(function(){e.executeEventRender(t),e.whenSizeUpdated(e.triggerAfterEventsRendered)},"event","init")},e.prototype.requestEventsUnrender=function(){var t=this;this.requestRender(function(){t.triggerBeforeEventsDestroyed(),t.executeEventUnrender()},"event","destroy")},e.prototype.requestBusinessHoursRender=function(t){var e=this;this.requestRender(function(){e.renderBusinessHours(t)},"businessHours","init")},e.prototype.requestBusinessHoursUnrender=function(){var t=this;this.requestRender(function(){t.unrenderBusinessHours()},"businessHours","destroy")},e.prototype.bindGlobalHandlers=function(){t.prototype.bindGlobalHandlers.call(this),this.listenTo(d.default.get(),{touchstart:this.processUnselect,mousedown:this.handleDocumentMousedown})},e.prototype.unbindGlobalHandlers=function(){t.prototype.unbindGlobalHandlers.call(this),this.stopListeningTo(d.default.get())},e.prototype.startNowIndicator=function(){var t,e,n,r=this;this.opt("nowIndicator")&&(t=this.getNowIndicatorUnit())&&(e=s.proxy(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=(new Date).valueOf(),n=this.initialNowDate.clone().startOf(t).add(1,t).valueOf()-this.initialNowDate.valueOf(),this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,e(),n=+o.duration(1,t),n=Math.max(100,n),r.nowIndicatorIntervalID=setInterval(e,n)},n))},e.prototype.updateNowIndicator=function(){this.isDatesRendered&&this.initialNowDate&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add((new Date).valueOf()-this.initialNowQueriedMs)),this.isNowIndicatorRendered=!0)},e.prototype.stopNowIndicator=function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearInterval(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},e.prototype.updateSize=function(e,n,r){this.setHeight?this.setHeight(e,n):t.prototype.updateSize.call(this,e,n,r),this.updateNowIndicator()},e.prototype.addScroll=function(t){var e=this.queuedScroll||(this.queuedScroll={});i.extend(e,t)},e.prototype.popScroll=function(){this.applyQueuedScroll(),this.queuedScroll=null},e.prototype.applyQueuedScroll=function(){this.queuedScroll&&this.applyScroll(this.queuedScroll)},e.prototype.queryScroll=function(){var t={};return this.isDatesRendered&&i.extend(t,this.queryDateScroll()),t},e.prototype.applyScroll=function(t){t.isDateInit&&this.isDatesRendered&&i.extend(t,this.computeInitialDateScroll()),this.isDatesRendered&&this.applyDateScroll(t)},e.prototype.computeInitialDateScroll=function(){return{}},e.prototype.queryDateScroll=function(){return{}},e.prototype.applyDateScroll=function(t){},e.prototype.reportEventDrop=function(t,e,n,r){var i=this.calendar.eventManager,s=i.mutateEventsWithId(t.def.id,e),a=e.dateMutation;a&&(t.dateProfile=a.buildNewDateProfile(t.dateProfile,this.calendar)),this.triggerEventDrop(t,a&&a.dateDelta||o.duration(),s,n,r)},e.prototype.triggerEventDrop=function(t,e,n,r,i){this.publiclyTrigger("eventDrop",{context:r[0],args:[t.toLegacy(),e,n,i,{},this]})},e.prototype.reportExternalDrop=function(t,e,n,r,i,o){e&&this.calendar.eventManager.addEventDef(t,n),this.triggerExternalDrop(t,e,r,i,o)},e.prototype.triggerExternalDrop=function(t,e,n,r,i){this.publiclyTrigger("drop",{context:n[0],args:[t.dateProfile.start.clone(),r,i,this]}),e&&this.publiclyTrigger("eventReceive",{context:this,args:[t.buildInstance().toLegacy(),this]})},e.prototype.reportEventResize=function(t,e,n,r){var i=this.calendar.eventManager,o=i.mutateEventsWithId(t.def.id,e);t.dateProfile=e.dateMutation.buildNewDateProfile(t.dateProfile,this.calendar);var s=e.dateMutation.endDelta||e.dateMutation.startDelta;this.triggerEventResize(t,s,o,n,r)},e.prototype.triggerEventResize=function(t,e,n,r,i){this.publiclyTrigger("eventResize",{context:r[0],args:[t.toLegacy(),e,n,i,{},this]})},e.prototype.select=function(t,e){this.unselect(e),this.renderSelectionFootprint(t),this.reportSelection(t,e)},e.prototype.renderSelectionFootprint=function(e){this.renderSelection?this.renderSelection(e.toLegacy(this.calendar)):t.prototype.renderSelectionFootprint.call(this,e)},e.prototype.reportSelection=function(t,e){this.isSelected=!0,this.triggerSelect(t,e)},e.prototype.triggerSelect=function(t,e){var n=this.calendar.footprintToDateProfile(t);this.publiclyTrigger("select",{context:this,args:[n.start,n.end,e,this]})},e.prototype.unselect=function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.publiclyTrigger("unselect",{context:this,args:[t,this]}))},e.prototype.selectEventInstance=function(t){this.selectedEventInstance&&this.selectedEventInstance===t||(this.unselectEventInstance(),this.getEventSegs().forEach(function(e){e.footprint.eventInstance===t&&e.el&&e.el.addClass("fc-selected")}),this.selectedEventInstance=t)},e.prototype.unselectEventInstance=function(){this.selectedEventInstance&&(this.getEventSegs().forEach(function(t){t.el&&t.el.removeClass("fc-selected")}),this.selectedEventInstance=null)},e.prototype.isEventDefSelected=function(t){return this.selectedEventInstance&&this.selectedEventInstance.def.id===t.id},e.prototype.handleDocumentMousedown=function(t){s.isPrimaryMouseButton(t)&&this.processUnselect(t)},e.prototype.processUnselect=function(t){this.processRangeUnselect(t),this.processEventUnselect(t)},e.prototype.processRangeUnselect=function(t){var e;this.isSelected&&this.opt("unselectAuto")&&((e=this.opt("unselectCancel"))&&i(t.target).closest(e).length||this.unselect(t))},e.prototype.processEventUnselect=function(t){this.selectedEventInstance&&(i(t.target).closest(".fc-selected").length||this.unselectEventInstance())},e.prototype.triggerBaseRendered=function(){this.publiclyTrigger("viewRender",{context:this,args:[this,this.el]})},e.prototype.triggerBaseUnrendered=function(){this.publiclyTrigger("viewDestroy",{context:this,args:[this,this.el]})},e.prototype.triggerDayClick=function(t,e,n){var r=this.calendar.footprintToDateProfile(t);this.publiclyTrigger("dayClick",{context:e,args:[r.start,n,this]})},e.prototype.isDateInOtherMonth=function(t,e){return!1},e.prototype.getUnzonedRangeOption=function(t){var e=this.opt(t);if("function"==typeof e&&(e=e.apply(null,Array.prototype.slice.call(arguments,1))),e)return this.calendar.parseUnzonedRange(e)},e.prototype.initHiddenDays=function(){var t,e=this.opt("hiddenDays")||[],n=[],r=0;for(!1===this.opt("weekends")&&e.push(0,6),t=0;t<7;t++)(n[t]=-1!==i.inArray(t,e))||r++;if(!r)throw new Error("invalid hiddenDays");this.isHiddenDayHash=n},e.prototype.trimHiddenDays=function(t){var e=t.getStart(),n=t.getEnd();return e&&(e=this.skipHiddenDays(e)),n&&(n=this.skipHiddenDays(n,-1,!0)),null===e||null===n||e<n?new c.default(e,n):null},e.prototype.isHiddenDay=function(t){return o.isMoment(t)&&(t=t.day()),this.isHiddenDayHash[t]},e.prototype.skipHiddenDays=function(t,e,n){void 0===e&&(e=1),void 0===n&&(n=!1);for(var r=t.clone();this.isHiddenDayHash[(r.day()+(n?e:0)+7)%7];)r.add(e,"days");return r},e}(u.default);e.default=p,p.prototype.usesMinMaxTime=!1,p.prototype.dateProfileGeneratorClass=l.default,p.watch("displayingDates",["isInDom","dateProfile"],function(t){this.requestDateRender(t.dateProfile)},function(){this.requestDateUnrender()}),p.watch("displayingBusinessHours",["displayingDates","businessHourGenerator"],function(t){this.requestBusinessHoursRender(t.businessHourGenerator)},function(){this.requestBusinessHoursUnrender()}),p.watch("initialEvents",["dateProfile"],function(t){return this.fetchInitialEvents(t.dateProfile)}),p.watch("bindingEvents",["initialEvents"],function(t){this.setEvents(t.initialEvents),this.bindEventChanges()},function(){this.unbindEventChanges(),this.unsetEvents()}),p.watch("displayingEvents",["displayingDates","hasEvents"],function(){this.requestEventsRender(this.get("currentEvents"))},function(){this.requestEventsUnrender()}),p.watch("title",["dateProfile"],function(t){return this.title=this.computeTitle(t.dateProfile)}),p.watch("legacyDateProps",["dateProfile"],function(t){var e=this.calendar,n=t.dateProfile;this.start=e.msToMoment(n.activeUnzonedRange.startMs,n.isRangeAllDay),this.end=e.msToMoment(n.activeUnzonedRange.endMs,n.isRangeAllDay),this.intervalStart=e.msToMoment(n.currentUnzonedRange.startMs,n.isRangeAllDay),this.intervalEnd=e.msToMoment(n.currentUnzonedRange.endMs,n.isRangeAllDay)})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t,e){this.view=t._getView(),this.component=t,this.fillRenderer=e}return t.prototype.opt=function(t){return this.view.opt(t)},t.prototype.rangeUpdated=function(){var t,e ;this.eventTimeFormat=this.opt("eventTimeFormat")||this.opt("timeFormat")||this.computeEventTimeFormat(),t=this.opt("displayEventTime"),null==t&&(t=this.computeDisplayEventTime()),e=this.opt("displayEventEnd"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},t.prototype.render=function(t){var e,n,r,i=this.component._getDateProfile(),o=[],s=[];for(e in t)n=t[e],r=n.sliceRenderRanges(i.activeUnzonedRange),n.getEventDef().hasBgRendering()?o.push.apply(o,r):s.push.apply(s,r);this.renderBgRanges(o),this.renderFgRanges(s)},t.prototype.unrender=function(){this.unrenderBgRanges(),this.unrenderFgRanges()},t.prototype.renderFgRanges=function(t){var e=this.component.eventRangesToEventFootprints(t),n=this.component.eventFootprintsToSegs(e);n=this.renderFgSegEls(n),!1!==this.renderFgSegs(n)&&(this.fgSegs=n)},t.prototype.unrenderFgRanges=function(){this.unrenderFgSegs(this.fgSegs||[]),this.fgSegs=null},t.prototype.renderBgRanges=function(t){var e=this.component.eventRangesToEventFootprints(t),n=this.component.eventFootprintsToSegs(e);!1!==this.renderBgSegs(n)&&(this.bgSegs=n)},t.prototype.unrenderBgRanges=function(){this.unrenderBgSegs(),this.bgSegs=null},t.prototype.getSegs=function(){return(this.bgSegs||[]).concat(this.fgSegs||[])},t.prototype.renderFgSegs=function(t){return!1},t.prototype.unrenderFgSegs=function(t){},t.prototype.renderBgSegs=function(t){var e=this;if(!this.fillRenderer)return!1;this.fillRenderer.renderSegs("bgEvent",t,{getClasses:function(t){return e.getBgClasses(t.footprint.eventDef)},getCss:function(t){return{"background-color":e.getBgColor(t.footprint.eventDef)}},filterEl:function(t,n){return e.filterEventRenderEl(t.footprint,n)}})},t.prototype.unrenderBgSegs=function(){this.fillRenderer&&this.fillRenderer.unrender("bgEvent")},t.prototype.renderFgSegEls=function(t,e){var n=this;void 0===e&&(e=!1);var i,o=this.view.hasPublicHandlers("eventRender"),s="",a=[];if(t.length){for(i=0;i<t.length;i++)this.beforeFgSegHtml(t[i]),s+=this.fgSegHtml(t[i],e);r(s).each(function(e,i){var s=t[e],l=r(i);o&&(l=n.filterEventRenderEl(s.footprint,l)),l&&(l.data("fc-seg",s),s.el=l,a.push(s))})}return a},t.prototype.beforeFgSegHtml=function(t){},t.prototype.fgSegHtml=function(t,e){},t.prototype.getSegClasses=function(t,e,n){var r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(this.getClasses(t.footprint.eventDef));return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),this.view.isEventDefSelected(t.footprint.eventDef)&&r.push("fc-selected"),r},t.prototype.filterEventRenderEl=function(t,e){var n=t.getEventLegacy(),i=this.view.publiclyTrigger("eventRender",{context:n,args:[n,e,this.view]});return!1===i?e=null:i&&!0!==i&&(e=r(i)),e},t.prototype.getTimeText=function(t,e,n){return this._getTimeText(t.eventInstance.dateProfile.start,t.eventInstance.dateProfile.end,t.componentFootprint.isAllDay,e,n)},t.prototype._getTimeText=function(t,e,n,r,i){return null==r&&(r=this.eventTimeFormat),null==i&&(i=this.displayEventEnd),this.displayEventTime&&!n?i&&e?this.view.formatRange({start:t,end:e},!1,r):t.format(r):""},t.prototype.computeEventTimeFormat=function(){return this.opt("smallTimeFormat")},t.prototype.computeDisplayEventTime=function(){return!0},t.prototype.computeDisplayEventEnd=function(){return!0},t.prototype.getBgClasses=function(t){var e=this.getClasses(t);return e.push("fc-bgevent"),e},t.prototype.getClasses=function(t){var e,n=this.getStylingObjs(t),r=[];for(e=0;e<n.length;e++)r.push.apply(r,n[e].eventClassName||n[e].className||[]);return r},t.prototype.getSkinCss=function(t){return{"background-color":this.getBgColor(t),"border-color":this.getBorderColor(t),color:this.getTextColor(t)}},t.prototype.getBgColor=function(t){var e,n,r=this.getStylingObjs(t);for(e=0;e<r.length&&!n;e++)n=r[e].eventBackgroundColor||r[e].eventColor||r[e].backgroundColor||r[e].color;return n||(n=this.opt("eventBackgroundColor")||this.opt("eventColor")),n},t.prototype.getBorderColor=function(t){var e,n,r=this.getStylingObjs(t);for(e=0;e<r.length&&!n;e++)n=r[e].eventBorderColor||r[e].eventColor||r[e].borderColor||r[e].color;return n||(n=this.opt("eventBorderColor")||this.opt("eventColor")),n},t.prototype.getTextColor=function(t){var e,n,r=this.getStylingObjs(t);for(e=0;e<r.length&&!n;e++)n=r[e].eventTextColor||r[e].textColor;return n||(n=this.opt("eventTextColor")),n},t.prototype.getStylingObjs=function(t){var e=this.getFallbackStylingObjs(t);return e.unshift(t),e},t.prototype.getFallbackStylingObjs=function(t){return[t.source]},t.prototype.sortEventSegs=function(t){t.sort(i.proxy(this,"compareEventSegs"))},t.prototype.compareEventSegs=function(t,e){var n=t.footprint,r=e.footprint,o=n.componentFootprint,s=r.componentFootprint,a=o.unzonedRange,l=s.unzonedRange;return a.startMs-l.startMs||l.endMs-l.startMs-(a.endMs-a.startMs)||s.isAllDay-o.isAllDay||i.compareByFieldSpecs(n.eventDef,r.eventDef,this.view.eventOrderSpecs,n.eventDef.miscProps,r.eventDef.miscProps)},t}();e.default=o},,,,,function(t,e,n){function r(t){return"en"!==t.locale()?t.clone().locale("en"):t}function i(t,e){return h(a(e).fakeFormatString,t)}function o(t,e,n,r,i){var o;return t=y.default.parseZone(t),e=y.default.parseZone(e),o=t.localeData(),n=o.longDateFormat(n)||n,s(a(n),t,e,r||" - ",i)}function s(t,e,n,r,i){var o,s,a,l=t.sameUnits,u=e.clone().stripZone(),d=n.clone().stripZone(),c=f(t.fakeFormatString,e),p=f(t.fakeFormatString,n),h="",v="",y="",m="",b="";for(o=0;o<l.length&&(!l[o]||u.isSame(d,l[o]));o++)h+=c[o];for(s=l.length-1;s>o&&(!l[s]||u.isSame(d,l[s]))&&(s-1!==o||"."!==c[s]);s--)v=c[s]+v;for(a=o;a<=s;a++)y+=c[a],m+=p[a];return(y||m)&&(b=i?m+r+y:y+r+m),g(h+b+v)}function a(t){return C[t]||(C[t]=l(t))}function l(t){var e=u(t);return{fakeFormatString:c(e),sameUnits:p(e)}}function u(t){for(var e,n=[],r=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=r.exec(t);)e[1]?n.push.apply(n,d(e[1])):e[2]?n.push({maybe:u(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push.apply(n,d(e[5]));return n}function d(t){return". "===t?["."," "]:[t]}function c(t){var e,n,r=[];for(e=0;e<t.length;e++)n=t[e],"string"==typeof n?r.push("["+n+"]"):n.token?n.token in E?r.push(b+"["+n.token+"]"):r.push(n.token):n.maybe&&r.push(w+c(n.maybe)+w);return r.join(m)}function p(t){var e,n,r,i=[];for(e=0;e<t.length;e++)n=t[e],n.token?(r=S[n.token.charAt(0)],i.push(r?r.unit:"second")):n.maybe?i.push.apply(i,p(n.maybe)):i.push(null);return i}function h(t,e){return g(f(t,e).join(""))}function f(t,e){var n,r,i=[],o=y.oldMomentFormat(e,t),s=o.split(m);for(n=0;n<s.length;n++)r=s[n],r.charAt(0)===b?i.push(E[r.substring(1)](e)):i.push(r);return i}function g(t){return t.replace(D,function(t,e){return e.match(/[1-9]/)?e:""})}function v(t){var e,n,r,i,o=u(t);for(e=0;e<o.length;e++)n=o[e],n.token&&(r=S[n.token.charAt(0)])&&(!i||r.value>i.value)&&(i=r);return i?i.unit:null}Object.defineProperty(e,"__esModule",{value:!0});var y=n(11);y.newMomentProto.format=function(){return this._fullCalendar&&arguments[0]?i(this,arguments[0]):this._ambigTime?y.oldMomentFormat(r(this),"YYYY-MM-DD"):this._ambigZone?y.oldMomentFormat(r(this),"YYYY-MM-DD[T]HH:mm:ss"):this._fullCalendar?y.oldMomentFormat(r(this)):y.oldMomentProto.format.apply(this,arguments)},y.newMomentProto.toISOString=function(){return this._ambigTime?y.oldMomentFormat(r(this),"YYYY-MM-DD"):this._ambigZone?y.oldMomentFormat(r(this),"YYYY-MM-DD[T]HH:mm:ss"):this._fullCalendar?y.oldMomentProto.toISOString.apply(r(this),arguments):y.oldMomentProto.toISOString.apply(this,arguments)};var m="\v",b="",w="",D=new RegExp(w+"([^"+w+"]*)"+w,"g"),E={t:function(t){return y.oldMomentFormat(t,"a").charAt(0)},T:function(t){return y.oldMomentFormat(t,"A").charAt(0)}},S={Y:{value:1,unit:"year"},M:{value:2,unit:"month"},W:{value:3,unit:"week"},w:{value:3,unit:"week"},D:{value:4,unit:"day"},d:{value:4,unit:"day"}};e.formatDate=i,e.formatRange=o;var C={};e.queryMostGranularFormatUnit=v},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e,n){this.unzonedRange=t,this.eventDef=e,n&&(this.eventInstance=n)}return t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(35),o=n(13),s=n(7),a=function(t){function e(){var e=t.call(this)||this;return e._watchers={},e._props={},e.applyGlobalWatchers(),e.constructed(),e}return r.__extends(e,t),e.watch=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];this.prototype.hasOwnProperty("_globalWatchArgs")||(this.prototype._globalWatchArgs=Object.create(this.prototype._globalWatchArgs)),this.prototype._globalWatchArgs[t]=e},e.prototype.constructed=function(){},e.prototype.applyGlobalWatchers=function(){var t,e=this._globalWatchArgs;for(t in e)this.watch.apply(this,[t].concat(e[t]))},e.prototype.has=function(t){return t in this._props},e.prototype.get=function(t){return void 0===t?this._props:this._props[t]},e.prototype.set=function(t,e){var n;"string"==typeof t?(n={},n[t]=void 0===e?null:e):n=t,this.setProps(n)},e.prototype.reset=function(t){var e,n=this._props,r={};for(e in n)r[e]=void 0;for(e in t)r[e]=t[e];this.setProps(r)},e.prototype.unset=function(t){var e,n,r={};for(e="string"==typeof t?[t]:t,n=0;n<e.length;n++)r[e[n]]=void 0;this.setProps(r)},e.prototype.setProps=function(t){var e,n,r={},i=0;for(e in t)"object"!=typeof(n=t[e])&&n===this._props[e]||(r[e]=n,i++);if(i){this.trigger("before:batchChange",r);for(e in r)n=r[e],this.trigger("before:change",e,n),this.trigger("before:change:"+e,n);for(e in r)n=r[e],void 0===n?delete this._props[e]:this._props[e]=n,this.trigger("change:"+e,n),this.trigger("change",e,n);this.trigger("batchChange",r)}},e.prototype.watch=function(t,e,n,r){var i=this;this.unwatch(t),this._watchers[t]=this._watchDeps(e,function(e){var r=n.call(i,e);r&&r.then?(i.unset(t),r.then(function(e){i.set(t,e)})):i.set(t,r)},function(e){i.unset(t),r&&r.call(i,e)})},e.prototype.unwatch=function(t){var e=this._watchers[t];e&&(delete this._watchers[t],e.teardown())},e.prototype._watchDeps=function(t,e,n){var r=this,i=0,o=t.length,s=0,a={},l=[],u=!1,d=function(t,e,r){1===++i&&s===o&&(u=!0,n(a),u=!1)},c=function(t,n,r){void 0===n?(r||void 0===a[t]||s--,delete a[t]):(r||void 0!==a[t]||s++,a[t]=n),--i||s===o&&(u||e(a))},p=function(t,e){r.on(t,e),l.push([t,e])};return t.forEach(function(t){var e=!1;"?"===t.charAt(0)&&(t=t.substring(1),e=!0),p("before:change:"+t,function(t){d()}),p("change:"+t,function(n){c(t,n,e)})}),t.forEach(function(t){var e=!1;"?"===t.charAt(0)&&(t=t.substring(1),e=!0),r.has(t)?(a[t]=r.get(t),s++):e&&s++}),s===o&&e(a),{teardown:function(){for(var t=0;t<l.length;t++)r.off(l[t][0],l[t][1]);l=null,s===o&&n()},flash:function(){s===o&&(n(),e(a))}}},e.prototype.flash=function(t){var e=this._watchers[t];e&&e.flash()},e}(i.default);e.default=a,a.prototype._globalWatchArgs={},o.default.mixInto(a),s.default.mixInto(a)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.defineStandardProps=function(t){var e=this.prototype;e.hasOwnProperty("standardPropMap")||(e.standardPropMap=Object.create(e.standardPropMap)),i.copyOwnProps(t,e.standardPropMap)},e.copyVerbatimStandardProps=function(t,e){var n,r=this.prototype.standardPropMap;for(n in r)null!=t[n]&&!0===r[n]&&(e[n]=t[n])},e.prototype.applyProps=function(t){var e,n=this.standardPropMap,r={},i={};for(e in t)!0===n[e]?this[e]=t[e]:!1===n[e]?r[e]=t[e]:i[e]=t[e];return this.applyMiscProps(i),this.applyManualStandardProps(r)},e.prototype.applyManualStandardProps=function(t){return!0},e.prototype.applyMiscProps=function(t){},e.prototype.isStandardProp=function(t){return t in this.standardPropMap},e}(o.default);e.default=s,s.prototype.standardPropMap={}},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){this.def=t,this.dateProfile=e}return t.prototype.toLegacy=function(){var t=this.dateProfile,e=this.def.toLegacy();return e.start=t.start.clone(),e.end=t.end?t.end.clone():null,e},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(0),s=n(37),a=n(53),l=n(16),u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.isAllDay=function(){return!this.startTime&&!this.endTime},e.prototype.buildInstances=function(t){for(var e,n,r,i=this.source.calendar,o=t.getStart(),s=t.getEnd(),u=[];o.isBefore(s);)this.dowHash&&!this.dowHash[o.day()]||(e=i.applyTimezone(o),n=e.clone(),r=null,this.startTime?n.time(this.startTime):n.stripTime(),this.endTime&&(r=e.clone().time(this.endTime)),u.push(new a.default(this,new l.default(n,r,i)))),o.add(1,"days");return u},e.prototype.setDow=function(t){this.dowHash||(this.dowHash={});for(var e=0;e<t.length;e++)this.dowHash[t[e]]=!0},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e.startTime&&(e.startTime=o.duration(this.startTime)),e.endTime&&(e.endTime=o.duration(this.endTime)),this.dowHash&&(e.dowHash=i.extend({},this.dowHash)),e},e}(s.default);e.default=u,u.prototype.applyProps=function(t){var e=s.default.prototype.applyProps.call(this,t);return t.start&&(this.startTime=o.duration(t.start)),t.end&&(this.endTime=o.duration(t.end)),t.dow&&this.setDow(t.dow),e},u.defineStandardProps({start:!1,end:!1,dow:!1})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(0),i=n(4),o=n(5),s=function(){function t(t){this._view=t}return t.prototype.opt=function(t){return this._view.opt(t)},t.prototype.trimHiddenDays=function(t){return this._view.trimHiddenDays(t)},t.prototype.msToUtcMoment=function(t,e){return this._view.calendar.msToUtcMoment(t,e)},t.prototype.buildPrev=function(t){var e=t.date.clone().startOf(t.currentRangeUnit).subtract(t.dateIncrement);return this.build(e,-1)},t.prototype.buildNext=function(t){var e=t.date.clone().startOf(t.currentRangeUnit).add(t.dateIncrement);return this.build(e,1)},t.prototype.build=function(t,e,n){void 0===n&&(n=!1);var i,o,s,a,l,u,d=!t.hasTime(),c=null,p=null;return i=this.buildValidRange(),i=this.trimHiddenDays(i),n&&(t=this.msToUtcMoment(i.constrainDate(t),d)),o=this.buildCurrentRangeInfo(t,e),s=/^(year|month|week|day)$/.test(o.unit),a=this.buildRenderRange(this.trimHiddenDays(o.unzonedRange),o.unit,s),a=this.trimHiddenDays(a),l=a.clone(),this.opt("showNonCurrentDates")||(l=l.intersect(o.unzonedRange)),c=r.duration(this.opt("minTime")),p=r.duration(this.opt("maxTime")),l=this.adjustActiveRange(l,c,p),l=l.intersect(i),l&&(t=this.msToUtcMoment(l.constrainDate(t),d)),u=o.unzonedRange.intersectsWith(i),{validUnzonedRange:i,currentUnzonedRange:o.unzonedRange,currentRangeUnit:o.unit,isRangeAllDay:s,activeUnzonedRange:l,renderUnzonedRange:a,minTime:c,maxTime:p,isValid:u,date:t,dateIncrement:this.buildDateIncrement(o.duration)}},t.prototype.buildValidRange=function(){return this._view.getUnzonedRangeOption("validRange",this._view.calendar.getNow())||new o.default},t.prototype.buildCurrentRangeInfo=function(t,e){var n,r=this._view.viewSpec,o=null,s=null,a=null;return r.duration?(o=r.duration,s=r.durationUnit,a=this.buildRangeFromDuration(t,e,o,s)):(n=this.opt("dayCount"))?(s="day",a=this.buildRangeFromDayCount(t,e,n)):(a=this.buildCustomVisibleRange(t))?s=i.computeGreatestUnit(a.getStart(),a.getEnd()):(o=this.getFallbackDuration(),s=i.computeGreatestUnit(o),a=this.buildRangeFromDuration(t,e,o,s)),{duration:o,unit:s,unzonedRange:a}},t.prototype.getFallbackDuration=function(){return r.duration({days:1})},t.prototype.adjustActiveRange=function(t,e,n){var r=t.getStart(),i=t.getEnd();return this._view.usesMinMaxTime&&(e<0&&r.time(0).add(e),n>864e5&&i.time(n-864e5)),new o.default(r,i)},t.prototype.buildRangeFromDuration=function(t,e,n,s){function a(){d=t.clone().startOf(h),c=d.clone().add(n),p=new o.default(d,c)}var l,u,d,c,p,h=this.opt("dateAlignment");return h||(l=this.opt("dateIncrement"),l?(u=r.duration(l),h=u<n?i.computeDurationGreatestUnit(u,l):s):h=s),n.as("days")<=1&&this._view.isHiddenDay(d)&&(d=this._view.skipHiddenDays(d,e),d.startOf("day")),a(),this.trimHiddenDays(p)||(t=this._view.skipHiddenDays(t,e),a()),p},t.prototype.buildRangeFromDayCount=function(t,e,n){var r,i,s=this.opt("dateAlignment"),a=0;if(s||-1!==e){r=t.clone(),s&&r.startOf(s),r.startOf("day"),r=this._view.skipHiddenDays(r),i=r.clone();do{i.add(1,"day"),this._view.isHiddenDay(i)||a++}while(a<n)}else{i=t.clone().startOf("day").add(1,"day"),i=this._view.skipHiddenDays(i,-1,!0),r=i.clone();do{r.add(-1,"day"),this._view.isHiddenDay(r)||a++}while(a<n)}return new o.default(r,i)},t.prototype.buildCustomVisibleRange=function(t){var e=this._view.getUnzonedRangeOption("visibleRange",this._view.calendar.applyTimezone(t));return!e||null!=e.startMs&&null!=e.endMs?e:null},t.prototype.buildRenderRange=function(t,e,n){return t.clone()},t.prototype.buildDateIncrement=function(t){var e,n=this.opt("dateIncrement");return n?r.duration(n):(e=this.opt("dateAlignment"))?r.duration(1,e):t||r.duration({days:1})},t}();e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(21),a=n(6),l=n(9),u=function(t){function e(e){var n=t.call(this,e)||this;return n.eventDefs=[],n}return r.__extends(e,t),e.parse=function(t,e){var n;return i.isArray(t.events)?n=t:i.isArray(t)&&(n={events:t}),!!n&&a.default.parse.call(this,n,e)},e.prototype.setRawEventDefs=function(t){this.rawEventDefs=t,this.eventDefs=this.parseEventDefs(t)},e.prototype.fetch=function(t,e,n){var r,i=this.eventDefs;if(null!=this.currentTimezone&&this.currentTimezone!==n)for(r=0;r<i.length;r++)i[r]instanceof l.default&&i[r].rezone();return this.currentTimezone=n,s.default.resolve(i)},e.prototype.addEventDef=function(t){this.eventDefs.push(t)},e.prototype.removeEventDefsById=function(t){return o.removeMatching(this.eventDefs,function(e){return e.id===t})},e.prototype.removeAllEventDefs=function(){this.eventDefs=[]},e.prototype.getPrimitive=function(){return this.rawEventDefs},e.prototype.applyManualStandardProps=function(e){var n=t.prototype.applyManualStandardProps.call(this,e);return this.setRawEventDefs(e.events),n},e}(a.default);e.default=u,u.defineStandardProps({events:!1})},function(t,e,n){function r(t,e){a[t]=e}function i(t){return t?!0===t?s.default:a[t]:o.default}Object.defineProperty(e,"__esModule",{value:!0});var o=n(221),s=n(222),a={};e.defineThemeSystem=r,e.getThemeSystemClass=i},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t){this.isHorizontal=!1,this.isVertical=!1,this.els=r(t.els),this.isHorizontal=t.isHorizontal,this.isVertical=t.isVertical,this.forcedOffsetParentEl=t.offsetParent?r(t.offsetParent):null}return t.prototype.build=function(){var t=this.forcedOffsetParentEl;!t&&this.els.length>0&&(t=this.els.eq(0).offsetParent()),this.origin=t?t.offset():null,this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},t.prototype.clear=function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},t.prototype.ensureBuilt=function(){this.origin||this.build()},t.prototype.buildElHorizontals=function(){var t=[],e=[];this.els.each(function(n,i){var o=r(i),s=o.offset().left,a=o.outerWidth();t.push(s),e.push(s+a)}),this.lefts=t,this.rights=e},t.prototype.buildElVerticals=function(){var t=[],e=[];this.els.each(function(n,i){var o=r(i),s=o.offset().top,a=o.outerHeight();t.push(s),e.push(s+a)}),this.tops=t,this.bottoms=e},t.prototype.getHorizontalIndex=function(t){this.ensureBuilt();var e,n=this.lefts,r=this.rights,i=n.length;for(e=0;e<i;e++)if(t>=n[e]&&t<r[e])return e},t.prototype.getVerticalIndex=function(t){this.ensureBuilt();var e,n=this.tops,r=this.bottoms,i=n.length;for(e=0;e<i;e++)if(t>=n[e]&&t<r[e])return e},t.prototype.getLeftOffset=function(t){return this.ensureBuilt(),this.lefts[t]},t.prototype.getLeftPosition=function(t){return this.ensureBuilt(),this.lefts[t]-this.origin.left},t.prototype.getRightOffset=function(t){return this.ensureBuilt(),this.rights[t]},t.prototype.getRightPosition=function(t){return this.ensureBuilt(),this.rights[t]-this.origin.left},t.prototype.getWidth=function(t){return this.ensureBuilt(),this.rights[t]-this.lefts[t]},t.prototype.getTopOffset=function(t){return this.ensureBuilt(),this.tops[t]},t.prototype.getTopPosition=function(t){return this.ensureBuilt(),this.tops[t]-this.origin.top},t.prototype.getBottomOffset=function(t){return this.ensureBuilt(),this.bottoms[t]},t.prototype.getBottomPosition=function(t){return this.ensureBuilt(),this.bottoms[t]-this.origin.top},t.prototype.getHeight=function(t){return this.ensureBuilt(),this.bottoms[t]-this.tops[t]},t.prototype.queryBoundingRect=function(){var t;return this.els.length>0&&(t=i.getScrollParent(this.els.eq(0)),!t.is(document)&&!t.is("html,body"))?i.getClientRect(t):null},t.prototype.isPointInBounds=function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},t.prototype.isLeftInBounds=function(t){return!this.boundingRect||t>=this.boundingRect.left&&t<this.boundingRect.right},t.prototype.isTopInBounds=function(t){return!this.boundingRect||t>=this.boundingRect.top&&t<this.boundingRect.bottom},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(7),s=n(23),a=function(){function t(t){this.isInteracting=!1,this.isDistanceSurpassed=!1,this.isDelayEnded=!1,this.isDragging=!1,this.isTouch=!1,this.isGeneric=!1,this.shouldCancelTouchScroll=!0,this.scrollAlwaysKills=!1,this.isAutoScroll=!1,this.scrollSensitivity=30,this.scrollSpeed=200,this.scrollIntervalMs=50,this.options=t||{}}return t.prototype.startInteraction=function(t,e){if(void 0===e&&(e={}),"mousedown"===t.type){if(s.default.get().shouldIgnoreMouse())return;if(!i.isPrimaryMouseButton(t))return;t.preventDefault()}this.isInteracting||(this.delay=i.firstDefined(e.delay,this.options.delay,0),this.minDistance=i.firstDefined(e.distance,this.options.distance,0),this.subjectEl=this.options.subjectEl,i.preventSelection(r("body")),this.isInteracting=!0,this.isTouch=i.getEvIsTouch(t),this.isGeneric="dragstart"===t.type,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.originX=i.getEvX(t),this.originY=i.getEvY(t),this.scrollEl=i.getScrollParent(r(t.target)),this.bindHandlers(),this.initAutoScroll(),this.handleInteractionStart(t),this.startDelay(t),this.minDistance||this.handleDistanceSurpassed(t))},t.prototype.handleInteractionStart=function(t){this.trigger("interactionStart",t)},t.prototype.endInteraction=function(t,e){this.isInteracting&&(this.endDrag(t),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null),this.destroyAutoScroll(),this.unbindHandlers(),this.isInteracting=!1,this.handleInteractionEnd(t,e),i.allowSelection(r("body")))},t.prototype.handleInteractionEnd=function(t,e){this.trigger("interactionEnd",t,e||!1)},t.prototype.bindHandlers=function(){var t=s.default.get();this.isGeneric?this.listenTo(r(document),{drag:this.handleMove,dragstop:this.endInteraction}):this.isTouch?this.listenTo(t,{touchmove:this.handleTouchMove,touchend:this.endInteraction,scroll:this.handleTouchScroll}):this.listenTo(t,{mousemove:this.handleMouseMove,mouseup:this.endInteraction}),this.listenTo(t,{selectstart:i.preventDefault,contextmenu:i.preventDefault})},t.prototype.unbindHandlers=function(){this.stopListeningTo(s.default.get()),this.stopListeningTo(r(document))},t.prototype.startDrag=function(t,e){this.startInteraction(t,e),this.isDragging||(this.isDragging=!0,this.handleDragStart(t))},t.prototype.handleDragStart=function(t){this.trigger("dragStart",t)},t.prototype.handleMove=function(t){var e=i.getEvX(t)-this.originX,n=i.getEvY(t)-this.originY,r=this.minDistance;this.isDistanceSurpassed||e*e+n*n>=r*r&&this.handleDistanceSurpassed(t),this.isDragging&&this.handleDrag(e,n,t)},t.prototype.handleDrag=function(t,e,n){this.trigger("drag",t,e,n),this.updateAutoScroll(n)},t.prototype.endDrag=function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},t.prototype.handleDragEnd=function(t){this.trigger("dragEnd",t)},t.prototype.startDelay=function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},t.prototype.handleDelayEnd=function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},t.prototype.handleDistanceSurpassed=function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},t.prototype.handleTouchMove=function(t){this.isDragging&&this.shouldCancelTouchScroll&&t.preventDefault(),this.handleMove(t)},t.prototype.handleMouseMove=function(t){this.handleMove(t)},t.prototype.handleTouchScroll=function(t){this.isDragging&&!this.scrollAlwaysKills||this.endInteraction(t,!0)},t.prototype.trigger=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];this.options[t]&&this.options[t].apply(this,e),this["_"+t]&&this["_"+t].apply(this,e)},t.prototype.initAutoScroll=function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,"scroll",i.debounce(this.handleDebouncedScroll,100))},t.prototype.destroyAutoScroll=function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},t.prototype.computeScrollBounds=function(){this.isAutoScroll&&(this.scrollBounds=i.getOuterRect(this.scrollEl))},t.prototype.updateAutoScroll=function(t){var e,n,r,o,s=this.scrollSensitivity,a=this.scrollBounds,l=0,u=0;a&&(e=(s-(i.getEvY(t)-a.top))/s,n=(s-(a.bottom-i.getEvY(t)))/s,r=(s-(i.getEvX(t)-a.left))/s,o=(s-(a.right-i.getEvX(t)))/s,e>=0&&e<=1?l=e*this.scrollSpeed*-1:n>=0&&n<=1&&(l=n*this.scrollSpeed),r>=0&&r<=1?u=r*this.scrollSpeed*-1:o>=0&&o<=1&&(u=o*this.scrollSpeed)),this.setScrollVel(l,u)},t.prototype.setScrollVel=function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(i.proxy(this,"scrollIntervalFunc"),this.scrollIntervalMs))},t.prototype.constrainScrollVel=function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},t.prototype.scrollIntervalFunc=function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},t.prototype.endAutoScroll=function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},t.prototype.handleDebouncedScroll=function(){this.scrollIntervalId||this.handleScrollEnd()},t.prototype.handleScrollEnd=function(){},t}();e.default=a,o.default.mixInto(a)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(15),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.updateDayTable=function(){for(var t,e,n,r=this,i=r.view,o=i.calendar,s=o.msToUtcMoment(r.dateProfile.renderUnzonedRange.startMs,!0),a=o.msToUtcMoment(r.dateProfile.renderUnzonedRange.endMs,!0),l=-1,u=[],d=[];s.isBefore(a);)i.isHiddenDay(s)?u.push(l+.5):(l++,u.push(l),d.push(s.clone())),s.add(1,"days");if(this.breakOnWeeks){for(e=d[0].day(),t=1;t<d.length&&d[t].day()!==e;t++);n=Math.ceil(d.length/t)}else n=1,t=d.length;this.dayDates=d,this.dayIndices=u,this.daysPerRow=t,this.rowCnt=n,this.updateDayTableCols()},e.prototype.updateDayTableCols=function(){this.colCnt=this.computeColCnt(),this.colHeadFormat=this.opt("columnHeaderFormat")||this.opt("columnFormat")||this.computeColHeadFormat()},e.prototype.computeColCnt=function(){return this.daysPerRow},e.prototype.getCellDate=function(t,e){return this.dayDates[this.getCellDayIndex(t,e)].clone()},e.prototype.getCellRange=function(t,e){var n=this.getCellDate(t,e);return{start:n,end:n.clone().add(1,"days")}},e.prototype.getCellDayIndex=function(t,e){return t*this.daysPerRow+this.getColDayIndex(e)},e.prototype.getColDayIndex=function(t){return this.isRTL?this.colCnt-1-t:t},e.prototype.getDateDayIndex=function(t){var e=this.dayIndices,n=t.diff(this.dayDates[0],"days");return n<0?e[0]-1:n>=e.length?e[e.length-1]+1:e[n]},e.prototype.computeColHeadFormat=function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.opt("dayOfMonthFormat"):"dddd"},e.prototype.sliceRangeByRow=function(t){var e,n,r,i,o,s=this.daysPerRow,a=this.view.computeDayRange(t),l=this.getDateDayIndex(a.start),u=this.getDateDayIndex(a.end.clone().subtract(1,"days")),d=[];for(e=0;e<this.rowCnt;e++)n=e*s,r=n+s-1,i=Math.max(l,n),o=Math.min(u,r),i=Math.ceil(i),o=Math.floor(o),i<=o&&d.push({row:e,firstRowDayIndex:i-n,lastRowDayIndex:o-n,isStart:i===l,isEnd:o===u});return d},e.prototype.sliceRangeByDay=function(t){var e,n,r,i,o,s,a=this.daysPerRow,l=this.view.computeDayRange(t),u=this.getDateDayIndex(l.start),d=this.getDateDayIndex(l.end.clone().subtract(1,"days")),c=[];for(e=0;e<this.rowCnt;e++)for(n=e*a,r=n+a-1,i=n;i<=r;i++)o=Math.max(u,i),s=Math.min(d,i),o=Math.ceil(o),s=Math.floor(s),o<=s&&c.push({row:e,firstRowDayIndex:o-n,lastRowDayIndex:s-n,isStart:o===u,isEnd:s===d});return c},e.prototype.renderHeadHtml=function(){var t=this.view.calendar.theme;return'<div class="fc-row '+t.getClass("headerRow")+'"><table class="'+t.getClass("tableGrid")+'"><thead>'+this.renderHeadTrHtml()+"</thead></table></div>"},e.prototype.renderHeadIntroHtml=function(){return this.renderIntroHtml()},e.prototype.renderHeadTrHtml=function(){return"<tr>"+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+"</tr>"},e.prototype.renderHeadDateCellsHtml=function(){var t,e,n=[];for(t=0;t<this.colCnt;t++)e=this.getCellDate(0,t),n.push(this.renderHeadDateCellHtml(e));return n.join("")},e.prototype.renderHeadDateCellHtml=function(t,e,n){var r,o=this,s=o.view,a=o.dateProfile.activeUnzonedRange.containsDate(t),l=["fc-day-header",s.calendar.theme.getClass("widgetHeader")];return r="function"==typeof o.opt("columnHeaderHtml")?o.opt("columnHeaderHtml")(t):"function"==typeof o.opt("columnHeaderText")?i.htmlEscape(o.opt("columnHeaderText")(t)):i.htmlEscape(t.format(o.colHeadFormat)),1===o.rowCnt?l=l.concat(o.getDayClasses(t,!0)):l.push("fc-"+i.dayIDs[t.day()]),'<th class="'+l.join(" ")+'"'+(1===(a&&o.rowCnt)?' data-date="'+t.format("YYYY-MM-DD")+'"':"")+(e>1?' colspan="'+e+'"':"")+(n?" "+n:"")+">"+(a?s.buildGotoAnchorHtml({date:t,forceOff:o.rowCnt>1||1===o.colCnt},r):r)+"</th>"},e.prototype.renderBgTrHtml=function(t){return"<tr>"+(this.isRTL?"":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):"")+"</tr>"},e.prototype.renderBgIntroHtml=function(t){return this.renderIntroHtml()},e.prototype.renderBgCellsHtml=function(t){var e,n,r=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),r.push(this.renderBgCellHtml(n));return r.join("")},e.prototype.renderBgCellHtml=function(t,e){var n=this,r=n.view,i=n.dateProfile.activeUnzonedRange.containsDate(t),o=n.getDayClasses(t);return o.unshift("fc-day",r.calendar.theme.getClass("widgetContent")),'<td class="'+o.join(" ")+'"'+(i?' data-date="'+t.format("YYYY-MM-DD")+'"':"")+(e?" "+e:"")+"></td>"},e.prototype.renderIntroHtml=function(){},e.prototype.bookendCells=function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))},e}(o.default);e.default=s},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){this.component=t,this.fillRenderer=e} return t.prototype.render=function(t){var e=this.component,n=e._getDateProfile().activeUnzonedRange,r=t.buildEventInstanceGroup(e.hasAllDayBusinessHours,n),i=r?e.eventRangesToEventFootprints(r.sliceRenderRanges(n)):[];this.renderEventFootprints(i)},t.prototype.renderEventFootprints=function(t){var e=this.component.eventFootprintsToSegs(t);this.renderSegs(e),this.segs=e},t.prototype.renderSegs=function(t){this.fillRenderer&&this.fillRenderer.renderSegs("businessHours",t,{getClasses:function(t){return["fc-nonbusiness","fc-bgevent"]}})},t.prototype.unrender=function(){this.fillRenderer&&this.fillRenderer.unrender("businessHours"),this.segs=null},t.prototype.getSegs=function(){return this.segs||[]},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t){this.fillSegTag="div",this.component=t,this.elsByFill={}}return t.prototype.renderFootprint=function(t,e,n){this.renderSegs(t,this.component.componentFootprintToSegs(e),n)},t.prototype.renderSegs=function(t,e,n){var r;return e=this.buildSegEls(t,e,n),r=this.attachSegEls(t,e),r&&this.reportEls(t,r),e},t.prototype.unrender=function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},t.prototype.buildSegEls=function(t,e,n){var i,o=this,s="",a=[];if(e.length){for(i=0;i<e.length;i++)s+=this.buildSegHtml(t,e[i],n);r(s).each(function(t,i){var s=e[t],l=r(i);n.filterEl&&(l=n.filterEl(s,l)),l&&(l=r(l),l.is(o.fillSegTag)&&(s.el=l,a.push(s)))})}return a},t.prototype.buildSegHtml=function(t,e,n){var r=n.getClasses?n.getClasses(e):[],o=i.cssToStr(n.getCss?n.getCss(e):{});return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(o?' style="'+o+'"':"")+"></"+this.fillSegTag+">"},t.prototype.attachSegEls=function(t,e){},t.prototype.reportEls=function(t,e){this.elsByFill[t]?this.elsByFill[t]=this.elsByFill[t].add(e):this.elsByFill[t]=r(e)},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(9),i=n(34),o=n(6),s=function(){function t(t,e){this.view=t._getView(),this.component=t,this.eventRenderer=e}return t.prototype.renderComponentFootprint=function(t){this.renderEventFootprints([this.fabricateEventFootprint(t)])},t.prototype.renderEventDraggingFootprints=function(t,e,n){this.renderEventFootprints(t,e,"fc-dragging",n?null:this.view.opt("dragOpacity"))},t.prototype.renderEventResizingFootprints=function(t,e,n){this.renderEventFootprints(t,e,"fc-resizing")},t.prototype.renderEventFootprints=function(t,e,n,r){var i,o=this.component.eventFootprintsToSegs(t),s="fc-helper "+(n||"");for(o=this.eventRenderer.renderFgSegEls(o),i=0;i<o.length;i++)o[i].el.addClass(s);if(null!=r)for(i=0;i<o.length;i++)o[i].el.css("opacity",r);this.helperEls=this.renderSegs(o,e)},t.prototype.renderSegs=function(t,e){},t.prototype.unrender=function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},t.prototype.fabricateEventFootprint=function(t){var e,n=this.view.calendar,s=n.footprintToDateProfile(t),a=new r.default(new o.default(n));return a.dateProfile=s,e=a.buildInstance(),new i.default(t,a,e)},t}();e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(23),o=n(14),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.bindToEl=function(t){var e=this.component;e.bindSegHandlerToEl(t,"click",this.handleClick.bind(this)),e.bindSegHandlerToEl(t,"mouseenter",this.handleMouseover.bind(this)),e.bindSegHandlerToEl(t,"mouseleave",this.handleMouseout.bind(this))},e.prototype.handleClick=function(t,e){!1===this.component.publiclyTrigger("eventClick",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,this.view]})&&e.preventDefault()},e.prototype.handleMouseover=function(t,e){i.default.get().shouldIgnoreMouse()||this.mousedOverSeg||(this.mousedOverSeg=t,this.view.isEventDefResizable(t.footprint.eventDef)&&t.el.addClass("fc-allow-mouse-resize"),this.component.publiclyTrigger("eventMouseover",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,this.view]}))},e.prototype.handleMouseout=function(t,e){this.mousedOverSeg&&(this.mousedOverSeg=null,this.view.isEventDefResizable(t.footprint.eventDef)&&t.el.removeClass("fc-allow-mouse-resize"),this.component.publiclyTrigger("eventMouseout",{context:t.el[0],args:[t.footprint.getEventLegacy(),e||{},this.view]}))},e.prototype.end=function(){this.mousedOverSeg&&this.handleMouseout(this.mousedOverSeg)},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(15),o=n(237),s=n(236),a=n(64),l=n(235),u=n(234),d=n(233),c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=c,c.prototype.dateClickingClass=o.default,c.prototype.dateSelectingClass=s.default,c.prototype.eventPointingClass=a.default,c.prototype.eventDraggingClass=l.default,c.prototype.eventResizingClass=u.default,c.prototype.externalDroppingClass=d.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(58),a=n(227),l=n(5),u=n(12),d=n(34),c=n(61),p=n(65),h=n(42),f=n(60),g=n(243),v=n(244),y=n(245),m=function(t){function e(e){var n=t.call(this,e)||this;return n.cellWeekNumbersVisible=!1,n.bottomCoordPadding=0,n.isRigid=!1,n.hasAllDayBusinessHours=!0,n}return r.__extends(e,t),e.prototype.componentFootprintToSegs=function(t){var e,n,r=this.sliceRangeByRow(t.unzonedRange);for(e=0;e<r.length;e++)n=r[e],this.isRTL?(n.leftCol=this.daysPerRow-1-n.lastRowDayIndex,n.rightCol=this.daysPerRow-1-n.firstRowDayIndex):(n.leftCol=n.firstRowDayIndex,n.rightCol=n.lastRowDayIndex);return r},e.prototype.renderDates=function(t){this.dateProfile=t,this.updateDayTable(),this.renderGrid()},e.prototype.unrenderDates=function(){this.removeSegPopover()},e.prototype.renderGrid=function(){var t,e,n=this.view,r=this.rowCnt,i=this.colCnt,o="";for(this.headContainerEl&&this.headContainerEl.html(this.renderHeadHtml()),t=0;t<r;t++)o+=this.renderDayRowHtml(t,this.isRigid);for(this.el.html(o),this.rowEls=this.el.find(".fc-row"),this.cellEls=this.el.find(".fc-day, .fc-disabled-day"),this.rowCoordCache=new s.default({els:this.rowEls,isVertical:!0}),this.colCoordCache=new s.default({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0}),t=0;t<r;t++)for(e=0;e<i;e++)this.publiclyTrigger("dayRender",{context:n,args:[this.getCellDate(t,e),this.getCellEl(t,e),n]})},e.prototype.renderDayRowHtml=function(t,e){var n=this.view.calendar.theme,r=["fc-row","fc-week",n.getClass("dayRow")];return e&&r.push("fc-rigid"),'<div class="'+r.join(" ")+'"><div class="fc-bg"><table class="'+n.getClass("tableGrid")+'">'+this.renderBgTrHtml(t)+'</table></div><div class="fc-content-skeleton"><table>'+(this.getIsNumbersVisible()?"<thead>"+this.renderNumberTrHtml(t)+"</thead>":"")+"</table></div></div>"},e.prototype.getIsNumbersVisible=function(){return this.getIsDayNumbersVisible()||this.cellWeekNumbersVisible},e.prototype.getIsDayNumbersVisible=function(){return this.rowCnt>1},e.prototype.renderNumberTrHtml=function(t){return"<tr>"+(this.isRTL?"":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):"")+"</tr>"},e.prototype.renderNumberIntroHtml=function(t){return this.renderIntroHtml()},e.prototype.renderNumberCellsHtml=function(t){var e,n,r=[];for(e=0;e<this.colCnt;e++)n=this.getCellDate(t,e),r.push(this.renderNumberCellHtml(n));return r.join("")},e.prototype.renderNumberCellHtml=function(t){var e,n,r=this.view,i="",o=this.dateProfile.activeUnzonedRange.containsDate(t),s=this.getIsDayNumbersVisible()&&o;return s||this.cellWeekNumbersVisible?(e=this.getDayClasses(t),e.unshift("fc-day-top"),this.cellWeekNumbersVisible&&(n="ISO"===t._locale._fullCalendar_weekCalc?1:t._locale.firstDayOfWeek()),i+='<td class="'+e.join(" ")+'"'+(o?' data-date="'+t.format()+'"':"")+">",this.cellWeekNumbersVisible&&t.day()===n&&(i+=r.buildGotoAnchorHtml({date:t,type:"week"},{class:"fc-week-number"},t.format("w"))),s&&(i+=r.buildGotoAnchorHtml(t,{class:"fc-day-number"},t.format("D"))),i+="</td>"):"<td></td>"},e.prototype.prepareHits=function(){this.colCoordCache.build(),this.rowCoordCache.build(),this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},e.prototype.releaseHits=function(){this.colCoordCache.clear(),this.rowCoordCache.clear()},e.prototype.queryHit=function(t,e){if(this.colCoordCache.isLeftInBounds(t)&&this.rowCoordCache.isTopInBounds(e)){var n=this.colCoordCache.getHorizontalIndex(t),r=this.rowCoordCache.getVerticalIndex(e);if(null!=r&&null!=n)return this.getCellHit(r,n)}},e.prototype.getHitFootprint=function(t){var e=this.getCellRange(t.row,t.col);return new u.default(new l.default(e.start,e.end),!0)},e.prototype.getHitEl=function(t){return this.getCellEl(t.row,t.col)},e.prototype.getCellHit=function(t,e){return{row:t,col:e,component:this,left:this.colCoordCache.getLeftOffset(e),right:this.colCoordCache.getRightOffset(e),top:this.rowCoordCache.getTopOffset(t),bottom:this.rowCoordCache.getBottomOffset(t)}},e.prototype.getCellEl=function(t,e){return this.cellEls.eq(t*this.colCnt+e)},e.prototype.executeEventUnrender=function(){this.removeSegPopover(),t.prototype.executeEventUnrender.call(this)},e.prototype.getOwnEventSegs=function(){return t.prototype.getOwnEventSegs.call(this).concat(this.popoverSegs||[])},e.prototype.renderDrag=function(t,e,n){var r;for(r=0;r<t.length;r++)this.renderHighlight(t[r].componentFootprint);if(t.length&&e&&e.component!==this)return this.helperRenderer.renderEventDraggingFootprints(t,e,n),!0},e.prototype.unrenderDrag=function(){this.unrenderHighlight(),this.helperRenderer.unrender()},e.prototype.renderEventResize=function(t,e,n){var r;for(r=0;r<t.length;r++)this.renderHighlight(t[r].componentFootprint);this.helperRenderer.renderEventResizingFootprints(t,e,n)},e.prototype.unrenderEventResize=function(){this.unrenderHighlight(),this.helperRenderer.unrender()},e.prototype.removeSegPopover=function(){this.segPopover&&this.segPopover.hide()},e.prototype.limitRows=function(t){var e,n,r=this.eventRenderer.rowStructs||[];for(e=0;e<r.length;e++)this.unlimitRow(e),!1!==(n=!!t&&("number"==typeof t?t:this.computeRowLevelLimit(e)))&&this.limitRow(e,n)},e.prototype.computeRowLevelLimit=function(t){function e(t,e){o=Math.max(o,i(e).outerHeight())}var n,r,o,s=this.rowEls.eq(t),a=s.height(),l=this.eventRenderer.rowStructs[t].tbodyEl.children();for(n=0;n<l.length;n++)if(r=l.eq(n).removeClass("fc-limited"),o=0,r.find("> td > :first-child").each(e),r.position().top+o>a)return n;return!1},e.prototype.limitRow=function(t,e){var n,r,o,s,a,l,u,d,c,p,h,f,g,v,y,m=this,b=this.eventRenderer.rowStructs[t],w=[],D=0,E=function(n){for(;D<n;)l=m.getCellSegs(t,D,e),l.length&&(c=r[e-1][D],y=m.renderMoreLink(t,D,l),v=i("<div>").append(y),c.append(v),w.push(v[0])),D++};if(e&&e<b.segLevels.length){for(n=b.segLevels[e-1],r=b.cellMatrix,o=b.tbodyEl.children().slice(e).addClass("fc-limited").get(),s=0;s<n.length;s++){for(a=n[s],E(a.leftCol),d=[],u=0;D<=a.rightCol;)l=this.getCellSegs(t,D,e),d.push(l),u+=l.length,D++;if(u){for(c=r[e-1][a.leftCol],p=c.attr("rowspan")||1,h=[],f=0;f<d.length;f++)g=i('<td class="fc-more-cell">').attr("rowspan",p),l=d[f],y=this.renderMoreLink(t,a.leftCol+f,[a].concat(l)),v=i("<div>").append(y),g.append(v),h.push(g[0]),w.push(g[0]);c.addClass("fc-limited").after(i(h)),o.push(c[0])}}E(this.colCnt),b.moreEls=i(w),b.limitedEls=i(o)}},e.prototype.unlimitRow=function(t){var e=this.eventRenderer.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},e.prototype.renderMoreLink=function(t,e,n){var r=this,o=this.view;return i('<a class="fc-more">').text(this.getMoreLinkText(n.length)).on("click",function(s){var a=r.opt("eventLimitClick"),l=r.getCellDate(t,e),u=i(s.currentTarget),d=r.getCellEl(t,e),c=r.getCellSegs(t,e),p=r.resliceDaySegs(c,l),h=r.resliceDaySegs(n,l);"function"==typeof a&&(a=r.publiclyTrigger("eventLimitClick",{context:o,args:[{date:l.clone(),dayEl:d,moreEl:u,segs:p,hiddenSegs:h},s,o]})),"popover"===a?r.showSegPopover(t,e,u,p):"string"==typeof a&&o.calendar.zoomTo(l,a)})},e.prototype.showSegPopover=function(t,e,n,r){var i,o,s=this,l=this.view,u=n.parent();i=1===this.rowCnt?l.el:this.rowEls.eq(t),o={className:"fc-more-popover "+l.calendar.theme.getClass("popover"),content:this.renderSegPopoverContent(t,e,r),parentEl:l.el,top:i.offset().top,autoHide:!0,viewportConstrain:this.opt("popoverViewportConstrain"),hide:function(){s.popoverSegs&&s.triggerBeforeEventSegsDestroyed(s.popoverSegs),s.segPopover.removeElement(),s.segPopover=null,s.popoverSegs=null}},this.isRTL?o.right=u.offset().left+u.outerWidth()+1:o.left=u.offset().left-1,this.segPopover=new a.default(o),this.segPopover.show(),this.bindAllSegHandlersToEl(this.segPopover.el),this.triggerAfterEventSegsRendered(r)},e.prototype.renderSegPopoverContent=function(t,e,n){var r,s=this.view,a=s.calendar.theme,l=this.getCellDate(t,e).format(this.opt("dayPopoverFormat")),u=i('<div class="fc-header '+a.getClass("popoverHeader")+'"><span class="fc-close '+a.getIconClass("close")+'"></span><span class="fc-title">'+o.htmlEscape(l)+'</span><div class="fc-clear"></div></div><div class="fc-body '+a.getClass("popoverContent")+'"><div class="fc-event-container"></div></div>'),d=u.find(".fc-event-container");for(n=this.eventRenderer.renderFgSegEls(n,!0),this.popoverSegs=n,r=0;r<n.length;r++)this.hitsNeeded(),n[r].hit=this.getCellHit(t,e),this.hitsNotNeeded(),d.append(n[r].el);return u},e.prototype.resliceDaySegs=function(t,e){var n,r,o,s=e.clone(),a=s.clone().add(1,"days"),c=new l.default(s,a),p=[];for(n=0;n<t.length;n++)r=t[n],(o=r.footprint.componentFootprint.unzonedRange.intersect(c))&&p.push(i.extend({},r,{footprint:new d.default(new u.default(o,r.footprint.componentFootprint.isAllDay),r.footprint.eventDef,r.footprint.eventInstance),isStart:r.isStart&&o.isStart,isEnd:r.isEnd&&o.isEnd}));return this.eventRenderer.sortEventSegs(p),p},e.prototype.getMoreLinkText=function(t){var e=this.opt("eventLimitText");return"function"==typeof e?e(t):"+"+t+" "+e},e.prototype.getCellSegs=function(t,e,n){for(var r,i=this.eventRenderer.rowStructs[t].segMatrix,o=n||0,s=[];o<i.length;)r=i[o][e],r&&s.push(r),o++;return s},e}(h.default);e.default=m,m.prototype.eventRendererClass=g.default,m.prototype.businessHourRendererClass=c.default,m.prototype.helperRendererClass=v.default,m.prototype.fillRendererClass=y.default,p.default.mixInto(m),f.default.mixInto(m)},function(t,e,n){function r(t){return function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.colWeekNumbersVisible=!1,e}return i.__extends(e,t),e.prototype.renderHeadIntroHtml=function(){var t=this.view;return this.colWeekNumbersVisible?'<th class="fc-week-number '+t.calendar.theme.getClass("widgetHeader")+'" '+t.weekNumberStyleAttr()+"><span>"+s.htmlEscape(this.opt("weekNumberTitle"))+"</span></th>":""},e.prototype.renderNumberIntroHtml=function(t){var e=this.view,n=this.getCellDate(t,0);return this.colWeekNumbersVisible?'<td class="fc-week-number" '+e.weekNumberStyleAttr()+">"+e.buildGotoAnchorHtml({date:n,type:"week",forceOff:1===this.colCnt},n.format("w"))+"</td>":""},e.prototype.renderBgIntroHtml=function(){var t=this.view;return this.colWeekNumbersVisible?'<td class="fc-week-number '+t.calendar.theme.getClass("widgetContent")+'" '+t.weekNumberStyleAttr()+"></td>":""},e.prototype.renderIntroHtml=function(){var t=this.view;return this.colWeekNumbersVisible?'<td class="fc-week-number" '+t.weekNumberStyleAttr()+"></td>":""},e.prototype.getIsNumbersVisible=function(){return d.default.prototype.getIsNumbersVisible.apply(this,arguments)||this.colWeekNumbersVisible},e}(t)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(3),s=n(4),a=n(41),l=n(43),u=n(68),d=n(66),c=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.dayGrid=r.instantiateDayGrid(),r.dayGrid.isRigid=r.hasRigidRows(),r.opt("weekNumbers")&&(r.opt("weekNumbersWithinDays")?(r.dayGrid.cellWeekNumbersVisible=!0,r.dayGrid.colWeekNumbersVisible=!1):(r.dayGrid.cellWeekNumbersVisible=!1,r.dayGrid.colWeekNumbersVisible=!0)),r.addChild(r.dayGrid),r.scroller=new a.default({overflowX:"hidden",overflowY:"auto"}),r}return i.__extends(e,t),e.prototype.instantiateDayGrid=function(){return new(r(this.dayGridClass))(this)},e.prototype.executeDateRender=function(e){this.dayGrid.breakOnWeeks=/year|month|week/.test(e.currentRangeUnit),t.prototype.executeDateRender.call(this,e)},e.prototype.renderSkeleton=function(){var t,e;this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.scroller.render(),t=this.scroller.el.addClass("fc-day-grid-container"),e=o('<div class="fc-day-grid">').appendTo(t),this.el.find(".fc-body > tr > td").append(t),this.dayGrid.headContainerEl=this.el.find(".fc-head-container"),this.dayGrid.setElement(e)},e.prototype.unrenderSkeleton=function(){this.dayGrid.removeElement(),this.scroller.destroy()},e.prototype.renderSkeletonHtml=function(){var t=this.calendar.theme;return'<table class="'+t.getClass("tableGrid")+'">'+(this.opt("columnHeader")?'<thead class="fc-head"><tr><td class="fc-head-container '+t.getClass("widgetHeader")+'"> </td></tr></thead>':"")+'<tbody class="fc-body"><tr><td class="'+t.getClass("widgetContent")+'"></td></tr></tbody></table>'},e.prototype.weekNumberStyleAttr=function(){return null!=this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},e.prototype.hasRigidRows=function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},e.prototype.updateSize=function(e,n,r){var i,o,a=this.opt("eventLimit"),l=this.dayGrid.headContainerEl.find(".fc-row");if(!this.dayGrid.rowEls)return void(n||(i=this.computeScrollerHeight(e),this.scroller.setHeight(i)));t.prototype.updateSize.call(this,e,n,r),this.dayGrid.colWeekNumbersVisible&&(this.weekNumberWidth=s.matchCellWidths(this.el.find(".fc-week-number"))),this.scroller.clear(),s.uncompensateScroll(l),this.dayGrid.removeSegPopover(),a&&"number"==typeof a&&this.dayGrid.limitRows(a),i=this.computeScrollerHeight(e),this.setGridHeight(i,n),a&&"number"!=typeof a&&this.dayGrid.limitRows(a),n||(this.scroller.setHeight(i),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(s.compensateScroll(l,o),i=this.computeScrollerHeight(e),this.scroller.setHeight(i)),this.scroller.lockOverflow(o))},e.prototype.computeScrollerHeight=function(t){return t-s.subtractInnerElHeight(this.el,this.scroller.el)},e.prototype.setGridHeight=function(t,e){e?s.undistributeHeight(this.dayGrid.rowEls):s.distributeHeight(this.dayGrid.rowEls,t,!0)},e.prototype.computeInitialDateScroll=function(){return{top:0}},e.prototype.queryDateScroll=function(){return{top:this.scroller.getScrollTop()}},e.prototype.applyDateScroll=function(t){void 0!==t.top&&this.scroller.setScrollTop(t.top)},e}(l.default);e.default=c,c.prototype.dateProfileGeneratorClass=u.default,c.prototype.dayGridClass=d.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(5),o=n(55),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.buildRenderRange=function(e,n,r){var o=t.prototype.buildRenderRange.call(this,e,n,r),s=this.msToUtcMoment(o.startMs,r),a=this.msToUtcMoment(o.endMs,r);return/^(year|month)$/.test(n)&&(s.startOf("week"),a.weekday()&&a.add(1,"week").startOf("week")),new i.default(s,a)},e}(o.default);e.default=s},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,e,n){function r(t,e,n){var r;for(r=0;r<t.length;r++)if(!e(t[r].eventInstance.toLegacy(),n?n.toLegacy():null))return!1;return!0}function i(t,e){var n,r,i,o,s=e.toLegacy();for(n=0;n<t.length;n++){if(r=t[n].eventInstance,i=r.def,!1===(o=i.getOverlap()))return!1;if("function"==typeof o&&!o(r.toLegacy(),s))return!1}return!0}Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),s=n(12),a=n(36),l=n(6),u=n(19),d=function(){function t(t,e){this.eventManager=t,this._calendar=e}return t.prototype.opt=function(t){return this._calendar.opt(t)},t.prototype.isEventInstanceGroupAllowed=function(t){var e,n=t.getEventDef(),r=this.eventRangesToEventFootprints(t.getAllEventRanges()),i=this.getPeerEventInstances(n),o=i.map(u.eventInstanceToEventRange),s=this.eventRangesToEventFootprints(o),a=n.getConstraint(),l=n.getOverlap(),d=this.opt("eventAllow");for(e=0;e<r.length;e++)if(!this.isFootprintAllowed(r[e].componentFootprint,s,a,l,r[e].eventInstance))return!1;if(d)for(e=0;e<r.length;e++)if(!1===d(r[e].componentFootprint.toLegacy(this._calendar),r[e].getEventLegacy()))return!1;return!0},t.prototype.getPeerEventInstances=function(t){return this.eventManager.getEventInstancesWithoutId(t.id)},t.prototype.isSelectionFootprintAllowed=function(t){var e,n=this.eventManager.getEventInstances(),r=n.map(u.eventInstanceToEventRange),i=this.eventRangesToEventFootprints(r);return!!this.isFootprintAllowed(t,i,this.opt("selectConstraint"),this.opt("selectOverlap"))&&(!(e=this.opt("selectAllow"))||!1!==e(t.toLegacy(this._calendar)))},t.prototype.isFootprintAllowed=function(t,e,n,o,s){var a,l;if(null!=n&&(a=this.constraintValToFootprints(n,t.isAllDay),!this.isFootprintWithinConstraints(t,a)))return!1;if(l=this.collectOverlapEventFootprints(e,t),!1===o){if(l.length)return!1}else if("function"==typeof o&&!r(l,o,s))return!1;return!(s&&!i(l,s))},t.prototype.isFootprintWithinConstraints=function(t,e){var n;for(n=0;n<e.length;n++)if(this.footprintContainsFootprint(e[n],t))return!0;return!1},t.prototype.constraintValToFootprints=function(t,e){var n;return"businessHours"===t?this.buildCurrentBusinessFootprints(e):"object"==typeof t?(n=this.parseEventDefToInstances(t),n?this.eventInstancesToFootprints(n):this.parseFootprints(t)):null!=t?(n=this.eventManager.getEventInstancesWithId(t),this.eventInstancesToFootprints(n)):void 0},t.prototype.buildCurrentBusinessFootprints=function(t){var e=this._calendar.view,n=e.get("businessHourGenerator"),r=e.dateProfile.activeUnzonedRange,i=n.buildEventInstanceGroup(t,r);return i?this.eventInstancesToFootprints(i.eventInstances):[]},t.prototype.eventInstancesToFootprints=function(t){var e=t.map(u.eventInstanceToEventRange);return this.eventRangesToEventFootprints(e).map(u.eventFootprintToComponentFootprint)},t.prototype.collectOverlapEventFootprints=function(t,e){var n,r=[];for(n=0;n<t.length;n++)this.footprintsIntersect(e,t[n].componentFootprint)&&r.push(t[n]);return r},t.prototype.parseEventDefToInstances=function(t){var e=this.eventManager,n=a.default.parse(t,new l.default(this._calendar));return!!n&&n.buildInstances(e.currentPeriod.unzonedRange)},t.prototype.eventRangesToEventFootprints=function(t){var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.eventRangeToEventFootprints(t[e]));return n},t.prototype.eventRangeToEventFootprints=function(t){return[u.eventRangeToEventFootprint(t)]},t.prototype.parseFootprints=function(t){var e,n;return t.start&&(e=this._calendar.moment(t.start),e.isValid()||(e=null)),t.end&&(n=this._calendar.moment(t.end),n.isValid()||(n=null)),[new s.default(new o.default(e,n),e&&!e.hasTime()||n&&!n.hasTime())]},t.prototype.footprintContainsFootprint=function(t,e){return t.unzonedRange.containsRange(e.unzonedRange)},t.prototype.footprintsIntersect=function(t,e){return t.unzonedRange.intersectsWith(e.unzonedRange)},t}();e.default=d},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(19),o=n(20),s=n(54),a=n(6),l={start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},u=function(){function t(t,e){this.rawComplexDef=t,this.calendar=e}return t.prototype.buildEventInstanceGroup=function(t,e){var n,r=this.buildEventDefs(t);if(r.length)return n=new o.default(i.eventDefsToEventInstances(r,e)),n.explicitEventDef=r[0],n},t.prototype.buildEventDefs=function(t){var e,n=this.rawComplexDef,i=[],o=!1,s=[];for(!0===n?i=[{}]:r.isPlainObject(n)?i=[n]:r.isArray(n)&&(i=n,o=!0),e=0;e<i.length;e++)o&&!i[e].dow||s.push(this.buildEventDef(t,i[e]));return s},t.prototype.buildEventDef=function(t,e){var n=r.extend({},l,e);return t&&(n.start=null,n.end=null),s.default.parse(n,new a.default(this.calendar))},t}();e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(21),s=n(13),a=n(5),l=n(20),u=function(){function t(t,e,n){this.pendingCnt=0,this.freezeDepth=0,this.stuntedReleaseCnt=0,this.releaseCnt=0,this.start=t,this.end=e,this.timezone=n,this.unzonedRange=new a.default(t.clone().stripZone(),e.clone().stripZone()),this.requestsByUid={},this.eventDefsByUid={},this.eventDefsById={},this.eventInstanceGroupsById={}}return t.prototype.isWithinRange=function(t,e){return!t.isBefore(this.start)&&!e.isAfter(this.end)},t.prototype.requestSources=function(t){this.freeze();for(var e=0;e<t.length;e++)this.requestSource(t[e]);this.thaw()},t.prototype.requestSource=function(t){var e=this,n={source:t,status:"pending",eventDefs:null};this.requestsByUid[t.uid]=n,this.pendingCnt+=1,t.fetch(this.start,this.end,this.timezone).then(function(t){"cancelled"!==n.status&&(n.status="completed",n.eventDefs=t,e.addEventDefs(t),e.pendingCnt--,e.tryRelease())},function(){"cancelled"!==n.status&&(n.status="failed",e.pendingCnt--,e.tryRelease())})},t.prototype.purgeSource=function(t){var e=this.requestsByUid[t.uid];e&&(delete this.requestsByUid[t.uid],"pending"===e.status?(e.status="cancelled",this.pendingCnt--,this.tryRelease()):"completed"===e.status&&e.eventDefs.forEach(this.removeEventDef.bind(this)))},t.prototype.purgeAllSources=function(){var t,e,n=this.requestsByUid,r=0;for(t in n)e=n[t],"pending"===e.status?e.status="cancelled":"completed"===e.status&&r++;this.requestsByUid={},this.pendingCnt=0,r&&this.removeAllEventDefs()},t.prototype.getEventDefByUid=function(t){return this.eventDefsByUid[t]},t.prototype.getEventDefsById=function(t){var e=this.eventDefsById[t];return e?e.slice():[]},t.prototype.addEventDefs=function(t){for(var e=0;e<t.length;e++)this.addEventDef(t[e])},t.prototype.addEventDef=function(t){var e,n=this.eventDefsById,r=t.id,i=n[r]||(n[r]=[]),o=t.buildInstances(this.unzonedRange);for(i.push(t),this.eventDefsByUid[t.uid]=t,e=0;e<o.length;e++)this.addEventInstance(o[e],r)},t.prototype.removeEventDefsById=function(t){var e=this;this.getEventDefsById(t).forEach(function(t){e.removeEventDef(t)})},t.prototype.removeAllEventDefs=function(){var t=r.isEmptyObject(this.eventDefsByUid);this.eventDefsByUid={},this.eventDefsById={},this.eventInstanceGroupsById={},t||this.tryRelease()},t.prototype.removeEventDef=function(t){var e=this.eventDefsById,n=e[t.id];delete this.eventDefsByUid[t.uid],n&&(i.removeExact(n,t),n.length||delete e[t.id],this.removeEventInstancesForDef(t))},t.prototype.getEventInstances=function(){var t,e=this.eventInstanceGroupsById,n=[];for(t in e)n.push.apply(n,e[t].eventInstances);return n},t.prototype.getEventInstancesWithId=function(t){var e=this.eventInstanceGroupsById[t];return e?e.eventInstances.slice():[]},t.prototype.getEventInstancesWithoutId=function(t){var e,n=this.eventInstanceGroupsById,r=[];for(e in n)e!==t&&r.push.apply(r,n[e].eventInstances);return r},t.prototype.addEventInstance=function(t,e){var n=this.eventInstanceGroupsById;(n[e]||(n[e]=new l.default)).eventInstances.push(t),this.tryRelease()},t.prototype.removeEventInstancesForDef=function(t){var e,n=this.eventInstanceGroupsById,r=n[t.id];r&&(e=i.removeMatching(r.eventInstances,function(e){return e.def===t}),r.eventInstances.length||delete n[t.id],e&&this.tryRelease())},t.prototype.tryRelease=function(){this.pendingCnt||(this.freezeDepth?this.stuntedReleaseCnt++:this.release())},t.prototype.release=function(){this.releaseCnt++,this.trigger("release",this.eventInstanceGroupsById)},t.prototype.whenReleased=function(){var t=this;return this.releaseCnt?o.default.resolve(this.eventInstanceGroupsById):o.default.construct(function(e){t.one("release",e)})},t.prototype.freeze=function(){this.freezeDepth++||(this.stuntedReleaseCnt=0)},t.prototype.thaw=function(){--this.freezeDepth||!this.stuntedReleaseCnt||this.pendingCnt||this.release()},t}();e.default=u,s.default.mixInto(u)},function(t,e,n){function r(t,e){return t.getPrimitive()===e.getPrimitive()}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=n(4),s=n(219),a=n(56),l=n(6),u=n(38),d=n(9),c=n(20),p=n(13),h=n(7),f=function(){function t(t){this.calendar=t,this.stickySource=new a.default(t),this.otherSources=[]}return t.prototype.requestEvents=function(t,e,n,r){return!r&&this.currentPeriod&&this.currentPeriod.isWithinRange(t,e)&&n===this.currentPeriod.timezone||this.setPeriod(new s.default(t,e,n)),this.currentPeriod.whenReleased()},t.prototype.addSource=function(t){this.otherSources.push(t),this.currentPeriod&&this.currentPeriod.requestSource(t)},t.prototype.removeSource=function(t){o.removeExact(this.otherSources,t),this.currentPeriod&&this.currentPeriod.purgeSource(t)},t.prototype.removeAllSources=function(){this.otherSources=[],this.currentPeriod&&this.currentPeriod.purgeAllSources()},t.prototype.refetchSource=function(t){var e=this.currentPeriod;e&&(e.freeze(),e.purgeSource(t),e.requestSource(t),e.thaw())},t.prototype.refetchAllSources=function(){var t=this.currentPeriod;t&&(t.freeze(),t.purgeAllSources(),t.requestSources(this.getSources()),t.thaw())},t.prototype.getSources=function(){return[this.stickySource].concat(this.otherSources)},t.prototype.multiQuerySources=function(t){t?i.isArray(t)||(t=[t]):t=[];var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.querySources(t[e]));return n},t.prototype.querySources=function(t){var e,n,o=this.otherSources;for(e=0;e<o.length;e++)if((n=o[e])===t)return[n];return(n=this.getSourceById(l.default.normalizeId(t)))?[n]:(t=u.default.parse(t,this.calendar),t?i.grep(o,function(e){return r(t,e)}):void 0)},t.prototype.getSourceById=function(t){return i.grep(this.otherSources,function(e){return e.id&&e.id===t})[0]},t.prototype.setPeriod=function(t){this.currentPeriod&&(this.unbindPeriod(this.currentPeriod),this.currentPeriod=null),this.currentPeriod=t,this.bindPeriod(t),t.requestSources(this.getSources())},t.prototype.bindPeriod=function(t){this.listenTo(t,"release",function(t){this.trigger("release",t)})},t.prototype.unbindPeriod=function(t){this.stopListeningTo(t)},t.prototype.getEventDefByUid=function(t){if(this.currentPeriod)return this.currentPeriod.getEventDefByUid(t)},t.prototype.addEventDef=function(t,e){e&&this.stickySource.addEventDef(t),this.currentPeriod&&this.currentPeriod.addEventDef(t)},t.prototype.removeEventDefsById=function(t){this.getSources().forEach(function(e){e.removeEventDefsById(t)}),this.currentPeriod&&this.currentPeriod.removeEventDefsById(t)},t.prototype.removeAllEventDefs=function(){this.getSources().forEach(function(t){t.removeAllEventDefs()}),this.currentPeriod&&this.currentPeriod.removeAllEventDefs()},t.prototype.mutateEventsWithId=function(t,e){var n,r=this.currentPeriod,i=[];return r?(r.freeze(),n=r.getEventDefsById(t),n.forEach(function(t){r.removeEventDef(t),i.push(e.mutateSingle(t)),r.addEventDef(t)}),r.thaw(),function(){r.freeze();for(var t=0;t<n.length;t++)r.removeEventDef(n[t]),i[t](),r.addEventDef(n[t]);r.thaw()}):function(){}},t.prototype.buildMutatedEventInstanceGroup=function(t,e){var n,r,i=this.getEventDefsById(t),o=[];for(n=0;n<i.length;n++)(r=i[n].clone())instanceof d.default&&(e.mutateSingle(r),o.push.apply(o,r.buildInstances()));return new c.default(o)},t.prototype.freeze=function(){this.currentPeriod&&this.currentPeriod.freeze()},t.prototype.thaw=function(){this.currentPeriod&&this.currentPeriod.thaw()},t.prototype.getEventDefsById=function(t){return this.currentPeriod.getEventDefsById(t)},t.prototype.getEventInstances=function(){return this.currentPeriod.getEventInstances()},t.prototype.getEventInstancesWithId=function(t){return this.currentPeriod.getEventInstancesWithId(t)},t.prototype.getEventInstancesWithoutId=function(t){ return this.currentPeriod.getEventInstancesWithoutId(t)},t}();e.default=f,p.default.mixInto(f),h.default.mixInto(f)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"fc-unthemed",widgetHeader:"fc-widget-header",widgetContent:"fc-widget-content",buttonGroup:"fc-button-group",button:"fc-button",cornerLeft:"fc-corner-left",cornerRight:"fc-corner-right",stateDefault:"fc-state-default",stateActive:"fc-state-active",stateDisabled:"fc-state-disabled",stateHover:"fc-state-hover",stateDown:"fc-state-down",popoverHeader:"fc-widget-header",popoverContent:"fc-widget-content",headerRow:"fc-widget-header",dayRow:"fc-widget-content",listView:"fc-widget-content"},o.prototype.baseIconClass="fc-icon",o.prototype.iconClasses={close:"fc-icon-x",prev:"fc-icon-left-single-arrow",next:"fc-icon-right-single-arrow",prevYear:"fc-icon-left-double-arrow",nextYear:"fc-icon-right-double-arrow"},o.prototype.iconOverrideOption="buttonIcons",o.prototype.iconOverrideCustomButtonOption="icon",o.prototype.iconOverridePrefix="fc-icon-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"ui-widget",widgetHeader:"ui-widget-header",widgetContent:"ui-widget-content",buttonGroup:"fc-button-group",button:"ui-button",cornerLeft:"ui-corner-left",cornerRight:"ui-corner-right",stateDefault:"ui-state-default",stateActive:"ui-state-active",stateDisabled:"ui-state-disabled",stateHover:"ui-state-hover",stateDown:"ui-state-down",today:"ui-state-highlight",popoverHeader:"ui-widget-header",popoverContent:"ui-widget-content",headerRow:"ui-widget-header",dayRow:"ui-widget-content",listView:"ui-widget-content"},o.prototype.baseIconClass="ui-icon",o.prototype.iconClasses={close:"ui-icon-closethick",prev:"ui-icon-circle-triangle-w",next:"ui-icon-circle-triangle-e",prevYear:"ui-icon-seek-prev",nextYear:"ui-icon-seek-next"},o.prototype.iconOverrideOption="themeButtonIcons",o.prototype.iconOverrideCustomButtonOption="themeIcon",o.prototype.iconOverridePrefix="ui-icon-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(21),s=n(6),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.parse=function(t,e){var n;return i.isFunction(t.events)?n=t:i.isFunction(t)&&(n={events:t}),!!n&&s.default.parse.call(this,n,e)},e.prototype.fetch=function(t,e,n){var r=this;return this.calendar.pushLoading(),o.default.construct(function(i){r.func.call(r.calendar,t.clone(),e.clone(),n,function(t){r.calendar.popLoading(),i(r.parseEventDefs(t))})})},e.prototype.getPrimitive=function(){return this.func},e.prototype.applyManualStandardProps=function(e){var n=t.prototype.applyManualStandardProps.call(this,e);return this.func=e.events,n},e}(s.default);e.default=a,a.defineStandardProps({events:!1})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(21),a=n(6),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.parse=function(t,e){var n;return"string"==typeof t.url?n=t:"string"==typeof t&&(n={url:t}),!!n&&a.default.parse.call(this,n,e)},e.prototype.fetch=function(t,n,r){var a=this,l=this.ajaxSettings,u=l.success,d=l.error,c=this.buildRequestParams(t,n,r);return this.calendar.pushLoading(),s.default.construct(function(t,n){i.ajax(i.extend({},e.AJAX_DEFAULTS,l,{url:a.url,data:c,success:function(e,r,s){var l;a.calendar.popLoading(),e?(l=o.applyAll(u,a,[e,r,s]),i.isArray(l)&&(e=l),t(a.parseEventDefs(e))):n()},error:function(t,e,r){a.calendar.popLoading(),o.applyAll(d,a,[t,e,r]),n()}}))})},e.prototype.buildRequestParams=function(t,e,n){var r,o,s,a,l=this.calendar,u=this.ajaxSettings,d={};return r=this.startParam,null==r&&(r=l.opt("startParam")),o=this.endParam,null==o&&(o=l.opt("endParam")),s=this.timezoneParam,null==s&&(s=l.opt("timezoneParam")),a=i.isFunction(u.data)?u.data():u.data||{},i.extend(d,a),d[r]=t.format(),d[o]=e.format(),n&&"local"!==n&&(d[s]=n),d},e.prototype.getPrimitive=function(){return this.url},e.prototype.applyMiscProps=function(t){this.ajaxSettings=t},e.AJAX_DEFAULTS={dataType:"json",cache:!1},e}(a.default);e.default=l,l.defineStandardProps({url:!0,startParam:!0,endParam:!0,timezoneParam:!0})},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this.items=t||[]}return t.prototype.proxyCall=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];var r=[];return this.items.forEach(function(n){r.push(n[t].apply(n,e))}),r},t}();e.default=n},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(7),s=function(){function t(t,e){this.isFollowing=!1,this.isHidden=!1,this.isAnimating=!1,this.options=e=e||{},this.sourceEl=t,this.parentEl=e.parentEl?r(e.parentEl):t.parent()}return t.prototype.start=function(t){this.isFollowing||(this.isFollowing=!0,this.y0=i.getEvY(t),this.x0=i.getEvX(t),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),i.getEvIsTouch(t)?this.listenTo(r(document),"touchmove",this.handleMove):this.listenTo(r(document),"mousemove",this.handleMove))},t.prototype.stop=function(t,e){var n=this,i=this.options.revertDuration,o=function(){n.isAnimating=!1,n.removeElement(),n.top0=n.left0=null,e&&e()};this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(r(document)),t&&i&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:i,complete:o})):o())},t.prototype.getEl=function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),t.addClass("fc-unselectable"),t.appendTo(this.parentEl)),t},t.prototype.removeElement=function(){this.el&&(this.el.remove(),this.el=null)},t.prototype.updatePosition=function(){var t,e;this.getEl(),null==this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},t.prototype.handleMove=function(t){this.topDelta=i.getEvY(t)-this.y0,this.leftDelta=i.getEvX(t)-this.x0,this.isHidden||this.updatePosition()},t.prototype.hide=function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},t.prototype.show=function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())},t}();e.default=s,o.default.mixInto(s)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=n(7),s=function(){function t(t){this.isHidden=!0,this.margin=10,this.options=t||{}}return t.prototype.show=function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},t.prototype.hide=function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},t.prototype.render=function(){var t=this,e=this.options;this.el=r('<div class="fc-popover">').addClass(e.className||"").css({top:0,left:0}).append(e.content).appendTo(e.parentEl),this.el.on("click",".fc-close",function(){t.hide()}),e.autoHide&&this.listenTo(r(document),"mousedown",this.documentMousedown)},t.prototype.documentMousedown=function(t){this.el&&!r(t.target).closest(this.el).length&&this.hide()},t.prototype.removeElement=function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(r(document),"mousedown")},t.prototype.position=function(){var t,e,n,o,s,a=this.options,l=this.el.offsetParent().offset(),u=this.el.outerWidth(),d=this.el.outerHeight(),c=r(window),p=i.getScrollParent(this.el);o=a.top||0,s=void 0!==a.left?a.left:void 0!==a.right?a.right-u:0,p.is(window)||p.is(document)?(p=c,t=0,e=0):(n=p.offset(),t=n.top,e=n.left),t+=c.scrollTop(),e+=c.scrollLeft(),!1!==a.viewportConstrain&&(o=Math.min(o,t+p.outerHeight()-d-this.margin),o=Math.max(o,t+this.margin),s=Math.min(s,e+p.outerWidth()-u-this.margin),s=Math.max(s,e+this.margin)),this.el.css({top:o-l.top,left:s-l.left})},t.prototype.trigger=function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))},t}();e.default=s,o.default.mixInto(s)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(13),i=function(){function t(){this.q=[],this.isPaused=!1,this.isRunning=!1}return t.prototype.queue=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];this.q.push.apply(this.q,t),this.tryStart()},t.prototype.pause=function(){this.isPaused=!0},t.prototype.resume=function(){this.isPaused=!1,this.tryStart()},t.prototype.getIsIdle=function(){return!this.isRunning&&!this.isPaused},t.prototype.tryStart=function(){!this.isRunning&&this.canRunNext()&&(this.isRunning=!0,this.trigger("start"),this.runRemaining())},t.prototype.canRunNext=function(){return!this.isPaused&&this.q.length},t.prototype.runRemaining=function(){var t,e,n=this;do{if(t=this.q.shift(),(e=this.runTask(t))&&e.then)return void e.then(function(){n.canRunNext()&&n.runRemaining()})}while(this.canRunNext());this.trigger("stop"),this.isRunning=!1,this.tryStart()},t.prototype.runTask=function(t){return t()},t}();e.default=i,r.default.mixInto(i)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(228),o=function(t){function e(e){var n=t.call(this)||this;return n.waitsByNamespace=e||{},n}return r.__extends(e,t),e.prototype.queue=function(t,e,n){var r,i={func:t,namespace:e,type:n};e&&(r=this.waitsByNamespace[e]),this.waitNamespace&&(e===this.waitNamespace&&null!=r?this.delayWait(r):(this.clearWait(),this.tryStart())),this.compoundTask(i)&&(this.waitNamespace||null==r?this.tryStart():this.startWait(e,r))},e.prototype.startWait=function(t,e){this.waitNamespace=t,this.spawnWait(e)},e.prototype.delayWait=function(t){clearTimeout(this.waitId),this.spawnWait(t)},e.prototype.spawnWait=function(t){var e=this;this.waitId=setTimeout(function(){e.waitNamespace=null,e.tryStart()},t)},e.prototype.clearWait=function(){this.waitNamespace&&(clearTimeout(this.waitId),this.waitId=null,this.waitNamespace=null)},e.prototype.canRunNext=function(){if(!t.prototype.canRunNext.call(this))return!1;if(this.waitNamespace){for(var e=this.q,n=0;n<e.length;n++)if(e[n].namespace!==this.waitNamespace)return!0;return!1}return!0},e.prototype.runTask=function(t){t.func()},e.prototype.compoundTask=function(t){var e,n,r=this.q,i=!0;if(t.namespace&&"destroy"===t.type)for(e=r.length-1;e>=0;e--)if(n=r[e],n.namespace===t.namespace)switch(n.type){case"init":i=!1;case"add":case"remove":r.splice(e,1)}return i&&r.push(t),i},e}(i.default);e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(51),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.setElement=function(t){this.el=t,this.bindGlobalHandlers(),this.renderSkeleton(),this.set("isInDom",!0)},e.prototype.removeElement=function(){this.unset("isInDom"),this.unrenderSkeleton(),this.unbindGlobalHandlers(),this.el.remove()},e.prototype.bindGlobalHandlers=function(){},e.prototype.unbindGlobalHandlers=function(){},e.prototype.renderSkeleton=function(){},e.prototype.unrenderSkeleton=function(){},e}(i.default);e.default=o},function(t,e,n){function r(t){var e,n,r,i=[];for(e in t)for(n=t[e].eventInstances,r=0;r<n.length;r++)i.push(n[r].toLegacy());return i}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(3),s=n(0),a=n(4),l=n(11),u=n(49),d=n(230),c=n(19),p=function(t){function e(n,r){var i=t.call(this)||this;return i.isRTL=!1,i.hitsNeededDepth=0,i.hasAllDayBusinessHours=!1,i.isDatesRendered=!1,n&&(i.view=n),r&&(i.options=r),i.uid=String(e.guid++),i.childrenByUid={},i.nextDayThreshold=s.duration(i.opt("nextDayThreshold")),i.isRTL=i.opt("isRTL"),i.fillRendererClass&&(i.fillRenderer=new i.fillRendererClass(i)),i.eventRendererClass&&(i.eventRenderer=new i.eventRendererClass(i,i.fillRenderer)),i.helperRendererClass&&i.eventRenderer&&(i.helperRenderer=new i.helperRendererClass(i,i.eventRenderer)),i.businessHourRendererClass&&i.fillRenderer&&(i.businessHourRenderer=new i.businessHourRendererClass(i,i.fillRenderer)),i}return i.__extends(e,t),e.prototype.addChild=function(t){return!this.childrenByUid[t.uid]&&(this.childrenByUid[t.uid]=t,!0)},e.prototype.removeChild=function(t){return!!this.childrenByUid[t.uid]&&(delete this.childrenByUid[t.uid],!0)},e.prototype.updateSize=function(t,e,n){this.callChildren("updateSize",arguments)},e.prototype.opt=function(t){return this._getView().opt(t)},e.prototype.publiclyTrigger=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this._getCalendar();return n.publiclyTrigger.apply(n,t)},e.prototype.hasPublicHandlers=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this._getCalendar();return n.hasPublicHandlers.apply(n,t)},e.prototype.executeDateRender=function(t){this.dateProfile=t,this.renderDates(t),this.isDatesRendered=!0,this.callChildren("executeDateRender",arguments)},e.prototype.executeDateUnrender=function(){this.callChildren("executeDateUnrender",arguments),this.dateProfile=null,this.unrenderDates(),this.isDatesRendered=!1},e.prototype.renderDates=function(t){},e.prototype.unrenderDates=function(){},e.prototype.getNowIndicatorUnit=function(){},e.prototype.renderNowIndicator=function(t){this.callChildren("renderNowIndicator",arguments)},e.prototype.unrenderNowIndicator=function(){this.callChildren("unrenderNowIndicator",arguments)},e.prototype.renderBusinessHours=function(t){this.businessHourRenderer&&this.businessHourRenderer.render(t),this.callChildren("renderBusinessHours",arguments)},e.prototype.unrenderBusinessHours=function(){this.callChildren("unrenderBusinessHours",arguments),this.businessHourRenderer&&this.businessHourRenderer.unrender()},e.prototype.executeEventRender=function(t){this.eventRenderer?(this.eventRenderer.rangeUpdated(),this.eventRenderer.render(t)):this.renderEvents&&this.renderEvents(r(t)),this.callChildren("executeEventRender",arguments)},e.prototype.executeEventUnrender=function(){this.callChildren("executeEventUnrender",arguments),this.eventRenderer?this.eventRenderer.unrender():this.destroyEvents&&this.destroyEvents()},e.prototype.getBusinessHourSegs=function(){var t=this.getOwnBusinessHourSegs();return this.iterChildren(function(e){t.push.apply(t,e.getBusinessHourSegs())}),t},e.prototype.getOwnBusinessHourSegs=function(){return this.businessHourRenderer?this.businessHourRenderer.getSegs():[]},e.prototype.getEventSegs=function(){var t=this.getOwnEventSegs();return this.iterChildren(function(e){t.push.apply(t,e.getEventSegs())}),t},e.prototype.getOwnEventSegs=function(){return this.eventRenderer?this.eventRenderer.getSegs():[]},e.prototype.triggerAfterEventsRendered=function(){this.triggerAfterEventSegsRendered(this.getEventSegs()),this.publiclyTrigger("eventAfterAllRender",{context:this,args:[this]})},e.prototype.triggerAfterEventSegsRendered=function(t){var e=this;this.hasPublicHandlers("eventAfterRender")&&t.forEach(function(t){var n;t.el&&(n=t.footprint.getEventLegacy(),e.publiclyTrigger("eventAfterRender",{context:n,args:[n,t.el,e]}))})},e.prototype.triggerBeforeEventsDestroyed=function(){this.triggerBeforeEventSegsDestroyed(this.getEventSegs())},e.prototype.triggerBeforeEventSegsDestroyed=function(t){var e=this;this.hasPublicHandlers("eventDestroy")&&t.forEach(function(t){var n;t.el&&(n=t.footprint.getEventLegacy(),e.publiclyTrigger("eventDestroy",{context:n,args:[n,t.el,e]}))})},e.prototype.showEventsWithId=function(t){this.getEventSegs().forEach(function(e){e.footprint.eventDef.id===t&&e.el&&e.el.css("visibility","")}),this.callChildren("showEventsWithId",arguments)},e.prototype.hideEventsWithId=function(t){this.getEventSegs().forEach(function(e){e.footprint.eventDef.id===t&&e.el&&e.el.css("visibility","hidden")}),this.callChildren("hideEventsWithId",arguments)},e.prototype.renderDrag=function(t,e,n){var r=!1;return this.iterChildren(function(i){i.renderDrag(t,e,n)&&(r=!0)}),r},e.prototype.unrenderDrag=function(){this.callChildren("unrenderDrag",arguments)},e.prototype.renderEventResize=function(t,e,n){this.callChildren("renderEventResize",arguments)},e.prototype.unrenderEventResize=function(){this.callChildren("unrenderEventResize",arguments)},e.prototype.renderSelectionFootprint=function(t){this.renderHighlight(t),this.callChildren("renderSelectionFootprint",arguments)},e.prototype.unrenderSelection=function(){this.unrenderHighlight(),this.callChildren("unrenderSelection",arguments)},e.prototype.renderHighlight=function(t){this.fillRenderer&&this.fillRenderer.renderFootprint("highlight",t,{getClasses:function(){return["fc-highlight"]}}),this.callChildren("renderHighlight",arguments)},e.prototype.unrenderHighlight=function(){this.fillRenderer&&this.fillRenderer.unrender("highlight"),this.callChildren("unrenderHighlight",arguments)},e.prototype.hitsNeeded=function(){this.hitsNeededDepth++||this.prepareHits(),this.callChildren("hitsNeeded",arguments)},e.prototype.hitsNotNeeded=function(){this.hitsNeededDepth&&!--this.hitsNeededDepth&&this.releaseHits(),this.callChildren("hitsNotNeeded",arguments)},e.prototype.prepareHits=function(){},e.prototype.releaseHits=function(){},e.prototype.queryHit=function(t,e){var n,r,i=this.childrenByUid;for(n in i)if(r=i[n].queryHit(t,e))break;return r},e.prototype.getSafeHitFootprint=function(t){var e=this.getHitFootprint(t);return this.dateProfile.activeUnzonedRange.containsRange(e.unzonedRange)?e:null},e.prototype.getHitFootprint=function(t){},e.prototype.getHitEl=function(t){},e.prototype.eventRangesToEventFootprints=function(t){var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.eventRangeToEventFootprints(t[e]));return n},e.prototype.eventRangeToEventFootprints=function(t){return[c.eventRangeToEventFootprint(t)]},e.prototype.eventFootprintsToSegs=function(t){var e,n=[];for(e=0;e<t.length;e++)n.push.apply(n,this.eventFootprintToSegs(t[e]));return n},e.prototype.eventFootprintToSegs=function(t){var e,n,r,i=t.componentFootprint.unzonedRange;for(e=this.componentFootprintToSegs(t.componentFootprint),n=0;n<e.length;n++)r=e[n],i.isStart||(r.isStart=!1),i.isEnd||(r.isEnd=!1),r.footprint=t;return e},e.prototype.componentFootprintToSegs=function(t){return[]},e.prototype.callChildren=function(t,e){this.iterChildren(function(n){n[t].apply(n,e)})},e.prototype.iterChildren=function(t){var e,n=this.childrenByUid;for(e in n)t(n[e])},e.prototype._getCalendar=function(){var t=this;return t.calendar||t.view.calendar},e.prototype._getView=function(){return this.view},e.prototype._getDateProfile=function(){return this._getView().get("dateProfile")},e.prototype.buildGotoAnchorHtml=function(t,e,n){var r,i,s,u;return o.isPlainObject(t)?(r=t.date,i=t.type,s=t.forceOff):r=t,r=l.default(r),u={date:r.format("YYYY-MM-DD"),type:i||"day"},"string"==typeof e&&(n=e,e=null),e=e?" "+a.attrsToStr(e):"",n=n||"",!s&&this.opt("navLinks")?"<a"+e+' data-goto="'+a.htmlEscape(JSON.stringify(u))+'">'+n+"</a>":"<span"+e+">"+n+"</span>"},e.prototype.getAllDayHtml=function(){return this.opt("allDayHtml")||a.htmlEscape(this.opt("allDayText"))},e.prototype.getDayClasses=function(t,e){var n,r=this._getView(),i=[];return this.dateProfile.activeUnzonedRange.containsDate(t)?(i.push("fc-"+a.dayIDs[t.day()]),r.isDateInOtherMonth(t,this.dateProfile)&&i.push("fc-other-month"),n=r.calendar.getNow(),t.isSame(n,"day")?(i.push("fc-today"),!0!==e&&i.push(r.calendar.theme.getClass("today"))):t<n?i.push("fc-past"):i.push("fc-future")):i.push("fc-disabled-day"),i},e.prototype.formatRange=function(t,e,n,r){var i=t.end;return e&&(i=i.clone().subtract(1)),u.formatRange(t.start,i,n,r,this.isRTL)},e.prototype.currentRangeAs=function(t){return this._getDateProfile().currentUnzonedRange.as(t)},e.prototype.computeDayRange=function(t){var e=this._getCalendar(),n=e.msToUtcMoment(t.startMs,!0),r=e.msToUtcMoment(t.endMs),i=+r.time(),o=r.clone().stripTime();return i&&i>=this.nextDayThreshold&&o.add(1,"days"),o<=n&&(o=n.clone().add(1,"days")),{start:n,end:o}},e.prototype.isMultiDayRange=function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1},e.guid=0,e}(d.default);e.default=p},function(t,e,n){function r(t,e){return null==e?t:i.isFunction(e)?t.filter(e):(e+="",t.filter(function(t){return t.id==e||t._id===e}))}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=n(0),s=n(4),a=n(33),l=n(225),u=n(23),d=n(13),c=n(7),p=n(257),h=n(258),f=n(259),g=n(217),v=n(32),y=n(11),m=n(5),b=n(12),w=n(16),D=n(220),E=n(218),S=n(38),C=n(36),R=n(9),T=n(39),M=n(6),I=n(57),H=function(){function t(t,e){this.loadingLevel=0,this.ignoreUpdateViewSize=0,this.freezeContentHeightDepth=0,u.default.needed(),this.el=t,this.viewsByType={},this.optionsManager=new h.default(this,e),this.viewSpecManager=new f.default(this.optionsManager,this),this.initMomentInternals(),this.initCurrentDate(),this.initEventManager(),this.constraints=new g.default(this.eventManager,this),this.constructed()}return t.prototype.constructed=function(){},t.prototype.getView=function(){return this.view},t.prototype.publiclyTrigger=function(t,e){var n,r,o=this.opt(t);if(i.isPlainObject(e)?(n=e.context,r=e.args):i.isArray(e)&&(r=e),null==n&&(n=this.el[0]),r||(r=[]),this.triggerWith(t,n,r),o)return o.apply(n,r)},t.prototype.hasPublicHandlers=function(t){return this.hasHandlers(t)||this.opt(t)},t.prototype.option=function(t,e){var n;if("string"==typeof t){if(void 0===e)return this.optionsManager.get(t);n={},n[t]=e,this.optionsManager.add(n)}else"object"==typeof t&&this.optionsManager.add(t)},t.prototype.opt=function(t){return this.optionsManager.get(t)},t.prototype.instantiateView=function(t){var e=this.viewSpecManager.getViewSpec(t);if(!e)throw new Error('View type "'+t+'" is not valid');return new e.class(this,e)},t.prototype.isValidViewType=function(t){return Boolean(this.viewSpecManager.getViewSpec(t))},t.prototype.changeView=function(t,e){e&&(e.start&&e.end?this.optionsManager.recordOverrides({visibleRange:e}):this.currentDate=this.moment(e).stripZone()),this.renderView(t)},t.prototype.zoomTo=function(t,e){var n;e=e||"day",n=this.viewSpecManager.getViewSpec(e)||this.viewSpecManager.getUnitViewSpec(e),this.currentDate=t.clone(),this.renderView(n?n.type:null)},t.prototype.initCurrentDate=function(){var t=this.opt("defaultDate");this.currentDate=null!=t?this.moment(t).stripZone():this.getNow()},t.prototype.prev=function(){var t=this.view,e=t.dateProfileGenerator.buildPrev(t.get("dateProfile"));e.isValid&&(this.currentDate=e.date,this.renderView())},t.prototype.next=function(){var t=this.view,e=t.dateProfileGenerator.buildNext(t.get("dateProfile"));e.isValid&&(this.currentDate=e.date,this.renderView())},t.prototype.prevYear=function(){this.currentDate.add(-1,"years"),this.renderView()},t.prototype.nextYear=function(){this.currentDate.add(1,"years"),this.renderView()},t.prototype.today=function(){this.currentDate=this.getNow(),this.renderView()},t.prototype.gotoDate=function(t){this.currentDate=this.moment(t).stripZone(),this.renderView()},t.prototype.incrementDate=function(t){this.currentDate.add(o.duration(t)),this.renderView()},t.prototype.getDate=function(){return this.applyTimezone(this.currentDate)},t.prototype.pushLoading=function(){this.loadingLevel++||this.publiclyTrigger("loading",[!0,this.view])},t.prototype.popLoading=function(){--this.loadingLevel||this.publiclyTrigger("loading",[!1,this.view])},t.prototype.render=function(){this.contentEl?this.elementVisible()&&(this.calcSize(),this.updateViewSize()):this.initialRender()},t.prototype.initialRender=function(){var t=this,e=this.el;e.addClass("fc"),e.on("click.fc","a[data-goto]",function(e){var n=i(e.currentTarget),r=n.data("goto"),o=t.moment(r.date),a=r.type,l=t.view.opt("navLink"+s.capitaliseFirstLetter(a)+"Click");"function"==typeof l?l(o,e):("string"==typeof l&&(a=l),t.zoomTo(o,a))}),this.optionsManager.watch("settingTheme",["?theme","?themeSystem"],function(n){var r=I.getThemeSystemClass(n.themeSystem||n.theme),i=new r(t.optionsManager),o=i.getClass("widget");t.theme=i,o&&e.addClass(o)},function(){var n=t.theme.getClass("widget");t.theme=null,n&&e.removeClass(n)}),this.optionsManager.watch("settingBusinessHourGenerator",["?businessHours"],function(e){t.businessHourGenerator=new E.default(e.businessHours,t),t.view&&t.view.set("businessHourGenerator",t.businessHourGenerator)},function(){t.businessHourGenerator=null}),this.optionsManager.watch("applyingDirClasses",["?isRTL","?locale"],function(t){e.toggleClass("fc-ltr",!t.isRTL),e.toggleClass("fc-rtl",t.isRTL)}),this.contentEl=i("<div class='fc-view-container'>").prependTo(e),this.initToolbars(),this.renderHeader(),this.renderFooter(),this.renderView(this.opt("defaultView")),this.opt("handleWindowResize")&&i(window).resize(this.windowResizeProxy=s.debounce(this.windowResize.bind(this),this.opt("windowResizeDelay")))},t.prototype.destroy=function(){this.view&&this.clearView(),this.toolbarsManager.proxyCall("removeElement"),this.contentEl.remove(),this.el.removeClass("fc fc-ltr fc-rtl"),this.optionsManager.unwatch("settingTheme"),this.optionsManager.unwatch("settingBusinessHourGenerator"),this.el.off(".fc"),this.windowResizeProxy&&(i(window).unbind("resize",this.windowResizeProxy),this.windowResizeProxy=null),u.default.unneeded()},t.prototype.elementVisible=function(){return this.el.is(":visible")},t.prototype.bindViewHandlers=function(t){var e=this;t.watch("titleForCalendar",["title"],function(n){t===e.view&&e.setToolbarsTitle(n.title)}),t.watch("dateProfileForCalendar",["dateProfile"],function(n){t===e.view&&(e.currentDate=n.dateProfile.date,e.updateToolbarButtons(n.dateProfile))})},t.prototype.unbindViewHandlers=function(t){t.unwatch("titleForCalendar"),t.unwatch("dateProfileForCalendar")},t.prototype.renderView=function(t){var e,n=this.view;this.freezeContentHeight(),n&&t&&n.type!==t&&this.clearView(),!this.view&&t&&(e=this.view=this.viewsByType[t]||(this.viewsByType[t]=this.instantiateView(t)),this.bindViewHandlers(e),e.startBatchRender(),e.setElement(i("<div class='fc-view fc-"+t+"-view'>").appendTo(this.contentEl)),this.toolbarsManager.proxyCall("activateButton",t)),this.view&&(this.view.get("businessHourGenerator")!==this.businessHourGenerator&&this.view.set("businessHourGenerator",this.businessHourGenerator),this.view.setDate(this.currentDate),e&&e.stopBatchRender()),this.thawContentHeight()},t.prototype.clearView=function(){var t=this.view;this.toolbarsManager.proxyCall("deactivateButton",t.type),this.unbindViewHandlers(t),t.removeElement(),t.unsetDate(),this.view=null},t.prototype.reinitView=function(){var t=this.view,e=t.queryScroll();this.freezeContentHeight(),this.clearView(),this.calcSize(),this.renderView(t.type),this.view.applyScroll(e),this.thawContentHeight()},t.prototype.getSuggestedViewHeight=function(){return null==this.suggestedViewHeight&&this.calcSize(),this.suggestedViewHeight},t.prototype.isHeightAuto=function(){return"auto"===this.opt("contentHeight")||"auto"===this.opt("height")},t.prototype.updateViewSize=function(t){void 0===t&&(t=!1);var e,n=this.view;if(!this.ignoreUpdateViewSize&&n)return t&&(this.calcSize(),e=n.queryScroll()),this.ignoreUpdateViewSize++,n.updateSize(this.getSuggestedViewHeight(),this.isHeightAuto(),t),this.ignoreUpdateViewSize--,t&&n.applyScroll(e),!0},t.prototype.calcSize=function(){this.elementVisible()&&this._calcSize()},t.prototype._calcSize=function(){var t=this.opt("contentHeight"),e=this.opt("height");this.suggestedViewHeight="number"==typeof t?t:"function"==typeof t?t():"number"==typeof e?e-this.queryToolbarsHeight():"function"==typeof e?e()-this.queryToolbarsHeight():"parent"===e?this.el.parent().height()-this.queryToolbarsHeight():Math.round(this.contentEl.width()/Math.max(this.opt("aspectRatio"),.5))},t.prototype.windowResize=function(t){t.target===window&&this.view&&this.view.isDatesRendered&&this.updateViewSize(!0)&&this.publiclyTrigger("windowResize",[this.view])},t.prototype.freezeContentHeight=function(){this.freezeContentHeightDepth++||this.forceFreezeContentHeight()},t.prototype.forceFreezeContentHeight=function(){this.contentEl.css({width:"100%",height:this.contentEl.height(),overflow:"hidden"})},t.prototype.thawContentHeight=function(){this.freezeContentHeightDepth--,this.contentEl.css({width:"",height:"",overflow:""}),this.freezeContentHeightDepth&&this.forceFreezeContentHeight()},t.prototype.initToolbars=function(){this.header=new p.default(this,this.computeHeaderOptions()),this.footer=new p.default(this,this.computeFooterOptions()),this.toolbarsManager=new l.default([this.header,this.footer])},t.prototype.computeHeaderOptions=function(){return{extraClasses:"fc-header-toolbar",layout:this.opt("header")}},t.prototype.computeFooterOptions=function(){return{extraClasses:"fc-footer-toolbar",layout:this.opt("footer")}},t.prototype.renderHeader=function(){var t=this.header;t.setToolbarOptions(this.computeHeaderOptions()),t.render(),t.el&&this.el.prepend(t.el)},t.prototype.renderFooter=function(){var t=this.footer;t.setToolbarOptions(this.computeFooterOptions()),t.render(),t.el&&this.el.append(t.el)},t.prototype.setToolbarsTitle=function(t){this.toolbarsManager.proxyCall("updateTitle",t)},t.prototype.updateToolbarButtons=function(t){var e=this.getNow(),n=this.view,r=n.dateProfileGenerator.build(e),i=n.dateProfileGenerator.buildPrev(n.get("dateProfile")),o=n.dateProfileGenerator.buildNext(n.get("dateProfile"));this.toolbarsManager.proxyCall(r.isValid&&!t.currentUnzonedRange.containsDate(e)?"enableButton":"disableButton","today"),this.toolbarsManager.proxyCall(i.isValid?"enableButton":"disableButton","prev"),this.toolbarsManager.proxyCall(o.isValid?"enableButton":"disableButton","next")},t.prototype.queryToolbarsHeight=function(){return this.toolbarsManager.items.reduce(function(t,e){return t+(e.el?e.el.outerHeight(!0):0)},0)},t.prototype.select=function(t,e){this.view.select(this.buildSelectFootprint.apply(this,arguments))},t.prototype.unselect=function(){this.view&&this.view.unselect()},t.prototype.buildSelectFootprint=function(t,e){var n,r=this.moment(t).stripZone();return n=e?this.moment(e).stripZone():r.hasTime()?r.clone().add(this.defaultTimedEventDuration):r.clone().add(this.defaultAllDayEventDuration),new b.default(new m.default(r,n),!r.hasTime())},t.prototype.initMomentInternals=function(){var t=this;this.defaultAllDayEventDuration=o.duration(this.opt("defaultAllDayEventDuration")),this.defaultTimedEventDuration=o.duration(this.opt("defaultTimedEventDuration")),this.optionsManager.watch("buildingMomentLocale",["?locale","?monthNames","?monthNamesShort","?dayNames","?dayNamesShort","?firstDay","?weekNumberCalculation"],function(e){var n,r=e.weekNumberCalculation,i=e.firstDay;"iso"===r&&(r="ISO");var o=Object.create(v.getMomentLocaleData(e.locale));e.monthNames&&(o._months=e.monthNames),e.monthNamesShort&&(o._monthsShort=e.monthNamesShort),e.dayNames&&(o._weekdays=e.dayNames),e.dayNamesShort&&(o._weekdaysShort=e.dayNamesShort),null==i&&"ISO"===r&&(i=1),null!=i&&(n=Object.create(o._week),n.dow=i,o._week=n),"ISO"!==r&&"local"!==r&&"function"!=typeof r||(o._fullCalendar_weekCalc=r),t.localeData=o,t.currentDate&&t.localizeMoment(t.currentDate)})},t.prototype.moment=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n;return"local"===this.opt("timezone")?(n=y.default.apply(null,t),n.hasTime()&&n.local()):n="UTC"===this.opt("timezone")?y.default.utc.apply(null,t):y.default.parseZone.apply(null,t),this.localizeMoment(n),n},t.prototype.msToMoment=function(t,e){var n=y.default.utc(t) ;return e?n.stripTime():n=this.applyTimezone(n),this.localizeMoment(n),n},t.prototype.msToUtcMoment=function(t,e){var n=y.default.utc(t);return e&&n.stripTime(),this.localizeMoment(n),n},t.prototype.localizeMoment=function(t){t._locale=this.localeData},t.prototype.getIsAmbigTimezone=function(){return"local"!==this.opt("timezone")&&"UTC"!==this.opt("timezone")},t.prototype.applyTimezone=function(t){if(!t.hasTime())return t.clone();var e,n=this.moment(t.toArray()),r=t.time().asMilliseconds()-n.time().asMilliseconds();return r&&(e=n.clone().add(r),t.time().asMilliseconds()-e.time().asMilliseconds()==0&&(n=e)),n},t.prototype.footprintToDateProfile=function(t,e){void 0===e&&(e=!1);var n,r=y.default.utc(t.unzonedRange.startMs);return e||(n=y.default.utc(t.unzonedRange.endMs)),t.isAllDay?(r.stripTime(),n&&n.stripTime()):(r=this.applyTimezone(r),n&&(n=this.applyTimezone(n))),this.localizeMoment(r),n&&this.localizeMoment(n),new w.default(r,n,this)},t.prototype.getNow=function(){var t=this.opt("now");return"function"==typeof t&&(t=t()),this.moment(t).stripZone()},t.prototype.humanizeDuration=function(t){return t.locale(this.opt("locale")).humanize()},t.prototype.parseUnzonedRange=function(t){var e=null,n=null;return t.start&&(e=this.moment(t.start).stripZone()),t.end&&(n=this.moment(t.end).stripZone()),e||n?e&&n&&n.isBefore(e)?null:new m.default(e,n):null},t.prototype.initEventManager=function(){var t=this,e=new D.default(this),n=this.opt("eventSources")||[],r=this.opt("events");this.eventManager=e,r&&n.unshift(r),e.on("release",function(e){t.trigger("eventsReset",e)}),e.freeze(),n.forEach(function(n){var r=S.default.parse(n,t);r&&e.addSource(r)}),e.thaw()},t.prototype.requestEvents=function(t,e){return this.eventManager.requestEvents(t,e,this.opt("timezone"),!this.opt("lazyFetching"))},t.prototype.getEventEnd=function(t){return t.end?t.end.clone():this.getDefaultEventEnd(t.allDay,t.start)},t.prototype.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(this.defaultAllDayEventDuration):n.add(this.defaultTimedEventDuration),this.getIsAmbigTimezone()&&n.stripZone(),n},t.prototype.rerenderEvents=function(){this.view.flash("displayingEvents")},t.prototype.refetchEvents=function(){this.eventManager.refetchAllSources()},t.prototype.renderEvents=function(t,e){this.eventManager.freeze();for(var n=0;n<t.length;n++)this.renderEvent(t[n],e);this.eventManager.thaw()},t.prototype.renderEvent=function(t,e){void 0===e&&(e=!1);var n=this.eventManager,r=C.default.parse(t,t.source||n.stickySource);r&&n.addEventDef(r,e)},t.prototype.removeEvents=function(t){var e,n,i=this.eventManager,o=[],s={};if(null==t)i.removeAllEventDefs();else{for(i.getEventInstances().forEach(function(t){o.push(t.toLegacy())}),o=r(o,t),n=0;n<o.length;n++)e=this.eventManager.getEventDefByUid(o[n]._id),s[e.id]=!0;i.freeze();for(n in s)i.removeEventDefsById(n);i.thaw()}},t.prototype.clientEvents=function(t){var e=[];return this.eventManager.getEventInstances().forEach(function(t){e.push(t.toLegacy())}),r(e,t)},t.prototype.updateEvents=function(t){this.eventManager.freeze();for(var e=0;e<t.length;e++)this.updateEvent(t[e]);this.eventManager.thaw()},t.prototype.updateEvent=function(t){var e,n,r=this.eventManager.getEventDefByUid(t._id);r instanceof R.default&&(e=r.buildInstance(),n=T.default.createFromRawProps(e,t,null),this.eventManager.mutateEventsWithId(r.id,n))},t.prototype.getEventSources=function(){return this.eventManager.otherSources.slice()},t.prototype.getEventSourceById=function(t){return this.eventManager.getSourceById(M.default.normalizeId(t))},t.prototype.addEventSource=function(t){var e=S.default.parse(t,this);e&&this.eventManager.addSource(e)},t.prototype.removeEventSources=function(t){var e,n,r=this.eventManager;if(null==t)this.eventManager.removeAllSources();else{for(e=r.multiQuerySources(t),r.freeze(),n=0;n<e.length;n++)r.removeSource(e[n]);r.thaw()}},t.prototype.removeEventSource=function(t){var e,n=this.eventManager,r=n.querySources(t);for(n.freeze(),e=0;e<r.length;e++)n.removeSource(r[e]);n.thaw()},t.prototype.refetchEventSources=function(t){var e,n=this.eventManager,r=n.multiQuerySources(t);for(n.freeze(),e=0;e<r.length;e++)n.refetchSource(r[e]);n.thaw()},t.defaults=a.globalDefaults,t.englishDefaults=a.englishDefaults,t.rtlDefaults=a.rtlDefaults,t}();e.default=H,d.default.mixInto(H),c.default.mixInto(H)},function(t,e,n){function r(t){var e,n,r,i,l=a.dataAttrPrefix;return l&&(l+="-"),e=t.data(l+"event")||null,e&&(e="object"==typeof e?o.extend({},e):{},n=e.start,null==n&&(n=e.time),r=e.duration,i=e.stick,delete e.start,delete e.time,delete e.duration,delete e.stick),null==n&&(n=t.data(l+"start")),null==n&&(n=t.data(l+"time")),null==r&&(r=t.data(l+"duration")),null==i&&(i=t.data(l+"stick")),n=null!=n?s.duration(n):null,r=null!=r?s.duration(r):null,i=Boolean(i),{eventProps:e,startTime:n,duration:r,stick:i}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(3),s=n(0),a=n(18),l=n(4),u=n(11),d=n(7),c=n(17),p=n(9),h=n(20),f=n(6),g=n(14),v=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.isDragging=!1,e}return i.__extends(e,t),e.prototype.end=function(){this.dragListener&&this.dragListener.endInteraction()},e.prototype.bindToDocument=function(){this.listenTo(o(document),{dragstart:this.handleDragStart,sortstart:this.handleDragStart})},e.prototype.unbindFromDocument=function(){this.stopListeningTo(o(document))},e.prototype.handleDragStart=function(t,e){var n,r;this.opt("droppable")&&(n=o((e?e.item:null)||t.target),r=this.opt("dropAccept"),(o.isFunction(r)?r.call(n[0],n):n.is(r))&&(this.isDragging||this.listenToExternalDrag(n,t,e)))},e.prototype.listenToExternalDrag=function(t,e,n){var i,o=this,s=this.component,a=this.view,u=r(t);(this.dragListener=new c.default(s,{interactionStart:function(){o.isDragging=!0},hitOver:function(t){var e,n=!0,r=t.component.getSafeHitFootprint(t);r?(i=o.computeExternalDrop(r,u),i?(e=new h.default(i.buildInstances()),n=u.eventProps?s.isEventInstanceGroupAllowed(e):s.isExternalInstanceGroupAllowed(e)):n=!1):n=!1,n||(i=null,l.disableCursor()),i&&s.renderDrag(s.eventRangesToEventFootprints(e.sliceRenderRanges(s.dateProfile.renderUnzonedRange,a.calendar)))},hitOut:function(){i=null},hitDone:function(){l.enableCursor(),s.unrenderDrag()},interactionEnd:function(e){i&&a.reportExternalDrop(i,Boolean(u.eventProps),Boolean(u.stick),t,e,n),o.isDragging=!1,o.dragListener=null}})).startDrag(e)},e.prototype.computeExternalDrop=function(t,e){var n,r=this.view.calendar,i=u.default.utc(t.unzonedRange.startMs).stripZone();return t.isAllDay&&(e.startTime?i.time(e.startTime):i.stripTime()),e.duration&&(n=i.clone().add(e.duration)),i=r.applyTimezone(i),n&&(n=r.applyTimezone(n)),p.default.parse(o.extend({},e.eventProps,{start:i,end:n}),new f.default(r))},e}(g.default);e.default=v,d.default.mixInto(v),a.dataAttrPrefix=""},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(39),a=n(40),l=n(17),u=n(14),d=function(t){function e(e,n){var r=t.call(this,e)||this;return r.isResizing=!1,r.eventPointing=n,r}return r.__extends(e,t),e.prototype.end=function(){this.dragListener&&this.dragListener.endInteraction()},e.prototype.bindToEl=function(t){var e=this.component;e.bindSegHandlerToEl(t,"mousedown",this.handleMouseDown.bind(this)),e.bindSegHandlerToEl(t,"touchstart",this.handleTouchStart.bind(this))},e.prototype.handleMouseDown=function(t,e){this.component.canStartResize(t,e)&&this.buildDragListener(t,i(e.target).is(".fc-start-resizer")).startInteraction(e,{distance:5})},e.prototype.handleTouchStart=function(t,e){this.component.canStartResize(t,e)&&this.buildDragListener(t,i(e.target).is(".fc-start-resizer")).startInteraction(e)},e.prototype.buildDragListener=function(t,e){var n,r,i=this,s=this.component,a=this.view,u=a.calendar,d=u.eventManager,c=t.el,p=t.footprint.eventDef,h=t.footprint.eventInstance;return this.dragListener=new l.default(s,{scroll:this.opt("dragScroll"),subjectEl:c,interactionStart:function(){n=!1},dragStart:function(e){n=!0,i.eventPointing.handleMouseout(t,e),i.segResizeStart(t,e)},hitOver:function(n,l,c){var h,f=!0,g=s.getSafeHitFootprint(c),v=s.getSafeHitFootprint(n);g&&v?(r=e?i.computeEventStartResizeMutation(g,v,t.footprint):i.computeEventEndResizeMutation(g,v,t.footprint),r?(h=d.buildMutatedEventInstanceGroup(p.id,r),f=s.isEventInstanceGroupAllowed(h)):f=!1):f=!1,f?r.isEmpty()&&(r=null):(r=null,o.disableCursor()),r&&(a.hideEventsWithId(t.footprint.eventDef.id),a.renderEventResize(s.eventRangesToEventFootprints(h.sliceRenderRanges(s.dateProfile.renderUnzonedRange,u)),t))},hitOut:function(){r=null},hitDone:function(){a.unrenderEventResize(t),a.showEventsWithId(t.footprint.eventDef.id),o.enableCursor()},interactionEnd:function(e){n&&i.segResizeStop(t,e),r&&a.reportEventResize(h,r,c,e),i.dragListener=null}})},e.prototype.segResizeStart=function(t,e){this.isResizing=!0,this.component.publiclyTrigger("eventResizeStart",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.segResizeStop=function(t,e){this.isResizing=!1,this.component.publiclyTrigger("eventResizeStop",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.computeEventStartResizeMutation=function(t,e,n){var r,i,o=n.componentFootprint.unzonedRange,l=this.component.diffDates(e.unzonedRange.getStart(),t.unzonedRange.getStart());return o.getStart().add(l)<o.getEnd()&&(r=new a.default,r.setStartDelta(l),i=new s.default,i.setDateMutation(r),i)},e.prototype.computeEventEndResizeMutation=function(t,e,n){var r,i,o=n.componentFootprint.unzonedRange,l=this.component.diffDates(e.unzonedRange.getEnd(),t.unzonedRange.getEnd());return o.getEnd().add(l)>o.getStart()&&(r=new a.default,r.setEndDelta(l),i=new s.default,i.setDateMutation(r),i)},e}(u.default);e.default=d},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(39),s=n(40),a=n(59),l=n(17),u=n(226),d=n(14),c=function(t){function e(e,n){var r=t.call(this,e)||this;return r.isDragging=!1,r.eventPointing=n,r}return r.__extends(e,t),e.prototype.end=function(){this.dragListener&&this.dragListener.endInteraction()},e.prototype.getSelectionDelay=function(){var t=this.opt("eventLongPressDelay");return null==t&&(t=this.opt("longPressDelay")),t},e.prototype.bindToEl=function(t){var e=this.component;e.bindSegHandlerToEl(t,"mousedown",this.handleMousedown.bind(this)),e.bindSegHandlerToEl(t,"touchstart",this.handleTouchStart.bind(this))},e.prototype.handleMousedown=function(t,e){!this.component.shouldIgnoreMouse()&&this.component.canStartDrag(t,e)&&this.buildDragListener(t).startInteraction(e,{distance:5})},e.prototype.handleTouchStart=function(t,e){var n=this.component,r={delay:this.view.isEventDefSelected(t.footprint.eventDef)?0:this.getSelectionDelay()};n.canStartDrag(t,e)?this.buildDragListener(t).startInteraction(e,r):n.canStartSelection(t,e)&&this.buildSelectListener(t).startInteraction(e,r)},e.prototype.buildSelectListener=function(t){var e=this,n=this.view,r=t.footprint.eventDef,i=t.footprint.eventInstance;if(this.dragListener)return this.dragListener;var o=this.dragListener=new a.default({dragStart:function(t){o.isTouch&&!n.isEventDefSelected(r)&&i&&n.selectEventInstance(i)},interactionEnd:function(t){e.dragListener=null}});return o},e.prototype.buildDragListener=function(t){var e,n,r,o=this,s=this.component,a=this.view,d=a.calendar,c=d.eventManager,p=t.el,h=t.footprint.eventDef,f=t.footprint.eventInstance;if(this.dragListener)return this.dragListener;var g=this.dragListener=new l.default(a,{scroll:this.opt("dragScroll"),subjectEl:p,subjectCenter:!0,interactionStart:function(r){t.component=s,e=!1,n=new u.default(t.el,{additionalClass:"fc-dragging",parentEl:a.el,opacity:g.isTouch?null:o.opt("dragOpacity"),revertDuration:o.opt("dragRevertDuration"),zIndex:2}),n.hide(),n.start(r)},dragStart:function(n){g.isTouch&&!a.isEventDefSelected(h)&&f&&a.selectEventInstance(f),e=!0,o.eventPointing.handleMouseout(t,n),o.segDragStart(t,n),a.hideEventsWithId(t.footprint.eventDef.id)},hitOver:function(e,l,u){var p,f,v,y=!0;t.hit&&(u=t.hit),p=u.component.getSafeHitFootprint(u),f=e.component.getSafeHitFootprint(e),p&&f?(r=o.computeEventDropMutation(p,f,h),r?(v=c.buildMutatedEventInstanceGroup(h.id,r),y=s.isEventInstanceGroupAllowed(v)):y=!1):y=!1,y||(r=null,i.disableCursor()),r&&a.renderDrag(s.eventRangesToEventFootprints(v.sliceRenderRanges(s.dateProfile.renderUnzonedRange,d)),t,g.isTouch)?n.hide():n.show(),l&&(r=null)},hitOut:function(){a.unrenderDrag(t),n.show(),r=null},hitDone:function(){i.enableCursor()},interactionEnd:function(i){delete t.component,n.stop(!r,function(){e&&(a.unrenderDrag(t),o.segDragStop(t,i)),a.showEventsWithId(t.footprint.eventDef.id),r&&a.reportEventDrop(f,r,p,i)}),o.dragListener=null}});return g},e.prototype.segDragStart=function(t,e){this.isDragging=!0,this.component.publiclyTrigger("eventDragStart",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.segDragStop=function(t,e){this.isDragging=!1,this.component.publiclyTrigger("eventDragStop",{context:t.el[0],args:[t.footprint.getEventLegacy(),e,{},this.view]})},e.prototype.computeEventDropMutation=function(t,e,n){var r=new o.default;return r.setDateMutation(this.computeEventDateMutation(t,e)),r},e.prototype.computeEventDateMutation=function(t,e){var n,r,i=t.unzonedRange.getStart(),o=e.unzonedRange.getStart(),a=!1,l=!1,u=!1;return t.isAllDay!==e.isAllDay&&(a=!0,e.isAllDay?(u=!0,i.stripTime()):l=!0),n=this.component.diffDates(o,i),r=new s.default,r.clearEnd=a,r.forceTimed=l,r.forceAllDay=u,r.setDateDelta(n),r},e}(d.default);e.default=c},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(17),s=n(12),a=n(5),l=n(14),u=function(t){function e(e){var n=t.call(this,e)||this;return n.dragListener=n.buildDragListener(),n}return r.__extends(e,t),e.prototype.end=function(){this.dragListener.endInteraction()},e.prototype.getDelay=function(){var t=this.opt("selectLongPressDelay");return null==t&&(t=this.opt("longPressDelay")),t},e.prototype.bindToEl=function(t){var e=this,n=this.component,r=this.dragListener;n.bindDateHandlerToEl(t,"mousedown",function(t){e.opt("selectable")&&!n.shouldIgnoreMouse()&&r.startInteraction(t,{distance:e.opt("selectMinDistance")})}),n.bindDateHandlerToEl(t,"touchstart",function(t){e.opt("selectable")&&!n.shouldIgnoreTouch()&&r.startInteraction(t,{delay:e.getDelay()})}),i.preventSelection(t)},e.prototype.buildDragListener=function(){var t,e=this,n=this.component;return new o.default(n,{scroll:this.opt("dragScroll"),interactionStart:function(){t=null},dragStart:function(t){e.view.unselect(t)},hitOver:function(r,o,s){var a,l;s&&(a=n.getSafeHitFootprint(s),l=n.getSafeHitFootprint(r),t=a&&l?e.computeSelection(a,l):null,t?n.renderSelectionFootprint(t):!1===t&&i.disableCursor())},hitOut:function(){t=null,n.unrenderSelection()},hitDone:function(){i.enableCursor()},interactionEnd:function(n,r){!r&&t&&e.view.reportSelection(t,n)}})},e.prototype.computeSelection=function(t,e){var n=this.computeSelectionFootprint(t,e);return!(n&&!this.isSelectionFootprintAllowed(n))&&n},e.prototype.computeSelectionFootprint=function(t,e){var n=[t.unzonedRange.startMs,t.unzonedRange.endMs,e.unzonedRange.startMs,e.unzonedRange.endMs];return n.sort(i.compareNumbers),new s.default(new a.default(n[0],n[3]),t.isAllDay)},e.prototype.isSelectionFootprintAllowed=function(t){return this.component.dateProfile.validUnzonedRange.containsRange(t.unzonedRange)&&this.view.calendar.constraints.isSelectionFootprintAllowed(t)},e}(l.default);e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(17),o=n(14),s=function(t){function e(e){var n=t.call(this,e)||this;return n.dragListener=n.buildDragListener(),n}return r.__extends(e,t),e.prototype.end=function(){this.dragListener.endInteraction()},e.prototype.bindToEl=function(t){var e=this.component,n=this.dragListener;e.bindDateHandlerToEl(t,"mousedown",function(t){e.shouldIgnoreMouse()||n.startInteraction(t)}),e.bindDateHandlerToEl(t,"touchstart",function(t){e.shouldIgnoreTouch()||n.startInteraction(t)})},e.prototype.buildDragListener=function(){var t,e=this,n=this.component,r=new i.default(n,{scroll:this.opt("dragScroll"),interactionStart:function(){t=r.origHit},hitOver:function(e,n,r){n||(t=null)},hitOut:function(){t=null},interactionEnd:function(r,i){var o;!i&&t&&(o=n.getSafeHitFootprint(t))&&e.view.triggerDayClick(o,n.getHitEl(t),r)}});return r.shouldCancelTouchScroll=!1,r.scrollAlwaysKills=!0,r},e}(o.default);e.default=s},function(t,e,n){function r(t){var e,n=[],r=[];for(e=0;e<t.length;e++)t[e].componentFootprint.isAllDay?n.push(t[e]):r.push(t[e]);return{allDay:n,timed:r}}Object.defineProperty(e,"__esModule",{value:!0});var i,o,s=n(2),a=n(0),l=n(3),u=n(4),d=n(41),c=n(43),p=n(239),h=n(66),f=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.usesMinMaxTime=!0,r.timeGrid=r.instantiateTimeGrid(),r.addChild(r.timeGrid),r.opt("allDaySlot")&&(r.dayGrid=r.instantiateDayGrid(),r.addChild(r.dayGrid)),r.scroller=new d.default({overflowX:"hidden",overflowY:"auto"}),r}return s.__extends(e,t),e.prototype.instantiateTimeGrid=function(){var t=new this.timeGridClass(this);return u.copyOwnProps(i,t),t},e.prototype.instantiateDayGrid=function(){var t=new this.dayGridClass(this);return u.copyOwnProps(o,t),t},e.prototype.renderSkeleton=function(){var t,e;this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.scroller.render(),t=this.scroller.el.addClass("fc-time-grid-container"),e=l('<div class="fc-time-grid">').appendTo(t),this.el.find(".fc-body > tr > td").append(t),this.timeGrid.headContainerEl=this.el.find(".fc-head-container"),this.timeGrid.setElement(e),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight())},e.prototype.unrenderSkeleton=function(){this.timeGrid.removeElement(),this.dayGrid&&this.dayGrid.removeElement(),this.scroller.destroy()},e.prototype.renderSkeletonHtml=function(){var t=this.calendar.theme;return'<table class="'+t.getClass("tableGrid")+'">'+(this.opt("columnHeader")?'<thead class="fc-head"><tr><td class="fc-head-container '+t.getClass("widgetHeader")+'"> </td></tr></thead>':"")+'<tbody class="fc-body"><tr><td class="'+t.getClass("widgetContent")+'">'+(this.dayGrid?'<div class="fc-day-grid"></div><hr class="fc-divider '+t.getClass("widgetHeader")+'"></hr>':"")+"</td></tr></tbody></table>"},e.prototype.axisStyleAttr=function(){return null!=this.axisWidth?'style="width:'+this.axisWidth+'px"':""},e.prototype.getNowIndicatorUnit=function(){return this.timeGrid.getNowIndicatorUnit()},e.prototype.updateSize=function(e,n,r){var i,o,s;if(t.prototype.updateSize.call(this,e,n,r),this.axisWidth=u.matchCellWidths(this.el.find(".fc-axis")),!this.timeGrid.colEls)return void(n||(o=this.computeScrollerHeight(e),this.scroller.setHeight(o)));var a=this.el.find(".fc-row:not(.fc-scroller *)");this.timeGrid.bottomRuleEl.hide(),this.scroller.clear(),u.uncompensateScroll(a),this.dayGrid&&(this.dayGrid.removeSegPopover(),i=this.opt("eventLimit"),i&&"number"!=typeof i&&(i=5),i&&this.dayGrid.limitRows(i)),n||(o=this.computeScrollerHeight(e),this.scroller.setHeight(o),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(u.compensateScroll(a,s),o=this.computeScrollerHeight(e),this.scroller.setHeight(o)),this.scroller.lockOverflow(s),this.timeGrid.getTotalSlatHeight()<o&&this.timeGrid.bottomRuleEl.show())},e.prototype.computeScrollerHeight=function(t){return t-u.subtractInnerElHeight(this.el,this.scroller.el)},e.prototype.computeInitialDateScroll=function(){var t=a.duration(this.opt("scrollTime")),e=this.timeGrid.computeTimeTop(t);return e=Math.ceil(e),e&&e++,{top:e}},e.prototype.queryDateScroll=function(){return{top:this.scroller.getScrollTop()}},e.prototype.applyDateScroll=function(t){void 0!==t.top&&this.scroller.setScrollTop(t.top)},e.prototype.getHitFootprint=function(t){return t.component.getHitFootprint(t)},e.prototype.getHitEl=function(t){return t.component.getHitEl(t)},e.prototype.executeEventRender=function(t){var e,n,r={},i={};for(e in t)n=t[e],n.getEventDef().isAllDay()?r[e]=n:i[e]=n;this.timeGrid.executeEventRender(i),this.dayGrid&&this.dayGrid.executeEventRender(r)},e.prototype.renderDrag=function(t,e,n){var i=r(t),o=!1;return o=this.timeGrid.renderDrag(i.timed,e,n),this.dayGrid&&(o=this.dayGrid.renderDrag(i.allDay,e,n)||o),o},e.prototype.renderEventResize=function(t,e,n){var i=r(t);this.timeGrid.renderEventResize(i.timed,e,n),this.dayGrid&&this.dayGrid.renderEventResize(i.allDay,e,n)},e.prototype.renderSelectionFootprint=function(t){t.isAllDay?this.dayGrid&&this.dayGrid.renderSelectionFootprint(t):this.timeGrid.renderSelectionFootprint(t)},e}(c.default);e.default=f,f.prototype.timeGridClass=p.default,f.prototype.dayGridClass=h.default,i={renderHeadIntroHtml:function(){var t,e=this.view,n=e.calendar,r=n.msToUtcMoment(this.dateProfile.renderUnzonedRange.startMs,!0);return this.opt("weekNumbers")?(t=r.format(this.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+n.theme.getClass("widgetHeader")+'" '+e.axisStyleAttr()+">"+e.buildGotoAnchorHtml({date:r,type:"week",forceOff:this.colCnt>1},u.htmlEscape(t))+"</th>"):'<th class="fc-axis '+n.theme.getClass("widgetHeader")+'" '+e.axisStyleAttr()+"></th>"},renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.calendar.theme.getClass("widgetContent")+'" '+t.axisStyleAttr()+"></td>"},renderIntroHtml:function(){return'<td class="fc-axis" '+this.view.axisStyleAttr()+"></td>"}},o={renderBgIntroHtml:function(){var t=this.view;return'<td class="fc-axis '+t.calendar.theme.getClass("widgetContent")+'" '+t.axisStyleAttr()+"><span>"+t.getAllDayHtml()+"</span></td>"},renderIntroHtml:function(){return'<td class="fc-axis" '+this.view.axisStyleAttr()+"></td>"}}},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(0),s=n(4),a=n(42),l=n(61),u=n(65),d=n(60),c=n(58),p=n(5),h=n(12),f=n(240),g=n(241),v=n(242),y=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}],m=function(t){function e(e){var n=t.call(this,e)||this;return n.processOptions(),n}return r.__extends(e,t),e.prototype.componentFootprintToSegs=function(t){var e,n=this.sliceRangeByTimes(t.unzonedRange);for(e=0;e<n.length;e++)this.isRTL?n[e].col=this.daysPerRow-1-n[e].dayIndex:n[e].col=n[e].dayIndex;return n},e.prototype.sliceRangeByTimes=function(t){var e,n,r=[];for(n=0;n<this.daysPerRow;n++)(e=t.intersect(this.dayRanges[n]))&&r.push({startMs:e.startMs,endMs:e.endMs,isStart:e.isStart,isEnd:e.isEnd,dayIndex:n});return r},e.prototype.processOptions=function(){var t,e=this.opt("slotDuration"),n=this.opt("snapDuration");e=o.duration(e),n=n?o.duration(n):e,this.slotDuration=e,this.snapDuration=n,this.snapsPerSlot=e/n,t=this.opt("slotLabelFormat"),i.isArray(t)&&(t=t[t.length-1]),this.labelFormat=t||this.opt("smallTimeFormat"),t=this.opt("slotLabelInterval"),this.labelInterval=t?o.duration(t):this.computeLabelInterval(e)},e.prototype.computeLabelInterval=function(t){var e,n,r;for(e=y.length-1;e>=0;e--)if(n=o.duration(y[e]),r=s.divideDurationByDuration(n,t),s.isInt(r)&&r>1)return n;return o.duration(t)},e.prototype.renderDates=function(t){this.dateProfile=t,this.updateDayTable(),this.renderSlats(),this.renderColumns()},e.prototype.unrenderDates=function(){this.unrenderColumns()},e.prototype.renderSkeleton=function(){var t=this.view.calendar.theme;this.el.html('<div class="fc-bg"></div><div class="fc-slats"></div><hr class="fc-divider '+t.getClass("widgetHeader")+'" style="display:none"></hr>'),this.bottomRuleEl=this.el.find("hr")},e.prototype.renderSlats=function(){var t=this.view.calendar.theme;this.slatContainerEl=this.el.find("> .fc-slats").html('<table class="'+t.getClass("tableGrid")+'">'+this.renderSlatRowHtml()+"</table>"),this.slatEls=this.slatContainerEl.find("tr"),this.slatCoordCache=new c.default({els:this.slatEls,isVertical:!0})},e.prototype.renderSlatRowHtml=function(){for(var t,e,n,r=this.view,i=r.calendar,a=i.theme,l=this.isRTL,u=this.dateProfile,d="",c=o.duration(+u.minTime),p=o.duration(0);c<u.maxTime;)t=i.msToUtcMoment(u.renderUnzonedRange.startMs).time(c),e=s.isInt(s.divideDurationByDuration(p,this.labelInterval)),n='<td class="fc-axis fc-time '+a.getClass("widgetContent")+'" '+r.axisStyleAttr()+">"+(e?"<span>"+s.htmlEscape(t.format(this.labelFormat))+"</span>":"")+"</td>",d+='<tr data-time="'+t.format("HH:mm:ss")+'"'+(e?"":' class="fc-minor"')+">"+(l?"":n)+'<td class="'+a.getClass("widgetContent")+'"></td>'+(l?n:"")+"</tr>",c.add(this.slotDuration),p.add(this.slotDuration);return d},e.prototype.renderColumns=function(){var t=this.dateProfile,e=this.view.calendar.theme;this.dayRanges=this.dayDates.map(function(e){return new p.default(e.clone().add(t.minTime),e.clone().add(t.maxTime))}),this.headContainerEl&&this.headContainerEl.html(this.renderHeadHtml()),this.el.find("> .fc-bg").html('<table class="'+e.getClass("tableGrid")+'">'+this.renderBgTrHtml(0)+"</table>"),this.colEls=this.el.find(".fc-day, .fc-disabled-day"),this.colCoordCache=new c.default({els:this.colEls,isHorizontal:!0}),this.renderContentSkeleton()},e.prototype.unrenderColumns=function(){this.unrenderContentSkeleton()},e.prototype.renderContentSkeleton=function(){var t,e,n="";for(t=0;t<this.colCnt;t++)n+='<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>';e=this.contentSkeletonEl=i('<div class="fc-content-skeleton"><table><tr>'+n+"</tr></table></div>"),this.colContainerEls=e.find(".fc-content-col"),this.helperContainerEls=e.find(".fc-helper-container"),this.fgContainerEls=e.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=e.find(".fc-bgevent-container"),this.highlightContainerEls=e.find(".fc-highlight-container"),this.businessContainerEls=e.find(".fc-business-container"),this.bookendCells(e.find("tr")),this.el.append(e)},e.prototype.unrenderContentSkeleton=function(){this.contentSkeletonEl&&(this.contentSkeletonEl.remove(),this.contentSkeletonEl=null,this.colContainerEls=null,this.helperContainerEls=null,this.fgContainerEls=null,this.bgContainerEls=null,this.highlightContainerEls=null,this.businessContainerEls=null)},e.prototype.groupSegsByCol=function(t){var e,n=[];for(e=0;e<this.colCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].col].push(t[e]);return n},e.prototype.attachSegsByCol=function(t,e){var n,r,i;for(n=0;n<this.colCnt;n++)for(r=t[n],i=0;i<r.length;i++)e.eq(n).append(r[i].el)},e.prototype.getNowIndicatorUnit=function(){return"minute"},e.prototype.renderNowIndicator=function(t){if(this.colContainerEls){var e,n=this.componentFootprintToSegs(new h.default(new p.default(t,t.valueOf()+1),!1)),r=this.computeDateTop(t,t),o=[];for(e=0;e<n.length;e++)o.push(i('<div class="fc-now-indicator fc-now-indicator-line"></div>').css("top",r).appendTo(this.colContainerEls.eq(n[e].col))[0]);n.length>0&&o.push(i('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css("top",r).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=i(o)}},e.prototype.unrenderNowIndicator=function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},e.prototype.updateSize=function(e,n,r){t.prototype.updateSize.call(this,e,n,r),this.slatCoordCache.build(),r&&this.updateSegVerticals([].concat(this.eventRenderer.getSegs(),this.businessSegs||[]))},e.prototype.getTotalSlatHeight=function(){return this.slatContainerEl.outerHeight()},e.prototype.computeDateTop=function(t,e){return this.computeTimeTop(o.duration(t-e.clone().stripTime()))},e.prototype.computeTimeTop=function(t){var e,n,r=this.slatEls.length,i=this.dateProfile,o=(t-i.minTime)/this.slotDuration;return o=Math.max(0,o),o=Math.min(r,o),e=Math.floor(o),e=Math.min(e,r-1),n=o-e,this.slatCoordCache.getTopPosition(e)+this.slatCoordCache.getHeight(e)*n},e.prototype.updateSegVerticals=function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},e.prototype.computeSegVerticals=function(t){var e,n,r,i=this.opt("agendaEventMinHeight");for(e=0;e<t.length;e++)n=t[e],r=this.dayDates[n.dayIndex],n.top=this.computeDateTop(n.startMs,r),n.bottom=Math.max(n.top+i,this.computeDateTop(n.endMs,r))},e.prototype.assignSegVerticals=function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateSegVerticalCss(n))},e.prototype.generateSegVerticalCss=function(t){return{top:t.top,bottom:-t.bottom}},e.prototype.prepareHits=function(){this.colCoordCache.build(),this.slatCoordCache.build()},e.prototype.releaseHits=function(){this.colCoordCache.clear()},e.prototype.queryHit=function(t,e){var n=this.snapsPerSlot,r=this.colCoordCache,i=this.slatCoordCache;if(r.isLeftInBounds(t)&&i.isTopInBounds(e)){var o=r.getHorizontalIndex(t),s=i.getVerticalIndex(e);if(null!=o&&null!=s){var a=i.getTopOffset(s),l=i.getHeight(s),u=(e-a)/l,d=Math.floor(u*n),c=s*n+d,p=a+d/n*l,h=a+(d+1)/n*l;return{col:o,snap:c,component:this,left:r.getLeftOffset(o),right:r.getRightOffset(o),top:p,bottom:h}}}},e.prototype.getHitFootprint=function(t){var e,n=this.getCellDate(0,t.col),r=this.computeSnapTime(t.snap);return n.time(r),e=n.clone().add(this.snapDuration),new h.default(new p.default(n,e),!1)},e.prototype.computeSnapTime=function(t){return o.duration(this.dateProfile.minTime+this.snapDuration*t)},e.prototype.getHitEl=function(t){return this.colEls.eq(t.col)},e.prototype.renderDrag=function(t,e,n){var r;if(e){if(t.length)return this.helperRenderer.renderEventDraggingFootprints(t,e,n),!0}else for(r=0;r<t.length;r++)this.renderHighlight(t[r].componentFootprint)},e.prototype.unrenderDrag=function(){this.unrenderHighlight(),this.helperRenderer.unrender()},e.prototype.renderEventResize=function(t,e,n){this.helperRenderer.renderEventResizingFootprints(t,e,n)},e.prototype.unrenderEventResize=function(){this.helperRenderer.unrender()},e.prototype.renderSelectionFootprint=function(t){this.opt("selectHelper")?this.helperRenderer.renderComponentFootprint(t):this.renderHighlight(t)},e.prototype.unrenderSelection=function(){this.helperRenderer.unrender(),this.unrenderHighlight()},e}(a.default);e.default=m,m.prototype.eventRendererClass=f.default,m.prototype.businessHourRendererClass=l.default,m.prototype.helperRendererClass=g.default,m.prototype.fillRendererClass=v.default,u.default.mixInto(m),d.default.mixInto(m)},function(t,e,n){function r(t){var e,n,r,i=[];for(e=0;e<t.length;e++){for(n=t[e],r=0;r<i.length&&s(n,i[r]).length;r++);n.level=r,(i[r]||(i[r]=[])).push(n)}return i}function i(t){var e,n,r,i,o;for(e=0;e<t.length;e++)for(n=t[e],r=0;r<n.length;r++)for(i=n[r],i.forwardSegs=[],o=e+1;o<t.length;o++)s(i,t[o],i.forwardSegs)}function o(t){var e,n,r=t.forwardSegs,i=0;if(void 0===t.forwardPressure){for(e=0;e<r.length;e++)n=r[e],o(n),i=Math.max(i,1+n.forwardPressure);t.forwardPressure=i}}function s(t,e,n){void 0===n&&(n=[]);for(var r=0;r<e.length;r++)a(t,e[r])&&n.push(e[r]);return n}function a(t,e){return t.bottom>e.top&&t.top<e.bottom}Object.defineProperty(e,"__esModule",{value:!0});var l=n(2),u=n(4),d=n(44),c=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.timeGrid=e,r}return l.__extends(e,t),e.prototype.renderFgSegs=function(t){this.renderFgSegsIntoContainers(t,this.timeGrid.fgContainerEls)},e.prototype.renderFgSegsIntoContainers=function(t,e){var n,r;for(n=this.timeGrid.groupSegsByCol(t),r=0;r<this.timeGrid.colCnt;r++)this.updateFgSegCoords(n[r]);this.timeGrid.attachSegsByCol(n,e)},e.prototype.unrenderFgSegs=function(){this.fgSegs&&this.fgSegs.forEach(function(t){t.el.remove()})},e.prototype.computeEventTimeFormat=function(){return this.opt("noMeridiemTimeFormat")},e.prototype.computeDisplayEventEnd=function(){return!0},e.prototype.fgSegHtml=function(t,e){ var n,r,i,o=this.view,s=o.calendar,a=t.footprint.componentFootprint,l=a.isAllDay,d=t.footprint.eventDef,c=o.isEventDefDraggable(d),p=!e&&t.isStart&&o.isEventDefResizableFromStart(d),h=!e&&t.isEnd&&o.isEventDefResizableFromEnd(d),f=this.getSegClasses(t,c,p||h),g=u.cssToStr(this.getSkinCss(d));if(f.unshift("fc-time-grid-event","fc-v-event"),o.isMultiDayRange(a.unzonedRange)){if(t.isStart||t.isEnd){var v=s.msToMoment(t.startMs),y=s.msToMoment(t.endMs);n=this._getTimeText(v,y,l),r=this._getTimeText(v,y,l,"LT"),i=this._getTimeText(v,y,l,null,!1)}}else n=this.getTimeText(t.footprint),r=this.getTimeText(t.footprint,"LT"),i=this.getTimeText(t.footprint,null,!1);return'<a class="'+f.join(" ")+'"'+(d.url?' href="'+u.htmlEscape(d.url)+'"':"")+(g?' style="'+g+'"':"")+'><div class="fc-content">'+(n?'<div class="fc-time" data-start="'+u.htmlEscape(i)+'" data-full="'+u.htmlEscape(r)+'"><span>'+u.htmlEscape(n)+"</span></div>":"")+(d.title?'<div class="fc-title">'+u.htmlEscape(d.title)+"</div>":"")+'</div><div class="fc-bg"></div>'+(h?'<div class="fc-resizer fc-end-resizer"></div>':"")+"</a>"},e.prototype.updateFgSegCoords=function(t){this.timeGrid.computeSegVerticals(t),this.computeFgSegHorizontals(t),this.timeGrid.assignSegVerticals(t),this.assignFgSegHorizontals(t)},e.prototype.computeFgSegHorizontals=function(t){var e,n,s;if(this.sortEventSegs(t),e=r(t),i(e),n=e[0]){for(s=0;s<n.length;s++)o(n[s]);for(s=0;s<n.length;s++)this.computeFgSegForwardBack(n[s],0,0)}},e.prototype.computeFgSegForwardBack=function(t,e,n){var r,i=t.forwardSegs;if(void 0===t.forwardCoord)for(i.length?(this.sortForwardSegs(i),this.computeFgSegForwardBack(i[0],e+1,n),t.forwardCoord=i[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),r=0;r<i.length;r++)this.computeFgSegForwardBack(i[r],0,t.forwardCoord)},e.prototype.sortForwardSegs=function(t){t.sort(u.proxy(this,"compareForwardSegs"))},e.prototype.compareForwardSegs=function(t,e){return e.forwardPressure-t.forwardPressure||(t.backwardCoord||0)-(e.backwardCoord||0)||this.compareEventSegs(t,e)},e.prototype.assignFgSegHorizontals=function(t){var e,n;for(e=0;e<t.length;e++)n=t[e],n.el.css(this.generateFgSegHorizontalCss(n)),n.footprint.eventDef.title&&n.bottom-n.top<30&&n.el.addClass("fc-short")},e.prototype.generateFgSegHorizontalCss=function(t){var e,n,r=this.opt("slotEventOverlap"),i=t.backwardCoord,o=t.forwardCoord,s=this.timeGrid.generateSegVerticalCss(t),a=this.timeGrid.isRTL;return r&&(o=Math.min(1,i+2*(o-i))),a?(e=1-o,n=i):(e=i,n=1-o),s.zIndex=t.level+1,s.left=100*e+"%",s.right=100*n+"%",r&&t.forwardPressure&&(s[a?"marginLeft":"marginRight"]=20),s},e}(d.default);e.default=c},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(63),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.renderSegs=function(t,e){var n,r,o,s=[];for(this.eventRenderer.renderFgSegsIntoContainers(t,this.component.helperContainerEls),n=0;n<t.length;n++)r=t[n],e&&e.col===r.col&&(o=e.el,r.el.css({left:o.css("left"),right:o.css("right"),"margin-left":o.css("margin-left"),"margin-right":o.css("margin-right")})),s.push(r.el[0]);return i(s)},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(62),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.attachSegEls=function(t,e){var n,r=this.component;return"bgEvent"===t?n=r.bgContainerEls:"businessHours"===t?n=r.businessContainerEls:"highlight"===t&&(n=r.highlightContainerEls),r.updateSegVerticals(e),r.attachSegsByCol(r.groupSegsByCol(e),n),e.map(function(t){return t.el[0]})},e}(i.default);e.default=o},function(t,e,n){function r(t,e){var n,r;for(n=0;n<e.length;n++)if(r=e[n],r.leftCol<=t.rightCol&&r.rightCol>=t.leftCol)return!0;return!1}function i(t,e){return t.leftCol-e.leftCol}Object.defineProperty(e,"__esModule",{value:!0});var o=n(2),s=n(3),a=n(4),l=n(44),u=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.dayGrid=e,r}return o.__extends(e,t),e.prototype.renderBgRanges=function(e){e=s.grep(e,function(t){return t.eventDef.isAllDay()}),t.prototype.renderBgRanges.call(this,e)},e.prototype.renderFgSegs=function(t){var e=this.rowStructs=this.renderSegRows(t);this.dayGrid.rowEls.each(function(t,n){s(n).find(".fc-content-skeleton > table").append(e[t].tbodyEl)})},e.prototype.unrenderFgSegs=function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},e.prototype.renderSegRows=function(t){var e,n,r=[];for(e=this.groupSegRows(t),n=0;n<e.length;n++)r.push(this.renderSegRow(n,e[n]));return r},e.prototype.renderSegRow=function(t,e){function n(t){for(;o<t;)d=(y[r-1]||[])[o],d?d.attr("rowspan",parseInt(d.attr("rowspan")||1,10)+1):(d=s("<td>"),a.append(d)),v[r][o]=d,y[r][o]=d,o++}var r,i,o,a,l,u,d,c=this.dayGrid.colCnt,p=this.buildSegLevels(e),h=Math.max(1,p.length),f=s("<tbody>"),g=[],v=[],y=[];for(r=0;r<h;r++){if(i=p[r],o=0,a=s("<tr>"),g.push([]),v.push([]),y.push([]),i)for(l=0;l<i.length;l++){for(u=i[l],n(u.leftCol),d=s('<td class="fc-event-container">').append(u.el),u.leftCol!==u.rightCol?d.attr("colspan",u.rightCol-u.leftCol+1):y[r][o]=d;o<=u.rightCol;)v[r][o]=d,g[r][o]=u,o++;a.append(d)}n(c),this.dayGrid.bookendCells(a),f.append(a)}return{row:t,tbodyEl:f,cellMatrix:v,segMatrix:g,segLevels:p,segs:e}},e.prototype.buildSegLevels=function(t){var e,n,o,s=[];for(this.sortEventSegs(t),e=0;e<t.length;e++){for(n=t[e],o=0;o<s.length&&r(n,s[o]);o++);n.level=o,(s[o]||(s[o]=[])).push(n)}for(o=0;o<s.length;o++)s[o].sort(i);return s},e.prototype.groupSegRows=function(t){var e,n=[];for(e=0;e<this.dayGrid.rowCnt;e++)n.push([]);for(e=0;e<t.length;e++)n[t[e].row].push(t[e]);return n},e.prototype.computeEventTimeFormat=function(){return this.opt("extraSmallTimeFormat")},e.prototype.computeDisplayEventEnd=function(){return 1===this.dayGrid.colCnt},e.prototype.fgSegHtml=function(t,e){var n,r,i=this.view,o=t.footprint.eventDef,s=t.footprint.componentFootprint.isAllDay,l=i.isEventDefDraggable(o),u=!e&&s&&t.isStart&&i.isEventDefResizableFromStart(o),d=!e&&s&&t.isEnd&&i.isEventDefResizableFromEnd(o),c=this.getSegClasses(t,l,u||d),p=a.cssToStr(this.getSkinCss(o)),h="";return c.unshift("fc-day-grid-event","fc-h-event"),t.isStart&&(n=this.getTimeText(t.footprint))&&(h='<span class="fc-time">'+a.htmlEscape(n)+"</span>"),r='<span class="fc-title">'+(a.htmlEscape(o.title||"")||" ")+"</span>",'<a class="'+c.join(" ")+'"'+(o.url?' href="'+a.htmlEscape(o.url)+'"':"")+(p?' style="'+p+'"':"")+'><div class="fc-content">'+(this.dayGrid.isRTL?r+" "+h:h+" "+r)+"</div>"+(u?'<div class="fc-resizer fc-start-resizer"></div>':"")+(d?'<div class="fc-resizer fc-end-resizer"></div>':"")+"</a>"},e}(l.default);e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(63),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.renderSegs=function(t,e){var n,r=[];return n=this.eventRenderer.renderSegRows(t),this.component.rowEls.each(function(t,o){var s,a,l=i(o),u=i('<div class="fc-helper-skeleton"><table></table></div>');e&&e.row===t?a=e.el.position().top:(s=l.find(".fc-content-skeleton tbody"),s.length||(s=l.find(".fc-content-skeleton table")),a=s.position().top),u.css("top",a).find("table").append(n[t].tbodyEl),l.append(u),r.push(u[0])}),i(r)},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(62),s=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.fillSegTag="td",e}return r.__extends(e,t),e.prototype.attachSegEls=function(t,e){var n,r,i,o=[];for(n=0;n<e.length;n++)r=e[n],i=this.renderFillRow(t,r),this.component.rowEls.eq(r.row).append(i),o.push(i[0]);return o},e.prototype.renderFillRow=function(t,e){var n,r,o,s=this.component.colCnt,a=e.leftCol,l=e.rightCol+1;return n="businessHours"===t?"bgevent":t.toLowerCase(),r=i('<div class="fc-'+n+'-skeleton"><table><tr></tr></table></div>'),o=r.find("tr"),a>0&&o.append(new Array(a+1).join("<td></td>")),o.append(e.el.attr("colspan",l-a)),l<s&&o.append(new Array(s-l+1).join("<td></td>")),this.component.bookendCells(o),r},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(0),o=n(4),s=n(67),a=n(247),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.setGridHeight=function(t,e){e&&(t*=this.dayGrid.rowCnt/6),o.distributeHeight(this.dayGrid.rowEls,t,!e)},e.prototype.isDateInOtherMonth=function(t,e){return t.month()!==i.utc(e.currentUnzonedRange.startMs).month()},e}(s.default);e.default=l,l.prototype.dateProfileGeneratorClass=a.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(68),o=n(5),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.buildRenderRange=function(e,n,r){var i,s=t.prototype.buildRenderRange.call(this,e,n,r),a=this.msToUtcMoment(s.startMs,r),l=this.msToUtcMoment(s.endMs,r);return this.opt("fixedWeekCount")&&(i=Math.ceil(l.diff(a,"weeks",!0)),l.add(6-i,"weeks")),new o.default(a,l)},e}(i.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(5),a=n(43),l=n(41),u=n(249),d=n(250),c=function(t){function e(e,n){var r=t.call(this,e,n)||this;return r.segSelector=".fc-list-item",r.scroller=new l.default({overflowX:"hidden",overflowY:"auto"}),r}return r.__extends(e,t),e.prototype.renderSkeleton=function(){this.el.addClass("fc-list-view "+this.calendar.theme.getClass("listView")),this.scroller.render(),this.scroller.el.appendTo(this.el),this.contentEl=this.scroller.scrollEl},e.prototype.unrenderSkeleton=function(){this.scroller.destroy()},e.prototype.updateSize=function(e,n,r){t.prototype.updateSize.call(this,e,n,r),this.scroller.clear(),n||this.scroller.setHeight(this.computeScrollerHeight(e))},e.prototype.computeScrollerHeight=function(t){return t-o.subtractInnerElHeight(this.el,this.scroller.el)},e.prototype.renderDates=function(t){for(var e=this.calendar,n=e.msToUtcMoment(t.renderUnzonedRange.startMs,!0),r=e.msToUtcMoment(t.renderUnzonedRange.endMs,!0),i=[],o=[];n<r;)i.push(n.clone()),o.push(new s.default(n,n.clone().add(1,"day"))),n.add(1,"day");this.dayDates=i,this.dayRanges=o},e.prototype.componentFootprintToSegs=function(t){var e,n,r,i=this.dayRanges,o=[];for(e=0;e<i.length;e++)if((n=t.unzonedRange.intersect(i[e]))&&(r={startMs:n.startMs,endMs:n.endMs,isStart:n.isStart,isEnd:n.isEnd,dayIndex:e},o.push(r),!r.isEnd&&!t.isAllDay&&e+1<i.length&&t.unzonedRange.endMs<i[e+1].startMs+this.nextDayThreshold)){r.endMs=t.unzonedRange.endMs,r.isEnd=!0;break}return o},e.prototype.renderEmptyMessage=function(){this.contentEl.html('<div class="fc-list-empty-wrap2"><div class="fc-list-empty-wrap1"><div class="fc-list-empty">'+o.htmlEscape(this.opt("noEventsMessage"))+"</div></div></div>")},e.prototype.renderSegList=function(t){var e,n,r,o=this.groupSegsByDay(t),s=i('<table class="fc-list-table '+this.calendar.theme.getClass("tableList")+'"><tbody></tbody></table>'),a=s.find("tbody");for(e=0;e<o.length;e++)if(n=o[e])for(a.append(this.dayHeaderHtml(this.dayDates[e])),this.eventRenderer.sortEventSegs(n),r=0;r<n.length;r++)a.append(n[r].el);this.contentEl.empty().append(s)},e.prototype.groupSegsByDay=function(t){var e,n,r=[];for(e=0;e<t.length;e++)n=t[e],(r[n.dayIndex]||(r[n.dayIndex]=[])).push(n);return r},e.prototype.dayHeaderHtml=function(t){var e=this.opt("listDayFormat"),n=this.opt("listDayAltFormat");return'<tr class="fc-list-heading" data-date="'+t.format("YYYY-MM-DD")+'"><td class="'+(this.calendar.theme.getClass("tableListHeading")||this.calendar.theme.getClass("widgetHeader"))+'" colspan="3">'+(e?this.buildGotoAnchorHtml(t,{class:"fc-list-heading-main"},o.htmlEscape(t.format(e))):"")+(n?this.buildGotoAnchorHtml(t,{class:"fc-list-heading-alt"},o.htmlEscape(t.format(n))):"")+"</td></tr>"},e}(a.default);e.default=c,c.prototype.eventRendererClass=u.default,c.prototype.eventPointingClass=d.default},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(4),o=n(44),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.renderFgSegs=function(t){t.length?this.component.renderSegList(t):this.component.renderEmptyMessage()},e.prototype.fgSegHtml=function(t){var e,n=this.view,r=n.calendar,o=r.theme,s=t.footprint,a=s.eventDef,l=s.componentFootprint,u=a.url,d=["fc-list-item"].concat(this.getClasses(a)),c=this.getBgColor(a);return e=l.isAllDay?n.getAllDayHtml():n.isMultiDayRange(l.unzonedRange)?t.isStart||t.isEnd?i.htmlEscape(this._getTimeText(r.msToMoment(t.startMs),r.msToMoment(t.endMs),l.isAllDay)):n.getAllDayHtml():i.htmlEscape(this.getTimeText(s)),u&&d.push("fc-has-url"),'<tr class="'+d.join(" ")+'">'+(this.displayEventTime?'<td class="fc-list-item-time '+o.getClass("widgetContent")+'">'+(e||"")+"</td>":"")+'<td class="fc-list-item-marker '+o.getClass("widgetContent")+'"><span class="fc-event-dot"'+(c?' style="background-color:'+c+'"':"")+'></span></td><td class="fc-list-item-title '+o.getClass("widgetContent")+'"><a'+(u?' href="'+i.htmlEscape(u)+'"':"")+">"+i.htmlEscape(a.title||"")+"</a></td></tr>"},e.prototype.computeEventTimeFormat=function(){return this.opt("mediumTimeFormat")},e}(o.default);e.default=s},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(64),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e.prototype.handleClick=function(e,n){var r;t.prototype.handleClick.call(this,e,n),i(n.target).closest("a[href]").length||(r=e.footprint.eventDef.url)&&!n.isDefaultPrevented()&&(window.location.href=r)},e}(o.default);e.default=s},,,,,,function(t,e,n){var r=n(3),i=n(18),o=n(4),s=n(232);n(11),n(49),n(260),n(261),n(264),n(265),n(266),n(267),r.fullCalendar=i,r.fn.fullCalendar=function(t){var e=Array.prototype.slice.call(arguments,1),n=this;return this.each(function(i,a){var l,u=r(a),d=u.data("fullCalendar");"string"==typeof t?"getCalendar"===t?i||(n=d):"destroy"===t?d&&(d.destroy(),u.removeData("fullCalendar")):d?r.isFunction(d[t])?(l=d[t].apply(d,e),i||(n=l),"destroy"===t&&u.removeData("fullCalendar")):o.warn("'"+t+"' is an unknown FullCalendar method."):o.warn("Attempting to call a FullCalendar method on an element with no calendar."):d||(d=new s.default(u,t),u.data("fullCalendar",d),d.render())}),n},t.exports=i},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=n(4),o=function(){function t(t,e){this.el=null,this.viewsWithButtons=[],this.calendar=t,this.toolbarOptions=e}return t.prototype.setToolbarOptions=function(t){this.toolbarOptions=t},t.prototype.render=function(){var t=this.toolbarOptions.layout,e=this.el;t?(e?e.empty():e=this.el=r("<div class='fc-toolbar "+this.toolbarOptions.extraClasses+"'>"),e.append(this.renderSection("left")).append(this.renderSection("right")).append(this.renderSection("center")).append('<div class="fc-clear"></div>')):this.removeElement()},t.prototype.removeElement=function(){this.el&&(this.el.remove(),this.el=null)},t.prototype.renderSection=function(t){var e=this,n=this.calendar,o=n.theme,s=n.optionsManager,a=n.viewSpecManager,l=r('<div class="fc-'+t+'">'),u=this.toolbarOptions.layout[t],d=s.get("customButtons")||{},c=s.overrides.buttonText||{},p=s.get("buttonText")||{};return u&&r.each(u.split(" "),function(t,s){var u,h=r(),f=!0;r.each(s.split(","),function(t,s){var l,u,g,v,y,m,b,w,D;"title"===s?(h=h.add(r("<h2> </h2>")),f=!1):((l=d[s])?(g=function(t){l.click&&l.click.call(w[0],t)},(v=o.getCustomButtonIconClass(l))||(v=o.getIconClass(s))||(y=l.text)):(u=a.getViewSpec(s))?(e.viewsWithButtons.push(s),g=function(){n.changeView(s)},(y=u.buttonTextOverride)||(v=o.getIconClass(s))||(y=u.buttonTextDefault)):n[s]&&(g=function(){n[s]()},(y=c[s])||(v=o.getIconClass(s))||(y=p[s])),g&&(b=["fc-"+s+"-button",o.getClass("button"),o.getClass("stateDefault")],y?(m=i.htmlEscape(y),D=""):v&&(m="<span class='"+v+"'></span>",D=' aria-label="'+s+'"'),w=r('<button type="button" class="'+b.join(" ")+'"'+D+">"+m+"</button>").click(function(t){w.hasClass(o.getClass("stateDisabled"))||(g(t),(w.hasClass(o.getClass("stateActive"))||w.hasClass(o.getClass("stateDisabled")))&&w.removeClass(o.getClass("stateHover")))}).mousedown(function(){w.not("."+o.getClass("stateActive")).not("."+o.getClass("stateDisabled")).addClass(o.getClass("stateDown"))}).mouseup(function(){w.removeClass(o.getClass("stateDown"))}).hover(function(){w.not("."+o.getClass("stateActive")).not("."+o.getClass("stateDisabled")).addClass(o.getClass("stateHover"))},function(){w.removeClass(o.getClass("stateHover")).removeClass(o.getClass("stateDown"))}),h=h.add(w)))}),f&&h.first().addClass(o.getClass("cornerLeft")).end().last().addClass(o.getClass("cornerRight")).end(),h.length>1?(u=r("<div>"),f&&u.addClass(o.getClass("buttonGroup")),u.append(h),l.append(u)):l.append(h)}),l},t.prototype.updateTitle=function(t){this.el&&this.el.find("h2").text(t)},t.prototype.activateButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").addClass(this.calendar.theme.getClass("stateActive"))},t.prototype.deactivateButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").removeClass(this.calendar.theme.getClass("stateActive"))},t.prototype.disableButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").prop("disabled",!0).addClass(this.calendar.theme.getClass("stateDisabled"))},t.prototype.enableButton=function(t){this.el&&this.el.find(".fc-"+t+"-button").prop("disabled",!1).removeClass(this.calendar.theme.getClass("stateDisabled"))},t.prototype.getViewsWithButtons=function(){return this.viewsWithButtons},t}();e.default=o},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(3),o=n(4),s=n(33),a=n(32),l=n(51),u=function(t){function e(e,n){var r=t.call(this)||this;return r._calendar=e,r.overrides=i.extend({},n),r.dynamicOverrides={},r.compute(),r}return r.__extends(e,t),e.prototype.add=function(t){var e,n=0;this.recordOverrides(t);for(e in t)n++;if(1===n){if("height"===e||"contentHeight"===e||"aspectRatio"===e)return void this._calendar.updateViewSize(!0);if("defaultDate"===e)return;if("businessHours"===e)return;if(/^(event|select)(Overlap|Constraint|Allow)$/.test(e))return;if("timezone"===e)return void this._calendar.view.flash("initialEvents")}this._calendar.renderHeader(),this._calendar.renderFooter(),this._calendar.viewsByType={},this._calendar.reinitView()},e.prototype.compute=function(){var t,e,n,r,i;t=o.firstDefined(this.dynamicOverrides.locale,this.overrides.locale),e=a.localeOptionHash[t],e||(t=s.globalDefaults.locale,e=a.localeOptionHash[t]||{}),n=o.firstDefined(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,s.globalDefaults.isRTL),r=n?s.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,i=s.mergeOptions([s.globalDefaults,r,e,this.overrides,this.dynamicOverrides]),a.populateInstanceComputableOptions(i),this.reset(i)},e.prototype.recordOverrides=function(t){var e;for(e in t)this.dynamicOverrides[e]=t[e];this._calendar.viewSpecManager.clearCache(),this.compute()},e}(l.default);e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(0),i=n(3),o=n(24),s=n(4),a=n(33),l=n(32),u=function(){function t(t,e){this.optionsManager=t,this._calendar=e,this.clearCache()}return t.prototype.clearCache=function(){this.viewSpecCache={}},t.prototype.getViewSpec=function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},t.prototype.getUnitViewSpec=function(t){var e,n,r;if(-1!==i.inArray(t,s.unitsDesc))for(e=this._calendar.header.getViewsWithButtons(),i.each(o.viewHash,function(t){e.push(t)}),n=0;n<e.length;n++)if((r=this.getViewSpec(e[n]))&&r.singleUnit===t)return r},t.prototype.buildViewSpec=function(t){for(var e,n,i,l,u,d=this.optionsManager.overrides.views||{},c=[],p=[],h=[],f=t;f;)e=o.viewHash[f],n=d[f],f=null,"function"==typeof e&&(e={class:e}),e&&(c.unshift(e),p.unshift(e.defaults||{}),i=i||e.duration,f=f||e.type),n&&(h.unshift(n),i=i||n.duration,f=f||n.type);return e=s.mergeProps(c),e.type=t,!!e.class&&(i=i||this.optionsManager.dynamicOverrides.duration||this.optionsManager.overrides.duration,i&&(l=r.duration(i),l.valueOf()&&(u=s.computeDurationGreatestUnit(l,i),e.duration=l,e.durationUnit=u,1===l.as(u)&&(e.singleUnit=u,h.unshift(d[u]||{})))),e.defaults=a.mergeOptions(p),e.overrides=a.mergeOptions(h),this.buildViewSpecOptions(e),this.buildViewSpecButtonText(e,t),e)},t.prototype.buildViewSpecOptions=function(t){var e=this.optionsManager;t.options=a.mergeOptions([a.globalDefaults,t.defaults,e.dirDefaults,e.localeDefaults,e.overrides,t.overrides,e.dynamicOverrides]),l.populateInstanceComputableOptions(t.options)},t.prototype.buildViewSpecButtonText=function(t,e){function n(n){var r=n.buttonText||{};return r[e]||(t.buttonTextKey?r[t.buttonTextKey]:null)||(t.singleUnit?r[t.singleUnit]:null)}var r=this.optionsManager;t.buttonTextOverride=n(r.dynamicOverrides)||n(r.overrides)||t.overrides.buttonText,t.buttonTextDefault=n(r.localeDefaults)||n(r.dirDefaults)||t.defaults.buttonText||n(a.globalDefaults)||(t.duration?this._calendar.humanizeDuration(t.duration):null)||e},t}();e.default=u},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(38),i=n(56),o=n(223),s=n(224);r.default.registerClass(i.default),r.default.registerClass(o.default),r.default.registerClass(s.default)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(57),i=n(221),o=n(222),s=n(262),a=n(263);r.defineThemeSystem("standard",i.default),r.defineThemeSystem("jquery-ui",o.default),r.defineThemeSystem("bootstrap3",s.default),r.defineThemeSystem("bootstrap4",a.default)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"fc-bootstrap3",tableGrid:"table-bordered",tableList:"table",tableListHeading:"active",buttonGroup:"btn-group",button:"btn btn-default",stateActive:"active",stateDisabled:"disabled",today:"alert alert-info",popover:"panel panel-default",popoverHeader:"panel-heading",popoverContent:"panel-body",headerRow:"panel-default",dayRow:"panel-default",listView:"panel panel-default"},o.prototype.baseIconClass="glyphicon",o.prototype.iconClasses={close:"glyphicon-remove",prev:"glyphicon-chevron-left",next:"glyphicon-chevron-right",prevYear:"glyphicon-backward",nextYear:"glyphicon-forward"},o.prototype.iconOverrideOption="bootstrapGlyphicons",o.prototype.iconOverrideCustomButtonOption="bootstrapGlyphicon",o.prototype.iconOverridePrefix="glyphicon-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),i=n(22),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r.__extends(e,t),e}(i.default);e.default=o,o.prototype.classes={widget:"fc-bootstrap4",tableGrid:"table-bordered",tableList:"table",tableListHeading:"table-active",buttonGroup:"btn-group",button:"btn btn-primary",stateActive:"active",stateDisabled:"disabled",today:"alert alert-info",popover:"card card-primary",popoverHeader:"card-header",popoverContent:"card-body",headerRow:"table-bordered",dayRow:"table-bordered",listView:"card card-primary"},o.prototype.baseIconClass="fa",o.prototype.iconClasses={close:"fa-times",prev:"fa-chevron-left",next:"fa-chevron-right",prevYear:"fa-angle-double-left",nextYear:"fa-angle-double-right"},o.prototype.iconOverrideOption="bootstrapFontAwesome",o.prototype.iconOverrideCustomButtonOption="bootstrapFontAwesome",o.prototype.iconOverridePrefix="fa-"},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(24),i=n(67),o=n(246);r.defineView("basic",{class:i.default}),r.defineView("basicDay",{type:"basic",duration:{days:1}}),r.defineView("basicWeek",{type:"basic",duration:{weeks:1}}),r.defineView("month",{class:o.default,duration:{months:1},defaults:{fixedWeekCount:!0}})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(24),i=n(238);r.defineView("agenda",{class:i.default,defaults:{allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0}}),r.defineView("agendaDay",{type:"agenda",duration:{days:1}}),r.defineView("agendaWeek",{type:"agenda",duration:{weeks:1}})},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(24),i=n(248);r.defineView("list",{class:i.default,buttonTextKey:"list",defaults:{buttonText:"list",listDayFormat:"LL",noEventsMessage:"No events to display"}}),r.defineView("listDay",{type:"list",duration:{days:1},defaults:{listDayFormat:"dddd"}}),r.defineView("listWeek",{type:"list",duration:{weeks:1},defaults:{listDayFormat:"dddd",listDayAltFormat:"LL"}}),r.defineView("listMonth",{type:"list",duration:{month:1},defaults:{listDayAltFormat:"dddd"}}),r.defineView("listYear",{type:"list",duration:{year:1},defaults:{listDayAltFormat:"dddd"}})},function(t,e){Object.defineProperty(e,"__esModule",{value:!0})}])}); fullcalendar/locale/hu.js 0000644 00000007131 15002261751 0011412 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=145)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},145:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(146);var n=r(1);n.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető esemény"})},146:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e,t,r,n){var a=e;switch(r){case"s":return n||t?"néhány másodperc":"néhány másodperce";case"ss":return a+(n||t)?" másodperc":" másodperce";case"m":return"egy"+(n||t?" perc":" perce");case"mm":return a+(n||t?" perc":" perce");case"h":return"egy"+(n||t?" óra":" órája");case"hh":return a+(n||t?" óra":" órája");case"d":return"egy"+(n||t?" nap":" napja");case"dd":return a+(n||t?" nap":" napja");case"M":return"egy"+(n||t?" hónap":" hónapja");case"MM":return a+(n||t?" hónap":" hónapja");case"y":return"egy"+(n||t?" év":" éve");case"yy":return a+(n||t?" év":" éve")}return""}function r(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,r){return e<12?!0===r?"de":"DE":!0===r?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return r.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return r.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/zh-tw.js 0000644 00000006627 15002261751 0012060 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=215)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},215:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(216);var r=n(1);r.datepickerLocale("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},216:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})}})}); fullcalendar/locale/bg.js 0000644 00000007076 15002261751 0011376 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=89)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},89:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(90);var r=n(1);r.datepickerLocale("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(e){return"+още "+e},noEventsMessage:"Няма събития за показване"})},90:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/sr-cyrl.js 0000644 00000010532 15002261751 0012370 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=197)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},197:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(198);var n=r(1);n.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr-cyrl",{buttonText:{prev:"Претходна",next:"следећи",month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})},198:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,r,n){var a=t.words[n];return 1===n.length?r?a[0]:a[1]:e+" "+t.correctGrammaticalCase(e,a)}};return e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})}); fullcalendar/locale/ms.js 0000644 00000005722 15002261751 0011421 0 ustar 00 !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=171)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},171:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(172);var n=t(1);n.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},172:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/en-nz.js 0000644 00000005231 15002261751 0012024 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=115)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},115:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(116);var a=r(1);a.datepickerLocale("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("en-nz")},116:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/sq.js 0000644 00000005620 15002261751 0011422 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=195)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},195:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(196);var n=r(1);n.datepickerLocale("sq","sq",{closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sq",{buttonText:{month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},allDayHtml:"Gjithë<br/>ditën",eventLimitText:function(e){return"+më tepër "+e},noEventsMessage:"Nuk ka evente për të shfaqur"})},196:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,r){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/sl.js 0000644 00000010002 15002261751 0011403 0 ustar 00 !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=193)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},193:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t(194);var r=t(1);r.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"})},194:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e,n,t,r){var a=e+" ";switch(t){case"s":return n||r?"nekaj sekund":"nekaj sekundami";case"ss":return a+=1===e?n?"sekundo":"sekundi":2===e?n||r?"sekundi":"sekundah":e<5?n||r?"sekunde":"sekundah":"sekund";case"m":return n?"ena minuta":"eno minuto";case"mm":return a+=1===e?n?"minuta":"minuto":2===e?n||r?"minuti":"minutama":e<5?n||r?"minute":"minutami":n||r?"minut":"minutami";case"h":return n?"ena ura":"eno uro";case"hh":return a+=1===e?n?"ura":"uro":2===e?n||r?"uri":"urama":e<5?n||r?"ure":"urami":n||r?"ur":"urami";case"d":return n||r?"en dan":"enim dnem";case"dd":return a+=1===e?n||r?"dan":"dnem":2===e?n||r?"dni":"dnevoma":n||r?"dni":"dnevi";case"M":return n||r?"en mesec":"enim mesecem";case"MM":return a+=1===e?n||r?"mesec":"mesecem":2===e?n||r?"meseca":"mesecema":e<5?n||r?"mesece":"meseci":n||r?"mesecev":"meseci";case"y":return n||r?"eno leto":"enim letom";case"yy":return a+=1===e?n||r?"leto":"letom":2===e?n||r?"leti":"letoma":e<5?n||r?"leta":"leti":n||r?"let":"leti"}}return e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})}); fullcalendar/locale/bs.js 0000644 00000007110 15002261751 0011377 0 ustar 00 !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,a),n.l=!0,n.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=91)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},91:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(92);var r=t(1);r.datepickerLocale("bs","bs",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novmbar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("bs",{buttonText:{prev:"Prošli",next:"Sljedeći",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikazivanje"})},92:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var r=e+" ";switch(t){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})}); fullcalendar/locale/ko.js 0000644 00000006055 15002261751 0011413 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=159)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},159:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(160);var r=n(1);r.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),r.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 없습니다"})},160:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})})}})}); fullcalendar/locale/de.js 0000644 00000006136 15002261751 0011372 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=103)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},103:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(104);var r=n(1);r.datepickerLocale("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("de",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen",dayOfMonthFormat:"ddd DD.MM."})},104:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/tr.js 0000644 00000006071 15002261751 0011425 0 ustar 00 !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=205)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},205:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(206);var n=t(1);n.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Gösterilecek etkinlik yok"})},206:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,r=e%100-n,i=e>=100?100:null;return e+(a[n]||a[r]||a[i])}},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/de-at.js 0000644 00000006111 15002261751 0011765 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=99)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},100:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},99:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(100);var r=n(1);r.datepickerLocale("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("de-at",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})}})}); fullcalendar/locale/en-ie.js 0000644 00000004061 15002261751 0011772 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=113)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},113:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(114),n(1).locale("en-ie")},114:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/he.js 0000644 00000007235 15002261751 0011377 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=139)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},139:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(140);var r=n(1);r.datepickerLocale("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("he",{buttonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",eventLimitText:"אחר",noEventsMessage:"אין אירועים להצגה",weekNumberTitle:"שבוע"})},140:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})})}})}); fullcalendar/locale/fr-ca.js 0000644 00000005743 15002261751 0011775 0 ustar 00 !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=131)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},131:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(132);var t=n(1);t.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},132:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,r){switch(r){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})}})}); fullcalendar/locale/pt.js 0000644 00000005630 15002261751 0011423 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(o[a])return o[a].exports;var r=o[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,a){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=185)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},185:function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),o(186);var a=o(1);a.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})},186:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/sk.js 0000644 00000007375 15002261751 0011425 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=191)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},191:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(192);var n=r(1);n.datepickerLocale("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(e){return"+ďalšie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})},192:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e){return e>1&&e<5}function r(e,r,n,o){var a=e+" ";switch(n){case"s":return r||o?"pár sekúnd":"pár sekundami";case"ss":return r||o?a+(t(e)?"sekundy":"sekúnd"):a+"sekundami";case"m":return r?"minúta":o?"minútu":"minútou";case"mm":return r||o?a+(t(e)?"minúty":"minút"):a+"minútami";case"h":return r?"hodina":o?"hodinu":"hodinou";case"hh":return r||o?a+(t(e)?"hodiny":"hodín"):a+"hodinami";case"d":return r||o?"deň":"dňom";case"dd":return r||o?a+(t(e)?"dni":"dní"):a+"dňami";case"M":return r||o?"mesiac":"mesiacom";case"MM":return r||o?a+(t(e)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return r||o?"rok":"rokom";case"yy":return r||o?a+(t(e)?"roky":"rokov"):a+"rokmi"}}var n="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),o="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return e.defineLocale("sk",{months:n,monthsShort:o,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/uk.js 0000644 00000012170 15002261751 0011414 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=207)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},207:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(208);var r=n(1);r.datepickerLocale("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"Немає подій для відображення"})},208:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var a={ss:n?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:n?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:n?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===r?n?"хвилина":"хвилину":"h"===r?n?"година":"годину":e+" "+t(a[r],+e)}function r(e,t){var n,r={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?r.nominative.slice(1,7).concat(r.nominative.slice(0,1)):e?(n=/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative",r[n][e.day()]):r.nominative}function a(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:r,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:a("[Сьогодні "),nextDay:a("[Завтра "),lastDay:a("[Вчора "),nextWeek:a("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a("[Минулої] dddd [").call(this);case 1:case 2:case 4:return a("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:n,m:n,mm:n,h:"годину",hh:n,d:"день",dd:n,M:"місяць",MM:n,y:"рік",yy:n},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/gl.js 0000644 00000006115 15002261751 0011401 0 ustar 00 !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}var t={};return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=137)}({0:function(o,t){o.exports=e},1:function(e,t){e.exports=o},137:function(e,o,t){Object.defineProperty(o,"__esModule",{value:!0}),t(138);var n=t(1);n.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Axenda"},allDayHtml:"Todo<br/>o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})},138:function(e,o,t){!function(e,o){o(t(0))}(0,function(e){return e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/en-au.js 0000644 00000005231 15002261751 0012002 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=107)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},107:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),a(108);var r=a(1);r.datepickerLocale("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("en-au")},108:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){return e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/kk.js 0000644 00000007151 15002261751 0011405 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=157)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},157:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(158);var r=n(1);r.datepickerLocale("kk","kk",{closeText:"Жабу",prevText:"<Алдыңғы",nextText:"Келесі>",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("kk",{buttonText:{month:"Ай",week:"Апта",day:"Күн",list:"Күн тәртібі"},allDayText:"Күні бойы",eventLimitText:function(e){return"+ тағы "+e},noEventsMessage:"Көрсету үшін оқиғалар жоқ"})},158:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var n=e%10,r=e>=100?100:null;return e+(t[e]||t[n]||t[r])},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/lt.js 0000644 00000007672 15002261751 0011427 0 ustar 00 !function(e,i){"object"==typeof exports&&"object"==typeof module?module.exports=i(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],i):"object"==typeof exports?i(require("moment"),require("fullcalendar")):i(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,i){return function(e){function i(a){if(n[a])return n[a].exports;var t=n[a]={i:a,l:!1,exports:{}};return e[a].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n={};return i.m=e,i.c=n,i.d=function(e,n,a){i.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},i.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(n,"a",n),n},i.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},i.p="",i(i.s=163)}({0:function(i,n){i.exports=e},1:function(e,n){e.exports=i},163:function(e,i,n){Object.defineProperty(i,"__esModule",{value:!0}),n(164);var a=n(1);a.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.locale("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"})},164:function(e,i,n){!function(e,i){i(n(0))}(0,function(e){function i(e,i,n,a){return i?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"}function n(e,i,n,a){return i?t(n)[0]:a?t(n)[1]:t(n)[2]}function a(e){return e%10==0||e>10&&e<20}function t(e){return r[e].split("_")}function s(e,i,s,r){var d=e+" ";return 1===e?d+n(e,i,s[0],r):i?d+(a(e)?t(s)[1]:t(s)[0]):r?d+t(s)[1]:d+(a(e)?t(s)[1]:t(s)[2])}var r={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:i,ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/sr.js 0000644 00000007172 15002261751 0011427 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=199)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},199:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),a(200);var r=a(1);r.datepickerLocale("sr","sr-SR",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("sr",{buttonText:{prev:"Prethodna",next:"Sledeći",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},allDayText:"Cеo dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nеma događaja za prikaz"})},200:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,r){var n=t.words[r];return 1===r.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})}); fullcalendar/locale/zh-cn.js 0000644 00000006652 15002261751 0012024 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=211)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},211:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(212);var r=n(1);r.datepickerLocale("zh-cn","zh-CN",{closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(e){return"另外 "+e+" 个"},noEventsMessage:"没有事件显示"})},212:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/en-ca.js 0000644 00000004046 15002261751 0011763 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=109)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},109:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(110),n(1).locale("en-ca")},110:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})})}})}); fullcalendar/locale/es-do.js 0000644 00000007371 15002261751 0012013 0 ustar 00 !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}var r={};return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=117)}({0:function(o,r){o.exports=e},1:function(e,r){e.exports=o},117:function(e,o,r){Object.defineProperty(o,"__esModule",{value:!0}),r(118);var t=r(1);t.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},118:function(e,o,r){!function(e,o){o(r(0))}(0,function(e){var o="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),t=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?r[e.month()]:o[e.month()]:o},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/eu.js 0000644 00000005744 15002261751 0011417 0 ustar 00 !function(a,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],e):"object"==typeof exports?e(require("moment"),require("fullcalendar")):e(a.moment,a.FullCalendar)}("undefined"!=typeof self?self:this,function(a,e){return function(a){function e(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return a[r].call(n.exports,n,n.exports,e),n.l=!0,n.exports}var t={};return e.m=a,e.c=t,e.d=function(a,t,r){e.o(a,t)||Object.defineProperty(a,t,{configurable:!1,enumerable:!0,get:r})},e.n=function(a){var t=a&&a.__esModule?function(){return a.default}:function(){return a};return e.d(t,"a",t),t},e.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},e.p="",e(e.s=125)}({0:function(e,t){e.exports=a},1:function(a,t){a.exports=e},125:function(a,e,t){Object.defineProperty(e,"__esModule",{value:!0}),t(126);var r=t(1);r.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})},126:function(a,e,t){!function(a,e){e(t(0))}(0,function(a){return a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})}); fullcalendar/locale/ro.js 0000644 00000005626 15002261751 0011425 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=187)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},187:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(188);var i=n(1);i.datepickerLocale("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),i.locale("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"})},188:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n){var i={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+i[n]}return e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/es-us.js 0000644 00000007371 15002261751 0012040 0 ustar 00 !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}var r={};return o.m=e,o.c=r,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=119)}({0:function(o,r){o.exports=e},1:function(e,r){e.exports=o},119:function(e,o,r){Object.defineProperty(o,"__esModule",{value:!0}),r(120);var t=r(1);t.datepickerLocale("es-us","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("es-us",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},120:function(e,o,r){!function(e,o){o(r(0))}(0,function(e){var o="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),t=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?r[e.month()]:o[e.month()]:o},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})}})}); fullcalendar/locale/ar.js 0000644 00000010537 15002261751 0011404 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=85)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},85:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(86);var n=r(1);n.datepickerLocale("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},86:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},a=function(e){return function(t,r,a,d){var u=n(t),i=o[e][n(t)];return 2===u&&(i=i[r?0:1]),i.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return r[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})}})}); fullcalendar/locale/lv.js 0000644 00000007001 15002261751 0011413 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(s){if(n[s])return n[s].exports;var i=n[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,s){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=165)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},165:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(166);var s=n(1);s.datepickerLocale("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),s.locale("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu"})},166:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function n(e,n,s){return e+" "+t(a[s],e,n)}function s(e,n,s){return t(a[s],e,n)}function i(e,t){return t?"dažas sekundes":"dažām sekundēm"}var a={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:i,ss:n,m:s,mm:n,h:s,hh:n,d:s,dd:n,M:s,MM:n,y:s,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/fa.js 0000644 00000007307 15002261751 0011371 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=127)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},127:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(128);var r=n(1);r.datepickerLocale("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(e){return"بیش از "+e},noEventsMessage:"هیچ رویدادی به نمایش"})},128:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return n[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})})}})}); fullcalendar/locale/pt-br.js 0000644 00000005715 15002261751 0012030 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(o[r])return o[r].exports;var a=o[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,r){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=183)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},183:function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),o(184);var r=o(1);r.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})},184:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})}})}); fullcalendar/locale/lb.js 0000644 00000006624 15002261751 0011401 0 ustar 00 !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=161)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},161:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t(162);var r=t(1);r.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})},162:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e,n,t,r){var o={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return n?o[t][0]:o[t][1]}function t(e){return o(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function r(e){return o(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function o(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var n=e%10,t=e/10;return o(0===n?t:n)}if(e<1e4){for(;e>=10;)e/=10;return o(e)}return e/=1e3,o(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:r,s:"e puer Sekonnen",ss:"%d Sekonnen",m:n,mm:"%d Minutten",h:n,hh:"%d Stonnen",d:n,dd:"%d Deeg",M:n,MM:"%d Méint",y:n,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/et.js 0000644 00000006171 15002261751 0011411 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(a[n])return a[n].exports;var u=a[n]={i:n,l:!1,exports:{}};return e[n].call(u.exports,u,u.exports,t),u.l=!0,u.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,n){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=123)}({0:function(t,a){t.exports=e},1:function(e,a){e.exports=t},123:function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),a(124);var n=a(1);n.datepickerLocale("et","et",{closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("et",{buttonText:{month:"Kuu",week:"Nädal",day:"Päev",list:"Päevakord"},allDayText:"Kogu päev",eventLimitText:function(e){return"+ veel "+e},noEventsMessage:"Kuvamiseks puuduvad sündmused"})},124:function(e,t,a){!function(e,t){t(a(0))}(0,function(e){function t(e,t,a,n){var u={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?u[a][2]?u[a][2]:u[a][1]:n?u[a][0]:u[a][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/da.js 0000644 00000005343 15002261751 0011365 0 ustar 00 !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var t={};return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=97)}({0:function(r,t){r.exports=e},1:function(e,t){e.exports=r},97:function(e,r,t){Object.defineProperty(r,"__esModule",{value:!0}),t(98);var n=t(1);n.datepickerLocale("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})},98:function(e,r,t){!function(e,r){r(t(0))}(0,function(e){return e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/ar-kw.js 0000644 00000006224 15002261751 0012021 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=75)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},75:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(76);var r=n(1);r.datepickerLocale("ar-kw","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-kw",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},76:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})}})}); fullcalendar/locale/ar-dz.js 0000644 00000006276 15002261751 0012024 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=73)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},73:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(74);var r=n(1);r.datepickerLocale("ar-dz","ar-DZ",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-dz",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},74:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})})}})}); fullcalendar/locale/hi.js 0000644 00000010733 15002261751 0011400 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=141)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},141:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(142);var r=n(1);r.datepickerLocale("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(e){return"+अधिक "+e},noEventsMessage:"कोई घटनाओं को प्रदर्शित करने के लिए"})},142:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})})}})}); fullcalendar/locale/fr-ch.js 0000644 00000005763 15002261751 0012006 0 ustar 00 !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=133)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},133:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(134);var t=n(1);t.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},134:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,r){switch(r){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/ar-tn.js 0000644 00000006227 15002261751 0012024 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=83)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},83:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(84);var r=n(1);r.datepickerLocale("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},84:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/th.js 0000644 00000010232 15002261751 0011405 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=203)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},203:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(204);var r=n(1);r.datepickerLocale("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม",noEventsMessage:"ไม่มีกิจกรรมที่จะแสดง"})},204:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})}})}); fullcalendar/locale/fr.js 0000644 00000006001 15002261751 0011400 0 ustar 00 !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=135)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},135:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(136);var t=n(1);t.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},136:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,r){switch(r){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/de-ch.js 0000644 00000006102 15002261751 0011753 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=101)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},101:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(102);var r=n(1);r.datepickerLocale("de-ch","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("de-ch",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},102:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t,n,r){var a={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?a[n][0]:a[n][1]}return e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/cs.js 0000644 00000010715 15002261751 0011405 0 ustar 00 !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=95)}({0:function(n,t){n.exports=e},1:function(e,t){e.exports=n},95:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),t(96);var r=t(1);r.datepickerLocale("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Žádné akce k zobrazení"})},96:function(e,n,t){!function(e,n){n(t(0))}(0,function(e){function n(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,r,s){var o=e+" ";switch(r){case"s":return t||s?"pár sekund":"pár sekundami";case"ss":return t||s?o+(n(e)?"sekundy":"sekund"):o+"sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?o+(n(e)?"minuty":"minut"):o+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?o+(n(e)?"hodiny":"hodin"):o+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?o+(n(e)?"dny":"dní"):o+"dny";case"M":return t||s?"měsíc":"měsícem";case"MM":return t||s?o+(n(e)?"měsíce":"měsíců"):o+"měsíci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?o+(n(e)?"roky":"let"):o+"lety"}}var r="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),s="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),o=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],a=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;return e.defineLocale("cs",{months:r,monthsShort:s,monthsRegex:a,monthsShortRegex:a,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/mk.js 0000644 00000007152 15002261751 0011410 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=167)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},167:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(168);var r=n(1);r.datepickerLocale("mk","mk",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("mk",{buttonText:{month:"Месец",week:"Недела",day:"Ден",list:"График"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеќе "+e},noEventsMessage:"Нема настани за прикажување"})},168:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/el.js 0000644 00000010712 15002261751 0011375 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=105)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},105:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(106);var o=n(1);o.datepickerLocale("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),o.locale("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα",noEventsMessage:"Δεν υπάρχουν γεγονότα για να εμφανιστεί"})},106:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,n){var o=this._calendarEl[e],r=n&&n.hours();return t(o)&&(o=o.apply(n)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/is.js 0000644 00000007051 15002261751 0011412 0 ustar 00 !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=149)}({0:function(r,n){r.exports=e},1:function(e,n){e.exports=r},149:function(e,r,n){Object.defineProperty(r,"__esModule",{value:!0}),n(150);var t=n(1);t.datepickerLocale("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})},150:function(e,r,n){!function(e,r){r(n(0))}(0,function(e){function r(e){return e%100==11||e%10!=1}function n(e,n,t,a){var u=e+" ";switch(t){case"s":return n||a?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return r(e)?u+(n||a?"sekúndur":"sekúndum"):u+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return r(e)?u+(n||a?"mínútur":"mínútum"):n?u+"mínúta":u+"mínútu";case"hh":return r(e)?u+(n||a?"klukkustundir":"klukkustundum"):u+"klukkustund";case"d":return n?"dagur":a?"dag":"degi";case"dd":return r(e)?n?u+"dagar":u+(a?"daga":"dögum"):n?u+"dagur":u+(a?"dag":"degi");case"M":return n?"mánuður":a?"mánuð":"mánuði";case"MM":return r(e)?n?u+"mánuðir":u+(a?"mánuði":"mánuðum"):n?u+"mánuður":u+(a?"mánuð":"mánuði");case"y":return n||a?"ár":"ári";case"yy":return r(e)?u+(n||a?"ár":"árum"):u+(n||a?"ár":"ári")}}return e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/it.js 0000644 00000006437 15002261751 0011422 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var o={};return t.m=e,t.c=o,t.d=function(e,o,n){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,"a",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=151)}({0:function(t,o){t.exports=e},1:function(e,o){e.exports=t},151:function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),o(152);var n=o(1);n.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})},152:function(e,t,o){!function(e,t){t(o(0))}(0,function(e){return e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/sv.js 0000644 00000005545 15002261751 0011435 0 ustar 00 !function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],r):"object"==typeof exports?r(require("moment"),require("fullcalendar")):r(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,r){return function(e){function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var t={};return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=201)}({0:function(r,t){r.exports=e},1:function(e,t){e.exports=r},201:function(e,r,t){Object.defineProperty(r,"__esModule",{value:!0}),t(202);var n=t(1);n.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"v. ",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})},202:function(e,r,t){!function(e,r){r(t(0))}(0,function(e){return e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var r=e%10;return e+(1==~~(e%100/10)?":e":1===r?":a":2===r?":a":":e")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/nl-be.js 0000644 00000007054 15002261751 0011777 0 ustar 00 !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,"a",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=175)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},175:function(e,n,a){Object.defineProperty(n,"__esModule",{value:!0}),a(176);var t=a(1);t.datepickerLocale("nl-be","nl-BE",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("nl-be",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},176:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){var n="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),t=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?a[e.month()]:n[e.month()]:n},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/nn.js 0000644 00000005452 15002261751 0011415 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=179)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},179:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(180);var a=n(1);a.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("nn",{buttonText:{month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},180:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/ar-ma.js 0000644 00000006224 15002261751 0011775 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=79)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},79:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(80);var r=n(1);r.datepickerLocale("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},80:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})}})}); fullcalendar/locale/ru.js 0000644 00000014562 15002261751 0011432 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var s=r[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=189)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},189:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(190);var n=r(1);n.datepickerLocale("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет событий для отображения"})},190:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e,t){var r=e.split("_");return t%10==1&&t%100!=11?r[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?r[1]:r[2]}function r(e,r,n){var s={ss:r?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:r?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?r?"минута":"минуту":e+" "+t(s[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:r,m:r,mm:r,h:"час",hh:r,d:"день",dd:r,M:"месяц",MM:r,y:"год",yy:r},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,r){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/ms-my.js 0000644 00000005733 15002261751 0012046 0 ustar 00 !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=169)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},169:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(170);var n=t(1);n.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},170:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/fi.js 0000644 00000007146 15002261751 0011402 0 ustar 00 !function(e,u){"object"==typeof exports&&"object"==typeof module?module.exports=u(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],u):"object"==typeof exports?u(require("moment"),require("fullcalendar")):u(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,u){return function(e){function u(a){if(t[a])return t[a].exports;var n=t[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,u),n.l=!0,n.exports}var t={};return u.m=e,u.c=t,u.d=function(e,t,a){u.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,"a",t),t},u.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},u.p="",u(u.s=129)}({0:function(u,t){u.exports=e},1:function(e,t){e.exports=u},129:function(e,u,t){Object.defineProperty(u,"__esModule",{value:!0}),t(130);var a=t(1);a.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei näytettäviä tapahtumia"})},130:function(e,u,t){!function(e,u){u(t(0))}(0,function(e){function u(e,u,a,n){var i="";switch(a){case"s":return n?"muutaman sekunnin":"muutama sekunti";case"ss":return n?"sekunnin":"sekuntia";case"m":return n?"minuutin":"minuutti";case"mm":i=n?"minuutin":"minuuttia";break;case"h":return n?"tunnin":"tunti";case"hh":i=n?"tunnin":"tuntia";break;case"d":return n?"päivän":"päivä";case"dd":i=n?"päivän":"päivää";break;case"M":return n?"kuukauden":"kuukausi";case"MM":i=n?"kuukauden":"kuukautta";break;case"y":return n?"vuoden":"vuosi";case"yy":i=n?"vuoden":"vuotta"}return i=t(e,n)+" "+i}function t(e,u){return e<10?u?n[e]:a[e]:e}var a="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",a[7],a[8],a[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/pl.js 0000644 00000007236 15002261751 0011417 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=181)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},181:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(182);var n=r(1);n.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"})},182:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){function t(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function r(e,r,n){var i=e+" ";switch(n){case"ss":return i+(t(e)?"sekundy":"sekund");case"m":return r?"minuta":"minutę";case"mm":return i+(t(e)?"minuty":"minut");case"h":return r?"godzina":"godzinę";case"hh":return i+(t(e)?"godziny":"godzin");case"MM":return i+(t(e)?"miesiące":"miesięcy");case"yy":return i+(t(e)?"lata":"lat")}}var n="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),i="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return e.defineLocale("pl",{months:function(e,t){return e?""===t?"("+i[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(t)?i[e.month()]:n[e.month()]:n},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/nb.js 0000644 00000005434 15002261751 0011401 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=173)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},173:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(174);var r=n(1);r.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},174:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})}})}); fullcalendar/locale/be.js 0000644 00000011551 15002261751 0011365 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=87)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},87:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(88);var r=n(1);r.datepickerLocale("be","be",{closeText:"Зачыніць",prevText:"<Папярэд",nextText:"След>",currentText:"Сёння",monthNames:["Студзень","Люты","Сакавік","Красавік","Трав","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],monthNamesShort:["Студ","Лют","Сак","Крас","Трав","Чэрв","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Ат","Ср","Чц","Пт","Сб"],weekHeader:"Ндз",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("be",{buttonText:{month:"Месяц",week:"Тыдзень",day:"Дзень",list:"Парадак дня"},allDayHtml:"Увесь<br />дзень",eventLimitText:function(e){return"+ яшчэ "+e},noEventsMessage:"Няма падзей для адлюстравання"})},88:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){function t(e,t){var n=e.split("_");return t%10==1&&t%100!=11?n[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?n[1]:n[2]}function n(e,n,r){var a={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:n?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===r?n?"хвіліна":"хвіліну":"h"===r?n?"гадзіна":"гадзіну":e+" "+t(a[r],+e)}return e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:n,mm:n,h:n,hh:n,d:"дзень",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/es.js 0000644 00000007405 15002261751 0011411 0 ustar 00 !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],o):"object"==typeof exports?o(require("moment"),require("fullcalendar")):o(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,o){return function(e){function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}var r={};return o.m=e,o.c=r,o.d=function(e,r,n){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},o.p="",o(o.s=121)}({0:function(o,r){o.exports=e},1:function(e,r){e.exports=o},121:function(e,o,r){Object.defineProperty(o,"__esModule",{value:!0}),r(122);var n=r(1);n.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},122:function(e,o,r){!function(e,o){o(r(0))}(0,function(e){var o="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),r="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],t=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?r[e.month()]:o[e.month()]:o},monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha invalida"})})}})}); fullcalendar/locale/ja.js 0000644 00000007520 15002261751 0011372 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=153)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},153:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(154);var r=n(1);r.datepickerLocale("ja","ja",{closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"表示する予定はありません"})},154:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})}})}); fullcalendar/locale/ar-sa.js 0000644 00000007204 15002261751 0012002 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=81)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},81:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(82);var n=r(1);n.datepickerLocale("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},82:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},r={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return r[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})})}})}); fullcalendar/locale/af.js 0000644 00000005641 15002261751 0011370 0 ustar 00 !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,"a",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=71)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},71:function(e,n,a){Object.defineProperty(n,"__esModule",{value:!0}),a(72);var t=a(1);t.datepickerLocale("af","af",{closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("af",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenisse nie"})},72:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){return e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,n,a){return e<12?a?"vm":"VM":a?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/zh-hk.js 0000644 00000006624 15002261751 0012025 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=213)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},213:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(214);var r=n(1);r.datepickerLocale("zh-hk","zh-HK",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),r.locale("zh-hk",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},214:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1200?"上午":1200===r?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})}})}); fullcalendar/locale/ar-ly.js 0000644 00000010304 15002261751 0012016 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=77)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},77:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(78);var n=r(1);n.datepickerLocale("ar-ly","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ly",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},78:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(t,o,d,a){var u=r(t),s=n[e][r(t)];return 2===u&&(s=s[o?0:1]),s.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar-ly",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,r){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})}})}); fullcalendar/locale/nl.js 0000644 00000007054 15002261751 0011413 0 ustar 00 !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,n){return function(e){function n(t){if(a[t])return a[t].exports;var r=a[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var a={};return n.m=e,n.c=a,n.d=function(e,a,t){n.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(a,"a",a),a},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=177)}({0:function(n,a){n.exports=e},1:function(e,a){e.exports=n},177:function(e,n,a){Object.defineProperty(n,"__esModule",{value:!0}),a(178);var t=a(1);t.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),t.locale("nl",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},178:function(e,n,a){!function(e,n){n(a(0))}(0,function(e){var n="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),t=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,t){return e?/-MMM-/.test(t)?a[e.month()]:n[e.month()]:n},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:t,longMonthsParse:t,shortMonthsParse:t,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/ka.js 0000644 00000011144 15002261751 0011370 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=155)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},155:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(156);var r=n(1);r.datepickerLocale("ka","ka",{closeText:"დახურვა",prevText:"წინა",nextText:"შემდეგი",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],weekHeader:"კვ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ka",{buttonText:{month:"თვე",week:"კვირა",day:"დღე",list:"დღის წესრიგი"},allDayText:"მთელი დღე",eventLimitText:function(e){return"+ კიდევ "+e},noEventsMessage:"ღონისძიებები არ არის"})},156:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"})},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/id.js 0000644 00000005647 15002261751 0011404 0 ustar 00 !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=147)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},147:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(148);var n=t(1);n.datepickerLocale("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})},148:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})}})}); fullcalendar/locale/vi.js 0000644 00000006454 15002261751 0011423 0 ustar 00 !function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],n):"object"==typeof exports?n(require("moment"),require("fullcalendar")):n(t.moment,t.FullCalendar)}("undefined"!=typeof self?self:this,function(t,n){return function(t){function n(h){if(e[h])return e[h].exports;var r=e[h]={i:h,l:!1,exports:{}};return t[h].call(r.exports,r,r.exports,n),r.l=!0,r.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,h){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:h})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=209)}({0:function(n,e){n.exports=t},1:function(t,e){t.exports=n},209:function(t,n,e){Object.defineProperty(n,"__esModule",{value:!0}),e(210);var h=e(1);h.datepickerLocale("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),h.locale("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(t){return"+ thêm "+t},noEventsMessage:"Không có sự kiện để hiển thị"})},210:function(t,n,e){!function(t,n){n(e(0))}(0,function(t){return t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,n,e){return t<12?e?"sa":"SA":e?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/en-gb.js 0000644 00000005225 15002261751 0011770 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=111)}({0:function(t,r){t.exports=e},1:function(e,r){e.exports=t},111:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0}),r(112);var a=r(1);a.datepickerLocale("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.locale("en-gb")},112:function(e,t,r){!function(e,t){t(r(0))}(0,function(e){return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})})}})}); fullcalendar/locale/hr.js 0000644 00000007430 15002261751 0011411 0 ustar 00 !function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=143)}({0:function(a,t){a.exports=e},1:function(e,t){e.exports=a},143:function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(144);var n=t(1);n.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hr",{buttonText:{prev:"Prijašnji",next:"Sljedeći",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikaz"})},144:function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})}})}); fullcalendar/locale/ca.js 0000644 00000006563 15002261751 0011371 0 ustar 00 !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],t):"object"==typeof exports?t(require("moment"),require("fullcalendar")):t(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var d=n[r]={i:r,l:!1,exports:{}};return e[r].call(d.exports,d,d.exports,t),d.l=!0,d.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=93)}({0:function(t,n){t.exports=e},1:function(e,n){e.exports=t},93:function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),n(94);var r=n(1);r.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),r.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})},94:function(e,t,n){!function(e,t){t(n(0))}(0,function(e){return e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})})}})}); fullcalendar/gcal.min.js 0000644 00000011245 15002261751 0011230 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("fullcalendar"),require("jquery")):"function"==typeof define&&define.amd?define(["fullcalendar","jquery"],t):"object"==typeof exports?t(require("fullcalendar"),require("jquery")):t(e.FullCalendar,e.jQuery)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(o){if(r[o])return r[o].exports;var n=r[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=270)}({1:function(t,r){t.exports=e},2:function(e,t){var r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};t.__extends=function(e,t){function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}},270:function(e,t,r){Object.defineProperty(t,"__esModule",{value:!0});var o=r(1),n=r(271);o.EventSourceParser.registerClass(n.default),o.GcalEventSource=n.default},271:function(e,t,r){function o(e){var t;return/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(e)?e:(t=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(e))||(t=/^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(e))?decodeURIComponent(t[1]):void 0}function n(e,t){return e.replace(/(\?.*?)?(#|$)/,function(e,r,o){return(r?r+"&":"?")+t+o})}Object.defineProperty(t,"__esModule",{value:!0});var a=r(2),l=r(3),i=r(1),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a.__extends(t,e),t.parse=function(e,t){var r;return"object"==typeof e?r=e:"string"==typeof e&&(r={url:e}),!!r&&i.EventSource.parse.call(this,r,t)},t.prototype.fetch=function(e,t,r){var o=this,n=this.buildUrl(),a=this.buildRequestParams(e,t,r),u=this.ajaxSettings||{},s=u.success;return a?(this.calendar.pushLoading(),i.Promise.construct(function(e,t){l.ajax(l.extend({},i.JsonFeedEventSource.AJAX_DEFAULTS,u,{url:n,data:a,success:function(r,n,u){var c,p;o.calendar.popLoading(),r.error?(o.reportError("Google Calendar API: "+r.error.message,r.error.errors),t()):r.items&&(c=o.gcalItemsToRawEventDefs(r.items,a.timeZone),p=i.applyAll(s,o,[r,n,u]),l.isArray(p)&&(c=p),e(o.parseEventDefs(c)))},error:function(e,r,n){o.reportError("Google Calendar network failure: "+r,[e,n]),o.calendar.popLoading(),t()}}))})):i.Promise.reject()},t.prototype.gcalItemsToRawEventDefs=function(e,t){var r=this;return e.map(function(e){return r.gcalItemToRawEventDef(e,t)})},t.prototype.gcalItemToRawEventDef=function(e,t){var r=e.htmlLink||null;r&&t&&(r=n(r,"ctz="+t));var o={};return"object"==typeof e.extendedProperties&&"object"==typeof e.extendedProperties.shared&&(o=e.extendedProperties.shared),{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:r,location:e.location,description:e.description,extendedProperties:o}},t.prototype.buildUrl=function(){return t.API_BASE+"/"+encodeURIComponent(this.googleCalendarId)+"/events?callback=?"},t.prototype.buildRequestParams=function(e,t,r){var o,n=this.googleCalendarApiKey||this.calendar.opt("googleCalendarApiKey");return n?(e.hasZone()||(e=e.clone().utc().add(-1,"day")),t.hasZone()||(t=t.clone().utc().add(1,"day")),o=l.extend(this.ajaxSettings.data||{},{key:n,timeMin:e.format(),timeMax:t.format(),singleEvents:!0,maxResults:9999}),r&&"local"!==r&&(o.timeZone=r.replace(" ","_")),o):(this.reportError("Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/"),null)},t.prototype.reportError=function(e,t){var r=this.calendar,o=r.opt("googleCalendarError"),n=t||[{message:e}];this.googleCalendarError&&this.googleCalendarError.apply(r,n),o&&o.apply(r,n),i.warn.apply(null,[e].concat(t||[]))},t.prototype.getPrimitive=function(){return this.googleCalendarId},t.prototype.applyManualStandardProps=function(e){var t=i.EventSource.prototype.applyManualStandardProps.apply(this,arguments),r=e.googleCalendarId;return null==r&&e.url&&(r=o(e.url)),null!=r&&(this.googleCalendarId=r,t)},t.prototype.applyMiscProps=function(e){this.ajaxSettings||(this.ajaxSettings={}),l.extend(this.ajaxSettings,e)},t.API_BASE="https://www.googleapis.com/calendar/v3/calendars",t}(i.EventSource);t.default=u,u.defineStandardProps({url:!1,googleCalendarId:!1,googleCalendarApiKey:!0,googleCalendarError:!0})},3:function(e,r){e.exports=t}})}); fullcalendar/fullcalendar.print.min.css 0000644 00000003717 15002261751 0014272 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw *//*! * FullCalendar v3.10.2 Print Stylesheet * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */.fc-bg,.fc-bgevent-container,.fc-bgevent-skeleton,.fc-business-container,.fc-event .fc-resizer,.fc-helper-container,.fc-helper-skeleton,.fc-highlight-container,.fc-highlight-skeleton{display:none}.fc tbody .fc-row,.fc-time-grid{min-height:0!important}.fc-time-grid .fc-event.fc-not-end:after,.fc-time-grid .fc-event.fc-not-start:before{content:"..."}.fc{max-width:100%!important}.fc-event{background:#fff!important;color:#000!important;page-break-inside:avoid}.fc hr,.fc tbody,.fc td,.fc th,.fc thead,.fc-row{border-color:#ccc!important;background:#fff!important}.fc tbody .fc-row{height:auto!important}.fc tbody .fc-row .fc-content-skeleton{position:static;padding-bottom:0!important}.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td{padding-bottom:1em}.fc tbody .fc-row .fc-content-skeleton table{height:1em}.fc-more,.fc-more-cell{display:none!important}.fc tr.fc-limited{display:table-row!important}.fc td.fc-limited{display:table-cell!important}.fc-agenda-view .fc-axis,.fc-popover{display:none}.fc-slats,.fc-time-grid hr{display:none!important}.fc button,.fc-button-group,.fc-time-grid .fc-event .fc-time span{display:none}.fc-time-grid .fc-content-skeleton{position:static}.fc-time-grid .fc-content-skeleton table{height:4em}.fc-time-grid .fc-event-container{margin:0!important}.fc-time-grid .fc-event{position:static!important;margin:3px 2px!important}.fc-time-grid .fc-event.fc-not-end{border-bottom-width:1px!important}.fc-time-grid .fc-event.fc-not-start{border-top-width:1px!important}.fc-time-grid .fc-event .fc-time{white-space:normal!important}.fc-time-grid .fc-event .fc-time:after{content:attr(data-full)}.fc-day-grid-container,.fc-scroller,.fc-time-grid-container{overflow:visible!important;height:auto!important}.fc-row{border:0!important;margin:0!important} fullcalendar/gcal.js 0000644 00000030724 15002261751 0010451 0 ustar 00 /*! * FullCalendar v3.10.2 * Docs & License: https://fullcalendar.io/ * (c) 2019 Adam Shaw */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("fullcalendar"), require("jquery")); else if(typeof define === 'function' && define.amd) define(["fullcalendar", "jquery"], factory); else if(typeof exports === 'object') factory(require("fullcalendar"), require("jquery")); else factory(root["FullCalendar"], root["jQuery"]); })(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 270); /******/ }) /************************************************************************/ /******/ ({ /***/ 1: /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }), /***/ 2: /***/ (function(module, exports) { /* derived from: https://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js only include the helpers we need, to keep down filesize */ var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; exports.__extends = function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; /***/ }), /***/ 270: /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var exportHooks = __webpack_require__(1); var GcalEventSource_1 = __webpack_require__(271); exportHooks.EventSourceParser.registerClass(GcalEventSource_1.default); exportHooks.GcalEventSource = GcalEventSource_1.default; /***/ }), /***/ 271: /***/ (function(module, exports, __webpack_require__) { Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = __webpack_require__(2); var $ = __webpack_require__(3); var fullcalendar_1 = __webpack_require__(1); var GcalEventSource = /** @class */ (function (_super) { tslib_1.__extends(GcalEventSource, _super); function GcalEventSource() { return _super !== null && _super.apply(this, arguments) || this; } GcalEventSource.parse = function (rawInput, calendar) { var rawProps; if (typeof rawInput === 'object') { // long form. might fail in applyManualStandardProps rawProps = rawInput; } else if (typeof rawInput === 'string') { // short form rawProps = { url: rawInput }; // url will be parsed with parseGoogleCalendarId } if (rawProps) { return fullcalendar_1.EventSource.parse.call(this, rawProps, calendar); } return false; }; GcalEventSource.prototype.fetch = function (start, end, timezone) { var _this = this; var url = this.buildUrl(); var requestParams = this.buildRequestParams(start, end, timezone); var ajaxSettings = this.ajaxSettings || {}; var onSuccess = ajaxSettings.success; if (!requestParams) { // could have failed return fullcalendar_1.Promise.reject(); } this.calendar.pushLoading(); return fullcalendar_1.Promise.construct(function (onResolve, onReject) { $.ajax($.extend({}, // destination fullcalendar_1.JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, { url: url, data: requestParams, success: function (responseData, status, xhr) { var rawEventDefs; var successRes; _this.calendar.popLoading(); if (responseData.error) { _this.reportError('Google Calendar API: ' + responseData.error.message, responseData.error.errors); onReject(); } else if (responseData.items) { rawEventDefs = _this.gcalItemsToRawEventDefs(responseData.items, requestParams.timeZone); successRes = fullcalendar_1.applyAll(onSuccess, _this, [responseData, status, xhr]); // passthru if ($.isArray(successRes)) { rawEventDefs = successRes; } onResolve(_this.parseEventDefs(rawEventDefs)); } }, error: function (xhr, statusText, errorThrown) { _this.reportError('Google Calendar network failure: ' + statusText, [xhr, errorThrown]); _this.calendar.popLoading(); onReject(); } })); }); }; GcalEventSource.prototype.gcalItemsToRawEventDefs = function (items, gcalTimezone) { var _this = this; return items.map(function (item) { return _this.gcalItemToRawEventDef(item, gcalTimezone); }); }; GcalEventSource.prototype.gcalItemToRawEventDef = function (item, gcalTimezone) { var url = item.htmlLink || null; // make the URLs for each event show times in the correct timezone if (url && gcalTimezone) { url = injectQsComponent(url, 'ctz=' + gcalTimezone); } var extendedProperties = {}; if (typeof item.extendedProperties === 'object' && typeof item.extendedProperties.shared === 'object') { extendedProperties = item.extendedProperties.shared; } return { id: item.id, title: item.summary, start: item.start.dateTime || item.start.date, end: item.end.dateTime || item.end.date, url: url, location: item.location, description: item.description, extendedProperties: extendedProperties }; }; GcalEventSource.prototype.buildUrl = function () { return GcalEventSource.API_BASE + '/' + encodeURIComponent(this.googleCalendarId) + '/events?callback=?'; // jsonp }; GcalEventSource.prototype.buildRequestParams = function (start, end, timezone) { var apiKey = this.googleCalendarApiKey || this.calendar.opt('googleCalendarApiKey'); var params; if (!apiKey) { this.reportError('Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/'); return null; } // The API expects an ISO8601 datetime with a time and timezone part. // Since the calendar's timezone offset isn't always known, request the date in UTC and pad it by a day on each // side, guaranteeing we will receive all events in the desired range, albeit a superset. // .utc() will set a zone and give it a 00:00:00 time. if (!start.hasZone()) { start = start.clone().utc().add(-1, 'day'); } if (!end.hasZone()) { end = end.clone().utc().add(1, 'day'); } params = $.extend(this.ajaxSettings.data || {}, { key: apiKey, timeMin: start.format(), timeMax: end.format(), singleEvents: true, maxResults: 9999 }); if (timezone && timezone !== 'local') { // when sending timezone names to Google, only accepts underscores, not spaces params.timeZone = timezone.replace(' ', '_'); } return params; }; GcalEventSource.prototype.reportError = function (message, apiErrorObjs) { var calendar = this.calendar; var calendarOnError = calendar.opt('googleCalendarError'); var errorObjs = apiErrorObjs || [{ message: message }]; // to be passed into error handlers if (this.googleCalendarError) { this.googleCalendarError.apply(calendar, errorObjs); } if (calendarOnError) { calendarOnError.apply(calendar, errorObjs); } // print error to debug console fullcalendar_1.warn.apply(null, [message].concat(apiErrorObjs || [])); }; GcalEventSource.prototype.getPrimitive = function () { return this.googleCalendarId; }; GcalEventSource.prototype.applyManualStandardProps = function (rawProps) { var superSuccess = fullcalendar_1.EventSource.prototype.applyManualStandardProps.apply(this, arguments); var googleCalendarId = rawProps.googleCalendarId; if (googleCalendarId == null && rawProps.url) { googleCalendarId = parseGoogleCalendarId(rawProps.url); } if (googleCalendarId != null) { this.googleCalendarId = googleCalendarId; return superSuccess; } return false; }; GcalEventSource.prototype.applyMiscProps = function (rawProps) { if (!this.ajaxSettings) { this.ajaxSettings = {}; } $.extend(this.ajaxSettings, rawProps); }; GcalEventSource.API_BASE = 'https://www.googleapis.com/calendar/v3/calendars'; return GcalEventSource; }(fullcalendar_1.EventSource)); exports.default = GcalEventSource; GcalEventSource.defineStandardProps({ // manually process... url: false, googleCalendarId: false, // automatically transfer... googleCalendarApiKey: true, googleCalendarError: true }); function parseGoogleCalendarId(url) { var match; // detect if the ID was specified as a single string. // will match calendars like "asdf1234@calendar.google.com" in addition to person email calendars. if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) { return url; } else if ((match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) || (match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url))) { return decodeURIComponent(match[1]); } } // Injects a string like "arg=value" into the querystring of a URL function injectQsComponent(url, component) { // inject it after the querystring but before the fragment return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash) { return (qs ? qs + '&' : '?') + component + hash; }); } /***/ }), /***/ 3: /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_3__; /***/ }) /******/ }); }); AdminLTE/.travis.yml 0000644 00000000602 15002261751 0010247 0 ustar 00 language: node_js node_js: - 8 - 9 - 10 - 11 - 12 env: - INSTALL=bower - INSTALL=yarn - INSTALL=npm matrix: fast_finish: true install: - if [ "bower" == $INSTALL ]; then yarn global add bower && bower install; fi - if [ "yarn" == $INSTALL ]; then yarn install; fi - if [ "npm" == $INSTALL ]; then npm install; fi script: - echo 'Tests must be configured' AdminLTE/css/AdminLTE.rtl.css 0000644 00000021023 15002261751 0011635 0 ustar 00 /*! * AdminLTE v2.4.0 * Author: Almsaeed Studio * RTL[ED] By : Akram Ahmed * Company : IT4DS Co. * website : www.it4ds.com.eg */ /*@import url(http://fonts.googleapis.com/earlyaccess/droidarabickufi.css);*/ @font-face { font-family: 'Conv_GESSTwoLight'; src: url('../font/GESSTwoLight.eot'); src: local('?'), url('../font/GESSTwoLight.woff') format('woff'), url('../font/GESSTwoLight.ttf') format('truetype'), url('../font/GESSTwoLight.svg') format('svg'); font-weight: normal; font-style: normal; } html, body { /*direction: rtl;*/ height: 100%; font-family: 'Conv_GESSTwoLight','Droid Arabic Kufi', sans-serif; } .layout-boxed html, .layout-boxed body { /*direction: rtl;*/ height: 100%; } .main-header .logo img { text-align: center; max-height: 50px; } /* Header */ @media (min-width: 768px) { .main-header .logo { float: right; } } /* navbar */ .main-header .navbar { -webkit-transition: margin-right .3s ease-in-out; -o-transition: margin-right .3s ease-in-out; transition: margin-right .3s ease-in-out; margin-right: 230px; margin-left:0px!important; } .layout-top-nav .main-header .navbar { margin-right: 0; } .main-header .sidebar-toggle { float: right; } .main-header .navbar-custom-menu, .main-header .navbar-right { float: left; } .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { left: 0; right: auto; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { left: 0; right: 100%; } /* Setting SideBar */ .control-sidebar.control-sidebar-open, .control-sidebar.control-sidebar-open + .control-sidebar-bg { left: 0!important; right: auto; margin: 10px 0px; padding: 35px 10px; } .control-sidebar-bg, .control-sidebar { left: -230px; -webkit-transition: left .3s ease-in-out; -o-transition: left .3s ease-in-out; transition: left .3s ease-in-out; } .control-sidebar-menu .menu-icon { float: right; } .control-sidebar-menu .menu-info { margin-right: 45px; } /* Side Bar */ .main-sidebar { right:0; left:auto; } .sidebar-menu li > a > .pull-right-container { left: 10px; } .sidebar-menu li > a > .fa-angle-left, .sidebar-menu li > a > .pull-right-container > .fa-angle-left { margin-left: 10px; margin-right: 0px; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { margin-right: 0; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right), .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { right: 50px; left: auto; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > span { margin-right: -3px; padding: 12px 20px 12px 5px; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container { float: left; right: 180px !important; } .treeview-menu { padding: 0; padding-right: 5px; } .treeview-menu .treeview-menu { padding-right: 20px; padding-left: 0px; } /* Main Contenar */ .content-wrapper, .main-footer{ margin-right:230px; margin-left: 0px!important; } .content-header { padding: 15px 15px ; /*height: 35px;*/ } .content-header > h1 { margin: 0; font-size: 24px; } .content-header > h1 > small { font-size: 15px; display: inline-block; padding-right: 4px; font-weight: 300; } .content-header > .breadcrumb { float: left; position: absolute; top: 15px; left: 10px; right: auto; } .content-header > .breadcrumb > li > a > .fa, .content-header > .breadcrumb > li > a > .glyphicon, .content-header > .breadcrumb > li > a > .ion { margin-left: 5px; } .small-box .icon { right: auto; left: 10px; } .nav-tabs-custom > .nav-tabs.pull-right { /*float: left!important;*/ } .nav-tabs-custom > .nav-tabs.pull-right > li { float: left; } .box-header > .box-tools { right: auto; left: 10px; } .todo-list > li .tools { float: left; } .chat .item > .message { margin-right: 55px; } .users-list > li { float:right!important; } /* Skin */ .skin-aqua .sidebar-menu > li.active > a { border-right-color: #3c8dbc; } .skin-aqua .sidebar-menu > li > a { border-right: 3px solid transparent; border-left: 0px solid transparent!important; } .skin-black .sidebar-menu > li.active > a { border-right-color: #3c8dbc; } .skin-black .sidebar-menu > li > a { border-right: 3px solid transparent; border-left: 0px solid transparent!important; } .skin-black-light .sidebar-menu > li.active > a { border-right-color: #3c8dbc; } .skin-black-light .sidebar-menu > li > a { border-right: 3px solid transparent; border-left: 0px solid transparent!important; } /**/ /* All Media */ @media (max-width: 767px) { .content-wrapper, .main-footer { margin-right: 0!important; } } @media (min-width: 768px) { .sidebar-collapse .content-wrapper, .sidebar-collapse .main-footer { margin-right: 0!important; } } @media (max-width: 767px) { .sidebar-open .content-wrapper, .sidebar-open .main-footer { -webkit-transform: translate(-230px, 0); -ms-transform: translate(-230px, 0); -o-transform: translate(-230px, 0); transform: translate(-230px, 0); } } @media (max-width: 767px) { .main-header .navbar-right { float: right; } } @media (max-width: 1991px) { .content-header > .breadcrumb { position: relative; top: 0; left: 0; right:auto; float: none; background: #d2d6de; padding-right: 10px; } } @media (max-width: 991px) { .navbar-custom-menu .navbar-nav > li { float: right; } .navbar-custom-menu .navbar-nav { margin: 0; float: right; } } @media (max-width: 767px) { .main-header .logo, .main-header .navbar { width: 100%; float: none; } .main-header .navbar { margin: 0; } .main-header .navbar-custom-menu { float: left; } } @media (max-width: 991px) { .navbar-collapse.pull-left { float: none !important; } .navbar-collapse.pull-left + .navbar-custom-menu { display: block; position: absolute; top: 0; left: 40px; right:auto; } } @media (max-width: 767px) { .main-sidebar { -webkit-transform: translate(230px, 0); -ms-transform: translate(230px, 0); -o-transform: translate(230px, 0); transform: translate(230px, 0); } } @media (min-width: 768px) { .sidebar-collapse .main-sidebar { -webkit-transform: translate(230px, 0); -ms-transform: translate(230px, 0); -o-transform: translate(230px, 0); transform: translate(230px, 0); } } @media (max-width: 767px) { .sidebar-open .main-sidebar { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } } @media (min-width: 768px) { .sidebar-mini.sidebar-collapse .content-wrapper, .sidebar-mini.sidebar-collapse .right-side, .sidebar-mini.sidebar-collapse .main-footer { margin-right: 50px !important; margin-left: 0px !important; z-index: 840; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { margin-right: 0; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { border-top-left-radius: 4px; } .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { border-bottom-left-radius: 4px; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-bottom-left-radius: 4px; } .sidebar-mini.sidebar-collapse .main-header .navbar { margin-right: 50px; } } @media (min-width: 768px) { .control-sidebar-open .content-wrapper, .control-sidebar-open .right-side, .control-sidebar-open .main-footer { margin-left: 230px; } } @media (max-width: 767px) { .navbar-nav > .user-menu .user-image { float: none; margin-left: 0; margin-top: -8px; line-height: 10px; } } @media (max-width: 991px) { .navbar-custom-menu > .navbar-nav { float: left; } .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { position: absolute; left: 5%; right: auto; border: 1px solid #ddd; background: #fff; } } @media (max-width: 991px) { .chart-legend > li { float: right; margin-left: 10px; } } @media (max-width: 991px) { .error-page > .headline { float: none; text-align: center; } } @media (max-width: 991px) { .error-page > .error-content { margin-right: 0; } } /* */ .control-sidebar-heading { font-weight: 400; font-size: 16px; padding: 10px 0; margin-bottom: 10px; text-align: center; } .control-sidebar-subheading { display: block; font-weight: 400; font-size: 14px; } AdminLTE/css/adminlte.min.css.map 0000644 00001126217 15002261751 0012607 0 ustar 00 { "version": 3, "file": "adminlte.min.css", "sources": [ "../../build/scss/AdminLTE.scss", "../../build/scss/_bootstrap_variables.scss", "../../bower_components/bootstrap/scss/bootstrap.scss", "../../bower_components/bootstrap/scss/_variables.scss", "../../bower_components/bootstrap/scss/_mixins.scss", "../../bower_components/bootstrap/scss/mixins/_breakpoints.scss", "../../bower_components/bootstrap/scss/mixins/_hover.scss", "../../bower_components/bootstrap/scss/mixins/_image.scss", "../../bower_components/bootstrap/scss/mixins/_badge.scss", "../../bower_components/bootstrap/scss/mixins/_resize.scss", "../../bower_components/bootstrap/scss/mixins/_screen-reader.scss", "../../bower_components/bootstrap/scss/mixins/_size.scss", "../../bower_components/bootstrap/scss/mixins/_reset-text.scss", "../../bower_components/bootstrap/scss/mixins/_text-emphasis.scss", "../../bower_components/bootstrap/scss/mixins/_text-hide.scss", "../../bower_components/bootstrap/scss/mixins/_text-truncate.scss", "../../bower_components/bootstrap/scss/mixins/_transforms.scss", "../../bower_components/bootstrap/scss/mixins/_visibility.scss", "../../bower_components/bootstrap/scss/mixins/_alert.scss", "../../bower_components/bootstrap/scss/mixins/_buttons.scss", "../../bower_components/bootstrap/scss/mixins/_cards.scss", "../../bower_components/bootstrap/scss/mixins/_pagination.scss", "../../bower_components/bootstrap/scss/mixins/_lists.scss", "../../bower_components/bootstrap/scss/mixins/_list-group.scss", "../../bower_components/bootstrap/scss/mixins/_nav-divider.scss", "../../bower_components/bootstrap/scss/mixins/_forms.scss", "../../bower_components/bootstrap/scss/mixins/_table-row.scss", "../../bower_components/bootstrap/scss/mixins/_background-variant.scss", "../../bower_components/bootstrap/scss/mixins/_border-radius.scss", "../../bower_components/bootstrap/scss/mixins/_gradients.scss", "../../bower_components/bootstrap/scss/mixins/_clearfix.scss", "../../bower_components/bootstrap/scss/mixins/_grid-framework.scss", "../../bower_components/bootstrap/scss/mixins/_grid.scss", "../../bower_components/bootstrap/scss/mixins/_float.scss", "../../bower_components/bootstrap/scss/_custom.scss", "../../bower_components/bootstrap/scss/_normalize.scss", "../../bower_components/bootstrap/scss/_print.scss", "../../bower_components/bootstrap/scss/_reboot.scss", "../../bower_components/bootstrap/scss/_type.scss", "../../bower_components/bootstrap/scss/_images.scss", "../../bower_components/bootstrap/scss/_code.scss", "../../bower_components/bootstrap/scss/_grid.scss", "../../bower_components/bootstrap/scss/_tables.scss", "../../bower_components/bootstrap/scss/_forms.scss", "../../bower_components/bootstrap/scss/_buttons.scss", "../../bower_components/bootstrap/scss/_transitions.scss", "../../bower_components/bootstrap/scss/_dropdown.scss", "../../bower_components/bootstrap/scss/_button-group.scss", "../../bower_components/bootstrap/scss/_input-group.scss", "../../bower_components/bootstrap/scss/_custom-forms.scss", "../../bower_components/bootstrap/scss/_nav.scss", "../../bower_components/bootstrap/scss/_navbar.scss", "../../bower_components/bootstrap/scss/_card.scss", "../../bower_components/bootstrap/scss/_breadcrumb.scss", "../../bower_components/bootstrap/scss/_pagination.scss", "../../bower_components/bootstrap/scss/_badge.scss", "../../bower_components/bootstrap/scss/_jumbotron.scss", "../../bower_components/bootstrap/scss/_alert.scss", "../../bower_components/bootstrap/scss/_progress.scss", "../../bower_components/bootstrap/scss/_media.scss", "../../bower_components/bootstrap/scss/_list-group.scss", "../../bower_components/bootstrap/scss/_responsive-embed.scss", "../../bower_components/bootstrap/scss/_close.scss", "../../bower_components/bootstrap/scss/_modal.scss", "../../bower_components/bootstrap/scss/_tooltip.scss", "../../bower_components/bootstrap/scss/_popover.scss", "../../bower_components/bootstrap/scss/_carousel.scss", "../../bower_components/bootstrap/scss/_utilities.scss", "../../bower_components/bootstrap/scss/utilities/_align.scss", "../../bower_components/bootstrap/scss/utilities/_background.scss", "../../bower_components/bootstrap/scss/utilities/_borders.scss", "../../bower_components/bootstrap/scss/utilities/_clearfix.scss", "../../bower_components/bootstrap/scss/utilities/_display.scss", "../../bower_components/bootstrap/scss/utilities/_flex.scss", "../../bower_components/bootstrap/scss/utilities/_float.scss", "../../bower_components/bootstrap/scss/utilities/_position.scss", "../../bower_components/bootstrap/scss/utilities/_screenreaders.scss", "../../bower_components/bootstrap/scss/utilities/_sizing.scss", "../../bower_components/bootstrap/scss/utilities/_spacing.scss", "../../bower_components/bootstrap/scss/utilities/_text.scss", "../../bower_components/bootstrap/scss/utilities/_visibility.scss", "../../build/scss/_variables.scss", "../../build/scss/_mixins.scss", "../../build/scss/_layout.scss", "../../build/scss/_header.scss", "../../build/scss/_sidebar.scss", "../../build/scss/_sidebar-mini.scss", "../../build/scss/_control-sidebar.scss", "../../build/scss/_dropdown.scss", "../../build/scss/_forms.scss", "../../build/scss/_progress-bars.scss", "../../build/scss/_small-box.scss", "../../build/scss/_boxes.scss", "../../build/scss/_info-box.scss", "../../build/scss/_timeline.scss", "../../build/scss/_buttons.scss", "../../build/scss/_callout.scss", "../../build/scss/_alerts.scss", "../../build/scss/_navs.scss", "../../build/scss/_products.scss", "../../build/scss/_table.scss", "../../build/scss/_labels.scss", "../../build/scss/_direct-chat.scss", "../../build/scss/_users-list.scss", "../../build/scss/_site-search.scss", "../../build/scss/_carousel.scss", "../../build/scss/_modal.scss", "../../build/scss/_social-widgets.scss", "../../build/scss/_mailbox.scss", "../../build/scss/_lockscreen.scss", "../../build/scss/_login_and_register.scss", "../../build/scss/_404_500_errors.scss", "../../build/scss/_invoice.scss", "../../build/scss/_profile.scss", "../../build/scss/_bootstrap-social.scss", "../../build/scss/_fullcalendar.scss", "../../build/scss/_select2.scss", "../../build/scss/_miscellaneous.scss", "../../build/scss/_print.scss", "../../build/scss/skins/_all-skins.scss", "../../build/scss/skins/skin-blue.scss", "../../build/scss/skins/skin-blue-light.scss", "../../build/scss/skins/skin-black.scss", "../../build/scss/skins/skin-black-light.scss", "../../build/scss/skins/skin-green.scss", "../../build/scss/skins/skin-green-light.scss", "../../build/scss/skins/skin-red.scss", "../../build/scss/skins/skin-red-light.scss", "../../build/scss/skins/skin-yellow.scss", "../../build/scss/skins/skin-yellow-light.scss", "../../build/scss/skins/skin-purple.scss", "../../build/scss/skins/skin-purple-light.scss" ], "mappings": "AAAA;;;;;GAKG,AELH;;;;;GAKG,AiCLH,4EAA4E,AAY5E,AAAA,IAAI,AAAC,CACH,WAAW,CAAE,UAAW,CACxB,WAAW,CAAE,IAAK,CAClB,oBAAoB,CAAE,IAAK,CAC3B,wBAAwB,CAAE,IAAK,CAChC,AASD,AAAA,IAAI,AAAC,CACH,MAAM,CAAE,CAAE,CACX,AAMD,AAAA,OAAO,CACP,AAAA,KAAK,CACL,AAAA,MAAM,CACN,AAAA,MAAM,CACN,AAAA,GAAG,CACH,AAAA,OAAO,AAAC,CACN,OAAO,CAAE,KAAM,CAChB,AAOD,AAAA,EAAE,AAAC,CACD,SAAS,CAAE,GAAI,CACf,MAAM,CAAE,QAAS,CAClB,AAUD,AAAA,UAAU,CACV,AAAA,MAAM,CACN,AAAA,IAAI,AAAC,CACH,OAAO,CAAE,KAAM,CAChB,AAMD,AAAA,MAAM,AAAC,CACL,MAAM,CAAE,QAAS,CAClB,AAOD,AAAA,EAAE,AAAC,CACD,UAAU,CAAE,WAAY,CACxB,MAAM,CAAE,CAAE,CACV,QAAQ,CAAE,OAAQ,CACnB,AAOD,AAAA,GAAG,AAAC,CACF,WAAW,CAAE,oBAAqB,CAClC,SAAS,CAAE,GAAI,CAChB,AAUD,AAAA,CAAC,AAAC,CACA,gBAAgB,CAAE,WAAY,CAC9B,4BAA4B,CAAE,OAAQ,CACvC,AAOD,AAAC,CAAA,AAAA,OAAO,CACR,AAAC,CAAA,AAAA,MAAM,AAAC,CACN,aAAa,CAAE,CAAE,CAClB,AAOD,AAAU,IAAN,CAAA,AAAA,KAAC,AAAA,CAAO,CACV,aAAa,CAAE,IAAK,CACpB,eAAe,CAAE,SAAU,CAC3B,eAAe,CAAE,gBAAiB,CACnC,AAMD,AAAA,CAAC,CACD,AAAA,MAAM,AAAC,CACL,WAAW,CAAE,OAAQ,CACtB,AAMD,AAAA,CAAC,CACD,AAAA,MAAM,AAAC,CACL,WAAW,CAAE,MAAO,CACrB,AAOD,AAAA,IAAI,CACJ,AAAA,GAAG,CACH,AAAA,IAAI,AAAC,CACH,WAAW,CAAE,oBAAqB,CAClC,SAAS,CAAE,GAAI,CAChB,AAMD,AAAA,GAAG,AAAC,CACF,UAAU,CAAE,MAAO,CACpB,AAMD,AAAA,IAAI,AAAC,CACH,gBAAgB,CAAE,IAAK,CACvB,KAAK,CAAE,IAAK,CACb,AAMD,AAAA,KAAK,AAAC,CACJ,SAAS,CAAE,GAAI,CAChB,AAOD,AAAA,GAAG,CACH,AAAA,GAAG,AAAC,CACF,SAAS,CAAE,GAAI,CACf,WAAW,CAAE,CAAE,CACf,QAAQ,CAAE,QAAS,CACnB,cAAc,CAAE,QAAS,CAC1B,AAED,AAAA,GAAG,AAAC,CACF,MAAM,CAAE,OAAQ,CACjB,AAED,AAAA,GAAG,AAAC,CACF,GAAG,CAAE,MAAO,CACb,AASD,AAAA,KAAK,CACL,AAAA,KAAK,AAAC,CACJ,OAAO,CAAE,YAAa,CACvB,AAMD,AAAoB,KAAf,AAAA,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,EAAW,CACpB,OAAO,CAAE,IAAK,CACd,MAAM,CAAE,CAAE,CACX,AAMD,AAAA,GAAG,AAAC,CACF,YAAY,CAAE,IAAK,CACpB,AAMD,AAAa,GAAV,AAAA,IAAK,CAAA,AAAA,KAAK,CAAE,CACb,QAAQ,CAAE,MAAO,CAClB,AAUD,AAAA,MAAM,CACN,AAAA,KAAK,CACL,AAAA,QAAQ,CACR,AAAA,MAAM,CACN,AAAA,QAAQ,AAAC,CACP,WAAW,CAAE,UAAW,CACxB,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,IAAK,CAClB,MAAM,CAAE,CAAE,CACX,AAOD,AAAA,MAAM,CACN,AAAA,KAAK,AAAC,CACJ,QAAQ,CAAE,OAAQ,CACnB,AAOD,AAAA,MAAM,CACN,AAAA,MAAM,AAAC,CACL,cAAc,CAAE,IAAK,CACtB,AAQD,AAAA,MAAM,CACN,AAAmB,IAAf,EAAC,AAAA,IAAC,CAAK,QAAQ,AAAb,GACN,AAAA,AAAa,IAAZ,CAAK,OAAO,AAAZ,GACD,AAAA,AAAc,IAAb,CAAK,QAAQ,AAAb,CAAe,CACd,kBAAkB,CAAE,MAAO,CAC5B,AAMD,AAAM,MAAA,AAAA,kBAAkB,EACxB,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,kBAAkB,EACjC,AAAA,AAAc,IAAb,CAAK,OAAO,AAAZ,CAAa,kBAAkB,EAChC,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,kBAAkB,AAAC,CAChC,YAAY,CAAE,IAAK,CACnB,OAAO,CAAE,CAAE,CACZ,AAMD,AAAM,MAAA,AAAA,eAAe,EACrB,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,eAAe,EAC9B,AAAA,AAAc,IAAb,CAAK,OAAO,AAAZ,CAAa,eAAe,EAC7B,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,eAAe,AAAC,CAC7B,OAAO,CAAE,qBAAsB,CAChC,AAMD,AAAA,QAAQ,AAAC,CACP,MAAM,CAAE,iBAAkB,CAC1B,MAAM,CAAE,KAAM,CACd,OAAO,CAAE,qBAAsB,CAChC,AASD,AAAA,MAAM,AAAC,CACL,UAAU,CAAE,UAAW,CACvB,KAAK,CAAE,OAAQ,CACf,OAAO,CAAE,KAAM,CACf,SAAS,CAAE,IAAK,CAChB,OAAO,CAAE,CAAE,CACX,WAAW,CAAE,MAAO,CACrB,AAOD,AAAA,QAAQ,AAAC,CACP,OAAO,CAAE,YAAa,CACtB,cAAc,CAAE,QAAS,CAC1B,AAMD,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,IAAK,CAChB,CAOD,AAAA,AAAgB,IAAf,CAAK,UAAU,AAAf,GACD,AAAA,AAAa,IAAZ,CAAK,OAAO,AAAZ,CAAc,CACb,UAAU,CAAE,UAAW,CACvB,OAAO,CAAE,CAAE,CACZ,CAMD,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,2BAA2B,EAC1C,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,2BAA2B,AAAC,CACzC,MAAM,CAAE,IAAK,CACd,CAOD,AAAA,AAAc,IAAb,CAAK,QAAQ,AAAb,CAAe,CACd,kBAAkB,CAAE,SAAU,CAC9B,cAAc,CAAE,IAAK,CACtB,CAMD,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,8BAA8B,EAC7C,AAAA,AAAe,IAAd,CAAK,QAAQ,AAAb,CAAc,2BAA2B,AAAC,CACzC,kBAAkB,CAAE,IAAK,CAC1B,AAOD,AAAA,4BAA4B,AAAC,CAC3B,kBAAkB,CAAE,MAAO,CAC3B,IAAI,CAAE,OAAQ,CACf,AAUD,AAAA,OAAO,CACP,AAAA,IAAI,AAAC,CACH,OAAO,CAAE,KAAM,CAChB,AAMD,AAAA,OAAO,AAAC,CACN,OAAO,CAAE,SAAU,CACpB,AASD,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,YAAa,CACvB,AAMD,AAAA,QAAQ,AAAC,CACP,OAAO,CAAE,IAAK,CACf,CASD,AAAA,AAAO,MAAN,AAAA,CAAQ,CACP,OAAO,CAAE,IAAK,CACf,ACjcC,MAAM,CAAN,KAAK,CACH,AAAA,CAAC,CACD,AAAC,CAAA,AAAA,QAAQ,CACT,AAAC,CAAA,AAAA,OAAO,CACR,AAAC,CAAA,AAAA,cAAc,CACf,AAAG,GAAA,AAAA,cAAc,CACjB,AAAU,UAAA,AAAA,cAAc,CACxB,AAAE,EAAA,AAAA,cAAc,CAChB,AAAC,CAAA,AAAA,YAAY,CACb,AAAG,GAAA,AAAA,YAAY,CACf,AAAU,UAAA,AAAA,YAAY,CACtB,AAAE,EAAA,AAAA,YAAY,AAAC,CAIb,WAAW,CAAE,eAAgB,CAE7B,UAAU,CAAE,eAAgB,CAC7B,AAED,AAAA,CAAC,CACD,AAAC,CAAA,AAAA,QAAQ,AAAC,CACR,eAAe,CAAE,SAAU,CAC5B,AAOD,AAAW,IAAP,CAAA,AAAA,KAAC,AAAA,CAAM,OAAO,AAAC,CACjB,OAAO,CAAE,IAAI,CAAC,WAAI,CAAQ,GAAG,CAC9B,AAaD,AAAA,GAAG,AAAC,CACF,WAAW,CAAE,mBAAoB,CAClC,AACD,AAAA,GAAG,CACH,AAAA,UAAU,AAAC,CACT,MAAM,CnC4GG,GAAG,CmC5GU,KAAK,CAAC,IAAI,CAChC,iBAAiB,CAAE,KAAM,CAC1B,AAOD,AAAA,KAAK,AAAC,CACJ,OAAO,CAAE,kBAAmB,CAC7B,AAED,AAAA,EAAE,CACF,AAAA,GAAG,AAAC,CACF,iBAAiB,CAAE,KAAM,CAC1B,AAED,AAAA,CAAC,CACD,AAAA,EAAE,CACF,AAAA,EAAE,AAAC,CACD,OAAO,CAAE,CAAE,CACX,MAAM,CAAE,CAAE,CACX,AAED,AAAA,EAAE,CACF,AAAA,EAAE,AAAC,CACD,gBAAgB,CAAE,KAAM,CACzB,AAKD,AAAA,OAAO,AAAC,CACN,OAAO,CAAE,IAAK,CACf,AACD,AAAA,MAAM,AAAC,CACL,MAAM,CnCuEG,GAAG,CmCvEU,KAAK,CAAC,IAAI,CACjC,AAED,AAAA,MAAM,AAAC,CACL,eAAe,CAAE,mBAAoB,CAMtC,AAPD,AAGE,MAHI,CAGJ,EAAE,CAHJ,AAIE,MAJI,CAIJ,EAAE,AAAC,CACD,gBAAgB,CAAE,eAAgB,CACnC,AAEH,AACE,eADa,CACb,EAAE,CADJ,AAEE,eAFa,CAEb,EAAE,AAAC,CACD,MAAM,CAAE,yBAA0B,CACnC,CC5FP,AAAA,IAAI,AAAC,CACH,UAAU,CAAE,UAAW,CACxB,AAED,AAAA,CAAC,CACD,AAAC,CAAA,AAAA,QAAQ,CACT,AAAC,CAAA,AAAA,OAAO,AAAC,CACP,UAAU,CAAE,OAAQ,CACrB,AAmBC,aAAa,CAAG,KAAK,CAAE,YAAa,CAQtC,AAAA,IAAI,AAAC,CAYH,kBAAkB,CAAE,SAAU,CAG9B,2BAA2B,CAAE,WAAI,CAClC,AAED,AAAA,IAAI,AAAC,CACH,WAAW,CpC2KY,aAAC,CAAc,SAAS,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,gBAAgB,CAAE,KAAK,CAAE,UAAU,CoC1K5H,SAAS,CpC+KM,IAAI,CoC9KnB,WAAW,CpCmLQ,MAAM,CoClLzB,WAAW,CpCsLM,GAAG,CoCpLpB,KAAK,CpC0BqB,OAAO,CoCxBjC,gBAAgB,CpCYT,IAAI,CoCXZ,CAOD,AAAA,AAAe,QAAd,CAAS,IAAI,AAAb,CAAc,MAAM,AAAC,CACpB,OAAO,CAAE,eAAgB,CAC1B,AAWD,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,AAAC,CACrB,UAAU,CAAE,CAAE,CACd,aAAa,CAAE,KAAM,CACtB,AAMD,AAAA,CAAC,AAAC,CACA,UAAU,CAAE,CAAE,CACd,aAAa,CAAE,IAAK,CACrB,AAGD,AAAU,IAAN,CAAA,AAAA,KAAC,AAAA,EAEL,AAAwB,IAApB,CAAA,AAAA,mBAAC,AAAA,CAAqB,CACxB,MAAM,CAAE,IAAK,CACd,AAED,AAAA,OAAO,AAAC,CACN,aAAa,CAAE,IAAK,CACpB,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,OAAQ,CACtB,AAED,AAAA,EAAE,CACF,AAAA,EAAE,CACF,AAAA,EAAE,AAAC,CACD,UAAU,CAAE,CAAE,CACd,aAAa,CAAE,IAAK,CACrB,AAED,AAAG,EAAD,CAAC,EAAE,CACL,AAAG,EAAD,CAAC,EAAE,CACL,AAAG,EAAD,CAAC,EAAE,CACL,AAAG,EAAD,CAAC,EAAE,AAAC,CACJ,aAAa,CAAE,CAAE,CAClB,AAED,AAAA,EAAE,AAAC,CACD,WAAW,CpCgHM,IAAI,CoC/GtB,AAED,AAAA,EAAE,AAAC,CACD,aAAa,CAAE,KAAM,CACrB,WAAW,CAAE,CAAE,CAChB,AAED,AAAA,UAAU,AAAC,CACT,MAAM,CAAE,QAAS,CAClB,AAOD,AAAA,CAAC,AAAC,CACA,KAAK,CpC/DE,OAAO,CoCgEd,eAAe,CpC8BO,IAAI,CoCxB3B,AARD,AAAA,CAAC,A/B9II,MAAM,C+B8IX,AAAA,CAAC,A/B7II,MAAM,AAAC,C+BkJR,KAAK,CpC4Be,OAAM,CoC3B1B,eAAe,CpC4BK,SAAS,CK7K5B,A+B2JL,AAA4B,CAA3B,AAAA,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,EAAW,CAC5B,KAAK,CAAE,OAAQ,CACf,eAAe,CAAE,IAAK,CAUvB,AAZD,AAA4B,CAA3B,AAAA,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,E/B9Jd,MAAM,C+B8JX,AAA4B,CAA3B,AAAA,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,E/B7Jd,MAAM,AAAC,C+BkKR,KAAK,CAAE,OAAQ,CACf,eAAe,CAAE,IAAK,C/BjKrB,A+B2JL,AAA4B,CAA3B,AAAA,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,EAShB,MAAM,AAAC,CACN,OAAO,CAAE,CAAE,CACZ,AAQH,AAAA,GAAG,AAAC,CAEF,UAAU,CAAE,CAAE,CAEd,aAAa,CAAE,IAAK,CAEpB,QAAQ,CAAE,IAAK,CAChB,AAOD,AAAA,MAAM,AAAC,CAGL,MAAM,CAAE,QAAS,CAClB,AAOD,AAAA,GAAG,AAAC,CAGF,cAAc,CAAE,MAAO,CAGxB,CASD,AAAA,AAAc,IAAb,CAAK,QAAQ,AAAb,CAAe,CACd,MAAM,CAAE,OAAQ,CACjB,AAaD,AAAA,CAAC,CACD,AAAA,IAAI,CACJ,AAAA,MAAM,EACN,AAAA,AAAc,IAAb,CAAK,QAAQ,AAAb,EACD,AAAA,KAAK,CACL,AAAA,KAAK,CACL,AAAA,MAAM,CACN,AAAA,OAAO,CACP,AAAA,QAAQ,AAAC,CACP,YAAY,CAAE,YAAa,CAC5B,AAOD,AAAA,KAAK,AAAC,CAEJ,eAAe,CAAE,QAAS,CAE1B,gBAAgB,CpCoEc,WAAW,CoCnE1C,AAED,AAAA,OAAO,AAAC,CACN,WAAW,CpC6DmB,MAAM,CoC5DpC,cAAc,CpC4DgB,MAAM,CoC3DpC,KAAK,CpC3KqB,OAAO,CoC4KjC,UAAU,CAAE,IAAK,CACjB,YAAY,CAAE,MAAO,CACtB,AAED,AAAA,EAAE,AAAC,CAED,UAAU,CAAE,IAAK,CAClB,AAOD,AAAA,KAAK,AAAC,CAEJ,OAAO,CAAE,YAAa,CACtB,aAAa,CAAE,KAAM,CACtB,AAMD,AAAM,MAAA,AAAA,MAAM,AAAC,CACX,OAAO,CAAE,UAAW,CACpB,OAAO,CAAE,iCAAkC,CAC5C,AAED,AAAA,KAAK,CACL,AAAA,MAAM,CACN,AAAA,MAAM,CACN,AAAA,QAAQ,AAAC,CAGP,WAAW,CAAE,OAAQ,CACtB,AAED,AAAkB,KAAb,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAKH,SAAS,CAJZ,AAAqB,KAAhB,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAIH,SAAS,AAAC,CACT,MAAM,CpC4IuB,WAAW,CoC3IzC,AAIH,AAAiB,KAAZ,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,EACN,AAAiB,KAAZ,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,EACN,AAA2B,KAAtB,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB,EACN,AAAkB,KAAb,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAc,CAMlB,kBAAkB,CAAE,OAAQ,CAC7B,AAED,AAAA,QAAQ,AAAC,CAEP,MAAM,CAAE,QAAS,CAClB,AAED,AAAA,QAAQ,AAAC,CAMP,SAAS,CAAE,CAAE,CAEb,OAAO,CAAE,CAAE,CACX,MAAM,CAAE,CAAE,CACV,MAAM,CAAE,CAAE,CACX,AAED,AAAA,MAAM,AAAC,CAEL,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,CAAE,CACX,aAAa,CAAE,KAAM,CACrB,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,OAAQ,CACtB,AAED,AAAmB,KAAd,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAe,CAKnB,kBAAkB,CAAE,IAAK,CAC1B,AAGD,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,YAAa,CAIvB,CAGD,AAAA,AAAO,MAAN,AAAA,CAAQ,CACP,OAAO,CAAE,eAAgB,CAC1B,AChYD,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CAAE,AAAA,EAAE,CACtB,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,CAAE,AAAA,GAAG,AAAC,CAC3B,aAAa,CrCuQW,KAAO,CqCtQ/B,WAAW,CrCuQY,OAAO,CqCtQ9B,WAAW,CrCuQY,GAAG,CqCtQ1B,WAAW,CrCuQY,GAAG,CqCtQ1B,KAAK,CrCuQkB,OAAO,CqCtQ/B,AAED,AAAA,EAAE,CAAE,AAAA,GAAG,AAAC,CAAE,SAAS,CrCyPJ,MAAM,CqCzPiB,AACtC,AAAA,EAAE,CAAE,AAAA,GAAG,AAAC,CAAE,SAAS,CrCyPJ,IAAI,CqCzPmB,AACtC,AAAA,EAAE,CAAE,AAAA,GAAG,AAAC,CAAE,SAAS,CrCyPJ,OAAO,CqCzPgB,AACtC,AAAA,EAAE,CAAE,AAAA,GAAG,AAAC,CAAE,SAAS,CrCyPJ,MAAM,CqCzPiB,AACtC,AAAA,EAAE,CAAE,AAAA,GAAG,AAAC,CAAE,SAAS,CrCyPJ,OAAO,CqCzPgB,AACtC,AAAA,EAAE,CAAE,AAAA,GAAG,AAAC,CAAE,SAAS,CrCyPJ,IAAI,CqCzPmB,AAEtC,AAAA,KAAK,AAAC,CACJ,SAAS,CrCyQQ,OAAO,CqCxQxB,WAAW,CrCyQM,GAAG,CqCxQrB,AAGD,AAAA,UAAU,AAAC,CACT,SAAS,CrCwPK,IAAI,CqCvPlB,WAAW,CrC4PS,GAAG,CqC3PvB,WAAW,CrCmPY,GAAG,CqClP3B,AACD,AAAA,UAAU,AAAC,CACT,SAAS,CrCoPK,MAAM,CqCnPpB,WAAW,CrCwPS,GAAG,CqCvPvB,WAAW,CrC8OY,GAAG,CqC7O3B,AACD,AAAA,UAAU,AAAC,CACT,SAAS,CrCgPK,MAAM,CqC/OpB,WAAW,CrCoPS,GAAG,CqCnPvB,WAAW,CrCyOY,GAAG,CqCxO3B,AACD,AAAA,UAAU,AAAC,CACT,SAAS,CrC4OK,MAAM,CqC3OpB,WAAW,CrCgPS,GAAG,CqC/OvB,WAAW,CrCoOY,GAAG,CqCnO3B,AAOD,AAAA,EAAE,AAAC,CACD,UAAU,CrCuFD,IAAI,CqCtFb,aAAa,CrCsFJ,IAAI,CqCrFb,MAAM,CAAE,CAAE,CACV,UAAU,CrCiHG,GAAG,CqCjHa,KAAK,CrCuC3B,eAAI,CqCtCZ,AAOD,AAAA,KAAK,CACL,AAAA,MAAM,AAAC,CACL,SAAS,CrC+NO,GAAG,CqC9NnB,WAAW,CrC6LQ,MAAM,CqC5L1B,AAED,AAAA,IAAI,CACJ,AAAA,KAAK,AAAC,CACJ,OAAO,CrCuOM,IAAI,CqCtOjB,gBAAgB,CrCinBe,OAAO,CqChnBvC,AAOD,AAAA,cAAc,CsD4Md,AtD5MA,asD4Ma,CU7Jb,AhE/CA,cgE+Cc,CC5Hd,AjE6EA,WiE7EW,CKmCX,AtE0CA,oBsE1CoB,AtE0CL,ChB7Eb,YAAY,CAAE,CAAE,CAChB,UAAU,CAAE,IAAK,CgB8ElB,AAGD,AAAA,YAAY,AAAC,ChBlFX,YAAY,CAAE,CAAE,CAChB,UAAU,CAAE,IAAK,CgBmFlB,AACD,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,YAAa,CAKvB,AAND,AAAA,iBAAiB,AAGd,IAAK,CAAA,AAAA,WAAW,CAAE,CACjB,YAAY,CrCyNM,GAAG,CqCxNtB,AASH,AAAA,WAAW,AAAC,CACV,SAAS,CAAE,GAAI,CACf,cAAc,CAAE,SAAU,CAC3B,AAGD,AAAA,WAAW,AAAC,CACV,OAAO,CAAG,KAAO,CrC8BR,IAAI,CqC7Bb,aAAa,CrC6BJ,IAAI,CqC5Bb,SAAS,CrCwLgB,OAAe,CqCvLxC,WAAW,CrCyLa,MAAM,CqCzLQ,KAAK,CrCJjB,OAAO,CqCKlC,AAED,AAAA,kBAAkB,AAAC,CACjB,OAAO,CAAE,KAAM,CACf,SAAS,CAAE,GAAI,CACf,KAAK,CrCXqB,OAAO,CqCgBlC,AARD,AAAA,kBAAkB,AAKf,QAAQ,AAAC,CACR,OAAO,CAAE,aAAc,CACxB,AAIH,AAAA,mBAAmB,AAAC,CAClB,aAAa,CrCYJ,IAAI,CqCXb,YAAY,CAAE,CAAE,CAChB,UAAU,CAAE,KAAM,CAClB,YAAY,CrCuKY,MAAM,CqCvKS,KAAK,CrCtBlB,OAAO,CqCuBjC,WAAW,CAAE,CAAE,CAChB,AAED,AAAoB,mBAAD,CAAC,kBAAkB,AACnC,QAAQ,AAAC,CACR,OAAO,CAAE,EAAG,CACb,AAHH,AAAoB,mBAAD,CAAC,kBAAkB,AAInC,OAAO,AAAC,CACP,OAAO,CAAE,aAAc,CACxB,ACtIH,AAAA,UAAU,AAAC,ChCIT,SAAS,CAAE,IAAK,CAGhB,MAAM,CAAE,IAAK,CgCLd,AAID,AAAA,cAAc,AAAC,CACb,OAAO,CtC22BqB,MAAM,CsC12BlC,gBAAgB,CtC+ET,IAAI,CsC9EX,MAAM,CtCyJO,GAAG,CsCzJgB,KAAK,CtC42BT,IAAI,C2Bx3B9B,aAAa,C3B4TQ,MAAM,CGjTzB,UAAU,CHg3Bc,GAAG,CAAC,IAAG,CAAC,WAAW,CMp3B/C,SAAS,CAAE,IAAK,CAGhB,MAAM,CAAE,IAAK,CgCSd,AAMD,AAAA,OAAO,AAAC,CAEN,OAAO,CAAE,YAAa,CACvB,AAED,AAAA,WAAW,AAAC,CACV,aAAa,CAAG,KAAS,CACzB,WAAW,CAAE,CAAE,CAChB,AAED,AAAA,eAAe,AAAC,CACd,SAAS,CtC41BgB,GAAG,CsC31B5B,KAAK,CtCmEqB,OAAO,CsClElC,ACzCD,AAAA,IAAI,CACJ,AAAA,GAAG,CACH,AAAA,GAAG,CACH,AAAA,IAAI,AAAC,CACH,WAAW,CvCmPY,KAAK,CAAE,MAAM,CAAE,QAAQ,CAAE,iBAAiB,CAAE,aAAa,CAAE,SAAS,CuClP5F,AAGD,AAAA,IAAI,AAAC,CACH,OAAO,CvC46BqB,KAAK,CADL,KAAK,CuC16BjC,SAAS,CvCy6BmB,GAAG,CuCx6B/B,KAAK,CvC26BuB,OAAO,CuC16BnC,gBAAgB,CvCiGU,OAAO,C2B1G/B,aAAa,C3B4TQ,MAAM,CuC1S9B,AALC,AARF,CAQG,CARH,IAAI,AAQI,CACJ,OAAO,CAAE,CAAE,CACX,KAAK,CAAE,OAAQ,CACf,gBAAgB,CAAE,OAAQ,CAC3B,AAIH,AAAA,GAAG,AAAC,CACF,OAAO,CvC45BqB,KAAK,CADL,KAAK,CuC15BjC,SAAS,CvCy5BmB,GAAG,CuCx5B/B,KAAK,CvCkEE,IAAI,CuCjEX,gBAAgB,CvC6EU,OAAO,C2BtG/B,aAAa,C3B8TQ,KAAK,CuC3R7B,AAdD,AAQE,GARC,CAQD,GAAG,AAAC,CACF,OAAO,CAAE,CAAE,CACX,SAAS,CAAE,IAAK,CAChB,WAAW,CvC6NI,IAAI,CuC3NpB,AAIH,AAAA,GAAG,AAAC,CACF,OAAO,CAAE,KAAM,CACf,UAAU,CAAE,CAAE,CACd,aAAa,CAAE,IAAK,CACpB,SAAS,CvCs4BmB,GAAG,CuCr4B/B,KAAK,CvC2DqB,OAAO,CuCjDlC,AAfD,AAQE,GARC,CAQD,IAAI,AAAC,CACH,OAAO,CAAE,CAAE,CACX,SAAS,CAAE,OAAQ,CACnB,KAAK,CAAE,OAAQ,CACf,gBAAgB,CAAE,WAAY,CAC9B,aAAa,CAAE,CAAE,CAClB,AAIH,AAAA,eAAe,AAAC,CACd,UAAU,CvCm4BkB,KAAK,CuCl4BjC,UAAU,CAAE,MAAO,CACpB,AC1DC,AAAA,UAAU,AAAC,CTAX,QAAQ,CAAE,QAAS,CACnB,WAAW,CAAE,IAAK,CAClB,YAAY,CAAE,IAAK,CAKf,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSL1B,ApCgDC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCnDnB,AAAA,UAAU,AAAC,CTOP,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSL1B,CpCgDC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCnDnB,AAAA,UAAU,AAAC,CTOP,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSL1B,CpCgDC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCnDnB,AAAA,UAAU,AAAC,CTOP,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSL1B,CpCgDC,MAAM,EAAL,SAAS,EAAE,MAAM,EoCnDpB,AAAA,UAAU,AAAC,CTOP,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSL1B,CpCgDC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCnDnB,AAAA,UAAU,AAAC,CTkBP,KAAK,C/BqML,KAAK,C+BpML,SAAS,CAAE,IAAK,CShBnB,CpCgDC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCnDnB,AAAA,UAAU,AAAC,CTkBP,KAAK,C/BsML,KAAK,C+BrML,SAAS,CAAE,IAAK,CShBnB,CpCgDC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCnDnB,AAAA,UAAU,AAAC,CTkBP,KAAK,C/BuML,KAAK,C+BtML,SAAS,CAAE,IAAK,CShBnB,CpCgDC,MAAM,EAAL,SAAS,EAAE,MAAM,EoCnDpB,AAAA,UAAU,AAAC,CTkBP,KAAK,C/BwML,MAAM,C+BvMN,SAAS,CAAE,IAAK,CShBnB,CASD,AAAA,gBAAgB,AAAC,CTZjB,QAAQ,CAAE,QAAS,CACnB,WAAW,CAAE,IAAK,CAClB,YAAY,CAAE,IAAK,CAKf,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSM1B,ApCqCC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCvCnB,AAAA,gBAAgB,AAAC,CTLb,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSM1B,CpCqCC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCvCnB,AAAA,gBAAgB,AAAC,CTLb,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSM1B,CpCqCC,MAAM,EAAL,SAAS,EAAE,KAAK,EoCvCnB,AAAA,gBAAgB,AAAC,CTLb,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSM1B,CpCqCC,MAAM,EAAL,SAAS,EAAE,MAAM,EoCvCpB,AAAA,gBAAgB,AAAC,CTLb,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CSM1B,CAQD,AAAA,IAAI,AAAC,CTaL,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,IAAK,CAKZ,YAAY,CAAG,KAAO,CACtB,WAAW,CAAI,KAAO,CSlBzB,ApC2BC,MAAM,EAAL,SAAS,EAAE,KAAK,EoC7BnB,AAAA,IAAI,AAAC,CTmBD,YAAY,CAAG,KAAO,CACtB,WAAW,CAAI,KAAO,CSlBzB,CpC2BC,MAAM,EAAL,SAAS,EAAE,KAAK,EoC7BnB,AAAA,IAAI,AAAC,CTmBD,YAAY,CAAG,KAAO,CACtB,WAAW,CAAI,KAAO,CSlBzB,CpC2BC,MAAM,EAAL,SAAS,EAAE,KAAK,EoC7BnB,AAAA,IAAI,AAAC,CTmBD,YAAY,CAAG,KAAO,CACtB,WAAW,CAAI,KAAO,CSlBzB,CpC2BC,MAAM,EAAL,SAAS,EAAE,MAAM,EoC7BpB,AAAA,IAAI,AAAC,CTmBD,YAAY,CAAG,KAAO,CACtB,WAAW,CAAI,KAAO,CSlBzB,CAID,AAAA,WAAW,AAAC,CACV,YAAY,CAAE,CAAE,CAChB,WAAW,CAAE,CAAE,CAOhB,AATD,AAII,WAJO,CAIP,IAAI,CAJR,AAKkB,WALP,EAKP,AAAA,KAAC,EAAO,MAAM,AAAb,CAAe,CAChB,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,AVrBC,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAIT,AAjBF,IAiBM,CAJF,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,AAjBI,CACX,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,GAAI,CCuBd,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CDrB1B,A1B2CC,MAAM,EAAL,SAAS,EAAE,KAAK,E0BpCf,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAIT,AAjBF,IAiBM,CAJF,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,AAjBI,CC0BT,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CDrB1B,C1B2CC,MAAM,EAAL,SAAS,EAAE,KAAK,E0BpCf,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAIT,AAjBF,IAiBM,CAJF,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,AAjBI,CC0BT,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CDrB1B,C1B2CC,MAAM,EAAL,SAAS,EAAE,KAAK,E0BpCf,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAIT,AAjBF,IAiBM,CAJF,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,AAjBI,CC0BT,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CDrB1B,C1B2CC,MAAM,EAAL,SAAS,EAAE,MAAM,E0BpChB,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,MAaU,CAAN,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAAP,AAbJ,OAaW,CAIT,AAjBF,IAiBM,CAJF,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,CAJL,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,SAaa,CAAT,AAbJ,UAac,CAAV,AAbJ,UAac,CAAV,AAbJ,UAac,CAIZ,AAjBF,OAiBS,AAjBI,CC0BT,aAAa,CAAG,IAAO,CACvB,YAAY,CAAI,IAAO,CDrB1B,CAiBG,AAAA,IAAI,AAAJ,CACE,UAAU,CAAE,CAAE,CACd,SAAS,CAAE,CAAE,CACb,SAAS,CAAE,IAAK,CACjB,AACD,AAAA,SAAS,AAAT,CACE,IAAI,CAAE,QAAS,CACf,KAAK,CAAE,IAAK,CACb,AAGC,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAAU,CAKpB,SAAS,CAAE,aAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,MAAM,AAAN,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,OAAO,AAAP,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,OAAO,AAAP,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,OAAO,AAAP,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAU,CAKpB,SAAS,CAAE,IAAU,CDhCd,AAKC,AAAA,OAAO,AAAP,CCuCR,KAAK,CAA8C,IAAI,CDrC9C,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,aAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,QAAQ,AAAR,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,QAAQ,AAAR,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,QAAQ,AAAR,CCuCR,KAAK,CAAgB,IAAU,CDrCtB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAA8C,IAAI,CDjC7C,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,aAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,OAAO,AAAP,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,QAAQ,AAAR,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,QAAQ,AAAR,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,QAAQ,AAAR,CCmCR,IAAI,CAAgB,IAAU,CDjCrB,AAOD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,aAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,SAAS,AAAT,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,UAAU,AAAV,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,UAAU,AAAV,CCsBR,WAAW,CAAE,cAAU,CDpBd,A1BHP,MAAM,EAAL,SAAS,EAAE,KAAK,E0B1Bf,AAAA,OAAO,AAAP,CACE,UAAU,CAAE,CAAE,CACd,SAAS,CAAE,CAAE,CACb,SAAS,CAAE,IAAK,CACjB,AACD,AAAA,YAAY,AAAZ,CACE,IAAI,CAAE,QAAS,CACf,KAAK,CAAE,IAAK,CACb,AAGC,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAAU,CAKpB,SAAS,CAAE,aAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAU,CAKpB,SAAS,CAAE,IAAU,CDhCd,AAKC,AAAA,UAAU,AAAV,CCuCR,KAAK,CAA8C,IAAI,CDrC9C,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,aAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,IAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAA8C,IAAI,CDjC7C,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,aAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,IAAU,CDjCrB,AAOD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,EAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,aAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,C1BHP,MAAM,EAAL,SAAS,EAAE,KAAK,E0B1Bf,AAAA,OAAO,AAAP,CACE,UAAU,CAAE,CAAE,CACd,SAAS,CAAE,CAAE,CACb,SAAS,CAAE,IAAK,CACjB,AACD,AAAA,YAAY,AAAZ,CACE,IAAI,CAAE,QAAS,CACf,KAAK,CAAE,IAAK,CACb,AAGC,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAAU,CAKpB,SAAS,CAAE,aAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAU,CAKpB,SAAS,CAAE,IAAU,CDhCd,AAKC,AAAA,UAAU,AAAV,CCuCR,KAAK,CAA8C,IAAI,CDrC9C,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,aAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,IAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAA8C,IAAI,CDjC7C,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,aAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,IAAU,CDjCrB,AAOD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,EAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,aAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,C1BHP,MAAM,EAAL,SAAS,EAAE,KAAK,E0B1Bf,AAAA,OAAO,AAAP,CACE,UAAU,CAAE,CAAE,CACd,SAAS,CAAE,CAAE,CACb,SAAS,CAAE,IAAK,CACjB,AACD,AAAA,YAAY,AAAZ,CACE,IAAI,CAAE,QAAS,CACf,KAAK,CAAE,IAAK,CACb,AAGC,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAAU,CAKpB,SAAS,CAAE,aAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAU,CAKpB,SAAS,CAAE,IAAU,CDhCd,AAKC,AAAA,UAAU,AAAV,CCuCR,KAAK,CAA8C,IAAI,CDrC9C,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,aAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,IAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAA8C,IAAI,CDjC7C,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,aAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,IAAU,CDjCrB,AAOD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,EAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,aAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,C1BHP,MAAM,EAAL,SAAS,EAAE,MAAM,E0B1BhB,AAAA,OAAO,AAAP,CACE,UAAU,CAAE,CAAE,CACd,SAAS,CAAE,CAAE,CACb,SAAS,CAAE,IAAK,CACjB,AACD,AAAA,YAAY,AAAZ,CACE,IAAI,CAAE,QAAS,CACf,KAAK,CAAE,IAAK,CACb,AAGC,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,aAAU,CAKpB,SAAS,CAAE,aAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,SAAS,AAAT,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,GAAU,CAKpB,SAAS,CAAE,GAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,cAAU,CAKpB,SAAS,CAAE,cAAU,CDhCd,AAFD,AAAA,UAAU,AAAV,CC6BN,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC,IAAU,CAKpB,SAAS,CAAE,IAAU,CDhCd,AAKC,AAAA,UAAU,AAAV,CCuCR,KAAK,CAA8C,IAAI,CDrC9C,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,aAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCuCR,KAAK,CAAgB,GAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,cAAU,CDrCtB,AAFD,AAAA,WAAW,AAAX,CCuCR,KAAK,CAAgB,IAAU,CDrCtB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAA8C,IAAI,CDjC7C,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,aAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,UAAU,AAAV,CCmCR,IAAI,CAAgB,GAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,cAAU,CDjCrB,AAFD,AAAA,WAAW,AAAX,CCmCR,IAAI,CAAgB,IAAU,CDjCrB,AAOD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,EAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,aAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,YAAY,AAAZ,CCsBR,WAAW,CAAE,GAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,AAFD,AAAA,aAAa,AAAb,CCsBR,WAAW,CAAE,cAAU,CDpBd,CWvDX,AAAA,MAAM,AAAC,CACL,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CAChB,aAAa,CzCqIJ,IAAI,CyChHd,AAxBD,AAKE,MALI,CAKJ,EAAE,CALJ,AAME,MANI,CAMJ,EAAE,AAAC,CACD,OAAO,CzCuUqB,MAAM,CyCtUlC,cAAc,CAAE,GAAI,CACpB,UAAU,CzC4JC,GAAG,CyC5JkB,KAAK,CzCgGb,OAAO,CyC/FhC,AAVH,AAYQ,MAZF,CAYJ,KAAK,CAAC,EAAE,AAAC,CACP,cAAc,CAAE,MAAO,CACvB,aAAa,CAAG,GAAC,CAAwB,KAAK,CzC2FtB,OAAO,CyC1FhC,AAfH,AAiBU,MAjBJ,CAiBJ,KAAK,CAAG,KAAK,AAAC,CACZ,UAAU,CAAG,GAAC,CAAwB,KAAK,CzCuFnB,OAAO,CyCtFhC,AAnBH,AAqBE,MArBI,CAqBJ,MAAM,AAAC,CACL,gBAAgB,CzCoEX,IAAI,CyCnEV,AAQH,AACE,SADO,CACP,EAAE,CADJ,AAEE,SAFO,CAEP,EAAE,AAAC,CACD,OAAO,CzC6SqB,KAAK,CyC5SlC,AAQH,AAAA,eAAe,AAAC,CACd,MAAM,CzCyHO,GAAG,CyCzHY,KAAK,CzC6DP,OAAO,CyChDlC,AAdD,AAGE,eAHa,CAGb,EAAE,CAHJ,AAIE,eAJa,CAIb,EAAE,AAAC,CACD,MAAM,CzCqHK,GAAG,CyCrHc,KAAK,CzCyDT,OAAO,CyCxDhC,AANH,AASI,eATW,CAQb,KAAK,CACH,EAAE,CATN,AAUI,eAVW,CAQb,KAAK,CAEH,EAAE,AAAC,CACD,mBAAmB,CAAG,GAAC,CACxB,AASL,AAC0B,cADZ,CACZ,KAAK,CAAC,EAAE,AAAA,YAAa,CAAA,AAAA,GAAG,CAAE,CACxB,gBAAgB,CzCyBX,gBAAI,CyCxBV,AAQH,AACQ,YADI,CACV,KAAK,CAAC,EAAE,ApCtEL,MAAM,AAAC,CoCwEN,gBAAgB,CzCab,iBAAI,CKrFY,AoBLvB,AAAA,aAAa,CAAb,AAEI,aAFS,CAET,EAAE,CAFN,AAGI,aAHS,CAGT,EAAE,AAAC,CACH,gBAAgB,CzBsFb,iBAAI,CyBrFR,AAKH,AAGE,YAHU,CAGV,aAAa,ApBRZ,MAAM,AAAC,CoBUJ,gBAAgB,CAJD,iBAAM,CpBNJ,AoBKvB,AAOQ,YAPI,CAGV,aAAa,ApBRZ,MAAM,CoBYD,EAAE,CAPV,AAQQ,YARI,CAGV,aAAa,ApBRZ,MAAM,CoBaD,EAAE,AAAC,CACH,gBAAgB,CARH,iBAAM,CASpB,AApBP,AAAA,cAAc,CAAd,AAEI,cAFU,CAEV,EAAE,CAFN,AAGI,cAHU,CAGV,EAAE,AAAC,CACH,gBAAgB,CzByqBW,OAAO,CyBxqBnC,AAKH,AAGE,YAHU,CAGV,cAAc,ApBRb,MAAM,AAAC,CoBUJ,gBAAgB,CAJD,OAAM,CpBNJ,AoBKvB,AAOQ,YAPI,CAGV,cAAc,ApBRb,MAAM,CoBYD,EAAE,CAPV,AAQQ,YARI,CAGV,cAAc,ApBRb,MAAM,CoBaD,EAAE,AAAC,CACH,gBAAgB,CARH,OAAM,CASpB,AApBP,AAAA,WAAW,CAAX,AAEI,WAFO,CAEP,EAAE,CAFN,AAGI,WAHO,CAGP,EAAE,AAAC,CACH,gBAAgB,CzB6qBW,OAAO,CyB5qBnC,AAKH,AAGE,YAHU,CAGV,WAAW,ApBRV,MAAM,AAAC,CoBUJ,gBAAgB,CAJD,OAAM,CpBNJ,AoBKvB,AAOQ,YAPI,CAGV,WAAW,ApBRV,MAAM,CoBYD,EAAE,CAPV,AAQQ,YARI,CAGV,WAAW,ApBRV,MAAM,CoBaD,EAAE,AAAC,CACH,gBAAgB,CARH,OAAM,CASpB,AApBP,AAAA,cAAc,CAAd,AAEI,cAFU,CAEV,EAAE,CAFN,AAGI,cAHU,CAGV,EAAE,AAAC,CACH,gBAAgB,CzBirBW,OAAO,CyBhrBnC,AAKH,AAGE,YAHU,CAGV,cAAc,ApBRb,MAAM,AAAC,CoBUJ,gBAAgB,CAJD,OAAM,CpBNJ,AoBKvB,AAOQ,YAPI,CAGV,cAAc,ApBRb,MAAM,CoBYD,EAAE,CAPV,AAQQ,YARI,CAGV,cAAc,ApBRb,MAAM,CoBaD,EAAE,AAAC,CACH,gBAAgB,CARH,OAAM,CASpB,AApBP,AAAA,aAAa,CAAb,AAEI,aAFS,CAET,EAAE,CAFN,AAGI,aAHS,CAGT,EAAE,AAAC,CACH,gBAAgB,CzBsrBW,OAAO,CyBrrBnC,AAKH,AAGE,YAHU,CAGV,aAAa,ApBRZ,MAAM,AAAC,CoBUJ,gBAAgB,CAJD,OAAM,CpBNJ,AoBKvB,AAOQ,YAPI,CAGV,aAAa,ApBRZ,MAAM,CoBYD,EAAE,CAPV,AAQQ,YARI,CAGV,aAAa,ApBRZ,MAAM,CoBaD,EAAE,AAAC,CACH,gBAAgB,CARH,OAAM,CASpB,AgBgFT,AACE,cADY,CACZ,EAAE,AAAC,CACD,KAAK,CzCbA,IAAI,CyCcT,gBAAgB,CzCFQ,OAAO,CyCGhC,AAGH,AACE,cADY,CACZ,EAAE,AAAC,CACD,KAAK,CzCPmB,OAAO,CyCQ/B,gBAAgB,CzCNQ,OAAO,CyCOhC,AAGH,AAAA,cAAc,AAAC,CACb,KAAK,CzC1BE,IAAI,CyC2BX,gBAAgB,CzCfU,OAAO,CyC0BlC,AAbD,AAIE,cAJY,CAIZ,EAAE,CAJJ,AAKE,cALY,CAKZ,EAAE,CALJ,AAMQ,cANM,CAMZ,KAAK,CAAC,EAAE,AAAC,CACP,YAAY,CzChCP,IAAI,CyCiCV,AARH,AAAA,cAAc,AAUX,eAAe,AAAC,CACf,MAAM,CAAE,CAAE,CACX,AAWH,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,IAAK,CACjB,kBAAkB,CAAE,wBAAyB,CAM9C,AAVD,AAAA,iBAAiB,AAOd,eAAe,AAAC,CACf,MAAM,CAAE,CAAE,CACX,ACjJH,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CAGZ,OAAO,C1CoZwB,KAAK,CADL,MAAM,C0ClZrC,SAAS,C1C+OM,IAAI,C0C9OnB,WAAW,C1CmZoB,IAAI,C0ClZnC,KAAK,C1C6FqB,OAAO,C0C5FjC,gBAAgB,C1C+ET,IAAI,C0C7EX,gBAAgB,CAAE,IAAK,CACvB,eAAe,CAAE,WAAY,CAC7B,MAAM,C1CsJO,GAAG,C0CtJgB,KAAK,C1C4E9B,gBAAI,C0CvET,aAAa,C1CwSQ,MAAM,CGjTzB,UAAU,CHgbiB,YAAY,CAAC,WAAW,CAAC,KAAI,CAAE,UAAU,CAAC,WAAW,CAAC,KAAI,C0C/X1F,AA1DD,AAAA,aAAa,AA4BV,YAAY,AAAC,CACZ,gBAAgB,CAAE,WAAY,CAC9B,MAAM,CAAE,CAAE,CACX,AA/BH,AAAA,aAAa,AlBuCV,MAAM,AAAC,CACN,KAAK,CxB6DmB,OAAO,CwB5D/B,gBAAgB,CxB+CX,IAAI,CwB9CT,YAAY,CxB+XiB,OAAO,CwB9XpC,OAAO,CAAE,IAAK,CAEf,AkB7CH,AAAA,aAAa,AAqCV,aAAa,AAAC,CACb,KAAK,C1CgEmB,OAAO,C0C9D/B,OAAO,CAAE,CAAE,CACZ,AAzCH,AAAA,aAAa,AAgDV,SAAS,CAhDZ,AAAA,aAAa,CAiDV,AAAA,QAAC,AAAA,CAAU,CACV,gBAAgB,C1CqDQ,OAAO,C0CnD/B,OAAO,CAAE,CAAE,CACZ,AArDH,AAAA,aAAa,AAuDV,SAAS,AAAC,CACT,MAAM,C1CkZuB,WAAW,C0CjZzC,AAGH,AAAM,MAAA,AAAA,aAAa,AAChB,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,EAAW,CAE5B,MAAM,CAAE,mBAAI,CACb,AAJH,AAAM,MAAA,AAAA,aAAa,AAMhB,MAAM,AAAA,WAAW,AAAC,CAMjB,KAAK,C1C6BmB,OAAO,C0C5B/B,gBAAgB,C1CeX,IAAI,C0CdV,AAIH,AAAA,kBAAkB,CAClB,AAAA,mBAAmB,AAAC,CAClB,OAAO,CAAE,KAAM,CAChB,AASD,AAAA,eAAe,AAAC,CACd,WAAW,CAAE,qBAAI,CACjB,cAAc,CAAE,qBAAI,CACpB,aAAa,CAAE,CAAE,CAClB,AAED,AAAA,kBAAkB,AAAC,CACjB,WAAW,CAAE,sBAAI,CACjB,cAAc,CAAE,sBAAI,CACpB,SAAS,C1CmJM,OAAO,C0ClJvB,AAED,AAAA,kBAAkB,AAAC,CACjB,WAAW,CAAE,sBAAI,CACjB,cAAc,CAAE,sBAAI,CACpB,SAAS,C1C8IM,OAAO,C0C7IvB,AASD,AAAA,gBAAgB,AAAC,CACf,WAAW,C1CqSoB,KAAK,C0CpSpC,cAAc,C1CoSiB,KAAK,C0CnSpC,aAAa,CAAE,CAAE,CACjB,SAAS,C1C8HM,IAAI,C0C7HpB,AAQD,AAAA,oBAAoB,AAAC,CACnB,WAAW,C1CwRoB,KAAK,C0CvRpC,cAAc,C1CuRiB,KAAK,C0CtRpC,aAAa,CAAE,CAAE,CACjB,WAAW,C1CsRoB,IAAI,C0CrRnC,MAAM,CAAE,iBAAkB,CAC1B,YAAY,C1C6BC,GAAG,C0C7BsB,CAAC,CAOxC,AAbD,AAAA,oBAAoB,AAQjB,gBAAgB,CKrFnB,AL6EA,eK7Ee,CL6Ef,oBAAoB,AK7EF,aAAa,CAC/B,AL4EA,eK5Ee,CL4Ef,oBAAoB,AK5EF,kBAAkB,CACpC,AL2EA,eK3Ee,CAAG,gBAAgB,CL2ElC,oBAAoB,AK3EiB,IAAI,CL2EzC,AAAA,oBAAoB,AASjB,gBAAgB,CK3FnB,ALkFA,eKlFe,CLkFf,oBAAoB,AKlFF,aAAa,CAC/B,ALiFA,eKjFe,CLiFf,oBAAoB,AKjFF,kBAAkB,CACpC,ALgFA,eKhFe,CAAG,gBAAgB,CLgFlC,oBAAoB,AKhFiB,IAAI,ALyFrB,CAChB,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,AAYH,AAAA,gBAAgB,CKrGhB,ALqGA,eKrGe,CAAG,aAAa,CAC/B,ALoGA,eKpGe,CAAG,kBAAkB,CACpC,ALmGA,eKnGe,CAAG,gBAAgB,CAAG,IAAI,ALmGxB,CACf,OAAO,C1CuRwB,MAAM,CADN,KAAK,C0CrRpC,SAAS,C1C6FM,OAAO,C2BzPpB,aAAa,C3B8TQ,KAAK,C0ChK7B,AAED,AAAM,MAAA,AAAA,gBAAgB,AACnB,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,GK5GrB,AL2GA,eK3Ge,CL2Gf,MAAM,AK3GY,aAAa,AL4G5B,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,GK3GrB,AL0GA,eK1Ge,CL0Gf,MAAM,AK1GY,kBAAkB,AL2GjC,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,GK1GrB,ALyGA,eKzGe,CAAG,gBAAgB,CLyGlC,MAAM,AKzG+B,IAAI,AL0GtC,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,EAAW,CAC5B,MAAM,C1CuRyB,SAAa,C0CtR7C,AAGH,AAAA,gBAAgB,CKtHhB,ALsHA,eKtHe,CAAG,aAAa,CAC/B,ALqHA,eKrHe,CAAG,kBAAkB,CACpC,ALoHA,eKpHe,CAAG,gBAAgB,CAAG,IAAI,ALoHxB,CACf,OAAO,C1C8QwB,MAAM,CADN,MAAM,C0C5QrC,SAAS,C1CgFM,OAAO,C2BxPpB,aAAa,C3B6TQ,KAAK,C0CnJ7B,AAED,AAAM,MAAA,AAAA,gBAAgB,AACnB,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,GK7HrB,AL4HA,eK5He,CL4Hf,MAAM,AK5HY,aAAa,AL6H5B,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,GK5HrB,AL2HA,eK3He,CL2Hf,MAAM,AK3HY,kBAAkB,AL4HjC,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,GK3HrB,AL0HA,eK1He,CAAG,gBAAgB,CL0HlC,MAAM,AK1H+B,IAAI,AL2HtC,IAAK,EAAA,AAAA,AAAK,IAAJ,AAAA,EAAM,IAAK,EAAA,AAAA,AAAS,QAAR,AAAA,EAAW,CAC5B,MAAM,C1C0QyB,eAAa,C0CzQ7C,AASH,AAAA,WAAW,AAAC,CACV,aAAa,C1CjDJ,IAAI,C0CkDd,AAED,AAAA,UAAU,AAAC,CACT,OAAO,CAAE,KAAM,CACf,UAAU,C1C+Pe,MAAM,C0C9PhC,AAOD,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,KAAM,CACf,aAAa,C1CuPa,KAAK,C0C/OhC,AAXD,AAMI,WANO,AAKR,SAAS,CACR,iBAAiB,AAAC,CAChB,KAAK,C1CrGiB,OAAO,C0CsG7B,MAAM,C1C8PqB,WAAW,C0C7PvC,AAIL,AAAA,iBAAiB,AAAC,CAChB,YAAY,C1C6Oc,OAAO,C0C5OjC,aAAa,CAAE,CAAE,CACjB,MAAM,CAAE,OAAQ,CACjB,AAED,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAS,CACnB,UAAU,C1CuOgB,MAAM,C0CtOhC,WAAW,C1CqOe,QAAO,C0ChOlC,AARD,AAAA,iBAAiB,AAKd,WAAW,AAAC,CACX,QAAQ,CAAE,MAAO,CAClB,AAIH,AAAA,kBAAkB,AAAC,CACjB,OAAO,CAAE,YAAa,CASvB,AAVD,AAGE,kBAHgB,CAGhB,iBAAiB,AAAC,CAChB,cAAc,CAAE,MAAO,CACxB,AALH,AAOI,kBAPc,CAOd,kBAAkB,AAAC,CACnB,WAAW,C1CyNc,MAAM,C0CxNhC,AAQH,AAAA,sBAAsB,AAAC,CACrB,UAAU,C1CuMe,MAAM,C0CtMhC,AAED,AAAA,qBAAqB,CACrB,AAAA,qBAAqB,CACrB,AAAA,oBAAoB,AAAC,CACnB,aAAa,CAAG,OAAgB,CAChC,iBAAiB,CAAE,SAAU,CAC7B,mBAAmB,CAAE,MAAM,CAAC,KAAK,CAAE,QAAa,CAChD,eAAe,CAAG,QAAa,CAAO,QAAa,CACpD,AAGD,AlBhQE,YkBgQU,ClBhQV,sBAAsB,CkBgQxB,AlB/PE,YkB+PU,ClB/PV,mBAAmB,CkB+PrB,AlB9PE,YkB8PU,ClB9PV,eAAe,CkB8PjB,AlB7PE,YkB6PU,ClB7PV,iBAAiB,CkB6PnB,AlB5PE,YkB4PU,ClB5PV,eAAe,AAAC,CACd,KAAK,CxBuFA,OAAO,CwBtFb,AkB0PH,AlBvPE,YkBuPU,ClBvPV,aAAa,AAAC,CACZ,YAAY,CxBkFP,OAAO,CwB7Eb,AkBiPH,AlB9OE,YkB8OU,ClB9OV,kBAAkB,AAAC,CACjB,KAAK,CxByEA,OAAO,CwBxEZ,YAAY,CxBwEP,OAAO,CwBvEZ,gBAAgB,CAAE,OAAO,CAC1B,AkB0OH,AAGE,YAHU,CAGV,qBAAqB,AAAC,CACpB,gBAAgB,C1CtMR,uPAAS,C0CuMlB,AAGH,AlBxQE,YkBwQU,ClBxQV,sBAAsB,CkBwQxB,AlBvQE,YkBuQU,ClBvQV,mBAAmB,CkBuQrB,AlBtQE,YkBsQU,ClBtQV,eAAe,CkBsQjB,AlBrQE,YkBqQU,ClBrQV,iBAAiB,CkBqQnB,AlBpQE,YkBoQU,ClBpQV,eAAe,AAAC,CACd,KAAK,CxBqFA,OAAO,CwBpFb,AkBkQH,AlB/PE,YkB+PU,ClB/PV,aAAa,AAAC,CACZ,YAAY,CxBgFP,OAAO,CwB3Eb,AkByPH,AlBtPE,YkBsPU,ClBtPV,kBAAkB,AAAC,CACjB,KAAK,CxBuEA,OAAO,CwBtEZ,YAAY,CxBsEP,OAAO,CwBrEZ,gBAAgB,CAAE,IAAO,CAC1B,AkBkPH,AAGE,YAHU,CAGV,qBAAqB,AAAC,CACpB,gBAAgB,C1C9MR,gUAAS,C0C+MlB,AAGH,AlBhRE,WkBgRS,ClBhRT,sBAAsB,CkBgRxB,AlB/QE,WkB+QS,ClB/QT,mBAAmB,CkB+QrB,AlB9QE,WkB8QS,ClB9QT,eAAe,CkB8QjB,AlB7QE,WkB6QS,ClB7QT,iBAAiB,CkB6QnB,AlB5QE,WkB4QS,ClB5QT,eAAe,AAAC,CACd,KAAK,CxBoFA,OAAO,CwBnFb,AkB0QH,AlBvQE,WkBuQS,ClBvQT,aAAa,AAAC,CACZ,YAAY,CxB+EP,OAAO,CwB1Eb,AkBiQH,AlB9PE,WkB8PS,ClB9PT,kBAAkB,AAAC,CACjB,KAAK,CxBsEA,OAAO,CwBrEZ,YAAY,CxBqEP,OAAO,CwBpEZ,gBAAgB,CAAE,OAAO,CAC1B,AkB0PH,AAGE,WAHS,CAGT,oBAAoB,AAAC,CACnB,gBAAgB,C1CtNR,iSAAS,C0CuNlB,AAaH,AAAA,YAAY,AAAC,CACX,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,QAAS,CACpB,WAAW,CAAE,MAAO,CAuFrB,AA1FD,AAQE,YARU,CAQV,WAAW,AAAC,CACV,KAAK,CAAE,IAAK,CACb,AtC3PC,MAAM,EAAL,SAAS,EAAE,KAAK,EsCiPrB,AAcI,YAdQ,CAcR,KAAK,AAAC,CACJ,OAAO,CAAE,IAAK,CACd,WAAW,CAAE,MAAO,CACpB,eAAe,CAAE,MAAO,CACxB,aAAa,CAAE,CAAE,CAClB,AAnBL,AAsBI,YAtBQ,CAsBR,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CACd,IAAI,CAAE,QAAS,CACf,SAAS,CAAE,QAAS,CACpB,WAAW,CAAE,MAAO,CACpB,aAAa,CAAE,CAAE,CAClB,AA5BL,AA+BI,YA/BQ,CA+BR,aAAa,AAAC,CACZ,OAAO,CAAE,YAAa,CACtB,KAAK,CAAE,IAAK,CACZ,cAAc,CAAE,MAAO,CACxB,AAnCL,AAsCI,YAtCQ,CAsCR,oBAAoB,AAAC,CACnB,OAAO,CAAE,YAAa,CACvB,AAxCL,AA0CI,YA1CQ,CA0CR,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CACb,AA5CL,AA8CI,YA9CQ,CA8CR,mBAAmB,AAAC,CAClB,aAAa,CAAE,CAAE,CACjB,cAAc,CAAE,MAAO,CACxB,AAjDL,AAqDI,YArDQ,CAqDR,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CACd,WAAW,CAAE,MAAO,CACpB,eAAe,CAAE,MAAO,CACxB,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,CAAE,CACd,aAAa,CAAE,CAAE,CAClB,AA5DL,AA6DI,YA7DQ,CA6DR,iBAAiB,AAAC,CAChB,YAAY,CAAE,CAAE,CACjB,AA/DL,AAgEI,YAhEQ,CAgER,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAS,CACnB,UAAU,CAAE,CAAE,CACd,YAAY,C1C2FU,MAAM,C0C1F5B,WAAW,CAAE,CAAE,CAChB,AArEL,AAwEI,YAxEQ,CAwER,eAAe,AAAC,CACd,OAAO,CAAE,IAAK,CACd,WAAW,CAAE,MAAO,CACpB,eAAe,CAAE,MAAO,CACxB,YAAY,CAAE,CAAE,CACjB,AA7EL,AA8EI,YA9EQ,CA8ER,yBAAyB,AAAC,CACxB,QAAQ,CAAE,MAAO,CACjB,OAAO,CAAE,YAAa,CACtB,YAAY,C1C6EU,MAAM,C0C5E5B,cAAc,CAAE,WAAY,CAC7B,AAnFL,AAsFkB,YAtFN,CAsFR,aAAa,CAAC,sBAAsB,AAAC,CACnC,GAAG,CAAE,CAAE,CACR,CC3XL,AAAA,IAAI,AAAC,CACH,OAAO,CAAE,YAAa,CACtB,WAAW,C3CwPQ,MAAM,C2CvPzB,WAAW,C3CkWoB,IAAI,C2CjWnC,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,MAAO,CACpB,cAAc,CAAE,MAAO,CACvB,WAAW,CAAE,IAAK,CAClB,MAAM,C3C2JO,GAAG,C2C3JgB,KAAK,CAAC,WAAW,CzBoEjD,OAAO,ClBwRwB,KAAK,CADL,IAAI,CkBtRnC,SAAS,ClBwKM,IAAI,C2BvPjB,aAAa,C3B4TQ,MAAM,CGjTzB,UAAU,CH0YiB,GAAG,CAAC,IAAG,CAAC,WAAW,C2ChXnD,AAnCD,AAAA,IAAI,AtCcC,MAAM,CsCdX,AAAA,IAAI,AtCeC,MAAM,AAAC,CsCDR,eAAe,CAAE,IAAK,CtCGrB,AsCjBL,AAAA,IAAI,AAgBD,MAAM,CAhBT,AAAA,IAAI,AAiBD,MAAM,AAAC,CACN,OAAO,CAAE,CAAE,CACX,UAAU,C3CqVmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CA1QjC,oBAAO,C2C1Eb,AApBH,AAAA,IAAI,AAuBD,SAAS,CAvBZ,AAAA,IAAI,AAwBD,SAAS,AAAC,CACT,MAAM,C3CibuB,WAAW,C2ChbxC,OAAO,CAAE,GAAI,CAEd,AA5BH,AAAA,IAAI,AA8BD,OAAO,CA9BV,AAAA,IAAI,AA+BD,OAAO,AAAC,CACP,gBAAgB,CAAE,IAAK,CAExB,AAIH,AAAK,CAAJ,AAAA,IAAI,AAAA,SAAS,CACd,AAAoB,QAAZ,CAAA,AAAA,QAAC,AAAA,EAAU,CAAC,AAAA,IAAI,AAAC,CACvB,cAAc,CAAE,IAAK,CACtB,AAOD,AAAA,YAAY,AAAC,CzB7CX,KAAK,ClBqFE,IAAI,CkBpFX,gBAAgB,ClB0FT,OAAO,CkBzFd,YAAY,ClByFL,OAAO,C2C5Cf,AAFD,AAAA,YAAY,AtC5CP,MAAM,AAAC,CaMR,KAAK,ClB8EA,IAAI,CkB7ET,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,OAAM,CbGC,AsC4CzB,AAAA,YAAY,AzBlCT,MAAM,CyBkCT,AAAA,YAAY,AzBjCT,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClB0ElB,mBAAO,CkBxEb,AyB0BH,AAAA,YAAY,AzBvBT,SAAS,CyBuBZ,AAAA,YAAY,AzBtBT,SAAS,AAAC,CACT,gBAAgB,ClBmEX,OAAO,CkBlEZ,YAAY,ClBkEP,OAAO,CkBjEb,AyBmBH,AAAA,YAAY,AzBjBT,OAAO,CyBiBV,AAAA,YAAY,AzBhBT,OAAO,CACR,AyBeF,KzBfO,CyBeP,YAAY,AzBfD,gBAAgB,AAAC,CACxB,KAAK,ClBsDA,IAAI,CkBrDT,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,OAAM,CAsCrB,AyBYH,AAAA,cAAc,AAAC,CzBhDb,KAAK,ClBiGqB,OAAO,CkBhGjC,gBAAgB,ClBoFT,IAAI,CkBnFX,YAAY,ClB4WmB,IAAI,C2C5TpC,AAFD,AAAA,cAAc,AtC/CT,MAAM,AAAC,CaMR,KAAK,ClB0FmB,OAAO,CkBzF/B,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,OAAM,CbGC,AsC+CzB,AAAA,cAAc,AzBrCX,MAAM,CyBqCT,AAAA,cAAc,AzBpCX,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClB6VM,qBAAI,CkB3VlC,AyB6BH,AAAA,cAAc,AzB1BX,SAAS,CyB0BZ,AAAA,cAAc,AzBzBX,SAAS,AAAC,CACT,gBAAgB,ClB6DX,IAAI,CkB5DT,YAAY,ClBqViB,IAAI,CkBpVlC,AyBsBH,AAAA,cAAc,AzBpBX,OAAO,CyBoBV,AAAA,cAAc,AzBnBX,OAAO,CACR,AyBkBF,KzBlBO,CyBkBP,cAAc,AzBlBH,gBAAgB,AAAC,CACxB,KAAK,ClBkEmB,OAAO,CkBjE/B,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,OAAM,CAsCrB,AyBeH,AAAA,SAAS,AAAC,CzBnDR,KAAK,ClBqFE,IAAI,CkBpFX,gBAAgB,ClB2FT,OAAO,CkB1Fd,YAAY,ClB0FL,OAAO,C2CvCf,AAFD,AAAA,SAAS,AtClDJ,MAAM,AAAC,CaMR,KAAK,ClB8EA,IAAI,CkB7ET,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,OAAM,CbGC,AsCkDzB,AAAA,SAAS,AzBxCN,MAAM,CyBwCT,AAAA,SAAS,AzBvCN,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClB2ElB,oBAAO,CkBzEb,AyBgCH,AAAA,SAAS,AzB7BN,SAAS,CyB6BZ,AAAA,SAAS,AzB5BN,SAAS,AAAC,CACT,gBAAgB,ClBoEX,OAAO,CkBnEZ,YAAY,ClBmEP,OAAO,CkBlEb,AyByBH,AAAA,SAAS,AzBvBN,OAAO,CyBuBV,AAAA,SAAS,AzBtBN,OAAO,CACR,AyBqBF,KzBrBO,CyBqBP,SAAS,AzBrBE,gBAAgB,AAAC,CACxB,KAAK,ClBsDA,IAAI,CkBrDT,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,OAAM,CAsCrB,AyBkBH,AAAA,YAAY,AAAC,CzBtDX,KAAK,ClBqFE,IAAI,CkBpFX,gBAAgB,ClByFT,OAAO,CkBxFd,YAAY,ClBwFL,OAAO,C2ClCf,AAFD,AAAA,YAAY,AtCrDP,MAAM,AAAC,CaMR,KAAK,ClB8EA,IAAI,CkB7ET,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,OAAM,CbGC,AsCqDzB,AAAA,YAAY,AzB3CT,MAAM,CyB2CT,AAAA,YAAY,AzB1CT,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClByElB,mBAAO,CkBvEb,AyBmCH,AAAA,YAAY,AzBhCT,SAAS,CyBgCZ,AAAA,YAAY,AzB/BT,SAAS,AAAC,CACT,gBAAgB,ClBkEX,OAAO,CkBjEZ,YAAY,ClBiEP,OAAO,CkBhEb,AyB4BH,AAAA,YAAY,AzB1BT,OAAO,CyB0BV,AAAA,YAAY,AzBzBT,OAAO,CACR,AyBwBF,KzBxBO,CyBwBP,YAAY,AzBxBD,gBAAgB,AAAC,CACxB,KAAK,ClBsDA,IAAI,CkBrDT,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,OAAM,CAsCrB,AyBqBH,AAAA,YAAY,AAAC,CzBzDX,KAAK,ClBqFE,IAAI,CkBpFX,gBAAgB,ClBuFT,OAAO,CkBtFd,YAAY,ClBsFL,OAAO,C2C7Bf,AAFD,AAAA,YAAY,AtCxDP,MAAM,AAAC,CaMR,KAAK,ClB8EA,IAAI,CkB7ET,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,OAAM,CbGC,AsCwDzB,AAAA,YAAY,AzB9CT,MAAM,CyB8CT,AAAA,YAAY,AzB7CT,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClBuElB,oBAAO,CkBrEb,AyBsCH,AAAA,YAAY,AzBnCT,SAAS,CyBmCZ,AAAA,YAAY,AzBlCT,SAAS,AAAC,CACT,gBAAgB,ClBgEX,OAAO,CkB/DZ,YAAY,ClB+DP,OAAO,CkB9Db,AyB+BH,AAAA,YAAY,AzB7BT,OAAO,CyB6BV,AAAA,YAAY,AzB5BT,OAAO,CACR,AyB2BF,KzB3BO,CyB2BP,YAAY,AzB3BD,gBAAgB,AAAC,CACxB,KAAK,ClBsDA,IAAI,CkBrDT,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,OAAM,CAsCrB,AyBwBH,AAAA,WAAW,AAAC,CzB5DV,KAAK,ClBqFE,IAAI,CkBpFX,gBAAgB,ClBsFT,OAAO,CkBrFd,YAAY,ClBqFL,OAAO,C2CzBf,AAFD,AAAA,WAAW,AtC3DN,MAAM,AAAC,CaMR,KAAK,ClB8EA,IAAI,CkB7ET,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,OAAM,CbGC,AsC2DzB,AAAA,WAAW,AzBjDR,MAAM,CyBiDT,AAAA,WAAW,AzBhDR,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClBsElB,mBAAO,CkBpEb,AyByCH,AAAA,WAAW,AzBtCR,SAAS,CyBsCZ,AAAA,WAAW,AzBrCR,SAAS,AAAC,CACT,gBAAgB,ClB+DX,OAAO,CkB9DZ,YAAY,ClB8DP,OAAO,CkB7Db,AyBkCH,AAAA,WAAW,AzBhCR,OAAO,CyBgCV,AAAA,WAAW,AzB/BR,OAAO,CACR,AyB8BF,KzB9BO,CyB8BP,WAAW,AzB9BA,gBAAgB,AAAC,CACxB,KAAK,ClBsDA,IAAI,CkBrDT,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,OAAM,CAsCrB,AyB6BH,AAAA,oBAAoB,AAAC,CzBzBnB,KAAK,ClBmDE,OAAO,CkBlDd,gBAAgB,CAAE,IAAK,CACvB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,ClBgDL,OAAO,C2CxBf,AAFD,AAAA,oBAAoB,AtChEf,MAAM,AAAC,Ca6CR,KAAK,CAP2C,IAAI,CAQpD,gBAAgB,ClB4CX,OAAO,CkB3CZ,YAAY,ClB2CP,OAAO,CK1FS,AsCgEzB,AAAA,oBAAoB,AzBdjB,MAAM,CyBcT,AAAA,oBAAoB,AzBbjB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClBsChB,mBAAO,CkBrCb,AyBWH,AAAA,oBAAoB,AzBTjB,SAAS,CyBSZ,AAAA,oBAAoB,AzBRjB,SAAS,AAAC,CACT,KAAK,ClBiCA,OAAO,CkBhCZ,gBAAgB,CAAE,WAAY,CAC/B,AyBKH,AAAA,oBAAoB,AzBHjB,OAAO,CyBGV,AAAA,oBAAoB,AzBFjB,OAAO,CACR,AyBCF,KzBDO,CyBCP,oBAAoB,AzBDT,gBAAgB,AAAC,CACxB,KAAK,CA1B2C,IAAI,CA2BpD,gBAAgB,ClByBX,OAAO,CkBxBZ,YAAY,ClBwBP,OAAO,CkBvBb,AyBAH,AAAA,sBAAsB,AAAC,CzB5BrB,KAAK,ClBsU0B,IAAI,CkBrUnC,gBAAgB,CAAE,IAAK,CACvB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,ClBmUmB,IAAI,C2CxSpC,AAFD,AAAA,sBAAsB,AtCnEjB,MAAM,AAAC,Ca6CR,KAAK,CAP2C,IAAI,CAQpD,gBAAgB,ClB+Ta,IAAI,CkB9TjC,YAAY,ClB8TiB,IAAI,CK7WZ,AsCmEzB,AAAA,sBAAsB,AzBjBnB,MAAM,CyBiBT,AAAA,sBAAsB,AzBhBnB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClByTQ,qBAAI,CkBxTlC,AyBcH,AAAA,sBAAsB,AzBZnB,SAAS,CyBYZ,AAAA,sBAAsB,AzBXnB,SAAS,AAAC,CACT,KAAK,ClBoTwB,IAAI,CkBnTjC,gBAAgB,CAAE,WAAY,CAC/B,AyBQH,AAAA,sBAAsB,AzBNnB,OAAO,CyBMV,AAAA,sBAAsB,AzBLnB,OAAO,CACR,AyBIF,KzBJO,CyBIP,sBAAsB,AzBJX,gBAAgB,AAAC,CACxB,KAAK,CA1B2C,IAAI,CA2BpD,gBAAgB,ClB4Sa,IAAI,CkB3SjC,YAAY,ClB2SiB,IAAI,CkB1SlC,AyBGH,AAAA,iBAAiB,AAAC,CzB/BhB,KAAK,ClBoDE,OAAO,CkBnDd,gBAAgB,CAAE,IAAK,CACvB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,ClBiDL,OAAO,C2CnBf,AAFD,AAAA,iBAAiB,AtCtEZ,MAAM,AAAC,Ca6CR,KAAK,CAP2C,IAAI,CAQpD,gBAAgB,ClB6CX,OAAO,CkB5CZ,YAAY,ClB4CP,OAAO,CK3FS,AsCsEzB,AAAA,iBAAiB,AzBpBd,MAAM,CyBoBT,AAAA,iBAAiB,AzBnBd,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClBuChB,oBAAO,CkBtCb,AyBiBH,AAAA,iBAAiB,AzBfd,SAAS,CyBeZ,AAAA,iBAAiB,AzBdd,SAAS,AAAC,CACT,KAAK,ClBkCA,OAAO,CkBjCZ,gBAAgB,CAAE,WAAY,CAC/B,AyBWH,AAAA,iBAAiB,AzBTd,OAAO,CyBSV,AAAA,iBAAiB,AzBRd,OAAO,CACR,AyBOF,KzBPO,CyBOP,iBAAiB,AzBPN,gBAAgB,AAAC,CACxB,KAAK,CA1B2C,IAAI,CA2BpD,gBAAgB,ClB0BX,OAAO,CkBzBZ,YAAY,ClByBP,OAAO,CkBxBb,AyBMH,AAAA,oBAAoB,AAAC,CzBlCnB,KAAK,ClBkDE,OAAO,CkBjDd,gBAAgB,CAAE,IAAK,CACvB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,ClB+CL,OAAO,C2Cdf,AAFD,AAAA,oBAAoB,AtCzEf,MAAM,AAAC,Ca6CR,KAAK,CAP2C,IAAI,CAQpD,gBAAgB,ClB2CX,OAAO,CkB1CZ,YAAY,ClB0CP,OAAO,CKzFS,AsCyEzB,AAAA,oBAAoB,AzBvBjB,MAAM,CyBuBT,AAAA,oBAAoB,AzBtBjB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClBqChB,mBAAO,CkBpCb,AyBoBH,AAAA,oBAAoB,AzBlBjB,SAAS,CyBkBZ,AAAA,oBAAoB,AzBjBjB,SAAS,AAAC,CACT,KAAK,ClBgCA,OAAO,CkB/BZ,gBAAgB,CAAE,WAAY,CAC/B,AyBcH,AAAA,oBAAoB,AzBZjB,OAAO,CyBYV,AAAA,oBAAoB,AzBXjB,OAAO,CACR,AyBUF,KzBVO,CyBUP,oBAAoB,AzBVT,gBAAgB,AAAC,CACxB,KAAK,CA1B2C,IAAI,CA2BpD,gBAAgB,ClBwBX,OAAO,CkBvBZ,YAAY,ClBuBP,OAAO,CkBtBb,AyBSH,AAAA,oBAAoB,AAAC,CzBrCnB,KAAK,ClBgDE,OAAO,CkB/Cd,gBAAgB,CAAE,IAAK,CACvB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,ClB6CL,OAAO,C2CTf,AAFD,AAAA,oBAAoB,AtC5Ef,MAAM,AAAC,Ca6CR,KAAK,CAP2C,IAAI,CAQpD,gBAAgB,ClByCX,OAAO,CkBxCZ,YAAY,ClBwCP,OAAO,CKvFS,AsC4EzB,AAAA,oBAAoB,AzB1BjB,MAAM,CyB0BT,AAAA,oBAAoB,AzBzBjB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClBmChB,oBAAO,CkBlCb,AyBuBH,AAAA,oBAAoB,AzBrBjB,SAAS,CyBqBZ,AAAA,oBAAoB,AzBpBjB,SAAS,AAAC,CACT,KAAK,ClB8BA,OAAO,CkB7BZ,gBAAgB,CAAE,WAAY,CAC/B,AyBiBH,AAAA,oBAAoB,AzBfjB,OAAO,CyBeV,AAAA,oBAAoB,AzBdjB,OAAO,CACR,AyBaF,KzBbO,CyBaP,oBAAoB,AzBbT,gBAAgB,AAAC,CACxB,KAAK,CA1B2C,IAAI,CA2BpD,gBAAgB,ClBsBX,OAAO,CkBrBZ,YAAY,ClBqBP,OAAO,CkBpBb,AyBYH,AAAA,mBAAmB,AAAC,CzBxClB,KAAK,ClB+CE,OAAO,CkB9Cd,gBAAgB,CAAE,IAAK,CACvB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,ClB4CL,OAAO,C2CLf,AAFD,AAAA,mBAAmB,AtC/Ed,MAAM,AAAC,Ca6CR,KAAK,CAP2C,IAAI,CAQpD,gBAAgB,ClBwCX,OAAO,CkBvCZ,YAAY,ClBuCP,OAAO,CKtFS,AsC+EzB,AAAA,mBAAmB,AzB7BhB,MAAM,CyB6BT,AAAA,mBAAmB,AzB5BhB,MAAM,AAAC,CACN,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,ClBkChB,mBAAO,CkBjCb,AyB0BH,AAAA,mBAAmB,AzBxBhB,SAAS,CyBwBZ,AAAA,mBAAmB,AzBvBhB,SAAS,AAAC,CACT,KAAK,ClB6BA,OAAO,CkB5BZ,gBAAgB,CAAE,WAAY,CAC/B,AyBoBH,AAAA,mBAAmB,AzBlBhB,OAAO,CyBkBV,AAAA,mBAAmB,AzBjBhB,OAAO,CACR,AyBgBF,KzBhBO,CyBgBP,mBAAmB,AzBhBR,gBAAgB,AAAC,CACxB,KAAK,CA1B2C,IAAI,CA2BpD,gBAAgB,ClBqBX,OAAO,CkBpBZ,YAAY,ClBoBP,OAAO,CkBnBb,AyBsBH,AAAA,SAAS,AAAC,CACR,WAAW,C3C4JQ,MAAM,C2C3JzB,KAAK,C3CDE,OAAO,C2CEd,aAAa,CAAE,CAAE,CA6BlB,AAhCD,AAAA,SAAS,CAAT,AAAA,SAAS,AAMN,OAAO,CANV,AAAA,SAAS,AAON,OAAO,CAPV,AAAA,SAAS,AAQN,SAAS,AAAC,CACT,gBAAgB,CAAE,WAAY,CAE/B,AAXH,AAAA,SAAS,CAAT,AAAA,SAAS,AAaN,MAAM,CAbT,AAAA,SAAS,AAcN,OAAO,AAAC,CACP,YAAY,CAAE,WAAY,CAC3B,AAhBH,AAAA,SAAS,AtCzFJ,MAAM,AAAC,CsC2GR,YAAY,CAAE,WAAY,CtC3GL,AsCyFzB,AAAA,SAAS,AtC/EJ,MAAM,CsC+EX,AAAA,SAAS,AtC9EJ,MAAM,AAAC,CsCmGR,KAAK,C3C2Ee,OAAM,C2C1E1B,eAAe,C3C2EK,SAAS,C2C1E7B,gBAAgB,CAAE,WAAY,CtCnG7B,AsC4EL,AAAA,SAAS,AAyBN,SAAS,AAAC,CACT,KAAK,C3CjBmB,OAAO,C2CsBhC,AA/BH,AAAA,SAAS,AAyBN,SAAS,AtCxGP,MAAM,CsC+EX,AAAA,SAAS,AAyBN,SAAS,AtCvGP,MAAM,AAAC,CsC2GN,eAAe,CAAE,IAAK,CtCzGvB,AsCmHL,AAAA,OAAO,CG/CP,AH+CA,aG/Ca,CAAG,IAAI,AH+CZ,CzBxDN,OAAO,ClB6TwB,MAAM,CADN,MAAM,CkB3TrC,SAAS,ClByKM,OAAO,C2BxPpB,aAAa,C3B6TQ,KAAK,C2CpL7B,AACD,AAAA,OAAO,CGpDP,AHoDA,aGpDa,CAAG,IAAI,AHoDZ,CzB5DN,OAAO,ClB0TwB,MAAM,CADN,KAAK,CkBxTpC,SAAS,ClB0KM,OAAO,C2BzPpB,aAAa,C3B8TQ,KAAK,C2CjL7B,AAOD,AAAA,UAAU,AAAC,CACT,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACb,AAGD,AAAa,UAAH,CAAG,UAAU,AAAC,CACtB,UAAU,C3CkPqB,KAAK,C2CjPrC,AAGD,AAAmB,KAAd,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAGH,UAAU,CAFb,AAAkB,KAAb,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAEH,UAAU,CADb,AAAmB,KAAd,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CACH,UAAU,AAAC,CACV,KAAK,CAAE,IAAK,CACb,ACxKH,AAAA,KAAK,AAAC,CACJ,OAAO,CAAE,CAAE,CzCcP,UAAU,CH2TS,OAAO,CAAC,KAAI,CAAC,MAAM,C4CnU3C,AAPD,AAAA,KAAK,AAIF,KAAK,AAAC,CACL,OAAO,CAAE,CAAE,CACZ,AAGH,AAAA,SAAS,AAAC,CACR,OAAO,CAAE,IAAK,CAIf,AALD,AAAA,SAAS,AAEN,KAAK,AAAC,CACL,OAAO,CAAE,KAAM,CAChB,AAGH,AAAA,EAAE,AACC,SAAS,AAAA,KAAK,AAAC,CACd,OAAO,CAAE,SAAU,CACpB,AAGH,AAAA,KAAK,AACF,SAAS,AAAA,KAAK,AAAC,CACd,OAAO,CAAE,eAAgB,CAC1B,AAGH,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAS,CACnB,MAAM,CAAE,CAAE,CACV,QAAQ,CAAE,MAAO,CzChBb,UAAU,CH4TS,MAAM,CAAC,KAAI,CAAC,IAAI,C4C1SxC,AChCD,AAAA,OAAO,CACP,AAAA,SAAS,AAAC,CACR,QAAQ,CAAE,QAAS,CACpB,AAED,AAAA,gBAAgB,AAEb,OAAO,AAAC,CACP,OAAO,CAAE,YAAa,CACtB,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,WAAW,C7C2TU,IAAI,C6C1TzB,cAAc,CAAE,MAAO,CACvB,OAAO,CAAE,EAAG,CACZ,UAAU,C7CwTW,IAAI,C6CxTA,KAAK,CAC9B,YAAY,C7CuTS,IAAI,C6CvTE,KAAK,CAAC,WAAW,CAC5C,WAAW,C7CsTU,IAAI,C6CtTC,KAAK,CAAC,WAAW,CAC5C,AAZH,AAAA,gBAAgB,AAeb,MAAM,AAAC,CACN,OAAO,CAAE,CAAE,CACZ,AAGH,AACE,OADK,CACL,gBAAgB,AACb,OAAO,AAAC,CACP,UAAU,CAAE,CAAE,CACd,aAAa,C7CySM,IAAI,C6CzSK,KAAK,CAClC,AAKL,AAAA,cAAc,AAAC,CACb,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,IAAK,CACV,IAAI,CAAE,CAAE,CACR,OAAO,C7CwiBmB,IAAI,C6CviB9B,OAAO,CAAE,IAAK,CACd,KAAK,CAAE,IAAK,CACZ,SAAS,C7CugBsB,KAAK,C6CtgBpC,OAAO,C7CugBwB,KAAK,C6CvgBP,CAAC,CAC9B,MAAM,C7CugByB,OAAO,C6CvgBT,CAAC,CAAC,CAAC,CAChC,SAAS,C7C6MM,IAAI,C6C5MnB,KAAK,C7C2DqB,OAAO,C6C1DjC,UAAU,CAAE,IAAK,CACjB,UAAU,CAAE,IAAK,CACjB,gBAAgB,C7C4CT,IAAI,C6C3CX,eAAe,CAAE,WAAY,CAC7B,MAAM,C7CqHO,GAAG,C6CrHe,KAAK,C7C2C7B,gBAAI,C2B3FT,aAAa,C3B4TQ,MAAM,C6CzQ9B,AAGD,AAAA,iBAAiB,AAAC,CtBrDhB,MAAM,CAAE,GAAI,CACZ,MAAM,CAAG,KAAS,CAAM,CAAC,CACzB,QAAQ,CAAE,MAAO,CACjB,gBAAgB,CvBqGU,OAAO,C6CjDlC,AAKD,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,GAAG,C7CggBmB,MAAM,C6C/frC,KAAK,CAAE,IAAK,CACZ,WAAW,C7C0LQ,MAAM,C6CzLzB,KAAK,C7CmCqB,OAAO,C6ClCjC,UAAU,CAAE,OAAQ,CACpB,WAAW,CAAE,MAAO,CACpB,UAAU,CAAE,IAAK,CACjB,MAAM,CAAE,CAAE,CAyBX,AAnCD,AAAA,cAAc,AxC7CT,MAAM,CwC6CX,AAAA,cAAc,AxC5CT,MAAM,AAAC,CwCyDR,KAAK,C7C8ewB,OAAM,C6C7enC,eAAe,CAAE,IAAK,CACtB,gBAAgB,C7C8BQ,OAAO,CKvF9B,AwC0CL,AAAA,cAAc,AAkBX,OAAO,CAlBV,AAAA,cAAc,AAmBX,OAAO,AAAC,CACP,KAAK,C7CSA,IAAI,C6CRT,eAAe,CAAE,IAAK,CACtB,gBAAgB,C7CaX,OAAO,C6CZb,AAvBH,AAAA,cAAc,AAyBX,SAAS,CAzBZ,AAAA,cAAc,AA0BX,SAAS,AAAC,CACT,KAAK,C7CgBmB,OAAO,C6Cf/B,MAAM,C7CmXuB,WAAW,C6ClXxC,gBAAgB,CAAE,WAAY,CAK/B,AAIH,AAEI,KAFC,CAED,cAAc,AAAC,CACf,OAAO,CAAE,KAAM,CAChB,AAJH,AAOI,KAPC,CAOD,CAAC,AAAC,CACF,OAAO,CAAE,CAAE,CACZ,AAOH,AAAA,oBAAoB,AAAC,CACnB,KAAK,CAAE,CAAE,CACT,IAAI,CAAE,IAAK,CACZ,AAED,AAAA,mBAAmB,AAAC,CAClB,KAAK,CAAE,IAAK,CACZ,IAAI,CAAE,CAAE,CACT,AAGD,AAAA,gBAAgB,AAAC,CACf,OAAO,CAAE,KAAM,CACf,OAAO,C7C+awB,KAAK,CAiBL,MAAM,C6C/brC,aAAa,CAAE,CAAE,CACjB,SAAS,C7CuHM,OAAO,C6CtHtB,KAAK,C7C3BqB,OAAO,C6C4BjC,WAAW,CAAE,MAAO,CACrB,AAGD,AAAA,kBAAkB,AAAC,CACjB,QAAQ,CAAE,KAAM,CAChB,GAAG,CAAE,CAAE,CACP,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,CAAE,CACR,OAAO,C7C4bmB,GAAG,C6C3b9B,AAMD,AAEE,OAFK,CAEL,cAAc,AAAC,CACb,GAAG,CAAE,IAAK,CACV,MAAM,CAAE,IAAK,CACb,aAAa,C7CsZgB,OAAO,C6CrZrC,AC5JH,AAAA,UAAU,CACV,AAAA,mBAAmB,AAAC,CAClB,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,WAAY,CACrB,cAAc,CAAE,MAAO,CAyBxB,AA7BD,AAMI,UANM,CAMN,IAAI,CALR,AAKI,mBALe,CAKf,IAAI,AAAC,CACL,QAAQ,CAAE,QAAS,CACnB,IAAI,CAAE,QAAS,CAYhB,AApBH,AAMI,UANM,CAMN,IAAI,AzCCH,MAAM,CyCNX,AAKI,mBALe,CAKf,IAAI,AzCCH,MAAM,AAAC,CyCMN,OAAO,CAAE,CAAE,CzCNQ,AyCPzB,AAMI,UANM,CAMN,IAAI,AASH,MAAM,CAfX,AAMI,UANM,CAMN,IAAI,AAUH,OAAO,CAhBZ,AAMI,UANM,CAMN,IAAI,AAWH,OAAO,CAhBZ,AAKI,mBALe,CAKf,IAAI,AASH,MAAM,CAdX,AAKI,mBALe,CAKf,IAAI,AAUH,OAAO,CAfZ,AAKI,mBALe,CAKf,IAAI,AAWH,OAAO,AAAC,CACP,OAAO,CAAE,CAAE,CACZ,AAnBL,AAuBS,UAvBC,CAuBR,IAAI,CAAG,IAAI,CAvBb,AAwBS,UAxBC,CAwBR,IAAI,CAAG,UAAU,CAxBnB,AAyBe,UAzBL,CAyBR,UAAU,CAAG,IAAI,CAzBnB,AA0Be,UA1BL,CA0BR,UAAU,CAAG,UAAU,CAzBzB,AAsBS,mBAtBU,CAsBjB,IAAI,CAAG,IAAI,CAtBb,AAuBS,mBAvBU,CAuBjB,IAAI,CAAG,UAAU,CAvBnB,AAwBe,mBAxBI,CAwBjB,UAAU,CAAG,IAAI,CAxBnB,AAyBe,mBAzBI,CAyBjB,UAAU,CAAG,UAAU,AAAC,CACtB,WAAW,C9C2IA,IAAG,C8C1If,AAIH,AAAA,YAAY,AAAC,CACX,OAAO,CAAE,IAAK,CACd,eAAe,CAAE,UAAW,CAK7B,AAPD,AAIE,YAJU,CAIV,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CACb,AAGH,AAAyE,UAA/D,CAAG,IAAI,AAAA,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,CAAC,IAAK,CAAA,AAAA,gBAAgB,CAAE,CACzE,aAAa,CAAE,CAAE,CAClB,AAGD,AAAiB,UAAP,CAAG,IAAI,AAAA,YAAY,AAAC,CAC5B,WAAW,CAAE,CAAE,CAKhB,AAND,AAAiB,UAAP,CAAG,IAAI,AAAA,YAAY,AAG1B,IAAK,CAAA,AAAA,WAAW,CAAC,IAAK,CAAA,AAAA,gBAAgB,CAAE,CnBnCvC,0BAA0B,CmBoCG,CAAC,CnBnC9B,uBAAuB,CmBmCM,CAAC,CAC/B,AAGH,AAA6C,UAAnC,CAAG,IAAI,AAAA,WAAW,AAAA,IAAK,CAAA,AAAA,YAAY,EAC7C,AAA8C,UAApC,CAAG,gBAAgB,AAAA,IAAK,CAAA,AAAA,YAAY,CAAE,CnB3B5C,yBAAyB,CmB4BC,CAAC,CnB3B3B,sBAAsB,CmB2BI,CAAC,CAC9B,AAGD,AAAa,UAAH,CAAG,UAAU,AAAC,CACtB,KAAK,CAAE,IAAK,CACb,AACD,AAA6D,UAAnD,CAAG,UAAU,AAAA,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,EAAI,IAAI,AAAC,CAChE,aAAa,CAAE,CAAE,CAClB,AACD,AACQ,UADE,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,AAAA,WAAW,EAC/C,IAAI,AAAA,WAAW,CADnB,AAEI,UAFM,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,AAAA,WAAW,EAE/C,gBAAgB,AAAC,CnBtDjB,0BAA0B,CmBuDG,CAAC,CnBtD9B,uBAAuB,CmBsDM,CAAC,CAC/B,AAEH,AAA2D,UAAjD,CAAG,UAAU,AAAA,WAAW,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,IAAI,AAAA,YAAY,AAAC,CnB5CpE,yBAAyB,CmB6CC,CAAC,CnB5C3B,sBAAsB,CmB4CI,CAAC,CAC9B,AAGD,AAA2B,UAAjB,CAAC,gBAAgB,AAAA,OAAO,CAClC,AAAgB,UAAN,AAAA,KAAK,CAAC,gBAAgB,AAAC,CAC/B,OAAO,CAAE,CAAE,CACZ,AAeD,AAAO,IAAH,CAAG,sBAAsB,AAAC,CAC5B,aAAa,CAAE,MAAc,CAC7B,YAAY,CAAE,MAAc,CAK7B,AAPD,AAAO,IAAH,CAAG,sBAAsB,AAI1B,OAAO,AAAC,CACP,WAAW,CAAE,CAAE,CAChB,AAGH,AAAU,OAAH,CAAG,sBAAsB,CAjBhC,AAiBU,aAjBG,CAAG,IAAI,CAiBV,sBAAsB,AAAC,CAC/B,aAAa,CAAE,OAAiB,CAChC,YAAY,CAAE,OAAiB,CAChC,AAED,AAAU,OAAH,CAAG,sBAAsB,CArBhC,AAqBU,aArBG,CAAG,IAAI,CAqBV,sBAAsB,AAAC,CAC/B,aAAa,CAAE,QAAiB,CAChC,YAAY,CAAE,QAAiB,CAChC,AAmBD,AAAA,mBAAmB,AAAC,CAClB,OAAO,CAAE,WAAY,CACrB,cAAc,CAAE,MAAO,CACvB,WAAW,CAAE,UAAW,CACxB,eAAe,CAAE,MAAO,CAczB,AAlBD,AAME,mBANiB,CAMjB,IAAI,CANN,AAOE,mBAPiB,CAOjB,UAAU,AAAC,CACT,KAAK,CAAE,IAAK,CACb,AATH,AAWW,mBAXQ,CAWf,IAAI,CAAG,IAAI,CAXf,AAYW,mBAZQ,CAYf,IAAI,CAAG,UAAU,CAZrB,AAaiB,mBAbE,CAaf,UAAU,CAAG,IAAI,CAbrB,AAciB,mBAdE,CAcf,UAAU,CAAG,UAAU,AAAC,CACxB,UAAU,C9CoBC,IAAG,C8CnBd,WAAW,CAAE,CAAE,CAChB,AAGH,AAAsB,mBAAH,CAAG,IAAI,AACvB,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,CAAE,CACnC,aAAa,CAAE,CAAE,CAClB,AAHH,AAAsB,mBAAH,CAAG,IAAI,AAIvB,YAAY,AAAA,IAAK,CAAA,AAAA,WAAW,CAAE,CnBtI7B,0BAA0B,CmBuII,CAAC,CnBtI/B,yBAAyB,CmBsIK,CAAC,CAChC,AANH,AAAsB,mBAAH,CAAG,IAAI,AAOvB,WAAW,AAAA,IAAK,CAAA,AAAA,YAAY,CAAE,CnBvJ7B,uBAAuB,CmBwJI,CAAC,CnBvJ5B,sBAAsB,CmBuJK,CAAC,CAC7B,AAEH,AAAsE,mBAAnD,CAAG,UAAU,AAAA,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,EAAI,IAAI,AAAC,CACzE,aAAa,CAAE,CAAE,CAClB,AACD,AACQ,mBADW,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,AAAA,WAAW,EACxD,IAAI,AAAA,WAAW,CADnB,AAEI,mBAFe,CAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,AAAA,WAAW,EAExD,gBAAgB,AAAC,CnBlJjB,0BAA0B,CmBmJI,CAAC,CnBlJ/B,yBAAyB,CmBkJK,CAAC,CAChC,AAEH,AAAoE,mBAAjD,CAAG,UAAU,AAAA,WAAW,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,IAAI,AAAA,YAAY,AAAC,CnBpK7E,uBAAuB,CmBqKE,CAAC,CnBpK1B,sBAAsB,CmBoKG,CAAC,CAC7B,CAeD,AAAA,AAGsB,WAHrB,CAAY,SAAS,AAArB,EACG,IAAI,CAEJ,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GAHV,AAAA,AAIyB,WAJxB,CAAY,SAAS,AAArB,EACG,IAAI,CAGJ,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,GAJV,AAAA,AAGsB,WAHrB,CAAY,SAAS,AAArB,EAEG,UAAU,CAAG,IAAI,CACjB,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GAHV,AAAA,AAIyB,WAJxB,CAAY,SAAS,AAArB,EAEG,UAAU,CAAG,IAAI,CAEjB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACrB,QAAQ,CAAE,QAAS,CACnB,IAAI,CAAE,gBAAI,CACV,cAAc,CAAE,IAAK,CACtB,ACnML,AAAA,YAAY,AAAC,CACX,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,IAAK,CACd,KAAK,CAAE,IAAK,CAkBb,AArBD,AAKE,YALU,CAKV,aAAa,AAAC,CAGZ,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,CAAE,CACX,IAAI,CAAE,QAAS,CAGf,KAAK,CAAE,EAAG,CACV,aAAa,CAAE,CAAE,CAMlB,AApBH,AAKE,YALU,CAKV,aAAa,A1C4CV,MAAM,C0CjDX,AAKE,YALU,CAKV,aAAa,A1C6CV,OAAO,C0ClDZ,AAKE,YALU,CAKV,aAAa,A1C8CV,MAAM,AAAC,C0CjCN,OAAO,CAAE,CAAE,C1CmCZ,A0C9BL,AAAA,kBAAkB,CAClB,AAAA,gBAAgB,CAChB,AAAa,YAAD,CAAC,aAAa,AAAC,CAEzB,OAAO,CAAE,IAAK,CACd,cAAc,CAAE,MAAO,CACvB,eAAe,CAAE,MAAO,CAKzB,AAXD,AAAA,kBAAkB,AAQf,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,EAPrC,AAAA,gBAAgB,AAOb,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,EANrC,AAAa,YAAD,CAAC,aAAa,AAMvB,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,CAAE,CpB/BnC,aAAa,CoBgCU,CAAC,CACzB,AAGH,AAAA,kBAAkB,CAClB,AAAA,gBAAgB,AAAC,CACf,WAAW,CAAE,MAAO,CACpB,cAAc,CAAE,MAAO,CACxB,AAwBD,AAAA,kBAAkB,AAAC,CACjB,OAAO,C/C0VwB,KAAK,CADL,MAAM,C+CxVrC,aAAa,CAAE,CAAE,CACjB,SAAS,C/CoLM,IAAI,C+CnLnB,WAAW,C/CwLQ,MAAM,C+CvLzB,WAAW,C/CuVoB,IAAI,C+CtVnC,KAAK,C/CiCqB,OAAO,C+ChCjC,UAAU,CAAE,MAAO,CACnB,gBAAgB,C/CiCU,OAAO,C+ChCjC,MAAM,C/C4FO,GAAG,C+C5FgB,KAAK,C/CkB9B,gBAAI,C2B3FT,aAAa,C3B4TQ,MAAM,C+C7N9B,AA/BD,AAAA,kBAAkB,AAaf,gBAAgB,CAvBnB,AAUA,eAVe,CAUf,kBAAkB,CATlB,AASA,eATe,CAAG,gBAAgB,CASlC,kBAAkB,AATmB,IAAI,AAsBrB,CAChB,OAAO,C/CoWsB,MAAM,CADN,KAAK,C+ClWlC,SAAS,C/C0KI,OAAO,C2BzPpB,aAAa,C3B8TQ,KAAK,C+C7O3B,AAjBH,AAAA,kBAAkB,AAkBf,gBAAgB,CAjCnB,AAeA,eAfe,CAef,kBAAkB,CAdlB,AAcA,eAde,CAAG,gBAAgB,CAclC,kBAAkB,AAdmB,IAAI,AAgCrB,CAChB,OAAO,C/CkWsB,MAAM,CADN,MAAM,C+ChWnC,SAAS,C/CoKI,OAAO,C2BxPpB,aAAa,C3B6TQ,KAAK,C+CvO3B,AAtBH,AA0BoB,kBA1BF,CA0BhB,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EA1BR,AA2BuB,kBA3BL,CA2BhB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACrB,UAAU,CAAE,CAAE,CACf,AASH,AAA0C,YAA9B,CAAC,aAAa,AAAA,IAAK,CAAA,AAAA,WAAW,EAC1C,AAAkC,kBAAhB,AAAA,IAAK,CAAA,AAAA,WAAW,EAClC,AAAoC,gBAApB,AAAA,IAAK,CAAA,AAAA,WAAW,EAAI,IAAI,CACxC,AAAiD,gBAAjC,AAAA,IAAK,CAAA,AAAA,WAAW,EAAI,UAAU,CAAG,IAAI,CACrD,AAAoC,gBAApB,AAAA,IAAK,CAAA,AAAA,WAAW,EAAI,gBAAgB,CACpD,AAA+E,gBAA/D,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,IAAI,AAAA,IAAK,CAAA,AAAA,WAAW,CAAC,IAAK,CAAA,AAAA,gBAAgB,EAC/E,AAAmE,gBAAnD,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,UAAU,AAAA,IAAK,CAAA,AAAA,WAAW,EAAI,IAAI,AAAC,CpB/FpE,0BAA0B,CoBgGC,CAAC,CpB/F5B,uBAAuB,CoB+FI,CAAC,CAC/B,AACD,AAAkC,kBAAhB,AAAA,IAAK,CAAA,AAAA,WAAW,CAAE,CAClC,YAAY,CAAE,CAAE,CACjB,AACD,AAA2C,YAA/B,CAAC,aAAa,AAAA,IAAK,CAAA,AAAA,YAAY,EAC3C,AAAmC,kBAAjB,AAAA,IAAK,CAAA,AAAA,YAAY,EACnC,AAAqC,gBAArB,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,IAAI,CACzC,AAAkD,gBAAlC,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,UAAU,CAAG,IAAI,CACtD,AAAqC,gBAArB,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,gBAAgB,CACrD,AAAyD,gBAAzC,AAAA,IAAK,CAAA,AAAA,WAAW,EAAI,IAAI,AAAA,IAAK,CAAA,AAAA,YAAY,EACzD,AAAmE,gBAAnD,AAAA,IAAK,CAAA,AAAA,WAAW,EAAI,UAAU,AAAA,IAAK,CAAA,AAAA,YAAY,EAAI,IAAI,AAAC,CpB7FpE,yBAAyB,CoB8FC,CAAC,CpB7F3B,sBAAsB,CoB6FI,CAAC,CAC9B,AACD,AAAmD,aAAtC,CAAG,kBAAkB,AAAA,IAAK,CAAA,AAAA,YAAY,CAAE,CACnD,WAAW,CAAE,CAAE,CAChB,AAMD,AAAA,gBAAgB,AAAC,CACf,QAAQ,CAAE,QAAS,CAGnB,SAAS,CAAE,CAAE,CACb,WAAW,CAAE,MAAO,CAqCrB,AA1CD,AASI,gBATY,CASZ,IAAI,AAAC,CACL,QAAQ,CAAE,QAAS,CAEnB,IAAI,CAAE,CAAE,CAUT,AAtBH,AAcM,gBAdU,CASZ,IAAI,CAKF,IAAI,AAAC,CACL,WAAW,C/CmBF,IAAG,C+ClBb,AAhBL,AASI,gBATY,CASZ,IAAI,A1C3FH,MAAM,C0CkFX,AASI,gBATY,CASZ,IAAI,A1C1FH,OAAO,C0CiFZ,AASI,gBATY,CASZ,IAAI,A1CzFH,MAAM,AAAC,C0CoGN,OAAO,CAAE,CAAE,C1ClGZ,A0C8EL,AA0BM,gBA1BU,AAyBb,IAAK,CAAA,AAAA,WAAW,EACb,IAAI,CA1BV,AA2BM,gBA3BU,AAyBb,IAAK,CAAA,AAAA,WAAW,EAEb,UAAU,AAAC,CACX,YAAY,C/CMH,IAAG,C+CLb,AA7BL,AAgCM,gBAhCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EACd,IAAI,CAhCV,AAiCM,gBAjCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EAEd,UAAU,AAAC,CACX,OAAO,CAAE,CAAE,CACX,WAAW,C/CDF,IAAG,C+CMb,AAxCL,AAgCM,gBAhCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EACd,IAAI,A1ClHL,MAAM,C0CkFX,AAgCM,gBAhCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EACd,IAAI,A1CjHL,OAAO,C0CiFZ,AAgCM,gBAhCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EACd,IAAI,A1ChHL,MAAM,C0CgFX,AAiCM,gBAjCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EAEd,UAAU,A1CnHX,MAAM,C0CkFX,AAiCM,gBAjCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EAEd,UAAU,A1ClHX,OAAO,C0CiFZ,AAiCM,gBAjCU,AA+Bb,IAAK,CAAA,AAAA,YAAY,EAEd,UAAU,A1CjHX,MAAM,AAAC,C0CsHJ,OAAO,CAAE,CAAE,C1CpHd,A2C9CL,AAAA,eAAe,AAAC,CACd,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,WAAY,CACrB,UAAU,CAAG,MAAI,CACjB,YAAY,ChDmcY,MAAM,CgDlc9B,YAAY,ChDmcY,IAAI,CgDlc5B,MAAM,CAAE,OAAQ,CACjB,AAED,AAAA,qBAAqB,AAAC,CACpB,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,EAAG,CACZ,OAAO,CAAE,CAAE,CA8BZ,AAjCD,AAKc,qBALO,AAKlB,QAAQ,GAAG,yBAAyB,AAAC,CACpC,KAAK,ChDoEA,IAAI,CgDnET,gBAAgB,ChDyEX,OAAO,CgDvEb,AATH,AAWY,qBAXS,AAWlB,MAAM,GAAG,yBAAyB,AAAC,CAElC,UAAU,ChDmc8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAtY5C,IAAI,CAsYmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAhYhE,OAAO,CgDlEb,AAdH,AAgBa,qBAhBQ,AAgBlB,OAAO,GAAG,yBAAyB,AAAC,CACnC,KAAK,ChDyDA,IAAI,CgDxDT,gBAAgB,ChDicyB,OAAO,CgD/bjD,AApBH,AAuBM,qBAvBe,AAsBlB,SAAS,GACN,yBAAyB,AAAC,CAC1B,MAAM,ChDoaqB,WAAW,CgDnatC,gBAAgB,ChDgEM,OAAO,CgD/D9B,AA1BL,AA4BM,qBA5Be,AAsBlB,SAAS,GAMN,2BAA2B,AAAC,CAC5B,KAAK,ChD2DiB,OAAO,CgD1D7B,MAAM,ChD8ZqB,WAAW,CgD7ZvC,AAQL,AAAA,yBAAyB,AAAC,CACxB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAI,MAAiB,CACxB,IAAI,CAAE,CAAE,CACR,OAAO,CAAE,KAAM,CACf,KAAK,ChDsZ+B,IAAI,CgDrZxC,MAAM,ChDqZ8B,IAAI,CgDpZxC,cAAc,CAAE,IAAK,CACrB,WAAW,CAAE,IAAK,CAClB,gBAAgB,ChDoZoB,IAAI,CgDnZxC,iBAAiB,CAAE,SAAU,CAC7B,mBAAmB,CAAE,aAAc,CACnC,eAAe,ChDkZqB,GAAG,CAAC,GAAG,CgDhZ5C,AAMD,AACE,gBADc,CACd,yBAAyB,AAAC,CrB5ExB,aAAa,C3B4TQ,MAAM,CgD9O5B,AAHH,AAKkC,gBALlB,CAKd,qBAAqB,AAAA,QAAQ,GAAG,yBAAyB,AAAC,CACxD,gBAAgB,ChDhBR,wMAAS,CgDiBlB,AAPH,AASwC,gBATxB,CASd,qBAAqB,AAAA,cAAc,GAAG,yBAAyB,AAAC,CAC9D,gBAAgB,ChDWX,OAAO,CgDVZ,gBAAgB,ChDrBR,qJAAS,CgDuBlB,AAOH,AACE,aADW,CACX,yBAAyB,AAAC,CACxB,aAAa,ChD6YK,GAAG,CgD5YtB,AAHH,AAKkC,aALrB,CAKX,qBAAqB,AAAA,QAAQ,GAAG,yBAAyB,AAAC,CACxD,gBAAgB,ChDpCR,kJAAS,CgDqClB,AASH,AAAA,wBAAwB,AAAC,CACvB,OAAO,CAAE,IAAK,CACd,cAAc,CAAE,MAAO,CASxB,AAXD,AAIE,wBAJsB,CAItB,eAAe,AAAC,CACd,aAAa,ChD4VS,MAAM,CgDvV7B,AAVH,AAOM,wBAPkB,CAItB,eAAe,CAGX,eAAe,AAAC,CAChB,WAAW,CAAE,CAAE,CAChB,AAWL,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,YAAa,CACtB,SAAS,CAAE,IAAK,CAEhB,MAAM,CAAE,mBAAI,CACZ,OAAO,ChD0W0B,OAAO,CgD1WL,OAAwB,ChD0W1B,OAAO,CADP,MAAM,CgDxWvC,WAAW,ChDmRoB,IAAI,CgDlRnC,KAAK,ChDnCqB,OAAO,CgDoCjC,cAAc,CAAE,MAAO,CACvB,UAAU,ChDlDH,IAAI,CAzBD,mKAAS,CgD2EoC,SAAS,CAAC,KAAK,ChDqWrC,MAAM,CgDrWyD,MAAM,CACtG,eAAe,ChD4Wa,GAAG,CAAC,IAAI,CgD3WpC,MAAM,ChDuBO,GAAG,CgDvBoB,KAAK,ChDnDlC,gBAAI,C2B3FT,aAAa,C3B4TQ,MAAM,CgD3K7B,eAAe,CAAE,IAAK,CACtB,kBAAkB,CAAE,IAAK,CA4B1B,AA3CD,AAAA,cAAc,AAiBX,MAAM,AAAC,CACN,YAAY,ChD2WmB,OAAO,CgD1WtC,OAAO,CAAE,IAAK,CAYf,AA/BH,AAAA,cAAc,AAiBX,MAAM,AAKJ,WAAW,AAAC,CAMX,KAAK,ChDxDiB,OAAO,CgDyD7B,gBAAgB,ChDtEb,IAAI,CgDuER,AA9BL,AAAA,cAAc,AAiCX,SAAS,AAAC,CACT,KAAK,ChD7DmB,OAAO,CgD8D/B,MAAM,ChDsSuB,WAAW,CgDrSxC,gBAAgB,ChD9DQ,OAAO,CgD+DhC,AArCH,AAAA,cAAc,AAwCX,YAAY,AAAC,CACZ,OAAO,CAAE,CAAE,CACZ,AAGH,AAAA,iBAAiB,AAAC,CAChB,WAAW,ChDiUsB,OAAO,CgDhUxC,cAAc,ChDgUmB,OAAO,CgD/TxC,SAAS,ChDiVmB,GAAG,CgD3UhC,AAOD,AAAA,YAAY,AAAC,CACX,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,YAAa,CACtB,SAAS,CAAE,IAAK,CAChB,MAAM,ChDkUuB,MAAM,CgDjUnC,aAAa,CAAE,CAAE,CACjB,MAAM,CAAE,OAAQ,CACjB,AAED,AAAA,kBAAkB,AAAC,CACjB,SAAS,ChD6ToB,KAAK,CgD5TlC,SAAS,CAAE,IAAK,CAChB,MAAM,ChD0TuB,MAAM,CgDzTnC,MAAM,CAAE,CAAE,CACV,MAAM,CAAE,gBAAK,CACb,OAAO,CAAE,CAAE,CAKZ,AAED,AAAA,oBAAoB,AAAC,CACnB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,KAAK,CAAE,CAAE,CACT,IAAI,CAAE,CAAE,CACR,OAAO,CAAE,CAAE,CACX,MAAM,ChD0SuB,MAAM,CgDzSnC,OAAO,ChD6SmB,KAAK,CACL,IAAI,CgD7S9B,WAAW,ChD8Se,GAAG,CgD7S7B,KAAK,ChDxHqB,OAAO,CgDyHjC,cAAc,CAAE,IAAK,CACrB,WAAW,CAAE,IAAK,CAClB,gBAAgB,ChDxIT,IAAI,CgDyIX,MAAM,ChD9DO,GAAG,CgD8DkB,KAAK,ChDxIhC,gBAAI,C2B3FT,aAAa,C3B4TQ,MAAM,CgD1D9B,AA5CD,AAAA,oBAAoB,AAkBf,KAAM,CAAA,AAAA,EAAE,CAAC,OAAO,AAAjB,CACE,OAAO,ChD8SL,gBAAgB,CgD7SnB,AApBL,AAAA,oBAAoB,AAuBjB,QAAQ,AAAC,CACR,QAAQ,CAAE,QAAS,CACnB,GAAG,ChD1EQ,IAAG,CgD2Ed,KAAK,ChD3EM,IAAG,CgD4Ed,MAAM,ChD5EK,IAAG,CgD6Ed,OAAO,CAAE,CAAE,CACX,OAAO,CAAE,KAAM,CACf,MAAM,ChDkRqB,MAAM,CgDjRjC,OAAO,ChDqRiB,KAAK,CACL,IAAI,CgDrR5B,WAAW,ChDsRa,GAAG,CgDrR3B,KAAK,ChDhJmB,OAAO,CgDiJ/B,gBAAgB,ChD/IQ,OAAO,CgDgJ/B,MAAM,ChDpFK,GAAG,CgDoFoB,KAAK,ChD9JlC,gBAAI,C2B3FT,aAAa,CqB0PU,CAAC,ChDkEH,MAAM,CAAN,MAAM,CgDlEoD,CAAC,CACjF,AArCH,AAAA,oBAAoB,AAwCf,KAAM,CAAA,AAAA,EAAE,CAAC,QAAQ,AAAlB,CACE,OAAO,ChD2RL,QAAQ,CgD1RX,AC/PL,AAAA,IAAI,AAAC,CACH,OAAO,CAAE,IAAK,CACd,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CACjB,UAAU,CAAE,IAAK,CAClB,AAED,AAAA,SAAS,AAAC,CACR,OAAO,CAAE,KAAM,CACf,OAAO,CjD0mBuB,KAAI,CAAC,GAAG,CiD/lBvC,AAbD,AAAA,SAAS,A5CQJ,MAAM,C4CRX,AAAA,SAAS,A5CSJ,MAAM,AAAC,C4CJR,eAAe,CAAE,IAAK,C5CMrB,A4CXL,AAAA,SAAS,AASN,SAAS,AAAC,CACT,KAAK,CjDsFmB,OAAO,CiDrF/B,MAAM,CjDybuB,WAAW,CiDxbzC,AAQH,AAAA,SAAS,AAAC,CACR,aAAa,CjDwIA,GAAG,CiDxIsB,KAAK,CjD2lBC,IAAI,CiDzjBjD,AAnCD,AAGE,SAHO,CAGP,SAAS,AAAC,CACR,aAAa,CjDqIF,IAAG,CiDpIf,AALH,AAOE,SAPO,CAOP,SAAS,AAAC,CACR,MAAM,CjDiIK,GAAG,CiDjIiB,KAAK,CAAC,WAAW,CtB9BhD,uBAAuB,C3BsTF,MAAM,C2BrT3B,sBAAsB,C3BqTD,MAAM,CiD5Q5B,AApBH,AAOE,SAPO,CAOP,SAAS,A5CnBN,MAAM,C4CYX,AAOE,SAPO,CAOP,SAAS,A5ClBN,MAAM,AAAC,C4CuBN,YAAY,CjDiEU,OAAO,CAAP,OAAO,CA+gBW,IAAI,CKrmB7C,A4CSL,AAOE,SAPO,CAOP,SAAS,AAQN,SAAS,AAAC,CACT,KAAK,CjD4DiB,OAAO,CiD3D7B,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CAAE,WAAY,CAC3B,AAnBL,AAsBW,SAtBF,CAsBP,SAAS,AAAA,OAAO,CAtBlB,AAuBiB,SAvBR,CAuBP,SAAS,AAAA,KAAK,CAAC,SAAS,AAAC,CACvB,KAAK,CjDmDmB,OAAO,CiDlD/B,gBAAgB,CjDqCX,IAAI,CiDpCT,YAAY,CjDwkB8B,IAAI,CAAJ,IAAI,CApiBzC,IAAI,CiDnCV,AA3BH,AA6BE,SA7BO,CA6BP,cAAc,AAAC,CAEb,UAAU,CjD0GC,IAAG,C2B/Jd,uBAAuB,CsBuDI,CAAC,CtBtD5B,sBAAsB,CsBsDK,CAAC,CAC7B,AAQH,AACE,UADQ,CACR,SAAS,AAAC,CtBvER,aAAa,C3B4TQ,MAAM,CiDnP5B,AAHH,AAKW,UALD,CAKR,SAAS,AAAA,OAAO,CALlB,AAMiB,UANP,CAMR,SAAS,AAAA,KAAK,CAAC,SAAS,AAAC,CACvB,KAAK,CjDaA,IAAI,CiDZT,MAAM,CAAE,OAAQ,CAChB,gBAAgB,CjDiBX,OAAO,CiDhBb,AAQH,AACE,SADO,CACP,SAAS,AAAC,CACR,IAAI,CAAE,QAAS,CACf,UAAU,CAAE,MAAO,CACpB,AAGH,AACE,cADY,CACZ,SAAS,AAAC,CACR,IAAI,CAAE,QAAS,CACf,UAAU,CAAE,MAAO,CACpB,AAQH,AACI,YADQ,CACR,SAAS,AAAC,CACV,OAAO,CAAE,IAAK,CACf,AAHH,AAII,YAJQ,CAIR,OAAO,AAAC,CACR,OAAO,CAAE,KAAM,CAChB,ACpGH,AAAA,OAAO,AAAC,CACN,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,IAAK,CACd,cAAc,CAAE,MAAO,CACvB,OAAO,ClDwkB4B,KAAO,CAjdjC,IAAI,CkDtHd,AAOD,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,YAAa,CACtB,WAAW,CAAE,MAAO,CACpB,cAAc,CAAE,MAAO,CACvB,YAAY,ClD2GH,IAAI,CkD1Gb,SAAS,ClD0NM,OAAO,CkDzNtB,WAAW,CAAE,OAAQ,CACrB,WAAW,CAAE,MAAO,CAKrB,AAZD,AAAA,aAAa,A7CTR,MAAM,C6CSX,AAAA,aAAa,A7CRR,MAAM,AAAC,C6CkBR,eAAe,CAAE,IAAK,C7ChBrB,A6CyBL,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CACd,cAAc,CAAE,MAAO,CACvB,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CACjB,UAAU,CAAE,IAAK,CAMlB,AAXD,AAOE,WAPS,CAOT,SAAS,AAAC,CACR,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,AAQH,AAAA,YAAY,AAAC,CACX,OAAO,CAAE,YAAa,CACtB,WAAW,CAAK,OAAQ,CACxB,cAAc,CAAE,OAAQ,CACzB,AASD,AAAA,eAAe,AAAC,CACd,UAAU,CAAE,UAAW,CACvB,OAAO,ClDihB4B,MAAM,CADN,MAAM,CkD/gBzC,SAAS,ClD0KM,OAAO,CkDzKtB,WAAW,CAAE,CAAE,CACf,UAAU,CAAE,WAAY,CACxB,MAAM,ClDoFO,GAAG,CkDpFM,KAAK,CAAC,WAAW,CvBjFrC,aAAa,C3B4TQ,MAAM,CkDrO9B,AAZD,AAAA,eAAe,A7C3DV,MAAM,C6C2DX,AAAA,eAAe,A7C1DV,MAAM,AAAC,C6CoER,eAAe,CAAE,IAAK,C7ClErB,A6CwEL,AAAA,oBAAoB,AAAC,CACnB,OAAO,CAAE,YAAa,CACtB,KAAK,CAAE,KAAM,CACb,MAAM,CAAE,KAAM,CACd,cAAc,CAAE,MAAO,CACvB,OAAO,CAAE,EAAG,CACZ,UAAU,CAAE,uBAAwB,CACpC,eAAe,CAAE,SAAU,CAC5B,AAID,AAAA,oBAAoB,AAAC,CACnB,QAAQ,CAAE,QAAS,CACnB,IAAI,ClD+BK,IAAI,CkD9Bd,AACD,AAAA,qBAAqB,AAAC,CACpB,QAAQ,CAAE,QAAS,CACnB,KAAK,ClD2BI,IAAI,CkD1Bd,A9C7CG,MAAM,EAAL,SAAS,EAAE,KAAK,E8CiDrB,AAQU,kBARQ,CAOV,WAAW,CACT,cAAc,AAAC,CACb,QAAQ,CAAE,MAAO,CACjB,KAAK,CAAE,IAAK,CACb,AAXX,AAcU,kBAdQ,CAcR,UAAU,AAAC,CACX,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,C9C/EL,MAAM,EAAL,SAAS,EAAE,KAAK,E8C8DrB,AAAA,kBAAkB,AAKd,CAgBI,cAAc,CAAE,GAAI,CACpB,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CA6BvB,AApDL,AAyBQ,kBAzBU,CAyBV,WAAW,AAAC,CACV,cAAc,CAAE,GAAI,CAMrB,AAhCT,AA4BU,kBA5BQ,CAyBV,WAAW,CAGT,SAAS,AAAC,CACR,aAAa,CAAE,KAAM,CACrB,YAAY,CAAE,KAAM,CACrB,AA/BX,AAmCU,kBAnCQ,CAmCR,UAAU,AAAC,CACX,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CACrB,AAvCT,AA0CQ,kBA1CU,CA0CV,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAgB,CACzB,KAAK,CAAE,IAAK,CACb,AA7CT,AAgDQ,kBAhDU,CAgDV,eAAe,AAAC,CACd,OAAO,CAAE,IAAK,CACf,C9CnGL,MAAM,EAAL,SAAS,EAAE,KAAK,E8CiDrB,AAQU,qBARQ,CAOV,WAAW,CACT,cAAc,AAAC,CACb,QAAQ,CAAE,MAAO,CACjB,KAAK,CAAE,IAAK,CACb,AAXX,AAcU,qBAdQ,CAcR,UAAU,AAAC,CACX,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,C9C/EL,MAAM,EAAL,SAAS,EAAE,KAAK,E8C8DrB,AAAA,qBAAkB,AAKd,CAgBI,cAAc,CAAE,GAAI,CACpB,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CA6BvB,AApDL,AAyBQ,qBAzBU,CAyBV,WAAW,AAAC,CACV,cAAc,CAAE,GAAI,CAMrB,AAhCT,AA4BU,qBA5BQ,CAyBV,WAAW,CAGT,SAAS,AAAC,CACR,aAAa,CAAE,KAAM,CACrB,YAAY,CAAE,KAAM,CACrB,AA/BX,AAmCU,qBAnCQ,CAmCR,UAAU,AAAC,CACX,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CACrB,AAvCT,AA0CQ,qBA1CU,CA0CV,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAgB,CACzB,KAAK,CAAE,IAAK,CACb,AA7CT,AAgDQ,qBAhDU,CAgDV,eAAe,AAAC,CACd,OAAO,CAAE,IAAK,CACf,C9CnGL,MAAM,EAAL,SAAS,EAAE,KAAK,E8CiDrB,AAQU,qBARQ,CAOV,WAAW,CACT,cAAc,AAAC,CACb,QAAQ,CAAE,MAAO,CACjB,KAAK,CAAE,IAAK,CACb,AAXX,AAcU,qBAdQ,CAcR,UAAU,AAAC,CACX,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,C9C/EL,MAAM,EAAL,SAAS,EAAE,KAAK,E8C8DrB,AAAA,qBAAkB,AAKd,CAgBI,cAAc,CAAE,GAAI,CACpB,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CA6BvB,AApDL,AAyBQ,qBAzBU,CAyBV,WAAW,AAAC,CACV,cAAc,CAAE,GAAI,CAMrB,AAhCT,AA4BU,qBA5BQ,CAyBV,WAAW,CAGT,SAAS,AAAC,CACR,aAAa,CAAE,KAAM,CACrB,YAAY,CAAE,KAAM,CACrB,AA/BX,AAmCU,qBAnCQ,CAmCR,UAAU,AAAC,CACX,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CACrB,AAvCT,AA0CQ,qBA1CU,CA0CV,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAgB,CACzB,KAAK,CAAE,IAAK,CACb,AA7CT,AAgDQ,qBAhDU,CAgDV,eAAe,AAAC,CACd,OAAO,CAAE,IAAK,CACf,C9CnGL,MAAM,EAAL,SAAS,EAAE,MAAM,E8CiDtB,AAQU,qBARQ,CAOV,WAAW,CACT,cAAc,AAAC,CACb,QAAQ,CAAE,MAAO,CACjB,KAAK,CAAE,IAAK,CACb,AAXX,AAcU,qBAdQ,CAcR,UAAU,AAAC,CACX,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,C9C/EL,MAAM,EAAL,SAAS,EAAE,MAAM,E8C8DtB,AAAA,qBAAkB,AAKd,CAgBI,cAAc,CAAE,GAAI,CACpB,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CA6BvB,AApDL,AAyBQ,qBAzBU,CAyBV,WAAW,AAAC,CACV,cAAc,CAAE,GAAI,CAMrB,AAhCT,AA4BU,qBA5BQ,CAyBV,WAAW,CAGT,SAAS,AAAC,CACR,aAAa,CAAE,KAAM,CACrB,YAAY,CAAE,KAAM,CACrB,AA/BX,AAmCU,qBAnCQ,CAmCR,UAAU,AAAC,CACX,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CACrB,AAvCT,AA0CQ,qBA1CU,CA0CV,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAgB,CACzB,KAAK,CAAE,IAAK,CACb,AA7CT,AAgDQ,qBAhDU,CAgDV,eAAe,AAAC,CACd,OAAO,CAAE,IAAK,CACf,CAlDT,AAAA,qBAAkB,AAKd,CAgBI,cAAc,CAAE,GAAI,CACpB,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CA6BvB,AApDL,AAQU,qBARQ,CAOV,WAAW,CACT,cAAc,AAAC,CACb,QAAQ,CAAE,MAAO,CACjB,KAAK,CAAE,IAAK,CACb,AAXX,AAcU,qBAdQ,CAcR,UAAU,AAAC,CACX,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CACjB,AAjBT,AAyBQ,qBAzBU,CAyBV,WAAW,AAAC,CACV,cAAc,CAAE,GAAI,CAMrB,AAhCT,AA4BU,qBA5BQ,CAyBV,WAAW,CAGT,SAAS,AAAC,CACR,aAAa,CAAE,KAAM,CACrB,YAAY,CAAE,KAAM,CACrB,AA/BX,AAmCU,qBAnCQ,CAmCR,UAAU,AAAC,CACX,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,MAAO,CAClB,WAAW,CAAE,MAAO,CACrB,AAvCT,AA0CQ,qBA1CU,CA0CV,gBAAgB,AAAC,CACf,OAAO,CAAE,eAAgB,CACzB,KAAK,CAAE,IAAK,CACb,AA7CT,AAgDQ,qBAhDU,CAgDV,eAAe,AAAC,CACd,OAAO,CAAE,IAAK,CACf,AAYT,AACE,aADW,CACX,aAAa,CADf,AAEE,aAFW,CAEX,eAAe,AAAC,CACd,KAAK,ClDxFA,eAAI,CkD6FV,AARH,AACE,aADW,CACX,aAAa,A7CjKV,MAAM,C6CgKX,AACE,aADW,CACX,aAAa,A7ChKV,MAAM,C6C+JX,AAEE,aAFW,CAEX,eAAe,A7ClKZ,MAAM,C6CgKX,AAEE,aAFW,CAEX,eAAe,A7CjKZ,MAAM,AAAC,C6CqKN,KAAK,ClD3FF,eAAI,CKxER,A6C6JL,AAWI,aAXS,CAUX,WAAW,CACT,SAAS,AAAC,CACR,KAAK,ClDjGF,eAAI,CkD0GR,AArBL,AAWI,aAXS,CAUX,WAAW,CACT,SAAS,A7C3KR,MAAM,C6CgKX,AAWI,aAXS,CAUX,WAAW,CACT,SAAS,A7C1KR,MAAM,AAAC,C6C8KJ,KAAK,ClDpGJ,eAAI,CKxER,A6C6JL,AAWI,aAXS,CAUX,WAAW,CACT,SAAS,AAON,SAAS,AAAC,CACT,KAAK,ClDxGJ,eAAI,CkDyGN,AApBP,AAuBY,aAvBC,CAUX,WAAW,CAaT,KAAK,CAAG,SAAS,CAvBrB,AAwBc,aAxBD,CAUX,WAAW,CAcT,OAAO,CAAG,SAAS,CAxBvB,AAyBa,aAzBA,CAUX,WAAW,CAeT,SAAS,AAAA,KAAK,CAzBlB,AA0Ba,aA1BA,CAUX,WAAW,CAgBT,SAAS,AAAA,OAAO,AAAC,CACf,KAAK,ClDhHF,eAAI,CkDiHR,AA5BL,AA+BE,aA/BW,CA+BX,eAAe,AAAC,CACd,YAAY,ClDrHP,eAAI,CkDsHV,AAjCH,AAmCE,aAnCW,CAmCX,oBAAoB,AAAC,CACnB,gBAAgB,ClDyZkB,gPAAG,CkDxZtC,AArCH,AAuCE,aAvCW,CAuCX,YAAY,AAAC,CACX,KAAK,ClD7HA,eAAI,CkD8HV,AAIH,AACE,eADa,CACb,aAAa,CADf,AAEE,eAFa,CAEb,eAAe,AAAC,CACd,KAAK,ClDtIA,IAAI,CkD2IV,AARH,AACE,eADa,CACb,aAAa,A7C9MV,MAAM,C6C6MX,AACE,eADa,CACb,aAAa,A7C7MV,MAAM,C6C4MX,AAEE,eAFa,CAEb,eAAe,A7C/MZ,MAAM,C6C6MX,AAEE,eAFa,CAEb,eAAe,A7C9MZ,MAAM,AAAC,C6CkNN,KAAK,ClDzIF,IAAI,CKvER,A6C0ML,AAWI,eAXW,CAUb,WAAW,CACT,SAAS,AAAC,CACR,KAAK,ClD/IF,qBAAI,CkDwJR,AArBL,AAWI,eAXW,CAUb,WAAW,CACT,SAAS,A7CxNR,MAAM,C6C6MX,AAWI,eAXW,CAUb,WAAW,CACT,SAAS,A7CvNR,MAAM,AAAC,C6C2NJ,KAAK,ClDlJJ,sBAAI,CKvER,A6C0ML,AAWI,eAXW,CAUb,WAAW,CACT,SAAS,AAON,SAAS,AAAC,CACT,KAAK,ClDtJJ,sBAAI,CkDuJN,AApBP,AAuBY,eAvBG,CAUb,WAAW,CAaT,KAAK,CAAG,SAAS,CAvBrB,AAwBc,eAxBC,CAUb,WAAW,CAcT,OAAO,CAAG,SAAS,CAxBvB,AAyBa,eAzBE,CAUb,WAAW,CAeT,SAAS,AAAA,KAAK,CAzBlB,AA0Ba,eA1BE,CAUb,WAAW,CAgBT,SAAS,AAAA,OAAO,AAAC,CACf,KAAK,ClD9JF,IAAI,CkD+JR,AA5BL,AA+BE,eA/Ba,CA+Bb,eAAe,AAAC,CACd,YAAY,ClDnKP,qBAAI,CkDoKV,AAjCH,AAmCE,eAnCa,CAmCb,oBAAoB,AAAC,CACnB,gBAAgB,ClDqWoB,sPAAG,CkDpWxC,AArCH,AAuCE,eAvCa,CAuCb,YAAY,AAAC,CACX,KAAK,ClD3KA,qBAAI,CkD4KV,ACtQH,AAAA,KAAK,AAAC,CACJ,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,IAAK,CACd,cAAc,CAAE,MAAO,CACvB,gBAAgB,CnDsFT,IAAI,CmDrFX,MAAM,CnD8rBmB,GAAG,CmD9rBD,KAAK,CnDsFzB,iBAAI,C2B3FT,aAAa,C3B4TQ,MAAM,CmDrT9B,AAED,AAAA,WAAW,AAAC,CAGV,IAAI,CAAE,QAAS,CACf,OAAO,CnDorBkB,OAAO,CmDnrBjC,AAED,AAAA,WAAW,AAAC,CACV,aAAa,CnDirBY,MAAM,CmDhrBhC,AAED,AAAA,cAAc,AAAC,CACb,UAAU,CAAI,QAAc,CAC5B,aAAa,CAAE,CAAE,CAClB,AAED,AAAU,UAAA,AAAA,WAAW,AAAC,CACpB,aAAa,CAAE,CAAE,CAClB,AAED,AAAA,UAAU,A9CvBL,MAAM,AAAC,C8CyBR,eAAe,CAAE,IAAK,C9CzBD,A8CuBzB,AAKI,UALM,CAKN,UAAU,AAAC,CACX,WAAW,CnD8pBY,OAAO,CmD7pB/B,AAGH,AAEoB,KAFf,CACD,WAAW,AAAA,YAAY,CACvB,gBAAgB,AAAA,YAAY,AAAC,CxBnC7B,uBAAuB,C3BsTF,MAAM,C2BrT3B,sBAAsB,C3BqTD,MAAM,CmDjR1B,AAJL,AAQoB,KARf,CAOD,WAAW,AAAA,WAAW,CACtB,gBAAgB,AAAA,WAAW,AAAC,CxB3B5B,0BAA0B,C3BwSL,MAAM,C2BvS3B,yBAAyB,C3BuSJ,MAAM,CmD3Q1B,AASL,AAAA,YAAY,AAAC,CACX,OAAO,CnDuoBkB,MAAM,CADN,OAAO,CmDroBhC,aAAa,CAAE,CAAE,CACjB,gBAAgB,CnD6CU,OAAO,CmD5CjC,aAAa,CnDqoBY,GAAG,CmDroBM,KAAK,CnD6BhC,iBAAI,CmDxBZ,AATD,AAAA,YAAY,AAMT,YAAY,AAAC,CxBhEZ,aAAa,C3BssBU,kBAAI,CAAJ,kBAAI,CmDroBgD,CAAC,CAAC,CAAC,CAC/E,AAGH,AAAA,YAAY,AAAC,CACX,OAAO,CnD4nBkB,MAAM,CADN,OAAO,CmD1nBhC,gBAAgB,CnDmCU,OAAO,CmDlCjC,UAAU,CnD2nBe,GAAG,CmD3nBG,KAAK,CnDmB7B,iBAAI,CmDdZ,AARD,AAAA,YAAY,AAKT,WAAW,AAAC,CxB1EX,aAAa,CwB2EU,CAAC,CAAC,CAAC,CnD2nBH,kBAAI,CAAJ,kBAAI,CmD1nB5B,AAQH,AAAA,iBAAiB,AAAC,CAChB,YAAY,CAAI,QAAc,CAC9B,aAAa,CnD4mBY,OAAM,CmD3mB/B,WAAW,CAAI,QAAc,CAC7B,aAAa,CAAE,CAAE,CAClB,AAED,AAAA,kBAAkB,AAAC,CACjB,YAAY,CAAI,QAAc,CAC9B,WAAW,CAAI,QAAc,CAC9B,AAOD,AAAA,aAAa,AAAC,ChCtGZ,gBAAgB,CnBiGT,OAAO,CmBhGd,YAAY,CnBgGL,OAAO,CmDOf,AAFD,AhCnGE,agCmGW,ChCnGX,YAAY,CgCmGd,AhClGE,agCkGW,ChClGX,YAAY,AAAC,CACX,gBAAgB,CAAE,WAAY,CAC/B,AgCmGH,AAAA,aAAa,AAAC,ChCzGZ,gBAAgB,CnBgGT,OAAO,CmB/Fd,YAAY,CnB+FL,OAAO,CmDWf,AAFD,AhCtGE,agCsGW,ChCtGX,YAAY,CgCsGd,AhCrGE,agCqGW,ChCrGX,YAAY,AAAC,CACX,gBAAgB,CAAE,WAAY,CAC/B,AgCsGH,AAAA,UAAU,AAAC,ChC5GT,gBAAgB,CnBkGT,OAAO,CmBjGd,YAAY,CnBiGL,OAAO,CmDYf,AAFD,AhCzGE,UgCyGQ,ChCzGR,YAAY,CgCyGd,AhCxGE,UgCwGQ,ChCxGR,YAAY,AAAC,CACX,gBAAgB,CAAE,WAAY,CAC/B,AgCyGH,AAAA,aAAa,AAAC,ChC/GZ,gBAAgB,CnB8FT,OAAO,CmB7Fd,YAAY,CnB6FL,OAAO,CmDmBf,AAFD,AhC5GE,agC4GW,ChC5GX,YAAY,CgC4Gd,AhC3GE,agC2GW,ChC3GX,YAAY,AAAC,CACX,gBAAgB,CAAE,WAAY,CAC/B,AgC4GH,AAAA,YAAY,AAAC,ChClHX,gBAAgB,CnB6FT,OAAO,CmB5Fd,YAAY,CnB4FL,OAAO,CmDuBf,AAFD,AhC/GE,YgC+GU,ChC/GV,YAAY,CgC+Gd,AhC9GE,YgC8GU,ChC9GV,YAAY,AAAC,CACX,gBAAgB,CAAE,WAAY,CAC/B,AgCiHH,AAAA,qBAAqB,AAAC,ChC7GpB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CnBsFL,OAAO,CmDwBf,AACD,AAAA,uBAAuB,AAAC,ChChHtB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CnByWmB,IAAI,CmDxPpC,AACD,AAAA,kBAAkB,AAAC,ChCnHjB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CnBuFL,OAAO,CmD6Bf,AACD,AAAA,qBAAqB,AAAC,ChCtHpB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CnBqFL,OAAO,CmDkCf,AACD,AAAA,qBAAqB,AAAC,ChCzHpB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CnBmFL,OAAO,CmDuCf,AACD,AAAA,oBAAoB,AAAC,ChC5HnB,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CnBkFL,OAAO,CmD2Cf,AAMD,AAAA,aAAa,AAAC,ChC3HZ,KAAK,CAAE,sBAAI,CgC6HZ,AAFD,AhCzHE,agCyHW,ChCzHX,YAAY,CgCyHd,AhCxHE,agCwHW,ChCxHX,YAAY,AAAC,CACX,gBAAgB,CAAE,WAAY,CAC9B,YAAY,CAAE,qBAAI,CACnB,AgCqHH,AhCpHE,agCoHW,ChCpHX,YAAY,CgCoHd,AhCnHE,agCmHW,ChCnHX,YAAY,CgCmHd,AhClHE,agCkHW,ChClHX,WAAW,CgCkHb,AhCjHE,agCiHW,ChCjHX,gBAAgB,AAAC,CACf,KAAK,CAAE,IAAK,CACb,AgC+GH,AhC9GE,agC8GW,ChC9GX,UAAU,CgC8GZ,AhC7GE,agC6GW,ChC7GX,UAAU,CgC6GZ,AhC5GE,agC4GW,ChC5GX,cAAc,CgC4GhB,AhC3GmB,agC2GN,ChC3GX,gBAAgB,CAAC,kBAAkB,AAAC,CAClC,KAAK,CAAE,sBAAI,CACZ,AgCyGH,AhCxGE,agCwGW,ChCxGX,UAAU,AdrBP,MAAM,C8C6HX,AhCxGE,agCwGW,ChCxGX,UAAU,AdpBP,MAAM,AAAC,CcsBN,KAAK,CnBmDF,IAAI,CKvER,A8CkIL,AAAA,gBAAgB,AAAC,CACf,OAAO,CAAE,CAAE,CACX,aAAa,CAAE,CAAE,CACjB,WAAW,CAAE,CAAE,CAChB,AAGD,AAAA,SAAS,AAAC,CxB5JN,aAAa,C3BssBU,kBAAI,CmDviB9B,AACD,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,CAAE,CACR,OAAO,CnDsiBkB,OAAO,CmDriBjC,AAKD,AAAA,aAAa,AAAC,CxBtKV,uBAAuB,C3BgsBA,kBAAI,C2B/rB3B,sBAAsB,C3B+rBC,kBAAI,CmDxhB9B,AACD,AAAA,gBAAgB,AAAC,CxB3Jb,0BAA0B,C3BkrBH,kBAAI,C2BjrB3B,yBAAyB,C3BirBF,kBAAI,CmDrhB9B,A/C7HG,MAAM,EAAL,SAAS,EAAE,KAAK,E+CmInB,AAAA,UAAU,AAAC,CACT,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,QAAS,CAarB,AAfD,AAIE,UAJQ,CAIR,KAAK,AAAC,CACJ,OAAO,CAAE,IAAK,CACd,IAAI,CAAE,KAAM,CACZ,cAAc,CAAE,MAAO,CAOxB,AAdH,AAIE,UAJQ,CAIR,KAAK,AAQF,IAAK,CAAA,AAAA,YAAY,CAAE,CAAE,WAAW,CnD2gBV,IAAuB,CmD3gBU,AAZ5D,AAIE,UAJQ,CAIR,KAAK,AASF,IAAK,CAAA,AAAA,WAAW,CAAE,CAAE,YAAY,CnD0gBV,IAAuB,CmD1gBU,C/ChJ1D,MAAM,EAAL,SAAS,EAAE,KAAK,E+C2JnB,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,QAAS,CA2CrB,AA7CD,AAIE,WAJS,CAIT,KAAK,AAAC,CACJ,IAAI,CAAE,KAAM,CAuCb,AA5CH,AAOM,WAPK,CAIT,KAAK,CAGD,KAAK,AAAC,CACN,WAAW,CAAE,CAAE,CACf,WAAW,CAAE,CAAE,CAChB,AAVL,AAIE,WAJS,CAIT,KAAK,AAUA,YAAY,AAAC,CxBhNlB,0BAA0B,CwBiNS,CAAC,CxBhNpC,uBAAuB,CwBgNY,CAAC,CAQ/B,AAvBP,AAiBQ,WAjBG,CAIT,KAAK,AAUA,YAAY,CAGX,aAAa,AAAC,CACZ,uBAAuB,CAAE,CAAE,CAC5B,AAnBT,AAoBQ,WApBG,CAIT,KAAK,AAUA,YAAY,CAMX,gBAAgB,AAAC,CACf,0BAA0B,CAAE,CAAE,CAC/B,AAtBT,AAIE,WAJS,CAIT,KAAK,AAoBA,WAAW,AAAC,CxB5MjB,yBAAyB,CwB6MS,CAAC,CxB5MnC,sBAAsB,CwB4MY,CAAC,CAQ9B,AAjCP,AA2BQ,WA3BG,CAIT,KAAK,AAoBA,WAAW,CAGV,aAAa,AAAC,CACZ,sBAAsB,CAAE,CAAE,CAC3B,AA7BT,AA8BQ,WA9BG,CAIT,KAAK,AAoBA,WAAW,CAMV,gBAAgB,AAAC,CACf,yBAAyB,CAAE,CAAE,CAC9B,AAhCT,AAIE,WAJS,CAIT,KAAK,AA+BA,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,CAAE,CACnC,aAAa,CAAE,CAAE,CAMlB,AA1CP,AAsCQ,WAtCG,CAIT,KAAK,AA+BA,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,EAGjC,aAAa,CAtCrB,AAuCQ,WAvCG,CAIT,KAAK,AA+BA,IAAK,CAAA,AAAA,YAAY,CAAC,IAAK,CAAA,AAAA,WAAW,EAIjC,gBAAgB,AAAC,CACf,aAAa,CAAE,CAAE,CAClB,C/CpMP,MAAM,EAAL,SAAS,EAAE,KAAK,E+CiNnB,AAAA,aAAa,AAAC,CACZ,YAAY,CnD0cY,CAAC,CmDzczB,UAAU,CnD0cc,OAAO,CmDnchC,AATD,AAIE,aAJW,CAIX,KAAK,AAAC,CACJ,OAAO,CAAE,YAAa,CACtB,KAAK,CAAE,IAAK,CACZ,aAAa,CnDsbQ,MAAM,CmDrb5B,CCjRL,AAAA,WAAW,AAAC,CACV,OAAO,CpDy4BuB,MAAM,CACN,IAAI,CoDz4BlC,aAAa,CpD0IJ,IAAI,CoDzIb,UAAU,CAAE,IAAK,CACjB,gBAAgB,CpDyGU,OAAO,C2BzG/B,aAAa,C3B4TQ,MAAM,CoDzT9B,AAPD,AAAA,WAAW,AvBCR,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,AuBIH,AAAA,gBAAgB,AAAC,CACf,KAAK,CAAE,IAAK,CA2Bb,AA5BD,AAIoB,gBAJJ,CAIZ,gBAAgB,AAAA,QAAQ,AAAC,CACzB,OAAO,CAAE,YAAa,CACtB,aAAa,CpD63Be,KAAK,CoD53BjC,YAAY,CpD43BgB,KAAK,CoD33BjC,KAAK,CpD2FmB,OAAO,CoD1F/B,OAAO,CAAE,GAAwB,CAClC,AAVH,AAkB0B,gBAlBV,CAkBZ,gBAAgB,AAAA,MAAM,AAAA,QAAQ,AAAC,CAC/B,eAAe,CAAE,SAAU,CAC5B,AApBH,AAqB0B,gBArBV,CAqBZ,gBAAgB,AAAA,MAAM,AAAA,QAAQ,AAAC,CAC/B,eAAe,CAAE,IAAK,CACvB,AAvBH,AAAA,gBAAgB,AAyBb,OAAO,AAAC,CACP,KAAK,CpDyEmB,OAAO,CoDxEhC,ACpCH,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CAEd,YAAY,CAAE,CAAE,CAChB,UAAU,CAAE,IAAK,C1BAf,aAAa,C3B4TQ,MAAM,CqD1T9B,AAED,AAEI,UAFM,AACP,YAAY,CACX,UAAU,AAAC,CACT,WAAW,CAAE,CAAE,C1BoBjB,yBAAyB,C3BiSJ,MAAM,C2BhS3B,sBAAsB,C3BgSD,MAAM,CqDnT1B,AALL,AAQI,UARM,AAOP,WAAW,CACV,UAAU,AAAC,C1BCX,0BAA0B,C3B+SL,MAAM,C2B9S3B,uBAAuB,C3B8SF,MAAM,CqD9S1B,AAVL,AAaW,UAbD,AAaP,OAAO,CAAC,UAAU,AAAC,CAClB,OAAO,CAAE,CAAE,CACX,KAAK,CrDuEA,IAAI,CqDtET,gBAAgB,CrD4EX,OAAO,CqD3EZ,YAAY,CrD2EP,OAAO,CqD1Eb,AAlBH,AAoBa,UApBH,AAoBP,SAAS,CAAC,UAAU,AAAC,CACpB,KAAK,CrD+EmB,OAAO,CqD9E/B,cAAc,CAAE,IAAK,CACrB,MAAM,CrDibuB,WAAW,CqDhbxC,gBAAgB,CrD8DX,IAAI,CqD7DT,YAAY,CrDmoBuB,IAAI,CqDloBxC,AAGH,AAAA,UAAU,AAAC,CACT,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,KAAM,CACf,OAAO,CrDsmB6B,KAAK,CADL,MAAM,CqDpmB1C,WAAW,CAAE,IAAK,CAClB,WAAW,CrDymByB,IAAI,CqDxmBxC,KAAK,CrDyDE,OAAO,CqDxDd,gBAAgB,CrDkDT,IAAI,CqDjDX,MAAM,CrD4HO,GAAG,CqD5HiB,KAAK,CrD2mBD,IAAI,CqDnmB1C,AAhBD,AAAA,UAAU,AhDjBL,MAAM,CgDiBX,AAAA,UAAU,AhDhBL,MAAM,AAAC,CgD2BR,KAAK,CrDmJe,OAAM,CqDlJ1B,eAAe,CAAE,IAAK,CACtB,gBAAgB,CrD2DQ,OAAO,CqD1D/B,YAAY,CrDymBuB,IAAI,CKroBtC,AgDqCL,AjCzDE,ciCyDY,CjCzDZ,UAAU,AAAC,CACT,OAAO,CpB8oB2B,MAAM,CADN,MAAM,CoB5oBxC,SAAS,CpBuPI,OAAO,CoBtPrB,AiCsDH,AjClDM,ciCkDQ,CjCpDZ,UAAU,AACP,YAAY,CACX,UAAU,AAAC,COqBb,yBAAyB,C3BkSJ,KAAK,C2BjS1B,sBAAsB,C3BiSD,KAAK,CoBrTvB,AiCgDP,AjC7CM,ciC6CQ,CjCpDZ,UAAU,AAMP,WAAW,CACV,UAAU,AAAC,COEb,0BAA0B,C3BgTL,KAAK,C2B/S1B,uBAAuB,C3B+SF,KAAK,CoBhTvB,AiC+CP,AjC7DE,ciC6DY,CjC7DZ,UAAU,AAAC,CACT,OAAO,CpB4oB2B,MAAM,CADN,KAAK,CoB1oBvC,SAAS,CpBwPI,OAAO,CoBvPrB,AiC0DH,AjCtDM,ciCsDQ,CjCxDZ,UAAU,AACP,YAAY,CACX,UAAU,AAAC,COqBb,yBAAyB,C3BmSJ,KAAK,C2BlS1B,sBAAsB,C3BkSD,KAAK,CoBtTvB,AiCoDP,AjCjDM,ciCiDQ,CjCxDZ,UAAU,AAMP,WAAW,CACV,UAAU,AAAC,COEb,0BAA0B,C3BiTL,KAAK,C2BhT1B,uBAAuB,C3BgTF,KAAK,CoBjTvB,AkCZP,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,YAAa,CACtB,OAAO,CtDqwBqB,KAAK,CADL,IAAI,CsDnwBhC,SAAS,CtDiwBmB,GAAG,CsDhwB/B,WAAW,CtDwPM,IAAI,CsDvPrB,WAAW,CAAE,CAAE,CACf,KAAK,CtDmFE,IAAI,CsDlFX,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,MAAO,CACpB,cAAc,CAAE,QAAS,C3BVvB,aAAa,C3B4TQ,MAAM,CsD3S9B,AAhBD,AAAA,MAAM,AAaH,MAAM,AAAC,CACN,OAAO,CAAE,IAAK,CACf,AAIH,AAAK,IAAD,CAAC,MAAM,AAAC,CACV,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,IAAK,CACX,AAID,AAAC,CAAA,AAAA,MAAM,AjDXF,MAAM,CiDWX,AAAC,CAAA,AAAA,MAAM,AjDVF,MAAM,AAAC,CiDYR,KAAK,CtD6DA,IAAI,CsD5DT,eAAe,CAAE,IAAK,CACtB,MAAM,CAAE,OAAQ,CjDZf,AiDqBL,AAAA,WAAW,AAAC,CACV,aAAa,CtDiuBe,IAAI,CsDhuBhC,YAAY,CtDguBgB,IAAI,C2B1wB9B,aAAa,C3B6wBa,KAAK,CsDjuBlC,AAMD,AAAA,cAAc,AAAC,C/CnDb,gBAAgB,CPyGU,OAAO,CsDpDlC,AAFD,AAAA,cAAc,C/CjDX,AAAA,IAAC,AAAA,CFeC,MAAM,CiDkCX,AAAA,cAAc,C/CjDX,AAAA,IAAC,AAAA,CFgBC,MAAM,AAAC,CEdN,gBAAgB,CAAE,OAAM,CFgBzB,AiDmCL,AAAA,cAAc,AAAC,C/CvDb,gBAAgB,CPiGT,OAAO,CsDxCf,AAFD,AAAA,cAAc,C/CrDX,AAAA,IAAC,AAAA,CFeC,MAAM,CiDsCX,AAAA,cAAc,C/CrDX,AAAA,IAAC,AAAA,CFgBC,MAAM,AAAC,CEdN,gBAAgB,CAAE,OAAM,CFgBzB,AiDuCL,AAAA,cAAc,AAAC,C/C3Db,gBAAgB,CPgGT,OAAO,CsDnCf,AAFD,AAAA,cAAc,C/CzDX,AAAA,IAAC,AAAA,CFeC,MAAM,CiD0CX,AAAA,cAAc,C/CzDX,AAAA,IAAC,AAAA,CFgBC,MAAM,AAAC,CEdN,gBAAgB,CAAE,OAAM,CFgBzB,AiD2CL,AAAA,WAAW,AAAC,C/C/DV,gBAAgB,CPkGT,OAAO,CsDjCf,AAFD,AAAA,WAAW,C/C7DR,AAAA,IAAC,AAAA,CFeC,MAAM,CiD8CX,AAAA,WAAW,C/C7DR,AAAA,IAAC,AAAA,CFgBC,MAAM,AAAC,CEdN,gBAAgB,CAAE,OAAM,CFgBzB,AiD+CL,AAAA,cAAc,AAAC,C/CnEb,gBAAgB,CP8FT,OAAO,CsDzBf,AAFD,AAAA,cAAc,C/CjEX,AAAA,IAAC,AAAA,CFeC,MAAM,CiDkDX,AAAA,cAAc,C/CjEX,AAAA,IAAC,AAAA,CFgBC,MAAM,AAAC,CEdN,gBAAgB,CAAE,OAAM,CFgBzB,AiDmDL,AAAA,aAAa,AAAC,C/CvEZ,gBAAgB,CP6FT,OAAO,CsDpBf,AAFD,AAAA,aAAa,C/CrEV,AAAA,IAAC,AAAA,CFeC,MAAM,CiDsDX,AAAA,aAAa,C/CrEV,AAAA,IAAC,AAAA,CFgBC,MAAM,AAAC,CEdN,gBAAgB,CAAE,OAAM,CFgBzB,AkDvBL,AAAA,UAAU,AAAC,CACT,OAAO,CvDwqBwB,IAAI,CuDxqBN,IAAkB,CAC/C,aAAa,CvDuqBkB,IAAI,CuDtqBnC,gBAAgB,CvD0GU,OAAO,C2BzG/B,aAAa,C3B6TQ,KAAK,CuDxT7B,AnD+CG,MAAM,EAAL,SAAS,EAAE,KAAK,EmDxDrB,AAAA,UAAU,AAAC,CAOP,OAAO,CAAG,IAAkB,CvDkqBC,IAAI,CuDhqBpC,CAED,AAAA,aAAa,AAAC,CACZ,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,gBAAgB,AAAC,CACf,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,C5Bbd,aAAa,C4BcQ,CAAC,CACzB,ACfD,AAAA,MAAM,AAAC,CACL,OAAO,CxDmzBqB,MAAM,CADN,OAAO,CwDjzBnC,aAAa,CxDsIJ,IAAI,CwDrIb,MAAM,CxDkKO,GAAG,CwDlKY,KAAK,CAAC,WAAW,C7BH3C,aAAa,C3B4TQ,MAAM,CwDvT9B,AAGD,AAAA,cAAc,AAAC,CAEb,KAAK,CAAE,OAAQ,CAChB,AAGD,AAAA,WAAW,AAAC,CACV,WAAW,CxD8OM,IAAI,CwD7OtB,AAOD,AAEE,kBAFgB,CAEhB,MAAM,CAFR,AAEE,kBAFgB,CmD0DlB,yBAAyB,AnDxDhB,CACL,QAAQ,CAAE,QAAS,CACnB,GAAG,CxDyxBuB,OAAM,CwDxxBhC,KAAK,CxDuxBqB,QAAO,CwDtxBjC,OAAO,CxDuxBmB,MAAM,CADN,OAAO,CwDrxBjC,KAAK,CAAE,OAAQ,CAChB,AAQH,AAAA,cAAc,AAAC,CvCxCb,gBAAgB,CjB+qBe,OAAO,CiB9qBtC,YAAY,CjB+qBmB,OAAM,CiB9qBrC,KAAK,CjB4qB0B,OAAO,CwDpoBvC,AAFD,AvCpCE,cuCoCY,CvCpCZ,EAAE,AAAC,CACD,gBAAgB,CAAE,OAAM,CACzB,AuCkCH,AvCjCE,cuCiCY,CvCjCZ,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACd,AuCkCH,AAAA,WAAW,AAAC,CvC3CV,gBAAgB,CjBmrBe,OAAO,CiBlrBtC,YAAY,CjBmrBmB,OAAM,CiBlrBrC,KAAK,CjBgrB0B,OAAO,CwDroBvC,AAFD,AvCvCE,WuCuCS,CvCvCT,EAAE,AAAC,CACD,gBAAgB,CAAE,OAAM,CACzB,AuCqCH,AvCpCE,WuCoCS,CvCpCT,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACd,AuCqCH,AAAA,cAAc,AAAC,CvC9Cb,gBAAgB,CjBurBe,OAAO,CiBtrBtC,YAAY,CjBwrBmB,OAAM,CiBvrBrC,KAAK,CjBorB0B,OAAO,CwDtoBvC,AAFD,AvC1CE,cuC0CY,CvC1CZ,EAAE,AAAC,CACD,gBAAgB,CAAE,OAAM,CACzB,AuCwCH,AvCvCE,cuCuCY,CvCvCZ,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACd,AuCwCH,AAAA,aAAa,AAAC,CvCjDZ,gBAAgB,CjB4rBe,OAAO,CiB3rBtC,YAAY,CjB4rBmB,OAAM,CiB3rBrC,KAAK,CjByrB0B,OAAO,CwDxoBvC,AAFD,AvC7CE,auC6CW,CvC7CX,EAAE,AAAC,CACD,gBAAgB,CAAE,OAAM,CACzB,AuC2CH,AvC1CE,auC0CW,CvC1CX,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACd,AwCXH,UAAU,CAAV,oBAAU,CACR,AAAA,IAAI,CAAG,mBAAmB,CzD+0BI,IAAI,CyD/0BW,CAAC,CAC9C,AAAA,EAAE,CAAG,mBAAmB,CAAE,GAAI,EAIhC,AAAA,SAAS,AAAC,CACR,OAAO,CAAE,IAAK,CACd,QAAQ,CAAE,MAAO,CACjB,SAAS,CzDw0BqB,MAAM,CyDv0BpC,WAAW,CzDs0BmB,IAAI,CyDr0BlC,UAAU,CAAE,MAAO,CACnB,gBAAgB,CzDgGU,OAAO,C2BzG/B,aAAa,C3B4TQ,MAAM,CyDjT9B,AACD,AAAA,aAAa,AAAC,CACZ,MAAM,CzDg0BwB,IAAI,CyD/zBlC,KAAK,CzD4EE,IAAI,CyD3EX,gBAAgB,CzDiFT,OAAO,CyDhFf,AAGD,AAAA,qBAAqB,AAAC,C7BYpB,gBAAgB,CAAE,0KAAe,C6BVjC,eAAe,CzDwzBe,IAAI,CAAJ,IAAI,CyDvzBnC,AAGD,AAAA,sBAAsB,AAAC,CACrB,SAAS,CAAE,oBAAoB,CzD0zBD,EAAE,CAAC,MAAM,CAAC,QAAQ,CyDzzBjD,AC/BD,AAAA,MAAM,AAAC,CACL,OAAO,CAAE,IAAK,CACd,WAAW,CAAE,UAAW,CACzB,AAED,AAAA,WAAW,AAAC,CACV,IAAI,CAAE,CAAE,CACT,ACHD,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CACd,cAAc,CAAE,MAAO,CAGvB,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CAClB,AAQD,AAAA,uBAAuB,AAAC,CACtB,KAAK,CAAE,IAAK,CACZ,KAAK,C3DsFqB,OAAO,C2DrFjC,UAAU,CAAE,OAAQ,CAiBrB,AApBD,AAKE,uBALqB,CAKrB,wBAAwB,AAAC,CACvB,KAAK,C3DiFmB,OAAO,C2DhFhC,AAPH,AAAA,uBAAuB,AtDClB,MAAM,CsDDX,AAAA,uBAAuB,AtDElB,MAAM,AAAC,CsDSR,KAAK,C3D6EmB,OAAO,C2D5E/B,eAAe,CAAE,IAAK,CACtB,gBAAgB,C3D8EQ,OAAO,CKvF9B,AsDJL,AAAA,uBAAuB,AAgBpB,OAAO,AAAC,CACP,KAAK,C3DsEmB,OAAO,C2DrE/B,gBAAgB,C3DwEQ,OAAO,C2DvEhC,AAQH,AAAA,gBAAgB,AAAC,CACf,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,QAAS,CACpB,WAAW,CAAE,MAAO,CACpB,OAAO,C3DgzBwB,MAAM,CADN,OAAO,C2D7yBtC,aAAa,C3DoHA,IAAG,C2DnHhB,gBAAgB,C3DwCT,IAAI,C2DvCX,MAAM,C3DkHO,GAAG,C2DlHiB,KAAK,C3DwC/B,iBAAI,C2DQZ,AAzDD,AAAA,gBAAgB,AAWb,YAAY,AAAC,ChC/CZ,uBAAuB,C3BsTF,MAAM,C2BrT3B,sBAAsB,C3BqTD,MAAM,C2DrQ5B,AAbH,AAAA,gBAAgB,AAeb,WAAW,AAAC,CACX,aAAa,CAAE,CAAE,ChCtCjB,0BAA0B,C3BwSL,MAAM,C2BvS3B,yBAAyB,C3BuSJ,MAAM,C2DhQ5B,AAlBH,AAAA,gBAAgB,AtD1BX,MAAM,CsD0BX,AAAA,gBAAgB,AtDzBX,MAAM,AAAC,CsD8CR,eAAe,CAAE,IAAK,CtD5CrB,AsDuBL,AAAA,gBAAgB,AAwBb,SAAS,CAxBZ,AAAA,gBAAgB,AAyBb,SAAS,AAAC,CACT,KAAK,C3DoCmB,OAAO,C2DnC/B,MAAM,C3DuYuB,WAAW,C2DtYxC,gBAAgB,C3DoBX,IAAI,C2DXV,AArCH,AA+BI,gBA/BY,AAwBb,SAAS,CAOR,wBAAwB,CA/B5B,AA+BI,gBA/BY,AAyBb,SAAS,CAMR,wBAAwB,AAAC,CACvB,KAAK,CAAE,OAAQ,CAChB,AAjCL,AAkCI,gBAlCY,AAwBb,SAAS,CAUR,qBAAqB,CAlCzB,AAkCI,gBAlCY,AAyBb,SAAS,CASR,qBAAqB,AAAC,CACpB,KAAK,C3D2BiB,OAAO,C2D1B9B,AApCL,AAAA,gBAAgB,AAwCb,OAAO,AAAC,CACP,OAAO,CAAE,CAAE,CACX,KAAK,C3DMA,IAAI,C2DLT,gBAAgB,C3DWX,OAAO,C2DVZ,YAAY,C3DUP,OAAO,C2DEb,AAxDH,AA+CI,gBA/CY,AAwCb,OAAO,CAON,wBAAwB,CA/C5B,AAgD+B,gBAhDf,AAwCb,OAAO,CAQN,wBAAwB,CAAG,KAAK,CAhDpC,AAiD+B,gBAjDf,AAwCb,OAAO,CASN,wBAAwB,CAAG,MAAM,AAAC,CAChC,KAAK,CAAE,OAAQ,CAChB,AAnDL,AAqDI,gBArDY,AAwCb,OAAO,CAaN,qBAAqB,AAAC,CACpB,KAAK,C3DqwBsB,OAAO,C2DpwBnC,AAUL,AACE,iBADe,CACf,gBAAgB,AAAC,CACf,YAAY,CAAE,CAAE,CAChB,WAAW,CAAE,CAAE,CACf,aAAa,CAAE,CAAE,CAClB,AALH,AAQoB,iBARH,AAOd,YAAY,CACX,gBAAgB,AAAA,YAAY,AAAC,CAC3B,UAAU,CAAE,CAAE,CACf,AAVL,AAcoB,iBAdH,AAad,WAAW,CACV,gBAAgB,AAAA,WAAW,AAAC,CAC1B,aAAa,CAAE,CAAE,CAClB,ArC5HH,AAAA,wBAAwB,AAAxB,CACE,KAAK,CtB6qBwB,OAAO,CsB5qBpC,gBAAgB,CtB6qBa,OAAO,CsB5qBrC,AAED,AAAC,CAAA,AAAA,wBAAwB,CACzB,AAAM,MAAA,AAAA,wBAAwB,AAD9B,CACE,KAAK,CtBwqBwB,OAAO,CsBxpBrC,AAjBD,AAGE,CAHD,AAAA,wBAAwB,CAGvB,wBAAwB,CAF1B,AAEE,MAFI,AAAA,wBAAwB,CAE5B,wBAAwB,AAAC,CACvB,KAAK,CAAE,OAAQ,CAChB,AALH,AAAC,CAAA,AAAA,wBAAwB,AjBYtB,MAAM,CiBZT,AAAC,CAAA,AAAA,wBAAwB,AjBatB,MAAM,CiBZT,AAAM,MAAA,AAAA,wBAAwB,AjBW3B,MAAM,CiBXT,AAAM,MAAA,AAAA,wBAAwB,AjBY3B,MAAM,AAAC,CiBLN,KAAK,CtBiqBsB,OAAO,CsBhqBlC,gBAAgB,CAAE,OAAM,CjBMzB,AiBfH,AAAC,CAAA,AAAA,wBAAwB,AAYtB,OAAO,CAXV,AAAM,MAAA,AAAA,wBAAwB,AAW3B,OAAO,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,gBAAgB,CtB2pBW,OAAO,CsB1pBlC,YAAY,CtB0pBe,OAAO,CsBzpBnC,AArBH,AAAA,qBAAqB,AAArB,CACE,KAAK,CtBirBwB,OAAO,CsBhrBpC,gBAAgB,CtBirBa,OAAO,CsBhrBrC,AAED,AAAC,CAAA,AAAA,qBAAqB,CACtB,AAAM,MAAA,AAAA,qBAAqB,AAD3B,CACE,KAAK,CtB4qBwB,OAAO,CsB5pBrC,AAjBD,AAGE,CAHD,AAAA,qBAAqB,CAGpB,wBAAwB,CAF1B,AAEE,MAFI,AAAA,qBAAqB,CAEzB,wBAAwB,AAAC,CACvB,KAAK,CAAE,OAAQ,CAChB,AALH,AAAC,CAAA,AAAA,qBAAqB,AjBYnB,MAAM,CiBZT,AAAC,CAAA,AAAA,qBAAqB,AjBanB,MAAM,CiBZT,AAAM,MAAA,AAAA,qBAAqB,AjBWxB,MAAM,CiBXT,AAAM,MAAA,AAAA,qBAAqB,AjBYxB,MAAM,AAAC,CiBLN,KAAK,CtBqqBsB,OAAO,CsBpqBlC,gBAAgB,CAAE,OAAM,CjBMzB,AiBfH,AAAC,CAAA,AAAA,qBAAqB,AAYnB,OAAO,CAXV,AAAM,MAAA,AAAA,qBAAqB,AAWxB,OAAO,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,gBAAgB,CtB+pBW,OAAO,CsB9pBlC,YAAY,CtB8pBe,OAAO,CsB7pBnC,AArBH,AAAA,wBAAwB,AAAxB,CACE,KAAK,CtBqrBwB,OAAO,CsBprBpC,gBAAgB,CtBqrBa,OAAO,CsBprBrC,AAED,AAAC,CAAA,AAAA,wBAAwB,CACzB,AAAM,MAAA,AAAA,wBAAwB,AAD9B,CACE,KAAK,CtBgrBwB,OAAO,CsBhqBrC,AAjBD,AAGE,CAHD,AAAA,wBAAwB,CAGvB,wBAAwB,CAF1B,AAEE,MAFI,AAAA,wBAAwB,CAE5B,wBAAwB,AAAC,CACvB,KAAK,CAAE,OAAQ,CAChB,AALH,AAAC,CAAA,AAAA,wBAAwB,AjBYtB,MAAM,CiBZT,AAAC,CAAA,AAAA,wBAAwB,AjBatB,MAAM,CiBZT,AAAM,MAAA,AAAA,wBAAwB,AjBW3B,MAAM,CiBXT,AAAM,MAAA,AAAA,wBAAwB,AjBY3B,MAAM,AAAC,CiBLN,KAAK,CtByqBsB,OAAO,CsBxqBlC,gBAAgB,CAAE,OAAM,CjBMzB,AiBfH,AAAC,CAAA,AAAA,wBAAwB,AAYtB,OAAO,CAXV,AAAM,MAAA,AAAA,wBAAwB,AAW3B,OAAO,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,gBAAgB,CtBmqBW,OAAO,CsBlqBlC,YAAY,CtBkqBe,OAAO,CsBjqBnC,AArBH,AAAA,uBAAuB,AAAvB,CACE,KAAK,CtB0rBwB,OAAO,CsBzrBpC,gBAAgB,CtB0rBa,OAAO,CsBzrBrC,AAED,AAAC,CAAA,AAAA,uBAAuB,CACxB,AAAM,MAAA,AAAA,uBAAuB,AAD7B,CACE,KAAK,CtBqrBwB,OAAO,CsBrqBrC,AAjBD,AAGE,CAHD,AAAA,uBAAuB,CAGtB,wBAAwB,CAF1B,AAEE,MAFI,AAAA,uBAAuB,CAE3B,wBAAwB,AAAC,CACvB,KAAK,CAAE,OAAQ,CAChB,AALH,AAAC,CAAA,AAAA,uBAAuB,AjBYrB,MAAM,CiBZT,AAAC,CAAA,AAAA,uBAAuB,AjBarB,MAAM,CiBZT,AAAM,MAAA,AAAA,uBAAuB,AjBW1B,MAAM,CiBXT,AAAM,MAAA,AAAA,uBAAuB,AjBY1B,MAAM,AAAC,CiBLN,KAAK,CtB8qBsB,OAAO,CsB7qBlC,gBAAgB,CAAE,OAAM,CjBMzB,AiBfH,AAAC,CAAA,AAAA,uBAAuB,AAYrB,OAAO,CAXV,AAAM,MAAA,AAAA,uBAAuB,AAW1B,OAAO,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,gBAAgB,CtBwqBW,OAAO,CsBvqBlC,YAAY,CtBuqBe,OAAO,CsBtqBnC,AsCtBL,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,CAAE,CACX,QAAQ,CAAE,MAAO,CAoBlB,AAzBD,AAAA,iBAAiB,AAOd,QAAQ,AAAC,CACR,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACb,AAVH,AAYE,iBAZe,CAYf,sBAAsB,CAZxB,AAaE,iBAbe,CAaf,MAAM,CAbR,AAcE,iBAde,CAcf,KAAK,CAdP,AAeE,iBAfe,CAef,MAAM,CAfR,AAgBE,iBAhBe,CAgBf,KAAK,AAAC,CACJ,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,CAAE,CACR,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,MAAM,CAAE,CAAE,CACX,AAGH,AAAA,uBAAuB,AACpB,QAAQ,AAAC,CACR,WAAW,CAAE,cAAU,CACxB,AAGH,AAAA,uBAAuB,AACpB,QAAQ,AAAC,CACR,WAAW,CAAE,MAAU,CACxB,AAGH,AAAA,sBAAsB,AACnB,QAAQ,AAAC,CACR,WAAW,CAAE,GAAU,CACxB,AAGH,AAAA,sBAAsB,AACnB,QAAQ,AAAC,CACR,WAAW,CAAE,IAAU,CACxB,AClDH,AAAA,MAAM,C8CqFN,A9CrFA,yB8CqFyB,A9CrFlB,CACL,KAAK,CAAE,KAAM,CACb,SAAS,C7D06BmB,MAAe,C6Dz6B3C,WAAW,C7D8PM,IAAI,C6D7PrB,WAAW,CAAE,CAAE,CACf,KAAK,C7D0FE,IAAI,C6DzFX,WAAW,C7Dy6BiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAj1B5B,IAAI,C6DvFX,OAAO,CAAE,EAAG,CAQb,AAfD,AAAA,MAAM,AxDoBD,MAAM,CsGiEX,A9CrFA,yB8CqFyB,AtGjEpB,MAAM,CwDpBX,AAAA,MAAM,AxDqBD,MAAM,CsGgEX,A9CrFA,yB8CqFyB,AtGhEpB,MAAM,AAAC,CwDXR,KAAK,C7DqFA,IAAI,C6DpFT,eAAe,CAAE,IAAK,CACtB,MAAM,CAAE,OAAQ,CAChB,OAAO,CAAE,GAAI,CxDUZ,AwDAL,AAAM,MAAA,AAAA,MAAM,CAAZ,AAAA,MAAM,A8C8DN,yBAAyB,A9C9DZ,CACX,OAAO,CAAE,CAAE,CACX,MAAM,CAAE,OAAQ,CAChB,UAAU,CAAE,WAAY,CACxB,MAAM,CAAE,CAAE,CACV,kBAAkB,CAAE,IAAK,CAC1B,ACtBD,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,MAAO,CAClB,AAGD,AAAA,MAAM,AAAC,CACL,QAAQ,CAAE,KAAM,CAChB,GAAG,CAAE,CAAE,CACP,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,CAAE,CACR,OAAO,C9DkkBmB,IAAI,C8DjkB9B,OAAO,CAAE,IAAK,CACd,QAAQ,CAAE,MAAO,CAGjB,OAAO,CAAE,CAAE,CAWZ,AAtBD,AAiBS,MAjBH,AAiBH,KAAK,CAAC,aAAa,AAAC,C3DdjB,UAAU,CHiyBc,SAAS,CAAC,IAAG,CAAC,QAAQ,C8DjxBhD,SAAS,CAAE,kBAAS,CACrB,AApBH,AAqBS,MArBH,AAqBH,KAAK,CAAC,aAAa,AAAC,CAAE,SAAS,CAAE,eAAS,CAAU,AAEvD,AAAY,WAAD,CAAC,MAAM,AAAC,CACjB,UAAU,CAAE,MAAO,CACnB,UAAU,CAAE,IAAK,CAClB,AAGD,AAAA,aAAa,AAAC,CACZ,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,MAAM,C9D6uBsB,IAAI,C8D5uBjC,AAGD,AAAA,cAAc,AAAC,CACb,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,IAAK,CACd,cAAc,CAAE,MAAO,CACvB,gBAAgB,C9D0CT,IAAI,C8DzCX,eAAe,CAAE,WAAY,CAC7B,MAAM,C9DmHO,GAAG,C8DnHoB,KAAK,C9DyClC,eAAI,C2B3FT,aAAa,C3B6TQ,KAAK,C8DvQ5B,OAAO,CAAE,CAAE,CACZ,AAGD,AAAA,eAAe,AAAC,CACd,QAAQ,CAAE,KAAM,CAChB,GAAG,CAAE,CAAE,CACP,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,CAAE,CACR,OAAO,C9D+gBmB,IAAI,C8D9gB9B,gBAAgB,C9D0BT,IAAI,C8DrBZ,AAZD,AAAA,eAAe,AAUZ,KAAK,AAAC,CAAE,OAAO,CAAE,CAAE,CAAI,AAV1B,AAAA,eAAe,AAWZ,KAAK,AAAC,CAAE,OAAO,C9D4tBY,EAAE,C8D5tBe,AAK/C,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,IAAK,CACd,WAAW,CAAE,MAAO,CACpB,eAAe,CAAE,aAAc,CAC/B,OAAO,C9DwtBqB,IAAI,C8DvtBhC,aAAa,C9DsFA,GAAG,C8DtF0B,KAAK,C9D0BrB,OAAO,C8DzBlC,AAGD,AAAA,YAAY,AAAC,CACX,aAAa,CAAE,CAAE,CACjB,WAAW,C9D2KM,GAAG,C8D1KrB,AAID,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAS,CAGnB,IAAI,CAAE,QAAS,CACf,OAAO,C9DorBqB,IAAI,C8DnrBjC,AAGD,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,IAAK,CACd,WAAW,CAAE,MAAO,CACpB,eAAe,CAAE,QAAS,CAC1B,OAAO,C9D4qBqB,IAAI,C8D3qBhC,UAAU,C9D6DG,GAAG,C8D7DuB,KAAK,C9DClB,OAAO,C8DIlC,AAVD,AAQqB,aARR,CAQT,IAAK,CAAA,AAAA,YAAY,CAAE,CAAE,WAAW,CAAE,MAAO,CAAI,AARjD,AASoB,aATP,CAST,IAAK,CAAA,AAAA,WAAW,CAAE,CAAE,YAAY,CAAE,MAAO,CAAI,AAIjD,AAAA,wBAAwB,AAAC,CACvB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,OAAQ,CACb,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,QAAQ,CAAE,MAAO,CAClB,A1DlEG,MAAM,EAAL,SAAS,EAAE,KAAK,E0DuEnB,AAAA,aAAa,AAAC,CACZ,SAAS,C9D6qBiB,KAAK,C8D5qB/B,MAAM,C9DypBoB,IAAI,C8DzpBO,IAAI,CAC1C,AAMD,AAAA,SAAS,AAAC,CAAE,SAAS,C9DsqBO,KAAK,C8DtqBG,C1DhFlC,MAAM,EAAL,SAAS,EAAE,KAAK,E0DoFnB,AAAA,SAAS,AAAC,CAAE,SAAS,C9DgqBO,KAAK,C8DhqBG,CC3ItC,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,QAAS,CACnB,OAAO,C/DmlBmB,IAAI,C+DllB9B,OAAO,CAAE,KAAM,CpDHf,WAAW,CXqPY,aAAC,CAAc,SAAS,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,gBAAgB,CAAE,KAAK,CAAE,UAAU,CWnP5H,UAAU,CAAE,MAAO,CACnB,WAAW,CX4PQ,MAAM,CW3PzB,cAAc,CAAE,MAAO,CACvB,UAAU,CAAE,IAAK,CACjB,WAAW,CX6PM,GAAG,CW5PpB,UAAU,CAAE,IAAK,CACjB,UAAU,CAAE,KAAM,CAClB,eAAe,CAAE,IAAK,CACtB,WAAW,CAAE,IAAK,CAClB,cAAc,CAAE,IAAK,CACrB,WAAW,CAAE,MAAO,CACpB,UAAU,CAAE,MAAO,CACnB,YAAY,CAAE,MAAO,CoDPrB,SAAS,C/DqPM,OAAO,C+DnPtB,SAAS,CAAE,UAAW,CACtB,OAAO,CAAE,CAAE,CA4DZ,AAtED,AAAA,QAAQ,AAYL,KAAK,AAAC,CAAE,OAAO,C/DitBY,EAAE,C+DjtBQ,AAZxC,AAAA,QAAQ,AAcL,YAAY,CAdf,AAAA,QAAQ,AAeL,kCAAkC,AAAC,CAClC,OAAO,C/DktBmB,GAAG,C+DltBC,CAAC,CAC/B,UAAU,C/D+sBgB,IAAG,C+DrsB9B,AA3BH,AAmBkB,QAnBV,AAcL,YAAY,CAKX,cAAc,AAAA,QAAQ,CAnB1B,AAmBkB,QAnBV,AAeL,kCAAkC,CAIjC,cAAc,AAAA,QAAQ,AAAC,CACrB,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,GAAI,CACV,WAAW,C/D4sBa,IAAG,C+D3sB3B,OAAO,CAAE,EAAG,CACZ,YAAY,C/D0sBY,GAAG,CAAH,GAAG,C+D1sB6B,CAAC,CACzD,gBAAgB,C/DqEb,IAAI,C+DpER,AA1BL,AAAA,QAAQ,AA4BL,cAAc,CA5BjB,AAAA,QAAQ,AA6BL,gCAAgC,AAAC,CAChC,OAAO,CAAE,CAAC,C/DosBgB,GAAG,C+DnsB7B,WAAW,C/DisBe,GAAG,C+DvrB9B,AAzCH,AAiCkB,QAjCV,AA4BL,cAAc,CAKb,cAAc,AAAA,QAAQ,CAjC1B,AAiCkB,QAjCV,AA6BL,gCAAgC,CAI/B,cAAc,AAAA,QAAQ,AAAC,CACrB,GAAG,CAAE,GAAI,CACT,IAAI,CAAE,CAAE,CACR,UAAU,C/D8rBc,IAAG,C+D7rB3B,OAAO,CAAE,EAAG,CACZ,YAAY,C/D4rBY,GAAG,CAAH,GAAG,CAAH,GAAG,C+D5rBkD,CAAC,CAC9E,kBAAkB,C/DuDf,IAAI,C+DtDR,AAxCL,AAAA,QAAQ,AA0CL,eAAe,CA1ClB,AAAA,QAAQ,AA2CL,+BAA+B,AAAC,CAC/B,OAAO,C/DsrBmB,GAAG,C+DtrBC,CAAC,CAC/B,UAAU,C/DmrBgB,GAAG,C+DzqB9B,AAvDH,AA+CkB,QA/CV,AA0CL,eAAe,CAKd,cAAc,AAAA,QAAQ,CA/C1B,AA+CkB,QA/CV,AA2CL,+BAA+B,CAI9B,cAAc,AAAA,QAAQ,AAAC,CACrB,GAAG,CAAE,CAAE,CACP,IAAI,CAAE,GAAI,CACV,WAAW,C/DgrBa,IAAG,C+D/qB3B,OAAO,CAAE,EAAG,CACZ,YAAY,CAAE,CAAC,C/D8qBS,GAAG,CAAH,GAAG,C+D7qB3B,mBAAmB,C/DyChB,IAAI,C+DxCR,AAtDL,AAAA,QAAQ,AAwDL,aAAa,CAxDhB,AAAA,QAAQ,AAyDL,iCAAiC,AAAC,CACjC,OAAO,CAAE,CAAC,C/DwqBgB,GAAG,C+DvqB7B,WAAW,C/DqqBe,IAAG,C+D3pB9B,AArEH,AA6DkB,QA7DV,AAwDL,aAAa,CAKZ,cAAc,AAAA,QAAQ,CA7D1B,AA6DkB,QA7DV,AAyDL,iCAAiC,CAIhC,cAAc,AAAA,QAAQ,AAAC,CACrB,GAAG,CAAE,GAAI,CACT,KAAK,CAAE,CAAE,CACT,UAAU,C/DkqBc,IAAG,C+DjqB3B,OAAO,CAAE,EAAG,CACZ,YAAY,C/DgqBY,GAAG,C+DhqBQ,CAAC,C/DgqBZ,GAAG,CAAH,GAAG,C+D/pB3B,iBAAiB,C/D2Bd,IAAI,C+D1BR,AAKL,AAAA,cAAc,AAAC,CACb,SAAS,C/DgpBmB,KAAK,C+D/oBjC,OAAO,C/DmpBqB,GAAG,CACH,GAAG,C+DnpB/B,KAAK,C/DiBE,IAAI,C+DhBX,UAAU,CAAE,MAAO,CACnB,gBAAgB,C/DgBT,IAAI,C2B3FT,aAAa,C3B4TQ,MAAM,C+DvO9B,AAfD,AAAA,cAAc,AAQX,QAAQ,AAAC,CACR,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,YAAY,CAAE,WAAY,CAC1B,YAAY,CAAE,KAAM,CACrB,ACxFH,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,IAAI,CAAE,CAAE,CACR,OAAO,ChEilBmB,IAAI,CgEhlB9B,OAAO,CAAE,KAAM,CACf,SAAS,ChEquB2B,KAAK,CgEpuBzC,OAAO,ChEkuB6B,GAAG,CWxuBvC,WAAW,CXqPY,aAAC,CAAc,SAAS,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,gBAAgB,CAAE,KAAK,CAAE,UAAU,CWnP5H,UAAU,CAAE,MAAO,CACnB,WAAW,CX4PQ,MAAM,CW3PzB,cAAc,CAAE,MAAO,CACvB,UAAU,CAAE,IAAK,CACjB,WAAW,CX6PM,GAAG,CW5PpB,UAAU,CAAE,IAAK,CACjB,UAAU,CAAE,KAAM,CAClB,eAAe,CAAE,IAAK,CACtB,WAAW,CAAE,IAAK,CAClB,cAAc,CAAE,IAAK,CACrB,WAAW,CAAE,MAAO,CACpB,UAAU,CAAE,MAAO,CACnB,YAAY,CAAE,MAAO,CqDJrB,SAAS,ChEkPM,OAAO,CgEhPtB,SAAS,CAAE,UAAW,CACtB,gBAAgB,ChEgFT,IAAI,CgE/EX,eAAe,CAAE,WAAY,CAC7B,MAAM,ChEyJO,GAAG,CgEzJc,KAAK,ChE+E5B,eAAI,C2B3FT,aAAa,C3B6TQ,KAAK,CgEnM7B,AA9HD,AAAA,QAAQ,AAuBL,YAAY,CAvBf,AAAA,QAAQ,AAwBL,kCAAkC,AAAC,CAClC,UAAU,ChE8tBwB,KAAI,CgE3sBvC,AA5CH,AAAA,QAAQ,AAuBL,YAAY,AAIV,QAAQ,CA3Bb,AAAA,QAAQ,AAuBL,YAAY,AAKV,OAAO,CA5BZ,AAAA,QAAQ,AAwBL,kCAAkC,AAGhC,QAAQ,CA3Bb,AAAA,QAAQ,AAwBL,kCAAkC,AAIhC,OAAO,AAAC,CACP,IAAI,CAAE,GAAI,CACV,mBAAmB,CAAE,CAAE,CACxB,AA/BL,AAAA,QAAQ,AAuBL,YAAY,AAUV,QAAQ,CAjCb,AAAA,QAAQ,AAwBL,kCAAkC,AAShC,QAAQ,AAAC,CACR,MAAM,ChEwtB2B,KAAoB,CgEvtBrD,WAAW,ChEutBsB,KAAoB,CgEttBrD,gBAAgB,ChEutBgB,gBAAO,CgEttBxC,AArCL,AAAA,QAAQ,AAuBL,YAAY,AAgBV,OAAO,CAvCZ,AAAA,QAAQ,AAwBL,kCAAkC,AAehC,OAAO,AAAC,CACP,MAAM,CAAI,KAA0B,CACpC,WAAW,ChE8sBqB,KAAI,CgE7sBpC,gBAAgB,ChEoDb,IAAI,CgEnDR,AA3CL,AAAA,QAAQ,AA8CL,cAAc,CA9CjB,AAAA,QAAQ,AA+CL,gCAAgC,AAAC,CAChC,WAAW,ChEusBuB,IAAI,CgEprBvC,AAnEH,AAAA,QAAQ,AA8CL,cAAc,AAIZ,QAAQ,CAlDb,AAAA,QAAQ,AA8CL,cAAc,AAKZ,OAAO,CAnDZ,AAAA,QAAQ,AA+CL,gCAAgC,AAG9B,QAAQ,CAlDb,AAAA,QAAQ,AA+CL,gCAAgC,AAI9B,OAAO,AAAC,CACP,GAAG,CAAE,GAAI,CACT,iBAAiB,CAAE,CAAE,CACtB,AAtDL,AAAA,QAAQ,AA8CL,cAAc,AAUZ,QAAQ,CAxDb,AAAA,QAAQ,AA+CL,gCAAgC,AAS9B,QAAQ,AAAC,CACR,IAAI,ChEisB6B,KAAoB,CgEhsBrD,UAAU,ChEgsBuB,KAAoB,CgE/rBrD,kBAAkB,ChEgsBc,gBAAO,CgE/rBxC,AA5DL,AAAA,QAAQ,AA8CL,cAAc,AAgBZ,OAAO,CA9DZ,AAAA,QAAQ,AA+CL,gCAAgC,AAe9B,OAAO,AAAC,CACP,IAAI,CAAI,KAA0B,CAClC,UAAU,CAAI,KAA0B,CACxC,kBAAkB,ChE6Bf,IAAI,CgE5BR,AAlEL,AAAA,QAAQ,AAqEL,eAAe,CArElB,AAAA,QAAQ,AAsEL,+BAA+B,AAAC,CAC/B,UAAU,ChEgrBwB,IAAI,CgEjpBvC,AAtGH,AAAA,QAAQ,AAqEL,eAAe,AAIb,QAAQ,CAzEb,AAAA,QAAQ,AAqEL,eAAe,AAKb,OAAO,CA1EZ,AAAA,QAAQ,AAsEL,+BAA+B,AAG7B,QAAQ,CAzEb,AAAA,QAAQ,AAsEL,+BAA+B,AAI7B,OAAO,AAAC,CACP,IAAI,CAAE,GAAI,CACV,gBAAgB,CAAE,CAAE,CACrB,AA7EL,AAAA,QAAQ,AAqEL,eAAe,AAUb,QAAQ,CA/Eb,AAAA,QAAQ,AAsEL,+BAA+B,AAS7B,QAAQ,AAAC,CACR,GAAG,ChE0qB8B,KAAoB,CgEzqBrD,WAAW,ChEyqBsB,KAAoB,CgExqBrD,mBAAmB,ChEyqBa,gBAAO,CgExqBxC,AAnFL,AAAA,QAAQ,AAqEL,eAAe,AAgBb,OAAO,CArFZ,AAAA,QAAQ,AAsEL,+BAA+B,AAe7B,OAAO,AAAC,CACP,GAAG,CAAI,KAA0B,CACjC,WAAW,ChEgqBqB,KAAI,CgE/pBpC,mBAAmB,ChEwpBa,OAAM,CgEvpBvC,AAzFL,AA4FkB,QA5FV,AAqEL,eAAe,CAuBd,cAAc,AAAA,QAAQ,CA5F1B,AA4FkB,QA5FV,AAsEL,+BAA+B,CAsB9B,cAAc,AAAA,QAAQ,AAAC,CACrB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,IAAI,CAAE,GAAI,CACV,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,WAAW,CAAE,KAAM,CACnB,OAAO,CAAE,EAAG,CACZ,aAAa,CAAE,GAAG,CAAC,KAAK,ChE4oBQ,OAAM,CgE3oBvC,AArGL,AAAA,QAAQ,AAwGL,aAAa,CAxGhB,AAAA,QAAQ,AAyGL,iCAAiC,AAAC,CACjC,WAAW,ChE6oBuB,KAAI,CgE1nBvC,AA7HH,AAAA,QAAQ,AAwGL,aAAa,AAIX,QAAQ,CA5Gb,AAAA,QAAQ,AAwGL,aAAa,AAKX,OAAO,CA7GZ,AAAA,QAAQ,AAyGL,iCAAiC,AAG/B,QAAQ,CA5Gb,AAAA,QAAQ,AAyGL,iCAAiC,AAI/B,OAAO,AAAC,CACP,GAAG,CAAE,GAAI,CACT,kBAAkB,CAAE,CAAE,CACvB,AAhHL,AAAA,QAAQ,AAwGL,aAAa,AAUX,QAAQ,CAlHb,AAAA,QAAQ,AAyGL,iCAAiC,AAS/B,QAAQ,AAAC,CACR,KAAK,ChEuoB4B,KAAoB,CgEtoBrD,UAAU,ChEsoBuB,KAAoB,CgEroBrD,iBAAiB,ChEsoBe,gBAAO,CgEroBxC,AAtHL,AAAA,QAAQ,AAwGL,aAAa,AAgBX,OAAO,CAxHZ,AAAA,QAAQ,AAyGL,iCAAiC,AAe/B,OAAO,AAAC,CACP,KAAK,CAAI,KAA0B,CACnC,UAAU,CAAI,KAA0B,CACxC,iBAAiB,ChE7Bd,IAAI,CgE8BR,AAML,AAAA,cAAc,AAAC,CACb,OAAO,ChE+mB6B,GAAG,CADH,IAAI,CgE7mBxC,aAAa,CAAE,CAAE,CACjB,SAAS,ChEsHM,IAAI,CgErHnB,gBAAgB,ChE0mBoB,OAAM,CgEzmB1C,aAAa,ChEkCA,GAAG,CgElCqB,KAAK,CAAC,OAAM,CrC7H/C,uBAAuB,CqC8HH,iBAAI,CrC7HxB,sBAAsB,CqC6HF,iBAAI,CAM3B,AAZD,AAAA,cAAc,AASX,MAAM,AAAC,CACN,OAAO,CAAE,IAAK,CACf,AAGH,AAAA,gBAAgB,AAAC,CACf,OAAO,ChEomB6B,GAAG,CADH,IAAI,CgElmBzC,AAOD,AAAQ,QAAA,AAAA,QAAQ,CAChB,AAAQ,QAAA,AAAA,OAAO,AAAC,CACd,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,YAAY,CAAE,WAAY,CAC1B,YAAY,CAAE,KAAM,CACrB,AAED,AAAQ,QAAA,AAAA,QAAQ,AAAC,CACf,OAAO,CAAE,EAAG,CACZ,YAAY,ChEqlByB,IAAoB,CgEplB1D,AACD,AAAQ,QAAA,AAAA,OAAO,AAAC,CACd,OAAO,CAAE,EAAG,CACZ,YAAY,ChE8kBwB,IAAI,CgE7kBzC,ACzKD,AAAA,SAAS,AAAC,CACR,QAAQ,CAAE,QAAS,CACpB,AAED,AAAA,eAAe,AAAC,CACd,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,QAAQ,CAAE,MAAO,CAClB,AAED,AAAA,cAAc,AAAC,CACb,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,IAAK,CACd,KAAK,CAAE,IAAK,CAOb,AlDnBC,MAAM,EAAL,oBAAC,EkDSJ,AAAA,cAAc,AAAC,C9DIT,UAAU,CHw5BgB,SAAS,CAAC,IAAG,CAAC,WAAW,CiEr5BrD,mBAAmB,CAAE,MAAO,CAC5B,WAAW,CAAE,MAAO,CAEvB,ClDZ0C,SAAC,EAA/B,SAAS,EAAE,oBAAW,EkDEnC,AAAA,cAAc,AAAC,C9DIT,UAAU,CHw5BgB,SAAS,CAAC,IAAG,CAAC,WAAW,CiEr5BrD,mBAAmB,CAAE,MAAO,CAC5B,WAAW,CAAE,MAAO,CAEvB,CAED,AAAc,cAAA,AAAA,OAAO,CACrB,AAAA,mBAAmB,CACnB,AAAA,mBAAmB,AAAC,CAClB,OAAO,CAAE,IAAK,CACf,AAED,AAAA,mBAAmB,CACnB,AAAA,mBAAmB,AAAC,CAClB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACR,AlD/BC,MAAM,EAAL,oBAAC,EkDmCF,AAAmB,mBAAA,AAAA,mBAAmB,CACtC,AAAmB,mBAAA,AAAA,oBAAoB,AAAC,CACtC,SAAS,CAAE,oBAAW,CACvB,AAED,AAAA,mBAAmB,CACnB,AAAO,OAAA,AAAA,oBAAoB,AAAC,CAC1B,SAAS,CAAE,uBAAW,CACvB,AAED,AAAA,mBAAmB,CACnB,AAAO,OAAA,AAAA,mBAAmB,AAAC,CACzB,SAAS,CAAE,wBAAW,CACvB,ClDzCwC,SAAC,EAA/B,SAAS,EAAE,oBAAW,EkD4BjC,AAAmB,mBAAA,AAAA,mBAAmB,CACtC,AAAmB,mBAAA,AAAA,oBAAoB,AAAC,CACtC,SAAS,CAAE,oBAAW,CACvB,AAED,AAAA,mBAAmB,CACnB,AAAO,OAAA,AAAA,oBAAoB,AAAC,CAC1B,SAAS,CAAE,uBAAW,CACvB,AAED,AAAA,mBAAmB,CACnB,AAAO,OAAA,AAAA,mBAAmB,AAAC,CACzB,SAAS,CAAE,wBAAW,CACvB,CAQH,AAAA,sBAAsB,CACtB,AAAA,sBAAsB,AAAC,CACrB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,MAAM,CAAE,CAAE,CAEV,OAAO,CAAE,IAAK,CACd,WAAW,CAAE,MAAO,CACpB,eAAe,CAAE,MAAO,CACxB,KAAK,CjEo1BuC,GAAG,CiEn1B/C,KAAK,CjE0BE,IAAI,CiEzBX,UAAU,CAAE,MAAO,CACnB,OAAO,CjEk1BqC,EAAE,CiEv0B/C,AAvBD,AAAA,sBAAsB,A5DtCjB,MAAM,C4DsCX,AAAA,sBAAsB,A5DrCjB,MAAM,C4DsCX,AAAA,sBAAsB,A5DvCjB,MAAM,C4DuCX,AAAA,sBAAsB,A5DtCjB,MAAM,AAAC,C4DuDR,KAAK,CjEkBA,IAAI,CiEjBT,eAAe,CAAE,IAAK,CACtB,OAAO,CAAE,CAAE,CACX,OAAO,CAAE,EAAG,C5DxDX,A4D2DL,AAAA,sBAAsB,AAAC,CACrB,IAAI,CAAE,CAAE,CACT,AACD,AAAA,sBAAsB,AAAC,CACrB,KAAK,CAAE,CAAE,CACV,AAGD,AAAA,2BAA2B,CAC3B,AAAA,2BAA2B,AAAC,CAC1B,OAAO,CAAE,YAAa,CACtB,KAAK,CjEq0BuC,IAAI,CiEp0BhD,MAAM,CjEo0BsC,IAAI,CiEn0BhD,UAAU,CAAE,mCAAoC,CAChD,eAAe,CAAE,SAAU,CAC5B,AACD,AAAA,2BAA2B,AAAC,CAC1B,gBAAgB,CjE9BN,2LAAS,CiE+BpB,AACD,AAAA,2BAA2B,AAAC,CAC1B,gBAAgB,CjEjCN,6LAAS,CiEkCpB,AAQD,AAAA,oBAAoB,AAAC,CACnB,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,IAAK,CACb,IAAI,CAAE,CAAE,CACR,OAAO,CAAE,EAAG,CACZ,OAAO,CAAE,IAAK,CACd,eAAe,CAAE,MAAO,CACxB,YAAY,CAAE,CAAE,CAEhB,YAAY,CjE8xBgC,GAAG,CiE7xB/C,WAAW,CjE6xBiC,GAAG,CiE5xB/C,UAAU,CAAE,IAAK,CAqClB,AAjDD,AAcE,oBAdkB,CAclB,EAAE,AAAC,CACD,QAAQ,CAAE,QAAS,CACnB,IAAI,CAAE,QAAS,CACf,SAAS,CjE0xBiC,IAAI,CiEzxB9C,MAAM,CjE0xBoC,GAAG,CiEzxB7C,YAAY,CjE0xB8B,GAAG,CiEzxB7C,WAAW,CjEyxB+B,GAAG,CiExxB7C,WAAW,CAAE,MAAO,CACpB,MAAM,CAAE,OAAQ,CAChB,gBAAgB,CjExCX,qBAAI,CiE6DV,AA5CH,AAcE,oBAdkB,CAclB,EAAE,AAYC,QAAQ,AAAC,CACR,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,KAAM,CACX,IAAI,CAAE,CAAE,CACR,OAAO,CAAE,YAAa,CACtB,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,OAAO,CAAE,EAAG,CACb,AAlCL,AAcE,oBAdkB,CAclB,EAAE,AAqBC,OAAO,AAAC,CACP,QAAQ,CAAE,QAAS,CACnB,MAAM,CAAE,KAAM,CACd,IAAI,CAAE,CAAE,CACR,OAAO,CAAE,YAAa,CACtB,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,OAAO,CAAE,EAAG,CACb,AA3CL,AA8CE,oBA9CkB,CA8ClB,OAAO,AAAC,CACN,gBAAgB,CjEhEX,IAAI,CiEiEV,AAQH,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAI,GAAI,CACb,MAAM,CAAE,IAAK,CACb,IAAI,CAAI,GAAI,CACZ,OAAO,CAAE,EAAG,CACZ,WAAW,CAAE,IAAK,CAClB,cAAc,CAAE,IAAK,CACrB,KAAK,CjEjFE,IAAI,CiEkFX,UAAU,CAAE,MAAO,CACpB,AEjLD,AAAA,eAAe,AAAI,CAAE,cAAc,CAAE,mBAAoB,CAAI,AAC7D,AAAA,UAAU,AAAS,CAAE,cAAc,CAAE,cAAe,CAAI,AACxD,AAAA,aAAa,AAAM,CAAE,cAAc,CAAE,iBAAkB,CAAI,AAC3D,AAAA,aAAa,AAAM,CAAE,cAAc,CAAE,iBAAkB,CAAI,AAC3D,AAAA,kBAAkB,AAAC,CAAE,cAAc,CAAE,sBAAuB,CAAI,AAChE,AAAA,eAAe,AAAI,CAAE,cAAc,CAAE,mBAAoB,CAAI,ACD7D,AAAA,SAAS,AAAC,CACR,gBAAgB,CAAE,OAAM,CACzB,A1CHC,AAAA,WAAW,AAAX,CACE,gBAAgB,C1BgGX,OAAO,C0BhGa,UAAU,CACpC,AACD,AAAC,CAAA,AAAA,WAAW,ArBcT,MAAM,CqBdT,AAAC,CAAA,AAAA,WAAW,ArBeT,MAAM,AAAC,CqBbN,gBAAgB,CAAE,OAAM,CAAc,UAAU,CrBejD,AqBpBH,AAAA,WAAW,AAAX,CACE,gBAAgB,C1B+FX,OAAO,C0B/Fa,UAAU,CACpC,AACD,AAAC,CAAA,AAAA,WAAW,ArBcT,MAAM,CqBdT,AAAC,CAAA,AAAA,WAAW,ArBeT,MAAM,AAAC,CqBbN,gBAAgB,CAAE,OAAM,CAAc,UAAU,CrBejD,AqBpBH,AAAA,QAAQ,AAAR,CACE,gBAAgB,C1BiGX,OAAO,C0BjGa,UAAU,CACpC,AACD,AAAC,CAAA,AAAA,QAAQ,ArBcN,MAAM,CqBdT,AAAC,CAAA,AAAA,QAAQ,ArBeN,MAAM,AAAC,CqBbN,gBAAgB,CAAE,OAAM,CAAc,UAAU,CrBejD,AqBpBH,AAAA,WAAW,AAAX,CACE,gBAAgB,C1B6FX,OAAO,C0B7Fa,UAAU,CACpC,AACD,AAAC,CAAA,AAAA,WAAW,ArBcT,MAAM,CqBdT,AAAC,CAAA,AAAA,WAAW,ArBeT,MAAM,AAAC,CqBbN,gBAAgB,CAAE,OAAM,CAAc,UAAU,CrBejD,AqBpBH,AAAA,UAAU,AAAV,CACE,gBAAgB,C1B4FX,OAAO,C0B5Fa,UAAU,CACpC,AACD,AAAC,CAAA,AAAA,UAAU,ArBcR,MAAM,CqBdT,AAAC,CAAA,AAAA,UAAU,ArBeR,MAAM,AAAC,CqBbN,gBAAgB,CAAE,OAAM,CAAc,UAAU,CrBejD,AqBpBH,AAAA,WAAW,AAAX,CACE,gBAAgB,C1BsGQ,OAAO,C0BtGN,UAAU,CACpC,AACD,AAAC,CAAA,AAAA,WAAW,ArBcT,MAAM,CqBdT,AAAC,CAAA,AAAA,WAAW,ArBeT,MAAM,AAAC,CqBbN,gBAAgB,CAAE,OAAM,CAAc,UAAU,CrBejD,AgEnBL,AAAA,SAAS,AAAQ,CAAE,MAAM,CAAE,YAAa,CAAI,AAC5C,AAAA,aAAa,AAAI,CAAE,UAAU,CAAE,YAAa,CAAI,AAChD,AAAA,eAAe,AAAE,CAAE,YAAY,CAAE,YAAa,CAAI,AAClD,AAAA,gBAAgB,AAAC,CAAE,aAAa,CAAE,YAAa,CAAI,AACnD,AAAA,cAAc,AAAG,CAAE,WAAW,CAAE,YAAa,CAAI,AAMjD,AAAA,QAAQ,AAAC,C1CVL,aAAa,C3B4TQ,MAAM,CqEhT9B,AACD,AAAA,YAAY,AAAC,C1CPT,uBAAuB,C3BsTF,MAAM,C2BrT3B,sBAAsB,C3BqTD,MAAM,CqE7S9B,AACD,AAAA,cAAc,AAAC,C1CHX,0BAA0B,C3B+SL,MAAM,C2B9S3B,uBAAuB,C3B8SF,MAAM,CqE1S9B,AACD,AAAA,eAAe,AAAC,C1CCZ,0BAA0B,C3BwSL,MAAM,C2BvS3B,yBAAyB,C3BuSJ,MAAM,CqEvS9B,AACD,AAAA,aAAa,AAAC,C1CKV,yBAAyB,C3BiSJ,MAAM,C2BhS3B,sBAAsB,C3BgSD,MAAM,CqEpS9B,AAED,AAAA,eAAe,AAAC,CACd,aAAa,CAAE,GAAI,CACpB,AAED,AAAA,UAAU,AAAC,CACT,aAAa,CAAE,CAAE,CAClB,ACpCD,AAAA,SAAS,AzCCN,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,A0CGC,AAAA,OAAO,AAAP,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,SAAS,AAAT,CAAE,OAAO,CAAE,iBAAkB,CAAI,AACjC,AAAA,eAAe,AAAf,CAAE,OAAO,CAAE,uBAAwB,CAAI,AACvC,AAAA,QAAQ,AAAR,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,QAAQ,AAAR,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,aAAa,AAAb,CAAE,OAAO,CAAE,qBAAsB,CAAI,AACrC,AAAA,OAAO,AAAP,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,cAAc,AAAd,CAAE,OAAO,CAAE,sBAAuB,CAAI,AnEyCtC,MAAM,EAAL,SAAS,EAAE,KAAK,EmEhDjB,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,YAAY,AAAZ,CAAE,OAAO,CAAE,iBAAkB,CAAI,AACjC,AAAA,kBAAkB,AAAlB,CAAE,OAAO,CAAE,uBAAwB,CAAI,AACvC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,gBAAgB,AAAhB,CAAE,OAAO,CAAE,qBAAsB,CAAI,AACrC,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,iBAAiB,AAAjB,CAAE,OAAO,CAAE,sBAAuB,CAAI,CnEyCtC,MAAM,EAAL,SAAS,EAAE,KAAK,EmEhDjB,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,YAAY,AAAZ,CAAE,OAAO,CAAE,iBAAkB,CAAI,AACjC,AAAA,kBAAkB,AAAlB,CAAE,OAAO,CAAE,uBAAwB,CAAI,AACvC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,gBAAgB,AAAhB,CAAE,OAAO,CAAE,qBAAsB,CAAI,AACrC,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,iBAAiB,AAAjB,CAAE,OAAO,CAAE,sBAAuB,CAAI,CnEyCtC,MAAM,EAAL,SAAS,EAAE,KAAK,EmEhDjB,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,YAAY,AAAZ,CAAE,OAAO,CAAE,iBAAkB,CAAI,AACjC,AAAA,kBAAkB,AAAlB,CAAE,OAAO,CAAE,uBAAwB,CAAI,AACvC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,gBAAgB,AAAhB,CAAE,OAAO,CAAE,qBAAsB,CAAI,AACrC,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,iBAAiB,AAAjB,CAAE,OAAO,CAAE,sBAAuB,CAAI,CnEyCtC,MAAM,EAAL,SAAS,EAAE,MAAM,EmEhDlB,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,YAAY,AAAZ,CAAE,OAAO,CAAE,iBAAkB,CAAI,AACjC,AAAA,kBAAkB,AAAlB,CAAE,OAAO,CAAE,uBAAwB,CAAI,AACvC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,WAAW,AAAX,CAAE,OAAO,CAAE,gBAAiB,CAAI,AAChC,AAAA,gBAAgB,AAAhB,CAAE,OAAO,CAAE,qBAAsB,CAAI,AACrC,AAAA,UAAU,AAAV,CAAE,OAAO,CAAE,eAAgB,CAAI,AAC/B,AAAA,iBAAiB,AAAjB,CAAE,OAAO,CAAE,sBAAuB,CAAI,CCPtC,AAAA,WAAW,AAAX,CAAE,KAAK,CAAE,EAAG,CAAI,AAChB,AAAA,UAAU,AAAV,CAAE,KAAK,CAAE,CAAE,CAAI,AACf,AAAA,eAAe,AAAf,CAAE,KAAK,CAAE,CAAE,CAAI,AAEf,AAAA,SAAS,AAAT,CAAE,cAAc,CAAE,cAAe,CAAI,AACrC,AAAA,YAAY,AAAZ,CAAE,cAAc,CAAE,iBAAkB,CAAI,AACxC,AAAA,iBAAiB,AAAjB,CAAE,cAAc,CAAE,sBAAuB,CAAI,AAC7C,AAAA,oBAAoB,AAApB,CAAE,cAAc,CAAE,yBAA0B,CAAI,AAEhD,AAAA,UAAU,AAAV,CAAE,SAAS,CAAE,eAAgB,CAAI,AACjC,AAAA,YAAY,AAAZ,CAAE,SAAS,CAAE,iBAAkB,CAAI,AACnC,AAAA,kBAAkB,AAAlB,CAAE,SAAS,CAAE,uBAAwB,CAAI,AAEzC,AAAA,sBAAsB,AAAtB,CAAE,eAAe,CAAE,qBAAsB,CAAI,AAC7C,AAAA,oBAAoB,AAApB,CAAE,eAAe,CAAE,mBAAoB,CAAI,AAC3C,AAAA,uBAAuB,AAAvB,CAAE,eAAe,CAAE,iBAAkB,CAAI,AACzC,AAAA,wBAAwB,AAAxB,CAAE,eAAe,CAAE,wBAAyB,CAAI,AAChD,AAAA,uBAAuB,AAAvB,CAAE,eAAe,CAAE,uBAAwB,CAAI,AAE/C,AAAA,kBAAkB,AAAlB,CAAE,WAAW,CAAE,qBAAsB,CAAI,AACzC,AAAA,gBAAgB,AAAhB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,mBAAmB,AAAnB,CAAE,WAAW,CAAE,iBAAkB,CAAI,AACrC,AAAA,qBAAqB,AAArB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,oBAAoB,AAApB,CAAE,WAAW,CAAE,kBAAmB,CAAI,AAEtC,AAAA,oBAAoB,AAApB,CAAE,aAAa,CAAE,qBAAsB,CAAI,AAC3C,AAAA,kBAAkB,AAAlB,CAAE,aAAa,CAAE,mBAAoB,CAAI,AACzC,AAAA,qBAAqB,AAArB,CAAE,aAAa,CAAE,iBAAkB,CAAI,AACvC,AAAA,sBAAsB,AAAtB,CAAE,aAAa,CAAE,wBAAyB,CAAI,AAC9C,AAAA,qBAAqB,AAArB,CAAE,aAAa,CAAE,uBAAwB,CAAI,AAC7C,AAAA,sBAAsB,AAAtB,CAAE,aAAa,CAAE,kBAAmB,CAAI,AAExC,AAAA,gBAAgB,AAAhB,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,iBAAiB,AAAjB,CAAE,UAAU,CAAE,qBAAsB,CAAI,AACxC,AAAA,eAAe,AAAf,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,kBAAkB,AAAlB,CAAE,UAAU,CAAE,iBAAkB,CAAI,AACpC,AAAA,oBAAoB,AAApB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,mBAAmB,AAAnB,CAAE,UAAU,CAAE,kBAAmB,CAAI,ApEWrC,MAAM,EAAL,SAAS,EAAE,KAAK,EoEhDjB,AAAA,cAAc,AAAd,CAAE,KAAK,CAAE,EAAG,CAAI,AAChB,AAAA,aAAa,AAAb,CAAE,KAAK,CAAE,CAAE,CAAI,AACf,AAAA,kBAAkB,AAAlB,CAAE,KAAK,CAAE,CAAE,CAAI,AAEf,AAAA,YAAY,AAAZ,CAAE,cAAc,CAAE,cAAe,CAAI,AACrC,AAAA,eAAe,AAAf,CAAE,cAAc,CAAE,iBAAkB,CAAI,AACxC,AAAA,oBAAoB,AAApB,CAAE,cAAc,CAAE,sBAAuB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,cAAc,CAAE,yBAA0B,CAAI,AAEhD,AAAA,aAAa,AAAb,CAAE,SAAS,CAAE,eAAgB,CAAI,AACjC,AAAA,eAAe,AAAf,CAAE,SAAS,CAAE,iBAAkB,CAAI,AACnC,AAAA,qBAAqB,AAArB,CAAE,SAAS,CAAE,uBAAwB,CAAI,AAEzC,AAAA,yBAAyB,AAAzB,CAAE,eAAe,CAAE,qBAAsB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,eAAe,CAAE,mBAAoB,CAAI,AAC3C,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,iBAAkB,CAAI,AACzC,AAAA,2BAA2B,AAA3B,CAAE,eAAe,CAAE,wBAAyB,CAAI,AAChD,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,uBAAwB,CAAI,AAE/C,AAAA,qBAAqB,AAArB,CAAE,WAAW,CAAE,qBAAsB,CAAI,AACzC,AAAA,mBAAmB,AAAnB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,sBAAsB,AAAtB,CAAE,WAAW,CAAE,iBAAkB,CAAI,AACrC,AAAA,wBAAwB,AAAxB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,uBAAuB,AAAvB,CAAE,WAAW,CAAE,kBAAmB,CAAI,AAEtC,AAAA,uBAAuB,AAAvB,CAAE,aAAa,CAAE,qBAAsB,CAAI,AAC3C,AAAA,qBAAqB,AAArB,CAAE,aAAa,CAAE,mBAAoB,CAAI,AACzC,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,iBAAkB,CAAI,AACvC,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,wBAAyB,CAAI,AAC9C,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,uBAAwB,CAAI,AAC7C,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,kBAAmB,CAAI,AAExC,AAAA,mBAAmB,AAAnB,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,oBAAoB,AAApB,CAAE,UAAU,CAAE,qBAAsB,CAAI,AACxC,AAAA,kBAAkB,AAAlB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,qBAAqB,AAArB,CAAE,UAAU,CAAE,iBAAkB,CAAI,AACpC,AAAA,uBAAuB,AAAvB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,sBAAsB,AAAtB,CAAE,UAAU,CAAE,kBAAmB,CAAI,CpEWrC,MAAM,EAAL,SAAS,EAAE,KAAK,EoEhDjB,AAAA,cAAc,AAAd,CAAE,KAAK,CAAE,EAAG,CAAI,AAChB,AAAA,aAAa,AAAb,CAAE,KAAK,CAAE,CAAE,CAAI,AACf,AAAA,kBAAkB,AAAlB,CAAE,KAAK,CAAE,CAAE,CAAI,AAEf,AAAA,YAAY,AAAZ,CAAE,cAAc,CAAE,cAAe,CAAI,AACrC,AAAA,eAAe,AAAf,CAAE,cAAc,CAAE,iBAAkB,CAAI,AACxC,AAAA,oBAAoB,AAApB,CAAE,cAAc,CAAE,sBAAuB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,cAAc,CAAE,yBAA0B,CAAI,AAEhD,AAAA,aAAa,AAAb,CAAE,SAAS,CAAE,eAAgB,CAAI,AACjC,AAAA,eAAe,AAAf,CAAE,SAAS,CAAE,iBAAkB,CAAI,AACnC,AAAA,qBAAqB,AAArB,CAAE,SAAS,CAAE,uBAAwB,CAAI,AAEzC,AAAA,yBAAyB,AAAzB,CAAE,eAAe,CAAE,qBAAsB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,eAAe,CAAE,mBAAoB,CAAI,AAC3C,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,iBAAkB,CAAI,AACzC,AAAA,2BAA2B,AAA3B,CAAE,eAAe,CAAE,wBAAyB,CAAI,AAChD,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,uBAAwB,CAAI,AAE/C,AAAA,qBAAqB,AAArB,CAAE,WAAW,CAAE,qBAAsB,CAAI,AACzC,AAAA,mBAAmB,AAAnB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,sBAAsB,AAAtB,CAAE,WAAW,CAAE,iBAAkB,CAAI,AACrC,AAAA,wBAAwB,AAAxB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,uBAAuB,AAAvB,CAAE,WAAW,CAAE,kBAAmB,CAAI,AAEtC,AAAA,uBAAuB,AAAvB,CAAE,aAAa,CAAE,qBAAsB,CAAI,AAC3C,AAAA,qBAAqB,AAArB,CAAE,aAAa,CAAE,mBAAoB,CAAI,AACzC,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,iBAAkB,CAAI,AACvC,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,wBAAyB,CAAI,AAC9C,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,uBAAwB,CAAI,AAC7C,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,kBAAmB,CAAI,AAExC,AAAA,mBAAmB,AAAnB,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,oBAAoB,AAApB,CAAE,UAAU,CAAE,qBAAsB,CAAI,AACxC,AAAA,kBAAkB,AAAlB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,qBAAqB,AAArB,CAAE,UAAU,CAAE,iBAAkB,CAAI,AACpC,AAAA,uBAAuB,AAAvB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,sBAAsB,AAAtB,CAAE,UAAU,CAAE,kBAAmB,CAAI,CpEWrC,MAAM,EAAL,SAAS,EAAE,KAAK,EoEhDjB,AAAA,cAAc,AAAd,CAAE,KAAK,CAAE,EAAG,CAAI,AAChB,AAAA,aAAa,AAAb,CAAE,KAAK,CAAE,CAAE,CAAI,AACf,AAAA,kBAAkB,AAAlB,CAAE,KAAK,CAAE,CAAE,CAAI,AAEf,AAAA,YAAY,AAAZ,CAAE,cAAc,CAAE,cAAe,CAAI,AACrC,AAAA,eAAe,AAAf,CAAE,cAAc,CAAE,iBAAkB,CAAI,AACxC,AAAA,oBAAoB,AAApB,CAAE,cAAc,CAAE,sBAAuB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,cAAc,CAAE,yBAA0B,CAAI,AAEhD,AAAA,aAAa,AAAb,CAAE,SAAS,CAAE,eAAgB,CAAI,AACjC,AAAA,eAAe,AAAf,CAAE,SAAS,CAAE,iBAAkB,CAAI,AACnC,AAAA,qBAAqB,AAArB,CAAE,SAAS,CAAE,uBAAwB,CAAI,AAEzC,AAAA,yBAAyB,AAAzB,CAAE,eAAe,CAAE,qBAAsB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,eAAe,CAAE,mBAAoB,CAAI,AAC3C,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,iBAAkB,CAAI,AACzC,AAAA,2BAA2B,AAA3B,CAAE,eAAe,CAAE,wBAAyB,CAAI,AAChD,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,uBAAwB,CAAI,AAE/C,AAAA,qBAAqB,AAArB,CAAE,WAAW,CAAE,qBAAsB,CAAI,AACzC,AAAA,mBAAmB,AAAnB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,sBAAsB,AAAtB,CAAE,WAAW,CAAE,iBAAkB,CAAI,AACrC,AAAA,wBAAwB,AAAxB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,uBAAuB,AAAvB,CAAE,WAAW,CAAE,kBAAmB,CAAI,AAEtC,AAAA,uBAAuB,AAAvB,CAAE,aAAa,CAAE,qBAAsB,CAAI,AAC3C,AAAA,qBAAqB,AAArB,CAAE,aAAa,CAAE,mBAAoB,CAAI,AACzC,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,iBAAkB,CAAI,AACvC,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,wBAAyB,CAAI,AAC9C,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,uBAAwB,CAAI,AAC7C,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,kBAAmB,CAAI,AAExC,AAAA,mBAAmB,AAAnB,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,oBAAoB,AAApB,CAAE,UAAU,CAAE,qBAAsB,CAAI,AACxC,AAAA,kBAAkB,AAAlB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,qBAAqB,AAArB,CAAE,UAAU,CAAE,iBAAkB,CAAI,AACpC,AAAA,uBAAuB,AAAvB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,sBAAsB,AAAtB,CAAE,UAAU,CAAE,kBAAmB,CAAI,CpEWrC,MAAM,EAAL,SAAS,EAAE,MAAM,EoEhDlB,AAAA,cAAc,AAAd,CAAE,KAAK,CAAE,EAAG,CAAI,AAChB,AAAA,aAAa,AAAb,CAAE,KAAK,CAAE,CAAE,CAAI,AACf,AAAA,kBAAkB,AAAlB,CAAE,KAAK,CAAE,CAAE,CAAI,AAEf,AAAA,YAAY,AAAZ,CAAE,cAAc,CAAE,cAAe,CAAI,AACrC,AAAA,eAAe,AAAf,CAAE,cAAc,CAAE,iBAAkB,CAAI,AACxC,AAAA,oBAAoB,AAApB,CAAE,cAAc,CAAE,sBAAuB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,cAAc,CAAE,yBAA0B,CAAI,AAEhD,AAAA,aAAa,AAAb,CAAE,SAAS,CAAE,eAAgB,CAAI,AACjC,AAAA,eAAe,AAAf,CAAE,SAAS,CAAE,iBAAkB,CAAI,AACnC,AAAA,qBAAqB,AAArB,CAAE,SAAS,CAAE,uBAAwB,CAAI,AAEzC,AAAA,yBAAyB,AAAzB,CAAE,eAAe,CAAE,qBAAsB,CAAI,AAC7C,AAAA,uBAAuB,AAAvB,CAAE,eAAe,CAAE,mBAAoB,CAAI,AAC3C,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,iBAAkB,CAAI,AACzC,AAAA,2BAA2B,AAA3B,CAAE,eAAe,CAAE,wBAAyB,CAAI,AAChD,AAAA,0BAA0B,AAA1B,CAAE,eAAe,CAAE,uBAAwB,CAAI,AAE/C,AAAA,qBAAqB,AAArB,CAAE,WAAW,CAAE,qBAAsB,CAAI,AACzC,AAAA,mBAAmB,AAAnB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,sBAAsB,AAAtB,CAAE,WAAW,CAAE,iBAAkB,CAAI,AACrC,AAAA,wBAAwB,AAAxB,CAAE,WAAW,CAAE,mBAAoB,CAAI,AACvC,AAAA,uBAAuB,AAAvB,CAAE,WAAW,CAAE,kBAAmB,CAAI,AAEtC,AAAA,uBAAuB,AAAvB,CAAE,aAAa,CAAE,qBAAsB,CAAI,AAC3C,AAAA,qBAAqB,AAArB,CAAE,aAAa,CAAE,mBAAoB,CAAI,AACzC,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,iBAAkB,CAAI,AACvC,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,wBAAyB,CAAI,AAC9C,AAAA,wBAAwB,AAAxB,CAAE,aAAa,CAAE,uBAAwB,CAAI,AAC7C,AAAA,yBAAyB,AAAzB,CAAE,aAAa,CAAE,kBAAmB,CAAI,AAExC,AAAA,mBAAmB,AAAnB,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,oBAAoB,AAApB,CAAE,UAAU,CAAE,qBAAsB,CAAI,AACxC,AAAA,kBAAkB,AAAlB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,qBAAqB,AAArB,CAAE,UAAU,CAAE,iBAAkB,CAAI,AACpC,AAAA,uBAAuB,AAAvB,CAAE,UAAU,CAAE,mBAAoB,CAAI,AACtC,AAAA,sBAAsB,AAAtB,CAAE,UAAU,CAAE,kBAAmB,CAAI,CCzCrC,AAAA,WAAW,AAAX,CzCHF,KAAK,CAAE,eAAgB,CyCGI,AACzB,AAAA,YAAY,AAAZ,CzCDF,KAAK,CAAE,gBAAiB,CyCCI,AAC1B,AAAA,WAAW,AAAX,CzCCF,KAAK,CAAE,eAAgB,CyCDI,ArEkDzB,MAAM,EAAL,SAAS,EAAE,KAAK,EqEpDjB,AAAA,cAAc,AAAd,CzCHF,KAAK,CAAE,eAAgB,CyCGI,AACzB,AAAA,eAAe,AAAf,CzCDF,KAAK,CAAE,gBAAiB,CyCCI,AAC1B,AAAA,cAAc,AAAd,CzCCF,KAAK,CAAE,eAAgB,CyCDI,CrEkDzB,MAAM,EAAL,SAAS,EAAE,KAAK,EqEpDjB,AAAA,cAAc,AAAd,CzCHF,KAAK,CAAE,eAAgB,CyCGI,AACzB,AAAA,eAAe,AAAf,CzCDF,KAAK,CAAE,gBAAiB,CyCCI,AAC1B,AAAA,cAAc,AAAd,CzCCF,KAAK,CAAE,eAAgB,CyCDI,CrEkDzB,MAAM,EAAL,SAAS,EAAE,KAAK,EqEpDjB,AAAA,cAAc,AAAd,CzCHF,KAAK,CAAE,eAAgB,CyCGI,AACzB,AAAA,eAAe,AAAf,CzCDF,KAAK,CAAE,gBAAiB,CyCCI,AAC1B,AAAA,cAAc,AAAd,CzCCF,KAAK,CAAE,eAAgB,CyCDI,CrEkDzB,MAAM,EAAL,SAAS,EAAE,MAAM,EqEpDlB,AAAA,cAAc,AAAd,CzCHF,KAAK,CAAE,eAAgB,CyCGI,AACzB,AAAA,eAAe,AAAf,CzCDF,KAAK,CAAE,gBAAiB,CyCCI,AAC1B,AAAA,cAAc,AAAd,CzCCF,KAAK,CAAE,eAAgB,CyCDI,CCJ7B,AAAA,UAAU,AAAC,CACT,QAAQ,CAAE,KAAM,CAChB,GAAG,CAAE,CAAE,CACP,KAAK,CAAE,CAAE,CACT,IAAI,CAAE,CAAE,CACR,OAAO,C1E0kBmB,IAAI,C0EzkB/B,AAED,AAAA,aAAa,AAAC,CACZ,QAAQ,CAAE,KAAM,CAChB,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,CAAE,CACR,OAAO,C1EkkBmB,IAAI,C0EjkB/B,AAED,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,MAAO,CACjB,GAAG,CAAE,CAAE,CACP,OAAO,C1E6jBmB,IAAI,C0E5jB/B,AClBD,AAAA,QAAQ,AAAC,ClECP,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,GAAI,CACX,MAAM,CAAE,GAAI,CACZ,OAAO,CAAE,CAAE,CACX,MAAM,CAAE,IAAK,CACb,QAAQ,CAAE,MAAO,CACjB,IAAI,CAAE,gBAAI,CACV,MAAM,CAAE,CAAE,CkENX,AAED,AAAA,kBAAkB,AlEcf,OAAO,CkEdV,AAAA,kBAAkB,AlEef,MAAM,AAAC,CACN,QAAQ,CAAE,MAAO,CACjB,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,MAAM,CAAE,CAAE,CACV,QAAQ,CAAE,OAAQ,CAClB,IAAI,CAAE,IAAK,CACZ,AmE1BC,AAAA,KAAK,AAAL,CAAE,KAAQ,C5EyKR,GAAG,C4EzKe,UAAU,CAAI,AAAlC,AAAA,KAAK,AAAL,CAAE,KAAQ,C5E0KR,GAAG,C4E1Ke,UAAU,CAAI,AAAlC,AAAA,KAAK,AAAL,CAAE,KAAQ,C5E2KR,GAAG,C4E3Ke,UAAU,CAAI,AAAlC,AAAA,MAAM,AAAN,CAAE,KAAQ,C5E4KP,IAAI,C4E5Ka,UAAU,CAAI,AAAlC,AAAA,KAAK,AAAL,CAAE,MAAQ,C5EyKR,GAAG,C4EzKe,UAAU,CAAI,AAAlC,AAAA,KAAK,AAAL,CAAE,MAAQ,C5E0KR,GAAG,C4E1Ke,UAAU,CAAI,AAAlC,AAAA,KAAK,AAAL,CAAE,MAAQ,C5E2KR,GAAG,C4E3Ke,UAAU,CAAI,AAAlC,AAAA,MAAM,AAAN,CAAE,MAAQ,C5E4KP,IAAI,C4E5Ka,UAAU,CAAI,AAItC,AAAA,OAAO,AAAC,CAAE,SAAS,CAAE,eAAgB,CAAI,AACzC,AAAA,OAAO,AAAC,CAAE,UAAU,CAAE,eAAgB,CAAI,ACElC,AAAA,IAAI,AAAJ,CAAE,MAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,UAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,YAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,aAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,WAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,YAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,WAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,UAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,aAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,MAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,UAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,YAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,aAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,WAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,YAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,WAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,UAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,aAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,MAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,UAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,YAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,aAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,WAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,YAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,WAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,UAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,aAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,MAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,UAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,YAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,aAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,WAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,YAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,WAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,UAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,aAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,MAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,UAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,YAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,aAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,WAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,YAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,WAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,UAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,aAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,MAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,UAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,YAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,aAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,WAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,YAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,WAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,UAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,aAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,OAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,WAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,aAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,cAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,YAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,aAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,YAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,WAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,cAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,OAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,WAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,aAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,cAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,YAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,aAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,YAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,WAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,cAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,OAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,WAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,aAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,cAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,YAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,aAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,YAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,WAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,cAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,OAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,WAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,aAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,cAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,YAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,aAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,YAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,WAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,cAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,OAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,WAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,aAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,cAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,YAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,aAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,YAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,WAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,cAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,IAAI,AAAJ,CAAE,OAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,KAAK,AAAL,CAAE,WAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,KAAK,AAAL,CAAE,aAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,KAAK,AAAL,CAAE,cAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,KAAK,AAAL,CAAE,YAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,KAAK,AAAL,CACE,aAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,YAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,KAAK,AAAL,CACE,WAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,cAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAKL,AAAA,OAAO,AAAP,CAAE,MAAM,CAAS,eAAgB,CAAI,AACrC,AAAA,QAAQ,AAAR,CAAE,UAAU,CAAK,eAAgB,CAAI,AACrC,AAAA,QAAQ,AAAR,CAAE,YAAY,CAAG,eAAgB,CAAI,AACrC,AAAA,QAAQ,AAAR,CAAE,aAAa,CAAE,eAAgB,CAAI,AACrC,AAAA,QAAQ,AAAR,CAAE,WAAW,CAAI,eAAgB,CAAI,AACrC,AAAA,QAAQ,AAAR,CACE,YAAY,CAAE,eAAgB,CAC9B,WAAW,CAAG,eAAgB,CAC/B,AACD,AAAA,QAAQ,AAAR,CACE,UAAU,CAAK,eAAgB,CAC/B,aAAa,CAAE,eAAgB,CAChC,AzEgBD,MAAM,EAAL,SAAS,EAAE,KAAK,EyE7Cb,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,WAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,aAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,WAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,aAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,WAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,aAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,WAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,aAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,WAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,aAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,WAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,aAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,YAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,cAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,YAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,cAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,YAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,cAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,YAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,cAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,YAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,cAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,YAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,cAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAKL,AAAA,UAAU,AAAV,CAAE,MAAM,CAAS,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,UAAU,CAAK,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,YAAY,CAAG,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,aAAa,CAAE,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,WAAW,CAAI,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CACE,YAAY,CAAE,eAAgB,CAC9B,WAAW,CAAG,eAAgB,CAC/B,AACD,AAAA,WAAW,AAAX,CACE,UAAU,CAAK,eAAgB,CAC/B,aAAa,CAAE,eAAgB,CAChC,CzEgBD,MAAM,EAAL,SAAS,EAAE,KAAK,EyE7Cb,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,WAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,aAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,WAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,aAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,WAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,aAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,WAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,aAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,WAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,aAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,WAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,aAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,YAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,cAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,YAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,cAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,YAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,cAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,YAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,cAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,YAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,cAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,YAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,cAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAKL,AAAA,UAAU,AAAV,CAAE,MAAM,CAAS,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,UAAU,CAAK,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,YAAY,CAAG,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,aAAa,CAAE,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,WAAW,CAAI,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CACE,YAAY,CAAE,eAAgB,CAC9B,WAAW,CAAG,eAAgB,CAC/B,AACD,AAAA,WAAW,AAAX,CACE,UAAU,CAAK,eAAgB,CAC/B,aAAa,CAAE,eAAgB,CAChC,CzEgBD,MAAM,EAAL,SAAS,EAAE,KAAK,EyE7Cb,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,WAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,aAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,WAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,aAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,WAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,aAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,WAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,aAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,WAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,aAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,WAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,aAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,YAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,cAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,YAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,cAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,YAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,cAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,YAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,cAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,YAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,cAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,YAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,cAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAKL,AAAA,UAAU,AAAV,CAAE,MAAM,CAAS,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,UAAU,CAAK,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,YAAY,CAAG,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,aAAa,CAAE,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,WAAW,CAAI,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CACE,YAAY,CAAE,eAAgB,CAC9B,WAAW,CAAG,eAAgB,CAC/B,AACD,AAAA,WAAW,AAAX,CACE,UAAU,CAAK,eAAgB,CAC/B,aAAa,CAAE,eAAgB,CAChC,CzEgBD,MAAM,EAAL,SAAS,EAAE,MAAM,EyE7Cd,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,WAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,aAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,WAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,aAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,WAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,aAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,WAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,aAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,WAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,aAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,MAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,UAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,YAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,aAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,WAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,YAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,WAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,UAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,aAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuIX,CAAC,CADD,CAAC,C6EtIuC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsIf,CAAC,C6EtIiC,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoIjB,CAAC,C6EpImC,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoIlB,CAAC,C6EpIoC,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkIhB,CAAC,C6ElIkC,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgIjB,CAAC,C6EhIkC,UAAU,CAC1C,YAAa,C7E+HhB,CAAC,C6E/HiC,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Hf,CAAC,C6E7HiC,UAAU,CACzC,cAAe,C7E4HlB,CAAC,C6E5HoC,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2IV,MAAS,CADT,MAAS,C6E1I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Id,MAAS,C6E1IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwIhB,MAAS,C6ExI0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwIjB,MAAS,C6ExI2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsIf,MAAS,C6EtIyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoIhB,MAAS,C6EpIyB,UAAU,CAC1C,YAAa,C7EmIf,MAAS,C6EnIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiId,MAAS,C6EjIwB,UAAU,CACzC,cAAe,C7EgIjB,MAAS,C6EhI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E+IV,KAAS,CADT,KAAS,C6E9I8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E8Id,KAAS,C6E9IwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E4IhB,KAAS,C6E5I0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E4IjB,KAAS,C6E5I2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E0If,KAAS,C6E1IyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EwIhB,KAAS,C6ExIyB,UAAU,CAC1C,YAAa,C7EuIf,KAAS,C6EvIwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EqId,KAAS,C6ErIwB,UAAU,CACzC,cAAe,C7EoIjB,KAAS,C6EpI2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EiIP,IAAI,CAAJ,IAAI,C6EjIgC,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EgIX,IAAI,C6EhI0B,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7E+Hb,IAAI,C6E/H4B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7E8Hd,IAAI,C6E9H6B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7E6HZ,IAAI,C6E7H2B,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7E2Hb,IAAI,C6E3H2B,UAAU,CAC1C,YAAa,C7E0HZ,IAAI,C6E1H0B,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EuHX,IAAI,C6EvH0B,UAAU,CACzC,cAAe,C7EsHd,IAAI,C6EtH6B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7EuJV,MAAS,CADT,MAAS,C6EtJ8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7EsJd,MAAS,C6EtJwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EoJhB,MAAS,C6EpJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EoJjB,MAAS,C6EpJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EkJf,MAAS,C6ElJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EgJhB,MAAS,C6EhJyB,UAAU,CAC1C,YAAa,C7E+If,MAAS,C6E/IwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7E6Id,MAAS,C6E7IwB,UAAU,CACzC,cAAe,C7E4IjB,MAAS,C6E5I2B,UAAU,CAC7C,AAZD,AAAA,OAAO,AAAP,CAAE,OAAQ,C7E2JV,IAAS,CADT,IAAS,C6E1J8B,UAAU,CAAI,AACrD,AAAA,QAAQ,AAAR,CAAE,WAAY,C7E0Jd,IAAS,C6E1JwB,UAAU,CAAI,AAC/C,AAAA,QAAQ,AAAR,CAAE,aAAc,C7EwJhB,IAAS,C6ExJ0B,UAAU,CAAI,AACjD,AAAA,QAAQ,AAAR,CAAE,cAAe,C7EwJjB,IAAS,C6ExJ2B,UAAU,CAAI,AAClD,AAAA,QAAQ,AAAR,CAAE,YAAa,C7EsJf,IAAS,C6EtJyB,UAAU,CAAI,AAChD,AAAA,QAAQ,AAAR,CACE,aAAc,C7EoJhB,IAAS,C6EpJyB,UAAU,CAC1C,YAAa,C7EmJf,IAAS,C6EnJwB,UAAU,CAC1C,AACD,AAAA,QAAQ,AAAR,CACE,WAAY,C7EiJd,IAAS,C6EjJwB,UAAU,CACzC,cAAe,C7EgJjB,IAAS,C6EhJ2B,UAAU,CAC7C,AAKL,AAAA,UAAU,AAAV,CAAE,MAAM,CAAS,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,UAAU,CAAK,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,YAAY,CAAG,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,aAAa,CAAE,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CAAE,WAAW,CAAI,eAAgB,CAAI,AACrC,AAAA,WAAW,AAAX,CACE,YAAY,CAAE,eAAgB,CAC9B,WAAW,CAAG,eAAgB,CAC/B,AACD,AAAA,WAAW,AAAX,CACE,UAAU,CAAK,eAAgB,CAC/B,aAAa,CAAE,eAAgB,CAChC,CClCL,AAAA,aAAa,AAAE,CAAE,UAAU,CAAE,kBAAmB,CAAI,AACpD,AAAA,YAAY,AAAG,CAAE,WAAW,CAAE,iBAAkB,CAAI,AACpD,AAAA,cAAc,AAAC,ChEJb,QAAQ,CAAE,MAAO,CACjB,aAAa,CAAE,QAAS,CACxB,WAAW,CAAE,MAAO,CgEEqB,AAQvC,AAAA,UAAU,AAAV,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,WAAW,AAAX,CAAE,UAAU,CAAE,gBAAiB,CAAI,AACnC,AAAA,YAAY,AAAZ,CAAE,UAAU,CAAE,iBAAkB,CAAI,A1EsCpC,MAAM,EAAL,SAAS,EAAE,KAAK,E0ExCjB,AAAA,aAAa,AAAb,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,cAAc,AAAd,CAAE,UAAU,CAAE,gBAAiB,CAAI,AACnC,AAAA,eAAe,AAAf,CAAE,UAAU,CAAE,iBAAkB,CAAI,C1EsCpC,MAAM,EAAL,SAAS,EAAE,KAAK,E0ExCjB,AAAA,aAAa,AAAb,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,cAAc,AAAd,CAAE,UAAU,CAAE,gBAAiB,CAAI,AACnC,AAAA,eAAe,AAAf,CAAE,UAAU,CAAE,iBAAkB,CAAI,C1EsCpC,MAAM,EAAL,SAAS,EAAE,KAAK,E0ExCjB,AAAA,aAAa,AAAb,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,cAAc,AAAd,CAAE,UAAU,CAAE,gBAAiB,CAAI,AACnC,AAAA,eAAe,AAAf,CAAE,UAAU,CAAE,iBAAkB,CAAI,C1EsCpC,MAAM,EAAL,SAAS,EAAE,MAAM,E0ExClB,AAAA,aAAa,AAAb,CAAE,UAAU,CAAE,eAAgB,CAAI,AAClC,AAAA,cAAc,AAAd,CAAE,UAAU,CAAE,gBAAiB,CAAI,AACnC,AAAA,eAAe,AAAf,CAAE,UAAU,CAAE,iBAAkB,CAAI,CAMxC,AAAA,eAAe,AAAE,CAAE,cAAc,CAAE,oBAAqB,CAAI,AAC5D,AAAA,eAAe,AAAE,CAAE,cAAc,CAAE,oBAAqB,CAAI,AAC5D,AAAA,gBAAgB,AAAC,CAAE,cAAc,CAAE,qBAAsB,CAAI,AAI7D,AAAA,mBAAmB,AAAC,CAAE,WAAW,C9EkOZ,MAAM,C8ElO+B,AAC1D,AAAA,iBAAiB,AAAG,CAAE,WAAW,C9EkOd,IAAI,C8ElOiC,AACxD,AAAA,YAAY,AAAQ,CAAE,UAAU,CAAE,MAAO,CAAI,AAI7C,AAAA,WAAW,AAAC,CACV,KAAK,CAAE,eAAgB,CACxB,AlEnCC,AAAA,WAAW,AAAX,CACE,KAAK,CZwGmB,OAAO,CYxGjB,UAAU,CACzB,AACD,AAAC,CAAA,AAAA,WAAW,APcT,MAAM,COdT,AAAC,CAAA,AAAA,WAAW,APeT,MAAM,AAAC,CObN,KAAK,CAAE,OAAM,CAAc,UAAU,CPetC,AOpBH,AAAA,aAAa,AAAb,CACE,KAAK,CZgGA,OAAO,CYhGE,UAAU,CACzB,AACD,AAAC,CAAA,AAAA,aAAa,APcX,MAAM,COdT,AAAC,CAAA,AAAA,aAAa,APeX,MAAM,AAAC,CObN,KAAK,CAAE,OAAM,CAAc,UAAU,CPetC,AOpBH,AAAA,aAAa,AAAb,CACE,KAAK,CZ+FA,OAAO,CY/FE,UAAU,CACzB,AACD,AAAC,CAAA,AAAA,aAAa,APcX,MAAM,COdT,AAAC,CAAA,AAAA,aAAa,APeX,MAAM,AAAC,CObN,KAAK,CAAE,OAAM,CAAc,UAAU,CPetC,AOpBH,AAAA,UAAU,AAAV,CACE,KAAK,CZiGA,OAAO,CYjGE,UAAU,CACzB,AACD,AAAC,CAAA,AAAA,UAAU,APcR,MAAM,COdT,AAAC,CAAA,AAAA,UAAU,APeR,MAAM,AAAC,CObN,KAAK,CAAE,OAAM,CAAc,UAAU,CPetC,AOpBH,AAAA,aAAa,AAAb,CACE,KAAK,CZ6FA,OAAO,CY7FE,UAAU,CACzB,AACD,AAAC,CAAA,AAAA,aAAa,APcX,MAAM,COdT,AAAC,CAAA,AAAA,aAAa,APeX,MAAM,AAAC,CObN,KAAK,CAAE,OAAM,CAAc,UAAU,CPetC,AOpBH,AAAA,YAAY,AAAZ,CACE,KAAK,CZ4FA,OAAO,CY5FE,UAAU,CACzB,AACD,AAAC,CAAA,AAAA,YAAY,APcV,MAAM,COdT,AAAC,CAAA,AAAA,YAAY,APeV,MAAM,AAAC,CObN,KAAK,CAAE,OAAM,CAAc,UAAU,CPetC,AOpBH,AAAA,eAAe,AAAf,CACE,KAAK,CZsGmB,OAAO,CYtGjB,UAAU,CACzB,AACD,AAAC,CAAA,AAAA,eAAe,APcb,MAAM,COdT,AAAC,CAAA,AAAA,eAAe,APeb,MAAM,AAAC,CObN,KAAK,CAAE,OAAM,CAAc,UAAU,CPetC,AyEmCL,AAAA,UAAU,AAAC,CjExDT,IAAI,CAAE,KAAM,CACZ,KAAK,CAAE,WAAY,CACnB,WAAW,CAAE,IAAK,CAClB,gBAAgB,CAAE,WAAY,CAC9B,MAAM,CAAE,CAAE,CiEsDX,ACxDD,AAAA,UAAU,AAAC,C/DDT,UAAU,CAAE,iBAAkB,C+DG/B,AAKC,AAAA,aAAa,AAAb,CAEI,OAAO,CAAE,eAAgB,CAE5B,A3EsDC,MAAM,EAAL,SAAS,EAAE,KAAK,E2ErDnB,AAAA,eAAe,AAAf,CAEI,OAAO,CAAE,eAAgB,CAE5B,C3EoCC,MAAM,EAAL,SAAS,EAAE,KAAK,E2E7CnB,AAAA,aAAa,AAAb,CAEI,OAAO,CAAE,eAAgB,CAE5B,C3EsDC,MAAM,EAAL,SAAS,EAAE,KAAK,E2ErDnB,AAAA,eAAe,AAAf,CAEI,OAAO,CAAE,eAAgB,CAE5B,C3EoCC,MAAM,EAAL,SAAS,EAAE,KAAK,E2E7CnB,AAAA,aAAa,AAAb,CAEI,OAAO,CAAE,eAAgB,CAE5B,C3EsDC,MAAM,EAAL,SAAS,EAAE,KAAK,E2ErDnB,AAAA,eAAe,AAAf,CAEI,OAAO,CAAE,eAAgB,CAE5B,C3EoCC,MAAM,EAAL,SAAS,EAAE,KAAK,E2E7CnB,AAAA,aAAa,AAAb,CAEI,OAAO,CAAE,eAAgB,CAE5B,C3EsDC,MAAM,EAAL,SAAS,EAAE,MAAM,E2ErDpB,AAAA,eAAe,AAAf,CAEI,OAAO,CAAE,eAAgB,CAE5B,C3EoCC,MAAM,EAAL,SAAS,EAAE,MAAM,E2E7CpB,AAAA,aAAa,AAAb,CAEI,OAAO,CAAE,eAAgB,CAE5B,CACD,AAAA,eAAe,AAAf,CAEI,OAAO,CAAE,eAAgB,CAE5B,AAQH,AAAA,oBAAoB,AAAC,CACnB,OAAO,CAAE,eAAgB,CAK1B,AAHC,MAAM,CAAN,KAAK,CAHP,AAAA,oBAAoB,AAAC,CAIjB,OAAO,CAAE,gBAAiB,CAE7B,CACD,AAAA,qBAAqB,AAAC,CACpB,OAAO,CAAE,eAAgB,CAK1B,AAHC,MAAM,CAAN,KAAK,CAHP,AAAA,qBAAqB,AAAC,CAIlB,OAAO,CAAE,iBAAkB,CAE9B,CACD,AAAA,2BAA2B,AAAC,CAC1B,OAAO,CAAE,eAAgB,CAK1B,AAHC,MAAM,CAAN,KAAK,CAHP,AAAA,2BAA2B,AAAC,CAIxB,OAAO,CAAE,uBAAwB,CAEpC,CAGC,MAAM,CAAN,KAAK,CADP,AAAA,aAAa,AAAC,CAEV,OAAO,CAAE,eAAgB,CAE5B,CGlDD,AAAA,IAAI,CACJ,AAAA,IAAI,CACJ,AAAA,QAAQ,AAAC,CACP,MAAM,CAAE,IAAK,CACb,UAAU,CAAE,MAAO,CACpB,AAED,AAAA,aAAa,AAAC,CACZ,UAAU,CAAE,0BAAG,CAAmC,IAAI,CAAC,MAAM,CAC9D,AAED,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,QAAS,CAUpB,AARC,AAHF,aAGe,CAHf,QAAQ,AAGU,CACd,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAI,CAM1B,AAPD,AAHF,aAGe,CAHf,QAAQ,CAGN,AAHF,aAGe,CAHf,QAAQ,AAMH,OAAO,AAAC,CACP,MAAM,CAAE,MAAO,CACf,SAAS,CFWU,MAAM,CEV1B,AAIL,AAAQ,QAAA,AAAA,OAAO,CACf,AAAa,aAAA,AAAA,OAAO,AAAC,CACnB,OAAO,CAAE,GAAI,CACb,QAAQ,CAAE,KAAM,CAChB,GAAG,CAAE,CAAE,CACP,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,EAAG,CACb,AAED,AAAQ,QAAA,AAAA,OAAO,AAAC,CACd,UAAU,ClFuEgB,OAAO,CkFtEjC,KAAK,CAAE,IAAK,CACb,A9EgBG,MAAM,EAAL,SAAS,EAAE,KAAK,E8EdrB,AAAA,gBAAgB,CAChB,AAAA,YAAY,AAAC,CAET,WAAW,CFbC,KAAK,CEcjB,OAAO,CAAE,IAAK,C/E/BZ,UAAU,C+EgCe,YAAY,CFgFxB,GAAI,CACP,WAAW,CEjFmD,WAAW,CFgFtE,GAAI,CACP,WAAW,CEnE1B,AAXG,AARJ,iBAQqB,CARrB,gBAAgB,CAQZ,AAPJ,iBAOqB,CAPrB,YAAY,AAOY,CAClB,WAAW,CAAE,CAAE,CAChB,C9EiBD,MAAM,EAAL,SAAS,EAAE,KAAK,E8E3BrB,AAAA,gBAAgB,CAAhB,AAAA,gBAAgB,AAeX,OAAO,CAdZ,AAAA,YAAY,CAAZ,AAAA,YAAY,AAcP,OAAO,AAAC,CACP,WAAW,CAAE,CAAE,CAChB,CAIL,AAAA,gBAAgB,CAChB,AAAA,aAAa,AAAC,CDkBZ,UAAY,CAAE,0BAAY,CAC1B,UAAY,CAAE,kBAAI,CCjBnB,AAED,AAAA,gBAAgB,AAAC,CACf,UAAU,ClFwCgB,OAAO,CkF9BlC,AAXD,AAEI,gBAFY,CAEZ,eAAe,CAFnB,AAGI,gBAHY,CAGZ,QAAQ,AAAC,CACT,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACb,AANH,AAQI,gBARY,CAQZ,QAAQ,AAAC,CACT,OAAO,CAAE,IAAK,CACf,AAGH,AAAA,aAAa,AAAC,CACZ,KAAK,CAAE,IAAK,CAsBb,AAvBD,AAAA,aAAa,CAAb,AAAA,aAAa,AAIV,OAAO,AAAC,C/EtEL,UAAU,C+EuEe,WAAW,CFyCvB,GAAI,CACP,WAAW,CE1CkD,KAAK,CFyC/D,GAAI,CACP,WAAW,CExCvB,KAAK,CFxDO,KAAK,CEyDlB,AAED,AAVF,iBAUmB,CAVnB,aAAa,CAUX,AAVF,iBAUmB,CAVnB,aAAa,AAYR,OAAO,AAAC,CACP,WAAW,CF9DD,MAAK,CE+DhB,A9E1BD,MAAM,EAAL,SAAS,EAAE,KAAK,E8EYrB,AAAA,aAAa,CAAb,AAAA,aAAa,AAmBR,OAAO,AAAC,CACP,WAAW,CFrED,MAAK,CEsEhB,CAIL,AAAA,YAAY,AAAC,CACX,OAAO,CFpDsB,IAAI,CEqDjC,KAAK,CAAE,IAAK,CACZ,UAAU,CFrDmB,GAAG,CAC2B,KAAK,CAAC,OAAM,CEqDvE,UAAU,CAAE,IAAK,CAClB,AAED,AAAA,eAAe,AAAC,CACd,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,IAAK,CACjB,aAAa,CAAE,GAAG,CAAC,KAAK,ClFrBjB,iBAAI,CkFgCZ,AAdD,AAIE,eAJa,CAIb,EAAE,AAAC,CACD,SAAS,CAAE,MAAO,CAClB,MAAM,CAAE,CAAE,CACX,AAPH,AAQE,eARa,CAQb,WAAW,AAAC,CACV,aAAa,CAAE,CAAE,CACjB,OAAO,CAAE,CAAE,CACX,UAAU,CAAE,WAAY,CACxB,WAAW,CAAE,MAAO,CACrB,ACzHH,AAAA,YAAY,AAAC,CACX,OAAO,CAAE,UAAW,CAoErB,AArED,AAEE,YAFU,CAEV,aAAa,AAAC,CACZ,WAAW,CAAE,GAAI,CACjB,KAAK,CHuBO,KAAK,CGtBjB,OAAO,CHuCmB,IAAI,CAAJ,IAAI,CGtC9B,UAAU,CAAE,OAAM,CAClB,UAAU,CAAE,KAAK,CHmHF,GAAI,CACP,WAAW,CGnHvB,QAAQ,CAAE,MAAO,CACjB,YAAY,CAAE,CAAE,CA2BjB,AApCH,AAWM,YAXM,CAEV,aAAa,CAST,UAAU,AAAC,CACX,OAAO,CAAE,IAAK,CACf,A/EsCD,MAAM,EAAL,SAAS,EAAE,KAAK,E+EnCf,AAdJ,aAciB,AAAA,iBAAiB,CAhBpC,YAAY,CAEV,aAAa,AAcwB,CAC/B,KAAK,CH6DQ,IAAI,CGtDlB,AARD,AAEI,aAFS,AAAA,iBAAiB,CAhBpC,YAAY,CAEV,aAAa,CAgBL,KAAK,AAAC,CACN,OAAO,CAAE,IAAK,CACf,AAJH,AAKI,aALS,AAAA,iBAAiB,CAhBpC,YAAY,CAEV,aAAa,CAmBL,UAAU,AAAC,CACX,OAAO,CAAE,MAAO,CACjB,C/EyCL,MAAM,EAAL,SAAS,EAAE,KAAK,E+EhErB,AAEE,YAFU,CAEV,aAAa,AAAC,CA0BV,KAAK,CHkDU,IAAI,CG1CtB,AApCH,AA6BQ,YA7BI,CAEV,aAAa,CA2BP,KAAK,AAAC,CACN,OAAO,CAAE,IAAK,CACf,AA/BP,AAgCQ,YAhCI,CAEV,aAAa,CA8BP,UAAU,AAAC,CACX,OAAO,CAAE,MAAO,CACjB,CAlCP,AA0CkC,YA1CtB,AA0CT,kBAAkB,CAAC,WAAW,CAAC,SAAS,AAAC,CACxC,OAAO,CHDmB,IAAI,CACJ,IAAI,CGC9B,QAAQ,CAAE,QAAS,CACpB,AA7CH,AAoDE,YApDU,CAoDV,QAAQ,AAAC,CACP,WAAW,CAAE,IAA2B,CACxC,cAAc,CAAE,IAA2B,CAC5C,AAvDH,AA0DI,YA1DQ,CAyDV,WAAW,CAAA,AAAA,KAAC,EAAO,QAAQ,AAAf,EACV,cAAc,AAAC,CACb,UAAU,CAAE,IAAK,CACjB,KAAK,CAAE,CAAE,CACT,IAAI,CAAE,IAAK,CAKZ,AAJC,MAAM,EAAL,SAAS,EAAE,KAAK,EA9DvB,AA0DI,YA1DQ,CAyDV,WAAW,CAAA,AAAA,KAAC,EAAO,QAAQ,AAAf,EACV,cAAc,AAAC,CAKX,IAAI,CAAE,CAAE,CACR,KAAK,CAAE,IAAK,CAEf,CAWL,AAAA,WAAW,AAAC,CACV,MAAM,CAAE,IAAmB,CAC3B,KAAK,CAAE,IAAK,CACb,AAGD,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,GAAI,CACT,KAAK,CAAE,GAAI,CACX,SAAS,CAAE,MAAa,CACxB,OAAO,CAAE,OAAQ,CAClB,ACzFD,AAAA,QAAQ,AAAC,CACP,cAAc,CAAE,IAAK,CACtB,AAGD,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CACd,aAAa,CAAE,GAAI,CAgCpB,AAlCD,AAIE,WAJS,CAIT,MAAM,AAAC,CACL,KAAK,CAAE,IAAK,CACb,AANH,AAQE,WARS,CAQT,GAAG,AAAC,CACF,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CAChB,MAAM,CAAE,IAAK,CACd,AAZH,AAcE,WAdS,CAcT,KAAK,AAAC,CACJ,OAAO,CAAE,gBAAiB,CAC1B,WAAW,CAAE,IAAK,CACnB,AAjBH,AAmBE,WAnBS,CAmBT,OAAO,AAAC,CACN,OAAO,CAAE,OAAQ,CACjB,MAAM,CAAE,CAAE,CACX,AAtBH,AAwBE,WAxBS,CAwBT,EAAE,AAAC,CACD,QAAQ,CAAE,MAAO,CACjB,WAAW,CAAE,MAAO,CACpB,MAAM,CAAE,SAAU,CACnB,AA5BH,AA8BE,WA9BS,CA8BT,OAAO,CA9BT,AA+BE,WA/BS,CA+BT,cAAc,AAAC,CACb,SAAS,CpFmNI,OAAO,CoFlNrB,AAIH,AAEI,YAFQ,CAER,SAAS,AAAC,CACV,UAAU,CAAE,YAAa,CAa1B,AAhBH,AAKM,YALM,CAER,SAAS,CAGP,SAAS,AAAC,CzDhDZ,aAAa,CyDiDY,CAAC,CAKzB,AAXL,AAQQ,YARI,CAER,SAAS,CAGP,SAAS,CAGP,SAAS,AAAC,CACV,KAAK,CAAE,IAAK,CACb,AAVP,AAaI,YAbQ,CAER,SAAS,CAWT,eAAe,AAAC,CACd,UAAU,CAAE,GAAI,CACjB,AAfL,AAmBc,YAnBF,CAmBV,SAAS,CAAG,cAAc,AAAC,CACzB,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,OAAO,CAAE,CAAE,CACX,YAAY,CAAE,IAAK,CACnB,UAAU,CAAE,GAAI,CACjB,AAzBH,AA4BM,YA5BM,CA2BV,UAAU,CACN,aAAa,AAAC,CACd,OAAO,CAAE,KAAM,CAChB,AA9BL,AAiCM,YAjCM,CA2BV,UAAU,CAKN,SAAS,CACT,cAAc,AAAC,CHOnB,aAAa,CAAE,cAAM,CACrB,SAAS,CAAE,cAAM,CGNZ,AAnCP,AAwCE,YAxCU,CAwCV,aAAa,AAAC,CACZ,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,IAAK,CACjB,OAAO,CAAE,CAAE,CACX,MAAM,CAAE,CAAE,CACV,YAAY,CAAE,GAAI,CAgBnB,AA7DH,AA+CI,YA/CQ,CAwCV,aAAa,CAOX,aAAa,AAAC,CACZ,YAAY,CAAE,IAAK,CACpB,AAjDL,AAmDM,YAnDM,CAwCV,aAAa,CAWT,SAAS,AAAC,CACV,MAAM,CAAE,CAAE,CAQX,AA5DL,AAqDQ,YArDI,CAwCV,aAAa,CAWT,SAAS,CAEP,SAAS,AAAC,CACV,OAAO,CAAE,gBAAiB,CAC1B,OAAO,CAAE,KAAM,CAIhB,AA3DP,AAwDU,YAxDE,CAwCV,aAAa,CAWT,SAAS,CAEP,SAAS,CAGP,SAAS,AAAC,CACV,KAAK,CAAE,IAAK,CACb,AA1DT,AA+DE,YA/DU,CA+DV,WAAW,AAAC,CACV,SAAS,CAAE,IAAK,CAChB,OAAO,CpFwgBqB,KAAI,CAAC,GAAG,CoFngBrC,AAtEH,AA+DE,YA/DU,CA+DV,WAAW,AAIR,IAAK,CAAA,AAAA,cAAc,CAAE,CACpB,OAAO,CAAE,kBAAmB,CAC7B,AAIL,AACE,aADW,CACX,aAAa,AAAC,CACZ,aAAa,CAAE,CAAE,CAClB,AhFnEC,MAAM,EAAL,SAAS,EAAE,KAAK,EiFnDrB,AAMM,aANO,AAIR,iBAAiB,CAEhB,gBAAgB,CANtB,AAOM,aAPO,AAIR,iBAAiB,CAGhB,YAAY,AAAC,CACX,WAAW,CLsEE,IAAI,CKtEgB,UAAU,CAC5C,AATP,AAYM,aAZO,AAIR,iBAAiB,CAQhB,aAAa,CAZnB,AAYM,aAZO,AAIR,iBAAiB,CAQhB,aAAa,AAEV,OAAO,AAAC,CAEP,WAAW,CAAE,CAAE,CACf,KAAK,CL6DM,IAAI,CK7DY,UAAU,CACtC,AAlBT,AAoBQ,aApBK,AAIR,iBAAiB,CAQhB,aAAa,CAQX,WAAW,AAAC,CACV,aAAa,CAAE,IAAK,CAKrB,AA1BT,AAuBU,aAvBG,AAIR,iBAAiB,CAQhB,aAAa,CAQX,WAAW,CAGT,MAAM,AAAC,CACL,KAAK,CAAE,IAAK,CACb,AAzBX,AA8BU,aA9BG,AAIR,iBAAiB,CAyBhB,YAAY,CACR,UAAU,AAAC,CACX,0BAA0B,CrF4RX,MAAM,CqF3RtB,AAhCT,AAkCU,aAlCG,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,AAAC,CACV,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,GAAI,CAkDd,AAtFT,AAsCY,aAtCC,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,CAIP,SAAS,AAAC,CACV,YAAY,CAAE,CAAE,CAMjB,AA7CX,AAyCc,aAzCD,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,CAIP,SAAS,CAGP,SAAS,AAAC,CACV,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,MAAO,CACpB,AA5Cb,AA+CY,aA/CC,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,CAaP,aAAa,AAAC,CAEd,WAAW,CAAE,GAAI,CACjB,cAAc,CAAE,GAAI,CACrB,AAnDX,AAuDc,aAvDD,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,AAoBR,MAAM,CACH,SAAS,AAAC,CACV,QAAQ,CAAE,OAAQ,CACnB,AAzDb,AA2D0B,aA3Db,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,AAoBR,MAAM,CAKH,SAAS,CAAG,KAAK,CA3D/B,AA4Dc,aA5DD,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,AAoBR,MAAM,CAMH,aAAa,AAAC,CACd,OAAO,CAAE,gBAAiB,CAC1B,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,OAAc,CACrB,IAAI,CLcG,IAAI,CKbZ,AAjEb,AAoE0B,aApEb,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,AAoBR,MAAM,CAcH,SAAS,CAAG,KAAK,AAAC,CAClB,GAAG,CAAE,CAAE,CACP,WAAW,CAAE,IAAK,CAClB,OAAO,CrF4iBW,KAAI,CAAC,GAAG,CqF3iB1B,gBAAgB,CAAE,OAAQ,C1D5DpC,0BAA0B,C3B+SL,MAAM,C2B9S3B,uBAAuB,C3B8SF,MAAM,CqFjPlB,AA1Eb,AA4EyC,aA5E5B,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,AAoBR,MAAM,AAsBJ,aAAa,CAAG,SAAS,CAAG,KAAK,AAAC,CACjC,0BAA0B,CAAE,CAAE,CAC/B,AA9Eb,AAgFc,aAhFD,AAIR,iBAAiB,CAyBhB,YAAY,CAKR,SAAS,AAoBR,MAAM,CA0BH,aAAa,AAAC,CACd,GAAG,CrFkiBe,KAAI,CAAC,GAAG,CqFjiB1B,WAAW,CAAE,CAAE,CACf,0BAA0B,CrFwOf,MAAM,CqFvOlB,AApFb,AA2FkC,aA3FrB,AAIR,iBAAiB,CAuFhB,aAAa,CAAC,WAAW,CAAG,KAAK,CA3FvC,AA4FM,aA5FO,AAIR,iBAAiB,CAwFhB,aAAa,CA5FnB,AA6F6C,aA7FhC,AAIR,iBAAiB,CAyFhB,YAAY,CAAG,SAAS,CAAG,SAAS,CAAG,IAAI,CA7FjD,AA8FiC,aA9FpB,AAIR,iBAAiB,CA0FhB,YAAY,CAAG,SAAS,CAAG,aAAa,CA9F9C,AA+F6C,aA/FhC,AAIR,iBAAiB,CA2FhB,YAAY,CAAG,SAAS,CAAG,SAAS,CAAG,WAAW,CA/FxD,AAgGmB,aAhGN,AAIR,iBAAiB,CA4FhB,YAAY,CAAC,WAAW,AAAC,CACvB,OAAO,CAAE,eAAgB,CACzB,iBAAiB,CAAE,aAAU,CAC9B,AAnGP,AAsGM,aAtGO,AAIR,iBAAiB,CAkGhB,qBAAqB,AAAC,CACpB,OAAO,CAAE,gBAAiB,CAC3B,CAMP,AAAA,YAAY,CACZ,AAAe,YAAH,CAAG,WAAW,AAAC,CACzB,WAAW,CAAE,MAAO,CACpB,QAAQ,CAAE,MAAO,CAClB,AAED,AAAa,YAAD,CAAC,SAAS,AAAC,CACrB,WAAW,CAAE,MAAO,CACrB,AAED,AAAA,YAAY,AAAC,CACX,QAAQ,CAAE,QAAS,CAIpB,AALD,AAAA,YAAY,AAET,MAAM,AAAC,CACN,QAAQ,CAAE,OAAQ,CACnB,AAGH,AAAA,aAAa,CACb,AAAe,YAAH,CAAG,WAAW,AAAC,CACzB,QAAQ,CAAE,MAAO,CACjB,aAAa,CAAE,IAAK,CACrB,AAED,AAAyB,YAAb,CAAC,SAAS,CAAG,SAAS,AAAC,CACjC,QAAQ,CAAE,QAAS,CAOpB,AARD,AAEI,YAFQ,CAAC,SAAS,CAAG,SAAS,CAE9B,WAAW,AAAC,CACZ,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,GAAG,CAAE,GAAI,CACT,UAAU,CAAE,IAAK,CAClB,AAIH,AAAA,qBAAqB,AAAC,CACpB,OAAO,CAAE,eAAgB,CAC1B,ACnJD,AAAA,gBAAgB,AAAC,CACf,QAAQ,CAAE,QAAS,CACnB,GAAG,CN6C2B,IAAe,CM5C7C,OAAO,CAAE,GAAI,CAiBd,AApBD,AAAA,gBAAgB,CAAhB,AAAA,gBAAgB,AAMb,OAAO,AAAC,CACP,KAAK,CNqBO,KAAK,CMpBjB,KAAK,CNoBO,MAAK,CMnBjB,MAAM,CAAE,CAAE,CnFER,UAAU,CmFDQ,KAAK,CNiHV,GAAI,CACP,WAAW,CMjHxB,AAXH,AAAA,gBAAgB,AAab,OAAO,AAAC,CACP,GAAG,CAAE,CAAE,CACP,OAAO,CAAE,KAAM,CACf,QAAQ,CAAE,KAAM,CAChB,OAAO,CAAE,GAAI,CACb,OAAO,CAAE,EAAG,CACb,AlFiCC,MAAM,EAAL,SAAS,EAAE,KAAK,EkF7BrB,AAEI,qBAFiB,CAEjB,gBAAgB,CAFpB,AAEI,qBAFiB,CAEjB,gBAAgB,AAEb,OAAO,AAAC,CACP,KAAK,CAAE,CAAE,CACV,AANP,AASI,qBATiB,CASjB,gBAAgB,CATpB,AAUI,qBAViB,CAUjB,YAAY,AAAC,CACX,YAAY,CNNF,KAAK,CMOhB,ClF8BD,MAAM,EAAL,SAAS,EAAE,KAAK,EkF1CrB,AAgBI,qBAhBiB,CAgBjB,gBAAgB,CAhBpB,AAgBI,qBAhBiB,CAgBjB,gBAAgB,AAEb,OAAO,AAAC,CACP,KAAK,CAAE,CAAE,CACV,CAMP,AACE,2BADyB,CACzB,gBAAgB,CADlB,AACE,2BADyB,CACzB,gBAAgB,AAEb,OAAO,AAAC,CACP,KAAK,CAAE,CAAE,CACV,AAKL,AAAA,qBAAqB,CAArB,AAEE,qBAFmB,CAEnB,CAAC,CAFH,AAGE,qBAHmB,CAGnB,SAAS,AAAC,CACR,KAAK,CNDY,OAAO,CMEzB,AALH,AAAA,qBAAqB,CAArB,AAAA,qBAAqB,AASlB,OAAO,AAAC,CACP,UAAU,CNTI,OAAO,CMUtB,AAXH,AAaG,qBAbkB,CAanB,CAAC,AAAA,MAAM,AAAC,CACN,KAAK,CNVkB,IAAI,CMW5B,AAfH,AAkBE,qBAlBmB,CAkBnB,EAAE,CAlBJ,AAmBE,qBAnBmB,CAmBnB,EAAE,CAnBJ,AAoBE,qBApBmB,CAoBnB,EAAE,CApBJ,AAqBE,qBArBmB,CAqBnB,EAAE,CArBJ,AAsBE,qBAtBmB,CAsBnB,EAAE,CAtBJ,AAuBE,qBAvBmB,CAuBnB,EAAE,CAvBJ,AAwBE,qBAxBmB,CAwBnB,KAAK,AAAC,CACJ,KAAK,CNrBkB,IAAI,CMsB5B,AA1BH,AA6BE,qBA7BmB,CA6BnB,SAAS,AAAC,CACR,aAAa,CAAE,CAAE,CACjB,gBAAgB,CN7BI,OAAM,CM8B1B,aAAa,CAAE,GAAI,CAkCpB,AAlEH,AAkCI,qBAlCiB,CA6BnB,SAAS,CAKP,SAAS,AAAC,CACR,MAAM,CAAE,CAAE,CACX,AApCL,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAAC,CACR,QAAQ,CAAE,QAAS,CACnB,aAAa,CAAE,CAAE,CACjB,UAAU,CAAE,MAAO,CACnB,OAAO,CAAE,SAAU,CAuBpB,AAjEL,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,CAtCb,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAON,MAAM,CA7Cb,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAQN,OAAO,CA9Cd,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AASN,MAAM,CA/Cb,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAUN,OAAO,AAAC,CACP,MAAM,CAAE,CAAE,CACX,AAlDP,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAcN,MAAM,CApDb,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAeN,OAAO,CArDd,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAgBN,MAAM,CAtDb,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAiBN,OAAO,AAAC,CACP,iBAAiB,CAAE,WAAY,CAC/B,mBAAmB,CAAE,WAAY,CACjC,gBAAgB,CAAE,WAAY,CAC9B,KAAK,CNvDc,IAAI,CMwDxB,AA5DP,AAsCI,qBAtCiB,CA6BnB,SAAS,CASP,SAAS,AAwBN,OAAO,AAAC,CACP,gBAAgB,CN9DN,OAAO,CM+DlB,AAhEP,AAoEE,qBApEmB,CAoEnB,SAAS,AAAC,CACR,OAAO,CAAE,SAAU,CACpB,AAIH,AAAA,sBAAsB,AAAC,CACrB,KAAK,CAAE,OAAO,CAQf,AATD,AAAA,sBAAsB,CAAtB,AAAA,sBAAsB,AAKnB,OAAO,AAAC,CACP,UAAU,CNtEK,OAAO,CMuEtB,WAAW,CAAE,GAAG,CAAC,KAAK,CtFrCE,OAAO,CsFsChC,AC3IH,AAAA,cAAc,AACX,cAAc,AAAC,C5DGd,uBAAuB,C3BsTF,MAAM,C2BrT3B,sBAAsB,C3BqTD,MAAM,CuFvT5B,AAHH,AAAA,cAAc,AAIX,aAAa,AAAC,C5Dcb,0BAA0B,C3BwSL,MAAM,C2BvS3B,yBAAyB,C3BuSJ,MAAM,CuFpT5B,AAGH,AAAA,oBAAoB,AAAC,CACnB,SAAS,CvF2OM,IAAI,CuF1OnB,MAAM,CAAE,CAAE,CACX,AAGD,AAAA,iBAAiB,AAAC,CAChB,SAAS,CAAE,KAAM,CACjB,SAAS,CAAE,KAAM,CACjB,OAAO,CAAE,CAAE,CAWZ,AAdD,AAIE,iBAJe,CAIf,iBAAiB,AAAC,CAChB,MAAM,CAAE,CAAE,CACX,AANH,AAOE,iBAPe,CAOf,cAAc,AAAC,CACb,OAAO,CvFshBsB,KAAK,CAiBL,MAAM,CuFtiBpC,AATH,AAUE,iBAVe,CAUf,CAAC,AAAC,CACA,WAAW,CAAE,MAAO,CACpB,MAAM,CAAE,CAAE,CACX,AAIH,AAAA,gBAAgB,CAChB,AAAA,gBAAgB,AAAC,CACf,UAAU,CAAE,MAAO,CACnB,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,MAAK,CvF0hBiB,MAAM,CuFzhBrC,SAAS,CvFkNM,OAAO,CuFjNvB,AAED,AAAA,gBAAgB,AACb,MAAM,AAAC,CACN,gBAAgB,CAAE,IAAK,CACvB,KAAK,CvF2DmB,OAAO,CuF1DhC,AAKH,AAAqB,KAAhB,AAAA,IAAK,CAAA,AAAA,OAAO,EAAI,uBAAuB,AAAC,CAC3C,mBAAmB,CAAE,kBAAmB,CNoCxC,SAAS,CMnCU,OAAO,CAAC,IAAG,CAAC,IAAI,CACpC,AAED,UAAU,CAAV,OAAU,CACR,AAAA,EAAE,CACA,SAAS,CAAE,kBAAW,CAAQ,wBAAQ,CACtC,0BAA0B,CAAE,OAAQ,CACpC,OAAO,CAAE,CAAE,CAGb,AAAA,GAAG,CACD,SAAS,CAAE,kBAAW,CAAQ,yBAAQ,CACtC,0BAA0B,CAAE,OAAQ,CAGtC,AAAA,GAAG,CACD,SAAS,CAAE,kBAAW,CAAQ,wBAAQ,CACtC,OAAO,CAAE,CAAE,CAGb,AAAA,GAAG,CACD,SAAS,CAAE,kBAAW,CAAQ,wBAAQ,CAGxC,AAAA,IAAI,CACF,SAAS,CAAE,kBAAW,EAI1B,kBAAkB,CAAlB,OAAkB,CAChB,AAAA,EAAE,CACA,iBAAiB,CAAE,kBAAW,CAAQ,wBAAQ,CAC9C,kCAAkC,CAAE,OAAQ,CAC5C,OAAO,CAAE,CAAE,CAGb,AAAA,GAAG,CACD,iBAAiB,CAAE,kBAAW,CAAQ,yBAAQ,CAC9C,kCAAkC,CAAE,OAAQ,CAG9C,AAAA,GAAG,CACD,iBAAiB,CAAE,kBAAW,CAAQ,wBAAQ,CAC9C,OAAO,CAAE,CAAE,CAGb,AAAA,GAAG,CACD,iBAAiB,CAAE,kBAAW,CAAQ,wBAAQ,CAGhD,AAAA,IAAI,CACF,iBAAiB,CAAE,kBAAW,EAKlC,AACI,mBADe,CAAG,WAAW,CAC7B,EAAE,AAAC,CACH,QAAQ,CAAE,QAAS,CAMpB,AARH,AAGM,mBAHa,CAAG,WAAW,CAC7B,EAAE,CAEA,cAAc,AAAC,CACf,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,CAAE,CACT,IAAI,CAAE,IAAK,CACZ,AAIL,MAAM,EAAL,SAAS,EAAE,KAAK,EACf,AAAsB,mBAAH,CAAG,WAAW,AAAC,CAChC,KAAK,CAAE,KAAM,CAWd,AAZD,AAEI,mBAFe,CAAG,WAAW,CAE7B,EAAE,AAAC,CACH,QAAQ,CAAE,MAAO,CAQlB,AAXH,AAIM,mBAJa,CAAG,WAAW,CAE7B,EAAE,CAEA,cAAc,AAAC,CACf,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,EAAG,CACV,IAAI,CAAE,IAAK,CACX,MAAM,CAAE,cAAe,CACvB,UAAU,CAAE,IAAK,CAClB,CCnIP,AAAA,aAAa,AAAC,CAEZ,UAAU,CAAE,IAAK,CAkBlB,AApBD,AAAA,aAAa,AAIV,MAAM,AAAC,CACN,YAAY,CxF2FP,OAAO,CwF1FZ,UAAU,CAAE,IAAK,CAClB,AAPH,AAAA,aAAa,AAQV,kBAAkB,CARrB,AAAA,aAAa,AASV,sBAAsB,CATzB,AAAA,aAAa,AAUV,2BAA2B,AAAC,CAC3B,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,CAAE,CACZ,AAbH,AAAA,aAAa,AAeV,IAAK,CAAA,AAAA,MAAM,CAAE,CACZ,kBAAkB,CAAE,IAAK,CACzB,eAAe,CAAE,IAAK,CACtB,UAAU,CAAE,IAAK,CAClB,AAGH,AAEI,WAFO,AACR,YAAY,CACX,KAAK,AAAC,CACJ,KAAK,CxFsEF,OAAO,CwFrEX,AAJL,AAKI,WALO,AACR,YAAY,CAIX,aAAa,AAAC,CACZ,YAAY,CxFmET,OAAO,CwFlEV,UAAU,CAAE,IAAK,CAClB,AARL,AAYI,WAZO,AAWR,YAAY,CACX,KAAK,AAAC,CACJ,KAAK,CxF0DF,OAAO,CwFzDX,AAdL,AAeI,WAfO,AAWR,YAAY,CAIX,aAAa,AAAC,CACZ,YAAY,CxFuDT,OAAO,CwFtDV,UAAU,CAAE,IAAK,CAClB,AAlBL,AAsBI,WAtBO,AAqBR,UAAU,CACT,KAAK,AAAC,CACJ,KAAK,CxF+CF,OAAO,CwF9CX,AAxBL,AAyBI,WAzBO,AAqBR,UAAU,CAIT,aAAa,AAAC,CACZ,YAAY,CxF4CT,OAAO,CwF3CV,UAAU,CAAE,IAAK,CAClB,AA5BL,AAAA,WAAW,AA+BR,SAAS,AAAC,CACT,QAAQ,CAAE,QAAS,CAepB,AA/CH,AAiCI,WAjCO,AA+BR,SAAS,CAER,aAAa,AAAC,CACZ,aAAa,CAAE,IAAK,CACrB,AAnCL,AAoCI,WApCO,AA+BR,SAAS,CAKR,UAAU,AAAC,CACT,MAAM,CAAE,OAAQ,CAChB,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,GAAI,CACX,GAAG,CAAE,CAAE,CACP,OAAO,CxF4VoB,KAAK,CADL,MAAM,CwF1VjC,UAAU,CAAE,IAAK,CACjB,MAAM,CAAE,CAAE,CACV,gBAAgB,CAAE,WAAY,CAC9B,SAAS,CAAE,IAAK,CACjB,AAKL,AACE,YADU,CACV,kBAAkB,AAAC,CAEjB,YAAY,CxF2BY,OAAO,CwF1B/B,gBAAgB,CAAE,IAAK,CACxB,AAIH,AACE,mBADiB,CACjB,IAAI,AACD,SAAS,AAAA,cAAc,CAF5B,AACE,mBADiB,CACjB,IAAI,AACyB,SAAS,AAAA,aAAa,AAAC,C7DpFlD,aAAa,C6DqFY,CAAC,CACzB,AAIL,AAAU,OAAH,CAAG,KAAK,AAAC,CACd,YAAY,CAAE,CAAE,CACjB,AAGD,AAAsB,sBAAA,AAAA,GAAG,AAAC,CACxB,WAAW,CxFuVsB,OAAe,CwFtVjD,AAED,AAAkC,SAAzB,CAAG,sBAAsB,AAAA,GAAG,CACrC,AAAwC,eAAzB,CAAG,sBAAsB,AAAA,GAAG,CAC3C,AAAqD,cAAvC,CAAC,aAAa,CAAG,sBAAsB,AAAA,GAAG,AAAC,CACvD,WAAW,CxFkVsB,eAAa,CwFjV/C,AAED,AAAkC,SAAzB,CAAG,sBAAsB,AAAA,GAAG,CACrC,AAAwC,eAAzB,CAAG,sBAAsB,AAAA,GAAG,CAC3C,AAAqD,cAAvC,CAAC,aAAa,CAAG,sBAAsB,AAAA,GAAG,AAAC,CACvD,WAAW,CxF6UsB,SAAa,CwF5U/C,AC3GD,AAAA,SAAS,AAAC,C9DFN,aAAa,CqDsGY,GAAG,CSjG/B,AAGD,AAAA,YAAY,AAAC,CACX,MAAM,CAAE,IAAK,CACd,AAED,AAAA,YAAY,AAAC,CACX,MAAM,CAAE,GAAI,CACb,AAED,AAAA,aAAa,AAAC,CACZ,MAAM,CAAE,GAAI,CACb,AAGD,AAAS,SAAA,AAAA,SAAS,AAAC,CACjB,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,KAAM,CACd,OAAO,CAAE,YAAa,CACtB,YAAY,CAAE,IAAK,CAqBpB,AA1BD,AAMI,SANK,AAAA,SAAS,CAMd,aAAa,AAAC,CACd,KAAK,CAAE,IAAK,CACZ,QAAQ,CAAE,QAAS,CACnB,MAAM,CAAE,CAAE,CACX,AAVH,AAAS,SAAA,AAAA,SAAS,AAaf,GAAG,CAbN,AAAS,SAAA,AAAA,SAAS,AAcf,YAAY,AAAC,CACZ,KAAK,CAAE,IAAK,CACb,AAhBH,AAAS,SAAA,AAAA,SAAS,AAkBf,GAAG,CAlBN,AAAS,SAAA,AAAA,SAAS,AAmBf,YAAY,AAAC,CACZ,KAAK,CAAE,IAAK,CACb,AArBH,AAAS,SAAA,AAAA,SAAS,AAsBf,IAAI,CAtBP,AAAS,SAAA,AAAA,SAAS,AAuBf,aAAa,AAAC,CACb,KAAK,CAAE,GAAI,CACZ,AAeH,AACU,MADJ,CACJ,EAAE,CAAG,EAAE,CAAC,SAAS,AAAC,CAChB,MAAM,CAAE,CAAE,CACX,AC/DH,AAAA,UAAU,AAAC,C/DDP,aAAa,C+DEQ,GAAG,CAC1B,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,KAAM,CACf,aAAa,CAAE,IAAK,CACpB,UAAU,CVoFI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CUnB7B,AAtED,AAOI,UAPM,CAON,MAAM,AAAC,CACP,OAAO,CAAE,IAAK,CACf,AATH,AAWI,UAXM,CAWN,iBAAiB,AAAC,CAClB,QAAQ,CAAE,QAAS,CACnB,UAAU,CAAE,MAAO,CACnB,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,KAAK,CAAE,qBAAI,CACX,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,UAAU,CAAE,eAAI,CAChB,eAAe,CAAE,IAAK,CAKvB,AAzBH,AAWI,UAXM,CAWN,iBAAiB,AAUhB,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,gBAAI,CACjB,AAxBL,AA2BE,UA3BQ,CA2BR,EAAE,AAAC,CACD,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,IAAK,CAClB,MAAM,CAAE,UAAW,CACnB,WAAW,CAAE,MAAO,CACpB,OAAO,CAAE,CAAE,CAEZ,AAlCH,AAoCE,UApCQ,CAoCR,CAAC,AAAC,CACA,SAAS,CAAE,IAAK,CAOjB,AA5CH,AAsCM,UAtCI,CAoCR,CAAC,CAEG,KAAK,AAAC,CACN,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,OAAQ,CACf,SAAS,CAAE,IAAK,CAChB,UAAU,CAAE,GAAI,CACjB,AA3CL,AA8CE,UA9CQ,CA8CR,EAAE,CA9CJ,AA8CM,UA9CI,CA8CJ,CAAC,AAAC,CACJ,OAAO,CAAE,GAAI,CACd,AAhDH,AAmDE,UAnDQ,CAmDR,KAAK,AAAC,CACJ,UAAU,CAAE,GAAG,CVsEA,GAAI,CUtEe,MAAM,CACxC,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,KAAM,CACX,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,CAAE,CACX,SAAS,CAAE,IAAK,CAChB,KAAK,CAAE,gBAAI,CACZ,AA3DH,AAAA,UAAU,AA8DP,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACtB,KAAK,CAAE,OAAQ,CAKhB,AArEH,AAkEI,UAlEM,AA8DP,MAAM,CAIL,KAAK,AAAC,CACJ,SAAS,CAAE,IAAK,CACjB,AtFJD,MAAM,EAAL,SAAS,EAAE,KAAK,EsFUnB,AAAA,UAAU,AAAC,CACT,UAAU,CAAE,MAAO,CAOpB,AARD,AAEE,UAFQ,CAER,KAAK,AAAC,CACJ,OAAO,CAAE,IAAK,CACf,AAJH,AAKE,UALQ,CAKR,CAAC,AAAC,CACA,SAAS,CAAE,IAAK,CACjB,CCjFL,AAAA,KAAK,AAAC,CACJ,UAAU,CAAE,IAAK,CAClB,AAED,AAAA,IAAI,AAAC,CACH,QAAQ,CAAE,QAAS,ChENjB,aAAa,CqDwFG,GAAG,CWhFrB,UAAU,CAAE,OAAQ,CACpB,UAAU,CAAE,GAAG,CAAC,KAAK,CXSR,OAAO,CWRpB,aAAa,CAAE,IAAK,CACpB,KAAK,CAAE,IAAK,CACZ,UAAU,CX8EI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CW4C7B,AAjID,AAAA,IAAI,AAUD,YAAY,AAAC,CACZ,gBAAgB,C3FgFX,OAAO,C2F/Eb,AAZH,AAAA,IAAI,AAaD,SAAS,AAAC,CACT,gBAAgB,C3F8EX,OAAO,C2F7Eb,AAfH,AAAA,IAAI,AAgBD,WAAW,AAAC,CACX,gBAAgB,C3FsEX,OAAO,C2FrEb,AAlBH,AAAA,IAAI,AAmBD,YAAY,AAAC,CACZ,gBAAgB,C3FoEX,OAAO,C2FnEb,AArBH,AAAA,IAAI,AAsBD,YAAY,AAAC,CACZ,gBAAgB,C3FmEX,OAAO,C2FlEb,AAxBH,AAAA,IAAI,AAyBD,YAAY,AAAC,CACZ,gBAAgB,CXbL,OAAO,CWcnB,AA3BH,AA+BI,IA/BA,AA8BD,cAAc,CACb,SAAS,CA/Bb,AAgCI,IAhCA,AA8BD,cAAc,CAEb,WAAW,AAAC,CACV,OAAO,CAAE,IAAK,CACf,AAlCL,AAsCM,IAtCF,CAqCF,YAAY,CACR,EAAE,AAAC,CACH,aAAa,CAAE,GAAG,CAAC,KAAK,CX2CX,OAAO,CW1CpB,MAAM,CAAE,CAAE,CAIX,AA5CL,AAsCM,IAtCF,CAqCF,YAAY,CACR,EAAE,AAGD,aAAa,AAAC,CACb,aAAa,CAAE,IAAK,CACrB,AA3CP,AAiDI,IAjDA,AAgDD,eAAe,CACd,SAAS,AAAC,CACR,UAAU,CAAE,KAAM,CAClB,QAAQ,CAAE,IAAK,CAChB,AApDL,AAuDE,IAvDE,CAuDF,aAAa,AAAC,CACZ,YAAY,CAAE,GAAG,CAAC,KAAK,CX0BR,OAAO,CWzBvB,AAzDH,AA0DE,IA1DE,CA0DF,YAAY,AAAC,CACX,WAAW,CAAE,GAAG,CAAC,KAAK,CXuBP,OAAO,CWtBvB,AA5DH,AAAA,IAAI,AAkED,UAAU,AAAC,CACV,UAAU,CAAE,CAAE,CA6Cf,AAhHH,AAqEU,IArEN,AAkED,UAAU,CAEP,WAAW,CACX,IAAI,AAAA,YAAY,AAAC,CACf,UAAU,CAAE,WAAY,CACzB,AAvEP,AAwEM,IAxEF,AAkED,UAAU,CAEP,WAAW,CAIX,IAAI,AAED,MAAM,CA1Ef,AAyEM,IAzEF,AAkED,UAAU,CAEP,WAAW,CAKX,CAAC,AACE,MAAM,AAAC,CACN,UAAU,CAAE,eAAI,CACjB,AA5ET,AAAA,IAAI,AAkED,UAAU,AAeR,YAAY,AAAC,CV7ChB,MAAM,CAAE,GAAG,CAAC,KAAK,CjF8DS,OAAO,C2Ff9B,AAnFL,AVqCI,IUrCA,AAkED,UAAU,AAeR,YAAY,CV5Cb,WAAW,AAAC,CACZ,KAAK,CU4C+B,IAAI,CV3CxC,UAAU,CjF2Dc,OAAO,CiF1D/B,gBAAgB,CjF0DQ,OAAO,CiFrDhC,AU7CH,AVyCI,IUzCA,AAkED,UAAU,AAeR,YAAY,CV5Cb,WAAW,CAIX,CAAC,CUzCL,AV0CI,IU1CA,AAkED,UAAU,AAeR,YAAY,CV5Cb,WAAW,CAKX,IAAI,AAAC,CACH,KAAK,CUuC6B,IAAI,CVtCvC,AU5CL,AAAA,IAAI,AAkED,UAAU,AAkBR,YAAY,AAAC,CVhDhB,MAAM,CAAE,GAAG,CAAC,KAAK,CjFuDV,OAAO,C2FLX,AAtFL,AVqCI,IUrCA,AAkED,UAAU,AAkBR,YAAY,CV/Cb,WAAW,AAAC,CACZ,KAAK,CAHqC,IAAI,CAI9C,UAAU,CjFoDL,OAAO,CiFnDZ,gBAAgB,CjFmDX,OAAO,CiF9Cb,AU7CH,AVyCI,IUzCA,AAkED,UAAU,AAkBR,YAAY,CV/Cb,WAAW,CAIX,CAAC,CUzCL,AV0CI,IU1CA,AAkED,UAAU,AAkBR,YAAY,CV/Cb,WAAW,CAKX,IAAI,AAAC,CACH,KAAK,CARmC,IAAI,CAS7C,AU5CL,AAAA,IAAI,AAkED,UAAU,AAqBR,SAAS,AAAC,CVnDb,MAAM,CAAE,GAAG,CAAC,KAAK,CjFwDV,OAAO,C2FHX,AAzFL,AVqCI,IUrCA,AAkED,UAAU,AAqBR,SAAS,CVlDV,WAAW,AAAC,CACZ,KAAK,CAHqC,IAAI,CAI9C,UAAU,CjFqDL,OAAO,CiFpDZ,gBAAgB,CjFoDX,OAAO,CiF/Cb,AU7CH,AVyCI,IUzCA,AAkED,UAAU,AAqBR,SAAS,CVlDV,WAAW,CAIX,CAAC,CUzCL,AV0CI,IU1CA,AAkED,UAAU,AAqBR,SAAS,CVlDV,WAAW,CAKX,IAAI,AAAC,CACH,KAAK,CARmC,IAAI,CAS7C,AU5CL,AAAA,IAAI,AAkED,UAAU,AAwBR,WAAW,AAAC,CVtDf,MAAM,CAAE,GAAG,CAAC,KAAK,CjFmDV,OAAO,C2FKX,AA5FL,AVqCI,IUrCA,AAkED,UAAU,AAwBR,WAAW,CVrDZ,WAAW,AAAC,CACZ,KAAK,CAHqC,IAAI,CAI9C,UAAU,CjFgDL,OAAO,CiF/CZ,gBAAgB,CjF+CX,OAAO,CiF1Cb,AU7CH,AVyCI,IUzCA,AAkED,UAAU,AAwBR,WAAW,CVrDZ,WAAW,CAIX,CAAC,CUzCL,AV0CI,IU1CA,AAkED,UAAU,AAwBR,WAAW,CVrDZ,WAAW,CAKX,IAAI,AAAC,CACH,KAAK,CARmC,IAAI,CAS7C,AU5CL,AAAA,IAAI,AAkED,UAAU,AA2BR,YAAY,AAAC,CVzDhB,MAAM,CAAE,GAAG,CAAC,KAAK,CjFoDV,OAAO,C2FOX,AA/FL,AVqCI,IUrCA,AAkED,UAAU,AA2BR,YAAY,CVxDb,WAAW,AAAC,CACZ,KAAK,CAHqC,IAAI,CAI9C,UAAU,CjFiDL,OAAO,CiFhDZ,gBAAgB,CjFgDX,OAAO,CiF3Cb,AU7CH,AVyCI,IUzCA,AAkED,UAAU,AA2BR,YAAY,CVxDb,WAAW,CAIX,CAAC,CUzCL,AV0CI,IU1CA,AAkED,UAAU,AA2BR,YAAY,CVxDb,WAAW,CAKX,IAAI,AAAC,CACH,KAAK,CARmC,IAAI,CAS7C,AU5CL,AAAA,IAAI,AAkED,UAAU,AA8BR,YAAY,AAAC,CV5DhB,MAAM,CAAE,GAAG,CAAC,KAAK,CjFsDV,OAAO,C2FQX,AAlGL,AVqCI,IUrCA,AAkED,UAAU,AA8BR,YAAY,CV3Db,WAAW,AAAC,CACZ,KAAK,CAHqC,IAAI,CAI9C,UAAU,CjFmDL,OAAO,CiFlDZ,gBAAgB,CjFkDX,OAAO,CiF7Cb,AU7CH,AVyCI,IUzCA,AAkED,UAAU,AA8BR,YAAY,CV3Db,WAAW,CAIX,CAAC,CUzCL,AV0CI,IU1CA,AAkED,UAAU,AA8BR,YAAY,CV3Db,WAAW,CAKX,IAAI,AAAC,CACH,KAAK,CARmC,IAAI,CAS7C,AU5CL,AAoG+B,IApG3B,AAkED,UAAU,CAkCP,WAAW,CAAG,UAAU,CAAC,IAAI,AAAC,CAC9B,MAAM,CAAE,CAAE,CACV,UAAU,CAAE,IAAK,CAClB,AAvGL,AA2GQ,IA3GJ,AAkED,UAAU,CAwCR,AAAA,KAAC,EAAO,IAAI,AAAX,EACE,WAAW,AAAC,CACZ,KAAK,CAAE,IAAK,CACb,AA7GP,AAoHM,IApHF,CAmHF,UAAU,CACN,IAAI,AAAC,CACL,aAAa,CAAE,GAAI,CACpB,AAtHL,AA0HE,IA1HE,CA0HF,WAAW,AAAC,CACV,UAAU,CAAE,MAAO,CACnB,KAAK,CAAE,IAAK,CACZ,WAAW,CAAE,GAAI,CACjB,SAAS,CAAE,IAAK,CAChB,aAAa,CAAE,KAAM,CACtB,AAGH,AAGI,IAHA,CAGA,QAAQ,CAHZ,AAII,IAJA,CAIA,YAAY,CAHhB,AAEI,gBAFY,CAEZ,QAAQ,CAFZ,AAGI,gBAHY,CAGZ,YAAY,AAAC,CACb,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,IAAI,CAAE,CAAE,CACR,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACd,AAVH,AAYE,IAZE,CAYF,QAAQ,CAXV,AAWE,gBAXc,CAWd,QAAQ,AAAC,CACP,OAAO,CAAE,EAAG,CACZ,UAAU,CAAE,qBAAI,ChEtJhB,aAAa,CqDwFG,GAAG,CWyEpB,AAzBH,AAgBM,IAhBF,CAYF,QAAQ,CAIJ,GAAG,CAfT,AAeM,gBAfU,CAWd,QAAQ,CAIJ,GAAG,AAAC,CACJ,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,GAAI,CACT,IAAI,CAAE,GAAI,CACV,WAAW,CAAE,KAAM,CACnB,UAAU,CAAE,KAAM,CAClB,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CACjB,AAxBL,AA2BU,IA3BN,CA2BF,QAAQ,AAAA,KAAK,CA1Bf,AA0BU,gBA1BM,CA0Bd,QAAQ,AAAA,KAAK,AAAC,CACZ,UAAU,CAAE,eAAI,CACjB,AAIH,AAAA,WAAW,A9D5KR,OAAO,C8D6KV,AAAA,SAAS,A9D7KN,OAAO,C8D8KV,AAAA,WAAW,A9D9KR,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,A8D+KH,AAAA,WAAW,AAAC,CACV,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,KAAM,CACf,OAAO,CXxFK,IAAI,CWyFhB,QAAQ,CAAE,QAAS,CAwCpB,AA5CD,AAAA,WAAW,AAOR,YAAY,AAAC,CACZ,aAAa,CAAE,GAAG,CAAC,KAAK,CXjGT,OAAO,CWqGvB,AAHC,AATJ,cASkB,CATlB,WAAW,AAOR,YAAY,AAEM,CACf,aAAa,CAAE,IAAK,CACrB,AAXL,AAeI,WAfO,CAeP,GAAG,CAfP,AAgBI,WAhBO,CAgBP,UAAU,CAhBd,AAiBI,WAjBO,CAiBP,IAAI,CAjBR,AAkBE,WAlBS,CAkBT,UAAU,AAAC,CACT,OAAO,CAAE,YAAa,CACtB,SAAS,CAAE,IAAK,CAChB,MAAM,CAAE,CAAE,CACV,WAAW,CAAE,CAAE,CAChB,AAvBH,AAwBI,WAxBO,CAwBP,GAAG,CAxBP,AAyBI,WAzBO,CAyBP,UAAU,CAzBd,AA0BI,WA1BO,CA0BP,IAAI,AAAC,CACL,YAAY,CAAE,GAAI,CACnB,AA5BH,AA6BI,WA7BO,CA6BP,UAAU,AAAC,CACX,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,GAAG,CAAE,GAAI,CAWV,AA3CH,AAiC0B,WAjCf,CA6BP,UAAU,EAIV,AAAA,WAAC,CAAY,SAAS,AAArB,CAAuB,CACtB,QAAQ,CAAE,QAAS,CACpB,AAnCL,AAsCM,WAtCK,CA6BP,UAAU,AAQT,WAAW,CACV,cAAc,AAAC,CACb,KAAK,CAAE,CAAE,CACT,IAAI,CAAE,IAAK,CACZ,AAMP,AAAA,aAAa,AAAC,CACZ,OAAO,CAAE,GAAI,CACb,SAAS,CAAE,IAAK,CAChB,UAAU,CAAE,WAAY,CACxB,KAAK,C3F3HqB,OAAO,C2FmIlC,AAPC,AALF,KAKO,CALP,aAAa,CAAb,AAAA,aAAa,AAMV,MAAM,AAAC,CACN,KAAK,C3F/HmB,OAAO,C2FgIhC,AARH,AAAA,aAAa,AASV,IAAI,AAAA,OAAO,AAAC,CACX,UAAU,CAAE,IAAK,CAClB,AAIH,AAAA,SAAS,AAAC,CVpKR,aAAa,CUqKgB,CAAC,CAAE,CAAC,CXvJf,GAAG,CAAH,GAAG,CWwJrB,OAAO,CXrJK,IAAI,CWoLjB,AA9BC,AAHF,UAGY,CAHZ,SAAS,AAGM,ChE3OX,uBAAuB,CqDkFP,GAAG,CrDjFnB,sBAAsB,CqDiFN,GAAG,CW2JpB,AALH,AAOI,SAPK,CAOL,MAAM,AAAC,CACP,aAAa,CAAE,CAAE,CAKlB,AAbH,AASmB,SATV,CAOL,MAAM,CAEJ,KAAK,CAAG,EAAE,CAAG,EAAE,CATrB,AAUmB,SAVV,CAOL,MAAM,CAGJ,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CAChB,gBAAgB,CAAE,CAAE,CACrB,AAZL,AAgBE,SAhBO,CAgBP,GAAG,AAAC,CACF,UAAU,CAAE,GAAI,CACjB,AAlBH,AAoBE,SApBO,CAoBP,iBAAiB,AAAC,CAChB,MAAM,CAAE,KAAM,CACf,AAtBH,AAuBe,SAvBN,AAuBN,WAAW,CAAC,iBAAiB,AAAC,CAC7B,MAAM,CAAE,IAAK,CACd,AAzBH,AA8BE,SA9BO,CA8BP,eAAe,AAAC,CACd,0BAA0B,CXrLV,GAAG,CWsLpB,AAIH,AAAA,WAAW,AAAC,CVxMV,aAAa,CUyMgB,CAAC,CAAE,CAAC,CX3Lf,GAAG,CAAH,GAAG,CW4LrB,UAAU,CAAE,GAAG,CAAC,KAAK,CX7LJ,OAAO,CW8LxB,OAAO,CX1LK,IAAI,CW2LhB,gBAAgB,CX7LF,IAAI,CW8LnB,AAED,AAAA,aAAa,AAAC,CAEZ,MAAM,CAAE,MAAO,CAOhB,AALG,MAAM,EAAL,SAAS,EAAE,KAAK,EAJrB,AAGI,aAHS,CAGT,EAAE,AAAC,CAED,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,IAAK,CAEtB,CAIH,AAAA,aAAa,AAAC,CACZ,UAAU,CAAE,OAAQ,CA6BrB,AA9BD,AAEE,aAFW,CAEX,YAAY,AAAC,CAEX,OAAO,CAAE,KAAM,CACf,aAAa,CAAE,cAAe,CAW/B,AAhBH,AAEE,aAFW,CAEX,YAAY,A9D1SX,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,A8DoSH,AAEE,aAFW,CAEX,YAAY,AAIT,aAAa,AAAC,CACb,aAAa,CAAE,CAAE,CAClB,AARL,AAEE,aAFW,CAEX,YAAY,AAOT,cAAc,AAAC,CACd,WAAW,CAAE,CAAE,CAChB,AAXL,AAYI,aAZS,CAEX,YAAY,CAUV,GAAG,AAAC,CAEF,KAAK,CAAE,IAAK,CACb,AAfL,AAiBE,aAjBW,CAiBX,aAAa,AAAC,CACZ,WAAW,CAAE,IAAK,CAClB,KAAK,CAAE,IAAK,CACb,AApBH,AAqBE,aArBW,CAqBX,SAAS,AAAC,CACR,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,KAAM,CACf,WAAW,CAAE,GAAI,CAClB,AAzBH,AA0BE,aA1BW,CA0BX,WAAW,AAAC,CACV,WAAW,CAAE,GAAI,CACjB,SAAS,CAAE,IAAK,CACjB,AAQH,AAAA,UAAU,AAAC,CACT,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,CAAE,CACX,UAAU,CAAE,IAAK,CACjB,QAAQ,CAAE,IAAK,CAiFhB,AArFD,AAMI,UANM,CAMN,EAAE,AAAC,ChEhVH,aAAa,CgEiVU,GAAG,CAC1B,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,OAAQ,CACpB,aAAa,CAAE,GAAI,CACnB,WAAW,CAAE,iBAAkB,CAC/B,KAAK,CAAE,IAAK,CAgDb,AA5DH,AAMI,UANM,CAMN,EAAE,AAOD,aAAa,AAAC,CACb,aAAa,CAAE,CAAE,CAClB,AAfL,AAiB2B,UAjBjB,CAMN,EAAE,CAWA,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAiB,CACvB,MAAM,CAAE,YAAa,CACtB,AAnBL,AAqBI,UArBM,CAMN,EAAE,CAeF,KAAK,AAAC,CACJ,OAAO,CAAE,YAAa,CACtB,WAAW,CAAE,GAAI,CACjB,WAAW,CAAE,GAAI,CAClB,AAzBL,AA4BI,UA5BM,CAMN,EAAE,CAsBF,MAAM,AAAC,CACL,WAAW,CAAE,IAAK,CAClB,SAAS,CAAE,GAAI,CAChB,AA/BL,AAkCI,UAlCM,CAMN,EAAE,CA4BF,MAAM,AAAC,CACL,OAAO,CAAE,IAAK,CACd,KAAK,CAAE,KAAM,CACb,KAAK,C3FnRF,OAAO,C2F0RX,AA5CL,AAuCQ,UAvCE,CAMN,EAAE,CA4BF,MAAM,CAKF,GAAG,CAvCX,AAuCe,UAvCL,CAMN,EAAE,CA4BF,MAAM,CAKK,UAAU,CAvCzB,AAuC6B,UAvCnB,CAMN,EAAE,CA4BF,MAAM,CAKmB,IAAI,AAAC,CAC1B,YAAY,CAAE,GAAI,CAClB,MAAM,CAAE,OAAQ,CACjB,AA1CP,AA6CY,UA7CF,CAMN,EAAE,AAuCD,MAAM,CAAC,MAAM,AAAC,CACb,OAAO,CAAE,YAAa,CACvB,AA/CL,AAMI,UANM,CAMN,EAAE,AA2CD,KAAK,AAAC,CACL,KAAK,CAAE,IAAK,CASb,AA3DL,AAmDM,UAnDI,CAMN,EAAE,AA2CD,KAAK,CAEJ,KAAK,AAAC,CACJ,eAAe,CAAE,YAAa,CAC9B,WAAW,CAAE,GAAI,CAClB,AAtDP,AAwDM,UAxDI,CAMN,EAAE,AA2CD,KAAK,CAOJ,MAAM,AAAC,CACL,UAAU,C3F5RU,OAAO,C2F4RT,UAAU,CAC7B,AA1DP,AA+DE,UA/DQ,CA+DR,OAAO,AAAC,CACN,iBAAiB,C3F9SZ,OAAO,C2F+Sb,AAjEH,AAkEE,UAlEQ,CAkER,QAAQ,AAAC,CACP,iBAAiB,C3FhTZ,OAAO,C2FiTb,AApEH,AAqEE,UArEQ,CAqER,KAAK,AAAC,CACJ,iBAAiB,C3F/SZ,OAAO,C2FgTb,AAvEH,AAwEE,UAxEQ,CAwER,QAAQ,AAAC,CACP,iBAAiB,C3FpTZ,OAAO,C2FqTb,AA1EH,AA2EE,UA3EQ,CA2ER,QAAQ,AAAC,CACP,iBAAiB,C3FtTZ,OAAO,C2FuTb,AA7EH,AA+EE,UA/EQ,CA+ER,OAAO,AAAC,CACN,OAAO,CAAE,YAAa,CACtB,MAAM,CAAE,IAAK,CACb,MAAM,CAAE,KAAM,CACf,AAOH,AAAA,KAAK,AAAC,CACJ,OAAO,CAAE,iBAAkB,CAqD5B,AAtDD,AAGE,KAHG,CAGH,KAAK,AAAC,CAEJ,aAAa,CAAE,IAAK,CA+CrB,AApDH,AAGE,KAHG,CAGH,KAAK,A9D1aJ,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,A8DmaH,AAOM,KAPD,CAGH,KAAK,CAID,GAAG,AAAC,CACJ,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,MAAM,CAAE,qBAAsB,ChE9ahC,aAAa,CgE+aY,GAAG,CAC3B,AAZL,AAcM,KAdD,CAGH,KAAK,CAWD,OAAO,AAAC,CACR,MAAM,CAAE,GAAG,CAAC,KAAK,C3FpVd,OAAO,C2FqVX,AAhBL,AAiBM,KAjBD,CAGH,KAAK,CAcD,QAAQ,AAAC,CACT,MAAM,CAAE,GAAG,CAAC,KAAK,C3F1Vd,OAAO,C2F2VX,AAnBL,AAsBM,KAtBD,CAGH,KAAK,CAmBD,QAAQ,AAAC,CACT,WAAW,CAAE,IAAK,CAClB,UAAU,CAAE,KAAM,CAKnB,AA7BL,AAyBQ,KAzBH,CAGH,KAAK,CAmBD,QAAQ,CAGN,KAAK,AAAC,CACN,OAAO,CAAE,KAAM,CACf,WAAW,CAAE,GAAI,CAClB,AA5BP,AAgCM,KAhCD,CAGH,KAAK,CA6BD,WAAW,AAAC,ChEpcd,aAAa,CqDqHU,GAAG,CWiVxB,UAAU,CAAE,OAAQ,CACpB,WAAW,CAAE,IAAK,CAClB,YAAY,CAAE,IAAK,CACnB,OAAO,CAAE,IAAK,CAcf,AAnDL,AAsCQ,KAtCH,CAGH,KAAK,CA6BD,WAAW,CAMT,EAAE,AAAC,CACH,MAAM,CAAE,SAAU,CAClB,WAAW,CAAE,GAAI,CACjB,SAAS,CAAE,IAAK,CACjB,AA1CP,AA2CQ,KA3CH,CAGH,KAAK,CA6BD,WAAW,CAWT,CAAC,CA3CT,AA2Ca,KA3CR,CAGH,KAAK,CA6BD,WAAW,CAWJ,SAAS,AAAC,CACf,WAAW,CAAE,GAAI,CACjB,SAAS,CAAE,IAAK,CAChB,UAAU,CAAE,MAAO,CACnB,MAAM,CAAE,CAAE,CAEX,AAjDP,AAgCM,KAhCD,CAGH,KAAK,CA6BD,WAAW,A9Dvcd,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,A8D8dH,AAAA,UAAU,AAAC,CACT,SAAS,CAAE,KAAM,CAClB,AAID,AACE,MADI,CACJ,WAAW,AAAC,CACV,KAAK,CAAE,IAAK,CACb,ACxeH,AAAA,SAAS,AAAC,CACR,OAAO,CAAE,KAAM,CACf,UAAU,CAAE,IAAK,CACjB,UAAU,CAAE,IAAK,CACjB,KAAK,CAAE,IAAK,CACZ,UAAU,CZqFI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CrD1F1B,aAAa,CiEMQ,GAAG,CAC1B,aAAa,CAAE,IAAK,CAgBrB,AAvBD,AASE,SATO,CASP,KAAK,AAAC,CACJ,SAAS,C5F+OI,OAAO,C4F9OrB,AAXH,AAaiB,SAbR,CAaP,SAAS,CAAA,AAAA,KAAC,AAAA,CAAO,CACf,gBAAgB,CAAE,iBAAI,CACtB,MAAM,CAAE,KAAM,CACd,MAAM,CAAE,GAAI,CjEhBZ,aAAa,CiEkBU,CAAC,CACzB,AAnBH,AAoBkB,SApBT,CAoBP,SAAS,CAAA,AAAA,KAAC,AAAA,CAAM,sBAAsB,AAAC,CACrC,gBAAgB,CAAE,iBAAI,CACvB,AAGH,AAAA,cAAc,AAAC,CjEEX,yBAAyB,CiEDC,GAAG,CjEE7B,sBAAsB,CiEFI,GAAG,CAC/B,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,MAAO,CACnB,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,IAAK,CAClB,UAAU,CAAE,eAAI,CAKjB,AAdD,AAWI,cAXU,CAWV,GAAG,AAAC,CACJ,SAAS,CAAE,IAAK,CACjB,AAGH,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,QAAS,CAClB,WAAW,CAAE,IAAK,CACnB,AAED,AAAA,gBAAgB,AAAC,CACf,OAAO,CAAE,KAAM,CACf,WAAW,CAAE,IAAK,CACnB,AAED,AAAA,qBAAqB,CACrB,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,KAAM,CACf,SAAS,C5FmMM,OAAO,C4FlMtB,WAAW,CAAE,MAAO,CACpB,QAAQ,CAAE,MAAO,CACjB,aAAa,CAAE,QAAS,CACzB,AAED,AAAA,cAAc,AAAC,CACb,cAAc,CAAE,SAAU,CAC3B,AAED,AAAA,cAAc,AAAC,CACb,OAAO,CAAE,KAAM,CAChB,AAED,AAAA,qBAAqB,AAAC,CACpB,MAAM,CAAE,CAAE,CACX,ACrED,AAAA,SAAS,AAAC,CACR,QAAQ,CAAE,QAAS,CACnB,MAAM,CAAE,UAAW,CACnB,OAAO,CAAE,CAAE,CACX,UAAU,CAAE,IAAK,CAuFlB,AA3FD,AAAA,SAAS,AAON,OAAO,AAAC,CACP,OAAO,CAAE,EAAG,CACZ,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,MAAM,CAAE,CAAE,CACV,KAAK,CAAE,GAAI,CACX,UAAU,CAAE,IAAK,CACjB,IAAI,CAAE,IAAK,CACX,MAAM,CAAE,CAAE,ClEhBV,aAAa,CkEiBU,GAAG,CAC3B,AAjBH,AAmBI,SAnBK,CAmBL,EAAE,AAAC,CACH,QAAQ,CAAE,QAAS,CACnB,YAAY,CAAE,IAAK,CACnB,aAAa,CAAE,IAAK,CAwDrB,AA9EH,AAmBI,SAnBK,CAmBL,EAAE,AhEvBH,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,AgEAH,AA0BM,SA1BG,CAmBL,EAAE,CAOA,cAAc,AAAC,ClE3BjB,aAAa,CqDwFG,GAAG,Ca1DjB,UAAU,CAAE,CAAE,CACd,UAAU,CAAE,IAAK,CACjB,KAAK,CAAE,IAAK,CACZ,WAAW,CAAE,IAAK,CAClB,YAAY,CAAE,IAAK,CACnB,OAAO,CAAE,CAAE,CACX,QAAQ,CAAE,QAAS,CAyBpB,AA5DL,AAsCQ,SAtCC,CAmBL,EAAE,CAOA,cAAc,CAYZ,KAAK,AAAC,CACN,KAAK,CAAE,IAAK,CACZ,KAAK,CAAE,KAAM,CACb,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,IAAK,CACjB,AA3CP,AA4CQ,SA5CC,CAmBL,EAAE,CAOA,cAAc,CAkBZ,gBAAgB,AAAC,CACjB,MAAM,CAAE,CAAE,CACV,KAAK,CAAE,IAAK,CACZ,aAAa,CAAE,GAAG,CAAC,KAAK,CbuCb,OAAO,CatClB,OAAO,CAAE,IAAK,CACd,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,GAAI,CAIlB,AAtDP,AAmDU,SAnDD,CAmBL,EAAE,CAOA,cAAc,CAkBZ,gBAAgB,CAOd,CAAC,AAAC,CACF,WAAW,CAAE,GAAI,CAClB,AArDT,AAwDQ,SAxDC,CAmBL,EAAE,CAOA,cAAc,CA8BZ,cAAc,CAxDtB,AAwD0B,SAxDjB,CAmBL,EAAE,CAOA,cAAc,CA8BM,gBAAgB,AAAC,CACnC,OAAO,CAAE,IAAK,CACf,AA1DP,AA+DM,SA/DG,CAmBL,EAAE,CA4CA,GAAG,CA/DT,AAgEM,SAhEG,CAmBL,EAAE,CA6CA,UAAU,CAhEhB,AAiEM,SAjEG,CAmBL,EAAE,CA8CA,IAAI,AAAC,CACL,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,IAAK,CAClB,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,UAAU,C7F8BY,OAAO,C6F7B7B,aAAa,CAAE,GAAI,CACnB,UAAU,CAAE,MAAO,CACnB,IAAI,CAAE,IAAK,CACX,GAAG,CAAE,CAAE,CACR,AA7EL,AAkFM,SAlFG,CAiFL,WAAW,CACT,IAAI,AAAC,CACL,WAAW,CAAE,GAAI,CACjB,OAAO,CAAE,GAAI,CACb,OAAO,CAAE,YAAa,CACtB,gBAAgB,CAAE,IAAK,ClEvFzB,aAAa,CkEyFY,GAAG,CAC3B,AAIL,AAEM,iBAFW,CACb,EAAE,CACA,cAAc,AAAC,CACf,UAAU,CAAE,OAAQ,CACpB,MAAM,CAAE,cAAe,CAKxB,AATL,AAMQ,iBANS,CACb,EAAE,CACA,cAAc,CAIZ,gBAAgB,AAAC,CACjB,mBAAmB,CAAE,IAAK,CAC3B,ACrGP,AAAA,IAAI,AAAC,CnEDD,aAAa,C3B4TQ,MAAM,C8FxT7B,MAAM,CAAE,qBAAsB,CA6C/B,AAhDD,AAAA,IAAI,AAKD,UAAU,AAAC,CACV,cAAc,CAAE,SACjB,CAAC,AAPJ,AAAA,IAAI,AAUD,SAAS,AAAC,CnEXT,aAAa,CmEYU,CAAC,CACxB,kBAAkB,CAAE,IAAK,CACzB,eAAe,CAAE,IAAK,CACtB,UAAU,CAAE,IAAK,CACjB,YAAY,CAAE,GAAI,CACnB,AAhBH,AAAA,IAAI,AAmBD,OAAO,AAAC,CACP,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CACxC,eAAe,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CACrC,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CACjC,AAvBH,AAAA,IAAI,AAyBD,MAAM,AAAC,CACN,OAAO,CAAE,IAAK,CACf,AA3BH,AAAA,IAAI,AA8BD,SAAS,AAAC,CACT,QAAQ,CAAE,QAAS,CACnB,QAAQ,CAAE,MAAO,CAelB,AA/CH,AAiCuB,IAjCnB,AA8BD,SAAS,CAGN,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAa,CACnB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,KAAK,CAAE,CAAE,CACT,SAAS,CAAE,IAAK,CAChB,UAAU,CAAE,IAAK,CACjB,SAAS,CAAE,KAAM,CACjB,UAAU,CAAE,KAAM,CAClB,OAAO,CAAE,CAAE,CACX,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,KAAM,CAClB,MAAM,CAAE,OAAQ,CAChB,OAAO,CAAE,KAAM,CAChB,AAKL,AAAA,YAAY,AAAC,CACX,gBAAgB,CAAE,OAAQ,CAC1B,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,IAAK,CAMpB,AATD,AAAA,YAAY,AAIT,MAAM,CAJT,AAAA,YAAY,AAKT,OAAO,CALV,AAAA,YAAY,AAMT,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAGH,AAAA,YAAY,AAAC,CACX,gBAAgB,C9FgCT,OAAO,C8F/Bd,YAAY,CAAE,OAAM,CAIrB,AAND,AAAA,YAAY,AAGT,MAAM,CAHT,AAAA,YAAY,AAGA,OAAO,CAHnB,AAAA,YAAY,AAGU,MAAM,AAAC,CACzB,gBAAgB,CAAE,OAAM,CACzB,AAGH,AAAA,YAAY,AAAC,CACX,gBAAgB,C9FuBT,OAAO,C8FtBd,YAAY,CAAE,OAAM,CAIrB,AAND,AAAA,YAAY,AAGT,MAAM,CAHT,AAAA,YAAY,AAGA,OAAO,CAHnB,AAAA,YAAY,AAGU,MAAM,AAAC,CACzB,gBAAgB,CAAE,OAAM,CACzB,AAGH,AAAA,SAAS,AAAC,CACR,gBAAgB,C9FiBT,OAAO,C8FhBd,YAAY,CAAE,OAAM,CAIrB,AAND,AAAA,SAAS,AAGN,MAAM,CAHT,AAAA,SAAS,AAGG,OAAO,CAHnB,AAAA,SAAS,AAGa,MAAM,AAAC,CACzB,gBAAgB,CAAE,OAAM,CACzB,AAGH,AAAA,WAAW,AAAC,CACV,gBAAgB,C9FIT,OAAO,C8FHd,YAAY,CAAE,OAAM,CAIrB,AAND,AAAA,WAAW,AAGR,MAAM,CAHT,AAAA,WAAW,AAGC,OAAO,CAHnB,AAAA,WAAW,AAGW,MAAM,AAAC,CACzB,gBAAgB,CAAE,OAAM,CACzB,AAGH,AAAA,YAAY,AAAC,CACX,gBAAgB,C9FHT,OAAO,C8FId,YAAY,CAAE,OAAM,CAIrB,AAND,AAAA,YAAY,AAGT,MAAM,CAHT,AAAA,YAAY,AAGA,OAAO,CAHnB,AAAA,YAAY,AAGU,MAAM,AAAC,CACzB,gBAAgB,CAAE,OAAM,CACzB,AAGH,AAAA,YAAY,AAAC,CACX,MAAM,CAAE,cAAe,CACvB,UAAU,CAAE,WAAY,CACxB,KAAK,CAAE,IAAK,CAOb,AAVD,AAAA,YAAY,AAIT,MAAM,CAJT,AAAA,YAAY,AAKT,MAAM,CALT,AAAA,YAAY,AAMT,OAAO,AAAC,CACP,KAAK,CAAE,qBAAI,CACX,YAAY,CAAE,qBAAI,CACnB,AAaH,AAAA,QAAQ,AAAC,CnE7HL,aAAa,CmE8HQ,GAAG,CAC1B,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,QAAS,CAClB,MAAM,CAAE,aAAc,CACtB,SAAS,CAAE,IAAK,CAChB,MAAM,CAAE,IAAK,CACb,UAAU,CAAE,MAAO,CACnB,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,cAAe,CACvB,gBAAgB,CAAE,OAAQ,CAC1B,SAAS,CAAE,IAAK,CA2BjB,AAtCD,AAaI,QAbI,CAaJ,GAAG,CAbP,AAaW,QAbH,CAaG,UAAU,CAbrB,AAayB,QAbjB,CAaiB,IAAI,AAAC,CAC1B,SAAS,CAAE,IAAK,CAChB,OAAO,CAAE,KAAM,CAChB,AAhBH,AAAA,QAAQ,AAkBL,MAAM,AAAC,CACN,UAAU,CAAE,OAAQ,CACpB,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,IAAK,CACpB,AAtBH,AAAA,QAAQ,AAwBL,OAAO,CAxBV,AAAA,QAAQ,AAwBK,MAAM,AAAC,CAChB,kBAAkB,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CACxC,eAAe,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CACrC,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CACjC,AA5BH,AA+BI,QA/BI,CA+BJ,MAAM,AAAC,CACP,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,IAAK,CACV,KAAK,CAAE,KAAM,CACb,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,GAAI,CAClB,AChKH,AAAA,QAAQ,AAAC,CpEFL,aAAa,CoEGQ,GAAG,CAC1B,MAAM,CAAE,UAAW,CACnB,OAAO,CAAE,mBAAoB,CAC7B,WAAW,CAAE,cAAe,CAqC7B,AAzCD,AAKE,QALM,CAKN,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CACZ,eAAe,CAAE,SAAU,CAI5B,AAXH,AAKE,QALM,CAKN,CAAC,AAGE,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AAVL,AAYE,QAZM,CAYN,EAAE,AAAC,CACD,UAAU,CAAE,CAAE,CACd,WAAW,CAAE,GAAI,CAClB,AAfH,AAgBG,QAhBK,CAgBN,CAAC,AAAA,WAAW,AAAC,CACX,aAAa,CAAE,CAAE,CAClB,AAlBH,AAmBE,QAnBM,CAmBN,IAAI,CAnBN,AAoBE,QApBM,CAoBN,UAAU,AAAC,CACT,gBAAgB,CAAE,IAAK,CACxB,AAtBH,AAAA,QAAQ,AAyBL,eAAe,AAAC,CAEf,YAAY,CAAE,OAAM,CACrB,AA5BH,AAAA,QAAQ,AA6BL,gBAAgB,AAAC,CAEhB,YAAY,CAAE,OAAM,CACrB,AAhCH,AAAA,QAAQ,AAiCL,aAAa,AAAC,CAEb,YAAY,CAAE,OAAM,CACrB,AApCH,AAAA,QAAQ,AAqCL,gBAAgB,AAAC,CAEhB,YAAY,CAAE,OAAM,CACrB,ACzCH,AAAA,MAAM,AAAC,CrEDH,aAAa,CqEEQ,GAAG,CAkB3B,AAnBD,AAEE,MAFI,CAEJ,EAAE,AAAC,CACD,WAAW,CAAE,GAAI,CAClB,AAJH,AAKE,MALI,CAKJ,KAAK,AAAC,CACJ,YAAY,CAAE,IAAK,CACpB,AAPH,AAQE,MARI,CAQJ,MAAM,CARR,AAQE,MARI,CWgFN,yBAAyB,AXxEhB,CACL,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,EAAG,CAIb,AAdH,AAQE,MARI,CAQJ,MAAM,AAGH,MAAM,CAXX,AAQE,MARI,CWgFN,yBAAyB,AXrEpB,MAAM,AAAC,CACN,OAAO,CAAE,EAAG,CACb,AAbL,AAeE,MAfI,CAeJ,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CACZ,eAAe,CAAE,SAAU,CAC5B,AAIH,AAAA,cAAc,AAAC,CAEb,YAAY,CAAE,OAAM,CACrB,AAED,AAAA,aAAa,CACb,AAAA,YAAY,AAAC,CAEX,YAAY,CAAE,OAAM,CACrB,AAED,AAAA,cAAc,AAAC,CAEb,YAAY,CAAE,OAAM,CACrB,AAED,AAAA,WAAW,AAAC,CAEV,YAAY,CAAE,OAAM,CACrB,ACzCD,AACU,IADN,CACA,EAAE,CAAG,CAAC,AAAA,MAAM,CADhB,AAEU,IAFN,CAEA,EAAE,CAAG,CAAC,AAAA,OAAO,CAFjB,AAGU,IAHN,CAGA,EAAE,CAAG,CAAC,AAAA,MAAM,AAAC,CACb,KAAK,CAAE,IAAK,CAEb,AAIH,AACS,UADC,CACN,EAAE,CAAG,CAAC,AAAC,CtEZP,aAAa,CsEaU,CAAC,CACxB,UAAU,CAAE,qBAAsB,CAClC,KAAK,CAAE,IAAK,CAMb,AAVH,AAKM,UALI,CACN,EAAE,CAAG,CAAC,CAIJ,GAAG,CALT,AAMM,UANI,CACN,EAAE,CAAG,CAAC,CAKJ,UAAU,CANhB,AAOM,UAPI,CACN,EAAE,CAAG,CAAC,CAMJ,IAAI,AAAC,CACL,YAAY,CAAE,GAAI,CACnB,AATL,AAWgB,UAXN,CAWN,EAAE,AAAA,OAAO,CAAG,CAAC,CAXjB,AAYiB,UAZP,CAYN,EAAE,AAAA,OAAO,CAAG,CAAC,AAAA,MAAM,CAZvB,AAaiB,UAbP,CAaN,EAAE,AAAA,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CACpB,gBAAgB,CjGuEX,OAAO,CiGtEb,AAfH,AAgBgB,UAhBN,CAgBN,EAAE,AAAA,OAAO,CAAG,CAAC,AAAC,CACd,WAAW,CAAE,GAAI,CAClB,AAIH,AACS,YADG,CACR,EAAE,CAAG,CAAC,AAAC,CtElCP,aAAa,CsEmCU,CAAC,CACxB,UAAU,CAAE,CAAE,CACd,WAAW,CAAE,qBAAsB,CACnC,KAAK,CAAE,IAAK,CACb,AANH,AAOgB,YAPJ,CAOR,EAAE,AAAA,OAAO,CAAG,CAAC,CAPjB,AAQiB,YARL,CAQR,EAAE,AAAA,OAAO,CAAG,CAAC,AAAA,MAAM,AAAC,CACpB,UAAU,CAAE,WAAY,CACxB,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,CAAE,CACd,iBAAiB,CjGmDZ,OAAO,CiGlDb,AAbH,AAeM,YAfM,CAeR,EAAE,AAAA,OAAO,AAAC,CACV,aAAa,CAAE,cAAe,CAC9B,KAAK,CAAE,IAAK,CACZ,aAAa,CAAE,IAAK,CACpB,OAAO,CAAE,QAAS,CAClB,cAAc,CAAE,SAAU,CAC3B,AAIH,AAAA,gBAAgB,AAAC,CACf,aAAa,CAAE,IAAK,CACpB,UAAU,CAAE,IAAK,CACjB,UAAU,CjB6BI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CiB5B5B,aAAa,CjB0BK,GAAG,CiBwHtB,AAtJD,AAKI,gBALY,CAKZ,SAAS,AAAC,CACV,MAAM,CAAE,CAAE,CACV,mBAAmB,CAAE,OAAQ,CtE3D7B,uBAAuB,CqDkFP,GAAG,CrDjFnB,sBAAsB,CqDiFN,GAAG,CiB8DpB,AA5FH,AASM,gBATU,CAKZ,SAAS,CAIP,EAAE,AAAC,CACH,UAAU,CAAE,qBAAsB,CAClC,aAAa,CAAE,IAAK,CAuBpB,YAAY,CAAE,GAAI,CACnB,AAnCL,AAYQ,gBAZQ,CAKZ,SAAS,CAIP,EAAE,CAGA,CAAC,AAAC,CACF,KAAK,CAAE,IAAK,CtEvEhB,aAAa,CsEwEc,CAAC,CAYzB,AA1BP,AAYQ,gBAZQ,CAKZ,SAAS,CAIP,EAAE,CAGA,CAAC,AAGA,WAAW,AAAC,CACX,KAAK,CAAE,IAAK,CACb,AAjBT,AAYQ,gBAZQ,CAKZ,SAAS,CAIP,EAAE,CAGA,CAAC,CAZT,AAYQ,gBAZQ,CAKZ,SAAS,CAIP,EAAE,CAGA,CAAC,AAOA,MAAM,AAAC,CACN,UAAU,CAAE,WAAY,CACxB,MAAM,CAAE,CAAE,CACX,AAtBT,AAYQ,gBAZQ,CAKZ,SAAS,CAIP,EAAE,CAGA,CAAC,AAWA,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AAzBT,AA4BW,gBA5BK,CAKZ,SAAS,CAIP,EAAE,AAkBD,IAAK,CAAA,AAAA,OAAO,EACT,CAAC,AAAA,MAAM,CA5BjB,AA6BW,gBA7BK,CAKZ,SAAS,CAIP,EAAE,AAkBD,IAAK,CAAA,AAAA,OAAO,EAET,CAAC,AAAA,MAAM,CA7BjB,AA8BW,gBA9BK,CAKZ,SAAS,CAIP,EAAE,AAkBD,IAAK,CAAA,AAAA,OAAO,EAGT,CAAC,AAAA,OAAO,AAAC,CACT,YAAY,CAAE,WAAY,CAC3B,AAhCT,AAqCQ,gBArCQ,CAKZ,SAAS,CAgCP,EAAE,AAAA,OAAO,AAAC,CACV,gBAAgB,CjGAb,OAAO,CiGYX,AAlDL,AAuCU,gBAvCM,CAKZ,SAAS,CAgCP,EAAE,AAAA,OAAO,CAEL,CAAC,CAvCX,AAwCgB,gBAxCA,CAKZ,SAAS,CAgCP,EAAE,AAAA,OAAO,AAGR,MAAM,CAAG,CAAC,AAAC,CACV,gBAAgB,CAAE,IAAK,CACvB,KAAK,CAAE,IAAK,CACb,AA3CP,AA4CQ,gBA5CQ,CAKZ,SAAS,CAgCP,EAAE,AAAA,OAAO,CAOP,CAAC,AAAC,CACF,gBAAgB,CAAE,WAAY,CAC9B,iBAAiB,CAAE,OAAQ,CAC3B,kBAAkB,CAAE,OAAQ,CAC7B,AAhDP,AAoDQ,gBApDQ,CAKZ,SAAS,CA+CP,EAAE,AAAA,cAAc,AAAC,CACjB,WAAW,CAAE,CAAE,CAMhB,AA3DL,AAuDU,gBAvDM,CAKZ,SAAS,CA+CP,EAAE,AAAA,cAAc,AAEf,OAAO,CACJ,CAAC,AAAC,CACF,iBAAiB,CAAE,WAAY,CAChC,AAzDT,AAKI,gBALY,CAKZ,SAAS,AAyDR,WAAW,AAAC,CACX,KAAK,CAAE,eAAgB,CAgBxB,AA/EL,AAgEQ,gBAhEQ,CAKZ,SAAS,AAyDR,WAAW,CAER,EAAE,AAAC,CACH,KAAK,CAAE,KAAM,CACd,AAlEP,AAmEU,gBAnEM,CAKZ,SAAS,AAyDR,WAAW,CAKR,EAAE,AAAA,cAAc,AAAC,CACjB,YAAY,CAAE,CAAE,CAUjB,AA9EP,AAqEU,gBArEM,CAKZ,SAAS,AAyDR,WAAW,CAKR,EAAE,AAAA,cAAc,CAEd,CAAC,AAAC,CACF,iBAAiB,CAAE,GAAI,CACxB,AAvET,AAyEY,gBAzEI,CAKZ,SAAS,AAyDR,WAAW,CAKR,EAAE,AAAA,cAAc,AAKf,OAAO,CACJ,CAAC,AAAC,CACF,iBAAiB,CAAE,OAAQ,CAC3B,kBAAkB,CAAE,WAAY,CACjC,AA5EX,AAiFQ,gBAjFQ,CAKZ,SAAS,CA4EP,EAAE,AAAA,OAAO,AAAC,CACV,WAAW,CAAE,IAAK,CAClB,OAAO,CAAE,MAAO,CAChB,SAAS,CAAE,IAAK,CAChB,KAAK,CAAE,IAAK,CAMb,AA3FL,AAsFQ,gBAtFQ,CAKZ,SAAS,CA4EP,EAAE,AAAA,OAAO,CAKP,GAAG,CAtFX,AAuFQ,gBAvFQ,CAKZ,SAAS,CA4EP,EAAE,AAAA,OAAO,CAMP,UAAU,CAvFlB,AAwFQ,gBAxFQ,CAKZ,SAAS,CA4EP,EAAE,AAAA,OAAO,CAOP,IAAI,AAAC,CACL,YAAY,CAAE,GAAI,CACnB,AA1FP,AA8FI,gBA9FY,CA8FZ,YAAY,AAAC,CACb,UAAU,CAAE,IAAK,CACjB,OAAO,CAAE,IAAK,CtEtId,0BAA0B,CqDoEV,GAAG,CrDnEnB,yBAAyB,CqDmET,GAAG,CiBoEpB,AAlGH,AAoGmB,gBApGH,CAoGd,SAAS,AAAA,KAAK,CAAG,CAAC,AACf,OAAO,CArGZ,AAoGmB,gBApGH,CAoGd,SAAS,AAAA,KAAK,CAAG,CAAC,AAEf,MAAM,AAAC,CACN,UAAU,CAAE,WAAY,CACxB,KAAK,CAAE,IAAK,CACb,AAzGL,AA8GU,gBA9GM,AA4Gb,YAAY,CACT,SAAS,CACP,EAAE,AAAA,OAAO,AAAC,CACV,gBAAgB,CjGzEf,OAAO,CiG0ET,AAhHP,AAqHU,gBArHM,AAmHb,SAAS,CACN,SAAS,CACP,EAAE,AAAA,OAAO,AAAC,CACV,gBAAgB,CjG/Ef,OAAO,CiGgFT,AAvHP,AA4HU,gBA5HM,AA0Hb,WAAW,CACR,SAAS,CACP,EAAE,AAAA,OAAO,AAAC,CACV,gBAAgB,CjG3Ff,OAAO,CiG4FT,AA9HP,AAmIU,gBAnIM,AAiIb,YAAY,CACT,SAAS,CACP,EAAE,AAAA,OAAO,AAAC,CACV,gBAAgB,CjGjGf,OAAO,CiGkGT,AArIP,AA0IU,gBA1IM,AAwIb,YAAY,CACT,SAAS,CACP,EAAE,AAAA,OAAO,AAAC,CACV,gBAAgB,CjGtGf,OAAO,CiGuGT,AA5IP,AAiJU,gBAjJM,AA+Ib,YAAY,CACT,SAAS,CACP,EAAE,AAAA,OAAO,AAAC,CACV,gBAAgB,CjGrGI,OAAO,CiGsG5B,AAMP,AACS,WADE,CACP,EAAE,CAAG,CAAC,AAAC,CACP,UAAU,CAAE,OAAQ,CACpB,KAAK,CAAE,IAAK,CACb,AAJH,AAMW,WANA,AAKR,gBAAgB,CACb,EAAE,CAAG,CAAC,AAAC,CtEzNT,aAAa,CsE0NY,CAAC,CAAC,UAAU,CACpC,AC3NL,AAAA,cAAc,AAAC,CACb,UAAU,CAAE,IAAK,CACjB,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,CAAE,CA4BZ,AA/BD,AAII,cAJU,CAIV,KAAK,AAAC,CvEJN,aAAa,CqDwFG,GAAG,CkBhFnB,OAAO,CAAE,MAAO,CAChB,UAAU,CAAE,IAAK,CAClB,AAVH,AAII,cAJU,CAIV,KAAK,ArEPN,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,AqEDH,AAWE,cAXY,CAWZ,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CAKb,AAjBH,AAaI,cAbU,CAWZ,YAAY,CAEV,GAAG,AAAC,CACF,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACd,AAhBL,AAkBE,cAlBY,CAkBZ,aAAa,AAAC,CACZ,WAAW,CAAE,IAAK,CACnB,AApBH,AAqBE,cArBY,CAqBZ,cAAc,AAAC,CACb,WAAW,CAAE,GAAI,CAClB,AAvBH,AAwBE,cAxBY,CAwBZ,oBAAoB,AAAC,CACnB,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,QAAQ,CAAE,MAAO,CACjB,WAAW,CAAE,MAAO,CACpB,aAAa,CAAE,QAAS,CACzB,AAGH,AAAuB,oBAAH,CAAG,KAAK,AAAC,CvEjCzB,aAAa,CuEmCQ,CAAC,CACxB,aAAa,CAAE,GAAG,CAAC,KAAK,ClBmDP,OAAO,CkB/CzB,AAPD,AAAuB,oBAAH,CAAG,KAAK,AAIzB,aAAa,AAAC,CACb,mBAAmB,CAAE,CAAE,CACxB,ACtCH,AAMQ,MANF,CAEF,KAAK,CAGH,EAAE,CACA,EAAE,CANV,AAOQ,MAPF,CAEF,KAAK,CAGH,EAAE,CAEA,EAAE,CAPV,AAMQ,MANF,CAGF,KAAK,CAEH,EAAE,CACA,EAAE,CANV,AAOQ,MAPF,CAGF,KAAK,CAEH,EAAE,CAEA,EAAE,CAPV,AAMQ,MANF,CAIF,KAAK,CACH,EAAE,CACA,EAAE,CANV,AAOQ,MAPF,CAIF,KAAK,CACH,EAAE,CAEA,EAAE,AAAC,CACH,UAAU,CAAE,GAAG,CAAC,KAAK,CnB8EV,OAAO,CmB7EnB,AATP,AAaiB,MAbX,CAaF,KAAK,CAAG,EAAE,CAAG,EAAE,AAAC,CAChB,aAAa,CAAE,GAAG,CAAC,KAAK,CnBwET,OAAO,CmBvEvB,AAfH,AAiBQ,MAjBF,CAiBJ,EAAE,CAAC,EAAE,CAAC,SAAS,AAAC,CACd,UAAU,CAAE,GAAI,CACjB,AAIH,AAAA,eAAe,AAAC,CACd,MAAM,CAAE,GAAG,CAAC,KAAK,CnB8DA,OAAO,CmB7CzB,AAlBD,AAMQ,eANO,CAEX,KAAK,CAGH,EAAE,CACA,EAAE,CANV,AAOQ,eAPO,CAEX,KAAK,CAGH,EAAE,CAEA,EAAE,CAPV,AAMQ,eANO,CAGX,KAAK,CAEH,EAAE,CACA,EAAE,CANV,AAOQ,eAPO,CAGX,KAAK,CAEH,EAAE,CAEA,EAAE,CAPV,AAMQ,eANO,CAIX,KAAK,CACH,EAAE,CACA,EAAE,CANV,AAOQ,eAPO,CAIX,KAAK,CACH,EAAE,CAEA,EAAE,AAAC,CACH,MAAM,CAAE,GAAG,CAAC,KAAK,CnBuDN,OAAO,CmBtDnB,AATP,AAaM,eAbS,CAYX,KAAK,CAAG,EAAE,CACR,EAAE,CAbR,AAcM,eAdS,CAYX,KAAK,CAAG,EAAE,CAER,EAAE,AAAC,CACH,mBAAmB,CAAE,GAAI,CAC1B,AAIL,AAAM,MAAA,AAAA,UAAU,CAAhB,AAEE,MAFI,AAAA,UAAU,CAEd,EAAE,CAFJ,AAGE,MAHI,AAAA,UAAU,CAGd,EAAE,AAAC,CACD,MAAM,CAAE,CAAE,CACX,AAIH,AAAK,KAAA,AAAA,eAAe,CAApB,AACK,KADA,AAAA,eAAe,CACf,EAAE,CADP,AACS,KADJ,AAAA,eAAe,CACX,EAAE,AAAC,CACR,UAAU,CAAE,MAAO,CACpB,AAGH,AACE,MADI,AAAA,MAAM,CACV,EAAE,AAAC,CACD,UAAU,CAAE,IAAK,CAClB,AAHH,AAIE,MAJI,AAAA,MAAM,CAIV,EAAE,AAAC,CACD,UAAU,CAAE,KAAM,CACnB,ACjEH,AAAA,cAAc,AAAC,CACb,gBAAgB,CpGsGU,OAAO,CoGrGjC,KAAK,CAAE,IAAK,CACb,ACHD,AACE,YADU,CACV,SAAS,AAAC,C1EmBR,0BAA0B,C0ElBI,CAAC,C1EmB/B,yBAAyB,C0EnBK,CAAC,CAC/B,QAAQ,CAAE,QAAS,CACnB,UAAU,CAAE,MAAO,CACnB,OAAO,CAAE,CAAE,CACZ,AANH,AAQI,YARQ,AAOT,eAAe,CACd,qBAAqB,AAAC,CpB2DxB,iBAAiB,CAAE,eAAS,CAC5B,aAAa,CAAE,eAAS,CACxB,SAAS,CAAE,eAAS,CoB3DjB,AAIL,AAAA,qBAAqB,AAAC,CpBqDpB,iBAAiB,CAAE,eAAS,CAC5B,aAAa,CAAE,eAAS,CACxB,SAAS,CAAE,eAAS,CoBrDpB,OAAO,CAAE,IAAK,CACd,MAAM,CAAE,KAAM,CACd,QAAQ,CAAE,IAAK,CAChB,AAED,AAAA,gBAAgB,CAChB,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,KAAM,CAChB,AAED,AAAA,gBAAgB,AAAC,CAEf,aAAa,CAAE,IAAK,CACrB,AAHD,AAAA,gBAAgB,AxE7Bb,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,AwE8BH,AAAA,qBAAqB,CACrB,AAAA,qBAAqB,AAAC,CACpB,UAAU,CAAE,yBAA0B,CACvC,AAED,AAAA,iBAAiB,AAAC,C1EpCd,aAAa,C0EqCQ,GAAG,CAC1B,QAAQ,CAAE,QAAS,CACnB,OAAO,CAAE,QAAS,CAClB,UAAU,CrBtBG,OAAO,CqBuBpB,MAAM,CAAE,GAAG,CAAC,KAAK,CrBvBJ,OAAO,CqBwBpB,MAAM,CAAE,YAAa,CACrB,KAAK,CrBqE0B,IAAI,CqBlCpC,AA1CD,AAAA,iBAAiB,AAUd,MAAM,CAVT,AAAA,iBAAiB,AAWd,OAAO,AAAC,CACP,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,IAAK,CACZ,GAAG,CAAE,IAAK,CACV,MAAM,CAAE,iBAAkB,CAC1B,kBAAkB,CrBlCP,OAAO,CqBmClB,OAAO,CAAE,GAAI,CACb,MAAM,CAAE,CAAE,CACV,KAAK,CAAE,CAAE,CACT,cAAc,CAAE,IAAK,CACtB,AArBH,AAAA,iBAAiB,AAuBd,MAAM,AAAC,CACN,YAAY,CAAE,GAAI,CAClB,UAAU,CAAE,IAAK,CAClB,AA1BH,AAAA,iBAAiB,AA2Bd,OAAO,AAAC,CACP,YAAY,CAAE,GAAI,CAClB,UAAU,CAAE,IAAK,CAClB,AACD,AA/BF,MA+BQ,CA/BR,iBAAiB,AA+BN,CACP,YAAY,CAAE,IAAK,CACnB,WAAW,CAAE,CAAE,CAQhB,AAVD,AA/BF,MA+BQ,CA/BR,iBAAiB,AAkCZ,MAAM,CAHT,AA/BF,MA+BQ,CA/BR,iBAAiB,AAmCZ,OAAO,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,IAAI,CAAE,IAAK,CACX,kBAAkB,CAAE,WAAY,CAChC,iBAAiB,CrBzDR,OAAO,CqB0DjB,AAIL,AAAA,gBAAgB,AAAC,C1EhFb,aAAa,C0EiFQ,GAAG,CAC1B,KAAK,CAAE,IAAK,CACZ,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CAId,AAHC,AALF,MAKQ,CALR,gBAAgB,AAKL,CACP,KAAK,CAAE,KAAM,CACd,AAGH,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,KAAM,CACf,aAAa,CAAE,GAAI,CACnB,SAAS,CAAE,IAAK,CACjB,AAED,AAAA,iBAAiB,AAAC,CAChB,WAAW,CAAE,GAAI,CAClB,AAED,AAAA,sBAAsB,AAAC,CACrB,KAAK,CAAE,IAAK,CACb,AAGD,AACE,0BADwB,CACxB,qBAAqB,AAAC,CpBvCtB,iBAAiB,CAAE,eAAS,CAC5B,aAAa,CAAE,eAAS,CACxB,SAAS,CAAE,eAAS,CoBuCnB,AAGH,AAAA,qBAAqB,AAAC,CpB5CpB,iBAAiB,CAAE,kBAAS,CAC5B,aAAa,CAAE,kBAAS,CACxB,SAAS,CAAE,kBAAS,CoB4CpB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,MAAM,CAAE,CAAE,CACV,MAAM,CAAE,KAAM,CACd,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,OAAQ,CACpB,KAAK,CAAE,IAAK,CACZ,QAAQ,CAAE,IAAK,CAChB,AAGD,AAEI,cAFU,CAEV,EAAE,AAAC,CAEH,aAAa,CAAE,GAAG,CAAC,KAAK,CAAC,eAAI,CAC7B,OAAO,CAAE,IAAK,CACd,MAAM,CAAE,CAAE,CAIX,AAVH,AAEI,cAFU,CAEV,EAAE,AxEjIH,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,AwE2HH,AAEI,cAFU,CAEV,EAAE,AAKD,aAAa,AAAC,CACb,aAAa,CAAE,IAAK,CACrB,AAIL,AAAA,kBAAkB,AAAC,C1EzIf,aAAa,C0E0IQ,GAAG,CAC1B,KAAK,CAAE,IAAK,CACZ,KAAK,CAAE,IAAK,CACb,AAED,AAAA,mBAAmB,AAAC,CAClB,WAAW,CAAE,IAAK,CAClB,KAAK,CAAE,IAAK,CACb,AAED,AAAA,mBAAmB,CACnB,AAAA,qBAAqB,AAAC,CACpB,OAAO,CAAE,KAAM,CAChB,AAED,AAAA,mBAAmB,AAAC,CAClB,WAAW,CAAE,GAAI,CAClB,AAED,AAAA,qBAAqB,AAAC,CACpB,SAAS,CAAE,IAAK,CACjB,AAED,AAAA,mBAAmB,AAAC,CAClB,KAAK,CAAE,IAAK,CACZ,WAAW,CAAE,MAAO,CACrB,AAED,AAAA,kBAAkB,AAAC,CACjB,KAAK,CAAE,IAAK,CACb,AAGD,ApBpHW,mBoBoHQ,CpBpHjB,MAAM,CAAG,iBAAiB,AAAC,CACzB,UAAU,CjFoCL,OAAO,CiFnCZ,YAAY,CjFmCP,OAAO,CiFlCZ,KAAK,CAJqC,IAAI,CAS/C,AoB4GH,ApBpHW,mBoBoHQ,CpBpHjB,MAAM,CAAG,iBAAiB,AAIvB,MAAM,CoBgHX,ApBpHW,mBoBoHQ,CpBpHjB,MAAM,CAAG,iBAAiB,AAKvB,OAAO,AAAC,CACP,iBAAiB,CjF+Bd,OAAO,CiF9BX,AoBiHL,ApBxHW,oBoBwHS,CpBxHlB,MAAM,CAAG,iBAAiB,AAAC,CACzB,UAAU,CjFwCL,OAAO,CiFvCZ,YAAY,CjFuCP,OAAO,CiFtCZ,KAAK,CAJqC,IAAI,CAS/C,AoBgHH,ApBxHW,oBoBwHS,CpBxHlB,MAAM,CAAG,iBAAiB,AAIvB,MAAM,CoBoHX,ApBxHW,oBoBwHS,CpBxHlB,MAAM,CAAG,iBAAiB,AAKvB,OAAO,AAAC,CACP,iBAAiB,CjFmCd,OAAO,CiFlCX,AoBqHL,ApB5HW,oBoB4HS,CpB5HlB,MAAM,CAAG,iBAAiB,AAAC,CACzB,UAAU,CjFqCL,OAAO,CiFpCZ,YAAY,CjFoCP,OAAO,CiFnCZ,KAAK,CAJqC,IAAI,CAS/C,AoBoHH,ApB5HW,oBoB4HS,CpB5HlB,MAAM,CAAG,iBAAiB,AAIvB,MAAM,CoBwHX,ApB5HW,oBoB4HS,CpB5HlB,MAAM,CAAG,iBAAiB,AAKvB,OAAO,AAAC,CACP,iBAAiB,CjFgCd,OAAO,CiF/BX,AoByHL,ApBhIW,iBoBgIM,CpBhIf,MAAM,CAAG,iBAAiB,AAAC,CACzB,UAAU,CjFyCL,OAAO,CiFxCZ,YAAY,CjFwCP,OAAO,CiFvCZ,KAAK,CAJqC,IAAI,CAS/C,AoBwHH,ApBhIW,iBoBgIM,CpBhIf,MAAM,CAAG,iBAAiB,AAIvB,MAAM,CoB4HX,ApBhIW,iBoBgIM,CpBhIf,MAAM,CAAG,iBAAiB,AAKvB,OAAO,AAAC,CACP,iBAAiB,CjFoCd,OAAO,CiFnCX,AoB6HL,ApBpIW,oBoBoIS,CpBpIlB,MAAM,CAAG,iBAAiB,AAAC,CACzB,UAAU,CjFuCL,OAAO,CiFtCZ,YAAY,CjFsCP,OAAO,CiFrCZ,KAAK,CAJqC,IAAI,CAS/C,AoB4HH,ApBpIW,oBoBoIS,CpBpIlB,MAAM,CAAG,iBAAiB,AAIvB,MAAM,CoBgIX,ApBpIW,oBoBoIS,CpBpIlB,MAAM,CAAG,iBAAiB,AAKvB,OAAO,AAAC,CACP,iBAAiB,CjFkCd,OAAO,CiFjCX,AqB9DL,AAEI,WAFO,CAEP,EAAE,AAAC,CACH,KAAK,CAAE,GAAI,CACX,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,MAAO,CAYpB,AAlBH,AAOI,WAPO,CAEP,EAAE,CAKF,GAAG,AAAC,C3EPJ,aAAa,C2EQY,GAAG,CAC1B,SAAS,CAAE,IAAK,CAChB,MAAM,CAAE,IAAK,CACd,AAXL,AAYO,WAZI,CAEP,EAAE,CAUA,CAAC,AAAA,MAAM,CAZb,AAcM,WAdK,CAEP,EAAE,CAUA,CAAC,AAAA,MAAM,CAEP,gBAAgB,AAAC,CACf,KAAK,CAAE,IAAK,CACb,AAKP,AAAA,gBAAgB,CAChB,AAAA,gBAAgB,AAAC,CACf,OAAO,CAAE,KAAM,CAChB,AAED,AAAA,gBAAgB,AAAC,CACf,SAAS,CtG8NM,OAAO,CsG7NtB,KAAK,CAAE,IAAK,CACZ,QAAQ,CAAE,MAAO,CACjB,WAAW,CAAE,MAAO,CACpB,aAAa,CAAE,QAAS,CACzB,AAED,AAAA,gBAAgB,AAAC,CACf,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CACjB,ACzCD,AAAA,kBAAkB,AAAC,CACjB,OAAO,CAAE,IAAK,CACd,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,IAAI,CAAE,CAAE,CACR,KAAK,CAAE,CAAE,CACT,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAI,CAC1B,UAAU,CvGsFH,IAAI,CuGjCZ,AA7DD,AAUE,kBAVgB,CAUhB,qBAAqB,AAAC,CACpB,OAAO,CAAE,GAAI,CACb,OAAO,CAAE,IAAK,CACd,QAAQ,CAAE,KAAM,CAChB,GAAG,CAAE,CAAE,CACP,IAAI,CAAE,CAAE,CACR,KAAK,CAAE,CAAE,CACT,MAAM,CAAE,CAAE,CACV,UAAU,CAAE,eAAI,CAChB,OAAO,CAAE,EAAG,CACb,AApBH,AAsBE,kBAtBgB,CAsBhB,aAAa,AAAC,CACZ,MAAM,CAAE,CAAE,CACV,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,IAAK,CACnB,aAAa,CAAE,IAAK,CACrB,AA3BH,AAAA,kBAAkB,CAAlB,AA8BE,kBA9BgB,CA8BhB,aAAa,CA9Bf,AA+BE,kBA/BgB,CA+BhB,kBAAkB,AAAC,CACjB,MAAM,CvBmBsB,IAAe,CuBlB5C,AAjCH,AAmCE,kBAnCgB,CAmChB,kBAAkB,CAnCpB,AAoCE,kBApCgB,CAoChB,mBAAmB,AAAC,CAClB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,CAAE,CACP,OAAO,CAAE,KAAM,CACf,KAAK,CAAE,IAAK,CACZ,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,MAAO,CACnB,WAAW,CvBQiB,IAAe,CuBP3C,MAAM,CAAE,OAAQ,CAKjB,AAjDH,AAmCE,kBAnCgB,CAmChB,kBAAkB,AAUf,MAAM,CA7CX,AAoCE,kBApCgB,CAoChB,mBAAmB,AAShB,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACZ,eAAe,CAAE,IAAK,CACvB,AAhDL,AAmDE,kBAnDgB,CAmDhB,kBAAkB,AAAC,CACjB,IAAI,CAAE,CAAE,CACT,AArDH,AAuDE,kBAvDgB,CAuDhB,mBAAmB,AAAC,CAClB,KAAK,CAAE,CAAE,CACT,UAAU,CAAE,IAAK,CACjB,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,CAAE,CACZ,ACxDH,AAAA,iBAAiB,AACd,KAAK,CADR,AAAA,iBAAiB,AAEd,MAAM,AAAC,CACN,gBAAgB,CAAE,IAAK,CACxB,AAJH,AAKI,iBALa,CAKb,GAAG,AAAC,CACJ,SAAS,CAAE,IAAK,CAChB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,GAAI,CACT,OAAO,CAAE,CAAE,CACX,OAAO,CAAE,YAAa,CACtB,UAAU,CAAE,KAAM,CACnB,ACZH,AAAA,MAAM,AAAC,CACL,UAAU,CAAE,eAAI,CACjB,AAED,AAAA,cAAc,AAAC,C9EJX,aAAa,C8EKQ,CAAC,CAExB,MAAM,CAAE,CAAE,CAIX,AAED,AAAA,aAAa,AAAC,CACZ,mBAAmB,CzByEF,OAAO,CyBxEzB,AAED,AAAA,aAAa,AAAC,CACZ,gBAAgB,CzBqEC,OAAO,CyBpEzB,AAGD,AAIE,cAJY,CAIZ,aAAa,CAJf,AAKE,cALY,CAKZ,aAAa,AAAC,CAEZ,YAAY,CAAE,OAAM,CACrB,AAGH,AAIE,cAJY,CAIZ,aAAa,CAJf,AAKE,cALY,CAKZ,aAAa,AAAC,CAEZ,YAAY,CAAE,OAAM,CACrB,AAGH,AAIE,WAJS,CAIT,aAAa,CAJf,AAKE,WALS,CAKT,aAAa,AAAC,CAEZ,YAAY,CAAE,OAAM,CACrB,AAGH,AAIE,cAJY,CAIZ,aAAa,CAJf,AAKE,cALY,CAKZ,aAAa,AAAC,CAEZ,YAAY,CAAE,OAAM,CACrB,AAGH,AAIE,aAJW,CAIX,aAAa,CAJf,AAKE,aALW,CAKX,aAAa,AAAC,CAEZ,YAAY,CAAE,OAAM,CACrB,ACzEH,AAAA,WAAW,AAAC,CACV,MAAM,CAAE,IAAK,CACb,QAAQ,CAAE,QAAS,CACpB,AAGD,AAEE,YAFU,CAEV,mBAAmB,AAAC,CAClB,OAAO,CAAE,IAAK,CACd,MAAM,CAAE,KAAM,C/ELd,uBAAuB,CqDkFP,GAAG,CrDjFnB,sBAAsB,CqDiFN,GAAG,C0B3EpB,AANH,AAQE,YARU,CAQV,qBAAqB,AAAC,CACpB,UAAU,CAAE,CAAE,CACd,aAAa,CAAE,GAAI,CACnB,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,GAAI,CACjB,WAAW,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,eAAI,CAC5B,AAdH,AAgBE,YAhBU,CAgBV,iBAAiB,AAAC,CAChB,UAAU,CAAE,CAAE,CACf,AAlBH,AAoBE,YApBU,CAoBV,kBAAkB,AAAC,CACjB,QAAQ,CAAE,QAAS,CACnB,GAAG,CAAE,IAAK,CACV,IAAI,CAAE,GAAI,CACV,WAAW,CAAE,KAAM,CAMpB,AA9BH,AAyBM,YAzBM,CAoBV,kBAAkB,CAKd,GAAG,AAAC,CACJ,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,MAAM,CAAE,cAAe,CACxB,AA7BL,AA+BE,YA/BU,CA+BV,WAAW,AAAC,CACV,WAAW,CAAE,IAAK,CACnB,AAIH,AAEE,cAFY,CAEZ,mBAAmB,AAAC,CAClB,OAAO,CAAE,IAAK,C/EzCd,uBAAuB,CqDkFP,GAAG,CrDjFnB,sBAAsB,CqDiFN,GAAG,C0BvCpB,AALH,AAOE,cAPY,CAOZ,qBAAqB,AAAC,CACpB,UAAU,CAAE,GAAI,CAChB,aAAa,CAAE,GAAI,CACnB,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,GAAI,CAClB,AAZH,AAcE,cAdY,CAcZ,iBAAiB,AAAC,CAChB,UAAU,CAAE,CAAE,CACf,AAhBH,AAiBE,cAjBY,CAiBZ,qBAAqB,CAjBvB,AAkBE,cAlBY,CAkBZ,iBAAiB,AAAC,CAChB,WAAW,CAAE,IAAK,CACnB,AApBH,AAuBM,cAvBQ,CAsBZ,kBAAkB,CACd,GAAG,AAAC,CACJ,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,KAAK,CAAE,IAAK,CACb,ACvEL,AACI,iBADa,CACb,MAAM,AAAC,CACP,MAAM,CAAE,CAAE,CACX,AAGH,AAAA,iBAAiB,AAAC,CAChB,OAAO,CAAE,GAAI,CAId,AALD,AAAA,iBAAiB,AAEd,YAAY,AAAC,CACZ,aAAa,CAAE,GAAG,CAAC,KAAK,C3B8ET,OAAO,C2B7EvB,AAGH,AAAA,kBAAkB,AAAC,CACjB,aAAa,CAAE,GAAG,CAAC,KAAK,C3ByEP,OAAO,C2BxExB,OAAO,CAAE,IAAK,CASf,AAXD,AAGE,kBAHgB,CAGhB,EAAE,AAAC,CACD,SAAS,CAAE,IAAK,CAChB,MAAM,CAAE,CAAE,CACX,AANH,AAOE,kBAPgB,CAOhB,EAAE,AAAC,CACD,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,SAAU,CACpB,AAGH,AAAA,kBAAkB,AAAC,CACjB,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CACjB,AAED,AAAA,qBAAqB,AAAC,CACpB,OAAO,CAAE,IAAK,CACf,AAED,AAEE,oBAFkB,CAElB,EAAE,AAAC,CACD,KAAK,CAAE,IAAK,CACZ,KAAK,CAAE,KAAM,CACb,MAAM,CAAE,cAAe,CACvB,aAAa,CAAE,IAAK,CACpB,YAAY,CAAE,IAAK,CACpB,AAGH,AAAA,wBAAwB,AAAC,CACvB,WAAW,CAAE,IAAK,CAClB,KAAK,CAAE,IAAK,CACb,AAED,AAAA,wBAAwB,CACxB,AAAA,wBAAwB,CACxB,AAAA,wBAAwB,AAAC,CACvB,OAAO,CAAE,KAAM,CAChB,AAED,AAAA,wBAAwB,AAAC,CACvB,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,OAAQ,CACrB,AAED,AAAA,wBAAwB,AAAC,CACvB,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CACjB,AAED,AAAA,wBAAwB,AAAC,CACvB,UAAU,CAAE,MAAO,CACnB,SAAS,CAAE,IAAK,CAChB,KAAK,CAAE,IAAK,CACZ,OAAO,CAAE,SAAU,CAQpB,AAZD,AAAA,wBAAwB,AAKrB,QAAQ,AAAC,CACR,OAAO,CAAE,CAAE,CAKZ,AAXH,AAOM,wBAPkB,AAKrB,QAAQ,CAEL,GAAG,AAAC,CACJ,SAAS,CAAE,IAAK,CAChB,MAAM,CAAE,IAAK,CACd,AC5EL,AAAA,WAAW,AAAC,CACV,UAAU,C5GqGgB,OAAO,C4GpGlC,AAED,AAAA,gBAAgB,AAAC,CACf,SAAS,CAAE,IAAK,CAChB,UAAU,CAAE,MAAO,CACnB,aAAa,CAAE,IAAK,CACpB,WAAW,CAAE,GAAI,CAIlB,AARD,AAKE,gBALc,CAKd,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CACb,AAGH,AAAA,mBAAmB,AAAC,CAClB,SAAS,CAAE,KAAM,CACjB,MAAM,CAAE,MAAO,CACf,UAAU,CAAE,GAAI,CACjB,AAGD,AAAY,WAAD,CAAC,gBAAgB,AAAC,CAC3B,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,GAAI,CAClB,AAGD,AAAA,gBAAgB,AAAC,CjF5Bb,aAAa,CiF6BQ,GAAG,CAC1B,OAAO,CAAE,CAAE,CACX,UAAU,CAAE,IAAK,CACjB,QAAQ,CAAE,QAAS,CACnB,MAAM,CAAE,mBAAoB,CAC5B,KAAK,CAAE,KAAM,CACd,AAGD,AAAA,iBAAiB,AAAC,CjFtCd,aAAa,CiFuCQ,GAAG,CAC1B,QAAQ,CAAE,QAAS,CACnB,IAAI,CAAE,KAAM,CACZ,GAAG,CAAE,KAAM,CACX,UAAU,CAAE,IAAK,CACjB,OAAO,CAAE,GAAI,CACb,OAAO,CAAE,EAAG,CAMb,AAbD,AAQI,iBARa,CAQb,GAAG,AAAC,CjF9CJ,aAAa,CiF+CU,GAAG,CAC1B,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACd,AAIH,AAAA,uBAAuB,AAAC,CACtB,WAAW,CAAE,IAAK,CASnB,AAVD,AAEE,uBAFqB,CAErB,aAAa,AAAC,CACZ,MAAM,CAAE,CAAE,CACX,AAJH,AAKE,uBALqB,CAKrB,IAAI,AAAC,CACH,gBAAgB,CAAE,IAAK,CACvB,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,MAAO,CACjB,AAGH,AAAA,kBAAkB,AAAC,CACjB,UAAU,CAAE,IAAK,CAClB,ACnED,AAAA,WAAW,CACX,AAAA,cAAc,AAAC,CACb,SAAS,CAAE,IAAK,CAChB,UAAU,CAAE,MAAO,CACnB,aAAa,CAAE,IAAK,CACpB,WAAW,CAAE,GAAI,CAIlB,AATD,AAME,WANS,CAMT,CAAC,CALH,AAKE,cALY,CAKZ,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CACb,AAGH,AAAA,WAAW,CACX,AAAA,cAAc,AAAC,CACb,UAAU,C7GyFgB,OAAO,C6GxFlC,AAED,AAAA,UAAU,CACV,AAAA,aAAa,AAAC,CACZ,KAAK,CAAE,KAAM,CACb,MAAM,CAAE,OAAQ,CAKjB,AAJC,MAAM,EAAL,SAAS,EAAE,KAAK,EAJnB,AAAA,UAAU,CACV,AAAA,aAAa,AAAC,CAIV,KAAK,CAAE,GAAI,CACX,UAAU,CAAE,IAAK,CAEpB,CAED,AAAA,eAAe,CACf,AAAA,kBAAkB,AAAC,CACjB,UAAU,CAAE,IAAK,CACjB,OAAO,CAAE,IAAK,CACd,UAAU,CAAE,CAAE,CACd,KAAK,CAAE,IAAK,CAIb,AATD,AAME,eANa,CAMb,sBAAsB,CALxB,AAKE,kBALgB,CAKhB,sBAAsB,AAAC,CACrB,KAAK,CAAE,IAAK,CACb,AAGH,AAAA,cAAc,CACd,AAAA,iBAAiB,AAAC,CAChB,MAAM,CAAE,CAAE,CACV,UAAU,CAAE,MAAO,CACnB,OAAO,CAAE,gBAAiB,CAC3B,AAED,AAAA,kBAAkB,AAAC,CACjB,MAAM,CAAE,MAAO,CAChB,AC/CD,AAAA,WAAW,AAAC,CACV,KAAK,CAAE,KAAM,CACb,MAAM,CAAE,gBAAiB,CA6B1B,A1GkCG,MAAM,EAAL,SAAS,EAAE,KAAK,E0GjErB,AAAA,WAAW,AAAC,CAIR,KAAK,CAAE,IAAK,CA2Bf,CA/BD,AAOI,WAPO,CAOP,SAAS,AAAC,CACV,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,KAAM,CACjB,WAAW,CAAE,GAAI,CAKlB,A1GkDC,MAAM,EAAL,SAAS,EAAE,KAAK,E0GjErB,AAOI,WAPO,CAOP,SAAS,AAAC,CAKR,KAAK,CAAE,IAAK,CACZ,UAAU,CAAE,MAAO,CAEtB,CAfH,AAiBI,WAjBO,CAiBP,cAAc,AAAC,CACf,WAAW,CAAE,KAAM,CAWnB,OAAO,CAAE,KAAM,CAChB,A1GmCC,MAAM,EAAL,SAAS,EAAE,KAAK,E0GjErB,AAiBI,WAjBO,CAiBP,cAAc,AAAC,CAGb,WAAW,CAAE,CAAE,CAUlB,CA9BH,AAsBM,WAtBK,CAiBP,cAAc,CAKZ,EAAE,AAAC,CACH,WAAW,CAAE,GAAI,CACjB,SAAS,CAAE,IAAK,CAIjB,A1GqCD,MAAM,EAAL,SAAS,EAAE,KAAK,E0GjErB,AAsBM,WAtBK,CAiBP,cAAc,CAKZ,EAAE,AAAC,CAID,UAAU,CAAE,MAAO,CAEtB,CC3BL,AAAA,QAAQ,AAAC,CACP,QAAQ,CAAE,QAAS,CACnB,UAAU,CAAE,IAAK,CACjB,MAAM,CAAE,iBAAkB,CAC1B,OAAO,CAAE,IAAK,CACd,MAAM,CAAE,SAAU,CACnB,AAED,AAAA,cAAc,AAAC,CACb,UAAU,CAAE,CAAE,CACf,ACVD,AAAA,iBAAiB,AAAC,CAChB,MAAM,CAAE,MAAO,CACf,KAAK,CAAE,KAAM,CACb,OAAO,CAAE,GAAI,CACb,MAAM,CAAE,GAAG,CAAC,KAAK,ChHkGS,OAAO,CgHjGlC,AAED,AAAA,iBAAiB,AAAC,CAChB,SAAS,CAAE,IAAK,CAChB,UAAU,CAAE,GAAI,CACjB,AAED,AAAA,KAAK,AAAC,CACJ,aAAa,CAAE,GAAG,CAAC,KAAK,ChHyFE,OAAO,CgHxFjC,aAAa,CAAE,IAAK,CACpB,cAAc,CAAE,IAAK,CACrB,KAAK,CAAE,IAAK,CASb,AAbD,AAAA,KAAK,AAKF,aAAa,AAAC,CACb,aAAa,CAAE,CAAE,CACjB,aAAa,CAAE,CAAE,CACjB,cAAc,CAAE,CAAE,CACnB,AATH,AAUE,KAVG,CAUH,WAAW,AAAC,CACV,aAAa,CAAE,IAAK,CACrB,ACfH,AAAA,WAAW,AAAC,CACV,QAAQ,CAAE,QAAS,CACnB,YAAY,CAAG,OAAe,CAC9B,UAAU,CAAE,IAAK,CACjB,WAAW,CAAE,MAAO,CACpB,QAAQ,CAAE,MAAO,CACjB,aAAa,CAAE,QAAS,CAoCzB,AA1CD,AAOI,WAPO,CAOP,YAAY,AAAC,CACb,QAAQ,CAAE,QAAS,CACnB,IAAI,CAAE,CAAE,CACR,GAAG,CAAE,CAAE,CACP,MAAM,CAAE,CAAE,CACV,KAAK,CAjBS,MAAiB,CAkB/B,WAAW,CAAG,MAAe,CAC7B,SAAS,CAAE,KAAM,CACjB,UAAU,CAAE,MAAO,CACnB,YAAY,CAAE,GAAG,CAAC,KAAK,CAAC,eAAI,CAC7B,AAjBH,AAAA,WAAW,AAkBR,OAAO,CnE2DV,AmE7EA,anE6Ea,CmE7Eb,WAAW,AnE6EK,IAAI,AmE3DT,CACP,YAAY,CAAG,OAAa,CAM7B,AAzBH,AAoBM,WApBK,AAkBR,OAAO,CAEJ,YAAY,CnEyDlB,AmEzDM,anEyDO,CmE7Eb,WAAW,AnE6EK,IAAI,CmEzDd,YAAY,AAAC,CACb,WAAW,CAzBD,MAAK,CA0Bf,KAAK,CA1BK,MAAK,CA2Bf,SAAS,CAAE,KAAM,CAClB,AAxBL,AAAA,WAAW,AA0BR,OAAO,CnEkDV,AmE5EA,anE4Ea,CmE5Eb,WAAW,AnE4EK,IAAI,AmElDT,CACP,YAAY,CAAG,OAAa,CAM7B,AAjCH,AA4BM,WA5BK,AA0BR,OAAO,CAEJ,YAAY,CnEgDlB,AmEhDM,anEgDO,CmE5Eb,WAAW,AnE4EK,IAAI,CmEhDd,YAAY,AAAC,CACb,WAAW,CAhCD,MAAK,CAiCf,KAAK,CAjCK,MAAK,CAkCf,SAAS,CAAE,KAAM,CAClB,AAhCL,AAAA,WAAW,AAkCR,OAAO,AAAC,CACP,YAAY,CAAG,MAAa,CAM7B,AAzCH,AAoCM,WApCK,AAkCR,OAAO,CAEJ,YAAY,AAAC,CACb,WAAW,CAvCD,OAAK,CAwCf,KAAK,CAxCK,OAAK,CAyCf,SAAS,CAAE,KAAM,CAClB,AAIL,AAAA,gBAAgB,AAAC,CAEf,MAAM,CAAG,MAAe,CACxB,KAAK,CAAG,MAAe,CACvB,OAAO,CAAE,CAAE,CAwBZ,AA5BD,AAKI,gBALY,CAKZ,YAAY,AAAC,CACb,MAAM,CAAE,IAAK,CACb,UAAU,CAAE,MAAO,CACnB,KAAK,CAAE,IAAK,CACb,AATH,AAAA,gBAAgB,AAUb,OAAO,CnEuBV,AmEjCA,anEiCa,CmEjCb,gBAAgB,AnEiCA,IAAI,AmEvBT,CACP,MAAM,CA3DM,MAAK,CA4DjB,KAAK,CA5DO,MAAK,CA6DjB,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CAClB,AAfH,AAAA,gBAAgB,AAgBb,OAAO,CnEgBV,AmEhCA,anEgCa,CmEhCb,gBAAgB,AnEgCA,IAAI,AmEhBT,CACP,MAAM,CAAG,MAAa,CACtB,KAAK,CAAG,MAAa,CACrB,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CAClB,AArBH,AAAA,gBAAgB,AAsBb,OAAO,AAAC,CACP,MAAM,CAAG,OAAa,CACtB,KAAK,CAAG,OAAa,CACrB,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CAClB,AAQH,AAAA,QAAQ,AAAC,CAJP,gBAAgB,CAKI,OAAO,C/FrF3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FoFI,OAAO,C/FnF3B,YAAY,C+F+E+B,eAAI,CAKhD,AAFD,AAAA,QAAQ,A5GnFH,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GmFzB,AAAA,QAAQ,A/FzEL,MAAM,C+FyET,AAAA,QAAQ,A/FxEL,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FiEH,AAAA,QAAQ,A/F9DL,SAAS,C+F8DZ,AAAA,QAAQ,A/F7DL,SAAS,AAAC,CACT,gBAAgB,C+F6DE,OAAO,C/F5DzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F0DH,AAAA,QAAQ,A/FxDL,OAAO,C+FwDV,AAAA,QAAQ,A/FvDL,OAAO,CACR,A+FsDF,K/FtDO,C+FsDP,QAAQ,A/FtDG,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FoDH,AAAA,cAAc,AAAC,CARb,gBAAgB,CASI,OAAO,C/FzF3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FwFI,OAAO,C/FvF3B,YAAY,C+F+E+B,eAAI,CAShD,AAFD,AAAA,cAAc,A5GvFT,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GuFzB,AAAA,cAAc,A/F7EX,MAAM,C+F6ET,AAAA,cAAc,A/F5EX,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FqEH,AAAA,cAAc,A/FlEX,SAAS,C+FkEZ,AAAA,cAAc,A/FjEX,SAAS,AAAC,CACT,gBAAgB,C+FiEE,OAAO,C/FhEzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F8DH,AAAA,cAAc,A/F5DX,OAAO,C+F4DV,AAAA,cAAc,A/F3DX,OAAO,CACR,A+F0DF,K/F1DO,C+F0DP,cAAc,A/F1DH,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FwDH,AAAA,YAAY,AAAC,CAZX,gBAAgB,CAaI,OAAO,C/F7F3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+F4FI,OAAO,C/F3F3B,YAAY,C+F+E+B,eAAI,CAahD,AAFD,AAAA,YAAY,A5G3FP,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G2FzB,AAAA,YAAY,A/FjFT,MAAM,C+FiFT,AAAA,YAAY,A/FhFT,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FyEH,AAAA,YAAY,A/FtET,SAAS,C+FsEZ,AAAA,YAAY,A/FrET,SAAS,AAAC,CACT,gBAAgB,C+FqEE,OAAO,C/FpEzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FkEH,AAAA,YAAY,A/FhET,OAAO,C+FgEV,AAAA,YAAY,A/F/DT,OAAO,CACR,A+F8DF,K/F9DO,C+F8DP,YAAY,A/F9DD,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+F4DH,AAAA,aAAa,AAAC,CAhBZ,gBAAgB,CAiBI,OAAO,C/FjG3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FgGI,OAAO,C/F/F3B,YAAY,C+F+E+B,eAAI,CAiBhD,AAFD,AAAA,aAAa,A5G/FR,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G+FzB,AAAA,aAAa,A/FrFV,MAAM,C+FqFT,AAAA,aAAa,A/FpFV,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+F6EH,AAAA,aAAa,A/F1EV,SAAS,C+F0EZ,AAAA,aAAa,A/FzEV,SAAS,AAAC,CACT,gBAAgB,C+FyEE,OAAO,C/FxEzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FsEH,AAAA,aAAa,A/FpEV,OAAO,C+FoEV,AAAA,aAAa,A/FnEV,OAAO,CACR,A+FkEF,K/FlEO,C+FkEP,aAAa,A/FlEF,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FgEH,AAAA,WAAW,AAAC,CApBV,gBAAgB,CAqBI,OAAO,C/FrG3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FoGI,OAAO,C/FnG3B,YAAY,C+F+E+B,eAAI,CAqBhD,AAFD,AAAA,WAAW,A5GnGN,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GmGzB,AAAA,WAAW,A/FzFR,MAAM,C+FyFT,AAAA,WAAW,A/FxFR,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FiFH,AAAA,WAAW,A/F9ER,SAAS,C+F8EZ,AAAA,WAAW,A/F7ER,SAAS,AAAC,CACT,gBAAgB,C+F6EE,OAAO,C/F5EzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F0EH,AAAA,WAAW,A/FxER,OAAO,C+FwEV,AAAA,WAAW,A/FvER,OAAO,CACR,A+FsEF,K/FtEO,C+FsEP,WAAW,A/FtEA,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FoEH,AAAA,eAAe,AAAC,CAxBd,gBAAgB,CAyBI,OAAO,C/FzG3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FwGI,OAAO,C/FvG3B,YAAY,C+F+E+B,eAAI,CAyBhD,AAFD,AAAA,eAAe,A5GvGV,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GuGzB,AAAA,eAAe,A/F7FZ,MAAM,C+F6FT,AAAA,eAAe,A/F5FZ,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FqFH,AAAA,eAAe,A/FlFZ,SAAS,C+FkFZ,AAAA,eAAe,A/FjFZ,SAAS,AAAC,CACT,gBAAgB,C+FiFE,OAAO,C/FhFzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F8EH,AAAA,eAAe,A/F5EZ,OAAO,C+F4EV,AAAA,eAAe,A/F3EZ,OAAO,CACR,A+F0EF,K/F1EO,C+F0EP,eAAe,A/F1EJ,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FwEH,AAAA,WAAW,AAAC,CA5BV,gBAAgB,CA6BI,IAAO,C/F7G3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+F4GI,IAAO,C/F3G3B,YAAY,C+F+E+B,eAAI,CA6BhD,AAFD,AAAA,WAAW,A5G3GN,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G2GzB,AAAA,WAAW,A/FjGR,MAAM,C+FiGT,AAAA,WAAW,A/FhGR,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FyFH,AAAA,WAAW,A/FtFR,SAAS,C+FsFZ,AAAA,WAAW,A/FrFR,SAAS,AAAC,CACT,gBAAgB,C+FqFE,IAAO,C/FpFzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FkFH,AAAA,WAAW,A/FhFR,OAAO,C+FgFV,AAAA,WAAW,A/F/ER,OAAO,CACR,A+F8EF,K/F9EO,C+F8EP,WAAW,A/F9EA,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+F4EH,AAAA,WAAW,AAAC,CAhCV,gBAAgB,CAiCI,OAAO,C/FjH3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FgHI,OAAO,C/F/G3B,YAAY,C+F+E+B,eAAI,CAiChD,AAFD,AAAA,WAAW,A5G/GN,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G+GzB,AAAA,WAAW,A/FrGR,MAAM,C+FqGT,AAAA,WAAW,A/FpGR,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+F6FH,AAAA,WAAW,A/F1FR,SAAS,C+F0FZ,AAAA,WAAW,A/FzFR,SAAS,AAAC,CACT,gBAAgB,C+FyFE,OAAO,C/FxFzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FsFH,AAAA,WAAW,A/FpFR,OAAO,C+FoFV,AAAA,WAAW,A/FnFR,OAAO,CACR,A+FkFF,K/FlFO,C+FkFP,WAAW,A/FlFA,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FgFH,AAAA,cAAc,AAAC,CApCb,gBAAgB,CAqCI,OAAO,C/FrH3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FoHI,OAAO,C/FnH3B,YAAY,C+F+E+B,eAAI,CAqChD,AAFD,AAAA,cAAc,A5GnHT,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GmHzB,AAAA,cAAc,A/FzGX,MAAM,C+FyGT,AAAA,cAAc,A/FxGX,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FiGH,AAAA,cAAc,A/F9FX,SAAS,C+F8FZ,AAAA,cAAc,A/F7FX,SAAS,AAAC,CACT,gBAAgB,C+F6FE,OAAO,C/F5FzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F0FH,AAAA,cAAc,A/FxFX,OAAO,C+FwFV,AAAA,cAAc,A/FvFX,OAAO,CACR,A+FsFF,K/FtFO,C+FsFP,cAAc,A/FtFH,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FoFH,AAAA,aAAa,AAAC,CAxCZ,gBAAgB,CAyCI,OAAO,C/FzH3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FwHI,OAAO,C/FvH3B,YAAY,C+F+E+B,eAAI,CAyChD,AAFD,AAAA,aAAa,A5GvHR,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GuHzB,AAAA,aAAa,A/F7GV,MAAM,C+F6GT,AAAA,aAAa,A/F5GV,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FqGH,AAAA,aAAa,A/FlGV,SAAS,C+FkGZ,AAAA,aAAa,A/FjGV,SAAS,AAAC,CACT,gBAAgB,C+FiGE,OAAO,C/FhGzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F8FH,AAAA,aAAa,A/F5FV,OAAO,C+F4FV,AAAA,aAAa,A/F3FV,OAAO,CACR,A+F0FF,K/F1FO,C+F0FP,aAAa,A/F1FF,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FwFH,AAAA,cAAc,AAAC,CA5Cb,gBAAgB,CA6CI,OAAO,C/F7H3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+F4HI,OAAO,C/F3H3B,YAAY,C+F+E+B,eAAI,CA6ChD,AAFD,AAAA,cAAc,A5G3HT,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G2HzB,AAAA,cAAc,A/FjHX,MAAM,C+FiHT,AAAA,cAAc,A/FhHX,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FyGH,AAAA,cAAc,A/FtGX,SAAS,C+FsGZ,AAAA,cAAc,A/FrGX,SAAS,AAAC,CACT,gBAAgB,C+FqGE,OAAO,C/FpGzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FkGH,AAAA,cAAc,A/FhGX,OAAO,C+FgGV,AAAA,cAAc,A/F/FX,OAAO,CACR,A+F8FF,K/F9FO,C+F8FP,cAAc,A/F9FH,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+F4FH,AAAA,WAAW,AAAC,CAhDV,gBAAgB,CAiDI,OAAO,C/FjI3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FgII,OAAO,C/F/H3B,YAAY,C+F+E+B,eAAI,CAiDhD,AAFD,AAAA,WAAW,A5G/HN,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G+HzB,AAAA,WAAW,A/FrHR,MAAM,C+FqHT,AAAA,WAAW,A/FpHR,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+F6GH,AAAA,WAAW,A/F1GR,SAAS,C+F0GZ,AAAA,WAAW,A/FzGR,SAAS,AAAC,CACT,gBAAgB,C+FyGE,OAAO,C/FxGzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FsGH,AAAA,WAAW,A/FpGR,OAAO,C+FoGV,AAAA,WAAW,A/FnGR,OAAO,CACR,A+FkGF,K/FlGO,C+FkGP,WAAW,A/FlGA,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FgGH,AAAA,cAAc,AAAC,CApDb,gBAAgB,CAqDI,OAAO,C/FrI3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FoII,OAAO,C/FnI3B,YAAY,C+F+E+B,eAAI,CAqDhD,AAFD,AAAA,cAAc,A5GnIT,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GmIzB,AAAA,cAAc,A/FzHX,MAAM,C+FyHT,AAAA,cAAc,A/FxHX,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FiHH,AAAA,cAAc,A/F9GX,SAAS,C+F8GZ,AAAA,cAAc,A/F7GX,SAAS,AAAC,CACT,gBAAgB,C+F6GE,OAAO,C/F5GzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F0GH,AAAA,cAAc,A/FxGX,OAAO,C+FwGV,AAAA,cAAc,A/FvGX,OAAO,CACR,A+FsGF,K/FtGO,C+FsGP,cAAc,A/FtGH,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FoGH,AAAA,WAAW,AAAC,CAxDV,gBAAgB,CAyDI,OAAO,C/FzI3B,KAAK,C+FyIwB,IAAI,C/FxIjC,gBAAgB,C+FwII,OAAO,C/FvI3B,YAAY,C+F+E+B,eAAI,CAyDhD,AAFD,AAAA,WAAW,A5GvIN,MAAM,AAAC,CaMR,KAAK,C+FkIsB,IAAI,C/FjI/B,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GuIzB,AAAA,WAAW,A/F7HR,MAAM,C+F6HT,AAAA,WAAW,A/F5HR,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FqHH,AAAA,WAAW,A/FlHR,SAAS,C+FkHZ,AAAA,WAAW,A/FjHR,SAAS,AAAC,CACT,gBAAgB,C+FiHE,OAAO,C/FhHzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F8GH,AAAA,WAAW,A/F5GR,OAAO,C+F4GV,AAAA,WAAW,A/F3GR,OAAO,CACR,A+F0GF,K/F1GO,C+F0GP,WAAW,A/F1GA,gBAAgB,AAAC,CACxB,KAAK,C+F0GsB,IAAI,C/FzG/B,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FwGH,AAAA,eAAe,AAAC,CA5Dd,gBAAgB,CA6DI,IAAO,C/F7I3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+F4II,IAAO,C/F3I3B,YAAY,C+F+E+B,eAAI,CA6DhD,AAFD,AAAA,eAAe,A5G3IV,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,IAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G2IzB,AAAA,eAAe,A/FjIZ,MAAM,C+FiIT,AAAA,eAAe,A/FhIZ,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FyHH,AAAA,eAAe,A/FtHZ,SAAS,C+FsHZ,AAAA,eAAe,A/FrHZ,SAAS,AAAC,CACT,gBAAgB,C+FqHE,IAAO,C/FpHzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FkHH,AAAA,eAAe,A/FhHZ,OAAO,C+FgHV,AAAA,eAAe,A/F/GZ,OAAO,CACR,A+F8GF,K/F9GO,C+F8GP,eAAe,A/F9GJ,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,IAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+F4GH,AAAA,WAAW,AAAC,CAhEV,gBAAgB,CAiEI,OAAO,C/FjJ3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FgJI,OAAO,C/F/I3B,YAAY,C+F+E+B,eAAI,CAiEhD,AAFD,AAAA,WAAW,A5G/IN,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G+IzB,AAAA,WAAW,A/FrIR,MAAM,C+FqIT,AAAA,WAAW,A/FpIR,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+F6HH,AAAA,WAAW,A/F1HR,SAAS,C+F0HZ,AAAA,WAAW,A/FzHR,SAAS,AAAC,CACT,gBAAgB,C+FyHE,OAAO,C/FxHzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FsHH,AAAA,WAAW,A/FpHR,OAAO,C+FoHV,AAAA,WAAW,A/FnHR,OAAO,CACR,A+FkHF,K/FlHO,C+FkHP,WAAW,A/FlHA,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FgHH,AAAA,YAAY,AAAC,CApEX,gBAAgB,CAqEI,OAAO,C/FrJ3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FoJI,OAAO,C/FnJ3B,YAAY,C+F+E+B,eAAI,CAqEhD,AAFD,AAAA,YAAY,A5GnJP,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GmJzB,AAAA,YAAY,A/FzIT,MAAM,C+FyIT,AAAA,YAAY,A/FxIT,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FiIH,AAAA,YAAY,A/F9HT,SAAS,C+F8HZ,AAAA,YAAY,A/F7HT,SAAS,AAAC,CACT,gBAAgB,C+F6HE,OAAO,C/F5HzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F0HH,AAAA,YAAY,A/FxHT,OAAO,C+FwHV,AAAA,YAAY,A/FvHT,OAAO,CACR,A+FsHF,K/FtHO,C+FsHP,YAAY,A/FtHD,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FoHH,AAAA,UAAU,AAAC,CAxET,gBAAgB,CAyEI,OAAO,C/FzJ3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FwJI,OAAO,C/FvJ3B,YAAY,C+F+E+B,eAAI,CAyEhD,AAFD,AAAA,UAAU,A5GvJL,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4GuJzB,AAAA,UAAU,A/F7IP,MAAM,C+F6IT,AAAA,UAAU,A/F5IP,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FqIH,AAAA,UAAU,A/FlIP,SAAS,C+FkIZ,AAAA,UAAU,A/FjIP,SAAS,AAAC,CACT,gBAAgB,C+FiIE,OAAO,C/FhIzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+F8HH,AAAA,UAAU,A/F5HP,OAAO,C+F4HV,AAAA,UAAU,A/F3HP,OAAO,CACR,A+F0HF,K/F1HO,C+F0HP,UAAU,A/F1HC,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+FwHH,AAAA,OAAO,AAAC,CA5EN,gBAAgB,CA6EI,OAAO,C/F7J3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+F4JI,OAAO,C/F3J3B,YAAY,C+F+E+B,eAAI,CA6EhD,AAFD,AAAA,OAAO,A5G3JF,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G2JzB,AAAA,OAAO,A/FjJJ,MAAM,C+FiJT,AAAA,OAAO,A/FhJJ,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+FyIH,AAAA,OAAO,A/FtIJ,SAAS,C+FsIZ,AAAA,OAAO,A/FrIJ,SAAS,AAAC,CACT,gBAAgB,C+FqIE,OAAO,C/FpIzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FkIH,AAAA,OAAO,A/FhIJ,OAAO,C+FgIV,AAAA,OAAO,A/F/HJ,OAAO,CACR,A+F8HF,K/F9HO,C+F8HP,OAAO,A/F9HI,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,A+F4HH,AAAA,UAAU,AAAC,CAhFT,gBAAgB,CAiFI,OAAO,C/FjK3B,KAAK,C+F+E8B,IAAI,C/F9EvC,gBAAgB,C+FgKI,OAAO,C/F/J3B,YAAY,C+F+E+B,eAAI,CAiFhD,AAFD,AAAA,UAAU,A5G/JL,MAAM,AAAC,CaMR,KAAK,C+FwE4B,IAAI,C/FvErC,gBAAgB,CAXE,OAAM,CAYxB,YAAY,CAXE,eAAM,CbGC,A4G+JzB,AAAA,UAAU,A/FrJP,MAAM,C+FqJT,AAAA,UAAU,A/FpJP,MAAM,AAAC,CAKJ,UAAU,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,C+FgEkB,eAAI,C/F9D9C,A+F6IH,AAAA,UAAU,A/F1IP,SAAS,C+F0IZ,AAAA,UAAU,A/FzIP,SAAS,AAAC,CACT,gBAAgB,C+FyIE,OAAO,C/FxIzB,YAAY,C+FwD6B,eAAI,C/FvD9C,A+FsIH,AAAA,UAAU,A/FpIP,OAAO,C+FoIV,AAAA,UAAU,A/FnIP,OAAO,CACR,A+FkIF,K/FlIO,C+FkIP,UAAU,A/FlIC,gBAAgB,AAAC,CACxB,KAAK,C+FgD4B,IAAI,C/F/CrC,gBAAgB,CAnCE,OAAM,CAoCxB,gBAAgB,CAAE,IAAK,CACvB,YAAY,CApCE,eAAM,CAsCrB,AgGxCH,AAAA,UAAU,AAAC,CACT,UAAU,CAAE,OAAQ,CACpB,gBAAgB,CAAE,IAAK,CACvB,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,IAAK,CACnB,mBAAmB,CAAE,IAAK,CAM3B,AAXD,AAAA,UAAU,AAMP,MAAM,CANT,AAAA,UAAU,AAOP,OAAO,CAPV,AAAA,UAAU,AAQP,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAQ,CAC3B,AAIH,AAAiB,gBAAD,CAAC,EAAE,AAAC,CAClB,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,KAAM,CACnB,KAAK,CAAE,IAAK,CACZ,WAAW,CAAE,IAAK,CACnB,AAED,AAAA,gBAAgB,AAAC,CACf,aAAa,CAAE,IAAK,CACrB,AAED,AAAA,eAAe,AAAC,CACd,YAAY,CAAE,IAAK,CACpB,AAGD,AAAA,iBAAiB,AAAC,CAChB,UAAU,CAAE,OAAQ,CACrB,AAED,AAAA,QAAQ,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,CAAE,CACX,AAED,AAAiB,iBAAA,AAAA,cAAc,CAC/B,AAAkB,kBAAA,AAAA,cAAc,AAAC,CAC/B,WAAW,CAAE,CAAE,CACf,YAAY,CAAE,CAAE,CACjB,AAED,AAAiB,iBAAA,AAAA,aAAa,CAC9B,AAAkB,kBAAA,AAAA,aAAa,AAAC,CAC9B,YAAY,CAAE,CAAE,CACjB,AAED,AAAA,WAAW,AAAC,CACV,OAAO,ClCuCK,IAAI,CkCtChB,MAAM,CAAE,CAAE,CACX,AAED,AAAA,cAAc,AAAC,CACb,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,GAAI,CACjB,aAAa,CAAE,IAAK,CACrB,AAED,AAAA,gBAAgB,AAAC,CACf,UAAU,CAAE,IAAK,CACjB,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,CAAE,CAaZ,AAhBD,AAII,gBAJY,CAIZ,EAAE,AAAC,CACH,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CAChB,YAAY,CAAE,GAAI,CAClB,WAAW,CAAE,IAAK,CAOnB,AAfH,AASI,gBATY,CAIZ,EAAE,CAKF,GAAG,AAAC,CACF,UAAU,CAAE,oBAAqB,CAIlC,AAdL,AASI,gBATY,CAIZ,EAAE,CAKF,GAAG,AAEA,MAAM,AAAC,CjCUZ,aAAa,CAAE,aAAM,CACrB,SAAS,CAAE,aAAM,CiCTZ,AAKP,AAAA,cAAc,AAAC,CACb,UAAU,CAAE,cAAe,CAC5B,AAED,AAAA,eAAe,AAAC,CACd,OAAO,CAAE,QAAS,CAClB,WAAW,CAAE,IAAK,CAClB,aAAa,CAAE,GAAI,CACnB,UAAU,ClCEI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CkCD5B,WAAW,ClCCG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAI,CkCA5B,aAAa,ClCFK,GAAG,CkCGrB,MAAM,CAAE,IAAK,CAId,AAXD,AAAA,eAAe,AAQZ,MAAM,AAAC,CACN,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAI,CAChC,AC5FH,AAAA,2BAA2B,AAExB,yBAAyB,CAF5B,AAAA,2BAA2B,AAGxB,MAAM,CAHT,AAAA,2BAA2B,AAIxB,OAAO,CAHV,AAAA,kBAAkB,AACf,yBAAyB,CAD5B,AAAA,kBAAkB,AAEf,MAAM,CAFT,AAAA,kBAAkB,AAGf,OAAO,AAAC,CACP,OAAO,CAAE,IAAK,CACf,AANH,AAOE,2BAPyB,CAOzB,0BAA0B,CAN5B,AAME,kBANgB,CAMhB,0BAA0B,AAAC,CACzB,MAAM,CAAE,GAAG,CAAC,KAAK,CnCQN,OAAO,CmCNlB,OAAO,CAAE,QAAS,CAClB,MAAM,CAAE,IAAK,CACd,AAGH,AAA2B,2BAAA,AAAA,wBAAwB,AAAC,CAClD,YAAY,CnH8EL,OAAO,CmH7Ef,AAED,AAAA,iBAAiB,AAAC,CAChB,MAAM,CAAE,GAAG,CAAC,KAAK,CnCJJ,OAAO,CmCMrB,AAED,AAA+E,2BAApD,CAAC,qCAAqC,CAAA,AAAA,aAAC,AAAA,CAAe,CAC/E,gBAAgB,CnHqET,OAAO,CmHpEd,KAAK,CAAE,KAAM,CACd,AAED,AAAA,wBAAwB,AAAC,CACvB,OAAO,CAAE,QAAS,CAClB,WAAW,CAAE,IAAK,CAClB,mBAAmB,CAAE,IAAK,CAC3B,AAED,AAA8C,kBAA5B,CAAC,0BAA0B,CAAC,4BAA4B,AAAC,CACzE,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CACjB,MAAM,CAAE,IAAK,CACb,UAAU,CAAE,IAAK,CAClB,AAED,AAAyD,kBAAvC,CAAA,AAAA,GAAC,CAAI,KAAK,AAAT,EAAW,0BAA0B,CAAC,4BAA4B,AAAC,CACpF,aAAa,CAAE,GAAI,CACnB,YAAY,CAAE,IAAK,CACpB,AAED,AAAuD,2BAA5B,CAAC,0BAA0B,CAAC,yBAAyB,AAAC,CAC/E,MAAM,CAAE,IAAK,CACb,KAAK,CAAE,GAAI,CACZ,AAED,AAAiF,2BAAtD,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,CAAC,AAAC,CACjF,UAAU,CAAE,CAAE,CACf,AAED,AAEE,iBAFe,CAEf,sBAAsB,CADxB,AACE,uBADqB,CACrB,sBAAsB,AAAC,CACrB,MAAM,CAAE,GAAG,CAAC,KAAK,CnC3CN,OAAO,CmCgDnB,AARH,AAEE,iBAFe,CAEf,sBAAsB,AAEnB,MAAM,CAHX,AACE,uBADqB,CACrB,sBAAsB,AAEnB,MAAM,AAAC,CACN,OAAO,CAAE,IAAK,CACd,MAAM,CAAE,GAAG,CAAC,KAAK,CnHgCd,OAAO,CmH/BX,AAIL,AAAuE,2BAA5C,CAAC,wBAAwB,CAAA,AAAA,aAAC,CAAD,IAAC,AAAA,CAAoB,CACvE,KAAK,CAAE,IAAK,CACb,AAED,AAAuE,2BAA5C,CAAC,wBAAwB,CAAA,AAAA,aAAC,CAAD,IAAC,AAAA,CAAoB,CACvE,gBAAgB,CAAE,IAAK,CAKxB,AAND,AAAuE,2BAA5C,CAAC,wBAAwB,CAAA,AAAA,aAAC,CAAD,IAAC,AAAA,EAArD,AAAuE,2BAA5C,CAAC,wBAAwB,CAAA,AAAA,aAAC,CAAD,IAAC,AAAA,CAGlD,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AAIH,AACE,2BADyB,CACzB,4BAA4B,AAAC,CAC3B,MAAM,CAAE,GAAG,CAAC,KAAK,CnClEN,OAAO,CmCuEnB,AAPH,AACE,2BADyB,CACzB,4BAA4B,AAGzB,MAAM,AAAC,CACN,YAAY,CnHST,OAAO,CmHRX,AANL,AAQ6B,2BARF,AAQxB,yBAAyB,CAAC,4BAA4B,AAAC,CACtD,YAAY,CnCzED,OAAO,CmC0EnB,AAGH,AAAyD,2BAA9B,CAAC,4BAA4B,CAAC,0BAA0B,AAAC,CAClF,gBAAgB,CnHAT,OAAO,CmHCd,YAAY,CAAE,OAAM,CACpB,OAAO,CAAE,QAAS,CAClB,KAAK,CAAE,IAAK,CACb,AAED,AAAyD,2BAA9B,CAAC,4BAA4B,CAAC,kCAAkC,AAAC,CAC1F,YAAY,CAAE,GAAI,CAClB,KAAK,CAAE,qBAAI,CAIZ,AAND,AAAyD,2BAA9B,CAAC,4BAA4B,CAAC,kCAAkC,AAGxF,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AAGH,AAA8C,kBAA5B,CAAC,0BAA0B,CAAC,4BAA4B,AAAC,CACzE,aAAa,CAAE,IAAK,CACrB,AC/GD,AAAA,IAAI,AAAC,CACH,OAAO,CAAE,IAAK,CACf,AAED,AAAA,OAAO,AAAC,CACN,MAAM,CAAE,IAAK,CACd,AAED,AAAA,cAAc,AAAC,CACb,aAAa,CAAE,IAAK,CACrB,AAED,AAAA,mBAAmB,AAAC,CAClB,aAAa,CAAE,CAAE,CAClB,AAED,AAAA,WAAW,AAAC,CACV,YAAY,CAAE,GAAI,CACnB,AAGD,AAAA,OAAO,AAAC,CACN,OAAO,CAAE,MAAO,CACjB,AAGD,AAAA,kBAAkB,AAAC,CACjB,OAAO,CAAE,KAAM,CACf,MAAM,CAAE,MAAO,CACf,UAAU,CAAE,MAAO,CAapB,AAhBD,AAAA,kBAAkB,AAIf,cAAc,AAAC,CACd,aAAa,CAAE,IAAK,CACrB,AANH,AAOI,kBAPc,CAOd,mBAAmB,AAAC,CACpB,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,CAAE,CACX,WAAW,CAAE,GAAI,CACjB,SAAS,CAAE,IAAK,CACjB,AAZH,AAaI,kBAbc,CAad,iBAAiB,AAAC,CAClB,cAAc,CAAE,SAAU,CAC3B,AAIH,AAAA,OAAO,CrB5CP,AqB4CA,QrB5CQ,AAyBL,eAAe,CCClB,AoBkBA,apBlBa,CACb,AoBiBA,YpBjBY,CIxBZ,AgByCA,ahBzCa,CK6Db,AWpBA,aXoBa,CACX,WAAW,CWpBb,AAAA,UAAU,CrB7CV,AqB4CO,QrB5CC,AA6BL,gBAAgB,CCGnB,AoBYO,cpBZO,CIrBd,AgBiCO,chBjCO,CKoBd,AWaO,cXbO,CACZ,WAAW,CWcb,AAAA,QAAQ,CrB9CR,AqB6CU,QrB7CF,AAiCL,aAAa,CCIhB,AoBQU,WpBRC,CI9BX,AgBsCU,WhBtCC,CKmCX,AWGU,WXHC,CACT,WAAW,CWIb,AAAA,QAAQ,CACR,AAAA,cAAc,ChBjCd,AgBgCQ,chBhCM,CKKd,AW2BQ,cX3BM,CACZ,WAAW,CW4Bb,AAAA,SAAS,CrBjDT,AqBgDc,QrBhDN,AAqCL,gBAAgB,CChBnB,AoB2Bc,cpB3BA,CIFd,AgB6Bc,chB7BA,CKkCd,AWLc,cXKA,CACZ,WAAW,CWJb,AAAA,QAAQ,CACR,AAAA,QAAQ,CACR,AAAA,SAAS,CACT,AAAA,QAAQ,CACR,AAAA,UAAU,CACV,AAAA,WAAW,CACX,AAAA,UAAU,CACV,AAAA,UAAU,CACV,AAAA,SAAS,CACT,AAAA,cAAc,CXKd,AWNS,aXMI,CAIX,aAAa,CAJf,AWNS,aXMI,CAKX,aAAa,CWTf,AAAA,iBAAiB,CX7BjB,AW4Bc,cX5BA,CAIZ,aAAa,CAJf,AW4Bc,cX5BA,CAKZ,aAAa,CWyBf,AAAA,eAAe,CXnBf,AWkBiB,WXlBN,CAIT,aAAa,CAJf,AWkBiB,WXlBN,CAKT,aAAa,CWef,AAAA,eAAe,CACf,AAAA,qBAAqB,CX3CrB,AW0Ce,cX1CD,CAIZ,aAAa,CAJf,AW0Ce,cX1CD,CAKZ,aAAa,CWuCf,AAAA,gBAAgB,CXXhB,AWUqB,cXVP,CAIZ,aAAa,CAJf,AWUqB,cXVP,CAKZ,aAAa,CWOf,AAAA,eAAe,CACf,AAAA,eAAe,CACf,AAAA,gBAAgB,CAChB,AAAA,eAAe,CACf,AAAA,iBAAiB,CACjB,AAAA,kBAAkB,CAClB,AAAA,iBAAiB,CACjB,AAAA,iBAAiB,CACjB,AAAA,gBAAgB,AAAC,CACf,KAAK,CAAE,IAAK,CACb,AAED,AAAA,QAAQ,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,gBAAgB,CpHsBU,OAAO,CoHrBlC,AAED,AAAA,cAAc,AAAC,CACb,gBAAgB,CAAE,OAAQ,CAC3B,AAED,AAAA,SAAS,AAAC,CACR,gBAAgB,CpHET,IAAI,CoHDZ,AAED,AAAA,OAAO,CrB1FP,AqB0FA,QrB1FQ,AAyBL,eAAe,CCClB,AoBgEA,apBhEa,CACb,AoB+DA,YpB/DY,CIxBZ,AgBuFA,ahBvFa,CK6Db,AW0BA,aX1Ba,CACX,WAAW,AWyBL,CACN,gBAAgB,CpHDT,OAAO,CoHEf,AAED,AAAA,UAAU,CrB9FV,AqB8FA,QrB9FQ,AA6BL,gBAAgB,CCGnB,AoB8DA,cpB9Dc,CIrBd,AgBmFA,chBnFc,CKoBd,AW+DA,cX/Dc,CACZ,WAAW,AW8DF,CACT,gBAAgB,CpHJT,OAAO,CoHKf,AAED,AAAA,QAAQ,CrBlGR,AqBkGA,QrBlGQ,AAiCL,aAAa,CCIhB,AoB6DA,WpB7DW,CI9BX,AgB2FA,WhB3FW,CKmCX,AWwDA,WXxDW,CACT,WAAW,AWuDJ,CACP,gBAAgB,CpHJT,OAAO,CoHKf,AAED,AAAA,QAAQ,AAAC,CACP,gBAAgB,CpHTT,OAAO,CoHUf,AAED,AAAA,cAAc,ChB3Fd,AgB2FA,chB3Fc,CKKd,AWsFA,cXtFc,CACZ,WAAW,AWqFE,CACb,gBAAgB,CpHbT,OAAO,CoHcf,AAED,AAAA,SAAS,CrB9GT,AqB8GA,QrB9GQ,AAqCL,gBAAgB,CChBnB,AoByFA,cpBzFc,CIFd,AgB2FA,chB3Fc,CKkCd,AWyDA,cXzDc,CACZ,WAAW,AWwDH,CACR,gBAAgB,CpHlBT,OAAO,CoHmBf,AAED,AAAA,QAAQ,AAAC,CACP,gBAAgB,CpCpGX,OAAO,CoCqGb,AAED,AAAA,QAAQ,AAAC,CACP,gBAAgB,CpHxBT,OAAO,CoHyBf,AAED,AAAA,SAAS,AAAC,CACR,gBAAgB,CpC9GV,OAAO,CoC+Gd,AAED,AAAA,QAAQ,AAAC,CACP,gBAAgB,CpCjHX,OAAO,CoCkHb,AAED,AAAA,UAAU,AAAC,CACT,gBAAgB,CpHxCT,OAAO,CoHyCf,AAED,AAAA,WAAW,AAAC,CACV,gBAAgB,CpC9HR,OAAO,CoC+HhB,AAED,AAAA,UAAU,AAAC,CACT,gBAAgB,CpH1CT,OAAO,CoH2Cf,AAED,AAAA,UAAU,AAAC,CACT,gBAAgB,CpCpIT,OAAO,CoCqIf,AAGD,AAAA,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CACZ,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,gBAAgB,AAAC,CACf,gBAAgB,CAAE,IAAM,CACzB,AAED,AAAA,cAAc,CX5Fd,AW4FA,aX5Fa,CAIX,aAAa,CAJf,AW4FA,aX5Fa,CAKX,aAAa,AWuFA,CACb,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,iBAAiB,CXjIjB,AWiIA,cXjIc,CAIZ,aAAa,CAJf,AWiIA,cXjIc,CAKZ,aAAa,AW4HG,CAChB,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,eAAe,CX1Hf,AW0HA,WX1HW,CAIT,aAAa,CAJf,AW0HA,WX1HW,CAKT,aAAa,AWqHC,CACd,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,eAAe,AAAC,CACd,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,qBAAqB,CXxJrB,AWwJA,cXxJc,CAIZ,aAAa,CAJf,AWwJA,cXxJc,CAKZ,aAAa,AWmJO,CACpB,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,gBAAgB,CX3HhB,AW2HA,cX3Hc,CAIZ,aAAa,CAJf,AW2HA,cX3Hc,CAKZ,aAAa,AWsHE,CACf,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,eAAe,AAAC,CACd,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,eAAe,AAAC,CACd,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,gBAAgB,AAAC,CACf,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,eAAe,AAAC,CACd,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,iBAAiB,AAAC,CAChB,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,kBAAkB,AAAC,CACjB,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,iBAAiB,AAAC,CAChB,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,iBAAiB,AAAC,CAChB,gBAAgB,CAAE,OAAM,CACzB,AAED,AAAA,SAAS,AAAC,CACR,gBAAgB,CAAE,IAAK,CACxB,CAGD,AAAA,AAAc,KAAb,EAAO,KAAK,AAAZ,CAAa,SAAS,AAAC,CACtB,OAAO,CAAE,GAAI,CACd,AAGD,AAAA,SAAS,AAAC,CACR,KAAK,CpHrIE,OAAO,CoHsIf,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CpHxIE,OAAO,CoHyIf,AAED,AAAA,UAAU,AAAC,CACT,KAAK,CpHxIE,OAAO,CoHyIf,AAED,AAAA,UAAU,AAAC,CACT,KAAK,CpH7IE,OAAO,CoH8If,AAED,AAAA,WAAW,AAAC,CACV,KAAK,CpHtJE,IAAI,CoHuJZ,AAED,AAAA,gBAAgB,AAAC,CACf,KAAK,CpHrJE,OAAO,CoHsJf,AAED,AAAA,WAAW,AAAC,CACV,KAAK,CpH1JE,OAAO,CoH2Jf,AAED,AAAA,UAAU,AAAC,CACT,KAAK,CpHtJqB,OAAO,CoHuJlC,AAED,AAAA,UAAU,AAAC,CACT,KAAK,CpChPA,OAAO,CoCiPb,AAED,AAAA,UAAU,AAAC,CACT,KAAK,CpHpKE,OAAO,CoHqKf,AAED,AAAA,WAAW,AAAC,CACV,KAAK,CpC1PC,OAAO,CoC2Pd,AAED,AAAA,UAAU,AAAC,CACT,KAAK,CpC7PA,OAAO,CoC8Pb,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CpHpLE,OAAO,CoHqLf,AAED,AAAA,aAAa,AAAC,CACZ,KAAK,CpC1QG,OAAO,CoC2QhB,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CpHtLE,OAAO,CoHuLf,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CpChRE,OAAO,CoCiRf,AAED,AAAA,WAAW,AAAC,CACV,KAAK,CAAE,IAAM,CAKd,AAND,AAAA,WAAW,AAER,MAAM,CAFT,AAAA,WAAW,AAGR,MAAM,AAAC,CACN,KAAK,CAAE,IAAM,CACd,AAGH,AAAA,WAAW,AAAC,CACV,KAAK,CAAE,IAAK,CAKb,AAND,AAAA,WAAW,AAER,MAAM,CAFT,AAAA,WAAW,AAGR,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AAIH,AAAA,KAAK,AAAC,CACJ,OAAO,CAAE,eAAgB,CAC1B,AAGD,AAAA,UAAU,AAAC,CACT,MAAM,CAAE,YAAa,CACtB,AAGD,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,YAAa,CACvB,AAGD,AAAA,UAAU,AAAC,CACT,MAAM,CAAE,YAAa,CACtB,AAGD,AAAA,UAAU,AAAC,CACT,UAAU,CAAE,eAAgB,CAC7B,AAGD,AAAA,cAAc,CzBjDd,AyBiDA,azBjDa,CU7Jb,Ae8MA,cf9Mc,CC5Hd,Ac0UA,Wd1UW,CKmCX,ASuSA,oBTvSoB,ASuSL,CACb,UAAU,CAAE,IAAK,CACjB,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,CAAE,CACZ,AAED,AACI,sBADkB,CAClB,gBAAgB,AAAC,CACjB,WAAW,CAAE,CAAE,CACf,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CACjB,YAAY,CAAE,CAAE,CAChB,aAAa,CAAE,CAAE,CAClB,AAIH,AAAA,KAAK,AAAC,CzF3VF,aAAa,CyF4VQ,CAAC,CAAC,UAAU,CACpC,AAED,AAAA,UAAU,CAAV,AACa,UADH,AACJ,MAAM,CAAC,EAAE,CADf,AACyB,UADf,AACQ,MAAM,CAAC,EAAE,AAAC,CACxB,WAAW,CAAE,GAAI,CAClB,AAGH,AAAA,QAAQ,AAAC,CACP,SAAS,CpH7GM,OAAO,CoH8GvB,AAED,AAAA,QAAQ,AAAC,CACP,SAAS,CpHhHM,MAAM,CoHiHtB,AAGD,AAAA,WAAW,AAAC,CACV,OAAO,CAAE,cAAe,CACxB,KAAK,CAAE,eAAgB,CACvB,MAAM,CAAE,eAAgB,CACzB,AAGD,AAAA,iBAAiB,AAAC,CnCxRhB,UAAU,CjFIH,OAAO,CiFHd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmCsR9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,uBAAuB,AAAC,CnC7RtB,UAAU,CjFGH,OAAO,CiFFd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmC2R9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,iBAAiB,AAAC,CnClShB,UAAU,CjFGH,OAAO,CiFFd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmCgS9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,iBAAiB,AAAC,CnCvShB,UAAU,CjFIH,OAAO,CiFHd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmCqS9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,mBAAmB,AAAC,CnC5SlB,UAAU,CjFAH,OAAO,CiFCd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmC0S9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,mBAAmB,AAAC,CnCjTlB,UAAU,CjFMH,OAAO,CiFLd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmC+S9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,kBAAkB,AAAC,CnCtTjB,UAAU,CjFEH,OAAO,CiFDd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmCoT9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,gBAAgB,AAAC,CnC3Tf,UAAU,CjFDH,OAAO,CiFEd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmCyT9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,kBAAkB,AAAC,CnChUjB,UAAU,CjFFH,IAAI,CiFGX,UAAU,CAAE,4FAAgB,CAC5B,UAAU,CAAE,0CAAmB,CAC/B,UAAU,CAAE,0DAAoB,CAChC,UAAU,CAAE,iCAAkB,CmC8T9B,KAAK,CAAE,IAAK,CACb,AAED,AAAA,mBAAmB,AAAC,CnCrUlB,UAAU,CDhFH,OAAO,CCiFd,UAAU,CAAE,+FAAgB,CAC5B,UAAU,CAAE,6CAAmB,CAC/B,UAAU,CAAE,6DAAoB,CAChC,UAAU,CAAE,oCAAkB,CmCmU9B,KAAK,CAAE,IAAK,CACb,AAGD,AACE,kBADgB,CAChB,iBAAiB,AAAC,CAChB,SAAS,CAAE,IAAK,CACjB,AAIH,AAAA,WAAW,AAAC,CACV,WAAW,CAAE,CAAE,CAChB,AAGD,AAAA,gBAAgB,AAAC,CACf,QAAQ,CAAE,iBAAkB,CAC7B,AAGD,AAAA,YAAY,AAAC,CACX,SAAS,CAAE,IAAK,CAChB,OAAO,CAAE,QAAS,CAClB,WAAW,CAAE,IAAK,CAClB,KAAK,CAAE,IAAK,CACb,AAED,AAAA,eAAe,AAAC,CACd,MAAM,CAAE,GAAI,CACZ,UAAU,CpC3WO,OAAO,CoC4WxB,MAAM,CAAE,YAAa,CACtB,AAED,AACI,UADM,CACN,CAAC,AAAC,CACF,OAAO,CAAE,GAAI,CACb,KAAK,CAAE,IAAK,CAIb,AAPH,AACI,UADM,CACN,CAAC,AAGA,MAAM,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AAKL,AAAA,WAAW,AAAC,CACV,WAAW,CAAE,GAAI,CAClB,AAGD,AAAA,WAAW,AvFzdR,OAAO,AAAC,CACP,OAAO,CAAE,KAAM,CACf,OAAO,CAAE,EAAG,CACZ,KAAK,CAAE,IAAK,CACb,AuFqdH,AAEE,WAFS,CAET,GAAG,AAAC,CACF,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,KAAK,CAAE,IAAK,CACb,AANH,AAOE,WAPS,CAOT,SAAS,CAPX,AAQE,WARS,CAQT,YAAY,CARd,AASE,WATS,CAST,QAAQ,AAAC,CACP,OAAO,CAAE,KAAM,CACf,WAAW,CAAE,IAAK,CACnB,AAZH,AAaE,WAbS,CAaT,SAAS,AAAC,CACR,SAAS,CAAE,IAAK,CAChB,WAAW,CAAE,GAAI,CAClB,AAhBH,AAiBE,WAjBS,CAiBT,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CACZ,SAAS,CAAE,IAAK,CACjB,AApBH,AAyBI,WAzBO,AAqBR,cAAc,CAIb,SAAS,CAzBb,AA0BI,WA1BO,AAqBR,cAAc,CAKb,YAAY,CA1BhB,AA2BI,WA3BO,AAqBR,cAAc,CAMb,QAAQ,AAAC,CACP,WAAW,CAAE,IAAK,CACnB,AA7BL,AA8BI,WA9BO,AAqBR,cAAc,CASb,SAAS,AAAC,CACR,SAAS,CAAE,IAAK,CACjB,AAKL,AAAA,OAAO,CzBtNP,AyBsNA,azBtNa,CAEX,YAAY,CAUV,GAAG,CyBqKP,AAqCA,WArCW,AAqBR,cAAc,CACb,GAAG,CAgBP,AAAA,OAAO,CACP,AAAA,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AAED,AAAA,OAAO,CzB5NP,AyB4NA,azB5Na,CAEX,YAAY,CAUV,GAAG,CyBqKP,AA2CA,WA3CW,AAqBR,cAAc,CACb,GAAG,AAqBC,CACN,KAAK,CAAE,eAAgB,CACvB,MAAM,CAAE,eAAgB,CAIzB,AAND,AAGI,OAHG,CAGH,SAAS,CzB/Nb,AyB+NI,azB/NS,CAEX,YAAY,CAUV,GAAG,CyBmNH,SAAS,CA9Cb,AA8CI,WA9CO,AAqBR,cAAc,CACb,GAAG,CAwBH,SAAS,AAAC,CACV,WAAW,CAAE,IAAK,CACnB,AAGH,AAAA,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CAId,AAND,AAGI,OAHG,CAGH,SAAS,AAAC,CACV,WAAW,CAAE,IAAK,CACnB,AAGH,AAAA,OAAO,AAAC,CACN,KAAK,CAAE,KAAM,CACb,MAAM,CAAE,KAAM,CAIf,AAND,AAGI,OAHG,CAGH,SAAS,AAAC,CACV,WAAW,CAAE,KAAM,CACpB,AAIH,AAAA,aAAa,AAAC,CACZ,MAAM,CAAE,GAAG,CAAC,KAAK,CpHpbS,OAAO,CoHqbjC,OAAO,CAAE,GAAI,CACd,AAED,AAAA,gBAAgB,AAAC,CACf,MAAM,CAAE,GAAG,CAAC,KAAK,CpHzbS,OAAO,CoH0bjC,OAAO,CAAE,GAAI,CACd,AAGD,AAAA,YAAY,AAAC,CzFriBT,aAAa,C3B4TQ,MAAM,CoH2O9B,AAED,AAAA,WAAW,AAAC,CzFziBR,aAAa,CyF0iBQ,GAAG,CAC3B,AAGD,AAAA,YAAY,CACZ,AAAA,YAAY,CACZ,AAAA,YAAY,AAAC,CACX,MAAM,CAAE,IAAK,CACd,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CACb,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CACb,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CACb,AAGD,AAAA,QAAQ,CACR,AAAA,QAAQ,CACR,AAAA,QAAQ,AAAC,CACP,OAAO,CAAE,KAAM,CACf,UAAU,CAAE,MAAO,CACpB,AAED,AAAA,QAAQ,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,WAAW,CAAE,IAAK,CACnB,AAED,AAAA,QAAQ,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,WAAW,CAAE,IAAK,CACnB,AAED,AAAA,QAAQ,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,IAAK,CACb,WAAW,CAAE,IAAK,CACnB,AAGD,AAAA,iBAAiB,AAAC,CAChB,MAAM,CAAE,GAAG,CAAC,KAAK,CpCrgBA,OAAO,CoCsgBxB,OAAO,CAAE,GAAI,CACb,aAAa,CAAE,IAAK,CACpB,UAAU,CAAE,OAAQ,CAiBrB,AArBD,AAME,iBANe,CAMf,eAAe,AAAC,CACd,SAAS,CAAE,KAAM,CACjB,UAAU,CAAE,KAAM,CAClB,MAAM,CAAE,IAAK,CACb,KAAK,CAAE,IAAK,CACb,AAXH,AAYE,iBAZe,CAYf,kBAAkB,AAAC,CACjB,WAAW,CAAE,KAAM,CACpB,AAdH,AAeE,iBAfe,CAef,mBAAmB,AAAC,CAClB,MAAM,CAAE,CAAE,CACX,AAjBH,AAkBE,iBAlBe,CAkBf,gBAAgB,AAAC,CACf,KAAK,CAAE,IAAK,CACb,AAGH,AAAA,kBAAkB,AAAC,CACjB,UAAU,CAAE,KAAM,CACnB,AAED,AAAA,4BAA4B,AAAC,CAC3B,MAAM,CAAE,CAAE,CACV,IAAI,CAAE,aAAI,CACV,MAAM,CAAE,GAAI,CACZ,MAAM,CAAE,IAAK,CACb,QAAQ,CAAE,MAAO,CACjB,OAAO,CAAE,CAAE,CACX,QAAQ,CAAE,QAAS,CACnB,KAAK,CAAE,GAAI,CACZ,AAED,AAAA,eAAe,AAAC,CACd,UAAU,CAAE,OAAQ,CACpB,MAAM,CAAE,eAAgB,CACxB,aAAa,CAAE,IAAK,CACrB,AAED,AAAA,mBAAmB,AAAC,CAClB,OAAO,CAAE,GAAI,CAId,AALD,AAAA,mBAAmB,AAEhB,MAAM,AAAC,CACN,OAAO,CAAE,CAAE,CACZ,AAIH,AAAA,MAAM,AAAC,CACL,QAAQ,CAAE,QAAS,CACnB,QAAQ,CAAE,MAAO,CACjB,KAAK,CAAE,IAAK,CAKb,AARD,AAIE,MAJI,CAIJ,GAAG,CAJL,AAKE,MALI,CAKJ,MAAM,AAAC,CACL,KAAK,CAAE,eAAgB,CACxB,AAIH,AAAA,UAAU,AAAC,CACT,KAAK,CAAE,IAAK,CACb,AC5pBD,MAAM,CAAN,KAAK,CAEH,AAAA,SAAS,CAKT,AALA,aAKa,CACb,AANA,YAMY,CACZ,AAPA,eAOe,AAPL,CACR,OAAO,CAAE,eAAgB,CAC1B,AAUD,AAAA,gBAAgB,CAChB,AAAA,YAAY,AAAC,CACX,WAAW,CAAE,YAAa,CAC1B,UAAU,CAAE,YAAa,CpCkD3B,iBAAiB,CAAE,eAAS,CAC5B,aAAa,CAAE,eAAS,CACxB,SAAS,CAAE,eAAS,CoClDnB,AAED,AAAc,aAAD,CAAC,gBAAgB,AAAC,CAC7B,WAAW,CAAE,YAAa,CAC3B,AAGD,AAAA,QAAQ,AAAC,CACP,KAAK,CAAE,IAAK,CACZ,MAAM,CAAE,CAAE,CACV,MAAM,CAAE,CAAE,CACV,OAAO,CAAE,CAAE,CACZ,AAED,AAAA,YAAY,AAAC,CACX,KAAK,CAAE,IAAK,CACZ,KAAK,CAAE,WAAY,CACpB,AAGD,AAAA,iBAAiB,AAAC,CAChB,QAAQ,CAAE,IAAK,CAKhB,AAND,AAEc,iBAFG,CAEb,MAAM,CAAC,EAAE,CAAC,EAAE,CAFhB,AAGc,iBAHG,CAGb,MAAM,CAAC,EAAE,CAAC,EAAE,AAAC,CACb,WAAW,CAAE,iBAAkB,CAChC,CE5CL,AA4BI,UA5BM,CAER,YAAY,CA0BV,KAAK,AAAC,CtCER,gBAAgB,CsCDU,OAAM,CtCEhC,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CsCCzE,AA9BL,AA4BI,UA5BM,CAER,YAAY,CA0BV,KAAK,AtCMN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AsCpCH,AAgCM,UAhCI,CAER,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,CvH+Db,OAAO,CuH9DX,AAlCL,AtCyGE,UsCzGQ,CtCyGR,aAAa,CsCzGf,AtC0Ge,UsC1GL,CtC0GR,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CD/CF,OAAO,CCgDtB,AsC5GH,AtCgHI,UsChHM,CtC+GR,WAAW,CACT,KAAK,CsChHT,AtCiHI,UsCjHM,CtC+GR,WAAW,CAET,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AsCnHL,AtCqHI,UsCrHM,CtC+GR,WAAW,CAMT,OAAO,AAAC,CACN,KAAK,CDxDU,OAAO,CCyDtB,UAAU,CD1DQ,OAAM,CCiEzB,AsC9HL,AtCqHI,UsCrHM,CtC+GR,WAAW,CAMT,OAAO,AAGJ,MAAM,CsCxHb,AtCqHI,UsCrHM,CtC+GR,WAAW,CAMT,OAAO,AAIJ,MAAM,CsCzHb,AtCqHI,UsCrHM,CtC+GR,WAAW,CAMT,OAAO,AAKJ,OAAO,AAAC,CACP,KAAK,CD5Dc,IAAI,CC6DvB,UAAU,CAAE,OAAM,CACnB,AsC7HP,AtCgII,UsChIM,CtC+GR,WAAW,CAiBT,cAAc,AAAC,CACb,YAAY,CAAE,OAAM,CAErB,AsCnIL,AtCqII,UsCrIM,CtC+GR,WAAW,CAsBT,cAAc,AAAC,CACb,KAAK,CjFhCiB,OAAO,CiFiC9B,AsCvIL,AtC6IM,UsC7II,CtC2IR,YAAY,CAAG,SAAS,CAEpB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CAKpC,AsCnJL,AtC6IM,UsC7II,CtC2IR,YAAY,CAAG,SAAS,CAEpB,SAAS,AAER,OAAO,CsC/Id,AtC6IM,UsC7II,CtC2IR,YAAY,CAAG,SAAS,CAEpB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CDnFQ,OAAO,CCoFrB,AsClJP,AtCsJkB,UsCtJR,CtC2IR,YAAY,CAAG,SAAS,AAWrB,UAAU,CAAG,SAAS,CsCtJ3B,AtCuJc,UsCvJJ,CtC2IR,YAAY,CAAG,SAAS,AAYrB,MAAM,CAAG,SAAS,CsCvJvB,AtCwJe,UsCxJL,CtC2IR,YAAY,CAAG,SAAS,CAapB,SAAS,AAAA,OAAO,AAAC,CACjB,KAAK,CD1FgB,IAAI,CC2FzB,UAAU,CD7FQ,OAAM,CC8FzB,AsC3JL,AtC6Je,UsC7JL,CtC2IR,YAAY,CAAG,SAAS,CAkBpB,SAAS,AAAA,OAAO,AAAC,CACjB,iBAAiB,CjF9Dd,OAAO,CiF+DX,AsC/JL,AtCkKM,UsClKI,CtC2IR,YAAY,CAAG,SAAS,CAuBpB,aAAa,AAAC,CACd,MAAM,CAAE,KAAM,CACd,UAAU,CDpGU,OAAO,CCqG5B,AsCrKL,AtCyKE,UsCzKQ,CtCyKR,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACb,UAAU,CAAE,OAAQ,CACrB,AsC5KH,AtC+KW,UsC/KD,CtC+KR,QAAQ,CAAC,CAAC,AAAC,CACT,KAAK,CDlHY,OAAO,CCsHzB,AsCpLH,AtC+KW,UsC/KD,CtC+KR,QAAQ,CAAC,CAAC,AAEP,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,AsCnLL,AtCyLQ,UsCzLE,CtCuLR,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CDzHgB,OAAO,CC0H7B,AsC3LP,AtC4LiB,UsC5LP,CtCuLR,aAAa,CACT,SAAS,CAIP,SAAS,AAAA,OAAO,CsC5LxB,AtC6LiB,UsC7LP,CtCuLR,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CD5HsB,IAAI,CC6H/B,UAAU,CAAE,WAAY,CACzB,AsChMP,AtCsMI,UsCtMM,CtCqMR,aAAa,CACX,aAAa,AAAC,CACZ,UAAU,CDvIU,OAAO,CCwI3B,MAAM,CAAE,CAAE,CAQX,AsChNL,AtCsMI,UsCtMM,CtCqMR,aAAa,CACX,aAAa,CsCtMjB,AtC0MgB,UsC1MN,CtCqMR,aAAa,CACX,aAAa,AAIV,MAAM,CAAG,UAAU,AAAC,CACnB,KAAK,CD5Ic,IAAI,CC6IxB,AsC5MP,AtCsMI,UsCtMM,CtCqMR,aAAa,CACX,aAAa,AAOV,MAAM,AAAC,CACN,UAAU,CAAE,OAAO,CACpB,AsC/MP,AtCiNI,UsCjNM,CtCqMR,aAAa,CAYX,UAAU,AAAC,CACT,KAAK,CDpJU,OAAO,CCqJvB,AsC1KL,AAAyC,UAA/B,AAAA,eAAe,CAAC,YAAY,CAAG,KAAK,AAAC,CtCX7C,gBAAgB,CjFkET,OAAO,CiFjEd,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CsCc7E,AAFD,AAAyC,UAA/B,AAAA,eAAe,CAAC,YAAY,CAAG,KAAK,AtCP3C,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AuCnCH,AAGI,gBAHY,CAEd,YAAY,CACV,OAAO,AAAC,CvCHV,gBAAgB,CjF+FT,OAAO,CwHrEX,AA1BL,AvCEc,gBuCFE,CAEd,YAAY,CACV,OAAO,CvCDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,CuCCqC,IAAI,CvCA/C,AuCJH,AvCMe,gBuCNC,CAEd,YAAY,CACV,OAAO,CvCGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CuCNrB,AvCOe,gBuCPC,CAEd,YAAY,CACV,OAAO,CvCIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,CuCPtB,AvCQe,gBuCRC,CAEd,YAAY,CACV,OAAO,CvCKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CuCRrB,AvCSe,gBuCTC,CAEd,YAAY,CACV,OAAO,CvCMT,IAAI,CAAC,KAAK,CAAG,CAAC,CuCThB,AvCUgB,gBuCVA,CAEd,YAAY,CACV,OAAO,CvCOT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CuCVtB,AvCWgB,gBuCXA,CAEd,YAAY,CACV,OAAO,CvCQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CuCXtB,AvCYmB,gBuCZH,CAEd,YAAY,CACV,OAAO,CvCST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,AuCfH,AvCkBE,gBuClBc,CAEd,YAAY,CACV,OAAO,CvCeT,eAAe,AAAC,CACd,KAAK,CuCfqC,IAAI,CvCoB/C,AuCxBH,AvCkBE,gBuClBc,CAEd,YAAY,CACV,OAAO,CvCeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,AuCvBL,AAKM,gBALU,CAEd,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,gBALU,CAEd,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,gBAbM,CAEd,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,gBAjBI,CAEd,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,gBAjBI,CAEd,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,gBA5BY,CAEd,YAAY,CA0BV,KAAK,AAAC,CvCCR,gBAAgB,CjFkET,OAAO,CiFjEd,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CuCEzE,AA9BL,AA4BI,gBA5BY,CAEd,YAAY,CA0BV,KAAK,AvCKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AuCnCH,AAgCM,gBAhCU,CAEd,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,CxH8Db,OAAO,CwH7DX,AAlCL,AvCyNE,gBuCzNc,CvCyNd,aAAa,CuCzNf,AvC0Ne,gBuC1NC,CvC0Nd,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CDvJD,OAAO,CCwJvB,AuC5NH,AvC6NE,gBuC7Nc,CvC6Nd,gBAAgB,CuC7NlB,AvC8NE,gBuC9Nc,CvC8Nd,YAAY,AAAC,CACX,WAAW,CAAE,GAAG,CAAC,KAAK,CjFzHE,OAAO,CiF0HhC,AuChOH,AvCmOM,gBuCnOU,CvCkOd,WAAW,CACP,KAAK,CuCnOX,AvCoOc,gBuCpOE,CvCkOd,WAAW,CAEP,KAAK,CAAG,SAAS,AAAC,CAClB,KAAK,CD/JW,IAAI,CCgKrB,AuCtOL,AvCyOkB,gBuCzOF,CvCyOd,aAAa,CAAG,SAAS,AAAC,CACxB,UAAU,CAAE,0BAA2B,CA4BxC,AuCtQH,AvC4OM,gBuC5OU,CvCyOd,aAAa,CAAG,SAAS,CAGrB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CACnC,WAAW,CAAE,GAAI,CAIlB,AuClPL,AvC4OM,gBuC5OU,CvCyOd,aAAa,CAAG,SAAS,CAGrB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CD1KS,IAAI,CC2KnB,AuCjPP,AvCoPc,gBuCpPE,CvCyOd,aAAa,CAAG,SAAS,AAWtB,MAAM,CAAG,SAAS,CuCpPvB,AvCqPe,gBuCrPC,CvCyOd,aAAa,CAAG,SAAS,AAYtB,OAAO,CAAG,SAAS,AAAC,CACnB,KAAK,CD/KiB,IAAI,CCgL1B,UAAU,CDlLS,OAAO,CCmL3B,AuCxPL,AvCyOkB,gBuCzOF,CvCyOd,aAAa,CAAG,SAAS,AAmBtB,OAAO,AAAC,CACP,iBAAiB,CjF9Jd,OAAO,CiFkKX,AuCjQL,AvC8PQ,gBuC9PQ,CvCyOd,aAAa,CAAG,SAAS,AAmBtB,OAAO,CAEJ,SAAS,AAAC,CACV,WAAW,CAAE,GAAI,CAClB,AuChQP,AvCmQM,gBuCnQU,CvCyOd,aAAa,CAAG,SAAS,CA0BrB,aAAa,AAAC,CACd,UAAU,CD/LS,OAAO,CCgM3B,AuCrQL,AvCwQE,gBuCxQc,CvCwQd,WAAW,AAAC,CACV,KAAK,CAAE,OAAO,CACd,UAAU,CDtMK,OAAO,CCuMvB,AuC3QH,AvC6QW,gBuC7QK,CvC6Qd,QAAQ,CAAC,SAAS,AAAC,CACjB,KAAK,CDxMa,IAAI,CC4MvB,AuClRH,AvC6QW,gBuC7QK,CvC6Qd,QAAQ,CAAC,SAAS,AAEf,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,AuCjRL,AvCsRQ,gBuCtRQ,CvCoRd,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CD9MiB,IAAI,CC+M3B,AuCxRP,AvCyRiB,gBuCzRD,CvCoRd,aAAa,CACT,SAAS,AAIR,OAAO,CAAG,SAAS,CuCzR1B,AvC0RiB,gBuC1RD,CvCoRd,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CDjNuB,IAAI,CCkNjC,AuC5RP,AvC6RiB,gBuC7RD,CvCoRd,aAAa,CACT,SAAS,AAQR,OAAO,CAAG,SAAS,AAAC,CACnB,WAAW,CAAE,GAAI,CAClB,A7E5OH,MAAM,EAAL,SAAS,EAAE,KAAK,EoHnDrB,AvCoS2B,gBuCpSX,AvCmSX,aAAa,AAAA,iBAAiB,CAC7B,aAAa,CAAG,EAAE,CAAG,aAAa,AAAC,CACjC,WAAW,CAAE,GAAG,CAAC,KAAK,CjF/LF,OAAO,CiFgM5B,CuCtSP,AAuCE,gBAvCc,CAuCd,YAAY,AAAC,CACX,gBAAgB,CxH8DQ,OAAO,CwH7DhC,AAGH,AAAyC,UAA/B,AAAA,eAAe,CAAC,YAAY,CAAG,KAAK,AAAC,CvCf7C,gBAAgB,CjFkET,OAAO,CiFjEd,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CuCkB7E,AAFD,AAAyC,UAA/B,AAAA,eAAe,CAAC,YAAY,CAAG,KAAK,AvCX3C,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AwClCH,AAII,WAJO,CAET,YAAY,CAEV,cAAc,AAAC,CACb,KAAK,CAAE,IAAK,CACb,AANL,AAOI,WAPO,CAET,YAAY,CAKV,aAAa,AAAC,CACZ,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,cAAe,CAC9B,AAVL,AAWM,WAXK,CAET,YAAY,CASR,OAAO,AAAC,CxCZZ,gBAAgB,CwCaY,IAAI,CAmB7B,AA/BL,AxCCc,WwCDH,CAET,YAAY,CASR,OAAO,CxCVX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,CwCU2B,IAAI,CxCTrC,AwCHH,AxCKe,WwCLJ,CAET,YAAY,CASR,OAAO,CxCNX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CwCLrB,AxCMe,WwCNJ,CAET,YAAY,CASR,OAAO,CxCLX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,CwCNtB,AxCOe,WwCPJ,CAET,YAAY,CASR,OAAO,CxCJX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CwCPrB,AxCQe,WwCRJ,CAET,YAAY,CASR,OAAO,CxCHX,IAAI,CAAC,KAAK,CAAG,CAAC,CwCRhB,AxCSgB,WwCTL,CAET,YAAY,CASR,OAAO,CxCFX,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CwCTtB,AxCUgB,WwCVL,CAET,YAAY,CASR,OAAO,CxCDX,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CwCVtB,AxCWmB,WwCXR,CAET,YAAY,CASR,OAAO,CxCAX,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CwCAkC,IAAI,CxCChD,KAAK,CwCDiC,IAAI,CxCE3C,AwCdH,AxCiBE,WwCjBS,CAET,YAAY,CASR,OAAO,CxCMX,eAAe,AAAC,CACd,KAAK,CwCN2B,IAAI,CxCWrC,AwCvBH,AxCiBE,WwCjBS,CAET,YAAY,CASR,OAAO,CxCMX,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CwCR+B,IAAI,CxCSxC,UAAU,CwCTgC,IAAI,CxCU/C,AwCtBL,AAaQ,WAbG,CAET,YAAY,CASR,OAAO,CAEL,eAAe,AAAC,CAChB,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,cAAe,CAC9B,AAhBP,AAkBe,WAlBJ,CAET,YAAY,CASR,OAAO,CAMP,WAAW,CACP,EAAE,CAAG,CAAC,AAAC,CACP,YAAY,CAAE,cAAe,CAC9B,AApBT,AAyBY,WAzBD,CAET,YAAY,CASR,OAAO,CAWP,mBAAmB,CAAC,WAAW,CAE3B,EAAE,CACA,CAAC,CAzBb,AAyBY,WAzBD,CAET,YAAY,CASR,OAAO,CAYP,aAAa,CACT,EAAE,CACA,CAAC,AAAC,CACF,WAAW,CAAE,cAAe,CAC5B,kBAAkB,CAAE,CAAE,CACvB,AA5BX,AAgCM,WAhCK,CAET,YAAY,CA8BR,KAAK,AAAC,CxCJV,gBAAgB,CwCKU,IAAI,CxCJ9B,KAAK,CwCI2B,IAAI,CxCHpC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CwCOxE,YAAY,CAAE,cAAe,CAK9B,AAvCL,AAgCM,WAhCK,CAET,YAAY,CA8BR,KAAK,AxCAR,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AwCCG,MAAM,EAAL,SAAS,EAAE,KAAK,EAnCvB,AAgCM,WAhCK,CAET,YAAY,CA8BR,KAAK,AAAC,CxCJV,gBAAgB,CwCQY,IAAI,CxCPhC,KAAK,CwCO6B,IAAI,CxCNtC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CwCUtE,YAAY,CAAE,IAAK,CAEtB,AAvCL,AAgCM,WAhCK,CAET,YAAY,CA8BR,KAAK,AxCAR,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,CwClCH,AAyCM,WAzCK,CAET,YAAY,CAuCV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,CAAE,IAAK,CACxB,AA3CL,AxCuGE,WwCvGS,CxCuGT,aAAa,CwCvGf,AxCwGe,WwCxGJ,CxCwGT,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CD/CF,OAAO,CCgDtB,AwC1GH,AxC8GI,WwC9GO,CxC6GT,WAAW,CACT,KAAK,CwC9GT,AxC+GI,WwC/GO,CxC6GT,WAAW,CAET,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AwCjHL,AxCmHI,WwCnHO,CxC6GT,WAAW,CAMT,OAAO,AAAC,CACN,KAAK,CDxDU,OAAO,CCyDtB,UAAU,CD1DQ,OAAM,CCiEzB,AwC5HL,AxCmHI,WwCnHO,CxC6GT,WAAW,CAMT,OAAO,AAGJ,MAAM,CwCtHb,AxCmHI,WwCnHO,CxC6GT,WAAW,CAMT,OAAO,AAIJ,MAAM,CwCvHb,AxCmHI,WwCnHO,CxC6GT,WAAW,CAMT,OAAO,AAKJ,OAAO,AAAC,CACP,KAAK,CD5Dc,IAAI,CC6DvB,UAAU,CAAE,OAAM,CACnB,AwC3HP,AxC8HI,WwC9HO,CxC6GT,WAAW,CAiBT,cAAc,AAAC,CACb,YAAY,CAAE,OAAM,CAErB,AwCjIL,AxCmII,WwCnIO,CxC6GT,WAAW,CAsBT,cAAc,AAAC,CACb,KAAK,CjFhCiB,OAAO,CiFiC9B,AwCrIL,AxC2IM,WwC3IK,CxCyIT,YAAY,CAAG,SAAS,CAEpB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CAKpC,AwCjJL,AxC2IM,WwC3IK,CxCyIT,YAAY,CAAG,SAAS,CAEpB,SAAS,AAER,OAAO,CwC7Id,AxC2IM,WwC3IK,CxCyIT,YAAY,CAAG,SAAS,CAEpB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CDnFQ,OAAO,CCoFrB,AwChJP,AxCoJkB,WwCpJP,CxCyIT,YAAY,CAAG,SAAS,AAWrB,UAAU,CAAG,SAAS,CwCpJ3B,AxCqJc,WwCrJH,CxCyIT,YAAY,CAAG,SAAS,AAYrB,MAAM,CAAG,SAAS,CwCrJvB,AxCsJe,WwCtJJ,CxCyIT,YAAY,CAAG,SAAS,CAapB,SAAS,AAAA,OAAO,AAAC,CACjB,KAAK,CD1FgB,IAAI,CC2FzB,UAAU,CD7FQ,OAAM,CC8FzB,AwCzJL,AxC2Je,WwC3JJ,CxCyIT,YAAY,CAAG,SAAS,CAkBpB,SAAS,AAAA,OAAO,AAAC,CACjB,iBAAiB,CwC7GM,IAAI,CxC8G5B,AwC7JL,AxCgKM,WwChKK,CxCyIT,YAAY,CAAG,SAAS,CAuBpB,aAAa,AAAC,CACd,MAAM,CAAE,KAAM,CACd,UAAU,CDpGU,OAAO,CCqG5B,AwCnKL,AxCuKE,WwCvKS,CxCuKT,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACb,UAAU,CAAE,OAAQ,CACrB,AwC1KH,AxC6KW,WwC7KA,CxC6KT,QAAQ,CAAC,CAAC,AAAC,CACT,KAAK,CDlHY,OAAO,CCsHzB,AwClLH,AxC6KW,WwC7KA,CxC6KT,QAAQ,CAAC,CAAC,AAEP,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,AwCjLL,AxCuLQ,WwCvLG,CxCqLT,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CDzHgB,OAAO,CC0H7B,AwCzLP,AxC0LiB,WwC1LN,CxCqLT,aAAa,CACT,SAAS,CAIP,SAAS,AAAA,OAAO,CwC1LxB,AxC2LiB,WwC3LN,CxCqLT,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CD5HsB,IAAI,CC6H/B,UAAU,CAAE,WAAY,CACzB,AwC9LP,AxCoMI,WwCpMO,CxCmMT,aAAa,CACX,aAAa,AAAC,CACZ,UAAU,CDvIU,OAAO,CCwI3B,MAAM,CAAE,CAAE,CAQX,AwC9ML,AxCoMI,WwCpMO,CxCmMT,aAAa,CACX,aAAa,CwCpMjB,AxCwMgB,WwCxML,CxCmMT,aAAa,CACX,aAAa,AAIV,MAAM,CAAG,UAAU,AAAC,CACnB,KAAK,CD5Ic,IAAI,CC6IxB,AwC1MP,AxCoMI,WwCpMO,CxCmMT,aAAa,CACX,aAAa,AAOV,MAAM,AAAC,CACN,UAAU,CAAE,OAAO,CACpB,AwC7MP,AxC+MI,WwC/MO,CxCmMT,aAAa,CAYX,UAAU,AAAC,CACT,KAAK,CDpJU,OAAO,CCqJvB,AyCjNL,AAII,iBAJa,CAEf,YAAY,CAEV,cAAc,AAAC,CACb,KAAK,CAAE,IAAK,CACb,AANL,AAOI,iBAPa,CAEf,YAAY,CAKV,aAAa,AAAC,CACZ,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,cAAe,CAC9B,AAVL,AAWM,iBAXW,CAEf,YAAY,CASR,OAAO,AAAC,CzCZZ,gBAAgB,CyCaY,IAAI,CAmB7B,AA/BL,AzCCc,iByCDG,CAEf,YAAY,CASR,OAAO,CzCVX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,CyCU2B,IAAI,CzCTrC,AyCHH,AzCKe,iByCLE,CAEf,YAAY,CASR,OAAO,CzCNX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CyCLrB,AzCMe,iByCNE,CAEf,YAAY,CASR,OAAO,CzCLX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,CyCNtB,AzCOe,iByCPE,CAEf,YAAY,CASR,OAAO,CzCJX,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CyCPrB,AzCQe,iByCRE,CAEf,YAAY,CASR,OAAO,CzCHX,IAAI,CAAC,KAAK,CAAG,CAAC,CyCRhB,AzCSgB,iByCTC,CAEf,YAAY,CASR,OAAO,CzCFX,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CyCTtB,AzCUgB,iByCVC,CAEf,YAAY,CASR,OAAO,CzCDX,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CyCVtB,AzCWmB,iByCXF,CAEf,YAAY,CASR,OAAO,CzCAX,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CyCAkC,IAAI,CzCChD,KAAK,CyCDiC,IAAI,CzCE3C,AyCdH,AzCiBE,iByCjBe,CAEf,YAAY,CASR,OAAO,CzCMX,eAAe,AAAC,CACd,KAAK,CyCN2B,IAAI,CzCWrC,AyCvBH,AzCiBE,iByCjBe,CAEf,YAAY,CASR,OAAO,CzCMX,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CyCR+B,IAAI,CzCSxC,UAAU,CyCTgC,IAAI,CzCU/C,AyCtBL,AAaQ,iBAbS,CAEf,YAAY,CASR,OAAO,CAEL,eAAe,AAAC,CAChB,KAAK,CAAE,IAAK,CACZ,YAAY,CAAE,cAAe,CAC9B,AAhBP,AAkBe,iBAlBE,CAEf,YAAY,CASR,OAAO,CAMP,WAAW,CACP,EAAE,CAAG,CAAC,AAAC,CACP,YAAY,CAAE,cAAe,CAC9B,AApBT,AAyBY,iBAzBK,CAEf,YAAY,CASR,OAAO,CAWP,mBAAmB,CAAC,WAAW,CAE3B,EAAE,CACA,CAAC,CAzBb,AAyBY,iBAzBK,CAEf,YAAY,CASR,OAAO,CAYP,aAAa,CACT,EAAE,CACA,CAAC,AAAC,CACF,WAAW,CAAE,cAAe,CAC5B,kBAAkB,CAAE,CAAE,CACvB,AA5BX,AAgCM,iBAhCW,CAEf,YAAY,CA8BR,KAAK,AAAC,CzCJV,gBAAgB,CyCKU,IAAI,CzCJ9B,KAAK,CyCI2B,IAAI,CzCHpC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CyCOxE,YAAY,CAAE,cAAe,CAK9B,AAvCL,AAgCM,iBAhCW,CAEf,YAAY,CA8BR,KAAK,AzCAR,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AyCCG,MAAM,EAAL,SAAS,EAAE,KAAK,EAnCvB,AAgCM,iBAhCW,CAEf,YAAY,CA8BR,KAAK,AAAC,CzCJV,gBAAgB,CyCQY,IAAI,CzCPhC,KAAK,CyCO6B,IAAI,CzCNtC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CyCUtE,YAAY,CAAE,IAAK,CAEtB,AAvCL,AAgCM,iBAhCW,CAEf,YAAY,CA8BR,KAAK,AzCAR,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,CyClCH,AAyCM,iBAzCW,CAEf,YAAY,CAuCV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,CAAE,IAAK,CACxB,AA3CL,AzCwNE,iByCxNe,CzCwNf,aAAa,CyCxNf,AzCyNe,iByCzNE,CzCyNf,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CDvJD,OAAO,CCwJvB,AyC3NH,AzC4NE,iByC5Ne,CzC4Nf,gBAAgB,CyC5NlB,AzC6NE,iByC7Ne,CzC6Nf,YAAY,AAAC,CACX,WAAW,CAAE,GAAG,CAAC,KAAK,CjFzHE,OAAO,CiF0HhC,AyC/NH,AzCkOM,iByClOW,CzCiOf,WAAW,CACP,KAAK,CyClOX,AzCmOc,iByCnOG,CzCiOf,WAAW,CAEP,KAAK,CAAG,SAAS,AAAC,CAClB,KAAK,CD/JW,IAAI,CCgKrB,AyCrOL,AzCwOkB,iByCxOD,CzCwOf,aAAa,CAAG,SAAS,AAAC,CACxB,UAAU,CAAE,0BAA2B,CA4BxC,AyCrQH,AzC2OM,iByC3OW,CzCwOf,aAAa,CAAG,SAAS,CAGrB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CACnC,WAAW,CAAE,GAAI,CAIlB,AyCjPL,AzC2OM,iByC3OW,CzCwOf,aAAa,CAAG,SAAS,CAGrB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CD1KS,IAAI,CC2KnB,AyChPP,AzCmPc,iByCnPG,CzCwOf,aAAa,CAAG,SAAS,AAWtB,MAAM,CAAG,SAAS,CyCnPvB,AzCoPe,iByCpPE,CzCwOf,aAAa,CAAG,SAAS,AAYtB,OAAO,CAAG,SAAS,AAAC,CACnB,KAAK,CD/KiB,IAAI,CCgL1B,UAAU,CDlLS,OAAO,CCmL3B,AyCvPL,AzCwOkB,iByCxOD,CzCwOf,aAAa,CAAG,SAAS,AAmBtB,OAAO,AAAC,CACP,iBAAiB,CyC9MO,IAAI,CzCkN7B,AyChQL,AzC6PQ,iByC7PS,CzCwOf,aAAa,CAAG,SAAS,AAmBtB,OAAO,CAEJ,SAAS,AAAC,CACV,WAAW,CAAE,GAAI,CAClB,AyC/PP,AzCkQM,iByClQW,CzCwOf,aAAa,CAAG,SAAS,CA0BrB,aAAa,AAAC,CACd,UAAU,CD/LS,OAAO,CCgM3B,AyCpQL,AzCuQE,iByCvQe,CzCuQf,WAAW,AAAC,CACV,KAAK,CAAE,OAAO,CACd,UAAU,CDtMK,OAAO,CCuMvB,AyC1QH,AzC4QW,iByC5QM,CzC4Qf,QAAQ,CAAC,SAAS,AAAC,CACjB,KAAK,CDxMa,IAAI,CC4MvB,AyCjRH,AzC4QW,iByC5QM,CzC4Qf,QAAQ,CAAC,SAAS,AAEf,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,AyChRL,AzCqRQ,iByCrRS,CzCmRf,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CD9MiB,IAAI,CC+M3B,AyCvRP,AzCwRiB,iByCxRA,CzCmRf,aAAa,CACT,SAAS,AAIR,OAAO,CAAG,SAAS,CyCxR1B,AzCyRiB,iByCzRA,CzCmRf,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CDjNuB,IAAI,CCkNjC,AyC3RP,AzC4RiB,iByC5RA,CzCmRf,aAAa,CACT,SAAS,AAQR,OAAO,CAAG,SAAS,AAAC,CACnB,WAAW,CAAE,GAAI,CAClB,A7E5OH,MAAM,EAAL,SAAS,EAAE,KAAK,EsHlDrB,AzCmS2B,iByCnSV,AzCkSZ,aAAa,AAAA,iBAAiB,CAC7B,aAAa,CAAG,EAAE,CAAG,aAAa,AAAC,CACjC,WAAW,CAAE,GAAG,CAAC,KAAK,CjF/LF,OAAO,CiFgM5B,C0CtSP,AAGI,WAHO,CAET,YAAY,CACV,OAAO,AAAC,C1CHV,gBAAgB,CjF8FT,OAAO,C2HpEX,AA1BL,A1CEc,W0CFH,CAET,YAAY,CACV,OAAO,C1CDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,C0CCqC,IAAI,C1CA/C,A0CJH,A1CMe,W0CNJ,CAET,YAAY,CACV,OAAO,C1CGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C0CNrB,A1COe,W0CPJ,CAET,YAAY,CACV,OAAO,C1CIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,C0CPtB,A1CQe,W0CRJ,CAET,YAAY,CACV,OAAO,C1CKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C0CRrB,A1CSe,W0CTJ,CAET,YAAY,CACV,OAAO,C1CMT,IAAI,CAAC,KAAK,CAAG,CAAC,C0CThB,A1CUgB,W0CVL,CAET,YAAY,CACV,OAAO,C1COT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C0CVtB,A1CWgB,W0CXL,CAET,YAAY,CACV,OAAO,C1CQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C0CXtB,A1CYmB,W0CZR,CAET,YAAY,CACV,OAAO,C1CST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,A0CfH,A1CkBE,W0ClBS,CAET,YAAY,CACV,OAAO,C1CeT,eAAe,AAAC,CACd,KAAK,C0CfqC,IAAI,C1CoB/C,A0CxBH,A1CkBE,W0ClBS,CAET,YAAY,CACV,OAAO,C1CeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,A0CvBL,AAKM,WALK,CAET,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,WALK,CAET,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,WAbC,CAET,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,WAjBD,CAET,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,WAjBD,CAET,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,WA5BO,CAET,YAAY,CA0BV,KAAK,AAAC,C1CCR,gBAAgB,C0CAU,OAAM,C1CChC,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,C0CEzE,AA9BL,AA4BI,WA5BO,CAET,YAAY,CA0BV,KAAK,A1CKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,A0CnCH,AAgCM,WAhCK,CAET,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,C3H6Db,OAAO,C2H5DX,AAlCL,A1CwGE,W0CxGS,C1CwGT,aAAa,C0CxGf,A1CyGe,W0CzGJ,C1CyGT,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CD/CF,OAAO,CCgDtB,A0C3GH,A1C+GI,W0C/GO,C1C8GT,WAAW,CACT,KAAK,C0C/GT,A1CgHI,W0ChHO,C1C8GT,WAAW,CAET,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACb,A0ClHL,A1CoHI,W0CpHO,C1C8GT,WAAW,CAMT,OAAO,AAAC,CACN,KAAK,CDxDU,OAAO,CCyDtB,UAAU,CD1DQ,OAAM,CCiEzB,A0C7HL,A1CoHI,W0CpHO,C1C8GT,WAAW,CAMT,OAAO,AAGJ,MAAM,C0CvHb,A1CoHI,W0CpHO,C1C8GT,WAAW,CAMT,OAAO,AAIJ,MAAM,C0CxHb,A1CoHI,W0CpHO,C1C8GT,WAAW,CAMT,OAAO,AAKJ,OAAO,AAAC,CACP,KAAK,CD5Dc,IAAI,CC6DvB,UAAU,CAAE,OAAM,CACnB,A0C5HP,A1C+HI,W0C/HO,C1C8GT,WAAW,CAiBT,cAAc,AAAC,CACb,YAAY,CAAE,OAAM,CAErB,A0ClIL,A1CoII,W0CpIO,C1C8GT,WAAW,CAsBT,cAAc,AAAC,CACb,KAAK,CjFhCiB,OAAO,CiFiC9B,A0CtIL,A1C4IM,W0C5IK,C1C0IT,YAAY,CAAG,SAAS,CAEpB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CAKpC,A0ClJL,A1C4IM,W0C5IK,C1C0IT,YAAY,CAAG,SAAS,CAEpB,SAAS,AAER,OAAO,C0C9Id,A1C4IM,W0C5IK,C1C0IT,YAAY,CAAG,SAAS,CAEpB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CDnFQ,OAAO,CCoFrB,A0CjJP,A1CqJkB,W0CrJP,C1C0IT,YAAY,CAAG,SAAS,AAWrB,UAAU,CAAG,SAAS,C0CrJ3B,A1CsJc,W0CtJH,C1C0IT,YAAY,CAAG,SAAS,AAYrB,MAAM,CAAG,SAAS,C0CtJvB,A1CuJe,W0CvJJ,C1C0IT,YAAY,CAAG,SAAS,CAapB,SAAS,AAAA,OAAO,AAAC,CACjB,KAAK,CD1FgB,IAAI,CC2FzB,UAAU,CD7FQ,OAAM,CC8FzB,A0C1JL,A1C4Je,W0C5JJ,C1C0IT,YAAY,CAAG,SAAS,CAkBpB,SAAS,AAAA,OAAO,AAAC,CACjB,iBAAiB,CjF/Dd,OAAO,CiFgEX,A0C9JL,A1CiKM,W0CjKK,C1C0IT,YAAY,CAAG,SAAS,CAuBpB,aAAa,AAAC,CACd,MAAM,CAAE,KAAM,CACd,UAAU,CDpGU,OAAO,CCqG5B,A0CpKL,A1CwKE,W0CxKS,C1CwKT,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACb,UAAU,CAAE,OAAQ,CACrB,A0C3KH,A1C8KW,W0C9KA,C1C8KT,QAAQ,CAAC,CAAC,AAAC,CACT,KAAK,CDlHY,OAAO,CCsHzB,A0CnLH,A1C8KW,W0C9KA,C1C8KT,QAAQ,CAAC,CAAC,AAEP,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,A0ClLL,A1CwLQ,W0CxLG,C1CsLT,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CDzHgB,OAAO,CC0H7B,A0C1LP,A1C2LiB,W0C3LN,C1CsLT,aAAa,CACT,SAAS,CAIP,SAAS,AAAA,OAAO,C0C3LxB,A1C4LiB,W0C5LN,C1CsLT,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CD5HsB,IAAI,CC6H/B,UAAU,CAAE,WAAY,CACzB,A0C/LP,A1CqMI,W0CrMO,C1CoMT,aAAa,CACX,aAAa,AAAC,CACZ,UAAU,CDvIU,OAAO,CCwI3B,MAAM,CAAE,CAAE,CAQX,A0C/ML,A1CqMI,W0CrMO,C1CoMT,aAAa,CACX,aAAa,C0CrMjB,A1CyMgB,W0CzML,C1CoMT,aAAa,CACX,aAAa,AAIV,MAAM,CAAG,UAAU,AAAC,CACnB,KAAK,CD5Ic,IAAI,CC6IxB,A0C3MP,A1CqMI,W0CrMO,C1CoMT,aAAa,CACX,aAAa,AAOV,MAAM,AAAC,CACN,UAAU,CAAE,OAAO,CACpB,A0C9MP,A1CgNI,W0ChNO,C1CoMT,aAAa,CAYX,UAAU,AAAC,CACT,KAAK,CDpJU,OAAO,CCqJvB,A2ClNL,AAGI,iBAHa,CAEf,YAAY,CACV,OAAO,AAAC,C3CHV,gBAAgB,CjF8FT,OAAO,C4HpEX,AA1BL,A3CEc,iB2CFG,CAEf,YAAY,CACV,OAAO,C3CDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,C2CCqC,IAAI,C3CA/C,A2CJH,A3CMe,iB2CNE,CAEf,YAAY,CACV,OAAO,C3CGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C2CNrB,A3COe,iB2CPE,CAEf,YAAY,CACV,OAAO,C3CIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,C2CPtB,A3CQe,iB2CRE,CAEf,YAAY,CACV,OAAO,C3CKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C2CRrB,A3CSe,iB2CTE,CAEf,YAAY,CACV,OAAO,C3CMT,IAAI,CAAC,KAAK,CAAG,CAAC,C2CThB,A3CUgB,iB2CVC,CAEf,YAAY,CACV,OAAO,C3COT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C2CVtB,A3CWgB,iB2CXC,CAEf,YAAY,CACV,OAAO,C3CQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C2CXtB,A3CYmB,iB2CZF,CAEf,YAAY,CACV,OAAO,C3CST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,A2CfH,A3CkBE,iB2ClBe,CAEf,YAAY,CACV,OAAO,C3CeT,eAAe,AAAC,CACd,KAAK,C2CfqC,IAAI,C3CoB/C,A2CxBH,A3CkBE,iB2ClBe,CAEf,YAAY,CACV,OAAO,C3CeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,A2CvBL,AAKM,iBALW,CAEf,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,iBALW,CAEf,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,iBAbO,CAEf,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,iBAjBK,CAEf,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,iBAjBK,CAEf,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,iBA5Ba,CAEf,YAAY,CA0BV,KAAK,AAAC,C3CCR,gBAAgB,CjFiET,OAAO,CiFhEd,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,C2CEzE,AA9BL,AA4BI,iBA5Ba,CAEf,YAAY,CA0BV,KAAK,A3CKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,A2CnCH,AAgCM,iBAhCW,CAEf,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,C5H6Db,OAAO,C4H5DX,AAlCL,A3CyNE,iB2CzNe,C3CyNf,aAAa,C2CzNf,A3C0Ne,iB2C1NE,C3C0Nf,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CDvJD,OAAO,CCwJvB,A2C5NH,A3C6NE,iB2C7Ne,C3C6Nf,gBAAgB,C2C7NlB,A3C8NE,iB2C9Ne,C3C8Nf,YAAY,AAAC,CACX,WAAW,CAAE,GAAG,CAAC,KAAK,CjFzHE,OAAO,CiF0HhC,A2ChOH,A3CmOM,iB2CnOW,C3CkOf,WAAW,CACP,KAAK,C2CnOX,A3CoOc,iB2CpOG,C3CkOf,WAAW,CAEP,KAAK,CAAG,SAAS,AAAC,CAClB,KAAK,CD/JW,IAAI,CCgKrB,A2CtOL,A3CyOkB,iB2CzOD,C3CyOf,aAAa,CAAG,SAAS,AAAC,CACxB,UAAU,CAAE,0BAA2B,CA4BxC,A2CtQH,A3C4OM,iB2C5OW,C3CyOf,aAAa,CAAG,SAAS,CAGrB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CACnC,WAAW,CAAE,GAAI,CAIlB,A2ClPL,A3C4OM,iB2C5OW,C3CyOf,aAAa,CAAG,SAAS,CAGrB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CD1KS,IAAI,CC2KnB,A2CjPP,A3CoPc,iB2CpPG,C3CyOf,aAAa,CAAG,SAAS,AAWtB,MAAM,CAAG,SAAS,C2CpPvB,A3CqPe,iB2CrPE,C3CyOf,aAAa,CAAG,SAAS,AAYtB,OAAO,CAAG,SAAS,AAAC,CACnB,KAAK,CD/KiB,IAAI,CCgL1B,UAAU,CDlLS,OAAO,CCmL3B,A2CxPL,A3CyOkB,iB2CzOD,C3CyOf,aAAa,CAAG,SAAS,AAmBtB,OAAO,AAAC,CACP,iBAAiB,CjF/Jd,OAAO,CiFmKX,A2CjQL,A3C8PQ,iB2C9PS,C3CyOf,aAAa,CAAG,SAAS,AAmBtB,OAAO,CAEJ,SAAS,AAAC,CACV,WAAW,CAAE,GAAI,CAClB,A2ChQP,A3CmQM,iB2CnQW,C3CyOf,aAAa,CAAG,SAAS,CA0BrB,aAAa,AAAC,CACd,UAAU,CD/LS,OAAO,CCgM3B,A2CrQL,A3CwQE,iB2CxQe,C3CwQf,WAAW,AAAC,CACV,KAAK,CAAE,OAAO,CACd,UAAU,CDtMK,OAAO,CCuMvB,A2C3QH,A3C6QW,iB2C7QM,C3C6Qf,QAAQ,CAAC,SAAS,AAAC,CACjB,KAAK,CDxMa,IAAI,CC4MvB,A2ClRH,A3C6QW,iB2C7QM,C3C6Qf,QAAQ,CAAC,SAAS,AAEf,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,A2CjRL,A3CsRQ,iB2CtRS,C3CoRf,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CD9MiB,IAAI,CC+M3B,A2CxRP,A3CyRiB,iB2CzRA,C3CoRf,aAAa,CACT,SAAS,AAIR,OAAO,CAAG,SAAS,C2CzR1B,A3C0RiB,iB2C1RA,C3CoRf,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CDjNuB,IAAI,CCkNjC,A2C5RP,A3C6RiB,iB2C7RA,C3CoRf,aAAa,CACT,SAAS,AAQR,OAAO,CAAG,SAAS,AAAC,CACnB,WAAW,CAAE,GAAI,CAClB,A7E5OH,MAAM,EAAL,SAAS,EAAE,KAAK,EwHnDrB,A3CoS2B,iB2CpSV,A3CmSZ,aAAa,AAAA,iBAAiB,CAC7B,aAAa,CAAG,EAAE,CAAG,aAAa,AAAC,CACjC,WAAW,CAAE,GAAG,CAAC,KAAK,CjF/LF,OAAO,CiFgM5B,C4CtSP,AAGI,SAHK,CAEP,YAAY,CACV,OAAO,AAAC,C5CHV,gBAAgB,CjF2FT,OAAO,C6HjEX,AA1BL,A5CEc,S4CFL,CAEP,YAAY,CACV,OAAO,C5CDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,C4CCoC,IAAI,C5CA9C,A4CJH,A5CMe,S4CNN,CAEP,YAAY,CACV,OAAO,C5CGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C4CNrB,A5COe,S4CPN,CAEP,YAAY,CACV,OAAO,C5CIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,C4CPtB,A5CQe,S4CRN,CAEP,YAAY,CACV,OAAO,C5CKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C4CRrB,A5CSe,S4CTN,CAEP,YAAY,CACV,OAAO,C5CMT,IAAI,CAAC,KAAK,CAAG,CAAC,C4CThB,A5CUgB,S4CVP,CAEP,YAAY,CACV,OAAO,C5COT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C4CVtB,A5CWgB,S4CXP,CAEP,YAAY,CACV,OAAO,C5CQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C4CXtB,A5CYmB,S4CZV,CAEP,YAAY,CACV,OAAO,C5CST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,A4CfH,A5CkBE,S4ClBO,CAEP,YAAY,CACV,OAAO,C5CeT,eAAe,AAAC,CACd,KAAK,C4CfoC,IAAI,C5CoB9C,A4CxBH,A5CkBE,S4ClBO,CAEP,YAAY,CACV,OAAO,C5CeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,A4CvBL,AAKM,SALG,CAEP,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,SALG,CAEP,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,SAbD,CAEP,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,SAjBH,CAEP,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,SAjBH,CAEP,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,SA5BK,CAEP,YAAY,CA0BV,KAAK,AAAC,C5CCR,gBAAgB,C4CAU,OAAM,C5CChC,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,C4CEzE,AA9BL,AA4BI,SA5BK,CAEP,YAAY,CA0BV,KAAK,A5CKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,A4CnCH,AAgCM,SAhCG,CAEP,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,C7H0Db,OAAO,C6HzDX,AAlCL,A5CwGE,S4CxGO,C5CwGP,aAAa,C4CxGf,A5CyGe,S4CzGN,C5CyGP,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CD/CF,OAAO,CCgDtB,A4C3GH,A5C+GI,S4C/GK,C5C8GP,WAAW,CACT,KAAK,C4C/GT,A5CgHI,S4ChHK,C5C8GP,WAAW,CAET,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACb,A4ClHL,A5CoHI,S4CpHK,C5C8GP,WAAW,CAMT,OAAO,AAAC,CACN,KAAK,CDxDU,OAAO,CCyDtB,UAAU,CD1DQ,OAAM,CCiEzB,A4C7HL,A5CoHI,S4CpHK,C5C8GP,WAAW,CAMT,OAAO,AAGJ,MAAM,C4CvHb,A5CoHI,S4CpHK,C5C8GP,WAAW,CAMT,OAAO,AAIJ,MAAM,C4CxHb,A5CoHI,S4CpHK,C5C8GP,WAAW,CAMT,OAAO,AAKJ,OAAO,AAAC,CACP,KAAK,CD5Dc,IAAI,CC6DvB,UAAU,CAAE,OAAM,CACnB,A4C5HP,A5C+HI,S4C/HK,C5C8GP,WAAW,CAiBT,cAAc,AAAC,CACb,YAAY,CAAE,OAAM,CAErB,A4ClIL,A5CoII,S4CpIK,C5C8GP,WAAW,CAsBT,cAAc,AAAC,CACb,KAAK,CjFhCiB,OAAO,CiFiC9B,A4CtIL,A5C4IM,S4C5IG,C5C0IP,YAAY,CAAG,SAAS,CAEpB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CAKpC,A4ClJL,A5C4IM,S4C5IG,C5C0IP,YAAY,CAAG,SAAS,CAEpB,SAAS,AAER,OAAO,C4C9Id,A5C4IM,S4C5IG,C5C0IP,YAAY,CAAG,SAAS,CAEpB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CDnFQ,OAAO,CCoFrB,A4CjJP,A5CqJkB,S4CrJT,C5C0IP,YAAY,CAAG,SAAS,AAWrB,UAAU,CAAG,SAAS,C4CrJ3B,A5CsJc,S4CtJL,C5C0IP,YAAY,CAAG,SAAS,AAYrB,MAAM,CAAG,SAAS,C4CtJvB,A5CuJe,S4CvJN,C5C0IP,YAAY,CAAG,SAAS,CAapB,SAAS,AAAA,OAAO,AAAC,CACjB,KAAK,CD1FgB,IAAI,CC2FzB,UAAU,CD7FQ,OAAM,CC8FzB,A4C1JL,A5C4Je,S4C5JN,C5C0IP,YAAY,CAAG,SAAS,CAkBpB,SAAS,AAAA,OAAO,AAAC,CACjB,iBAAiB,CjFlEd,OAAO,CiFmEX,A4C9JL,A5CiKM,S4CjKG,C5C0IP,YAAY,CAAG,SAAS,CAuBpB,aAAa,AAAC,CACd,MAAM,CAAE,KAAM,CACd,UAAU,CDpGU,OAAO,CCqG5B,A4CpKL,A5CwKE,S4CxKO,C5CwKP,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACb,UAAU,CAAE,OAAQ,CACrB,A4C3KH,A5C8KW,S4C9KF,C5C8KP,QAAQ,CAAC,CAAC,AAAC,CACT,KAAK,CDlHY,OAAO,CCsHzB,A4CnLH,A5C8KW,S4C9KF,C5C8KP,QAAQ,CAAC,CAAC,AAEP,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,A4ClLL,A5CwLQ,S4CxLC,C5CsLP,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CDzHgB,OAAO,CC0H7B,A4C1LP,A5C2LiB,S4C3LR,C5CsLP,aAAa,CACT,SAAS,CAIP,SAAS,AAAA,OAAO,C4C3LxB,A5C4LiB,S4C5LR,C5CsLP,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CD5HsB,IAAI,CC6H/B,UAAU,CAAE,WAAY,CACzB,A4C/LP,A5CqMI,S4CrMK,C5CoMP,aAAa,CACX,aAAa,AAAC,CACZ,UAAU,CDvIU,OAAO,CCwI3B,MAAM,CAAE,CAAE,CAQX,A4C/ML,A5CqMI,S4CrMK,C5CoMP,aAAa,CACX,aAAa,C4CrMjB,A5CyMgB,S4CzMP,C5CoMP,aAAa,CACX,aAAa,AAIV,MAAM,CAAG,UAAU,AAAC,CACnB,KAAK,CD5Ic,IAAI,CC6IxB,A4C3MP,A5CqMI,S4CrMK,C5CoMP,aAAa,CACX,aAAa,AAOV,MAAM,AAAC,CACN,UAAU,CAAE,OAAO,CACpB,A4C9MP,A5CgNI,S4ChNK,C5CoMP,aAAa,CAYX,UAAU,AAAC,CACT,KAAK,CDpJU,OAAO,CCqJvB,A6ClNL,AAGI,eAHW,CAEb,YAAY,CACV,OAAO,AAAC,C7CHV,gBAAgB,CjF2FT,OAAO,C8HjEX,AA1BL,A7CEc,e6CFC,CAEb,YAAY,CACV,OAAO,C7CDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,C6CCoC,IAAI,C7CA9C,A6CJH,A7CMe,e6CNA,CAEb,YAAY,CACV,OAAO,C7CGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C6CNrB,A7COe,e6CPA,CAEb,YAAY,CACV,OAAO,C7CIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,C6CPtB,A7CQe,e6CRA,CAEb,YAAY,CACV,OAAO,C7CKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C6CRrB,A7CSe,e6CTA,CAEb,YAAY,CACV,OAAO,C7CMT,IAAI,CAAC,KAAK,CAAG,CAAC,C6CThB,A7CUgB,e6CVD,CAEb,YAAY,CACV,OAAO,C7COT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C6CVtB,A7CWgB,e6CXD,CAEb,YAAY,CACV,OAAO,C7CQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C6CXtB,A7CYmB,e6CZJ,CAEb,YAAY,CACV,OAAO,C7CST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,A6CfH,A7CkBE,e6ClBa,CAEb,YAAY,CACV,OAAO,C7CeT,eAAe,AAAC,CACd,KAAK,C6CfoC,IAAI,C7CoB9C,A6CxBH,A7CkBE,e6ClBa,CAEb,YAAY,CACV,OAAO,C7CeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,A6CvBL,AAKM,eALS,CAEb,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,eALS,CAEb,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,eAbK,CAEb,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,eAjBG,CAEb,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,eAjBG,CAEb,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,eA5BW,CAEb,YAAY,CA0BV,KAAK,AAAC,C7CCR,gBAAgB,CjF8DT,OAAO,CiF7Dd,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,C6CEzE,AA9BL,AA4BI,eA5BW,CAEb,YAAY,CA0BV,KAAK,A7CKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,A6CnCH,AAgCM,eAhCS,CAEb,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,C9H0Db,OAAO,C8HzDX,AAlCL,A7CyNE,e6CzNa,C7CyNb,aAAa,C6CzNf,A7C0Ne,e6C1NA,C7C0Nb,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CDvJD,OAAO,CCwJvB,A6C5NH,A7C6NE,e6C7Na,C7C6Nb,gBAAgB,C6C7NlB,A7C8NE,e6C9Na,C7C8Nb,YAAY,AAAC,CACX,WAAW,CAAE,GAAG,CAAC,KAAK,CjFzHE,OAAO,CiF0HhC,A6ChOH,A7CmOM,e6CnOS,C7CkOb,WAAW,CACP,KAAK,C6CnOX,A7CoOc,e6CpOC,C7CkOb,WAAW,CAEP,KAAK,CAAG,SAAS,AAAC,CAClB,KAAK,CD/JW,IAAI,CCgKrB,A6CtOL,A7CyOkB,e6CzOH,C7CyOb,aAAa,CAAG,SAAS,AAAC,CACxB,UAAU,CAAE,0BAA2B,CA4BxC,A6CtQH,A7C4OM,e6C5OS,C7CyOb,aAAa,CAAG,SAAS,CAGrB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CACnC,WAAW,CAAE,GAAI,CAIlB,A6ClPL,A7C4OM,e6C5OS,C7CyOb,aAAa,CAAG,SAAS,CAGrB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CD1KS,IAAI,CC2KnB,A6CjPP,A7CoPc,e6CpPC,C7CyOb,aAAa,CAAG,SAAS,AAWtB,MAAM,CAAG,SAAS,C6CpPvB,A7CqPe,e6CrPA,C7CyOb,aAAa,CAAG,SAAS,AAYtB,OAAO,CAAG,SAAS,AAAC,CACnB,KAAK,CD/KiB,IAAI,CCgL1B,UAAU,CDlLS,OAAO,CCmL3B,A6CxPL,A7CyOkB,e6CzOH,C7CyOb,aAAa,CAAG,SAAS,AAmBtB,OAAO,AAAC,CACP,iBAAiB,CjFlKd,OAAO,CiFsKX,A6CjQL,A7C8PQ,e6C9PO,C7CyOb,aAAa,CAAG,SAAS,AAmBtB,OAAO,CAEJ,SAAS,AAAC,CACV,WAAW,CAAE,GAAI,CAClB,A6ChQP,A7CmQM,e6CnQS,C7CyOb,aAAa,CAAG,SAAS,CA0BrB,aAAa,AAAC,CACd,UAAU,CD/LS,OAAO,CCgM3B,A6CrQL,A7CwQE,e6CxQa,C7CwQb,WAAW,AAAC,CACV,KAAK,CAAE,OAAO,CACd,UAAU,CDtMK,OAAO,CCuMvB,A6C3QH,A7C6QW,e6C7QI,C7C6Qb,QAAQ,CAAC,SAAS,AAAC,CACjB,KAAK,CDxMa,IAAI,CC4MvB,A6ClRH,A7C6QW,e6C7QI,C7C6Qb,QAAQ,CAAC,SAAS,AAEf,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,A6CjRL,A7CsRQ,e6CtRO,C7CoRb,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CD9MiB,IAAI,CC+M3B,A6CxRP,A7CyRiB,e6CzRF,C7CoRb,aAAa,CACT,SAAS,AAIR,OAAO,CAAG,SAAS,C6CzR1B,A7C0RiB,e6C1RF,C7CoRb,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CDjNuB,IAAI,CCkNjC,A6C5RP,A7C6RiB,e6C7RF,C7CoRb,aAAa,CACT,SAAS,AAQR,OAAO,CAAG,SAAS,AAAC,CACnB,WAAW,CAAE,GAAI,CAClB,A7E5OH,MAAM,EAAL,SAAS,EAAE,KAAK,E0HnDrB,A7CoS2B,e6CpSZ,A7CmSV,aAAa,AAAA,iBAAiB,CAC7B,aAAa,CAAG,EAAE,CAAG,aAAa,AAAC,CACjC,WAAW,CAAE,GAAG,CAAC,KAAK,CjF/LF,OAAO,CiFgM5B,C8CtSP,AAGI,YAHQ,CAEV,YAAY,CACV,OAAO,AAAC,C9CHV,gBAAgB,CjF4FT,OAAO,C+HlEX,AA1BL,A9CEc,Y8CFF,CAEV,YAAY,CACV,OAAO,C9CDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,C8CCqC,IAAI,C9CA/C,A8CJH,A9CMe,Y8CNH,CAEV,YAAY,CACV,OAAO,C9CGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C8CNrB,A9COe,Y8CPH,CAEV,YAAY,CACV,OAAO,C9CIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,C8CPtB,A9CQe,Y8CRH,CAEV,YAAY,CACV,OAAO,C9CKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C8CRrB,A9CSe,Y8CTH,CAEV,YAAY,CACV,OAAO,C9CMT,IAAI,CAAC,KAAK,CAAG,CAAC,C8CThB,A9CUgB,Y8CVJ,CAEV,YAAY,CACV,OAAO,C9COT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C8CVtB,A9CWgB,Y8CXJ,CAEV,YAAY,CACV,OAAO,C9CQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C8CXtB,A9CYmB,Y8CZP,CAEV,YAAY,CACV,OAAO,C9CST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,A8CfH,A9CkBE,Y8ClBU,CAEV,YAAY,CACV,OAAO,C9CeT,eAAe,AAAC,CACd,KAAK,C8CfqC,IAAI,C9CoB/C,A8CxBH,A9CkBE,Y8ClBU,CAEV,YAAY,CACV,OAAO,C9CeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,A8CvBL,AAKM,YALM,CAEV,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,YALM,CAEV,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,YAbE,CAEV,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,YAjBA,CAEV,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,YAjBA,CAEV,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,YA5BQ,CAEV,YAAY,CA0BV,KAAK,AAAC,C9CCR,gBAAgB,C8CAU,OAAM,C9CChC,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,C8CEzE,AA9BL,AA4BI,YA5BQ,CAEV,YAAY,CA0BV,KAAK,A9CKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,A8CnCH,AAgCM,YAhCM,CAEV,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,C/H2Db,OAAO,C+H1DX,AAlCL,A9CwGE,Y8CxGU,C9CwGV,aAAa,C8CxGf,A9CyGe,Y8CzGH,C9CyGV,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CD/CF,OAAO,CCgDtB,A8C3GH,A9C+GI,Y8C/GQ,C9C8GV,WAAW,CACT,KAAK,C8C/GT,A9CgHI,Y8ChHQ,C9C8GV,WAAW,CAET,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACb,A8ClHL,A9CoHI,Y8CpHQ,C9C8GV,WAAW,CAMT,OAAO,AAAC,CACN,KAAK,CDxDU,OAAO,CCyDtB,UAAU,CD1DQ,OAAM,CCiEzB,A8C7HL,A9CoHI,Y8CpHQ,C9C8GV,WAAW,CAMT,OAAO,AAGJ,MAAM,C8CvHb,A9CoHI,Y8CpHQ,C9C8GV,WAAW,CAMT,OAAO,AAIJ,MAAM,C8CxHb,A9CoHI,Y8CpHQ,C9C8GV,WAAW,CAMT,OAAO,AAKJ,OAAO,AAAC,CACP,KAAK,CD5Dc,IAAI,CC6DvB,UAAU,CAAE,OAAM,CACnB,A8C5HP,A9C+HI,Y8C/HQ,C9C8GV,WAAW,CAiBT,cAAc,AAAC,CACb,YAAY,CAAE,OAAM,CAErB,A8ClIL,A9CoII,Y8CpIQ,C9C8GV,WAAW,CAsBT,cAAc,AAAC,CACb,KAAK,CjFhCiB,OAAO,CiFiC9B,A8CtIL,A9C4IM,Y8C5IM,C9C0IV,YAAY,CAAG,SAAS,CAEpB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CAKpC,A8ClJL,A9C4IM,Y8C5IM,C9C0IV,YAAY,CAAG,SAAS,CAEpB,SAAS,AAER,OAAO,C8C9Id,A9C4IM,Y8C5IM,C9C0IV,YAAY,CAAG,SAAS,CAEpB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CDnFQ,OAAO,CCoFrB,A8CjJP,A9CqJkB,Y8CrJN,C9C0IV,YAAY,CAAG,SAAS,AAWrB,UAAU,CAAG,SAAS,C8CrJ3B,A9CsJc,Y8CtJF,C9C0IV,YAAY,CAAG,SAAS,AAYrB,MAAM,CAAG,SAAS,C8CtJvB,A9CuJe,Y8CvJH,C9C0IV,YAAY,CAAG,SAAS,CAapB,SAAS,AAAA,OAAO,AAAC,CACjB,KAAK,CD1FgB,IAAI,CC2FzB,UAAU,CD7FQ,OAAM,CC8FzB,A8C1JL,A9C4Je,Y8C5JH,C9C0IV,YAAY,CAAG,SAAS,CAkBpB,SAAS,AAAA,OAAO,AAAC,CACjB,iBAAiB,CjFjEd,OAAO,CiFkEX,A8C9JL,A9CiKM,Y8CjKM,C9C0IV,YAAY,CAAG,SAAS,CAuBpB,aAAa,AAAC,CACd,MAAM,CAAE,KAAM,CACd,UAAU,CDpGU,OAAO,CCqG5B,A8CpKL,A9CwKE,Y8CxKU,C9CwKV,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACb,UAAU,CAAE,OAAQ,CACrB,A8C3KH,A9C8KW,Y8C9KC,C9C8KV,QAAQ,CAAC,CAAC,AAAC,CACT,KAAK,CDlHY,OAAO,CCsHzB,A8CnLH,A9C8KW,Y8C9KC,C9C8KV,QAAQ,CAAC,CAAC,AAEP,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,A8ClLL,A9CwLQ,Y8CxLI,C9CsLV,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CDzHgB,OAAO,CC0H7B,A8C1LP,A9C2LiB,Y8C3LL,C9CsLV,aAAa,CACT,SAAS,CAIP,SAAS,AAAA,OAAO,C8C3LxB,A9C4LiB,Y8C5LL,C9CsLV,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CD5HsB,IAAI,CC6H/B,UAAU,CAAE,WAAY,CACzB,A8C/LP,A9CqMI,Y8CrMQ,C9CoMV,aAAa,CACX,aAAa,AAAC,CACZ,UAAU,CDvIU,OAAO,CCwI3B,MAAM,CAAE,CAAE,CAQX,A8C/ML,A9CqMI,Y8CrMQ,C9CoMV,aAAa,CACX,aAAa,C8CrMjB,A9CyMgB,Y8CzMJ,C9CoMV,aAAa,CACX,aAAa,AAIV,MAAM,CAAG,UAAU,AAAC,CACnB,KAAK,CD5Ic,IAAI,CC6IxB,A8C3MP,A9CqMI,Y8CrMQ,C9CoMV,aAAa,CACX,aAAa,AAOV,MAAM,AAAC,CACN,UAAU,CAAE,OAAO,CACpB,A8C9MP,A9CgNI,Y8ChNQ,C9CoMV,aAAa,CAYX,UAAU,AAAC,CACT,KAAK,CDpJU,OAAO,CCqJvB,A+ClNL,AAGI,kBAHc,CAEhB,YAAY,CACV,OAAO,AAAC,C/CHV,gBAAgB,CjF4FT,OAAO,CgIlEX,AA1BL,A/CEc,kB+CFI,CAEhB,YAAY,CACV,OAAO,C/CDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,C+CCqC,IAAI,C/CA/C,A+CJH,A/CMe,kB+CNG,CAEhB,YAAY,CACV,OAAO,C/CGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C+CNrB,A/COe,kB+CPG,CAEhB,YAAY,CACV,OAAO,C/CIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,C+CPtB,A/CQe,kB+CRG,CAEhB,YAAY,CACV,OAAO,C/CKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,C+CRrB,A/CSe,kB+CTG,CAEhB,YAAY,CACV,OAAO,C/CMT,IAAI,CAAC,KAAK,CAAG,CAAC,C+CThB,A/CUgB,kB+CVE,CAEhB,YAAY,CACV,OAAO,C/COT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C+CVtB,A/CWgB,kB+CXE,CAEhB,YAAY,CACV,OAAO,C/CQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,C+CXtB,A/CYmB,kB+CZD,CAEhB,YAAY,CACV,OAAO,C/CST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,A+CfH,A/CkBE,kB+ClBgB,CAEhB,YAAY,CACV,OAAO,C/CeT,eAAe,AAAC,CACd,KAAK,C+CfqC,IAAI,C/CoB/C,A+CxBH,A/CkBE,kB+ClBgB,CAEhB,YAAY,CACV,OAAO,C/CeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,A+CvBL,AAKM,kBALY,CAEhB,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,kBALY,CAEhB,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,kBAbQ,CAEhB,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,kBAjBM,CAEhB,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,kBAjBM,CAEhB,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,kBA5Bc,CAEhB,YAAY,CA0BV,KAAK,AAAC,C/CCR,gBAAgB,CjF+DT,OAAO,CiF9Dd,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,C+CEzE,AA9BL,AA4BI,kBA5Bc,CAEhB,YAAY,CA0BV,KAAK,A/CKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,A+CnCH,AAgCM,kBAhCY,CAEhB,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,ChI2Db,OAAO,CgI1DX,AAlCL,A/CyNE,kB+CzNgB,C/CyNhB,aAAa,C+CzNf,A/C0Ne,kB+C1NG,C/C0NhB,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CDvJD,OAAO,CCwJvB,A+C5NH,A/C6NE,kB+C7NgB,C/C6NhB,gBAAgB,C+C7NlB,A/C8NE,kB+C9NgB,C/C8NhB,YAAY,AAAC,CACX,WAAW,CAAE,GAAG,CAAC,KAAK,CjFzHE,OAAO,CiF0HhC,A+ChOH,A/CmOM,kB+CnOY,C/CkOhB,WAAW,CACP,KAAK,C+CnOX,A/CoOc,kB+CpOI,C/CkOhB,WAAW,CAEP,KAAK,CAAG,SAAS,AAAC,CAClB,KAAK,CD/JW,IAAI,CCgKrB,A+CtOL,A/CyOkB,kB+CzOA,C/CyOhB,aAAa,CAAG,SAAS,AAAC,CACxB,UAAU,CAAE,0BAA2B,CA4BxC,A+CtQH,A/C4OM,kB+C5OY,C/CyOhB,aAAa,CAAG,SAAS,CAGrB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CACnC,WAAW,CAAE,GAAI,CAIlB,A+ClPL,A/C4OM,kB+C5OY,C/CyOhB,aAAa,CAAG,SAAS,CAGrB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CD1KS,IAAI,CC2KnB,A+CjPP,A/CoPc,kB+CpPI,C/CyOhB,aAAa,CAAG,SAAS,AAWtB,MAAM,CAAG,SAAS,C+CpPvB,A/CqPe,kB+CrPG,C/CyOhB,aAAa,CAAG,SAAS,AAYtB,OAAO,CAAG,SAAS,AAAC,CACnB,KAAK,CD/KiB,IAAI,CCgL1B,UAAU,CDlLS,OAAO,CCmL3B,A+CxPL,A/CyOkB,kB+CzOA,C/CyOhB,aAAa,CAAG,SAAS,AAmBtB,OAAO,AAAC,CACP,iBAAiB,CjFjKd,OAAO,CiFqKX,A+CjQL,A/C8PQ,kB+C9PU,C/CyOhB,aAAa,CAAG,SAAS,AAmBtB,OAAO,CAEJ,SAAS,AAAC,CACV,WAAW,CAAE,GAAI,CAClB,A+ChQP,A/CmQM,kB+CnQY,C/CyOhB,aAAa,CAAG,SAAS,CA0BrB,aAAa,AAAC,CACd,UAAU,CD/LS,OAAO,CCgM3B,A+CrQL,A/CwQE,kB+CxQgB,C/CwQhB,WAAW,AAAC,CACV,KAAK,CAAE,OAAO,CACd,UAAU,CDtMK,OAAO,CCuMvB,A+C3QH,A/C6QW,kB+C7QO,C/C6QhB,QAAQ,CAAC,SAAS,AAAC,CACjB,KAAK,CDxMa,IAAI,CC4MvB,A+ClRH,A/C6QW,kB+C7QO,C/C6QhB,QAAQ,CAAC,SAAS,AAEf,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,A+CjRL,A/CsRQ,kB+CtRU,C/CoRhB,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CD9MiB,IAAI,CC+M3B,A+CxRP,A/CyRiB,kB+CzRC,C/CoRhB,aAAa,CACT,SAAS,AAIR,OAAO,CAAG,SAAS,C+CzR1B,A/C0RiB,kB+C1RC,C/CoRhB,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CDjNuB,IAAI,CCkNjC,A+C5RP,A/C6RiB,kB+C7RC,C/CoRhB,aAAa,CACT,SAAS,AAQR,OAAO,CAAG,SAAS,AAAC,CACnB,WAAW,CAAE,GAAI,CAClB,A7E5OH,MAAM,EAAL,SAAS,EAAE,KAAK,E4HnDrB,A/CoS2B,kB+CpST,A/CmSb,aAAa,AAAA,iBAAiB,CAC7B,aAAa,CAAG,EAAE,CAAG,aAAa,AAAC,CACjC,WAAW,CAAE,GAAG,CAAC,KAAK,CjF/LF,OAAO,CiFgM5B,CgDtSP,AAGI,YAHQ,CAEV,YAAY,CACV,OAAO,AAAC,ChDHV,gBAAgB,CjFkGT,OAAO,CiIxEX,AA1BL,AhDEc,YgDFF,CAEV,YAAY,CACV,OAAO,ChDDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,CgDC8B,IAAI,ChDAxC,AgDJH,AhDMe,YgDNH,CAEV,YAAY,CACV,OAAO,ChDGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CgDNrB,AhDOe,YgDPH,CAEV,YAAY,CACV,OAAO,ChDIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,CgDPtB,AhDQe,YgDRH,CAEV,YAAY,CACV,OAAO,ChDKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CgDRrB,AhDSe,YgDTH,CAEV,YAAY,CACV,OAAO,ChDMT,IAAI,CAAC,KAAK,CAAG,CAAC,CgDThB,AhDUgB,YgDVJ,CAEV,YAAY,CACV,OAAO,ChDOT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CgDVtB,AhDWgB,YgDXJ,CAEV,YAAY,CACV,OAAO,ChDQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CgDXtB,AhDYmB,YgDZP,CAEV,YAAY,CACV,OAAO,ChDST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,AgDfH,AhDkBE,YgDlBU,CAEV,YAAY,CACV,OAAO,ChDeT,eAAe,AAAC,CACd,KAAK,CgDf8B,IAAI,ChDoBxC,AgDxBH,AhDkBE,YgDlBU,CAEV,YAAY,CACV,OAAO,ChDeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,AgDvBL,AAKM,YALM,CAEV,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,YALM,CAEV,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,YAbE,CAEV,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,YAjBA,CAEV,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,YAjBA,CAEV,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,YA5BQ,CAEV,YAAY,CA0BV,KAAK,AAAC,ChDCR,gBAAgB,CgDAU,OAAM,ChDChC,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CgDEzE,AA9BL,AA4BI,YA5BQ,CAEV,YAAY,CA0BV,KAAK,AhDKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AgDnCH,AAgCM,YAhCM,CAEV,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,CjIiEb,OAAO,CiIhEX,AAlCL,AhDwGE,YgDxGU,ChDwGV,aAAa,CgDxGf,AhDyGe,YgDzGH,ChDyGV,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CD/CF,OAAO,CCgDtB,AgD3GH,AhD+GI,YgD/GQ,ChD8GV,WAAW,CACT,KAAK,CgD/GT,AhDgHI,YgDhHQ,ChD8GV,WAAW,CAET,OAAO,AAAC,CACN,KAAK,CAAE,IAAK,CACb,AgDlHL,AhDoHI,YgDpHQ,ChD8GV,WAAW,CAMT,OAAO,AAAC,CACN,KAAK,CDxDU,OAAO,CCyDtB,UAAU,CD1DQ,OAAM,CCiEzB,AgD7HL,AhDoHI,YgDpHQ,ChD8GV,WAAW,CAMT,OAAO,AAGJ,MAAM,CgDvHb,AhDoHI,YgDpHQ,ChD8GV,WAAW,CAMT,OAAO,AAIJ,MAAM,CgDxHb,AhDoHI,YgDpHQ,ChD8GV,WAAW,CAMT,OAAO,AAKJ,OAAO,AAAC,CACP,KAAK,CD5Dc,IAAI,CC6DvB,UAAU,CAAE,OAAM,CACnB,AgD5HP,AhD+HI,YgD/HQ,ChD8GV,WAAW,CAiBT,cAAc,AAAC,CACb,YAAY,CAAE,OAAM,CAErB,AgDlIL,AhDoII,YgDpIQ,ChD8GV,WAAW,CAsBT,cAAc,AAAC,CACb,KAAK,CjFhCiB,OAAO,CiFiC9B,AgDtIL,AhD4IM,YgD5IM,ChD0IV,YAAY,CAAG,SAAS,CAEpB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CAKpC,AgDlJL,AhD4IM,YgD5IM,ChD0IV,YAAY,CAAG,SAAS,CAEpB,SAAS,AAER,OAAO,CgD9Id,AhD4IM,YgD5IM,ChD0IV,YAAY,CAAG,SAAS,CAEpB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CDnFQ,OAAO,CCoFrB,AgDjJP,AhDqJkB,YgDrJN,ChD0IV,YAAY,CAAG,SAAS,AAWrB,UAAU,CAAG,SAAS,CgDrJ3B,AhDsJc,YgDtJF,ChD0IV,YAAY,CAAG,SAAS,AAYrB,MAAM,CAAG,SAAS,CgDtJvB,AhDuJe,YgDvJH,ChD0IV,YAAY,CAAG,SAAS,CAapB,SAAS,AAAA,OAAO,AAAC,CACjB,KAAK,CD1FgB,IAAI,CC2FzB,UAAU,CD7FQ,OAAM,CC8FzB,AgD1JL,AhD4Je,YgD5JH,ChD0IV,YAAY,CAAG,SAAS,CAkBpB,SAAS,AAAA,OAAO,AAAC,CACjB,iBAAiB,CjF3Dd,OAAO,CiF4DX,AgD9JL,AhDiKM,YgDjKM,ChD0IV,YAAY,CAAG,SAAS,CAuBpB,aAAa,AAAC,CACd,MAAM,CAAE,KAAM,CACd,UAAU,CDpGU,OAAO,CCqG5B,AgDpKL,AhDwKE,YgDxKU,ChDwKV,WAAW,AAAC,CACV,KAAK,CAAE,OAAM,CACb,UAAU,CAAE,OAAQ,CACrB,AgD3KH,AhD8KW,YgD9KC,ChD8KV,QAAQ,CAAC,CAAC,AAAC,CACT,KAAK,CDlHY,OAAO,CCsHzB,AgDnLH,AhD8KW,YgD9KC,ChD8KV,QAAQ,CAAC,CAAC,AAEP,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,AgDlLL,AhDwLQ,YgDxLI,ChDsLV,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CDzHgB,OAAO,CC0H7B,AgD1LP,AhD2LiB,YgD3LL,ChDsLV,aAAa,CACT,SAAS,CAIP,SAAS,AAAA,OAAO,CgD3LxB,AhD4LiB,YgD5LL,ChDsLV,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CD5HsB,IAAI,CC6H/B,UAAU,CAAE,WAAY,CACzB,AgD/LP,AhDqMI,YgDrMQ,ChDoMV,aAAa,CACX,aAAa,AAAC,CACZ,UAAU,CDvIU,OAAO,CCwI3B,MAAM,CAAE,CAAE,CAQX,AgD/ML,AhDqMI,YgDrMQ,ChDoMV,aAAa,CACX,aAAa,CgDrMjB,AhDyMgB,YgDzMJ,ChDoMV,aAAa,CACX,aAAa,AAIV,MAAM,CAAG,UAAU,AAAC,CACnB,KAAK,CD5Ic,IAAI,CC6IxB,AgD3MP,AhDqMI,YgDrMQ,ChDoMV,aAAa,CACX,aAAa,AAOV,MAAM,AAAC,CACN,UAAU,CAAE,OAAO,CACpB,AgD9MP,AhDgNI,YgDhNQ,ChDoMV,aAAa,CAYX,UAAU,AAAC,CACT,KAAK,CDpJU,OAAO,CCqJvB,AiDlNL,AAGI,kBAHc,CAEhB,YAAY,CACV,OAAO,AAAC,CjDHV,gBAAgB,CjFkGT,OAAO,CkIxEX,AA1BL,AjDEc,kBiDFI,CAEhB,YAAY,CACV,OAAO,CjDDT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAC,CACZ,KAAK,CiDC8B,IAAI,CjDAxC,AiDJH,AjDMe,kBiDNG,CAEhB,YAAY,CACV,OAAO,CjDGT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CiDNrB,AjDOe,kBiDPG,CAEhB,YAAY,CACV,OAAO,CjDIT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,OAAO,CiDPtB,AjDQe,kBiDRG,CAEhB,YAAY,CACV,OAAO,CjDKT,IAAI,CAAG,EAAE,CAAG,CAAC,AAAA,MAAM,CiDRrB,AjDSe,kBiDTG,CAEhB,YAAY,CACV,OAAO,CjDMT,IAAI,CAAC,KAAK,CAAG,CAAC,CiDThB,AjDUgB,kBiDVE,CAEhB,YAAY,CACV,OAAO,CjDOT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CiDVtB,AjDWgB,kBiDXE,CAEhB,YAAY,CACV,OAAO,CjDQT,IAAI,CAAC,KAAK,CAAG,CAAC,AAAA,MAAM,CiDXtB,AjDYmB,kBiDZD,CAEhB,YAAY,CACV,OAAO,CjDST,IAAI,CAAG,OAAO,CAAG,CAAC,AAAC,CACjB,UAAU,CAdyF,eAAI,CAevG,KAAK,CAf0E,OAAO,CAgBvF,AiDfH,AjDkBE,kBiDlBgB,CAEhB,YAAY,CACV,OAAO,CjDeT,eAAe,AAAC,CACd,KAAK,CiDf8B,IAAI,CjDoBxC,AiDxBH,AjDkBE,kBiDlBgB,CAEhB,YAAY,CACV,OAAO,CjDeT,eAAe,AAEZ,MAAM,AAAC,CACN,KAAK,CAtBwE,OAAO,CAuBpF,UAAU,CAvBuF,eAAI,CAwBtG,AiDvBL,AAKM,kBALY,CAEhB,YAAY,CACV,OAAO,CAEL,eAAe,AAAC,CACd,KAAK,CAAE,IAAK,CAIb,AAVP,AAKM,kBALY,CAEhB,YAAY,CACV,OAAO,CAEL,eAAe,AAEZ,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AAEH,MAAM,EAAL,SAAS,EAAE,KAAK,EAXvB,AAaU,kBAbQ,CAEhB,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,AACC,QAAQ,AAAC,CACR,gBAAgB,CAAE,qBAAI,CACvB,AAhBb,AAiBY,kBAjBM,CAEhB,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAAC,CACA,KAAK,CAAE,IAAK,CAIb,AAtBb,AAiBY,kBAjBM,CAEhB,YAAY,CACV,OAAO,CASH,cAAc,CACZ,EAAE,CAIA,CAAC,AAEE,MAAM,AAAC,CACN,UAAU,CAAE,OAAM,CACnB,CArBf,AA4BI,kBA5Bc,CAEhB,YAAY,CA0BV,KAAK,AAAC,CjDCR,gBAAgB,CjFqET,OAAO,CiFpEd,KAAK,CAFgC,IAAI,CAGzC,aAAa,CAHuF,CAAC,CAGjE,KAAK,CAHwB,WAAW,CiDEzE,AA9BL,AA4BI,kBA5Bc,CAEhB,YAAY,CA0BV,KAAK,AjDKN,MAAM,AAAC,CACN,gBAAgB,CAAE,OAAM,CACzB,AiDnCH,AAgCM,kBAhCY,CAEhB,YAAY,CA8BV,EAAE,AAAA,YAAY,AAAC,CACb,gBAAgB,ClIiEb,OAAO,CkIhEX,AAlCL,AjDyNE,kBiDzNgB,CjDyNhB,aAAa,CiDzNf,AjD0Ne,kBiD1NG,CjD0NhB,aAAa,AAAA,OAAO,AAAC,CACnB,gBAAgB,CDvJD,OAAO,CCwJvB,AiD5NH,AjD6NE,kBiD7NgB,CjD6NhB,gBAAgB,CiD7NlB,AjD8NE,kBiD9NgB,CjD8NhB,YAAY,AAAC,CACX,WAAW,CAAE,GAAG,CAAC,KAAK,CjFzHE,OAAO,CiF0HhC,AiDhOH,AjDmOM,kBiDnOY,CjDkOhB,WAAW,CACP,KAAK,CiDnOX,AjDoOc,kBiDpOI,CjDkOhB,WAAW,CAEP,KAAK,CAAG,SAAS,AAAC,CAClB,KAAK,CD/JW,IAAI,CCgKrB,AiDtOL,AjDyOkB,kBiDzOA,CjDyOhB,aAAa,CAAG,SAAS,AAAC,CACxB,UAAU,CAAE,0BAA2B,CA4BxC,AiDtQH,AjD4OM,kBiD5OY,CjDyOhB,aAAa,CAAG,SAAS,CAGrB,SAAS,AAAC,CACV,WAAW,CAAE,qBAAsB,CACnC,WAAW,CAAE,GAAI,CAIlB,AiDlPL,AjD4OM,kBiD5OY,CjDyOhB,aAAa,CAAG,SAAS,CAGrB,SAAS,AAGR,MAAM,AAAC,CACN,KAAK,CD1KS,IAAI,CC2KnB,AiDjPP,AjDoPc,kBiDpPI,CjDyOhB,aAAa,CAAG,SAAS,AAWtB,MAAM,CAAG,SAAS,CiDpPvB,AjDqPe,kBiDrPG,CjDyOhB,aAAa,CAAG,SAAS,AAYtB,OAAO,CAAG,SAAS,AAAC,CACnB,KAAK,CD/KiB,IAAI,CCgL1B,UAAU,CDlLS,OAAO,CCmL3B,AiDxPL,AjDyOkB,kBiDzOA,CjDyOhB,aAAa,CAAG,SAAS,AAmBtB,OAAO,AAAC,CACP,iBAAiB,CjF3Jd,OAAO,CiF+JX,AiDjQL,AjD8PQ,kBiD9PU,CjDyOhB,aAAa,CAAG,SAAS,AAmBtB,OAAO,CAEJ,SAAS,AAAC,CACV,WAAW,CAAE,GAAI,CAClB,AiDhQP,AjDmQM,kBiDnQY,CjDyOhB,aAAa,CAAG,SAAS,CA0BrB,aAAa,AAAC,CACd,UAAU,CD/LS,OAAO,CCgM3B,AiDrQL,AjDwQE,kBiDxQgB,CjDwQhB,WAAW,AAAC,CACV,KAAK,CAAE,OAAO,CACd,UAAU,CDtMK,OAAO,CCuMvB,AiD3QH,AjD6QW,kBiD7QO,CjD6QhB,QAAQ,CAAC,SAAS,AAAC,CACjB,KAAK,CDxMa,IAAI,CC4MvB,AiDlRH,AjD6QW,kBiD7QO,CjD6QhB,QAAQ,CAAC,SAAS,AAEf,MAAM,AAAC,CACN,eAAe,CAAE,IAAK,CACvB,AiDjRL,AjDsRQ,kBiDtRU,CjDoRhB,aAAa,CACT,SAAS,CACP,SAAS,AAAC,CACV,KAAK,CD9MiB,IAAI,CC+M3B,AiDxRP,AjDyRiB,kBiDzRC,CjDoRhB,aAAa,CACT,SAAS,AAIR,OAAO,CAAG,SAAS,CiDzR1B,AjD0RiB,kBiD1RC,CjDoRhB,aAAa,CACT,SAAS,CAKP,SAAS,AAAA,MAAM,AAAC,CAChB,KAAK,CDjNuB,IAAI,CCkNjC,AiD5RP,AjD6RiB,kBiD7RC,CjDoRhB,aAAa,CACT,SAAS,AAQR,OAAO,CAAG,SAAS,AAAC,CACnB,WAAW,CAAE,GAAI,CAClB,A7E5OH,MAAM,EAAL,SAAS,EAAE,KAAK,E8HnDrB,AjDoS2B,kBiDpST,AjDmSb,aAAa,AAAA,iBAAiB,CAC7B,aAAa,CAAG,EAAE,CAAG,aAAa,AAAC,CACjC,WAAW,CAAE,GAAG,CAAC,KAAK,CjF/LF,OAAO,CiFgM5B", "names": [] } AdminLTE/css/AdminLTE.css 0000644 00000371141 15002261751 0011046 0 ustar 00 /*! * AdminLTE v2.4.18 * * Author: Colorlib * Support: <https://github.com/ColorlibHQ/AdminLTE/issues> * Repository: git://github.com/ColorlibHQ/AdminLTE.git * License: MIT <http://opensource.org/licenses/MIT> */ /* * Core: General Layout Style * ------------------------- */ html, body { height: 100%; } .layout-boxed html, .layout-boxed body { height: 100%; } body { font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 400; overflow-x: hidden; overflow-y: auto; } /* Layout */ .wrapper { height: 100%; position: relative; overflow-x: hidden; overflow-y: auto; } .wrapper:before, .wrapper:after { content: " "; display: table; } .wrapper:after { clear: both; } .layout-boxed .wrapper { max-width: 1250px; margin: 0 auto; min-height: 100%; box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); position: relative; } .layout-boxed { background-color: #f9fafc; } /* * Content Wrapper - contains the main content */ .content-wrapper, .main-footer { -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out; -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out; -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out; transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out; margin-left: 230px; z-index: 820; } .layout-top-nav .content-wrapper, .layout-top-nav .main-footer { margin-left: 0; } @media (max-width: 767px) { .content-wrapper, .main-footer { margin-left: 0; } } @media (min-width: 768px) { .sidebar-collapse .content-wrapper, .sidebar-collapse .main-footer { margin-left: 0; } } @media (max-width: 767px) { .sidebar-open .content-wrapper, .sidebar-open .main-footer { -webkit-transform: translate(230px, 0); -ms-transform: translate(230px, 0); -o-transform: translate(230px, 0); transform: translate(230px, 0); } } .content-wrapper { min-height: calc(100vh - 101px); background-color: #ecf0f5; z-index: 800; } @media (max-width: 767px) { .content-wrapper { min-height: calc(100vh - 151px); } } .main-footer { background: #fff; padding: 15px; color: #444; border-top: 1px solid #d2d6de; } /* Fixed layout */ .fixed .main-header, .fixed .main-sidebar, .fixed .left-side { position: fixed; } .fixed .main-header { top: 0; right: 0; left: 0; } .fixed .content-wrapper, .fixed .right-side { padding-top: 50px; } @media (max-width: 767px) { .fixed .content-wrapper, .fixed .right-side { padding-top: 100px; } } .fixed.layout-boxed .wrapper { max-width: 100%; } .fixed .wrapper { overflow: hidden; } .hold-transition .content-wrapper, .hold-transition .right-side, .hold-transition .main-footer, .hold-transition .main-sidebar, .hold-transition .left-side, .hold-transition .main-header .navbar, .hold-transition .main-header .logo, .hold-transition .menu-open .fa-angle-left { /* Fix for IE */ -webkit-transition: none; -o-transition: none; transition: none; } /* Content */ .content { min-height: 250px; padding: 15px; margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px; } /* H1 - H6 font */ h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: 'Source Sans Pro', sans-serif; } /* General Links */ a { color: #3c8dbc; } a:hover, a:active, a:focus { outline: none; text-decoration: none; color: #72afd2; } /* Page Header */ .page-header { margin: 10px 0 20px 0; font-size: 22px; } .page-header > small { color: #666; display: block; margin-top: 5px; } /* * Component: Main Header * ---------------------- */ .main-header { position: relative; max-height: 100px; z-index: 1030; } .main-header .navbar { -webkit-transition: margin-left 0.3s ease-in-out; -o-transition: margin-left 0.3s ease-in-out; transition: margin-left 0.3s ease-in-out; margin-bottom: 0; margin-left: 230px; border: none; min-height: 50px; border-radius: 0; } .layout-top-nav .main-header .navbar { margin-left: 0; } .main-header #navbar-search-input.form-control { background: rgba(255, 255, 255, 0.2); border-color: transparent; } .main-header #navbar-search-input.form-control:focus, .main-header #navbar-search-input.form-control:active { border-color: rgba(0, 0, 0, 0.1); background: rgba(255, 255, 255, 0.9); } .main-header #navbar-search-input.form-control::-moz-placeholder { color: #ccc; opacity: 1; } .main-header #navbar-search-input.form-control:-ms-input-placeholder { color: #ccc; } .main-header #navbar-search-input.form-control::-webkit-input-placeholder { color: #ccc; } .main-header .navbar-custom-menu, .main-header .navbar-right { float: right; } @media (max-width: 991px) { .main-header .navbar-custom-menu a, .main-header .navbar-right a { color: inherit; background: transparent; } } @media (max-width: 767px) { .main-header .navbar-right { float: none; } .navbar-collapse .main-header .navbar-right { margin: 7.5px -15px; } .main-header .navbar-right > li { color: inherit; border: 0; } } .main-header .sidebar-toggle { float: left; background-color: transparent; background-image: none; padding: 15px 15px; font-family: fontAwesome; } .main-header .sidebar-toggle:before { content: "\f0c9"; } .main-header .sidebar-toggle:hover { color: #fff; } .main-header .sidebar-toggle:focus, .main-header .sidebar-toggle:active { background: transparent; } .main-header .sidebar-toggle.fa5 { font-family: "Font Awesome\ 5 Free"; } .main-header .sidebar-toggle.fa5:before { content: "\f0c9"; font-weight: 900; } .main-header .sidebar-toggle .icon-bar { display: none; } .main-header .navbar .nav > li.user > a > .fa, .main-header .navbar .nav > li.user > a > .glyphicon, .main-header .navbar .nav > li.user > a > .ion { margin-right: 5px; } .main-header .navbar .nav > li > a > .label { position: absolute; top: 9px; right: 7px; text-align: center; font-size: 9px; padding: 2px 3px; line-height: 0.9; } .main-header .logo { -webkit-transition: width 0.3s ease-in-out; -o-transition: width 0.3s ease-in-out; transition: width 0.3s ease-in-out; display: block; float: left; height: 50px; font-size: 20px; line-height: 50px; text-align: center; width: 230px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 0 15px; font-weight: 300; overflow: hidden; } .main-header .logo img { padding: 4px; object-fit: contain; margin: 0 auto; } .main-header .logo .logo-lg { display: block; } .main-header .logo .logo-lg img { max-width: 200px; max-height: 50px; } .main-header .logo .logo-lg .brandlogo-image { margin-top: 8px; margin-right: 10px; margin-left: -5px; } .main-header .logo .logo-mini { display: none; } .main-header .logo .logo-mini img { max-width: 50px; max-height: 50px; } .main-header .logo .logo-mini .brandlogo-image { margin-top: 8px; margin-right: 10px; margin-left: 10px; } .main-header .logo .brandlogo-image { float: left; height: 34px; width: auto; } .main-header .navbar-brand { color: #fff; } .content-header { position: relative; padding: 15px 15px 0 15px; } .content-header > h1 { margin: 0; font-size: 24px; } .content-header > h1 > small { font-size: 15px; display: inline-block; padding-left: 4px; font-weight: 300; } .content-header > .breadcrumb { float: right; background: transparent; margin-top: 0; margin-bottom: 0; font-size: 12px; padding: 7px 5px; position: absolute; top: 15px; right: 10px; border-radius: 2px; } .content-header > .breadcrumb > li > a { color: #444; text-decoration: none; display: inline-block; } .content-header > .breadcrumb > li > a > .fa, .content-header > .breadcrumb > li > a > .glyphicon, .content-header > .breadcrumb > li > a > .ion { margin-right: 5px; } .content-header > .breadcrumb > li + li:before { content: '>\00a0'; } @media (max-width: 991px) { .content-header > .breadcrumb { position: relative; margin-top: 5px; top: 0; right: 0; float: none; background: #d2d6de; padding-left: 10px; } .content-header > .breadcrumb li:before { color: #97a0b3; } } .navbar-toggle { color: #fff; border: 0; margin: 0; padding: 15px 15px; } @media (max-width: 991px) { .navbar-custom-menu .navbar-nav > li { float: left; } .navbar-custom-menu .navbar-nav { margin: 0; float: left; } .navbar-custom-menu .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; line-height: 20px; } } @media (max-width: 767px) { .main-header { position: relative; } .main-header .logo, .main-header .navbar { width: 100%; float: none; } .main-header .navbar { margin: 0; } .main-header .navbar-custom-menu { float: right; } } @media (max-width: 991px) { .navbar-collapse.pull-left { float: none !important; } .navbar-collapse.pull-left + .navbar-custom-menu { display: block; position: absolute; top: 0; right: 40px; } } /* * Component: Sidebar * ------------------ */ .main-sidebar { position: absolute; top: 0; left: 0; padding-top: 50px; min-height: 100%; width: 230px; z-index: 810; -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out; -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out; -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out; transition: transform 0.3s ease-in-out, width 0.3s ease-in-out; } @media (max-width: 767px) { .main-sidebar { padding-top: 100px; } } @media (max-width: 767px) { .main-sidebar { -webkit-transform: translate(-230px, 0); -ms-transform: translate(-230px, 0); -o-transform: translate(-230px, 0); transform: translate(-230px, 0); } } @media (min-width: 768px) { .sidebar-collapse .main-sidebar { -webkit-transform: translate(-230px, 0); -ms-transform: translate(-230px, 0); -o-transform: translate(-230px, 0); transform: translate(-230px, 0); } } @media (max-width: 767px) { .sidebar-open .main-sidebar { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } } .sidebar { padding-bottom: 10px; } .sidebar-form input:focus { border-color: transparent; } .user-panel { position: relative; width: 100%; padding: 10px; overflow: hidden; } .user-panel:before, .user-panel:after { content: " "; display: table; } .user-panel:after { clear: both; } .user-panel > .image > img { width: 100%; max-width: 45px; height: auto; } .user-panel > .info { padding: 5px 5px 5px 15px; line-height: 1; position: absolute; left: 55px; } .user-panel > .info > p { font-weight: 600; margin-bottom: 9px; } .user-panel > .info > a { text-decoration: none; padding-right: 5px; margin-top: 3px; font-size: 11px; } .user-panel > .info > a > .fa, .user-panel > .info > a > .ion, .user-panel > .info > a > .glyphicon { margin-right: 3px; } .sidebar-menu { list-style: none; margin: 0; padding: 0; } .sidebar-menu > li { position: relative; margin: 0; padding: 0; } .sidebar-menu > li > a { padding: 12px 5px 12px 15px; display: block; } .sidebar-menu > li > a > .fa, .sidebar-menu > li > a > .glyphicon, .sidebar-menu > li > a > .ion { width: 20px; } .sidebar-menu > li .label, .sidebar-menu > li .badge { margin-right: 5px; } .sidebar-menu > li .badge { margin-top: 3px; } .sidebar-menu li.header { padding: 10px 25px 10px 15px; font-size: 12px; } .sidebar-menu li > a > .fa-angle-left, .sidebar-menu li > a > .pull-right-container > .fa-angle-left { width: auto; height: auto; padding: 0; margin-right: 10px; -webkit-transition: transform 0.5s ease; -o-transition: transform 0.5s ease; transition: transform 0.5s ease; } .sidebar-menu li > a > .fa-angle-left { position: absolute; top: 50%; right: 10px; margin-top: -8px; } .sidebar-menu .menu-open > a > .fa-angle-left, .sidebar-menu .menu-open > a > .pull-right-container > .fa-angle-left { -webkit-transform: rotate(-90deg); -ms-transform: rotate(-90deg); -o-transform: rotate(-90deg); transform: rotate(-90deg); } .sidebar-menu .active > .treeview-menu { display: block; } /* * Component: Sidebar Mini */ @media (min-width: 768px) { .sidebar-mini.sidebar-collapse .content-wrapper, .sidebar-mini.sidebar-collapse .right-side, .sidebar-mini.sidebar-collapse .main-footer { margin-left: 50px !important; z-index: 840; } .sidebar-mini.sidebar-collapse .main-sidebar { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); width: 50px !important; z-index: 850; } .sidebar-mini.sidebar-collapse .sidebar-menu > li { position: relative; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { margin-right: 0; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { border-top-right-radius: 4px; } .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { border-bottom-right-radius: 4px; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { padding-top: 5px; padding-bottom: 5px; border-bottom-right-radius: 4px; } .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info, .sidebar-mini.sidebar-collapse .sidebar-form, .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span, .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu, .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right, .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span > .pull-right, .sidebar-mini.sidebar-collapse .sidebar-menu li.header { display: none !important; -webkit-transform: translateZ(0); } .sidebar-mini.sidebar-collapse .main-header .logo { width: 50px; } .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini { display: block; margin-left: -15px; margin-right: -15px; font-size: 18px; } .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg { display: none; } .sidebar-mini.sidebar-collapse .main-header .navbar { margin-left: 50px; } } @media (min-width: 768px) { .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right), .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { display: block !important; position: absolute; width: 180px; left: 50px; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > span { top: 0; margin-left: -3px; padding: 12px 5px 12px 20px; background-color: inherit; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container { position: relative !important; float: right; width: auto !important; left: 180px !important; top: -22px !important; z-index: 900; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type) { display: none; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { top: 44px; margin-left: 0; } } .sidebar-expanded-on-hover .main-footer, .sidebar-expanded-on-hover .content-wrapper { margin-left: 50px; } .sidebar-expanded-on-hover .main-sidebar { box-shadow: 3px 0 8px rgba(0, 0, 0, 0.125); } .sidebar-menu, .main-sidebar .user-panel, .sidebar-menu > li.header { white-space: nowrap; overflow: hidden; } .sidebar-menu:hover { overflow: visible; } .sidebar-form, .sidebar-menu > li.header { overflow: hidden; text-overflow: clip; } .sidebar-menu li > a { position: relative; } .sidebar-menu li > a > .pull-right-container { position: absolute; right: 10px; top: 50%; margin-top: -7px; } /* * Component: Control sidebar. By default, this is the right sidebar. */ .control-sidebar-bg { position: fixed; z-index: 1000; bottom: 0; } .control-sidebar-bg, .control-sidebar { top: 0; right: -230px; width: 230px; -webkit-transition: right 0.3s ease-in-out; -o-transition: right 0.3s ease-in-out; transition: right 0.3s ease-in-out; } .control-sidebar { position: absolute; padding-top: 50px; z-index: 1010; } @media (max-width: 767px) { .control-sidebar { padding-top: 100px; } } .control-sidebar > .tab-content { padding: 10px 15px; } .control-sidebar.control-sidebar-open, .control-sidebar.control-sidebar-open + .control-sidebar-bg { right: 0; } .control-sidebar-hold-transition .control-sidebar-bg, .control-sidebar-hold-transition .control-sidebar, .control-sidebar-hold-transition .content-wrapper { transition: none; } .control-sidebar-open .control-sidebar-bg, .control-sidebar-open .control-sidebar { right: 0; } @media (min-width: 768px) { .control-sidebar-open .content-wrapper, .control-sidebar-open .right-side, .control-sidebar-open .main-footer { margin-right: 230px; } } .fixed .control-sidebar { position: fixed; height: 100%; overflow-y: auto; padding-bottom: 50px; } .nav-tabs.control-sidebar-tabs > li:first-of-type > a, .nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover, .nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus { border-left-width: 0; } .nav-tabs.control-sidebar-tabs > li > a { border-radius: 0; } .nav-tabs.control-sidebar-tabs > li > a, .nav-tabs.control-sidebar-tabs > li > a:hover { border-top: none; border-right: none; border-left: 1px solid transparent; border-bottom: 1px solid transparent; } .nav-tabs.control-sidebar-tabs > li > a .icon { font-size: 16px; } .nav-tabs.control-sidebar-tabs > li.active > a, .nav-tabs.control-sidebar-tabs > li.active > a:hover, .nav-tabs.control-sidebar-tabs > li.active > a:focus, .nav-tabs.control-sidebar-tabs > li.active > a:active { border-top: none; border-right: none; border-bottom: none; } @media (max-width: 768px) { .nav-tabs.control-sidebar-tabs { display: table; } .nav-tabs.control-sidebar-tabs > li { display: table-cell; } } .control-sidebar-heading { font-weight: 400; font-size: 16px; padding: 10px 0; margin-bottom: 10px; } .control-sidebar-subheading { display: block; font-weight: 400; font-size: 14px; } .control-sidebar-menu { list-style: none; padding: 0; margin: 0 -15px; } .control-sidebar-menu > li > a { display: block; padding: 10px 15px; } .control-sidebar-menu > li > a:before, .control-sidebar-menu > li > a:after { content: " "; display: table; } .control-sidebar-menu > li > a:after { clear: both; } .control-sidebar-menu > li > a > .control-sidebar-subheading { margin-top: 0; } .control-sidebar-menu .menu-icon { float: left; width: 35px; height: 35px; border-radius: 50%; text-align: center; line-height: 35px; } .control-sidebar-menu .menu-info { margin-left: 45px; margin-top: 3px; } .control-sidebar-menu .menu-info > .control-sidebar-subheading { margin: 0; } .control-sidebar-menu .menu-info > p { margin: 0; font-size: 11px; } .control-sidebar-menu .progress { margin: 0; } .control-sidebar-dark { color: #b8c7ce; } .control-sidebar-dark, .control-sidebar-dark + .control-sidebar-bg { background: #222d32; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs { border-bottom: #1c2529; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a { background: #181f23; color: #b8c7ce; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus { border-left-color: #141a1d; border-bottom-color: #141a1d; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active { background: #1c2529; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover { color: #fff; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active { background: #222d32; color: #fff; } .control-sidebar-dark .control-sidebar-heading, .control-sidebar-dark .control-sidebar-subheading { color: #fff; } .control-sidebar-dark .control-sidebar-menu > li > a:hover { background: #1e282c; } .control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p { color: #b8c7ce; } .control-sidebar-light { color: #5e5e5e; } .control-sidebar-light, .control-sidebar-light + .control-sidebar-bg { background: #f9fafc; border-left: 1px solid #d2d6de; } .control-sidebar-light .nav-tabs.control-sidebar-tabs { border-bottom: #d2d6de; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a { background: #e8ecf4; color: #444; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus { border-left-color: #d2d6de; border-bottom-color: #d2d6de; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active { background: #eff1f7; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active { background: #f9fafc; color: #111; } .control-sidebar-light .control-sidebar-heading, .control-sidebar-light .control-sidebar-subheading { color: #111; } .control-sidebar-light .control-sidebar-menu { margin-left: -14px; } .control-sidebar-light .control-sidebar-menu > li > a:hover { background: #f4f4f5; } .control-sidebar-light .control-sidebar-menu > li > a .menu-info > p { color: #5e5e5e; } /* * Component: Dropdown menus * ------------------------- */ /*Dropdowns in general*/ .dropdown-menu { box-shadow: none; border-color: #eee; } .dropdown-menu > li > a { color: #777; } .dropdown-menu > li > a > .glyphicon, .dropdown-menu > li > a > .fa, .dropdown-menu > li > a > .ion { margin-right: 10px; } .dropdown-menu > li > a:hover { background-color: #e1e3e9; color: #333; } .dropdown-menu > .divider { background-color: #eee; } .navbar-nav > .notifications-menu > .dropdown-menu, .navbar-nav > .messages-menu > .dropdown-menu, .navbar-nav > .tasks-menu > .dropdown-menu { width: 280px; padding: 0 0 0 0; margin: 0; top: 100%; } .navbar-nav > .notifications-menu > .dropdown-menu > li, .navbar-nav > .messages-menu > .dropdown-menu > li, .navbar-nav > .tasks-menu > .dropdown-menu > li { position: relative; } .navbar-nav > .notifications-menu > .dropdown-menu > li.header, .navbar-nav > .messages-menu > .dropdown-menu > li.header, .navbar-nav > .tasks-menu > .dropdown-menu > li.header { border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; background-color: #ffffff; padding: 7px 10px; border-bottom: 1px solid #f4f4f4; color: #444444; font-size: 14px; } .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; font-size: 12px; background-color: #fff; padding: 7px 10px; border-bottom: 1px solid #eeeeee; color: #444 !important; text-align: center; } @media (max-width: 991px) { .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { background: #fff !important; color: #444 !important; } } .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover, .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover, .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover { text-decoration: none; font-weight: normal; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu, .navbar-nav > .messages-menu > .dropdown-menu > li .menu, .navbar-nav > .tasks-menu > .dropdown-menu > li .menu { max-height: 200px; margin: 0; padding: 0; list-style: none; overflow-x: hidden; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { display: block; white-space: nowrap; /* Prevent text from breaking */ border-bottom: 1px solid #f4f4f4; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover, .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover, .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover { background: #f4f4f4; text-decoration: none; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a { color: #444444; overflow: hidden; text-overflow: ellipsis; padding: 10px; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon, .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa, .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion { width: 20px; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a { margin: 0; padding: 10px 10px; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img { margin: auto 10px auto auto; width: 40px; height: 40px; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 { padding: 0; margin: 0 0 0 45px; color: #444444; font-size: 15px; position: relative; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { color: #999999; font-size: 10px; position: absolute; top: 0; right: 0; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p { margin: 0 0 0 45px; font-size: 12px; color: #888888; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before, .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { content: " "; display: table; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { clear: both; } .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { padding: 10px; } .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 { font-size: 14px; padding: 0; margin: 0 0 10px 0; color: #666666; } .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress { padding: 0; margin: 0; } .navbar-nav > .user-menu > .dropdown-menu { border-top-right-radius: 0; border-top-left-radius: 0; padding: 1px 0 0 0; border-top-width: 0; width: 280px; } .navbar-nav > .user-menu > .dropdown-menu, .navbar-nav > .user-menu > .dropdown-menu > .user-body { border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .navbar-nav > .user-menu > .dropdown-menu > li.user-header { height: 175px; padding: 10px; text-align: center; } .navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { z-index: 5; height: 90px; width: 90px; border: 3px solid; border-color: transparent; border-color: rgba(255, 255, 255, 0.2); } .navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { z-index: 5; color: #fff; color: rgba(255, 255, 255, 0.8); font-size: 17px; margin-top: 10px; } .navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { display: block; font-size: 12px; } .navbar-nav > .user-menu > .dropdown-menu > .user-body { padding: 15px; border-bottom: 1px solid #f4f4f4; border-top: 1px solid #dddddd; } .navbar-nav > .user-menu > .dropdown-menu > .user-body:before, .navbar-nav > .user-menu > .dropdown-menu > .user-body:after { content: " "; display: table; } .navbar-nav > .user-menu > .dropdown-menu > .user-body:after { clear: both; } .navbar-nav > .user-menu > .dropdown-menu > .user-body a { color: #444 !important; } @media (max-width: 991px) { .navbar-nav > .user-menu > .dropdown-menu > .user-body a { background: #fff !important; color: #444 !important; } } .navbar-nav > .user-menu > .dropdown-menu > .user-footer { background-color: #f9f9f9; padding: 10px; } .navbar-nav > .user-menu > .dropdown-menu > .user-footer:before, .navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { content: " "; display: table; } .navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { clear: both; } .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default { color: #666666; } @media (max-width: 991px) { .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover { background-color: #f9f9f9; } } .navbar-nav > .user-menu .user-image { float: left; width: 25px; height: 25px; border-radius: 50%; margin-right: 10px; margin-top: -2px; } @media (max-width: 767px) { .navbar-nav > .user-menu .user-image { float: none; margin-right: 0; margin-top: -8px; line-height: 10px; } } /* Add fade animation to dropdown menus by appending the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ .open:not(.dropup) > .animated-dropdown-menu { backface-visibility: visible !important; -webkit-animation: flipInX 0.7s both; -o-animation: flipInX 0.7s both; animation: flipInX 0.7s both; } @keyframes flipInX { 0% { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transition-timing-function: ease-in; opacity: 0; } 40% { transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transition-timing-function: ease-in; } 60% { transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { transform: perspective(400px); } } @-webkit-keyframes flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { -webkit-transform: perspective(400px); } } /* Fix dropdown menu in navbars */ .navbar-custom-menu > .navbar-nav > li { position: relative; } .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { position: absolute; right: 0; left: auto; } @media (max-width: 991px) { .navbar-custom-menu > .navbar-nav { float: right; } .navbar-custom-menu > .navbar-nav > li { position: static; } .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { position: absolute; right: 5%; left: auto; border: 1px solid #ddd; background: #fff; } } /* * Component: Form * --------------- */ .form-control { border-radius: 0; box-shadow: none; border-color: #d2d6de; } .form-control:focus { border-color: #3c8dbc; box-shadow: none; } .form-control::-moz-placeholder, .form-control:-ms-input-placeholder, .form-control::-webkit-input-placeholder { color: #bbb; opacity: 1; } .form-control:not(select) { -webkit-appearance: none; -moz-appearance: none; appearance: none; } .form-group.has-success label { color: #00a65a; } .form-group.has-success .form-control, .form-group.has-success .input-group-addon { border-color: #00a65a; box-shadow: none; } .form-group.has-success .help-block { color: #00a65a; } .form-group.has-warning label { color: #f39c12; } .form-group.has-warning .form-control, .form-group.has-warning .input-group-addon { border-color: #f39c12; box-shadow: none; } .form-group.has-warning .help-block { color: #f39c12; } .form-group.has-error label { color: #dd4b39; } .form-group.has-error .form-control, .form-group.has-error .input-group-addon { border-color: #dd4b39; box-shadow: none; } .form-group.has-error .help-block { color: #dd4b39; } /* Input group */ .input-group .input-group-addon { border-radius: 0; border-color: #d2d6de; background-color: #fff; } /* button groups */ .btn-group-vertical .btn.btn-flat:first-of-type, .btn-group-vertical .btn.btn-flat:last-of-type { border-radius: 0; } .icheck > label { padding-left: 0; } /* support Font Awesome icons in form-control */ .form-control-feedback.fa { line-height: 34px; } .input-lg + .form-control-feedback.fa, .input-group-lg + .form-control-feedback.fa, .form-group-lg .form-control + .form-control-feedback.fa { line-height: 46px; } .input-sm + .form-control-feedback.fa, .input-group-sm + .form-control-feedback.fa, .form-group-sm .form-control + .form-control-feedback.fa { line-height: 30px; } /* * Component: Progress Bar * ----------------------- */ .progress, .progress > .progress-bar { -webkit-box-shadow: none; box-shadow: none; } .progress, .progress > .progress-bar, .progress .progress-bar, .progress > .progress-bar .progress-bar { border-radius: 1px; } /* size variation */ .progress.sm, .progress-sm { height: 10px; } .progress.sm, .progress-sm, .progress.sm .progress-bar, .progress-sm .progress-bar { border-radius: 1px; } .progress.xs, .progress-xs { height: 7px; } .progress.xs, .progress-xs, .progress.xs .progress-bar, .progress-xs .progress-bar { border-radius: 1px; } .progress.xxs, .progress-xxs { height: 3px; } .progress.xxs, .progress-xxs, .progress.xxs .progress-bar, .progress-xxs .progress-bar { border-radius: 1px; } /* Vertical bars */ .progress.vertical { position: relative; width: 30px; height: 200px; display: inline-block; margin-right: 10px; } .progress.vertical > .progress-bar { width: 100%; position: absolute; bottom: 0; } .progress.vertical.sm, .progress.vertical.progress-sm { width: 20px; } .progress.vertical.xs, .progress.vertical.progress-xs { width: 10px; } .progress.vertical.xxs, .progress.vertical.progress-xxs { width: 3px; } .progress-group .progress-text { font-weight: 600; } .progress-group .progress-number { float: right; } /* Remove margins from progress bars when put in a table */ .table tr > td .progress { margin: 0; } .progress-bar-light-blue, .progress-bar-primary { background-color: #3c8dbc; } .progress-striped .progress-bar-light-blue, .progress-striped .progress-bar-primary { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-green, .progress-bar-success { background-color: #00a65a; } .progress-striped .progress-bar-green, .progress-striped .progress-bar-success { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-aqua, .progress-bar-info { background-color: #00c0ef; } .progress-striped .progress-bar-aqua, .progress-striped .progress-bar-info { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-yellow, .progress-bar-warning { background-color: #f39c12; } .progress-striped .progress-bar-yellow, .progress-striped .progress-bar-warning { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-red, .progress-bar-danger { background-color: #dd4b39; } .progress-striped .progress-bar-red, .progress-striped .progress-bar-danger { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } /* * Component: Small Box * -------------------- */ .small-box { border-radius: 2px; position: relative; display: block; margin-bottom: 20px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } .small-box > .inner { padding: 10px; } .small-box > .small-box-footer { position: relative; text-align: center; padding: 3px 0; color: #fff; color: rgba(255, 255, 255, 0.8); display: block; z-index: 10; background: rgba(0, 0, 0, 0.1); text-decoration: none; } .small-box > .small-box-footer:hover { color: #fff; background: rgba(0, 0, 0, 0.15); } .small-box h3 { font-size: 38px; font-weight: bold; margin: 0 0 10px 0; white-space: nowrap; padding: 0; } .small-box p { font-size: 15px; } .small-box p > small { display: block; color: #f9f9f9; font-size: 13px; margin-top: 5px; } .small-box h3, .small-box p { z-index: 5; } .small-box .icon { -webkit-transition: all 0.3s linear; -o-transition: all 0.3s linear; transition: all 0.3s linear; position: absolute; top: -10px; right: 10px; z-index: 0; font-size: 90px; color: rgba(0, 0, 0, 0.15); } .small-box:hover { text-decoration: none; color: #f9f9f9; } .small-box:hover .icon { font-size: 95px; } @media (max-width: 767px) { .small-box { text-align: center; } .small-box .icon { display: none; } .small-box p { font-size: 12px; } } /* * Component: Box * -------------- */ .box { position: relative; border-radius: 3px; background: #ffffff; border-top: 3px solid #d2d6de; margin-bottom: 20px; width: 100%; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } .box.box-primary { border-top-color: #3c8dbc; } .box.box-info { border-top-color: #00c0ef; } .box.box-danger { border-top-color: #dd4b39; } .box.box-warning { border-top-color: #f39c12; } .box.box-success { border-top-color: #00a65a; } .box.box-default { border-top-color: #d2d6de; } .box.collapsed-box .box-body, .box.collapsed-box .box-footer { display: none; } .box .nav-stacked > li { border-bottom: 1px solid #f4f4f4; margin: 0; } .box .nav-stacked > li:last-of-type { border-bottom: none; } .box.height-control .box-body { max-height: 300px; overflow: auto; } .box .border-right { border-right: 1px solid #f4f4f4; } .box .border-left { border-left: 1px solid #f4f4f4; } .box.box-solid { border-top: 0; } .box.box-solid > .box-header .btn.btn-default { background: transparent; } .box.box-solid > .box-header .btn:hover, .box.box-solid > .box-header a:hover { background: rgba(0, 0, 0, 0.1); } .box.box-solid.box-default { border: 1px solid #d2d6de; } .box.box-solid.box-default > .box-header { color: #444; background: #d2d6de; background-color: #d2d6de; } .box.box-solid.box-default > .box-header a, .box.box-solid.box-default > .box-header .btn { color: #444; } .box.box-solid.box-primary { border: 1px solid #3c8dbc; } .box.box-solid.box-primary > .box-header { color: #fff; background: #3c8dbc; background-color: #3c8dbc; } .box.box-solid.box-primary > .box-header a, .box.box-solid.box-primary > .box-header .btn { color: #fff; } .box.box-solid.box-info { border: 1px solid #00c0ef; } .box.box-solid.box-info > .box-header { color: #fff; background: #00c0ef; background-color: #00c0ef; } .box.box-solid.box-info > .box-header a, .box.box-solid.box-info > .box-header .btn { color: #fff; } .box.box-solid.box-danger { border: 1px solid #dd4b39; } .box.box-solid.box-danger > .box-header { color: #fff; background: #dd4b39; background-color: #dd4b39; } .box.box-solid.box-danger > .box-header a, .box.box-solid.box-danger > .box-header .btn { color: #fff; } .box.box-solid.box-warning { border: 1px solid #f39c12; } .box.box-solid.box-warning > .box-header { color: #fff; background: #f39c12; background-color: #f39c12; } .box.box-solid.box-warning > .box-header a, .box.box-solid.box-warning > .box-header .btn { color: #fff; } .box.box-solid.box-success { border: 1px solid #00a65a; } .box.box-solid.box-success > .box-header { color: #fff; background: #00a65a; background-color: #00a65a; } .box.box-solid.box-success > .box-header a, .box.box-solid.box-success > .box-header .btn { color: #fff; } .box.box-solid > .box-header > .box-tools .btn { border: 0; box-shadow: none; } .box.box-solid[class*='bg'] > .box-header { color: #fff; } .box .box-group > .box { margin-bottom: 5px; } .box .knob-label { text-align: center; color: #333; font-weight: 100; font-size: 12px; margin-bottom: 0.3em; } .box > .overlay, .overlay-wrapper > .overlay, .box > .loading-img, .overlay-wrapper > .loading-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .box .overlay, .overlay-wrapper .overlay { z-index: 50; background: rgba(255, 255, 255, 0.7); border-radius: 3px; } .box .overlay > .fa, .overlay-wrapper .overlay > .fa { position: absolute; top: 50%; left: 50%; margin-left: -15px; margin-top: -15px; color: #000; font-size: 30px; } .box .overlay.dark, .overlay-wrapper .overlay.dark { background: rgba(0, 0, 0, 0.5); } .box-header:before, .box-body:before, .box-footer:before, .box-header:after, .box-body:after, .box-footer:after { content: " "; display: table; } .box-header:after, .box-body:after, .box-footer:after { clear: both; } .box-header { color: #444; display: block; padding: 10px; position: relative; } .box-header.with-border { border-bottom: 1px solid #f4f4f4; } .collapsed-box .box-header.with-border { border-bottom: none; } .box-header > .fa, .box-header > .glyphicon, .box-header > .ion, .box-header .box-title { display: inline-block; font-size: 18px; margin: 0; line-height: 1; } .box-header > .fa, .box-header > .glyphicon, .box-header > .ion { margin-right: 5px; } .box-header > .box-tools { float: right; margin-top: -5px; margin-bottom: -5px; } .box-header > .box-tools [data-toggle="tooltip"] { position: relative; } .box-header > .box-tools.pull-right .dropdown-menu { right: 0; left: auto; } .box-header > .box-tools .dropdown-menu > li > a { color: #444 !important; } .btn-box-tool { padding: 5px; font-size: 12px; background: transparent; color: #97a0b3; } .open .btn-box-tool, .btn-box-tool:hover { color: #606c84; } .btn-box-tool.btn:active { box-shadow: none; } .box-body { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 10px; } .no-header .box-body { border-top-right-radius: 3px; border-top-left-radius: 3px; } .box-body > .table { margin-bottom: 0; } .box-body .fc { margin-top: 5px; } .box-body .full-width-chart { margin: -19px; } .box-body.no-padding .full-width-chart { margin: -9px; } .box-body .box-pane { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 3px; } .box-body .box-pane-right { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 0; } .box-footer { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; border-top: 1px solid #f4f4f4; padding: 10px; background-color: #fff; } .chart-legend { margin: 10px 0; } @media (max-width: 991px) { .chart-legend > li { float: left; margin-right: 10px; } } .box-comments { background: #f7f7f7; } .box-comments .box-comment { padding: 8px 0; border-bottom: 1px solid #eee; } .box-comments .box-comment:before, .box-comments .box-comment:after { content: " "; display: table; } .box-comments .box-comment:after { clear: both; } .box-comments .box-comment:last-of-type { border-bottom: 0; } .box-comments .box-comment:first-of-type { padding-top: 0; } .box-comments .box-comment img { float: left; } .box-comments .comment-text { margin-left: 40px; color: #555; } .box-comments .username { color: #444; display: block; font-weight: 600; } .box-comments .text-muted { font-weight: 400; font-size: 12px; } /* Widget: TODO LIST */ .todo-list { margin: 0; padding: 0; list-style: none; overflow: auto; } .todo-list > li { border-radius: 2px; padding: 10px; background: #f4f4f4; margin-bottom: 2px; border-left: 2px solid #e6e7e8; color: #444; } .todo-list > li:last-of-type { margin-bottom: 0; } .todo-list > li > input[type='checkbox'] { margin: 0 10px 0 5px; } .todo-list > li .text { display: inline-block; margin-left: 5px; font-weight: 600; } .todo-list > li .label { margin-left: 10px; font-size: 9px; } .todo-list > li .tools { display: none; float: right; color: #dd4b39; } .todo-list > li .tools > .fa, .todo-list > li .tools > .glyphicon, .todo-list > li .tools > .ion { margin-right: 5px; cursor: pointer; } .todo-list > li:hover .tools { display: inline-block; } .todo-list > li.done { color: #999; } .todo-list > li.done .text { text-decoration: line-through; font-weight: 500; } .todo-list > li.done .label { background: #d2d6de !important; } .todo-list .danger { border-left-color: #dd4b39; } .todo-list .warning { border-left-color: #f39c12; } .todo-list .info { border-left-color: #00c0ef; } .todo-list .success { border-left-color: #00a65a; } .todo-list .primary { border-left-color: #3c8dbc; } .todo-list .handle { display: inline-block; cursor: move; margin: 0 5px; } /* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ .chat { padding: 5px 20px 5px 10px; } .chat .item { margin-bottom: 10px; } .chat .item:before, .chat .item:after { content: " "; display: table; } .chat .item:after { clear: both; } .chat .item > img { width: 40px; height: 40px; border: 2px solid transparent; border-radius: 50%; } .chat .item > .online { border: 2px solid #00a65a; } .chat .item > .offline { border: 2px solid #dd4b39; } .chat .item > .message { margin-left: 55px; margin-top: -40px; } .chat .item > .message > .name { display: block; font-weight: 600; } .chat .item > .attachment { border-radius: 3px; background: #f4f4f4; margin-left: 65px; margin-right: 15px; padding: 10px; } .chat .item > .attachment > h4 { margin: 0 0 5px 0; font-weight: 600; font-size: 14px; } .chat .item > .attachment > p, .chat .item > .attachment > .filename { font-weight: 600; font-size: 13px; font-style: italic; margin: 0; } .chat .item > .attachment:before, .chat .item > .attachment:after { content: " "; display: table; } .chat .item > .attachment:after { clear: both; } .box-input { max-width: 200px; } .modal .panel-body { color: #444; } /* * Component: Info Box * ------------------- */ .info-box { display: block; min-height: 90px; background: #fff; width: 100%; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 2px; margin-bottom: 15px; } .info-box small { font-size: 14px; } .info-box .progress { background: rgba(0, 0, 0, 0.2); margin: 5px -10px 5px -10px; height: 2px; } .info-box .progress, .info-box .progress .progress-bar { border-radius: 0; } .info-box .progress .progress-bar { background: #fff; } .info-box-icon { border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; display: block; float: left; height: 90px; width: 90px; text-align: center; font-size: 45px; line-height: 90px; background: rgba(0, 0, 0, 0.2); } .info-box-icon > img { max-width: 100%; } .info-box-content { padding: 5px 10px; margin-left: 90px; } .info-box-number { display: block; font-weight: bold; font-size: 18px; } .progress-description, .info-box-text { display: block; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .info-box-text { text-transform: uppercase; } .info-box-more { display: block; } .progress-description { margin: 0; } /* * Component: Timeline * ------------------- */ .timeline { position: relative; margin: 0 0 30px 0; padding: 0; list-style: none; } .timeline:before { content: ''; position: absolute; top: 0; bottom: 0; width: 4px; background: #ddd; left: 31px; margin: 0; border-radius: 2px; } .timeline > li { position: relative; margin-right: 10px; margin-bottom: 15px; } .timeline > li:before, .timeline > li:after { content: " "; display: table; } .timeline > li:after { clear: both; } .timeline > li > .timeline-item { -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; margin-top: 0; background: #fff; color: #444; margin-left: 60px; margin-right: 15px; padding: 0; position: relative; } .timeline > li > .timeline-item > .time { color: #999; float: right; padding: 10px; font-size: 12px; } .timeline > li > .timeline-item > .timeline-header { margin: 0; color: #555; border-bottom: 1px solid #f4f4f4; padding: 10px; font-size: 16px; line-height: 1.1; } .timeline > li > .timeline-item > .timeline-header > a { font-weight: 600; } .timeline > li > .timeline-item > .timeline-body, .timeline > li > .timeline-item > .timeline-footer { padding: 10px; } .timeline > li > .fa, .timeline > li > .glyphicon, .timeline > li > .ion { width: 30px; height: 30px; font-size: 15px; line-height: 30px; position: absolute; color: #666; background: #d2d6de; border-radius: 50%; text-align: center; left: 18px; top: 0; } .timeline > .time-label > span { font-weight: 600; padding: 5px; display: inline-block; background-color: #fff; border-radius: 4px; } .timeline-inverse > li > .timeline-item { background: #f0f0f0; border: 1px solid #ddd; -webkit-box-shadow: none; box-shadow: none; } .timeline-inverse > li > .timeline-item > .timeline-header { border-bottom-color: #ddd; } /* * Component: Button * ----------------- */ .btn { border-radius: 3px; -webkit-box-shadow: none; box-shadow: none; border: 1px solid transparent; } .btn.uppercase { text-transform: uppercase; } .btn.btn-flat { border-radius: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; border-width: 1px; } .btn:active { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn:focus { outline: none; } .btn.btn-file { position: relative; overflow: hidden; } .btn.btn-file > input[type='file'] { position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; opacity: 0; filter: alpha(opacity=0); outline: none; background: white; cursor: inherit; display: block; } .btn-default { background-color: #f4f4f4; color: #444; border-color: #ddd; } .btn-default:hover, .btn-default:active, .btn-default.hover { background-color: #e7e7e7; } .btn-primary { background-color: #3c8dbc; border-color: #367fa9; } .btn-primary:hover, .btn-primary:active, .btn-primary.hover { background-color: #367fa9; } .btn-success { background-color: #00a65a; border-color: #008d4c; } .btn-success:hover, .btn-success:active, .btn-success.hover { background-color: #008d4c; } .btn-info { background-color: #00c0ef; border-color: #00acd6; } .btn-info:hover, .btn-info:active, .btn-info.hover { background-color: #00acd6; } .btn-danger { background-color: #dd4b39; border-color: #d73925; } .btn-danger:hover, .btn-danger:active, .btn-danger.hover { background-color: #d73925; } .btn-warning { background-color: #f39c12; border-color: #e08e0b; } .btn-warning:hover, .btn-warning:active, .btn-warning.hover { background-color: #e08e0b; } .btn-outline { border: 1px solid #fff; background: transparent; color: #fff; } .btn-outline:hover, .btn-outline:focus, .btn-outline:active { color: rgba(255, 255, 255, 0.7); border-color: rgba(255, 255, 255, 0.7); } .btn-link { -webkit-box-shadow: none; box-shadow: none; } .btn[class*='bg-']:hover { -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); } .btn-app { border-radius: 3px; position: relative; padding: 15px 5px; margin: 0 0 10px 10px; min-width: 80px; height: 60px; text-align: center; color: #666; border: 1px solid #ddd; background-color: #f4f4f4; font-size: 12px; } .btn-app > .fa, .btn-app > .glyphicon, .btn-app > .ion { font-size: 20px; display: block; } .btn-app:hover { background: #f4f4f4; color: #444; border-color: #aaa; } .btn-app:active, .btn-app:focus { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn-app > .badge { position: absolute; top: -3px; right: -10px; font-size: 10px; font-weight: 400; } /* * Component: Callout * ------------------ */ .callout { border-radius: 3px; margin: 0 0 20px 0; padding: 15px 30px 15px 15px; border-left: 5px solid #eee; } .callout a { color: #fff; text-decoration: underline; } .callout a:hover { color: #eee; } .callout h4 { margin-top: 0; font-weight: 600; } .callout p:last-child { margin-bottom: 0; } .callout code, .callout .highlight { background-color: #fff; } .callout.callout-danger { border-color: #c23321; } .callout.callout-warning { border-color: #c87f0a; } .callout.callout-info { border-color: #0097bc; } .callout.callout-success { border-color: #00733e; } /* * Component: alert * ---------------- */ .alert { border-radius: 3px; } .alert h4 { font-weight: 600; } .alert .icon { margin-right: 10px; } .alert .close { color: #000; opacity: 0.2; filter: alpha(opacity=20); } .alert .close:hover { opacity: 0.5; filter: alpha(opacity=50); } .alert a { color: #fff; text-decoration: underline; } .alert-success { border-color: #008d4c; } .alert-danger, .alert-error { border-color: #d73925; } .alert-warning { border-color: #e08e0b; } .alert-info { border-color: #00acd6; } /* * Component: Nav * -------------- */ .nav > li > a:hover, .nav > li > a:active, .nav > li > a:focus { color: #444; background: #f7f7f7; } /* NAV PILLS */ .nav-pills > li > a { border-radius: 0; border-top: 3px solid transparent; color: #444; } .nav-pills > li > a > .fa, .nav-pills > li > a > .glyphicon, .nav-pills > li > a > .ion { margin-right: 5px; } .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { border-top-color: #3c8dbc; } .nav-pills > li.active > a { font-weight: 600; } /* NAV STACKED */ .nav-stacked > li > a { border-radius: 0; border-top: 0; border-left: 3px solid transparent; color: #444; } .nav-stacked > li.active > a, .nav-stacked > li.active > a:hover { background: transparent; color: #444; border-top: 0; border-left-color: #3c8dbc; } .nav-stacked > li.header { border-bottom: 1px solid #ddd; color: #777; margin-bottom: 10px; padding: 5px 10px; text-transform: uppercase; } /* NAV TABS */ .nav-tabs-custom { margin-bottom: 20px; background: #fff; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; } .nav-tabs-custom > .nav-tabs { margin: 0; border-bottom-color: #f4f4f4; border-top-right-radius: 3px; border-top-left-radius: 3px; } .nav-tabs-custom > .nav-tabs > li { border-top: 3px solid transparent; margin-bottom: -2px; margin-right: 5px; } .nav-tabs-custom > .nav-tabs > li.disabled > a { color: #777; } .nav-tabs-custom > .nav-tabs > li > a { color: #444; border-radius: 0; } .nav-tabs-custom > .nav-tabs > li > a.text-muted { color: #999; } .nav-tabs-custom > .nav-tabs > li > a, .nav-tabs-custom > .nav-tabs > li > a:hover { background: transparent; margin: 0; } .nav-tabs-custom > .nav-tabs > li > a:hover { color: #999; } .nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover, .nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, .nav-tabs-custom > .nav-tabs > li:not(.active) > a:active { border-color: transparent; } .nav-tabs-custom > .nav-tabs > li.active { border-top-color: #3c8dbc; } .nav-tabs-custom > .nav-tabs > li.active > a, .nav-tabs-custom > .nav-tabs > li.active:hover > a { background-color: #fff; color: #444; } .nav-tabs-custom > .nav-tabs > li.active > a { border-top-color: transparent; border-left-color: #f4f4f4; border-right-color: #f4f4f4; } .nav-tabs-custom > .nav-tabs > li:first-of-type { margin-left: 0; } .nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { border-left-color: transparent; } .nav-tabs-custom > .nav-tabs.pull-right { float: none !important; } .nav-tabs-custom > .nav-tabs.pull-right > li { float: right; } .nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { margin-right: 0; } .nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a { border-left-width: 1px; } .nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { border-left-color: #f4f4f4; border-right-color: transparent; } .nav-tabs-custom > .nav-tabs > li.header { line-height: 35px; padding: 0 10px; font-size: 20px; color: #444; } .nav-tabs-custom > .nav-tabs > li.header > .fa, .nav-tabs-custom > .nav-tabs > li.header > .glyphicon, .nav-tabs-custom > .nav-tabs > li.header > .ion { margin-right: 5px; } .nav-tabs-custom > .tab-content { background: #fff; padding: 10px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .nav-tabs-custom .dropdown.open > a:active, .nav-tabs-custom .dropdown.open > a:focus { background: transparent; color: #999; } .nav-tabs-custom.tab-primary > .nav-tabs > li.active { border-top-color: #3c8dbc; } .nav-tabs-custom.tab-info > .nav-tabs > li.active { border-top-color: #00c0ef; } .nav-tabs-custom.tab-danger > .nav-tabs > li.active { border-top-color: #dd4b39; } .nav-tabs-custom.tab-warning > .nav-tabs > li.active { border-top-color: #f39c12; } .nav-tabs-custom.tab-success > .nav-tabs > li.active { border-top-color: #00a65a; } .nav-tabs-custom.tab-default > .nav-tabs > li.active { border-top-color: #d2d6de; } /* PAGINATION */ .pagination > li > a { background: #fafafa; color: #666; } .pagination.pagination-flat > li > a { border-radius: 0 !important; } /* * Component: Products List * ------------------------ */ .products-list { list-style: none; margin: 0; padding: 0; } .products-list > .item { border-radius: 3px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); padding: 10px 0; background: #fff; } .products-list > .item:before, .products-list > .item:after { content: " "; display: table; } .products-list > .item:after { clear: both; } .products-list .product-img { float: left; } .products-list .product-img img { width: 50px; height: 50px; } .products-list .product-info { margin-left: 60px; } .products-list .product-title { font-weight: 600; } .products-list .product-description { display: block; color: #999; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .product-list-in-box > .item { -webkit-box-shadow: none; box-shadow: none; border-radius: 0; border-bottom: 1px solid #f4f4f4; } .product-list-in-box > .item:last-of-type { border-bottom-width: 0; } /* * Component: Table * ---------------- */ .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { border-top: 1px solid #f4f4f4; } .table > thead > tr > th { border-bottom: 2px solid #f4f4f4; } .table tr td .progress { margin-top: 5px; } .table-bordered { border: 1px solid #f4f4f4; } .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { border: 1px solid #f4f4f4; } .table-bordered > thead > tr > th, .table-bordered > thead > tr > td { border-bottom-width: 2px; } .table.no-border, .table.no-border td, .table.no-border th { border: 0; } /* .text-center in tables */ table.text-center, table.text-center td, table.text-center th { text-align: center; } .table.align th { text-align: left; } .table.align td { text-align: right; } /* * Component: Label * ---------------- */ .label-default { background-color: #d2d6de; color: #444; } /* * Component: Direct Chat * ---------------------- */ .direct-chat .box-body { border-bottom-right-radius: 0; border-bottom-left-radius: 0; position: relative; overflow-x: hidden; padding: 0; } .direct-chat.chat-pane-open .direct-chat-contacts { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } .direct-chat-messages { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); padding: 10px; height: 250px; overflow: auto; } .direct-chat-msg, .direct-chat-text { display: block; } .direct-chat-msg { margin-bottom: 10px; } .direct-chat-msg:before, .direct-chat-msg:after { content: " "; display: table; } .direct-chat-msg:after { clear: both; } .direct-chat-messages, .direct-chat-contacts { -webkit-transition: -webkit-transform 0.5s ease-in-out; -moz-transition: -moz-transform 0.5s ease-in-out; -o-transition: -o-transform 0.5s ease-in-out; transition: transform 0.5s ease-in-out; } .direct-chat-text { border-radius: 5px; position: relative; padding: 5px 10px; background: #d2d6de; border: 1px solid #d2d6de; margin: 5px 0 0 50px; color: #444; } .direct-chat-text:after, .direct-chat-text:before { position: absolute; right: 100%; top: 15px; border: solid transparent; border-right-color: #d2d6de; content: ' '; height: 0; width: 0; pointer-events: none; } .direct-chat-text:after { border-width: 5px; margin-top: -5px; } .direct-chat-text:before { border-width: 6px; margin-top: -6px; } .right .direct-chat-text { margin-right: 50px; margin-left: 0; } .right .direct-chat-text:after, .right .direct-chat-text:before { right: auto; left: 100%; border-right-color: transparent; border-left-color: #d2d6de; } .direct-chat-img { border-radius: 50%; float: left; width: 40px; height: 40px; } .right .direct-chat-img { float: right; } .direct-chat-info { display: block; margin-bottom: 2px; font-size: 12px; } .direct-chat-name { font-weight: 600; } .direct-chat-timestamp { color: #999; } .direct-chat-contacts-open .direct-chat-contacts { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } .direct-chat-contacts { -webkit-transform: translate(101%, 0); -ms-transform: translate(101%, 0); -o-transform: translate(101%, 0); transform: translate(101%, 0); position: absolute; top: 0; bottom: 0; height: 250px; width: 100%; background: #222d32; color: #fff; overflow: auto; } .contacts-list > li { border-bottom: 1px solid rgba(0, 0, 0, 0.2); padding: 10px; margin: 0; } .contacts-list > li:before, .contacts-list > li:after { content: " "; display: table; } .contacts-list > li:after { clear: both; } .contacts-list > li:last-of-type { border-bottom: none; } .contacts-list-img { border-radius: 50%; width: 40px; float: left; } .contacts-list-info { margin-left: 45px; color: #fff; } .contacts-list-name, .contacts-list-status { display: block; } .contacts-list-name { font-weight: 600; } .contacts-list-status { font-size: 12px; } .contacts-list-date { color: #aaa; font-weight: normal; } .contacts-list-msg { color: #999; } .direct-chat-danger .right > .direct-chat-text { background: #dd4b39; border-color: #dd4b39; color: #fff; } .direct-chat-danger .right > .direct-chat-text:after, .direct-chat-danger .right > .direct-chat-text:before { border-left-color: #dd4b39; } .direct-chat-primary .right > .direct-chat-text { background: #3c8dbc; border-color: #3c8dbc; color: #fff; } .direct-chat-primary .right > .direct-chat-text:after, .direct-chat-primary .right > .direct-chat-text:before { border-left-color: #3c8dbc; } .direct-chat-warning .right > .direct-chat-text { background: #f39c12; border-color: #f39c12; color: #fff; } .direct-chat-warning .right > .direct-chat-text:after, .direct-chat-warning .right > .direct-chat-text:before { border-left-color: #f39c12; } .direct-chat-info .right > .direct-chat-text { background: #00c0ef; border-color: #00c0ef; color: #fff; } .direct-chat-info .right > .direct-chat-text:after, .direct-chat-info .right > .direct-chat-text:before { border-left-color: #00c0ef; } .direct-chat-success .right > .direct-chat-text { background: #00a65a; border-color: #00a65a; color: #fff; } .direct-chat-success .right > .direct-chat-text:after, .direct-chat-success .right > .direct-chat-text:before { border-left-color: #00a65a; } /* * Component: Users List * --------------------- */ .users-list > li { width: 25%; float: left; padding: 10px; text-align: center; } .users-list > li img { border-radius: 50%; max-width: 100%; height: auto; } .users-list > li > a:hover, .users-list > li > a:hover .users-list-name { color: #999; } .users-list-name, .users-list-date { display: block; } .users-list-name { font-weight: 600; color: #444; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .users-list-date { color: #999; font-size: 12px; } /* * Component: Carousel * ------------------- */ .carousel-control.left, .carousel-control.right { background-image: none; } .carousel-control > .fa { font-size: 40px; position: absolute; top: 50%; z-index: 5; display: inline-block; margin-top: -20px; } /* * Component: modal * ---------------- */ .modal { background: rgba(0, 0, 0, 0.3); } .modal-content { border-radius: 0; -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); border: 0; } @media (min-width: 768px) { .modal-content { -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); } } .modal-header { border-bottom-color: #f4f4f4; } .modal-footer { border-top-color: #f4f4f4; } .modal-primary .modal-header, .modal-primary .modal-footer { border-color: #307095; } .modal-warning .modal-header, .modal-warning .modal-footer { border-color: #c87f0a; } .modal-info .modal-header, .modal-info .modal-footer { border-color: #0097bc; } .modal-success .modal-header, .modal-success .modal-footer { border-color: #00733e; } .modal-danger .modal-header, .modal-danger .modal-footer { border-color: #c23321; } /* * Component: Social Widgets * ------------------------- */ .box-widget { border: none; position: relative; } .widget-user .widget-user-header { padding: 20px; height: 120px; border-top-right-radius: 3px; border-top-left-radius: 3px; } .widget-user .widget-user-username { margin-top: 0; margin-bottom: 5px; font-size: 25px; font-weight: 300; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); } .widget-user .widget-user-desc { margin-top: 0; } .widget-user .widget-user-image { position: absolute; top: 65px; left: 50%; margin-left: -45px; } .widget-user .widget-user-image > img { width: 90px; height: auto; border: 3px solid #fff; } .widget-user .box-footer { padding-top: 30px; } .widget-user-2 .widget-user-header { padding: 20px; border-top-right-radius: 3px; border-top-left-radius: 3px; } .widget-user-2 .widget-user-username { margin-top: 5px; margin-bottom: 5px; font-size: 25px; font-weight: 300; } .widget-user-2 .widget-user-desc { margin-top: 0; } .widget-user-2 .widget-user-username, .widget-user-2 .widget-user-desc { margin-left: 75px; } .widget-user-2 .widget-user-image > img { width: 65px; height: auto; float: left; } .treeview-menu { display: none; list-style: none; padding: 0; margin: 0; padding-left: 5px; } .treeview-menu .treeview-menu { padding-left: 20px; } .treeview-menu > li { margin: 0; } .treeview-menu > li > a { padding: 5px 5px 5px 15px; display: block; font-size: 14px; } .treeview-menu > li > a > .fa, .treeview-menu > li > a > .glyphicon, .treeview-menu > li > a > .ion { width: 20px; } .treeview-menu > li > a > .pull-right-container > .fa-angle-left, .treeview-menu > li > a > .pull-right-container > .fa-angle-down, .treeview-menu > li > a > .fa-angle-left, .treeview-menu > li > a > .fa-angle-down { width: auto; } .treeview > ul.treeview-menu { overflow: hidden; height: auto; padding-top: 0px !important; padding-bottom: 0px !important; } .treeview.menu-open > ul.treeview-menu { overflow: visible; height: auto; } /* * Page: Mailbox * ------------- */ .mailbox-messages > .table { margin: 0; } .mailbox-controls { padding: 5px; } .mailbox-controls.with-border { border-bottom: 1px solid #f4f4f4; } .mailbox-read-info { border-bottom: 1px solid #f4f4f4; padding: 10px; } .mailbox-read-info h3 { font-size: 20px; margin: 0; } .mailbox-read-info h5 { margin: 0; padding: 5px 0 0 0; } .mailbox-read-time { color: #999; font-size: 13px; } .mailbox-read-message { padding: 10px; } .mailbox-attachments li { float: left; width: 200px; border: 1px solid #eee; margin-bottom: 10px; margin-right: 10px; } .mailbox-attachment-name { font-weight: bold; color: #666; } .mailbox-attachment-icon, .mailbox-attachment-info, .mailbox-attachment-size { display: block; } .mailbox-attachment-info { padding: 10px; background: #f4f4f4; } .mailbox-attachment-size { color: #999; font-size: 12px; } .mailbox-attachment-icon { text-align: center; font-size: 65px; color: #666; padding: 20px 10px; } .mailbox-attachment-icon.has-img { padding: 0; } .mailbox-attachment-icon.has-img > img { max-width: 100%; height: auto; } /* * Page: Lock Screen * ----------------- */ /* ADD THIS CLASS TO THE <BODY> TAG */ .lockscreen { background: #d2d6de; } .lockscreen-logo { font-size: 35px; text-align: center; margin-bottom: 25px; font-weight: 300; } .lockscreen-logo a { color: #444; } .lockscreen-wrapper { max-width: 400px; margin: 0 auto; margin-top: 10%; } /* User name [optional] */ .lockscreen .lockscreen-name { text-align: center; font-weight: 600; } /* Will contain the image and the sign in form */ .lockscreen-item { border-radius: 4px; padding: 0; background: #fff; position: relative; margin: 10px auto 30px auto; width: 290px; } /* User image */ .lockscreen-image { border-radius: 50%; position: absolute; left: -10px; top: -25px; background: #fff; padding: 5px; z-index: 10; } .lockscreen-image > img { border-radius: 50%; width: 70px; height: 70px; } /* Contains the password input and the login button */ .lockscreen-credentials { margin-left: 70px; } .lockscreen-credentials .form-control { border: 0; } .lockscreen-credentials .btn { background-color: #fff; border: 0; padding: 0 10px; } .lockscreen-footer { margin-top: 10px; } /* * Page: Login & Register * ---------------------- */ .login-logo, .register-logo { font-size: 35px; text-align: center; margin-bottom: 25px; font-weight: 300; } .login-logo a, .register-logo a { color: #444; } .login-page, .register-page { height: auto; background: #d2d6de; } .login-box, .register-box { width: 360px; margin: 7% auto; } @media (max-width: 768px) { .login-box, .register-box { width: 90%; margin-top: 20px; } } .login-box-body, .register-box-body { background: #fff; padding: 20px; border-top: 0; color: #666; } .login-box-body .form-control-feedback, .register-box-body .form-control-feedback { color: #777; } .login-box-msg, .register-box-msg { margin: 0; text-align: center; padding: 0 20px 20px 20px; } .social-auth-links { margin: 10px 0; } /* * Page: 400 and 500 error pages * ------------------------------ */ .error-page { width: 600px; margin: 20px auto 0 auto; } @media (max-width: 991px) { .error-page { width: 100%; } } .error-page > .headline { float: left; font-size: 100px; font-weight: 300; } @media (max-width: 991px) { .error-page > .headline { float: none; text-align: center; } } .error-page > .error-content { margin-left: 190px; display: block; } @media (max-width: 991px) { .error-page > .error-content { margin-left: 0; } } .error-page > .error-content > h3 { font-weight: 300; font-size: 25px; } @media (max-width: 991px) { .error-page > .error-content > h3 { text-align: center; } } /* * Page: Invoice * ------------- */ .invoice { position: relative; background: #fff; border: 1px solid #f4f4f4; padding: 20px; margin: 10px 25px; } .invoice-title { margin-top: 0; } /* * Page: Profile * ------------- */ .profile-user-img { margin: 0 auto; width: 100px; padding: 3px; border: 3px solid #d2d6de; } .profile-username { font-size: 21px; margin-top: 5px; } .post { border-bottom: 1px solid #d2d6de; margin-bottom: 15px; padding-bottom: 15px; color: #666; } .post:last-of-type { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; } .post .user-block { margin-bottom: 15px; } /* * Social Buttons for Bootstrap * * Copyright 2013-2015 Panayiotis Lipiridis * Licensed under the MIT License * * https://github.com/lipis/bootstrap-social */ .btn-social { position: relative; padding-left: 44px; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .btn-social > :first-child { position: absolute; left: 0; top: 0; bottom: 0; width: 32px; line-height: 34px; font-size: 1.6em; text-align: center; border-right: 1px solid rgba(0, 0, 0, 0.2); } .btn-social.btn-lg { padding-left: 61px; } .btn-social.btn-lg > :first-child { line-height: 45px; width: 45px; font-size: 1.8em; } .btn-social.btn-sm { padding-left: 38px; } .btn-social.btn-sm > :first-child { line-height: 28px; width: 28px; font-size: 1.4em; } .btn-social.btn-xs { padding-left: 30px; } .btn-social.btn-xs > :first-child { line-height: 20px; width: 20px; font-size: 1.2em; } .btn-social-icon { position: relative; padding-left: 44px; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; height: 34px; width: 34px; padding: 0; } .btn-social-icon > :first-child { position: absolute; left: 0; top: 0; bottom: 0; width: 32px; line-height: 34px; font-size: 1.6em; text-align: center; border-right: 1px solid rgba(0, 0, 0, 0.2); } .btn-social-icon.btn-lg { padding-left: 61px; } .btn-social-icon.btn-lg > :first-child { line-height: 45px; width: 45px; font-size: 1.8em; } .btn-social-icon.btn-sm { padding-left: 38px; } .btn-social-icon.btn-sm > :first-child { line-height: 28px; width: 28px; font-size: 1.4em; } .btn-social-icon.btn-xs { padding-left: 30px; } .btn-social-icon.btn-xs > :first-child { line-height: 20px; width: 20px; font-size: 1.2em; } .btn-social-icon > :first-child { border: none; text-align: center; width: 100%; } .btn-social-icon.btn-lg { height: 45px; width: 45px; padding-left: 0; padding-right: 0; } .btn-social-icon.btn-sm { height: 30px; width: 30px; padding-left: 0; padding-right: 0; } .btn-social-icon.btn-xs { height: 22px; width: 22px; padding-left: 0; padding-right: 0; } .btn-adn { color: #fff; background-color: #d87a68; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:focus, .btn-adn.focus { color: #fff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:hover { color: #fff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:active, .btn-adn.active, .open > .dropdown-toggle.btn-adn { color: #fff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:active:hover, .btn-adn.active:hover, .open > .dropdown-toggle.btn-adn:hover, .btn-adn:active:focus, .btn-adn.active:focus, .open > .dropdown-toggle.btn-adn:focus, .btn-adn:active.focus, .btn-adn.active.focus, .open > .dropdown-toggle.btn-adn.focus { color: #fff; background-color: #b94630; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:active, .btn-adn.active, .open > .dropdown-toggle.btn-adn { background-image: none; } .btn-adn.disabled:hover, .btn-adn[disabled]:hover, fieldset[disabled] .btn-adn:hover, .btn-adn.disabled:focus, .btn-adn[disabled]:focus, fieldset[disabled] .btn-adn:focus, .btn-adn.disabled.focus, .btn-adn[disabled].focus, fieldset[disabled] .btn-adn.focus { background-color: #d87a68; border-color: rgba(0, 0, 0, 0.2); } .btn-adn .badge { color: #d87a68; background-color: #fff; } .btn-bitbucket { color: #fff; background-color: #205081; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:focus, .btn-bitbucket.focus { color: #fff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:hover { color: #fff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:active, .btn-bitbucket.active, .open > .dropdown-toggle.btn-bitbucket { color: #fff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:active:hover, .btn-bitbucket.active:hover, .open > .dropdown-toggle.btn-bitbucket:hover, .btn-bitbucket:active:focus, .btn-bitbucket.active:focus, .open > .dropdown-toggle.btn-bitbucket:focus, .btn-bitbucket:active.focus, .btn-bitbucket.active.focus, .open > .dropdown-toggle.btn-bitbucket.focus { color: #fff; background-color: #0f253c; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:active, .btn-bitbucket.active, .open > .dropdown-toggle.btn-bitbucket { background-image: none; } .btn-bitbucket.disabled:hover, .btn-bitbucket[disabled]:hover, fieldset[disabled] .btn-bitbucket:hover, .btn-bitbucket.disabled:focus, .btn-bitbucket[disabled]:focus, fieldset[disabled] .btn-bitbucket:focus, .btn-bitbucket.disabled.focus, .btn-bitbucket[disabled].focus, fieldset[disabled] .btn-bitbucket.focus { background-color: #205081; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket .badge { color: #205081; background-color: #fff; } .btn-dropbox { color: #fff; background-color: #1087dd; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:focus, .btn-dropbox.focus { color: #fff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:hover { color: #fff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:active, .btn-dropbox.active, .open > .dropdown-toggle.btn-dropbox { color: #fff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:active:hover, .btn-dropbox.active:hover, .open > .dropdown-toggle.btn-dropbox:hover, .btn-dropbox:active:focus, .btn-dropbox.active:focus, .open > .dropdown-toggle.btn-dropbox:focus, .btn-dropbox:active.focus, .btn-dropbox.active.focus, .open > .dropdown-toggle.btn-dropbox.focus { color: #fff; background-color: #0a568c; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:active, .btn-dropbox.active, .open > .dropdown-toggle.btn-dropbox { background-image: none; } .btn-dropbox.disabled:hover, .btn-dropbox[disabled]:hover, fieldset[disabled] .btn-dropbox:hover, .btn-dropbox.disabled:focus, .btn-dropbox[disabled]:focus, fieldset[disabled] .btn-dropbox:focus, .btn-dropbox.disabled.focus, .btn-dropbox[disabled].focus, fieldset[disabled] .btn-dropbox.focus { background-color: #1087dd; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox .badge { color: #1087dd; background-color: #fff; } .btn-facebook { color: #fff; background-color: #3b5998; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:focus, .btn-facebook.focus { color: #fff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:hover { color: #fff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:active, .btn-facebook.active, .open > .dropdown-toggle.btn-facebook { color: #fff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:active:hover, .btn-facebook.active:hover, .open > .dropdown-toggle.btn-facebook:hover, .btn-facebook:active:focus, .btn-facebook.active:focus, .open > .dropdown-toggle.btn-facebook:focus, .btn-facebook:active.focus, .btn-facebook.active.focus, .open > .dropdown-toggle.btn-facebook.focus { color: #fff; background-color: #23345a; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:active, .btn-facebook.active, .open > .dropdown-toggle.btn-facebook { background-image: none; } .btn-facebook.disabled:hover, .btn-facebook[disabled]:hover, fieldset[disabled] .btn-facebook:hover, .btn-facebook.disabled:focus, .btn-facebook[disabled]:focus, fieldset[disabled] .btn-facebook:focus, .btn-facebook.disabled.focus, .btn-facebook[disabled].focus, fieldset[disabled] .btn-facebook.focus { background-color: #3b5998; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook .badge { color: #3b5998; background-color: #fff; } .btn-flickr { color: #fff; background-color: #ff0084; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:focus, .btn-flickr.focus { color: #fff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:hover { color: #fff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:active, .btn-flickr.active, .open > .dropdown-toggle.btn-flickr { color: #fff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:active:hover, .btn-flickr.active:hover, .open > .dropdown-toggle.btn-flickr:hover, .btn-flickr:active:focus, .btn-flickr.active:focus, .open > .dropdown-toggle.btn-flickr:focus, .btn-flickr:active.focus, .btn-flickr.active.focus, .open > .dropdown-toggle.btn-flickr.focus { color: #fff; background-color: #a80057; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:active, .btn-flickr.active, .open > .dropdown-toggle.btn-flickr { background-image: none; } .btn-flickr.disabled:hover, .btn-flickr[disabled]:hover, fieldset[disabled] .btn-flickr:hover, .btn-flickr.disabled:focus, .btn-flickr[disabled]:focus, fieldset[disabled] .btn-flickr:focus, .btn-flickr.disabled.focus, .btn-flickr[disabled].focus, fieldset[disabled] .btn-flickr.focus { background-color: #ff0084; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr .badge { color: #ff0084; background-color: #fff; } .btn-foursquare { color: #fff; background-color: #f94877; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:focus, .btn-foursquare.focus { color: #fff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:hover { color: #fff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:active, .btn-foursquare.active, .open > .dropdown-toggle.btn-foursquare { color: #fff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:active:hover, .btn-foursquare.active:hover, .open > .dropdown-toggle.btn-foursquare:hover, .btn-foursquare:active:focus, .btn-foursquare.active:focus, .open > .dropdown-toggle.btn-foursquare:focus, .btn-foursquare:active.focus, .btn-foursquare.active.focus, .open > .dropdown-toggle.btn-foursquare.focus { color: #fff; background-color: #e30742; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:active, .btn-foursquare.active, .open > .dropdown-toggle.btn-foursquare { background-image: none; } .btn-foursquare.disabled:hover, .btn-foursquare[disabled]:hover, fieldset[disabled] .btn-foursquare:hover, .btn-foursquare.disabled:focus, .btn-foursquare[disabled]:focus, fieldset[disabled] .btn-foursquare:focus, .btn-foursquare.disabled.focus, .btn-foursquare[disabled].focus, fieldset[disabled] .btn-foursquare.focus { background-color: #f94877; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare .badge { color: #f94877; background-color: #fff; } .btn-github { color: #fff; background-color: #444444; border-color: rgba(0, 0, 0, 0.2); } .btn-github:focus, .btn-github.focus { color: #fff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } .btn-github:hover { color: #fff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } .btn-github:active, .btn-github.active, .open > .dropdown-toggle.btn-github { color: #fff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } .btn-github:active:hover, .btn-github.active:hover, .open > .dropdown-toggle.btn-github:hover, .btn-github:active:focus, .btn-github.active:focus, .open > .dropdown-toggle.btn-github:focus, .btn-github:active.focus, .btn-github.active.focus, .open > .dropdown-toggle.btn-github.focus { color: #fff; background-color: #191919; border-color: rgba(0, 0, 0, 0.2); } .btn-github:active, .btn-github.active, .open > .dropdown-toggle.btn-github { background-image: none; } .btn-github.disabled:hover, .btn-github[disabled]:hover, fieldset[disabled] .btn-github:hover, .btn-github.disabled:focus, .btn-github[disabled]:focus, fieldset[disabled] .btn-github:focus, .btn-github.disabled.focus, .btn-github[disabled].focus, fieldset[disabled] .btn-github.focus { background-color: #444444; border-color: rgba(0, 0, 0, 0.2); } .btn-github .badge { color: #444444; background-color: #fff; } .btn-google { color: #fff; background-color: #dd4b39; border-color: rgba(0, 0, 0, 0.2); } .btn-google:focus, .btn-google.focus { color: #fff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } .btn-google:hover { color: #fff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } .btn-google:active, .btn-google.active, .open > .dropdown-toggle.btn-google { color: #fff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } .btn-google:active:hover, .btn-google.active:hover, .open > .dropdown-toggle.btn-google:hover, .btn-google:active:focus, .btn-google.active:focus, .open > .dropdown-toggle.btn-google:focus, .btn-google:active.focus, .btn-google.active.focus, .open > .dropdown-toggle.btn-google.focus { color: #fff; background-color: #a32b1c; border-color: rgba(0, 0, 0, 0.2); } .btn-google:active, .btn-google.active, .open > .dropdown-toggle.btn-google { background-image: none; } .btn-google.disabled:hover, .btn-google[disabled]:hover, fieldset[disabled] .btn-google:hover, .btn-google.disabled:focus, .btn-google[disabled]:focus, fieldset[disabled] .btn-google:focus, .btn-google.disabled.focus, .btn-google[disabled].focus, fieldset[disabled] .btn-google.focus { background-color: #dd4b39; border-color: rgba(0, 0, 0, 0.2); } .btn-google .badge { color: #dd4b39; background-color: #fff; } .btn-instagram { color: #fff; background-color: #3f729b; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:focus, .btn-instagram.focus { color: #fff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:hover { color: #fff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:active, .btn-instagram.active, .open > .dropdown-toggle.btn-instagram { color: #fff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:active:hover, .btn-instagram.active:hover, .open > .dropdown-toggle.btn-instagram:hover, .btn-instagram:active:focus, .btn-instagram.active:focus, .open > .dropdown-toggle.btn-instagram:focus, .btn-instagram:active.focus, .btn-instagram.active.focus, .open > .dropdown-toggle.btn-instagram.focus { color: #fff; background-color: #26455d; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:active, .btn-instagram.active, .open > .dropdown-toggle.btn-instagram { background-image: none; } .btn-instagram.disabled:hover, .btn-instagram[disabled]:hover, fieldset[disabled] .btn-instagram:hover, .btn-instagram.disabled:focus, .btn-instagram[disabled]:focus, fieldset[disabled] .btn-instagram:focus, .btn-instagram.disabled.focus, .btn-instagram[disabled].focus, fieldset[disabled] .btn-instagram.focus { background-color: #3f729b; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram .badge { color: #3f729b; background-color: #fff; } .btn-linkedin { color: #fff; background-color: #007bb6; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:focus, .btn-linkedin.focus { color: #fff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:hover { color: #fff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:active, .btn-linkedin.active, .open > .dropdown-toggle.btn-linkedin { color: #fff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:active:hover, .btn-linkedin.active:hover, .open > .dropdown-toggle.btn-linkedin:hover, .btn-linkedin:active:focus, .btn-linkedin.active:focus, .open > .dropdown-toggle.btn-linkedin:focus, .btn-linkedin:active.focus, .btn-linkedin.active.focus, .open > .dropdown-toggle.btn-linkedin.focus { color: #fff; background-color: #00405f; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:active, .btn-linkedin.active, .open > .dropdown-toggle.btn-linkedin { background-image: none; } .btn-linkedin.disabled:hover, .btn-linkedin[disabled]:hover, fieldset[disabled] .btn-linkedin:hover, .btn-linkedin.disabled:focus, .btn-linkedin[disabled]:focus, fieldset[disabled] .btn-linkedin:focus, .btn-linkedin.disabled.focus, .btn-linkedin[disabled].focus, fieldset[disabled] .btn-linkedin.focus { background-color: #007bb6; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin .badge { color: #007bb6; background-color: #fff; } .btn-microsoft { color: #fff; background-color: #2672ec; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:focus, .btn-microsoft.focus { color: #fff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:hover { color: #fff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:active, .btn-microsoft.active, .open > .dropdown-toggle.btn-microsoft { color: #fff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:active:hover, .btn-microsoft.active:hover, .open > .dropdown-toggle.btn-microsoft:hover, .btn-microsoft:active:focus, .btn-microsoft.active:focus, .open > .dropdown-toggle.btn-microsoft:focus, .btn-microsoft:active.focus, .btn-microsoft.active.focus, .open > .dropdown-toggle.btn-microsoft.focus { color: #fff; background-color: #0f4bac; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:active, .btn-microsoft.active, .open > .dropdown-toggle.btn-microsoft { background-image: none; } .btn-microsoft.disabled:hover, .btn-microsoft[disabled]:hover, fieldset[disabled] .btn-microsoft:hover, .btn-microsoft.disabled:focus, .btn-microsoft[disabled]:focus, fieldset[disabled] .btn-microsoft:focus, .btn-microsoft.disabled.focus, .btn-microsoft[disabled].focus, fieldset[disabled] .btn-microsoft.focus { background-color: #2672ec; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft .badge { color: #2672ec; background-color: #fff; } .btn-openid { color: #fff; background-color: #f7931e; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:focus, .btn-openid.focus { color: #fff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:hover { color: #fff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:active, .btn-openid.active, .open > .dropdown-toggle.btn-openid { color: #fff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:active:hover, .btn-openid.active:hover, .open > .dropdown-toggle.btn-openid:hover, .btn-openid:active:focus, .btn-openid.active:focus, .open > .dropdown-toggle.btn-openid:focus, .btn-openid:active.focus, .btn-openid.active.focus, .open > .dropdown-toggle.btn-openid.focus { color: #fff; background-color: #b86607; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:active, .btn-openid.active, .open > .dropdown-toggle.btn-openid { background-image: none; } .btn-openid.disabled:hover, .btn-openid[disabled]:hover, fieldset[disabled] .btn-openid:hover, .btn-openid.disabled:focus, .btn-openid[disabled]:focus, fieldset[disabled] .btn-openid:focus, .btn-openid.disabled.focus, .btn-openid[disabled].focus, fieldset[disabled] .btn-openid.focus { background-color: #f7931e; border-color: rgba(0, 0, 0, 0.2); } .btn-openid .badge { color: #f7931e; background-color: #fff; } .btn-pinterest { color: #fff; background-color: #cb2027; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:focus, .btn-pinterest.focus { color: #fff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:hover { color: #fff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:active, .btn-pinterest.active, .open > .dropdown-toggle.btn-pinterest { color: #fff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:active:hover, .btn-pinterest.active:hover, .open > .dropdown-toggle.btn-pinterest:hover, .btn-pinterest:active:focus, .btn-pinterest.active:focus, .open > .dropdown-toggle.btn-pinterest:focus, .btn-pinterest:active.focus, .btn-pinterest.active.focus, .open > .dropdown-toggle.btn-pinterest.focus { color: #fff; background-color: #801419; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:active, .btn-pinterest.active, .open > .dropdown-toggle.btn-pinterest { background-image: none; } .btn-pinterest.disabled:hover, .btn-pinterest[disabled]:hover, fieldset[disabled] .btn-pinterest:hover, .btn-pinterest.disabled:focus, .btn-pinterest[disabled]:focus, fieldset[disabled] .btn-pinterest:focus, .btn-pinterest.disabled.focus, .btn-pinterest[disabled].focus, fieldset[disabled] .btn-pinterest.focus { background-color: #cb2027; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest .badge { color: #cb2027; background-color: #fff; } .btn-reddit { color: #000; background-color: #eff7ff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:focus, .btn-reddit.focus { color: #000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:hover { color: #000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:active, .btn-reddit.active, .open > .dropdown-toggle.btn-reddit { color: #000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:active:hover, .btn-reddit.active:hover, .open > .dropdown-toggle.btn-reddit:hover, .btn-reddit:active:focus, .btn-reddit.active:focus, .open > .dropdown-toggle.btn-reddit:focus, .btn-reddit:active.focus, .btn-reddit.active.focus, .open > .dropdown-toggle.btn-reddit.focus { color: #000; background-color: #98ccff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:active, .btn-reddit.active, .open > .dropdown-toggle.btn-reddit { background-image: none; } .btn-reddit.disabled:hover, .btn-reddit[disabled]:hover, fieldset[disabled] .btn-reddit:hover, .btn-reddit.disabled:focus, .btn-reddit[disabled]:focus, fieldset[disabled] .btn-reddit:focus, .btn-reddit.disabled.focus, .btn-reddit[disabled].focus, fieldset[disabled] .btn-reddit.focus { background-color: #eff7ff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit .badge { color: #eff7ff; background-color: #000; } .btn-soundcloud { color: #fff; background-color: #ff5500; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:focus, .btn-soundcloud.focus { color: #fff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:hover { color: #fff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:active, .btn-soundcloud.active, .open > .dropdown-toggle.btn-soundcloud { color: #fff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:active:hover, .btn-soundcloud.active:hover, .open > .dropdown-toggle.btn-soundcloud:hover, .btn-soundcloud:active:focus, .btn-soundcloud.active:focus, .open > .dropdown-toggle.btn-soundcloud:focus, .btn-soundcloud:active.focus, .btn-soundcloud.active.focus, .open > .dropdown-toggle.btn-soundcloud.focus { color: #fff; background-color: #a83800; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:active, .btn-soundcloud.active, .open > .dropdown-toggle.btn-soundcloud { background-image: none; } .btn-soundcloud.disabled:hover, .btn-soundcloud[disabled]:hover, fieldset[disabled] .btn-soundcloud:hover, .btn-soundcloud.disabled:focus, .btn-soundcloud[disabled]:focus, fieldset[disabled] .btn-soundcloud:focus, .btn-soundcloud.disabled.focus, .btn-soundcloud[disabled].focus, fieldset[disabled] .btn-soundcloud.focus { background-color: #ff5500; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud .badge { color: #ff5500; background-color: #fff; } .btn-tumblr { color: #fff; background-color: #2c4762; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:focus, .btn-tumblr.focus { color: #fff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:hover { color: #fff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:active, .btn-tumblr.active, .open > .dropdown-toggle.btn-tumblr { color: #fff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:active:hover, .btn-tumblr.active:hover, .open > .dropdown-toggle.btn-tumblr:hover, .btn-tumblr:active:focus, .btn-tumblr.active:focus, .open > .dropdown-toggle.btn-tumblr:focus, .btn-tumblr:active.focus, .btn-tumblr.active.focus, .open > .dropdown-toggle.btn-tumblr.focus { color: #fff; background-color: #111c26; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:active, .btn-tumblr.active, .open > .dropdown-toggle.btn-tumblr { background-image: none; } .btn-tumblr.disabled:hover, .btn-tumblr[disabled]:hover, fieldset[disabled] .btn-tumblr:hover, .btn-tumblr.disabled:focus, .btn-tumblr[disabled]:focus, fieldset[disabled] .btn-tumblr:focus, .btn-tumblr.disabled.focus, .btn-tumblr[disabled].focus, fieldset[disabled] .btn-tumblr.focus { background-color: #2c4762; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr .badge { color: #2c4762; background-color: #fff; } .btn-twitter { color: #fff; background-color: #55acee; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:focus, .btn-twitter.focus { color: #fff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:hover { color: #fff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:active, .btn-twitter.active, .open > .dropdown-toggle.btn-twitter { color: #fff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:active:hover, .btn-twitter.active:hover, .open > .dropdown-toggle.btn-twitter:hover, .btn-twitter:active:focus, .btn-twitter.active:focus, .open > .dropdown-toggle.btn-twitter:focus, .btn-twitter:active.focus, .btn-twitter.active.focus, .open > .dropdown-toggle.btn-twitter.focus { color: #fff; background-color: #1583d7; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:active, .btn-twitter.active, .open > .dropdown-toggle.btn-twitter { background-image: none; } .btn-twitter.disabled:hover, .btn-twitter[disabled]:hover, fieldset[disabled] .btn-twitter:hover, .btn-twitter.disabled:focus, .btn-twitter[disabled]:focus, fieldset[disabled] .btn-twitter:focus, .btn-twitter.disabled.focus, .btn-twitter[disabled].focus, fieldset[disabled] .btn-twitter.focus { background-color: #55acee; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter .badge { color: #55acee; background-color: #fff; } .btn-vimeo { color: #fff; background-color: #1ab7ea; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:focus, .btn-vimeo.focus { color: #fff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:hover { color: #fff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:active, .btn-vimeo.active, .open > .dropdown-toggle.btn-vimeo { color: #fff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:active:hover, .btn-vimeo.active:hover, .open > .dropdown-toggle.btn-vimeo:hover, .btn-vimeo:active:focus, .btn-vimeo.active:focus, .open > .dropdown-toggle.btn-vimeo:focus, .btn-vimeo:active.focus, .btn-vimeo.active.focus, .open > .dropdown-toggle.btn-vimeo.focus { color: #fff; background-color: #0f7b9f; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:active, .btn-vimeo.active, .open > .dropdown-toggle.btn-vimeo { background-image: none; } .btn-vimeo.disabled:hover, .btn-vimeo[disabled]:hover, fieldset[disabled] .btn-vimeo:hover, .btn-vimeo.disabled:focus, .btn-vimeo[disabled]:focus, fieldset[disabled] .btn-vimeo:focus, .btn-vimeo.disabled.focus, .btn-vimeo[disabled].focus, fieldset[disabled] .btn-vimeo.focus { background-color: #1ab7ea; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo .badge { color: #1ab7ea; background-color: #fff; } .btn-vk { color: #fff; background-color: #587ea3; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:focus, .btn-vk.focus { color: #fff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:hover { color: #fff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:active, .btn-vk.active, .open > .dropdown-toggle.btn-vk { color: #fff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:active:hover, .btn-vk.active:hover, .open > .dropdown-toggle.btn-vk:hover, .btn-vk:active:focus, .btn-vk.active:focus, .open > .dropdown-toggle.btn-vk:focus, .btn-vk:active.focus, .btn-vk.active.focus, .open > .dropdown-toggle.btn-vk.focus { color: #fff; background-color: #3a526b; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:active, .btn-vk.active, .open > .dropdown-toggle.btn-vk { background-image: none; } .btn-vk.disabled:hover, .btn-vk[disabled]:hover, fieldset[disabled] .btn-vk:hover, .btn-vk.disabled:focus, .btn-vk[disabled]:focus, fieldset[disabled] .btn-vk:focus, .btn-vk.disabled.focus, .btn-vk[disabled].focus, fieldset[disabled] .btn-vk.focus { background-color: #587ea3; border-color: rgba(0, 0, 0, 0.2); } .btn-vk .badge { color: #587ea3; background-color: #fff; } .btn-yahoo { color: #fff; background-color: #720e9e; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:focus, .btn-yahoo.focus { color: #fff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:hover { color: #fff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:active, .btn-yahoo.active, .open > .dropdown-toggle.btn-yahoo { color: #fff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:active:hover, .btn-yahoo.active:hover, .open > .dropdown-toggle.btn-yahoo:hover, .btn-yahoo:active:focus, .btn-yahoo.active:focus, .open > .dropdown-toggle.btn-yahoo:focus, .btn-yahoo:active.focus, .btn-yahoo.active.focus, .open > .dropdown-toggle.btn-yahoo.focus { color: #fff; background-color: #39074e; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:active, .btn-yahoo.active, .open > .dropdown-toggle.btn-yahoo { background-image: none; } .btn-yahoo.disabled:hover, .btn-yahoo[disabled]:hover, fieldset[disabled] .btn-yahoo:hover, .btn-yahoo.disabled:focus, .btn-yahoo[disabled]:focus, fieldset[disabled] .btn-yahoo:focus, .btn-yahoo.disabled.focus, .btn-yahoo[disabled].focus, fieldset[disabled] .btn-yahoo.focus { background-color: #720e9e; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo .badge { color: #720e9e; background-color: #fff; } /* * Plugin: Full Calendar * --------------------- */ .fc-button { background: #f4f4f4; background-image: none; color: #444; border-color: #ddd; border-bottom-color: #ddd; } .fc-button:hover, .fc-button:active, .fc-button.hover { background-color: #e9e9e9; } .fc-header-title h2 { font-size: 15px; line-height: 1.6em; color: #666; margin-left: 10px; } .fc-header-right { padding-right: 10px; } .fc-header-left { padding-left: 10px; } .fc-widget-header { background: #fafafa; } .fc-grid { width: 100%; border: 0; } .fc-widget-header:first-of-type, .fc-widget-content:first-of-type { border-left: 0; border-right: 0; } .fc-widget-header:last-of-type, .fc-widget-content:last-of-type { border-right: 0; } .fc-toolbar { padding: 10px; margin: 0; } .fc-day-number { font-size: 20px; font-weight: 300; padding-right: 10px; } .fc-color-picker { list-style: none; margin: 0; padding: 0; } .fc-color-picker > li { float: left; font-size: 30px; margin-right: 5px; line-height: 30px; } .fc-color-picker > li .fa { -webkit-transition: -webkit-transform linear 0.3s; -moz-transition: -moz-transform linear 0.3s; -o-transition: -o-transform linear 0.3s; transition: transform linear 0.3s; } .fc-color-picker > li .fa:hover { -webkit-transform: rotate(30deg); -ms-transform: rotate(30deg); -o-transform: rotate(30deg); transform: rotate(30deg); } #add-new-event { -webkit-transition: all linear 0.3s; -o-transition: all linear 0.3s; transition: all linear 0.3s; } .external-event { padding: 5px 10px; font-weight: bold; margin-bottom: 4px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; cursor: move; } .external-event:hover { box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); } /* * Plugin: Select2 * --------------- */ .select2-container--default.select2-container--focus, .select2-selection.select2-container--focus, .select2-container--default:focus, .select2-selection:focus, .select2-container--default:active, .select2-selection:active { outline: none; } .select2-container--default .select2-selection--single, .select2-selection .select2-selection--single { border: 1px solid #d2d6de; border-radius: 0; padding: 6px 12px; height: 34px; } .select2-container--default.select2-container--open { border-color: #3c8dbc; } .select2-dropdown { border: 1px solid #d2d6de; border-radius: 0; } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #3c8dbc; color: white; } .select2-results__option { padding: 6px 12px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--single .select2-selection__rendered { padding-left: 0; padding-right: 0; height: auto; margin-top: -4px; } .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 6px; padding-left: 20px; } .select2-container--default .select2-selection--single .select2-selection__arrow { height: 28px; right: 3px; } .select2-container--default .select2-selection--single .select2-selection__arrow b { margin-top: 0; } .select2-dropdown .select2-search__field, .select2-search--inline .select2-search__field { border: 1px solid #d2d6de; } .select2-dropdown .select2-search__field:focus, .select2-search--inline .select2-search__field:focus { outline: none; } .select2-container--default.select2-container--focus .select2-selection--multiple, .select2-container--default .select2-search--dropdown .select2-search__field { border-color: #3c8dbc !important; } .select2-container--default .select2-results__option[aria-disabled=true] { color: #999; } .select2-container--default .select2-results__option[aria-selected=true] { background-color: #ddd; } .select2-container--default .select2-results__option[aria-selected=true], .select2-container--default .select2-results__option[aria-selected=true]:hover { color: #444; } .select2-container--default .select2-selection--multiple { border: 1px solid #d2d6de; border-radius: 0; } .select2-container--default .select2-selection--multiple:focus { border-color: #3c8dbc; } .select2-container--default.select2-container--focus .select2-selection--multiple { border-color: #d2d6de; } .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #3c8dbc; border-color: #367fa9; padding: 1px 10px; color: #fff; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { margin-right: 5px; color: rgba(255, 255, 255, 0.7); } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { color: #fff; } .select2-container .select2-selection--single .select2-selection__rendered { padding-right: 10px; } .box .datepicker-inline, .box .datepicker-inline .datepicker-days, .box .datepicker-inline > table, .box .datepicker-inline .datepicker-days > table { width: 100%; } .box .datepicker-inline td:hover, .box .datepicker-inline .datepicker-days td:hover, .box .datepicker-inline > table td:hover, .box .datepicker-inline .datepicker-days > table td:hover { background-color: rgba(255, 255, 255, 0.3); } .box .datepicker-inline td.day.old, .box .datepicker-inline .datepicker-days td.day.old, .box .datepicker-inline > table td.day.old, .box .datepicker-inline .datepicker-days > table td.day.old, .box .datepicker-inline td.day.new, .box .datepicker-inline .datepicker-days td.day.new, .box .datepicker-inline > table td.day.new, .box .datepicker-inline .datepicker-days > table td.day.new { color: #777; } /* * General: Miscellaneous * ---------------------- */ .pad { padding: 10px; } .margin { margin: 10px; } .margin-bottom { margin-bottom: 20px; } .margin-bottom-none { margin-bottom: 0; } .margin-r-5 { margin-right: 5px; } .inline { display: inline; } .description-block { display: block; margin: 10px 0; text-align: center; } .description-block.margin-bottom { margin-bottom: 25px; } .description-block > .description-header { margin: 0; padding: 0; font-weight: 600; font-size: 16px; } .description-block > .description-text { text-transform: uppercase; } .bg-red, .bg-yellow, .bg-aqua, .bg-blue, .bg-light-blue, .bg-green, .bg-navy, .bg-teal, .bg-olive, .bg-lime, .bg-orange, .bg-fuchsia, .bg-purple, .bg-maroon, .bg-black, .bg-red-active, .bg-yellow-active, .bg-aqua-active, .bg-blue-active, .bg-light-blue-active, .bg-green-active, .bg-navy-active, .bg-teal-active, .bg-olive-active, .bg-lime-active, .bg-orange-active, .bg-fuchsia-active, .bg-purple-active, .bg-maroon-active, .bg-black-active, .callout.callout-danger, .callout.callout-warning, .callout.callout-info, .callout.callout-success, .alert-success, .alert-danger, .alert-error, .alert-warning, .alert-info, .label-danger, .label-info, .label-warning, .label-primary, .label-success, .modal-primary .modal-body, .modal-primary .modal-header, .modal-primary .modal-footer, .modal-warning .modal-body, .modal-warning .modal-header, .modal-warning .modal-footer, .modal-info .modal-body, .modal-info .modal-header, .modal-info .modal-footer, .modal-success .modal-body, .modal-success .modal-header, .modal-success .modal-footer, .modal-danger .modal-body, .modal-danger .modal-header, .modal-danger .modal-footer { color: #fff !important; } .bg-gray { color: #000; background-color: #d2d6de !important; } .bg-gray-light { background-color: #f7f7f7; } .bg-black { background-color: #111 !important; } .bg-red, .callout.callout-danger, .alert-danger, .alert-error, .label-danger, .modal-danger .modal-body { background-color: #dd4b39 !important; } .bg-yellow, .callout.callout-warning, .alert-warning, .label-warning, .modal-warning .modal-body { background-color: #f39c12 !important; } .bg-aqua, .callout.callout-info, .alert-info, .label-info, .modal-info .modal-body { background-color: #00c0ef !important; } .bg-blue { background-color: #0073b7 !important; } .bg-light-blue, .label-primary, .modal-primary .modal-body { background-color: #3c8dbc !important; } .bg-green, .callout.callout-success, .alert-success, .label-success, .modal-success .modal-body { background-color: #00a65a !important; } .bg-navy { background-color: #001F3F !important; } .bg-teal { background-color: #39CCCC !important; } .bg-olive { background-color: #3D9970 !important; } .bg-lime { background-color: #01FF70 !important; } .bg-orange { background-color: #FF851B !important; } .bg-fuchsia { background-color: #F012BE !important; } .bg-purple { background-color: #605ca8 !important; } .bg-maroon { background-color: #D81B60 !important; } .bg-gray-active { color: #000; background-color: #b5bbc8 !important; } .bg-black-active { background-color: #000000 !important; } .bg-red-active, .modal-danger .modal-header, .modal-danger .modal-footer { background-color: #d33724 !important; } .bg-yellow-active, .modal-warning .modal-header, .modal-warning .modal-footer { background-color: #db8b0b !important; } .bg-aqua-active, .modal-info .modal-header, .modal-info .modal-footer { background-color: #00a7d0 !important; } .bg-blue-active { background-color: #005384 !important; } .bg-light-blue-active, .modal-primary .modal-header, .modal-primary .modal-footer { background-color: #357ca5 !important; } .bg-green-active, .modal-success .modal-header, .modal-success .modal-footer { background-color: #008d4c !important; } .bg-navy-active { background-color: #001a35 !important; } .bg-teal-active { background-color: #30bbbb !important; } .bg-olive-active { background-color: #368763 !important; } .bg-lime-active { background-color: #00e765 !important; } .bg-orange-active { background-color: #ff7701 !important; } .bg-fuchsia-active { background-color: #db0ead !important; } .bg-purple-active { background-color: #555299 !important; } .bg-maroon-active { background-color: #ca195a !important; } [class^="bg-"].disabled { opacity: 0.65; filter: alpha(opacity=65); } .text-red { color: #dd4b39 !important; } .text-yellow { color: #f39c12 !important; } .text-aqua { color: #00c0ef !important; } .text-blue { color: #0073b7 !important; } .text-black { color: #111 !important; } .text-light-blue { color: #3c8dbc !important; } .text-green { color: #00a65a !important; } .text-gray { color: #d2d6de !important; } .text-navy { color: #001F3F !important; } .text-teal { color: #39CCCC !important; } .text-olive { color: #3D9970 !important; } .text-lime { color: #01FF70 !important; } .text-orange { color: #FF851B !important; } .text-fuchsia { color: #F012BE !important; } .text-purple { color: #605ca8 !important; } .text-maroon { color: #D81B60 !important; } .link-muted { color: #7a869d; } .link-muted:hover, .link-muted:focus { color: #606c84; } .link-black { color: #666; } .link-black:hover, .link-black:focus { color: #999; } .hide { display: none !important; } .no-border { border: 0 !important; } .no-padding { padding: 0 !important; } .no-margin { margin: 0 !important; } .no-shadow { box-shadow: none !important; } .list-unstyled, .chart-legend, .contacts-list, .users-list, .mailbox-attachments { list-style: none; margin: 0; padding: 0; } .list-group-unbordered > .list-group-item { border-left: 0; border-right: 0; border-radius: 0; padding-left: 0; padding-right: 0; } .flat { border-radius: 0 !important; } .text-bold, .text-bold.table td, .text-bold.table th { font-weight: 700; } .text-sm { font-size: 12px; } .jqstooltip { padding: 5px !important; width: auto !important; height: auto !important; } .bg-teal-gradient { background: #39CCCC !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39CCCC), color-stop(1, #7adddd)) !important; background: -ms-linear-gradient(bottom, #39CCCC, #7adddd) !important; background: -moz-linear-gradient(center bottom, #39CCCC 0%, #7adddd 100%) !important; background: -o-linear-gradient(#7adddd, #39CCCC) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39CCCC', GradientType=0) !important; color: #fff; } .bg-light-blue-gradient { background: #3c8dbc !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important; background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important; background: -moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important; background: -o-linear-gradient(#67a8ce, #3c8dbc) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important; color: #fff; } .bg-blue-gradient { background: #0073b7 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important; background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important; background: -moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important; background: -o-linear-gradient(#0089db, #0073b7) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important; color: #fff; } .bg-aqua-gradient { background: #00c0ef !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important; background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important; background: -moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important; background: -o-linear-gradient(#14d1ff, #00c0ef) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important; color: #fff; } .bg-yellow-gradient { background: #f39c12 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important; background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important; background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important; background: -o-linear-gradient(#f7bc60, #f39c12) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important; color: #fff; } .bg-purple-gradient { background: #605ca8 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important; background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important; background: -moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important; background: -o-linear-gradient(#9491c4, #605ca8) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important; color: #fff; } .bg-green-gradient { background: #00a65a !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important; background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important; background: -moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important; background: -o-linear-gradient(#00ca6d, #00a65a) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important; color: #fff; } .bg-red-gradient { background: #dd4b39 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important; background: -ms-linear-gradient(bottom, #dd4b39, #e47365) !important; background: -moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important; background: -o-linear-gradient(#e47365, #dd4b39) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important; color: #fff; } .bg-black-gradient { background: #111 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important; background: -ms-linear-gradient(bottom, #111, #2b2b2b) !important; background: -moz-linear-gradient(center bottom, #111 0%, #2b2b2b 100%) !important; background: -o-linear-gradient(#2b2b2b, #111) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111', GradientType=0) !important; color: #fff; } .bg-maroon-gradient { background: #D81B60 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #D81B60), color-stop(1, #e73f7c)) !important; background: -ms-linear-gradient(bottom, #D81B60, #e73f7c) !important; background: -moz-linear-gradient(center bottom, #D81B60 0%, #e73f7c 100%) !important; background: -o-linear-gradient(#e73f7c, #D81B60) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#D81B60', GradientType=0) !important; color: #fff; } .description-block .description-icon { font-size: 16px; } .no-pad-top { padding-top: 0; } .position-static { position: static !important; } .list-header { font-size: 15px; padding: 10px 4px; font-weight: bold; color: #666; } .list-seperator { height: 1px; background: #f4f4f4; margin: 15px 0 9px 0; } .list-link > a { padding: 4px; color: #777; } .list-link > a:hover { color: #222; } .font-light { font-weight: 300; } .user-block:before, .user-block:after { content: " "; display: table; } .user-block:after { clear: both; } .user-block img { width: 40px; height: 40px; float: left; } .user-block .username, .user-block .description, .user-block .comment { display: block; margin-left: 50px; } .user-block .username { font-size: 16px; font-weight: 600; } .user-block .description { color: #999; font-size: 13px; } .user-block.user-block-sm .username, .user-block.user-block-sm .description, .user-block.user-block-sm .comment { margin-left: 40px; } .user-block.user-block-sm .username { font-size: 14px; } .img-sm, .img-md, .img-lg, .box-comments .box-comment img, .user-block.user-block-sm img { float: left; } .img-sm, .box-comments .box-comment img, .user-block.user-block-sm img { width: 30px !important; height: 30px !important; } .img-sm + .img-push { margin-left: 40px; } .img-md { width: 60px; height: 60px; } .img-md + .img-push { margin-left: 70px; } .img-lg { width: 100px; height: 100px; } .img-lg + .img-push { margin-left: 110px; } .img-bordered { border: 3px solid #d2d6de; padding: 3px; } .img-bordered-sm { border: 2px solid #d2d6de; padding: 2px; } .attachment-block { border: 1px solid #f4f4f4; padding: 5px; margin-bottom: 10px; background: #f7f7f7; } .attachment-block .attachment-img { max-width: 100px; max-height: 100px; height: auto; float: left; } .attachment-block .attachment-pushed { margin-left: 110px; } .attachment-block .attachment-heading { margin: 0; } .attachment-block .attachment-text { color: #555; } .connectedSortable { min-height: 100px; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sort-highlight { background: #f4f4f4; border: 1px dashed #ddd; margin-bottom: 10px; } .full-opacity-hover { opacity: 0.65; filter: alpha(opacity=65); } .full-opacity-hover:hover { opacity: 1; filter: alpha(opacity=100); } .chart { position: relative; overflow: hidden; width: 100%; } .chart svg, .chart canvas { width: 100% !important; } hr { border-top: 1px solid #555555; } #red .slider-selection { background: #f56954; } #blue .slider-selection { background: #3c8dbc; } #green .slider-selection { background: #00a65a; } #yellow .slider-selection { background: #f39c12; } #aqua .slider-selection { background: #00c0ef; } #purple .slider-selection { background: #932ab6; } /* * Misc: print * ----------- */ @media print { .no-print, .main-sidebar, .left-side, .main-header, .content-header { display: none !important; } .content-wrapper, .right-side, .main-footer { margin-left: 0 !important; min-height: 0 !important; -webkit-transform: translate(0, 0) !important; -ms-transform: translate(0, 0) !important; -o-transform: translate(0, 0) !important; transform: translate(0, 0) !important; } .fixed .content-wrapper, .fixed .right-side { padding-top: 0 !important; } .invoice { width: 100%; border: 0; margin: 0; padding: 0; } .invoice-col { float: left; width: 33.3333333%; } .table-responsive { overflow: auto; } .table-responsive > .table tr th, .table-responsive > .table tr td { white-space: normal !important; } } AdminLTE/css/adminlte.css.map 0000644 00001134630 15002261751 0012023 0 ustar 00 { "version": 3, "file": "adminlte.css", "sources": [ "../../build/scss/AdminLTE.scss", "../../build/scss/_bootstrap_variables.scss", "../../bower_components/bootstrap/scss/bootstrap.scss", "../../bower_components/bootstrap/scss/_variables.scss", "../../bower_components/bootstrap/scss/_mixins.scss", "../../bower_components/bootstrap/scss/mixins/_breakpoints.scss", "../../bower_components/bootstrap/scss/mixins/_hover.scss", "../../bower_components/bootstrap/scss/mixins/_image.scss", "../../bower_components/bootstrap/scss/mixins/_badge.scss", "../../bower_components/bootstrap/scss/mixins/_resize.scss", "../../bower_components/bootstrap/scss/mixins/_screen-reader.scss", "../../bower_components/bootstrap/scss/mixins/_size.scss", "../../bower_components/bootstrap/scss/mixins/_reset-text.scss", "../../bower_components/bootstrap/scss/mixins/_text-emphasis.scss", "../../bower_components/bootstrap/scss/mixins/_text-hide.scss", "../../bower_components/bootstrap/scss/mixins/_text-truncate.scss", "../../bower_components/bootstrap/scss/mixins/_transforms.scss", "../../bower_components/bootstrap/scss/mixins/_visibility.scss", "../../bower_components/bootstrap/scss/mixins/_alert.scss", "../../bower_components/bootstrap/scss/mixins/_buttons.scss", "../../bower_components/bootstrap/scss/mixins/_cards.scss", "../../bower_components/bootstrap/scss/mixins/_pagination.scss", "../../bower_components/bootstrap/scss/mixins/_lists.scss", "../../bower_components/bootstrap/scss/mixins/_list-group.scss", "../../bower_components/bootstrap/scss/mixins/_nav-divider.scss", "../../bower_components/bootstrap/scss/mixins/_forms.scss", "../../bower_components/bootstrap/scss/mixins/_table-row.scss", "../../bower_components/bootstrap/scss/mixins/_background-variant.scss", "../../bower_components/bootstrap/scss/mixins/_border-radius.scss", "../../bower_components/bootstrap/scss/mixins/_gradients.scss", "../../bower_components/bootstrap/scss/mixins/_clearfix.scss", "../../bower_components/bootstrap/scss/mixins/_grid-framework.scss", "../../bower_components/bootstrap/scss/mixins/_grid.scss", "../../bower_components/bootstrap/scss/mixins/_float.scss", "../../bower_components/bootstrap/scss/_custom.scss", "../../bower_components/bootstrap/scss/_normalize.scss", "../../bower_components/bootstrap/scss/_print.scss", "../../bower_components/bootstrap/scss/_reboot.scss", "../../bower_components/bootstrap/scss/_type.scss", "../../bower_components/bootstrap/scss/_images.scss", "../../bower_components/bootstrap/scss/_code.scss", "../../bower_components/bootstrap/scss/_grid.scss", "../../bower_components/bootstrap/scss/_tables.scss", "../../bower_components/bootstrap/scss/_forms.scss", "../../bower_components/bootstrap/scss/_buttons.scss", "../../bower_components/bootstrap/scss/_transitions.scss", "../../bower_components/bootstrap/scss/_dropdown.scss", "../../bower_components/bootstrap/scss/_button-group.scss", "../../bower_components/bootstrap/scss/_input-group.scss", "../../bower_components/bootstrap/scss/_custom-forms.scss", "../../bower_components/bootstrap/scss/_nav.scss", "../../bower_components/bootstrap/scss/_navbar.scss", "../../bower_components/bootstrap/scss/_card.scss", "../../bower_components/bootstrap/scss/_breadcrumb.scss", "../../bower_components/bootstrap/scss/_pagination.scss", "../../bower_components/bootstrap/scss/_badge.scss", "../../bower_components/bootstrap/scss/_jumbotron.scss", "../../bower_components/bootstrap/scss/_alert.scss", "../../bower_components/bootstrap/scss/_progress.scss", "../../bower_components/bootstrap/scss/_media.scss", "../../bower_components/bootstrap/scss/_list-group.scss", "../../bower_components/bootstrap/scss/_responsive-embed.scss", "../../bower_components/bootstrap/scss/_close.scss", "../../bower_components/bootstrap/scss/_modal.scss", "../../bower_components/bootstrap/scss/_tooltip.scss", "../../bower_components/bootstrap/scss/_popover.scss", "../../bower_components/bootstrap/scss/_carousel.scss", "../../bower_components/bootstrap/scss/_utilities.scss", "../../bower_components/bootstrap/scss/utilities/_align.scss", "../../bower_components/bootstrap/scss/utilities/_background.scss", "../../bower_components/bootstrap/scss/utilities/_borders.scss", "../../bower_components/bootstrap/scss/utilities/_clearfix.scss", "../../bower_components/bootstrap/scss/utilities/_display.scss", "../../bower_components/bootstrap/scss/utilities/_flex.scss", "../../bower_components/bootstrap/scss/utilities/_float.scss", "../../bower_components/bootstrap/scss/utilities/_position.scss", "../../bower_components/bootstrap/scss/utilities/_screenreaders.scss", "../../bower_components/bootstrap/scss/utilities/_sizing.scss", "../../bower_components/bootstrap/scss/utilities/_spacing.scss", "../../bower_components/bootstrap/scss/utilities/_text.scss", "../../bower_components/bootstrap/scss/utilities/_visibility.scss", "../../build/scss/_variables.scss", "../../build/scss/_mixins.scss", "../../build/scss/_layout.scss", "../../build/scss/_header.scss", "../../build/scss/_sidebar.scss", "../../build/scss/_sidebar-mini.scss", "../../build/scss/_control-sidebar.scss", "../../build/scss/_dropdown.scss", "../../build/scss/_forms.scss", "../../build/scss/_progress-bars.scss", "../../build/scss/_small-box.scss", "../../build/scss/_boxes.scss", "../../build/scss/_info-box.scss", "../../build/scss/_timeline.scss", "../../build/scss/_buttons.scss", "../../build/scss/_callout.scss", "../../build/scss/_alerts.scss", "../../build/scss/_navs.scss", "../../build/scss/_products.scss", "../../build/scss/_table.scss", "../../build/scss/_labels.scss", "../../build/scss/_direct-chat.scss", "../../build/scss/_users-list.scss", "../../build/scss/_site-search.scss", "../../build/scss/_carousel.scss", "../../build/scss/_modal.scss", "../../build/scss/_social-widgets.scss", "../../build/scss/_mailbox.scss", "../../build/scss/_lockscreen.scss", "../../build/scss/_login_and_register.scss", "../../build/scss/_404_500_errors.scss", "../../build/scss/_invoice.scss", "../../build/scss/_profile.scss", "../../build/scss/_bootstrap-social.scss", "../../build/scss/_fullcalendar.scss", "../../build/scss/_select2.scss", "../../build/scss/_miscellaneous.scss", "../../build/scss/_print.scss", "../../build/scss/skins/_all-skins.scss", "../../build/scss/skins/skin-blue.scss", "../../build/scss/skins/skin-blue-light.scss", "../../build/scss/skins/skin-black.scss", "../../build/scss/skins/skin-black-light.scss", "../../build/scss/skins/skin-green.scss", "../../build/scss/skins/skin-green-light.scss", "../../build/scss/skins/skin-red.scss", "../../build/scss/skins/skin-red-light.scss", "../../build/scss/skins/skin-yellow.scss", "../../build/scss/skins/skin-yellow-light.scss", "../../build/scss/skins/skin-purple.scss", "../../build/scss/skins/skin-purple-light.scss" ], "mappings": "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", "names": [] } AdminLTE/css/alt/AdminLTE-select2.css 0000644 00000005742 15002261751 0013166 0 ustar 00 /* * Plugin: Select2 * --------------- */ .select2-container--default.select2-container--focus, .select2-selection.select2-container--focus, .select2-container--default:focus, .select2-selection:focus, .select2-container--default:active, .select2-selection:active { outline: none; } .select2-container--default .select2-selection--single, .select2-selection .select2-selection--single { border: 1px solid #d2d6de; border-radius: 0; padding: 6px 12px; height: 34px; } .select2-container--default.select2-container--open { border-color: #3c8dbc; } .select2-dropdown { border: 1px solid #d2d6de; border-radius: 0; } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #3c8dbc; color: white; } .select2-results__option { padding: 6px 12px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--single .select2-selection__rendered { padding-left: 0; padding-right: 0; height: auto; margin-top: -4px; } .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 6px; padding-left: 20px; } .select2-container--default .select2-selection--single .select2-selection__arrow { height: 28px; right: 3px; } .select2-container--default .select2-selection--single .select2-selection__arrow b { margin-top: 0; } .select2-dropdown .select2-search__field, .select2-search--inline .select2-search__field { border: 1px solid #d2d6de; } .select2-dropdown .select2-search__field:focus, .select2-search--inline .select2-search__field:focus { outline: none; } .select2-container--default.select2-container--focus .select2-selection--multiple, .select2-container--default .select2-search--dropdown .select2-search__field { border-color: #3c8dbc !important; } .select2-container--default .select2-results__option[aria-disabled=true] { color: #999; } .select2-container--default .select2-results__option[aria-selected=true] { background-color: #ddd; } .select2-container--default .select2-results__option[aria-selected=true], .select2-container--default .select2-results__option[aria-selected=true]:hover { color: #444; } .select2-container--default .select2-selection--multiple { border: 1px solid #d2d6de; border-radius: 0; } .select2-container--default .select2-selection--multiple:focus { border-color: #3c8dbc; } .select2-container--default.select2-container--focus .select2-selection--multiple { border-color: #d2d6de; } .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #3c8dbc; border-color: #367fa9; padding: 1px 10px; color: #fff; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { margin-right: 5px; color: rgba(255, 255, 255, 0.7); } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { color: #fff; } .select2-container .select2-selection--single .select2-selection__rendered { padding-right: 10px; } AdminLTE/css/alt/AdminLTE-bootstrap-social.min.css 0000644 00000063364 15002261751 0015700 0 ustar 00 .btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon>:first-child{border:none;text-align:center;width:100%}.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0}.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0}.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active:hover,.btn-adn.active:hover,.open>.dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open>.dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open>.dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2)}.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none}.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus{background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn .badge{color:#d87a68;background-color:#fff}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open>.dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open>.dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open>.dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none}.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus{background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket .badge{color:#205081;background-color:#fff}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open>.dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open>.dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open>.dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none}.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus{background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox .badge{color:#1087dd;background-color:#fff}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active:hover,.btn-facebook.active:hover,.open>.dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open>.dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open>.dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2)}.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none}.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus{background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook .badge{color:#3b5998;background-color:#fff}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active:hover,.btn-flickr.active:hover,.open>.dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open>.dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open>.dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2)}.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none}.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus{background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr .badge{color:#ff0084;background-color:#fff}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open>.dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open>.dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open>.dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none}.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus{background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare .badge{color:#f94877;background-color:#fff}.btn-github{color:#fff;background-color:#444444;border-color:rgba(0,0,0,0.2)}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active:hover,.btn-github.active:hover,.open>.dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open>.dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open>.dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2)}.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none}.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus{background-color:#444444;border-color:rgba(0,0,0,0.2)}.btn-github .badge{color:#444444;background-color:#fff}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active:hover,.btn-google.active:hover,.open>.dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open>.dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open>.dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2)}.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none}.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google .badge{color:#dd4b39;background-color:#fff}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active:hover,.btn-instagram.active:hover,.open>.dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open>.dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open>.dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2)}.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none}.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus{background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram .badge{color:#3f729b;background-color:#fff}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open>.dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open>.dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open>.dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none}.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus{background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin .badge{color:#007bb6;background-color:#fff}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open>.dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open>.dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open>.dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none}.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus{background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft .badge{color:#2672ec;background-color:#fff}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active:hover,.btn-openid.active:hover,.open>.dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open>.dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open>.dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2)}.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none}.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus{background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid .badge{color:#f7931e;background-color:#fff}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open>.dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open>.dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open>.dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none}.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus{background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest .badge{color:#cb2027;background-color:#fff}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active:hover,.btn-reddit.active:hover,.open>.dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open>.dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open>.dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none}.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit .badge{color:#eff7ff;background-color:#000}.btn-soundcloud{color:#fff;background-color:#ff5500;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open>.dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open>.dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open>.dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none}.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus{background-color:#ff5500;border-color:rgba(0,0,0,0.2)}.btn-soundcloud .badge{color:#ff5500;background-color:#fff}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open>.dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open>.dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open>.dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none}.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus{background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr .badge{color:#2c4762;background-color:#fff}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active:hover,.btn-twitter.active:hover,.open>.dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open>.dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open>.dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2)}.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none}.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus{background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter .badge{color:#55acee;background-color:#fff}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open>.dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open>.dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open>.dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none}.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active:hover,.btn-vk.active:hover,.open>.dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open>.dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open>.dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2)}.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none}.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus{background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk .badge{color:#587ea3;background-color:#fff}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open>.dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open>.dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open>.dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none}.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus{background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo .badge{color:#720e9e;background-color:#fff} AdminLTE/css/alt/AdminLTE-without-plugins.min.css 0000644 00000223005 15002261751 0015563 0 ustar 00 /*! * AdminLTE v2.4.18 * Without Third-Party Plugins * * Author: Colorlib * Support: <https://github.com/ColorlibHQ/AdminLTE/issues> * Repository: git://github.com/ColorlibHQ/AdminLTE.git * License: MIT <http://opensource.org/licenses/MIT> */html,body{height:100%}.layout-boxed html,.layout-boxed body{height:100%}body{font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto}.wrapper{height:100%;position:relative;overflow-x:hidden;overflow-y:auto}.wrapper:before,.wrapper:after{content:" ";display:table}.wrapper:after{clear:both}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative}.layout-boxed{background-color:#f9fafc}.content-wrapper,.main-footer{-webkit-transition:-webkit-transform .3s ease-in-out,margin .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,margin .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,margin .3s ease-in-out;transition:transform .3s ease-in-out,margin .3s ease-in-out;margin-left:230px;z-index:820}.layout-top-nav .content-wrapper,.layout-top-nav .main-footer{margin-left:0}@media (max-width:767px){.content-wrapper,.main-footer{margin-left:0}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .main-footer{margin-left:0}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .main-footer{-webkit-transform:translate(230px, 0);-ms-transform:translate(230px, 0);-o-transform:translate(230px, 0);transform:translate(230px, 0)}}.content-wrapper{min-height:calc(100vh - 101px);background-color:#ecf0f5;z-index:800}@media (max-width:767px){.content-wrapper{min-height:calc(100vh - 151px)}}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed}.fixed .main-header{top:0;right:0;left:0}.fixed .content-wrapper,.fixed .right-side{padding-top:50px}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px}}.fixed.layout-boxed .wrapper{max-width:100%}.fixed .wrapper{overflow:hidden}.hold-transition .content-wrapper,.hold-transition .right-side,.hold-transition .main-footer,.hold-transition .main-sidebar,.hold-transition .left-side,.hold-transition .main-header .navbar,.hold-transition .main-header .logo,.hold-transition .menu-open .fa-angle-left{-webkit-transition:none;-o-transition:none;transition:none}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif}a{color:#3c8dbc}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2}.page-header{margin:10px 0 20px 0;font-size:22px}.page-header>small{color:#666;display:block;margin-top:5px}.main-header{position:relative;max-height:100px;z-index:1030}.main-header .navbar{-webkit-transition:margin-left .3s ease-in-out;-o-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0}.layout-top-nav .main-header .navbar{margin-left:0}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9)}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent}}@media (max-width:767px){.main-header .navbar-right{float:none}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px}.main-header .navbar-right>li{color:inherit;border:0}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:15px 15px;font-family:fontAwesome}.main-header .sidebar-toggle:before{content:"\f0c9"}.main-header .sidebar-toggle:hover{color:#fff}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent}.main-header .sidebar-toggle.fa5{font-family:"Font Awesome\ 5 Free"}.main-header .sidebar-toggle.fa5:before{content:"\f0c9";font-weight:900}.main-header .sidebar-toggle .icon-bar{display:none}.main-header .navbar .nav>li.user>a>.fa,.main-header .navbar .nav>li.user>a>.glyphicon,.main-header .navbar .nav>li.user>a>.ion{margin-right:5px}.main-header .navbar .nav>li>a>.label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9}.main-header .logo{-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden}.main-header .logo img{padding:4px;object-fit:contain;margin:0 auto}.main-header .logo .logo-lg{display:block}.main-header .logo .logo-lg img{max-width:200px;max-height:50px}.main-header .logo .logo-lg .brandlogo-image{margin-top:8px;margin-right:10px;margin-left:-5px}.main-header .logo .logo-mini{display:none}.main-header .logo .logo-mini img{max-width:50px;max-height:50px}.main-header .logo .logo-mini .brandlogo-image{margin-top:8px;margin-right:10px;margin-left:10px}.main-header .logo .brandlogo-image{float:left;height:34px;width:auto}.main-header .navbar-brand{color:#fff}.content-header{position:relative;padding:15px 15px 0 15px}.content-header>h1{margin:0;font-size:24px}.content-header>h1>small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300}.content-header>.breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px}.content-header>.breadcrumb>li>a{color:#444;text-decoration:none;display:inline-block}.content-header>.breadcrumb>li>a>.fa,.content-header>.breadcrumb>li>a>.glyphicon,.content-header>.breadcrumb>li>a>.ion{margin-right:5px}.content-header>.breadcrumb>li+li:before{content:'>\00a0'}@media (max-width:991px){.content-header>.breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px}.content-header>.breadcrumb li:before{color:#97a0b3}}.navbar-toggle{color:#fff;border:0;margin:0;padding:15px 15px}@media (max-width:991px){.navbar-custom-menu .navbar-nav>li{float:left}.navbar-custom-menu .navbar-nav{margin:0;float:left}.navbar-custom-menu .navbar-nav>li>a{padding-top:15px;padding-bottom:15px;line-height:20px}}@media (max-width:767px){.main-header{position:relative}.main-header .logo,.main-header .navbar{width:100%;float:none}.main-header .navbar{margin:0}.main-header .navbar-custom-menu{float:right}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important}.navbar-collapse.pull-left+.navbar-custom-menu{display:block;position:absolute;top:0;right:40px}}.main-sidebar{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform .3s ease-in-out,width .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,width .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,width .3s ease-in-out;transition:transform .3s ease-in-out,width .3s ease-in-out}@media (max-width:767px){.main-sidebar{padding-top:100px}}@media (max-width:767px){.main-sidebar{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (min-width:768px){.sidebar-collapse .main-sidebar{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (max-width:767px){.sidebar-open .main-sidebar{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}}.sidebar{padding-bottom:10px}.sidebar-form input:focus{border-color:transparent}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden}.user-panel:before,.user-panel:after{content:" ";display:table}.user-panel:after{clear:both}.user-panel>.image>img{width:100%;max-width:45px;height:auto}.user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px}.user-panel>.info>p{font-weight:600;margin-bottom:9px}.user-panel>.info>a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px}.user-panel>.info>a>.fa,.user-panel>.info>a>.ion,.user-panel>.info>a>.glyphicon{margin-right:3px}.sidebar-menu{list-style:none;margin:0;padding:0}.sidebar-menu>li{position:relative;margin:0;padding:0}.sidebar-menu>li>a{padding:12px 5px 12px 15px;display:block}.sidebar-menu>li>a>.fa,.sidebar-menu>li>a>.glyphicon,.sidebar-menu>li>a>.ion{width:20px}.sidebar-menu>li .label,.sidebar-menu>li .badge{margin-right:5px}.sidebar-menu>li .badge{margin-top:3px}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px}.sidebar-menu li>a>.fa-angle-left,.sidebar-menu li>a>.pull-right-container>.fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;-webkit-transition:transform .5s ease;-o-transition:transform .5s ease;transition:transform .5s ease}.sidebar-menu li>a>.fa-angle-left{position:absolute;top:50%;right:10px;margin-top:-8px}.sidebar-menu .menu-open>a>.fa-angle-left,.sidebar-menu .menu-open>a>.pull-right-container>.fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.sidebar-menu .active>.treeview-menu{display:block}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);width:50px !important;z-index:850}.sidebar-mini.sidebar-collapse .sidebar-menu>li{position:relative}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a{margin-right:0}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{border-top-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span{border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span,.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-lg{display:none}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px}}@media (min-width:768px){.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right),.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{display:block !important;position:absolute;width:180px;left:50px}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container{position:relative !important;float:right;width:auto !important;left:180px !important;top:-22px !important;z-index:900}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container>.label:not(:first-of-type){display:none}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{top:44px;margin-left:0}}.sidebar-expanded-on-hover .main-footer,.sidebar-expanded-on-hover .content-wrapper{margin-left:50px}.sidebar-expanded-on-hover .main-sidebar{box-shadow:3px 0 8px rgba(0,0,0,0.125)}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu>li.header{white-space:nowrap;overflow:hidden}.sidebar-menu:hover{overflow:visible}.sidebar-form,.sidebar-menu>li.header{overflow:hidden;text-overflow:clip}.sidebar-menu li>a{position:relative}.sidebar-menu li>a>.pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right .3s ease-in-out;-o-transition:right .3s ease-in-out;transition:right .3s ease-in-out}.control-sidebar{position:absolute;padding-top:50px;z-index:1010}@media (max-width:767px){.control-sidebar{padding-top:100px}}.control-sidebar>.tab-content{padding:10px 15px}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open+.control-sidebar-bg{right:0}.control-sidebar-hold-transition .control-sidebar-bg,.control-sidebar-hold-transition .control-sidebar,.control-sidebar-hold-transition .content-wrapper{transition:none}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px}}.fixed .control-sidebar{position:fixed;height:100%;overflow-y:auto;padding-bottom:50px}.nav-tabs.control-sidebar-tabs>li:first-of-type>a,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:hover,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:focus{border-left-width:0}.nav-tabs.control-sidebar-tabs>li>a{border-radius:0}.nav-tabs.control-sidebar-tabs>li>a,.nav-tabs.control-sidebar-tabs>li>a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent}.nav-tabs.control-sidebar-tabs>li>a .icon{font-size:16px}.nav-tabs.control-sidebar-tabs>li.active>a,.nav-tabs.control-sidebar-tabs>li.active>a:hover,.nav-tabs.control-sidebar-tabs>li.active>a:focus,.nav-tabs.control-sidebar-tabs>li.active>a:active{border-top:none;border-right:none;border-bottom:none}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table}.nav-tabs.control-sidebar-tabs>li{display:table-cell}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px}.control-sidebar-menu>li>a{display:block;padding:10px 15px}.control-sidebar-menu>li>a:before,.control-sidebar-menu>li>a:after{content:" ";display:table}.control-sidebar-menu>li>a:after{clear:both}.control-sidebar-menu>li>a>.control-sidebar-subheading{margin-top:0}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px}.control-sidebar-menu .menu-info>.control-sidebar-subheading{margin:0}.control-sidebar-menu .menu-info>p{margin:0;font-size:11px}.control-sidebar-menu .progress{margin:0}.control-sidebar-dark{color:#b8c7ce}.control-sidebar-dark,.control-sidebar-dark+.control-sidebar-bg{background:#222d32}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a{background:#181f23;color:#b8c7ce}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:active{background:#1c2529}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover{color:#fff}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#222d32;color:#fff}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff}.control-sidebar-dark .control-sidebar-menu>li>a:hover{background:#1e282c}.control-sidebar-dark .control-sidebar-menu>li>a .menu-info>p{color:#b8c7ce}.control-sidebar-light{color:#5e5e5e}.control-sidebar-light,.control-sidebar-light+.control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a{background:#e8ecf4;color:#444}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:active{background:#eff1f7}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#f9fafc;color:#111}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111}.control-sidebar-light .control-sidebar-menu{margin-left:-14px}.control-sidebar-light .control-sidebar-menu>li>a:hover{background:#f4f4f5}.control-sidebar-light .control-sidebar-menu>li>a .menu-info>p{color:#5e5e5e}.dropdown-menu{box-shadow:none;border-color:#eee}.dropdown-menu>li>a{color:#777}.dropdown-menu>li>a>.glyphicon,.dropdown-menu>li>a>.fa,.dropdown-menu>li>a>.ion{margin-right:10px}.dropdown-menu>li>a:hover{background-color:#e1e3e9;color:#333}.dropdown-menu>.divider{background-color:#eee}.navbar-nav>.notifications-menu>.dropdown-menu,.navbar-nav>.messages-menu>.dropdown-menu,.navbar-nav>.tasks-menu>.dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%}.navbar-nav>.notifications-menu>.dropdown-menu>li,.navbar-nav>.messages-menu>.dropdown-menu>li,.navbar-nav>.tasks-menu>.dropdown-menu>li{position:relative}.navbar-nav>.notifications-menu>.dropdown-menu>li.header,.navbar-nav>.messages-menu>.dropdown-menu>li.header,.navbar-nav>.tasks-menu>.dropdown-menu>li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center}@media (max-width:991px){.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{background:#fff !important;color:#444 !important}}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a:hover{text-decoration:none;font-weight:normal}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu,.navbar-nav>.messages-menu>.dropdown-menu>li .menu,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a:hover{background:#f4f4f4;text-decoration:none}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.glyphicon,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.fa,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.ion{width:20px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a{margin:0;padding:10px 10px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>div>img{margin:auto 10px auto auto;width:40px;height:40px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4>small{color:#999999;font-size:10px;position:absolute;top:0;right:0}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>p{margin:0 0 0 45px;font-size:12px;color:#888888}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:before,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{content:" ";display:table}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{clear:both}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{padding:10px}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>.progress{padding:0;margin:0}.navbar-nav>.user-menu>.dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd}.navbar-nav>.user-menu>.dropdown-menu>.user-body:before,.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{content:" ";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-body a{color:#444 !important}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff !important;color:#444 !important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#f9f9f9;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:before,.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{content:" ";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#666666}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#f9f9f9}}.navbar-nav>.user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px}@media (max-width:767px){.navbar-nav>.user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px}}.open:not(.dropup)>.animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX .7s both;-o-animation:flipInX .7s both;animation:flipInX .7s both}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{transform:perspective(400px)}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 90deg);-webkit-transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -20deg);-webkit-transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{-webkit-transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:991px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de}.form-control:focus{border-color:#3c8dbc;box-shadow:none}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1}.form-control:not(select){-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group.has-success label{color:#00a65a}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#00a65a;box-shadow:none}.form-group.has-success .help-block{color:#00a65a}.form-group.has-warning label{color:#f39c12}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none}.form-group.has-warning .help-block{color:#f39c12}.form-group.has-error label{color:#dd4b39}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#dd4b39;box-shadow:none}.form-group.has-error .help-block{color:#dd4b39}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.icheck>label{padding-left:0}.form-control-feedback.fa{line-height:34px}.input-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fa{line-height:46px}.input-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fa{line-height:30px}.progress,.progress>.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress,.progress>.progress-bar,.progress .progress-bar,.progress>.progress-bar .progress-bar{border-radius:1px}.progress.sm,.progress-sm{height:10px}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px}.progress.xs,.progress-xs{height:7px}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px}.progress.xxs,.progress-xxs{height:3px}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px}.progress.vertical>.progress-bar{width:100%;position:absolute;bottom:0}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px}.progress-group .progress-text{font-weight:600}.progress-group .progress-number{float:right}.table tr>td .progress{margin:0}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-green,.progress-bar-success{background-color:#00a65a}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-aqua,.progress-bar-info{background-color:#00c0ef}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-red,.progress-bar-danger{background-color:#dd4b39}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.small-box>.inner{padding:10px}.small-box>.small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none}.small-box>.small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15)}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0}.small-box p{font-size:15px}.small-box p>small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{-webkit-transition:all .3s linear;-o-transition:all .3s linear;transition:all .3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15)}.small-box:hover{text-decoration:none;color:#f9f9f9}.small-box:hover .icon{font-size:95px}@media (max-width:767px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.box.box-primary{border-top-color:#3c8dbc}.box.box-info{border-top-color:#00c0ef}.box.box-danger{border-top-color:#dd4b39}.box.box-warning{border-top-color:#f39c12}.box.box-success{border-top-color:#00a65a}.box.box-default{border-top-color:#d2d6de}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none}.box .nav-stacked>li{border-bottom:1px solid #f4f4f4;margin:0}.box .nav-stacked>li:last-of-type{border-bottom:none}.box.height-control .box-body{max-height:300px;overflow:auto}.box .border-right{border-right:1px solid #f4f4f4}.box .border-left{border-left:1px solid #f4f4f4}.box.box-solid{border-top:0}.box.box-solid>.box-header .btn.btn-default{background:transparent}.box.box-solid>.box-header .btn:hover,.box.box-solid>.box-header a:hover{background:rgba(0,0,0,0.1)}.box.box-solid.box-default{border:1px solid #d2d6de}.box.box-solid.box-default>.box-header{color:#444;background:#d2d6de;background-color:#d2d6de}.box.box-solid.box-default>.box-header a,.box.box-solid.box-default>.box-header .btn{color:#444}.box.box-solid.box-primary{border:1px solid #3c8dbc}.box.box-solid.box-primary>.box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc}.box.box-solid.box-primary>.box-header a,.box.box-solid.box-primary>.box-header .btn{color:#fff}.box.box-solid.box-info{border:1px solid #00c0ef}.box.box-solid.box-info>.box-header{color:#fff;background:#00c0ef;background-color:#00c0ef}.box.box-solid.box-info>.box-header a,.box.box-solid.box-info>.box-header .btn{color:#fff}.box.box-solid.box-danger{border:1px solid #dd4b39}.box.box-solid.box-danger>.box-header{color:#fff;background:#dd4b39;background-color:#dd4b39}.box.box-solid.box-danger>.box-header a,.box.box-solid.box-danger>.box-header .btn{color:#fff}.box.box-solid.box-warning{border:1px solid #f39c12}.box.box-solid.box-warning>.box-header{color:#fff;background:#f39c12;background-color:#f39c12}.box.box-solid.box-warning>.box-header a,.box.box-solid.box-warning>.box-header .btn{color:#fff}.box.box-solid.box-success{border:1px solid #00a65a}.box.box-solid.box-success>.box-header{color:#fff;background:#00a65a;background-color:#00a65a}.box.box-solid.box-success>.box-header a,.box.box-solid.box-success>.box-header .btn{color:#fff}.box.box-solid>.box-header>.box-tools .btn{border:0;box-shadow:none}.box.box-solid[class*='bg']>.box-header{color:#fff}.box .box-group>.box{margin-bottom:5px}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:.3em}.box>.overlay,.overlay-wrapper>.overlay,.box>.loading-img,.overlay-wrapper>.loading-img{position:absolute;top:0;left:0;width:100%;height:100%}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px}.box .overlay>.fa,.overlay-wrapper .overlay>.fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5)}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table}.box-header:after,.box-body:after,.box-footer:after{clear:both}.box-header{color:#444;display:block;padding:10px;position:relative}.box-header.with-border{border-bottom:1px solid #f4f4f4}.collapsed-box .box-header.with-border{border-bottom:none}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion{margin-right:5px}.box-header>.box-tools{float:right;margin-top:-5px;margin-bottom:-5px}.box-header>.box-tools [data-toggle="tooltip"]{position:relative}.box-header>.box-tools.pull-right .dropdown-menu{right:0;left:auto}.box-header>.box-tools .dropdown-menu>li>a{color:#444 !important}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84}.btn-box-tool.btn:active{box-shadow:none}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px}.box-body>.table{margin-bottom:0}.box-body .fc{margin-top:5px}.box-body .full-width-chart{margin:-19px}.box-body.no-padding .full-width-chart{margin:-9px}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff}.chart-legend{margin:10px 0}@media (max-width:991px){.chart-legend>li{float:left;margin-right:10px}}.box-comments{background:#f7f7f7}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table}.box-comments .box-comment:after{clear:both}.box-comments .box-comment:last-of-type{border-bottom:0}.box-comments .box-comment:first-of-type{padding-top:0}.box-comments .box-comment img{float:left}.box-comments .comment-text{margin-left:40px;color:#555}.box-comments .username{color:#444;display:block;font-weight:600}.box-comments .text-muted{font-weight:400;font-size:12px}.todo-list{margin:0;padding:0;list-style:none;overflow:auto}.todo-list>li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type='checkbox']{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;margin-left:5px;font-weight:600}.todo-list>li .label{margin-left:10px;font-size:9px}.todo-list>li .tools{display:none;float:right;color:#dd4b39}.todo-list>li .tools>.fa,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{margin-right:5px;cursor:pointer}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#999}.todo-list>li.done .text{text-decoration:line-through;font-weight:500}.todo-list>li.done .label{background:#d2d6de !important}.todo-list .danger{border-left-color:#dd4b39}.todo-list .warning{border-left-color:#f39c12}.todo-list .info{border-left-color:#00c0ef}.todo-list .success{border-left-color:#00a65a}.todo-list .primary{border-left-color:#3c8dbc}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px}.chat{padding:5px 20px 5px 10px}.chat .item{margin-bottom:10px}.chat .item:before,.chat .item:after{content:" ";display:table}.chat .item:after{clear:both}.chat .item>img{width:40px;height:40px;border:2px solid transparent;border-radius:50%}.chat .item>.online{border:2px solid #00a65a}.chat .item>.offline{border:2px solid #dd4b39}.chat .item>.message{margin-left:55px;margin-top:-40px}.chat .item>.message>.name{display:block;font-weight:600}.chat .item>.attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px}.chat .item>.attachment>h4{margin:0 0 5px 0;font-weight:600;font-size:14px}.chat .item>.attachment>p,.chat .item>.attachment>.filename{font-weight:600;font-size:13px;font-style:italic;margin:0}.chat .item>.attachment:before,.chat .item>.attachment:after{content:" ";display:table}.chat .item>.attachment:after{clear:both}.box-input{max-width:200px}.modal .panel-body{color:#444}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px}.info-box small{font-size:14px}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px}.info-box .progress,.info-box .progress .progress-bar{border-radius:0}.info-box .progress .progress-bar{background:#fff}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2)}.info-box-icon>img{max-width:100%}.info-box-content{padding:5px 10px;margin-left:90px}.info-box-number{display:block;font-weight:bold;font-size:18px}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.info-box-text{text-transform:uppercase}.info-box-more{display:block}.progress-description{margin:0}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px}.timeline>li{position:relative;margin-right:10px;margin-bottom:15px}.timeline>li:before,.timeline>li:after{content:" ";display:table}.timeline>li:after{clear:both}.timeline>li>.timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative}.timeline>li>.timeline-item>.time{color:#999;float:right;padding:10px;font-size:12px}.timeline>li>.timeline-item>.timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1}.timeline>li>.timeline-item>.timeline-header>a{font-weight:600}.timeline>li>.timeline-item>.timeline-body,.timeline>li>.timeline-item>.timeline-footer{padding:10px}.timeline>li>.fa,.timeline>li>.glyphicon,.timeline>li>.ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0}.timeline>.time-label>span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px}.timeline-inverse>li>.timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none}.timeline-inverse>li>.timeline-item>.timeline-header{border-bottom-color:#ddd}.btn{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent}.btn.uppercase{text-transform:uppercase}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:focus{outline:none}.btn.btn-file{position:relative;overflow:hidden}.btn.btn-file>input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7}.btn-primary{background-color:#3c8dbc;border-color:#367fa9}.btn-primary:hover,.btn-primary:active,.btn-primary.hover{background-color:#367fa9}.btn-success{background-color:#00a65a;border-color:#008d4c}.btn-success:hover,.btn-success:active,.btn-success.hover{background-color:#008d4c}.btn-info{background-color:#00c0ef;border-color:#00acd6}.btn-info:hover,.btn-info:active,.btn-info.hover{background-color:#00acd6}.btn-danger{background-color:#dd4b39;border-color:#d73925}.btn-danger:hover,.btn-danger:active,.btn-danger.hover{background-color:#d73925}.btn-warning{background-color:#f39c12;border-color:#e08e0b}.btn-warning:hover,.btn-warning:active,.btn-warning.hover{background-color:#e08e0b}.btn-outline{border:1px solid #fff;background:transparent;color:#fff}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7)}.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2)}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px}.btn-app>.fa,.btn-app>.glyphicon,.btn-app>.ion{font-size:20px;display:block}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-app>.badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee}.callout a{color:#fff;text-decoration:underline}.callout a:hover{color:#eee}.callout h4{margin-top:0;font-weight:600}.callout p:last-child{margin-bottom:0}.callout code,.callout .highlight{background-color:#fff}.callout.callout-danger{border-color:#c23321}.callout.callout-warning{border-color:#c87f0a}.callout.callout-info{border-color:#0097bc}.callout.callout-success{border-color:#00733e}.alert{border-radius:3px}.alert h4{font-weight:600}.alert .icon{margin-right:10px}.alert .close{color:#000;opacity:.2;filter:alpha(opacity=20)}.alert .close:hover{opacity:.5;filter:alpha(opacity=50)}.alert a{color:#fff;text-decoration:underline}.alert-success{border-color:#008d4c}.alert-danger,.alert-error{border-color:#d73925}.alert-warning{border-color:#e08e0b}.alert-info{border-color:#00acd6}.nav>li>a:hover,.nav>li>a:active,.nav>li>a:focus{color:#444;background:#f7f7f7}.nav-pills>li>a{border-radius:0;border-top:3px solid transparent;color:#444}.nav-pills>li>a>.fa,.nav-pills>li>a>.glyphicon,.nav-pills>li>a>.ion{margin-right:5px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{border-top-color:#3c8dbc}.nav-pills>li.active>a{font-weight:600}.nav-stacked>li>a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444}.nav-stacked>li.active>a,.nav-stacked>li.active>a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc}.nav-stacked>li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px}.nav-tabs-custom>.nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px}.nav-tabs-custom>.nav-tabs>li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px}.nav-tabs-custom>.nav-tabs>li.disabled>a{color:#777}.nav-tabs-custom>.nav-tabs>li>a{color:#444;border-radius:0}.nav-tabs-custom>.nav-tabs>li>a.text-muted{color:#999}.nav-tabs-custom>.nav-tabs>li>a,.nav-tabs-custom>.nav-tabs>li>a:hover{background:transparent;margin:0}.nav-tabs-custom>.nav-tabs>li>a:hover{color:#999}.nav-tabs-custom>.nav-tabs>li:not(.active)>a:hover,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:focus,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:active{border-color:transparent}.nav-tabs-custom>.nav-tabs>li.active{border-top-color:#3c8dbc}.nav-tabs-custom>.nav-tabs>li.active>a,.nav-tabs-custom>.nav-tabs>li.active:hover>a{background-color:#fff;color:#444}.nav-tabs-custom>.nav-tabs>li.active>a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4}.nav-tabs-custom>.nav-tabs>li:first-of-type{margin-left:0}.nav-tabs-custom>.nav-tabs>li:first-of-type.active>a{border-left-color:transparent}.nav-tabs-custom>.nav-tabs.pull-right{float:none !important}.nav-tabs-custom>.nav-tabs.pull-right>li{float:right}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type{margin-right:0}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type>a{border-left-width:1px}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a{border-left-color:#f4f4f4;border-right-color:transparent}.nav-tabs-custom>.nav-tabs>li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444}.nav-tabs-custom>.nav-tabs>li.header>.fa,.nav-tabs-custom>.nav-tabs>li.header>.glyphicon,.nav-tabs-custom>.nav-tabs>li.header>.ion{margin-right:5px}.nav-tabs-custom>.tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.nav-tabs-custom .dropdown.open>a:active,.nav-tabs-custom .dropdown.open>a:focus{background:transparent;color:#999}.nav-tabs-custom.tab-primary>.nav-tabs>li.active{border-top-color:#3c8dbc}.nav-tabs-custom.tab-info>.nav-tabs>li.active{border-top-color:#00c0ef}.nav-tabs-custom.tab-danger>.nav-tabs>li.active{border-top-color:#dd4b39}.nav-tabs-custom.tab-warning>.nav-tabs>li.active{border-top-color:#f39c12}.nav-tabs-custom.tab-success>.nav-tabs>li.active{border-top-color:#00a65a}.nav-tabs-custom.tab-default>.nav-tabs>li.active{border-top-color:#d2d6de}.pagination>li>a{background:#fafafa;color:#666}.pagination.pagination-flat>li>a{border-radius:0 !important}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff}.products-list>.item:before,.products-list>.item:after{content:" ";display:table}.products-list>.item:after{clear:both}.products-list .product-img{float:left}.products-list .product-img img{width:50px;height:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.product-list-in-box>.item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4}.product-list-in-box>.item:last-of-type{border-bottom-width:0}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #f4f4f4}.table>thead>tr>th{border-bottom:2px solid #f4f4f4}.table tr td .progress{margin-top:5px}.table-bordered{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table.no-border,.table.no-border td,.table.no-border th{border:0}table.text-center,table.text-center td,table.text-center th{text-align:center}.table.align th{text-align:left}.table.align td{text-align:right}.label-default{background-color:#d2d6de;color:#444}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-messages{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);padding:10px;height:250px;overflow:auto}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table}.direct-chat-msg:after{clear:both}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform .5s ease-in-out;-moz-transition:-moz-transform .5s ease-in-out;-o-transition:-o-transform .5s ease-in-out;transition:transform .5s ease-in-out}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-right:50px;margin-left:0}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px}.right .direct-chat-img{float:right}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#999}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-contacts{-webkit-transform:translate(101%, 0);-ms-transform:translate(101%, 0);-o-transform:translate(101%, 0);transform:translate(101%, 0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto}.contacts-list>li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0}.contacts-list>li:before,.contacts-list>li:after{content:" ";display:table}.contacts-list>li:after{clear:both}.contacts-list>li:last-of-type{border-bottom:none}.contacts-list-img{border-radius:50%;width:40px;float:left}.contacts-list-info{margin-left:45px;color:#fff}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:12px}.contacts-list-date{color:#aaa;font-weight:normal}.contacts-list-msg{color:#999}.direct-chat-danger .right>.direct-chat-text{background:#dd4b39;border-color:#dd4b39;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#dd4b39}.direct-chat-primary .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-warning .right>.direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#f39c12}.direct-chat-info .right>.direct-chat-text{background:#00c0ef;border-color:#00c0ef;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#00c0ef}.direct-chat-success .right>.direct-chat-text{background:#00a65a;border-color:#00a65a;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#00a65a}.users-list>li{width:25%;float:left;padding:10px;text-align:center}.users-list>li img{border-radius:50%;max-width:100%;height:auto}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-name,.users-list-date{display:block}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.users-list-date{color:#999;font-size:12px}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px}.modal{background:rgba(0,0,0,0.3)}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125)}}.modal-header{border-bottom-color:#f4f4f4}.modal-footer{border-top-color:#f4f4f4}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a}.modal-info .modal-header,.modal-info .modal-footer{border-color:#0097bc}.modal-success .modal-header,.modal-success .modal-footer{border-color:#00733e}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#c23321}.box-widget{border:none;position:relative}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2)}.widget-user .widget-user-desc{margin-top:0}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px}.widget-user .widget-user-image>img{width:90px;height:auto;border:3px solid #fff}.widget-user .box-footer{padding-top:30px}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300}.widget-user-2 .widget-user-desc{margin-top:0}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px}.widget-user-2 .widget-user-image>img{width:65px;height:auto;float:left}.treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px}.treeview-menu .treeview-menu{padding-left:20px}.treeview-menu>li{margin:0}.treeview-menu>li>a{padding:5px 5px 5px 15px;display:block;font-size:14px}.treeview-menu>li>a>.fa,.treeview-menu>li>a>.glyphicon,.treeview-menu>li>a>.ion{width:20px}.treeview-menu>li>a>.pull-right-container>.fa-angle-left,.treeview-menu>li>a>.pull-right-container>.fa-angle-down,.treeview-menu>li>a>.fa-angle-left,.treeview-menu>li>a>.fa-angle-down{width:auto}.treeview>ul.treeview-menu{overflow:hidden;height:auto;padding-top:0px !important;padding-bottom:0px !important}.treeview.menu-open>ul.treeview-menu{overflow:visible;height:auto}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px}.mailbox-attachment-name{font-weight:bold;color:#666}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{padding:10px;background:#f4f4f4}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{max-width:100%;height:auto}.lockscreen{background:#d2d6de}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.lockscreen-logo a{color:#444}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%}.lockscreen .lockscreen-name{text-align:center;font-weight:600}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10}.lockscreen-image>img{border-radius:50%;width:70px;height:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.login-logo a,.register-logo a{color:#444}.login-page,.register-page{height:auto;background:#d2d6de}.login-box,.register-box{width:360px;margin:7% auto}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px}.social-auth-links{margin:10px 0}.error-page{width:600px;margin:20px auto 0 auto}@media (max-width:991px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:991px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{margin-left:190px;display:block}@media (max-width:991px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-weight:300;font-size:25px}@media (max-width:991px){.error-page>.error-content>h3{text-align:center}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px}.invoice-title{margin-top:0}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de}.profile-username{font-size:21px;margin-top:5px}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.post .user-block{margin-bottom:15px}.pad{padding:10px}.margin{margin:10px}.margin-bottom{margin-bottom:20px}.margin-bottom-none{margin-bottom:0}.margin-r-5{margin-right:5px}.inline{display:inline}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{margin:0;padding:0;font-weight:600;font-size:16px}.description-block>.description-text{text-transform:uppercase}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.label-danger,.label-info,.label-warning,.label-primary,.label-success,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important}.bg-gray{color:#000;background-color:#d2d6de !important}.bg-gray-light{background-color:#f7f7f7}.bg-black{background-color:#111 !important}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.label-danger,.modal-danger .modal-body{background-color:#dd4b39 !important}.bg-yellow,.callout.callout-warning,.alert-warning,.label-warning,.modal-warning .modal-body{background-color:#f39c12 !important}.bg-aqua,.callout.callout-info,.alert-info,.label-info,.modal-info .modal-body{background-color:#00c0ef !important}.bg-blue{background-color:#0073b7 !important}.bg-light-blue,.label-primary,.modal-primary .modal-body{background-color:#3c8dbc !important}.bg-green,.callout.callout-success,.alert-success,.label-success,.modal-success .modal-body{background-color:#00a65a !important}.bg-navy{background-color:#001F3F !important}.bg-teal{background-color:#39CCCC !important}.bg-olive{background-color:#3D9970 !important}.bg-lime{background-color:#01FF70 !important}.bg-orange{background-color:#FF851B !important}.bg-fuchsia{background-color:#F012BE !important}.bg-purple{background-color:#605ca8 !important}.bg-maroon{background-color:#D81B60 !important}.bg-gray-active{color:#000;background-color:#b5bbc8 !important}.bg-black-active{background-color:#000 !important}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#d33724 !important}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#00a7d0 !important}.bg-blue-active{background-color:#005384 !important}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#008d4c !important}.bg-navy-active{background-color:#001a35 !important}.bg-teal-active{background-color:#30bbbb !important}.bg-olive-active{background-color:#368763 !important}.bg-lime-active{background-color:#00e765 !important}.bg-orange-active{background-color:#ff7701 !important}.bg-fuchsia-active{background-color:#db0ead !important}.bg-purple-active{background-color:#555299 !important}.bg-maroon-active{background-color:#ca195a !important}[class^="bg-"].disabled{opacity:.65;filter:alpha(opacity=65)}.text-red{color:#dd4b39 !important}.text-yellow{color:#f39c12 !important}.text-aqua{color:#00c0ef !important}.text-blue{color:#0073b7 !important}.text-black{color:#111 !important}.text-light-blue{color:#3c8dbc !important}.text-green{color:#00a65a !important}.text-gray{color:#d2d6de !important}.text-navy{color:#001F3F !important}.text-teal{color:#39CCCC !important}.text-olive{color:#3D9970 !important}.text-lime{color:#01FF70 !important}.text-orange{color:#FF851B !important}.text-fuchsia{color:#F012BE !important}.text-purple{color:#605ca8 !important}.text-maroon{color:#D81B60 !important}.link-muted{color:#7a869d}.link-muted:hover,.link-muted:focus{color:#606c84}.link-black{color:#666}.link-black:hover,.link-black:focus{color:#999}.hide{display:none !important}.no-border{border:0 !important}.no-padding{padding:0 !important}.no-margin{margin:0 !important}.no-shadow{box-shadow:none !important}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0}.list-group-unbordered>.list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0}.flat{border-radius:0 !important}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.text-sm{font-size:12px}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important}.bg-teal-gradient{background:#39CCCC !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #39CCCC), color-stop(1, #7adddd)) !important;background:-ms-linear-gradient(bottom, #39CCCC, #7adddd) !important;background:-moz-linear-gradient(center bottom, #39CCCC 0%, #7adddd 100%) !important;background:-o-linear-gradient(#7adddd, #39CCCC) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39CCCC', GradientType=0) !important;color:#fff}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;background:-ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important;background:-moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce, #3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;color:#fff}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;background:-ms-linear-gradient(bottom, #0073b7, #0089db) !important;background:-moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important;background:-o-linear-gradient(#0089db, #0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;color:#fff}.bg-aqua-gradient{background:#00c0ef !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;background:-ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important;background:-moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important;background:-o-linear-gradient(#14d1ff, #00c0ef) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;color:#fff}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;background:-ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;background:-moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60, #f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;color:#fff}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;background:-ms-linear-gradient(bottom, #605ca8, #9491c4) !important;background:-moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important;background:-o-linear-gradient(#9491c4, #605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;color:#fff}.bg-green-gradient{background:#00a65a !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;background:-ms-linear-gradient(bottom, #00a65a, #00ca6d) !important;background:-moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important;background:-o-linear-gradient(#00ca6d, #00a65a) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;color:#fff}.bg-red-gradient{background:#dd4b39 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;background:-ms-linear-gradient(bottom, #dd4b39, #e47365) !important;background:-moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important;background:-o-linear-gradient(#e47365, #dd4b39) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;color:#fff}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important;background:-ms-linear-gradient(bottom, #111, #2b2b2b) !important;background:-moz-linear-gradient(center bottom, #111 0%, #2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b, #111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111', GradientType=0) !important;color:#fff}.bg-maroon-gradient{background:#D81B60 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #D81B60), color-stop(1, #e73f7c)) !important;background:-ms-linear-gradient(bottom, #D81B60, #e73f7c) !important;background:-moz-linear-gradient(center bottom, #D81B60 0%, #e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c, #D81B60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#D81B60', GradientType=0) !important;color:#fff}.description-block .description-icon{font-size:16px}.no-pad-top{padding-top:0}.position-static{position:static !important}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0}.list-link>a{padding:4px;color:#777}.list-link>a:hover{color:#222}.font-light{font-weight:300}.user-block:before,.user-block:after{content:" ";display:table}.user-block:after{clear:both}.user-block img{width:40px;height:40px;float:left}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px}.user-block .username{font-size:16px;font-weight:600}.user-block .description{color:#999;font-size:13px}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px}.user-block.user-block-sm .username{font-size:14px}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important}.img-sm+.img-push{margin-left:40px}.img-md{width:60px;height:60px}.img-md+.img-push{margin-left:70px}.img-lg{width:100px;height:100px}.img-lg+.img-push{margin-left:110px}.img-bordered{border:3px solid #d2d6de;padding:3px}.img-bordered-sm{border:2px solid #d2d6de;padding:2px}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left}.attachment-block .attachment-pushed{margin-left:110px}.attachment-block .attachment-heading{margin:0}.attachment-block .attachment-text{color:#555}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px}.full-opacity-hover{opacity:.65;filter:alpha(opacity=65)}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100)}.chart{position:relative;overflow:hidden;width:100%}.chart svg,.chart canvas{width:100% !important}hr{border-top:1px solid #555}#red .slider-selection{background:#f56954}#blue .slider-selection{background:#3c8dbc}#green .slider-selection{background:#00a65a}#yellow .slider-selection{background:#f39c12}#aqua .slider-selection{background:#00c0ef}#purple .slider-selection{background:#932ab6}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0, 0) !important;-ms-transform:translate(0, 0) !important;-o-transform:translate(0, 0) !important;transform:translate(0, 0) !important}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important}.invoice{width:100%;border:0;margin:0;padding:0}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr th,.table-responsive>.table tr td{white-space:normal !important}} AdminLTE/css/alt/AdminLTE-select2.min.css 0000644 00000005254 15002261751 0013746 0 ustar 00 .select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px}.select2-container--default.select2-container--open{border-color:#3c8dbc}.select2-dropdown{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default .select2-search--dropdown .select2-search__field{border-color:#3c8dbc !important}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px} AdminLTE/css/alt/AdminLTE-bootstrap-social.css 0000644 00000072701 15002261751 0015111 0 ustar 00 /* * Social Buttons for Bootstrap * * Copyright 2013-2015 Panayiotis Lipiridis * Licensed under the MIT License * * https://github.com/lipis/bootstrap-social */ .btn-social { position: relative; padding-left: 44px; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .btn-social > :first-child { position: absolute; left: 0; top: 0; bottom: 0; width: 32px; line-height: 34px; font-size: 1.6em; text-align: center; border-right: 1px solid rgba(0, 0, 0, 0.2); } .btn-social.btn-lg { padding-left: 61px; } .btn-social.btn-lg > :first-child { line-height: 45px; width: 45px; font-size: 1.8em; } .btn-social.btn-sm { padding-left: 38px; } .btn-social.btn-sm > :first-child { line-height: 28px; width: 28px; font-size: 1.4em; } .btn-social.btn-xs { padding-left: 30px; } .btn-social.btn-xs > :first-child { line-height: 20px; width: 20px; font-size: 1.2em; } .btn-social-icon { position: relative; padding-left: 44px; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; height: 34px; width: 34px; padding: 0; } .btn-social-icon > :first-child { position: absolute; left: 0; top: 0; bottom: 0; width: 32px; line-height: 34px; font-size: 1.6em; text-align: center; border-right: 1px solid rgba(0, 0, 0, 0.2); } .btn-social-icon.btn-lg { padding-left: 61px; } .btn-social-icon.btn-lg > :first-child { line-height: 45px; width: 45px; font-size: 1.8em; } .btn-social-icon.btn-sm { padding-left: 38px; } .btn-social-icon.btn-sm > :first-child { line-height: 28px; width: 28px; font-size: 1.4em; } .btn-social-icon.btn-xs { padding-left: 30px; } .btn-social-icon.btn-xs > :first-child { line-height: 20px; width: 20px; font-size: 1.2em; } .btn-social-icon > :first-child { border: none; text-align: center; width: 100%; } .btn-social-icon.btn-lg { height: 45px; width: 45px; padding-left: 0; padding-right: 0; } .btn-social-icon.btn-sm { height: 30px; width: 30px; padding-left: 0; padding-right: 0; } .btn-social-icon.btn-xs { height: 22px; width: 22px; padding-left: 0; padding-right: 0; } .btn-adn { color: #fff; background-color: #d87a68; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:focus, .btn-adn.focus { color: #fff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:hover { color: #fff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:active, .btn-adn.active, .open > .dropdown-toggle.btn-adn { color: #fff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:active:hover, .btn-adn.active:hover, .open > .dropdown-toggle.btn-adn:hover, .btn-adn:active:focus, .btn-adn.active:focus, .open > .dropdown-toggle.btn-adn:focus, .btn-adn:active.focus, .btn-adn.active.focus, .open > .dropdown-toggle.btn-adn.focus { color: #fff; background-color: #b94630; border-color: rgba(0, 0, 0, 0.2); } .btn-adn:active, .btn-adn.active, .open > .dropdown-toggle.btn-adn { background-image: none; } .btn-adn.disabled:hover, .btn-adn[disabled]:hover, fieldset[disabled] .btn-adn:hover, .btn-adn.disabled:focus, .btn-adn[disabled]:focus, fieldset[disabled] .btn-adn:focus, .btn-adn.disabled.focus, .btn-adn[disabled].focus, fieldset[disabled] .btn-adn.focus { background-color: #d87a68; border-color: rgba(0, 0, 0, 0.2); } .btn-adn .badge { color: #d87a68; background-color: #fff; } .btn-bitbucket { color: #fff; background-color: #205081; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:focus, .btn-bitbucket.focus { color: #fff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:hover { color: #fff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:active, .btn-bitbucket.active, .open > .dropdown-toggle.btn-bitbucket { color: #fff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:active:hover, .btn-bitbucket.active:hover, .open > .dropdown-toggle.btn-bitbucket:hover, .btn-bitbucket:active:focus, .btn-bitbucket.active:focus, .open > .dropdown-toggle.btn-bitbucket:focus, .btn-bitbucket:active.focus, .btn-bitbucket.active.focus, .open > .dropdown-toggle.btn-bitbucket.focus { color: #fff; background-color: #0f253c; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket:active, .btn-bitbucket.active, .open > .dropdown-toggle.btn-bitbucket { background-image: none; } .btn-bitbucket.disabled:hover, .btn-bitbucket[disabled]:hover, fieldset[disabled] .btn-bitbucket:hover, .btn-bitbucket.disabled:focus, .btn-bitbucket[disabled]:focus, fieldset[disabled] .btn-bitbucket:focus, .btn-bitbucket.disabled.focus, .btn-bitbucket[disabled].focus, fieldset[disabled] .btn-bitbucket.focus { background-color: #205081; border-color: rgba(0, 0, 0, 0.2); } .btn-bitbucket .badge { color: #205081; background-color: #fff; } .btn-dropbox { color: #fff; background-color: #1087dd; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:focus, .btn-dropbox.focus { color: #fff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:hover { color: #fff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:active, .btn-dropbox.active, .open > .dropdown-toggle.btn-dropbox { color: #fff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:active:hover, .btn-dropbox.active:hover, .open > .dropdown-toggle.btn-dropbox:hover, .btn-dropbox:active:focus, .btn-dropbox.active:focus, .open > .dropdown-toggle.btn-dropbox:focus, .btn-dropbox:active.focus, .btn-dropbox.active.focus, .open > .dropdown-toggle.btn-dropbox.focus { color: #fff; background-color: #0a568c; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox:active, .btn-dropbox.active, .open > .dropdown-toggle.btn-dropbox { background-image: none; } .btn-dropbox.disabled:hover, .btn-dropbox[disabled]:hover, fieldset[disabled] .btn-dropbox:hover, .btn-dropbox.disabled:focus, .btn-dropbox[disabled]:focus, fieldset[disabled] .btn-dropbox:focus, .btn-dropbox.disabled.focus, .btn-dropbox[disabled].focus, fieldset[disabled] .btn-dropbox.focus { background-color: #1087dd; border-color: rgba(0, 0, 0, 0.2); } .btn-dropbox .badge { color: #1087dd; background-color: #fff; } .btn-facebook { color: #fff; background-color: #3b5998; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:focus, .btn-facebook.focus { color: #fff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:hover { color: #fff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:active, .btn-facebook.active, .open > .dropdown-toggle.btn-facebook { color: #fff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:active:hover, .btn-facebook.active:hover, .open > .dropdown-toggle.btn-facebook:hover, .btn-facebook:active:focus, .btn-facebook.active:focus, .open > .dropdown-toggle.btn-facebook:focus, .btn-facebook:active.focus, .btn-facebook.active.focus, .open > .dropdown-toggle.btn-facebook.focus { color: #fff; background-color: #23345a; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook:active, .btn-facebook.active, .open > .dropdown-toggle.btn-facebook { background-image: none; } .btn-facebook.disabled:hover, .btn-facebook[disabled]:hover, fieldset[disabled] .btn-facebook:hover, .btn-facebook.disabled:focus, .btn-facebook[disabled]:focus, fieldset[disabled] .btn-facebook:focus, .btn-facebook.disabled.focus, .btn-facebook[disabled].focus, fieldset[disabled] .btn-facebook.focus { background-color: #3b5998; border-color: rgba(0, 0, 0, 0.2); } .btn-facebook .badge { color: #3b5998; background-color: #fff; } .btn-flickr { color: #fff; background-color: #ff0084; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:focus, .btn-flickr.focus { color: #fff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:hover { color: #fff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:active, .btn-flickr.active, .open > .dropdown-toggle.btn-flickr { color: #fff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:active:hover, .btn-flickr.active:hover, .open > .dropdown-toggle.btn-flickr:hover, .btn-flickr:active:focus, .btn-flickr.active:focus, .open > .dropdown-toggle.btn-flickr:focus, .btn-flickr:active.focus, .btn-flickr.active.focus, .open > .dropdown-toggle.btn-flickr.focus { color: #fff; background-color: #a80057; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr:active, .btn-flickr.active, .open > .dropdown-toggle.btn-flickr { background-image: none; } .btn-flickr.disabled:hover, .btn-flickr[disabled]:hover, fieldset[disabled] .btn-flickr:hover, .btn-flickr.disabled:focus, .btn-flickr[disabled]:focus, fieldset[disabled] .btn-flickr:focus, .btn-flickr.disabled.focus, .btn-flickr[disabled].focus, fieldset[disabled] .btn-flickr.focus { background-color: #ff0084; border-color: rgba(0, 0, 0, 0.2); } .btn-flickr .badge { color: #ff0084; background-color: #fff; } .btn-foursquare { color: #fff; background-color: #f94877; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:focus, .btn-foursquare.focus { color: #fff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:hover { color: #fff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:active, .btn-foursquare.active, .open > .dropdown-toggle.btn-foursquare { color: #fff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:active:hover, .btn-foursquare.active:hover, .open > .dropdown-toggle.btn-foursquare:hover, .btn-foursquare:active:focus, .btn-foursquare.active:focus, .open > .dropdown-toggle.btn-foursquare:focus, .btn-foursquare:active.focus, .btn-foursquare.active.focus, .open > .dropdown-toggle.btn-foursquare.focus { color: #fff; background-color: #e30742; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare:active, .btn-foursquare.active, .open > .dropdown-toggle.btn-foursquare { background-image: none; } .btn-foursquare.disabled:hover, .btn-foursquare[disabled]:hover, fieldset[disabled] .btn-foursquare:hover, .btn-foursquare.disabled:focus, .btn-foursquare[disabled]:focus, fieldset[disabled] .btn-foursquare:focus, .btn-foursquare.disabled.focus, .btn-foursquare[disabled].focus, fieldset[disabled] .btn-foursquare.focus { background-color: #f94877; border-color: rgba(0, 0, 0, 0.2); } .btn-foursquare .badge { color: #f94877; background-color: #fff; } .btn-github { color: #fff; background-color: #444444; border-color: rgba(0, 0, 0, 0.2); } .btn-github:focus, .btn-github.focus { color: #fff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } .btn-github:hover { color: #fff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } .btn-github:active, .btn-github.active, .open > .dropdown-toggle.btn-github { color: #fff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } .btn-github:active:hover, .btn-github.active:hover, .open > .dropdown-toggle.btn-github:hover, .btn-github:active:focus, .btn-github.active:focus, .open > .dropdown-toggle.btn-github:focus, .btn-github:active.focus, .btn-github.active.focus, .open > .dropdown-toggle.btn-github.focus { color: #fff; background-color: #191919; border-color: rgba(0, 0, 0, 0.2); } .btn-github:active, .btn-github.active, .open > .dropdown-toggle.btn-github { background-image: none; } .btn-github.disabled:hover, .btn-github[disabled]:hover, fieldset[disabled] .btn-github:hover, .btn-github.disabled:focus, .btn-github[disabled]:focus, fieldset[disabled] .btn-github:focus, .btn-github.disabled.focus, .btn-github[disabled].focus, fieldset[disabled] .btn-github.focus { background-color: #444444; border-color: rgba(0, 0, 0, 0.2); } .btn-github .badge { color: #444444; background-color: #fff; } .btn-google { color: #fff; background-color: #dd4b39; border-color: rgba(0, 0, 0, 0.2); } .btn-google:focus, .btn-google.focus { color: #fff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } .btn-google:hover { color: #fff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } .btn-google:active, .btn-google.active, .open > .dropdown-toggle.btn-google { color: #fff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } .btn-google:active:hover, .btn-google.active:hover, .open > .dropdown-toggle.btn-google:hover, .btn-google:active:focus, .btn-google.active:focus, .open > .dropdown-toggle.btn-google:focus, .btn-google:active.focus, .btn-google.active.focus, .open > .dropdown-toggle.btn-google.focus { color: #fff; background-color: #a32b1c; border-color: rgba(0, 0, 0, 0.2); } .btn-google:active, .btn-google.active, .open > .dropdown-toggle.btn-google { background-image: none; } .btn-google.disabled:hover, .btn-google[disabled]:hover, fieldset[disabled] .btn-google:hover, .btn-google.disabled:focus, .btn-google[disabled]:focus, fieldset[disabled] .btn-google:focus, .btn-google.disabled.focus, .btn-google[disabled].focus, fieldset[disabled] .btn-google.focus { background-color: #dd4b39; border-color: rgba(0, 0, 0, 0.2); } .btn-google .badge { color: #dd4b39; background-color: #fff; } .btn-instagram { color: #fff; background-color: #3f729b; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:focus, .btn-instagram.focus { color: #fff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:hover { color: #fff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:active, .btn-instagram.active, .open > .dropdown-toggle.btn-instagram { color: #fff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:active:hover, .btn-instagram.active:hover, .open > .dropdown-toggle.btn-instagram:hover, .btn-instagram:active:focus, .btn-instagram.active:focus, .open > .dropdown-toggle.btn-instagram:focus, .btn-instagram:active.focus, .btn-instagram.active.focus, .open > .dropdown-toggle.btn-instagram.focus { color: #fff; background-color: #26455d; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram:active, .btn-instagram.active, .open > .dropdown-toggle.btn-instagram { background-image: none; } .btn-instagram.disabled:hover, .btn-instagram[disabled]:hover, fieldset[disabled] .btn-instagram:hover, .btn-instagram.disabled:focus, .btn-instagram[disabled]:focus, fieldset[disabled] .btn-instagram:focus, .btn-instagram.disabled.focus, .btn-instagram[disabled].focus, fieldset[disabled] .btn-instagram.focus { background-color: #3f729b; border-color: rgba(0, 0, 0, 0.2); } .btn-instagram .badge { color: #3f729b; background-color: #fff; } .btn-linkedin { color: #fff; background-color: #007bb6; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:focus, .btn-linkedin.focus { color: #fff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:hover { color: #fff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:active, .btn-linkedin.active, .open > .dropdown-toggle.btn-linkedin { color: #fff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:active:hover, .btn-linkedin.active:hover, .open > .dropdown-toggle.btn-linkedin:hover, .btn-linkedin:active:focus, .btn-linkedin.active:focus, .open > .dropdown-toggle.btn-linkedin:focus, .btn-linkedin:active.focus, .btn-linkedin.active.focus, .open > .dropdown-toggle.btn-linkedin.focus { color: #fff; background-color: #00405f; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin:active, .btn-linkedin.active, .open > .dropdown-toggle.btn-linkedin { background-image: none; } .btn-linkedin.disabled:hover, .btn-linkedin[disabled]:hover, fieldset[disabled] .btn-linkedin:hover, .btn-linkedin.disabled:focus, .btn-linkedin[disabled]:focus, fieldset[disabled] .btn-linkedin:focus, .btn-linkedin.disabled.focus, .btn-linkedin[disabled].focus, fieldset[disabled] .btn-linkedin.focus { background-color: #007bb6; border-color: rgba(0, 0, 0, 0.2); } .btn-linkedin .badge { color: #007bb6; background-color: #fff; } .btn-microsoft { color: #fff; background-color: #2672ec; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:focus, .btn-microsoft.focus { color: #fff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:hover { color: #fff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:active, .btn-microsoft.active, .open > .dropdown-toggle.btn-microsoft { color: #fff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:active:hover, .btn-microsoft.active:hover, .open > .dropdown-toggle.btn-microsoft:hover, .btn-microsoft:active:focus, .btn-microsoft.active:focus, .open > .dropdown-toggle.btn-microsoft:focus, .btn-microsoft:active.focus, .btn-microsoft.active.focus, .open > .dropdown-toggle.btn-microsoft.focus { color: #fff; background-color: #0f4bac; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft:active, .btn-microsoft.active, .open > .dropdown-toggle.btn-microsoft { background-image: none; } .btn-microsoft.disabled:hover, .btn-microsoft[disabled]:hover, fieldset[disabled] .btn-microsoft:hover, .btn-microsoft.disabled:focus, .btn-microsoft[disabled]:focus, fieldset[disabled] .btn-microsoft:focus, .btn-microsoft.disabled.focus, .btn-microsoft[disabled].focus, fieldset[disabled] .btn-microsoft.focus { background-color: #2672ec; border-color: rgba(0, 0, 0, 0.2); } .btn-microsoft .badge { color: #2672ec; background-color: #fff; } .btn-openid { color: #fff; background-color: #f7931e; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:focus, .btn-openid.focus { color: #fff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:hover { color: #fff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:active, .btn-openid.active, .open > .dropdown-toggle.btn-openid { color: #fff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:active:hover, .btn-openid.active:hover, .open > .dropdown-toggle.btn-openid:hover, .btn-openid:active:focus, .btn-openid.active:focus, .open > .dropdown-toggle.btn-openid:focus, .btn-openid:active.focus, .btn-openid.active.focus, .open > .dropdown-toggle.btn-openid.focus { color: #fff; background-color: #b86607; border-color: rgba(0, 0, 0, 0.2); } .btn-openid:active, .btn-openid.active, .open > .dropdown-toggle.btn-openid { background-image: none; } .btn-openid.disabled:hover, .btn-openid[disabled]:hover, fieldset[disabled] .btn-openid:hover, .btn-openid.disabled:focus, .btn-openid[disabled]:focus, fieldset[disabled] .btn-openid:focus, .btn-openid.disabled.focus, .btn-openid[disabled].focus, fieldset[disabled] .btn-openid.focus { background-color: #f7931e; border-color: rgba(0, 0, 0, 0.2); } .btn-openid .badge { color: #f7931e; background-color: #fff; } .btn-pinterest { color: #fff; background-color: #cb2027; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:focus, .btn-pinterest.focus { color: #fff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:hover { color: #fff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:active, .btn-pinterest.active, .open > .dropdown-toggle.btn-pinterest { color: #fff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:active:hover, .btn-pinterest.active:hover, .open > .dropdown-toggle.btn-pinterest:hover, .btn-pinterest:active:focus, .btn-pinterest.active:focus, .open > .dropdown-toggle.btn-pinterest:focus, .btn-pinterest:active.focus, .btn-pinterest.active.focus, .open > .dropdown-toggle.btn-pinterest.focus { color: #fff; background-color: #801419; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest:active, .btn-pinterest.active, .open > .dropdown-toggle.btn-pinterest { background-image: none; } .btn-pinterest.disabled:hover, .btn-pinterest[disabled]:hover, fieldset[disabled] .btn-pinterest:hover, .btn-pinterest.disabled:focus, .btn-pinterest[disabled]:focus, fieldset[disabled] .btn-pinterest:focus, .btn-pinterest.disabled.focus, .btn-pinterest[disabled].focus, fieldset[disabled] .btn-pinterest.focus { background-color: #cb2027; border-color: rgba(0, 0, 0, 0.2); } .btn-pinterest .badge { color: #cb2027; background-color: #fff; } .btn-reddit { color: #000; background-color: #eff7ff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:focus, .btn-reddit.focus { color: #000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:hover { color: #000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:active, .btn-reddit.active, .open > .dropdown-toggle.btn-reddit { color: #000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:active:hover, .btn-reddit.active:hover, .open > .dropdown-toggle.btn-reddit:hover, .btn-reddit:active:focus, .btn-reddit.active:focus, .open > .dropdown-toggle.btn-reddit:focus, .btn-reddit:active.focus, .btn-reddit.active.focus, .open > .dropdown-toggle.btn-reddit.focus { color: #000; background-color: #98ccff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit:active, .btn-reddit.active, .open > .dropdown-toggle.btn-reddit { background-image: none; } .btn-reddit.disabled:hover, .btn-reddit[disabled]:hover, fieldset[disabled] .btn-reddit:hover, .btn-reddit.disabled:focus, .btn-reddit[disabled]:focus, fieldset[disabled] .btn-reddit:focus, .btn-reddit.disabled.focus, .btn-reddit[disabled].focus, fieldset[disabled] .btn-reddit.focus { background-color: #eff7ff; border-color: rgba(0, 0, 0, 0.2); } .btn-reddit .badge { color: #eff7ff; background-color: #000; } .btn-soundcloud { color: #fff; background-color: #ff5500; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:focus, .btn-soundcloud.focus { color: #fff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:hover { color: #fff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:active, .btn-soundcloud.active, .open > .dropdown-toggle.btn-soundcloud { color: #fff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:active:hover, .btn-soundcloud.active:hover, .open > .dropdown-toggle.btn-soundcloud:hover, .btn-soundcloud:active:focus, .btn-soundcloud.active:focus, .open > .dropdown-toggle.btn-soundcloud:focus, .btn-soundcloud:active.focus, .btn-soundcloud.active.focus, .open > .dropdown-toggle.btn-soundcloud.focus { color: #fff; background-color: #a83800; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud:active, .btn-soundcloud.active, .open > .dropdown-toggle.btn-soundcloud { background-image: none; } .btn-soundcloud.disabled:hover, .btn-soundcloud[disabled]:hover, fieldset[disabled] .btn-soundcloud:hover, .btn-soundcloud.disabled:focus, .btn-soundcloud[disabled]:focus, fieldset[disabled] .btn-soundcloud:focus, .btn-soundcloud.disabled.focus, .btn-soundcloud[disabled].focus, fieldset[disabled] .btn-soundcloud.focus { background-color: #ff5500; border-color: rgba(0, 0, 0, 0.2); } .btn-soundcloud .badge { color: #ff5500; background-color: #fff; } .btn-tumblr { color: #fff; background-color: #2c4762; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:focus, .btn-tumblr.focus { color: #fff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:hover { color: #fff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:active, .btn-tumblr.active, .open > .dropdown-toggle.btn-tumblr { color: #fff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:active:hover, .btn-tumblr.active:hover, .open > .dropdown-toggle.btn-tumblr:hover, .btn-tumblr:active:focus, .btn-tumblr.active:focus, .open > .dropdown-toggle.btn-tumblr:focus, .btn-tumblr:active.focus, .btn-tumblr.active.focus, .open > .dropdown-toggle.btn-tumblr.focus { color: #fff; background-color: #111c26; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr:active, .btn-tumblr.active, .open > .dropdown-toggle.btn-tumblr { background-image: none; } .btn-tumblr.disabled:hover, .btn-tumblr[disabled]:hover, fieldset[disabled] .btn-tumblr:hover, .btn-tumblr.disabled:focus, .btn-tumblr[disabled]:focus, fieldset[disabled] .btn-tumblr:focus, .btn-tumblr.disabled.focus, .btn-tumblr[disabled].focus, fieldset[disabled] .btn-tumblr.focus { background-color: #2c4762; border-color: rgba(0, 0, 0, 0.2); } .btn-tumblr .badge { color: #2c4762; background-color: #fff; } .btn-twitter { color: #fff; background-color: #55acee; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:focus, .btn-twitter.focus { color: #fff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:hover { color: #fff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:active, .btn-twitter.active, .open > .dropdown-toggle.btn-twitter { color: #fff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:active:hover, .btn-twitter.active:hover, .open > .dropdown-toggle.btn-twitter:hover, .btn-twitter:active:focus, .btn-twitter.active:focus, .open > .dropdown-toggle.btn-twitter:focus, .btn-twitter:active.focus, .btn-twitter.active.focus, .open > .dropdown-toggle.btn-twitter.focus { color: #fff; background-color: #1583d7; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter:active, .btn-twitter.active, .open > .dropdown-toggle.btn-twitter { background-image: none; } .btn-twitter.disabled:hover, .btn-twitter[disabled]:hover, fieldset[disabled] .btn-twitter:hover, .btn-twitter.disabled:focus, .btn-twitter[disabled]:focus, fieldset[disabled] .btn-twitter:focus, .btn-twitter.disabled.focus, .btn-twitter[disabled].focus, fieldset[disabled] .btn-twitter.focus { background-color: #55acee; border-color: rgba(0, 0, 0, 0.2); } .btn-twitter .badge { color: #55acee; background-color: #fff; } .btn-vimeo { color: #fff; background-color: #1ab7ea; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:focus, .btn-vimeo.focus { color: #fff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:hover { color: #fff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:active, .btn-vimeo.active, .open > .dropdown-toggle.btn-vimeo { color: #fff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:active:hover, .btn-vimeo.active:hover, .open > .dropdown-toggle.btn-vimeo:hover, .btn-vimeo:active:focus, .btn-vimeo.active:focus, .open > .dropdown-toggle.btn-vimeo:focus, .btn-vimeo:active.focus, .btn-vimeo.active.focus, .open > .dropdown-toggle.btn-vimeo.focus { color: #fff; background-color: #0f7b9f; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo:active, .btn-vimeo.active, .open > .dropdown-toggle.btn-vimeo { background-image: none; } .btn-vimeo.disabled:hover, .btn-vimeo[disabled]:hover, fieldset[disabled] .btn-vimeo:hover, .btn-vimeo.disabled:focus, .btn-vimeo[disabled]:focus, fieldset[disabled] .btn-vimeo:focus, .btn-vimeo.disabled.focus, .btn-vimeo[disabled].focus, fieldset[disabled] .btn-vimeo.focus { background-color: #1ab7ea; border-color: rgba(0, 0, 0, 0.2); } .btn-vimeo .badge { color: #1ab7ea; background-color: #fff; } .btn-vk { color: #fff; background-color: #587ea3; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:focus, .btn-vk.focus { color: #fff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:hover { color: #fff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:active, .btn-vk.active, .open > .dropdown-toggle.btn-vk { color: #fff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:active:hover, .btn-vk.active:hover, .open > .dropdown-toggle.btn-vk:hover, .btn-vk:active:focus, .btn-vk.active:focus, .open > .dropdown-toggle.btn-vk:focus, .btn-vk:active.focus, .btn-vk.active.focus, .open > .dropdown-toggle.btn-vk.focus { color: #fff; background-color: #3a526b; border-color: rgba(0, 0, 0, 0.2); } .btn-vk:active, .btn-vk.active, .open > .dropdown-toggle.btn-vk { background-image: none; } .btn-vk.disabled:hover, .btn-vk[disabled]:hover, fieldset[disabled] .btn-vk:hover, .btn-vk.disabled:focus, .btn-vk[disabled]:focus, fieldset[disabled] .btn-vk:focus, .btn-vk.disabled.focus, .btn-vk[disabled].focus, fieldset[disabled] .btn-vk.focus { background-color: #587ea3; border-color: rgba(0, 0, 0, 0.2); } .btn-vk .badge { color: #587ea3; background-color: #fff; } .btn-yahoo { color: #fff; background-color: #720e9e; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:focus, .btn-yahoo.focus { color: #fff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:hover { color: #fff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:active, .btn-yahoo.active, .open > .dropdown-toggle.btn-yahoo { color: #fff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:active:hover, .btn-yahoo.active:hover, .open > .dropdown-toggle.btn-yahoo:hover, .btn-yahoo:active:focus, .btn-yahoo.active:focus, .open > .dropdown-toggle.btn-yahoo:focus, .btn-yahoo:active.focus, .btn-yahoo.active.focus, .open > .dropdown-toggle.btn-yahoo.focus { color: #fff; background-color: #39074e; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo:active, .btn-yahoo.active, .open > .dropdown-toggle.btn-yahoo { background-image: none; } .btn-yahoo.disabled:hover, .btn-yahoo[disabled]:hover, fieldset[disabled] .btn-yahoo:hover, .btn-yahoo.disabled:focus, .btn-yahoo[disabled]:focus, fieldset[disabled] .btn-yahoo:focus, .btn-yahoo.disabled.focus, .btn-yahoo[disabled].focus, fieldset[disabled] .btn-yahoo.focus { background-color: #720e9e; border-color: rgba(0, 0, 0, 0.2); } .btn-yahoo .badge { color: #720e9e; background-color: #fff; } AdminLTE/css/alt/AdminLTE-fullcalendar.css 0000644 00000003434 15002261751 0014255 0 ustar 00 /* * Plugin: Full Calendar * --------------------- */ .fc-button { background: #f4f4f4; background-image: none; color: #444; border-color: #ddd; border-bottom-color: #ddd; } .fc-button:hover, .fc-button:active, .fc-button.hover { background-color: #e9e9e9; } .fc-header-title h2 { font-size: 15px; line-height: 1.6em; color: #666; margin-left: 10px; } .fc-header-right { padding-right: 10px; } .fc-header-left { padding-left: 10px; } .fc-widget-header { background: #fafafa; } .fc-grid { width: 100%; border: 0; } .fc-widget-header:first-of-type, .fc-widget-content:first-of-type { border-left: 0; border-right: 0; } .fc-widget-header:last-of-type, .fc-widget-content:last-of-type { border-right: 0; } .fc-toolbar { padding: 10px; margin: 0; } .fc-day-number { font-size: 20px; font-weight: 300; padding-right: 10px; } .fc-color-picker { list-style: none; margin: 0; padding: 0; } .fc-color-picker > li { float: left; font-size: 30px; margin-right: 5px; line-height: 30px; } .fc-color-picker > li .fa { -webkit-transition: -webkit-transform linear 0.3s; -moz-transition: -moz-transform linear 0.3s; -o-transition: -o-transform linear 0.3s; transition: transform linear 0.3s; } .fc-color-picker > li .fa:hover { -webkit-transform: rotate(30deg); -ms-transform: rotate(30deg); -o-transform: rotate(30deg); transform: rotate(30deg); } #add-new-event { -webkit-transition: all linear 0.3s; -o-transition: all linear 0.3s; transition: all linear 0.3s; } .external-event { padding: 5px 10px; font-weight: bold; margin-bottom: 4px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; cursor: move; } .external-event:hover { box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); } AdminLTE/css/alt/AdminLTE-without-plugins.css 0000644 00000263230 15002261751 0015005 0 ustar 00 /*! * AdminLTE v2.4.18 * Without Third-Party Plugins * * Author: Colorlib * Support: <https://github.com/ColorlibHQ/AdminLTE/issues> * Repository: git://github.com/ColorlibHQ/AdminLTE.git * License: MIT <http://opensource.org/licenses/MIT> */ /* * Core: General Layout Style * ------------------------- */ html, body { height: 100%; } .layout-boxed html, .layout-boxed body { height: 100%; } body { font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 400; overflow-x: hidden; overflow-y: auto; } /* Layout */ .wrapper { height: 100%; position: relative; overflow-x: hidden; overflow-y: auto; } .wrapper:before, .wrapper:after { content: " "; display: table; } .wrapper:after { clear: both; } .layout-boxed .wrapper { max-width: 1250px; margin: 0 auto; min-height: 100%; box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); position: relative; } .layout-boxed { background-color: #f9fafc; } /* * Content Wrapper - contains the main content */ .content-wrapper, .main-footer { -webkit-transition: -webkit-transform 0.3s ease-in-out, margin 0.3s ease-in-out; -moz-transition: -moz-transform 0.3s ease-in-out, margin 0.3s ease-in-out; -o-transition: -o-transform 0.3s ease-in-out, margin 0.3s ease-in-out; transition: transform 0.3s ease-in-out, margin 0.3s ease-in-out; margin-left: 230px; z-index: 820; } .layout-top-nav .content-wrapper, .layout-top-nav .main-footer { margin-left: 0; } @media (max-width: 767px) { .content-wrapper, .main-footer { margin-left: 0; } } @media (min-width: 768px) { .sidebar-collapse .content-wrapper, .sidebar-collapse .main-footer { margin-left: 0; } } @media (max-width: 767px) { .sidebar-open .content-wrapper, .sidebar-open .main-footer { -webkit-transform: translate(230px, 0); -ms-transform: translate(230px, 0); -o-transform: translate(230px, 0); transform: translate(230px, 0); } } .content-wrapper { min-height: calc(100vh - 101px); background-color: #ecf0f5; z-index: 800; } @media (max-width: 767px) { .content-wrapper { min-height: calc(100vh - 151px); } } .main-footer { background: #fff; padding: 15px; color: #444; border-top: 1px solid #d2d6de; } /* Fixed layout */ .fixed .main-header, .fixed .main-sidebar, .fixed .left-side { position: fixed; } .fixed .main-header { top: 0; right: 0; left: 0; } .fixed .content-wrapper, .fixed .right-side { padding-top: 50px; } @media (max-width: 767px) { .fixed .content-wrapper, .fixed .right-side { padding-top: 100px; } } .fixed.layout-boxed .wrapper { max-width: 100%; } .fixed .wrapper { overflow: hidden; } .hold-transition .content-wrapper, .hold-transition .right-side, .hold-transition .main-footer, .hold-transition .main-sidebar, .hold-transition .left-side, .hold-transition .main-header .navbar, .hold-transition .main-header .logo, .hold-transition .menu-open .fa-angle-left { /* Fix for IE */ -webkit-transition: none; -o-transition: none; transition: none; } /* Content */ .content { min-height: 250px; padding: 15px; margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px; } /* H1 - H6 font */ h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: 'Source Sans Pro', sans-serif; } /* General Links */ a { color: #3c8dbc; } a:hover, a:active, a:focus { outline: none; text-decoration: none; color: #72afd2; } /* Page Header */ .page-header { margin: 10px 0 20px 0; font-size: 22px; } .page-header > small { color: #666; display: block; margin-top: 5px; } /* * Component: Main Header * ---------------------- */ .main-header { position: relative; max-height: 100px; z-index: 1030; } .main-header .navbar { -webkit-transition: margin-left 0.3s ease-in-out; -o-transition: margin-left 0.3s ease-in-out; transition: margin-left 0.3s ease-in-out; margin-bottom: 0; margin-left: 230px; border: none; min-height: 50px; border-radius: 0; } .layout-top-nav .main-header .navbar { margin-left: 0; } .main-header #navbar-search-input.form-control { background: rgba(255, 255, 255, 0.2); border-color: transparent; } .main-header #navbar-search-input.form-control:focus, .main-header #navbar-search-input.form-control:active { border-color: rgba(0, 0, 0, 0.1); background: rgba(255, 255, 255, 0.9); } .main-header #navbar-search-input.form-control::-moz-placeholder { color: #ccc; opacity: 1; } .main-header #navbar-search-input.form-control:-ms-input-placeholder { color: #ccc; } .main-header #navbar-search-input.form-control::-webkit-input-placeholder { color: #ccc; } .main-header .navbar-custom-menu, .main-header .navbar-right { float: right; } @media (max-width: 991px) { .main-header .navbar-custom-menu a, .main-header .navbar-right a { color: inherit; background: transparent; } } @media (max-width: 767px) { .main-header .navbar-right { float: none; } .navbar-collapse .main-header .navbar-right { margin: 7.5px -15px; } .main-header .navbar-right > li { color: inherit; border: 0; } } .main-header .sidebar-toggle { float: left; background-color: transparent; background-image: none; padding: 15px 15px; font-family: fontAwesome; } .main-header .sidebar-toggle:before { content: "\f0c9"; } .main-header .sidebar-toggle:hover { color: #fff; } .main-header .sidebar-toggle:focus, .main-header .sidebar-toggle:active { background: transparent; } .main-header .sidebar-toggle.fa5 { font-family: "Font Awesome\ 5 Free"; } .main-header .sidebar-toggle.fa5:before { content: "\f0c9"; font-weight: 900; } .main-header .sidebar-toggle .icon-bar { display: none; } .main-header .navbar .nav > li.user > a > .fa, .main-header .navbar .nav > li.user > a > .glyphicon, .main-header .navbar .nav > li.user > a > .ion { margin-right: 5px; } .main-header .navbar .nav > li > a > .label { position: absolute; top: 9px; right: 7px; text-align: center; font-size: 9px; padding: 2px 3px; line-height: 0.9; } .main-header .logo { -webkit-transition: width 0.3s ease-in-out; -o-transition: width 0.3s ease-in-out; transition: width 0.3s ease-in-out; display: block; float: left; height: 50px; font-size: 20px; line-height: 50px; text-align: center; width: 230px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 0 15px; font-weight: 300; overflow: hidden; } .main-header .logo img { padding: 4px; object-fit: contain; margin: 0 auto; } .main-header .logo .logo-lg { display: block; } .main-header .logo .logo-lg img { max-width: 200px; max-height: 50px; } .main-header .logo .logo-lg .brandlogo-image { margin-top: 8px; margin-right: 10px; margin-left: -5px; } .main-header .logo .logo-mini { display: none; } .main-header .logo .logo-mini img { max-width: 50px; max-height: 50px; } .main-header .logo .logo-mini .brandlogo-image { margin-top: 8px; margin-right: 10px; margin-left: 10px; } .main-header .logo .brandlogo-image { float: left; height: 34px; width: auto; } .main-header .navbar-brand { color: #fff; } .content-header { position: relative; padding: 15px 15px 0 15px; } .content-header > h1 { margin: 0; font-size: 24px; } .content-header > h1 > small { font-size: 15px; display: inline-block; padding-left: 4px; font-weight: 300; } .content-header > .breadcrumb { float: right; background: transparent; margin-top: 0; margin-bottom: 0; font-size: 12px; padding: 7px 5px; position: absolute; top: 15px; right: 10px; border-radius: 2px; } .content-header > .breadcrumb > li > a { color: #444; text-decoration: none; display: inline-block; } .content-header > .breadcrumb > li > a > .fa, .content-header > .breadcrumb > li > a > .glyphicon, .content-header > .breadcrumb > li > a > .ion { margin-right: 5px; } .content-header > .breadcrumb > li + li:before { content: '>\00a0'; } @media (max-width: 991px) { .content-header > .breadcrumb { position: relative; margin-top: 5px; top: 0; right: 0; float: none; background: #d2d6de; padding-left: 10px; } .content-header > .breadcrumb li:before { color: #97a0b3; } } .navbar-toggle { color: #fff; border: 0; margin: 0; padding: 15px 15px; } @media (max-width: 991px) { .navbar-custom-menu .navbar-nav > li { float: left; } .navbar-custom-menu .navbar-nav { margin: 0; float: left; } .navbar-custom-menu .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; line-height: 20px; } } @media (max-width: 767px) { .main-header { position: relative; } .main-header .logo, .main-header .navbar { width: 100%; float: none; } .main-header .navbar { margin: 0; } .main-header .navbar-custom-menu { float: right; } } @media (max-width: 991px) { .navbar-collapse.pull-left { float: none !important; } .navbar-collapse.pull-left + .navbar-custom-menu { display: block; position: absolute; top: 0; right: 40px; } } /* * Component: Sidebar * ------------------ */ .main-sidebar { position: absolute; top: 0; left: 0; padding-top: 50px; min-height: 100%; width: 230px; z-index: 810; -webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in-out; -moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out; -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out; transition: transform 0.3s ease-in-out, width 0.3s ease-in-out; } @media (max-width: 767px) { .main-sidebar { padding-top: 100px; } } @media (max-width: 767px) { .main-sidebar { -webkit-transform: translate(-230px, 0); -ms-transform: translate(-230px, 0); -o-transform: translate(-230px, 0); transform: translate(-230px, 0); } } @media (min-width: 768px) { .sidebar-collapse .main-sidebar { -webkit-transform: translate(-230px, 0); -ms-transform: translate(-230px, 0); -o-transform: translate(-230px, 0); transform: translate(-230px, 0); } } @media (max-width: 767px) { .sidebar-open .main-sidebar { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } } .sidebar { padding-bottom: 10px; } .sidebar-form input:focus { border-color: transparent; } .user-panel { position: relative; width: 100%; padding: 10px; overflow: hidden; } .user-panel:before, .user-panel:after { content: " "; display: table; } .user-panel:after { clear: both; } .user-panel > .image > img { width: 100%; max-width: 45px; height: auto; } .user-panel > .info { padding: 5px 5px 5px 15px; line-height: 1; position: absolute; left: 55px; } .user-panel > .info > p { font-weight: 600; margin-bottom: 9px; } .user-panel > .info > a { text-decoration: none; padding-right: 5px; margin-top: 3px; font-size: 11px; } .user-panel > .info > a > .fa, .user-panel > .info > a > .ion, .user-panel > .info > a > .glyphicon { margin-right: 3px; } .sidebar-menu { list-style: none; margin: 0; padding: 0; } .sidebar-menu > li { position: relative; margin: 0; padding: 0; } .sidebar-menu > li > a { padding: 12px 5px 12px 15px; display: block; } .sidebar-menu > li > a > .fa, .sidebar-menu > li > a > .glyphicon, .sidebar-menu > li > a > .ion { width: 20px; } .sidebar-menu > li .label, .sidebar-menu > li .badge { margin-right: 5px; } .sidebar-menu > li .badge { margin-top: 3px; } .sidebar-menu li.header { padding: 10px 25px 10px 15px; font-size: 12px; } .sidebar-menu li > a > .fa-angle-left, .sidebar-menu li > a > .pull-right-container > .fa-angle-left { width: auto; height: auto; padding: 0; margin-right: 10px; -webkit-transition: transform 0.5s ease; -o-transition: transform 0.5s ease; transition: transform 0.5s ease; } .sidebar-menu li > a > .fa-angle-left { position: absolute; top: 50%; right: 10px; margin-top: -8px; } .sidebar-menu .menu-open > a > .fa-angle-left, .sidebar-menu .menu-open > a > .pull-right-container > .fa-angle-left { -webkit-transform: rotate(-90deg); -ms-transform: rotate(-90deg); -o-transform: rotate(-90deg); transform: rotate(-90deg); } .sidebar-menu .active > .treeview-menu { display: block; } /* * Component: Sidebar Mini */ @media (min-width: 768px) { .sidebar-mini.sidebar-collapse .content-wrapper, .sidebar-mini.sidebar-collapse .right-side, .sidebar-mini.sidebar-collapse .main-footer { margin-left: 50px !important; z-index: 840; } .sidebar-mini.sidebar-collapse .main-sidebar { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); width: 50px !important; z-index: 850; } .sidebar-mini.sidebar-collapse .sidebar-menu > li { position: relative; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { margin-right: 0; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { border-top-right-radius: 4px; } .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { border-bottom-right-radius: 4px; } .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { padding-top: 5px; padding-bottom: 5px; border-bottom-right-radius: 4px; } .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info, .sidebar-mini.sidebar-collapse .sidebar-form, .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span, .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu, .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right, .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span > .pull-right, .sidebar-mini.sidebar-collapse .sidebar-menu li.header { display: none !important; -webkit-transform: translateZ(0); } .sidebar-mini.sidebar-collapse .main-header .logo { width: 50px; } .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini { display: block; margin-left: -15px; margin-right: -15px; font-size: 18px; } .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg { display: none; } .sidebar-mini.sidebar-collapse .main-header .navbar { margin-left: 50px; } } @media (min-width: 768px) { .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right), .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { display: block !important; position: absolute; width: 180px; left: 50px; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > span { top: 0; margin-left: -3px; padding: 12px 5px 12px 20px; background-color: inherit; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container { position: relative !important; float: right; width: auto !important; left: 180px !important; top: -22px !important; z-index: 900; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type) { display: none; } .sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { top: 44px; margin-left: 0; } } .sidebar-expanded-on-hover .main-footer, .sidebar-expanded-on-hover .content-wrapper { margin-left: 50px; } .sidebar-expanded-on-hover .main-sidebar { box-shadow: 3px 0 8px rgba(0, 0, 0, 0.125); } .sidebar-menu, .main-sidebar .user-panel, .sidebar-menu > li.header { white-space: nowrap; overflow: hidden; } .sidebar-menu:hover { overflow: visible; } .sidebar-form, .sidebar-menu > li.header { overflow: hidden; text-overflow: clip; } .sidebar-menu li > a { position: relative; } .sidebar-menu li > a > .pull-right-container { position: absolute; right: 10px; top: 50%; margin-top: -7px; } /* * Component: Control sidebar. By default, this is the right sidebar. */ .control-sidebar-bg { position: fixed; z-index: 1000; bottom: 0; } .control-sidebar-bg, .control-sidebar { top: 0; right: -230px; width: 230px; -webkit-transition: right 0.3s ease-in-out; -o-transition: right 0.3s ease-in-out; transition: right 0.3s ease-in-out; } .control-sidebar { position: absolute; padding-top: 50px; z-index: 1010; } @media (max-width: 767px) { .control-sidebar { padding-top: 100px; } } .control-sidebar > .tab-content { padding: 10px 15px; } .control-sidebar.control-sidebar-open, .control-sidebar.control-sidebar-open + .control-sidebar-bg { right: 0; } .control-sidebar-hold-transition .control-sidebar-bg, .control-sidebar-hold-transition .control-sidebar, .control-sidebar-hold-transition .content-wrapper { transition: none; } .control-sidebar-open .control-sidebar-bg, .control-sidebar-open .control-sidebar { right: 0; } @media (min-width: 768px) { .control-sidebar-open .content-wrapper, .control-sidebar-open .right-side, .control-sidebar-open .main-footer { margin-right: 230px; } } .fixed .control-sidebar { position: fixed; height: 100%; overflow-y: auto; padding-bottom: 50px; } .nav-tabs.control-sidebar-tabs > li:first-of-type > a, .nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover, .nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus { border-left-width: 0; } .nav-tabs.control-sidebar-tabs > li > a { border-radius: 0; } .nav-tabs.control-sidebar-tabs > li > a, .nav-tabs.control-sidebar-tabs > li > a:hover { border-top: none; border-right: none; border-left: 1px solid transparent; border-bottom: 1px solid transparent; } .nav-tabs.control-sidebar-tabs > li > a .icon { font-size: 16px; } .nav-tabs.control-sidebar-tabs > li.active > a, .nav-tabs.control-sidebar-tabs > li.active > a:hover, .nav-tabs.control-sidebar-tabs > li.active > a:focus, .nav-tabs.control-sidebar-tabs > li.active > a:active { border-top: none; border-right: none; border-bottom: none; } @media (max-width: 768px) { .nav-tabs.control-sidebar-tabs { display: table; } .nav-tabs.control-sidebar-tabs > li { display: table-cell; } } .control-sidebar-heading { font-weight: 400; font-size: 16px; padding: 10px 0; margin-bottom: 10px; } .control-sidebar-subheading { display: block; font-weight: 400; font-size: 14px; } .control-sidebar-menu { list-style: none; padding: 0; margin: 0 -15px; } .control-sidebar-menu > li > a { display: block; padding: 10px 15px; } .control-sidebar-menu > li > a:before, .control-sidebar-menu > li > a:after { content: " "; display: table; } .control-sidebar-menu > li > a:after { clear: both; } .control-sidebar-menu > li > a > .control-sidebar-subheading { margin-top: 0; } .control-sidebar-menu .menu-icon { float: left; width: 35px; height: 35px; border-radius: 50%; text-align: center; line-height: 35px; } .control-sidebar-menu .menu-info { margin-left: 45px; margin-top: 3px; } .control-sidebar-menu .menu-info > .control-sidebar-subheading { margin: 0; } .control-sidebar-menu .menu-info > p { margin: 0; font-size: 11px; } .control-sidebar-menu .progress { margin: 0; } .control-sidebar-dark { color: #b8c7ce; } .control-sidebar-dark, .control-sidebar-dark + .control-sidebar-bg { background: #222d32; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs { border-bottom: #1c2529; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a { background: #181f23; color: #b8c7ce; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus { border-left-color: #141a1d; border-bottom-color: #141a1d; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active { background: #1c2529; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover { color: #fff; } .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus, .control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active { background: #222d32; color: #fff; } .control-sidebar-dark .control-sidebar-heading, .control-sidebar-dark .control-sidebar-subheading { color: #fff; } .control-sidebar-dark .control-sidebar-menu > li > a:hover { background: #1e282c; } .control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p { color: #b8c7ce; } .control-sidebar-light { color: #5e5e5e; } .control-sidebar-light, .control-sidebar-light + .control-sidebar-bg { background: #f9fafc; border-left: 1px solid #d2d6de; } .control-sidebar-light .nav-tabs.control-sidebar-tabs { border-bottom: #d2d6de; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a { background: #e8ecf4; color: #444; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus { border-left-color: #d2d6de; border-bottom-color: #d2d6de; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active { background: #eff1f7; } .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus, .control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active { background: #f9fafc; color: #111; } .control-sidebar-light .control-sidebar-heading, .control-sidebar-light .control-sidebar-subheading { color: #111; } .control-sidebar-light .control-sidebar-menu { margin-left: -14px; } .control-sidebar-light .control-sidebar-menu > li > a:hover { background: #f4f4f5; } .control-sidebar-light .control-sidebar-menu > li > a .menu-info > p { color: #5e5e5e; } /* * Component: Dropdown menus * ------------------------- */ /*Dropdowns in general*/ .dropdown-menu { box-shadow: none; border-color: #eee; } .dropdown-menu > li > a { color: #777; } .dropdown-menu > li > a > .glyphicon, .dropdown-menu > li > a > .fa, .dropdown-menu > li > a > .ion { margin-right: 10px; } .dropdown-menu > li > a:hover { background-color: #e1e3e9; color: #333; } .dropdown-menu > .divider { background-color: #eee; } .navbar-nav > .notifications-menu > .dropdown-menu, .navbar-nav > .messages-menu > .dropdown-menu, .navbar-nav > .tasks-menu > .dropdown-menu { width: 280px; padding: 0 0 0 0; margin: 0; top: 100%; } .navbar-nav > .notifications-menu > .dropdown-menu > li, .navbar-nav > .messages-menu > .dropdown-menu > li, .navbar-nav > .tasks-menu > .dropdown-menu > li { position: relative; } .navbar-nav > .notifications-menu > .dropdown-menu > li.header, .navbar-nav > .messages-menu > .dropdown-menu > li.header, .navbar-nav > .tasks-menu > .dropdown-menu > li.header { border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; background-color: #ffffff; padding: 7px 10px; border-bottom: 1px solid #f4f4f4; color: #444444; font-size: 14px; } .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; font-size: 12px; background-color: #fff; padding: 7px 10px; border-bottom: 1px solid #eeeeee; color: #444 !important; text-align: center; } @media (max-width: 991px) { .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { background: #fff !important; color: #444 !important; } } .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover, .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover, .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover { text-decoration: none; font-weight: normal; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu, .navbar-nav > .messages-menu > .dropdown-menu > li .menu, .navbar-nav > .tasks-menu > .dropdown-menu > li .menu { max-height: 200px; margin: 0; padding: 0; list-style: none; overflow-x: hidden; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { display: block; white-space: nowrap; /* Prevent text from breaking */ border-bottom: 1px solid #f4f4f4; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover, .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover, .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover { background: #f4f4f4; text-decoration: none; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a { color: #444444; overflow: hidden; text-overflow: ellipsis; padding: 10px; } .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon, .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa, .navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion { width: 20px; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a { margin: 0; padding: 10px 10px; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img { margin: auto 10px auto auto; width: 40px; height: 40px; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 { padding: 0; margin: 0 0 0 45px; color: #444444; font-size: 15px; position: relative; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { color: #999999; font-size: 10px; position: absolute; top: 0; right: 0; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p { margin: 0 0 0 45px; font-size: 12px; color: #888888; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before, .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { content: " "; display: table; } .navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { clear: both; } .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { padding: 10px; } .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 { font-size: 14px; padding: 0; margin: 0 0 10px 0; color: #666666; } .navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress { padding: 0; margin: 0; } .navbar-nav > .user-menu > .dropdown-menu { border-top-right-radius: 0; border-top-left-radius: 0; padding: 1px 0 0 0; border-top-width: 0; width: 280px; } .navbar-nav > .user-menu > .dropdown-menu, .navbar-nav > .user-menu > .dropdown-menu > .user-body { border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .navbar-nav > .user-menu > .dropdown-menu > li.user-header { height: 175px; padding: 10px; text-align: center; } .navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { z-index: 5; height: 90px; width: 90px; border: 3px solid; border-color: transparent; border-color: rgba(255, 255, 255, 0.2); } .navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { z-index: 5; color: #fff; color: rgba(255, 255, 255, 0.8); font-size: 17px; margin-top: 10px; } .navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { display: block; font-size: 12px; } .navbar-nav > .user-menu > .dropdown-menu > .user-body { padding: 15px; border-bottom: 1px solid #f4f4f4; border-top: 1px solid #dddddd; } .navbar-nav > .user-menu > .dropdown-menu > .user-body:before, .navbar-nav > .user-menu > .dropdown-menu > .user-body:after { content: " "; display: table; } .navbar-nav > .user-menu > .dropdown-menu > .user-body:after { clear: both; } .navbar-nav > .user-menu > .dropdown-menu > .user-body a { color: #444 !important; } @media (max-width: 991px) { .navbar-nav > .user-menu > .dropdown-menu > .user-body a { background: #fff !important; color: #444 !important; } } .navbar-nav > .user-menu > .dropdown-menu > .user-footer { background-color: #f9f9f9; padding: 10px; } .navbar-nav > .user-menu > .dropdown-menu > .user-footer:before, .navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { content: " "; display: table; } .navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { clear: both; } .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default { color: #666666; } @media (max-width: 991px) { .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover { background-color: #f9f9f9; } } .navbar-nav > .user-menu .user-image { float: left; width: 25px; height: 25px; border-radius: 50%; margin-right: 10px; margin-top: -2px; } @media (max-width: 767px) { .navbar-nav > .user-menu .user-image { float: none; margin-right: 0; margin-top: -8px; line-height: 10px; } } /* Add fade animation to dropdown menus by appending the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ .open:not(.dropup) > .animated-dropdown-menu { backface-visibility: visible !important; -webkit-animation: flipInX 0.7s both; -o-animation: flipInX 0.7s both; animation: flipInX 0.7s both; } @keyframes flipInX { 0% { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transition-timing-function: ease-in; opacity: 0; } 40% { transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transition-timing-function: ease-in; } 60% { transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { transform: perspective(400px); } } @-webkit-keyframes flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { -webkit-transform: perspective(400px); } } /* Fix dropdown menu in navbars */ .navbar-custom-menu > .navbar-nav > li { position: relative; } .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { position: absolute; right: 0; left: auto; } @media (max-width: 991px) { .navbar-custom-menu > .navbar-nav { float: right; } .navbar-custom-menu > .navbar-nav > li { position: static; } .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { position: absolute; right: 5%; left: auto; border: 1px solid #ddd; background: #fff; } } /* * Component: Form * --------------- */ .form-control { border-radius: 0; box-shadow: none; border-color: #d2d6de; } .form-control:focus { border-color: #3c8dbc; box-shadow: none; } .form-control::-moz-placeholder, .form-control:-ms-input-placeholder, .form-control::-webkit-input-placeholder { color: #bbb; opacity: 1; } .form-control:not(select) { -webkit-appearance: none; -moz-appearance: none; appearance: none; } .form-group.has-success label { color: #00a65a; } .form-group.has-success .form-control, .form-group.has-success .input-group-addon { border-color: #00a65a; box-shadow: none; } .form-group.has-success .help-block { color: #00a65a; } .form-group.has-warning label { color: #f39c12; } .form-group.has-warning .form-control, .form-group.has-warning .input-group-addon { border-color: #f39c12; box-shadow: none; } .form-group.has-warning .help-block { color: #f39c12; } .form-group.has-error label { color: #dd4b39; } .form-group.has-error .form-control, .form-group.has-error .input-group-addon { border-color: #dd4b39; box-shadow: none; } .form-group.has-error .help-block { color: #dd4b39; } /* Input group */ .input-group .input-group-addon { border-radius: 0; border-color: #d2d6de; background-color: #fff; } /* button groups */ .btn-group-vertical .btn.btn-flat:first-of-type, .btn-group-vertical .btn.btn-flat:last-of-type { border-radius: 0; } .icheck > label { padding-left: 0; } /* support Font Awesome icons in form-control */ .form-control-feedback.fa { line-height: 34px; } .input-lg + .form-control-feedback.fa, .input-group-lg + .form-control-feedback.fa, .form-group-lg .form-control + .form-control-feedback.fa { line-height: 46px; } .input-sm + .form-control-feedback.fa, .input-group-sm + .form-control-feedback.fa, .form-group-sm .form-control + .form-control-feedback.fa { line-height: 30px; } /* * Component: Progress Bar * ----------------------- */ .progress, .progress > .progress-bar { -webkit-box-shadow: none; box-shadow: none; } .progress, .progress > .progress-bar, .progress .progress-bar, .progress > .progress-bar .progress-bar { border-radius: 1px; } /* size variation */ .progress.sm, .progress-sm { height: 10px; } .progress.sm, .progress-sm, .progress.sm .progress-bar, .progress-sm .progress-bar { border-radius: 1px; } .progress.xs, .progress-xs { height: 7px; } .progress.xs, .progress-xs, .progress.xs .progress-bar, .progress-xs .progress-bar { border-radius: 1px; } .progress.xxs, .progress-xxs { height: 3px; } .progress.xxs, .progress-xxs, .progress.xxs .progress-bar, .progress-xxs .progress-bar { border-radius: 1px; } /* Vertical bars */ .progress.vertical { position: relative; width: 30px; height: 200px; display: inline-block; margin-right: 10px; } .progress.vertical > .progress-bar { width: 100%; position: absolute; bottom: 0; } .progress.vertical.sm, .progress.vertical.progress-sm { width: 20px; } .progress.vertical.xs, .progress.vertical.progress-xs { width: 10px; } .progress.vertical.xxs, .progress.vertical.progress-xxs { width: 3px; } .progress-group .progress-text { font-weight: 600; } .progress-group .progress-number { float: right; } /* Remove margins from progress bars when put in a table */ .table tr > td .progress { margin: 0; } .progress-bar-light-blue, .progress-bar-primary { background-color: #3c8dbc; } .progress-striped .progress-bar-light-blue, .progress-striped .progress-bar-primary { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-green, .progress-bar-success { background-color: #00a65a; } .progress-striped .progress-bar-green, .progress-striped .progress-bar-success { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-aqua, .progress-bar-info { background-color: #00c0ef; } .progress-striped .progress-bar-aqua, .progress-striped .progress-bar-info { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-yellow, .progress-bar-warning { background-color: #f39c12; } .progress-striped .progress-bar-yellow, .progress-striped .progress-bar-warning { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-red, .progress-bar-danger { background-color: #dd4b39; } .progress-striped .progress-bar-red, .progress-striped .progress-bar-danger { background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } /* * Component: Small Box * -------------------- */ .small-box { border-radius: 2px; position: relative; display: block; margin-bottom: 20px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } .small-box > .inner { padding: 10px; } .small-box > .small-box-footer { position: relative; text-align: center; padding: 3px 0; color: #fff; color: rgba(255, 255, 255, 0.8); display: block; z-index: 10; background: rgba(0, 0, 0, 0.1); text-decoration: none; } .small-box > .small-box-footer:hover { color: #fff; background: rgba(0, 0, 0, 0.15); } .small-box h3 { font-size: 38px; font-weight: bold; margin: 0 0 10px 0; white-space: nowrap; padding: 0; } .small-box p { font-size: 15px; } .small-box p > small { display: block; color: #f9f9f9; font-size: 13px; margin-top: 5px; } .small-box h3, .small-box p { z-index: 5; } .small-box .icon { -webkit-transition: all 0.3s linear; -o-transition: all 0.3s linear; transition: all 0.3s linear; position: absolute; top: -10px; right: 10px; z-index: 0; font-size: 90px; color: rgba(0, 0, 0, 0.15); } .small-box:hover { text-decoration: none; color: #f9f9f9; } .small-box:hover .icon { font-size: 95px; } @media (max-width: 767px) { .small-box { text-align: center; } .small-box .icon { display: none; } .small-box p { font-size: 12px; } } /* * Component: Box * -------------- */ .box { position: relative; border-radius: 3px; background: #ffffff; border-top: 3px solid #d2d6de; margin-bottom: 20px; width: 100%; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } .box.box-primary { border-top-color: #3c8dbc; } .box.box-info { border-top-color: #00c0ef; } .box.box-danger { border-top-color: #dd4b39; } .box.box-warning { border-top-color: #f39c12; } .box.box-success { border-top-color: #00a65a; } .box.box-default { border-top-color: #d2d6de; } .box.collapsed-box .box-body, .box.collapsed-box .box-footer { display: none; } .box .nav-stacked > li { border-bottom: 1px solid #f4f4f4; margin: 0; } .box .nav-stacked > li:last-of-type { border-bottom: none; } .box.height-control .box-body { max-height: 300px; overflow: auto; } .box .border-right { border-right: 1px solid #f4f4f4; } .box .border-left { border-left: 1px solid #f4f4f4; } .box.box-solid { border-top: 0; } .box.box-solid > .box-header .btn.btn-default { background: transparent; } .box.box-solid > .box-header .btn:hover, .box.box-solid > .box-header a:hover { background: rgba(0, 0, 0, 0.1); } .box.box-solid.box-default { border: 1px solid #d2d6de; } .box.box-solid.box-default > .box-header { color: #444; background: #d2d6de; background-color: #d2d6de; } .box.box-solid.box-default > .box-header a, .box.box-solid.box-default > .box-header .btn { color: #444; } .box.box-solid.box-primary { border: 1px solid #3c8dbc; } .box.box-solid.box-primary > .box-header { color: #fff; background: #3c8dbc; background-color: #3c8dbc; } .box.box-solid.box-primary > .box-header a, .box.box-solid.box-primary > .box-header .btn { color: #fff; } .box.box-solid.box-info { border: 1px solid #00c0ef; } .box.box-solid.box-info > .box-header { color: #fff; background: #00c0ef; background-color: #00c0ef; } .box.box-solid.box-info > .box-header a, .box.box-solid.box-info > .box-header .btn { color: #fff; } .box.box-solid.box-danger { border: 1px solid #dd4b39; } .box.box-solid.box-danger > .box-header { color: #fff; background: #dd4b39; background-color: #dd4b39; } .box.box-solid.box-danger > .box-header a, .box.box-solid.box-danger > .box-header .btn { color: #fff; } .box.box-solid.box-warning { border: 1px solid #f39c12; } .box.box-solid.box-warning > .box-header { color: #fff; background: #f39c12; background-color: #f39c12; } .box.box-solid.box-warning > .box-header a, .box.box-solid.box-warning > .box-header .btn { color: #fff; } .box.box-solid.box-success { border: 1px solid #00a65a; } .box.box-solid.box-success > .box-header { color: #fff; background: #00a65a; background-color: #00a65a; } .box.box-solid.box-success > .box-header a, .box.box-solid.box-success > .box-header .btn { color: #fff; } .box.box-solid > .box-header > .box-tools .btn { border: 0; box-shadow: none; } .box.box-solid[class*='bg'] > .box-header { color: #fff; } .box .box-group > .box { margin-bottom: 5px; } .box .knob-label { text-align: center; color: #333; font-weight: 100; font-size: 12px; margin-bottom: 0.3em; } .box > .overlay, .overlay-wrapper > .overlay, .box > .loading-img, .overlay-wrapper > .loading-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .box .overlay, .overlay-wrapper .overlay { z-index: 50; background: rgba(255, 255, 255, 0.7); border-radius: 3px; } .box .overlay > .fa, .overlay-wrapper .overlay > .fa { position: absolute; top: 50%; left: 50%; margin-left: -15px; margin-top: -15px; color: #000; font-size: 30px; } .box .overlay.dark, .overlay-wrapper .overlay.dark { background: rgba(0, 0, 0, 0.5); } .box-header:before, .box-body:before, .box-footer:before, .box-header:after, .box-body:after, .box-footer:after { content: " "; display: table; } .box-header:after, .box-body:after, .box-footer:after { clear: both; } .box-header { color: #444; display: block; padding: 10px; position: relative; } .box-header.with-border { border-bottom: 1px solid #f4f4f4; } .collapsed-box .box-header.with-border { border-bottom: none; } .box-header > .fa, .box-header > .glyphicon, .box-header > .ion, .box-header .box-title { display: inline-block; font-size: 18px; margin: 0; line-height: 1; } .box-header > .fa, .box-header > .glyphicon, .box-header > .ion { margin-right: 5px; } .box-header > .box-tools { float: right; margin-top: -5px; margin-bottom: -5px; } .box-header > .box-tools [data-toggle="tooltip"] { position: relative; } .box-header > .box-tools.pull-right .dropdown-menu { right: 0; left: auto; } .box-header > .box-tools .dropdown-menu > li > a { color: #444 !important; } .btn-box-tool { padding: 5px; font-size: 12px; background: transparent; color: #97a0b3; } .open .btn-box-tool, .btn-box-tool:hover { color: #606c84; } .btn-box-tool.btn:active { box-shadow: none; } .box-body { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 10px; } .no-header .box-body { border-top-right-radius: 3px; border-top-left-radius: 3px; } .box-body > .table { margin-bottom: 0; } .box-body .fc { margin-top: 5px; } .box-body .full-width-chart { margin: -19px; } .box-body.no-padding .full-width-chart { margin: -9px; } .box-body .box-pane { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 3px; } .box-body .box-pane-right { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 0; } .box-footer { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; border-top: 1px solid #f4f4f4; padding: 10px; background-color: #fff; } .chart-legend { margin: 10px 0; } @media (max-width: 991px) { .chart-legend > li { float: left; margin-right: 10px; } } .box-comments { background: #f7f7f7; } .box-comments .box-comment { padding: 8px 0; border-bottom: 1px solid #eee; } .box-comments .box-comment:before, .box-comments .box-comment:after { content: " "; display: table; } .box-comments .box-comment:after { clear: both; } .box-comments .box-comment:last-of-type { border-bottom: 0; } .box-comments .box-comment:first-of-type { padding-top: 0; } .box-comments .box-comment img { float: left; } .box-comments .comment-text { margin-left: 40px; color: #555; } .box-comments .username { color: #444; display: block; font-weight: 600; } .box-comments .text-muted { font-weight: 400; font-size: 12px; } /* Widget: TODO LIST */ .todo-list { margin: 0; padding: 0; list-style: none; overflow: auto; } .todo-list > li { border-radius: 2px; padding: 10px; background: #f4f4f4; margin-bottom: 2px; border-left: 2px solid #e6e7e8; color: #444; } .todo-list > li:last-of-type { margin-bottom: 0; } .todo-list > li > input[type='checkbox'] { margin: 0 10px 0 5px; } .todo-list > li .text { display: inline-block; margin-left: 5px; font-weight: 600; } .todo-list > li .label { margin-left: 10px; font-size: 9px; } .todo-list > li .tools { display: none; float: right; color: #dd4b39; } .todo-list > li .tools > .fa, .todo-list > li .tools > .glyphicon, .todo-list > li .tools > .ion { margin-right: 5px; cursor: pointer; } .todo-list > li:hover .tools { display: inline-block; } .todo-list > li.done { color: #999; } .todo-list > li.done .text { text-decoration: line-through; font-weight: 500; } .todo-list > li.done .label { background: #d2d6de !important; } .todo-list .danger { border-left-color: #dd4b39; } .todo-list .warning { border-left-color: #f39c12; } .todo-list .info { border-left-color: #00c0ef; } .todo-list .success { border-left-color: #00a65a; } .todo-list .primary { border-left-color: #3c8dbc; } .todo-list .handle { display: inline-block; cursor: move; margin: 0 5px; } /* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ .chat { padding: 5px 20px 5px 10px; } .chat .item { margin-bottom: 10px; } .chat .item:before, .chat .item:after { content: " "; display: table; } .chat .item:after { clear: both; } .chat .item > img { width: 40px; height: 40px; border: 2px solid transparent; border-radius: 50%; } .chat .item > .online { border: 2px solid #00a65a; } .chat .item > .offline { border: 2px solid #dd4b39; } .chat .item > .message { margin-left: 55px; margin-top: -40px; } .chat .item > .message > .name { display: block; font-weight: 600; } .chat .item > .attachment { border-radius: 3px; background: #f4f4f4; margin-left: 65px; margin-right: 15px; padding: 10px; } .chat .item > .attachment > h4 { margin: 0 0 5px 0; font-weight: 600; font-size: 14px; } .chat .item > .attachment > p, .chat .item > .attachment > .filename { font-weight: 600; font-size: 13px; font-style: italic; margin: 0; } .chat .item > .attachment:before, .chat .item > .attachment:after { content: " "; display: table; } .chat .item > .attachment:after { clear: both; } .box-input { max-width: 200px; } .modal .panel-body { color: #444; } /* * Component: Info Box * ------------------- */ .info-box { display: block; min-height: 90px; background: #fff; width: 100%; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 2px; margin-bottom: 15px; } .info-box small { font-size: 14px; } .info-box .progress { background: rgba(0, 0, 0, 0.2); margin: 5px -10px 5px -10px; height: 2px; } .info-box .progress, .info-box .progress .progress-bar { border-radius: 0; } .info-box .progress .progress-bar { background: #fff; } .info-box-icon { border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; display: block; float: left; height: 90px; width: 90px; text-align: center; font-size: 45px; line-height: 90px; background: rgba(0, 0, 0, 0.2); } .info-box-icon > img { max-width: 100%; } .info-box-content { padding: 5px 10px; margin-left: 90px; } .info-box-number { display: block; font-weight: bold; font-size: 18px; } .progress-description, .info-box-text { display: block; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .info-box-text { text-transform: uppercase; } .info-box-more { display: block; } .progress-description { margin: 0; } /* * Component: Timeline * ------------------- */ .timeline { position: relative; margin: 0 0 30px 0; padding: 0; list-style: none; } .timeline:before { content: ''; position: absolute; top: 0; bottom: 0; width: 4px; background: #ddd; left: 31px; margin: 0; border-radius: 2px; } .timeline > li { position: relative; margin-right: 10px; margin-bottom: 15px; } .timeline > li:before, .timeline > li:after { content: " "; display: table; } .timeline > li:after { clear: both; } .timeline > li > .timeline-item { -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; margin-top: 0; background: #fff; color: #444; margin-left: 60px; margin-right: 15px; padding: 0; position: relative; } .timeline > li > .timeline-item > .time { color: #999; float: right; padding: 10px; font-size: 12px; } .timeline > li > .timeline-item > .timeline-header { margin: 0; color: #555; border-bottom: 1px solid #f4f4f4; padding: 10px; font-size: 16px; line-height: 1.1; } .timeline > li > .timeline-item > .timeline-header > a { font-weight: 600; } .timeline > li > .timeline-item > .timeline-body, .timeline > li > .timeline-item > .timeline-footer { padding: 10px; } .timeline > li > .fa, .timeline > li > .glyphicon, .timeline > li > .ion { width: 30px; height: 30px; font-size: 15px; line-height: 30px; position: absolute; color: #666; background: #d2d6de; border-radius: 50%; text-align: center; left: 18px; top: 0; } .timeline > .time-label > span { font-weight: 600; padding: 5px; display: inline-block; background-color: #fff; border-radius: 4px; } .timeline-inverse > li > .timeline-item { background: #f0f0f0; border: 1px solid #ddd; -webkit-box-shadow: none; box-shadow: none; } .timeline-inverse > li > .timeline-item > .timeline-header { border-bottom-color: #ddd; } /* * Component: Button * ----------------- */ .btn { border-radius: 3px; -webkit-box-shadow: none; box-shadow: none; border: 1px solid transparent; } .btn.uppercase { text-transform: uppercase; } .btn.btn-flat { border-radius: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; border-width: 1px; } .btn:active { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn:focus { outline: none; } .btn.btn-file { position: relative; overflow: hidden; } .btn.btn-file > input[type='file'] { position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; opacity: 0; filter: alpha(opacity=0); outline: none; background: white; cursor: inherit; display: block; } .btn-default { background-color: #f4f4f4; color: #444; border-color: #ddd; } .btn-default:hover, .btn-default:active, .btn-default.hover { background-color: #e7e7e7; } .btn-primary { background-color: #3c8dbc; border-color: #367fa9; } .btn-primary:hover, .btn-primary:active, .btn-primary.hover { background-color: #367fa9; } .btn-success { background-color: #00a65a; border-color: #008d4c; } .btn-success:hover, .btn-success:active, .btn-success.hover { background-color: #008d4c; } .btn-info { background-color: #00c0ef; border-color: #00acd6; } .btn-info:hover, .btn-info:active, .btn-info.hover { background-color: #00acd6; } .btn-danger { background-color: #dd4b39; border-color: #d73925; } .btn-danger:hover, .btn-danger:active, .btn-danger.hover { background-color: #d73925; } .btn-warning { background-color: #f39c12; border-color: #e08e0b; } .btn-warning:hover, .btn-warning:active, .btn-warning.hover { background-color: #e08e0b; } .btn-outline { border: 1px solid #fff; background: transparent; color: #fff; } .btn-outline:hover, .btn-outline:focus, .btn-outline:active { color: rgba(255, 255, 255, 0.7); border-color: rgba(255, 255, 255, 0.7); } .btn-link { -webkit-box-shadow: none; box-shadow: none; } .btn[class*='bg-']:hover { -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); } .btn-app { border-radius: 3px; position: relative; padding: 15px 5px; margin: 0 0 10px 10px; min-width: 80px; height: 60px; text-align: center; color: #666; border: 1px solid #ddd; background-color: #f4f4f4; font-size: 12px; } .btn-app > .fa, .btn-app > .glyphicon, .btn-app > .ion { font-size: 20px; display: block; } .btn-app:hover { background: #f4f4f4; color: #444; border-color: #aaa; } .btn-app:active, .btn-app:focus { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn-app > .badge { position: absolute; top: -3px; right: -10px; font-size: 10px; font-weight: 400; } /* * Component: Callout * ------------------ */ .callout { border-radius: 3px; margin: 0 0 20px 0; padding: 15px 30px 15px 15px; border-left: 5px solid #eee; } .callout a { color: #fff; text-decoration: underline; } .callout a:hover { color: #eee; } .callout h4 { margin-top: 0; font-weight: 600; } .callout p:last-child { margin-bottom: 0; } .callout code, .callout .highlight { background-color: #fff; } .callout.callout-danger { border-color: #c23321; } .callout.callout-warning { border-color: #c87f0a; } .callout.callout-info { border-color: #0097bc; } .callout.callout-success { border-color: #00733e; } /* * Component: alert * ---------------- */ .alert { border-radius: 3px; } .alert h4 { font-weight: 600; } .alert .icon { margin-right: 10px; } .alert .close { color: #000; opacity: 0.2; filter: alpha(opacity=20); } .alert .close:hover { opacity: 0.5; filter: alpha(opacity=50); } .alert a { color: #fff; text-decoration: underline; } .alert-success { border-color: #008d4c; } .alert-danger, .alert-error { border-color: #d73925; } .alert-warning { border-color: #e08e0b; } .alert-info { border-color: #00acd6; } /* * Component: Nav * -------------- */ .nav > li > a:hover, .nav > li > a:active, .nav > li > a:focus { color: #444; background: #f7f7f7; } /* NAV PILLS */ .nav-pills > li > a { border-radius: 0; border-top: 3px solid transparent; color: #444; } .nav-pills > li > a > .fa, .nav-pills > li > a > .glyphicon, .nav-pills > li > a > .ion { margin-right: 5px; } .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { border-top-color: #3c8dbc; } .nav-pills > li.active > a { font-weight: 600; } /* NAV STACKED */ .nav-stacked > li > a { border-radius: 0; border-top: 0; border-left: 3px solid transparent; color: #444; } .nav-stacked > li.active > a, .nav-stacked > li.active > a:hover { background: transparent; color: #444; border-top: 0; border-left-color: #3c8dbc; } .nav-stacked > li.header { border-bottom: 1px solid #ddd; color: #777; margin-bottom: 10px; padding: 5px 10px; text-transform: uppercase; } /* NAV TABS */ .nav-tabs-custom { margin-bottom: 20px; background: #fff; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; } .nav-tabs-custom > .nav-tabs { margin: 0; border-bottom-color: #f4f4f4; border-top-right-radius: 3px; border-top-left-radius: 3px; } .nav-tabs-custom > .nav-tabs > li { border-top: 3px solid transparent; margin-bottom: -2px; margin-right: 5px; } .nav-tabs-custom > .nav-tabs > li.disabled > a { color: #777; } .nav-tabs-custom > .nav-tabs > li > a { color: #444; border-radius: 0; } .nav-tabs-custom > .nav-tabs > li > a.text-muted { color: #999; } .nav-tabs-custom > .nav-tabs > li > a, .nav-tabs-custom > .nav-tabs > li > a:hover { background: transparent; margin: 0; } .nav-tabs-custom > .nav-tabs > li > a:hover { color: #999; } .nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover, .nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, .nav-tabs-custom > .nav-tabs > li:not(.active) > a:active { border-color: transparent; } .nav-tabs-custom > .nav-tabs > li.active { border-top-color: #3c8dbc; } .nav-tabs-custom > .nav-tabs > li.active > a, .nav-tabs-custom > .nav-tabs > li.active:hover > a { background-color: #fff; color: #444; } .nav-tabs-custom > .nav-tabs > li.active > a { border-top-color: transparent; border-left-color: #f4f4f4; border-right-color: #f4f4f4; } .nav-tabs-custom > .nav-tabs > li:first-of-type { margin-left: 0; } .nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { border-left-color: transparent; } .nav-tabs-custom > .nav-tabs.pull-right { float: none !important; } .nav-tabs-custom > .nav-tabs.pull-right > li { float: right; } .nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { margin-right: 0; } .nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a { border-left-width: 1px; } .nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { border-left-color: #f4f4f4; border-right-color: transparent; } .nav-tabs-custom > .nav-tabs > li.header { line-height: 35px; padding: 0 10px; font-size: 20px; color: #444; } .nav-tabs-custom > .nav-tabs > li.header > .fa, .nav-tabs-custom > .nav-tabs > li.header > .glyphicon, .nav-tabs-custom > .nav-tabs > li.header > .ion { margin-right: 5px; } .nav-tabs-custom > .tab-content { background: #fff; padding: 10px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .nav-tabs-custom .dropdown.open > a:active, .nav-tabs-custom .dropdown.open > a:focus { background: transparent; color: #999; } .nav-tabs-custom.tab-primary > .nav-tabs > li.active { border-top-color: #3c8dbc; } .nav-tabs-custom.tab-info > .nav-tabs > li.active { border-top-color: #00c0ef; } .nav-tabs-custom.tab-danger > .nav-tabs > li.active { border-top-color: #dd4b39; } .nav-tabs-custom.tab-warning > .nav-tabs > li.active { border-top-color: #f39c12; } .nav-tabs-custom.tab-success > .nav-tabs > li.active { border-top-color: #00a65a; } .nav-tabs-custom.tab-default > .nav-tabs > li.active { border-top-color: #d2d6de; } /* PAGINATION */ .pagination > li > a { background: #fafafa; color: #666; } .pagination.pagination-flat > li > a { border-radius: 0 !important; } /* * Component: Products List * ------------------------ */ .products-list { list-style: none; margin: 0; padding: 0; } .products-list > .item { border-radius: 3px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); padding: 10px 0; background: #fff; } .products-list > .item:before, .products-list > .item:after { content: " "; display: table; } .products-list > .item:after { clear: both; } .products-list .product-img { float: left; } .products-list .product-img img { width: 50px; height: 50px; } .products-list .product-info { margin-left: 60px; } .products-list .product-title { font-weight: 600; } .products-list .product-description { display: block; color: #999; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .product-list-in-box > .item { -webkit-box-shadow: none; box-shadow: none; border-radius: 0; border-bottom: 1px solid #f4f4f4; } .product-list-in-box > .item:last-of-type { border-bottom-width: 0; } /* * Component: Table * ---------------- */ .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td { border-top: 1px solid #f4f4f4; } .table > thead > tr > th { border-bottom: 2px solid #f4f4f4; } .table tr td .progress { margin-top: 5px; } .table-bordered { border: 1px solid #f4f4f4; } .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { border: 1px solid #f4f4f4; } .table-bordered > thead > tr > th, .table-bordered > thead > tr > td { border-bottom-width: 2px; } .table.no-border, .table.no-border td, .table.no-border th { border: 0; } /* .text-center in tables */ table.text-center, table.text-center td, table.text-center th { text-align: center; } .table.align th { text-align: left; } .table.align td { text-align: right; } /* * Component: Label * ---------------- */ .label-default { background-color: #d2d6de; color: #444; } /* * Component: Direct Chat * ---------------------- */ .direct-chat .box-body { border-bottom-right-radius: 0; border-bottom-left-radius: 0; position: relative; overflow-x: hidden; padding: 0; } .direct-chat.chat-pane-open .direct-chat-contacts { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } .direct-chat-messages { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); padding: 10px; height: 250px; overflow: auto; } .direct-chat-msg, .direct-chat-text { display: block; } .direct-chat-msg { margin-bottom: 10px; } .direct-chat-msg:before, .direct-chat-msg:after { content: " "; display: table; } .direct-chat-msg:after { clear: both; } .direct-chat-messages, .direct-chat-contacts { -webkit-transition: -webkit-transform 0.5s ease-in-out; -moz-transition: -moz-transform 0.5s ease-in-out; -o-transition: -o-transform 0.5s ease-in-out; transition: transform 0.5s ease-in-out; } .direct-chat-text { border-radius: 5px; position: relative; padding: 5px 10px; background: #d2d6de; border: 1px solid #d2d6de; margin: 5px 0 0 50px; color: #444; } .direct-chat-text:after, .direct-chat-text:before { position: absolute; right: 100%; top: 15px; border: solid transparent; border-right-color: #d2d6de; content: ' '; height: 0; width: 0; pointer-events: none; } .direct-chat-text:after { border-width: 5px; margin-top: -5px; } .direct-chat-text:before { border-width: 6px; margin-top: -6px; } .right .direct-chat-text { margin-right: 50px; margin-left: 0; } .right .direct-chat-text:after, .right .direct-chat-text:before { right: auto; left: 100%; border-right-color: transparent; border-left-color: #d2d6de; } .direct-chat-img { border-radius: 50%; float: left; width: 40px; height: 40px; } .right .direct-chat-img { float: right; } .direct-chat-info { display: block; margin-bottom: 2px; font-size: 12px; } .direct-chat-name { font-weight: 600; } .direct-chat-timestamp { color: #999; } .direct-chat-contacts-open .direct-chat-contacts { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } .direct-chat-contacts { -webkit-transform: translate(101%, 0); -ms-transform: translate(101%, 0); -o-transform: translate(101%, 0); transform: translate(101%, 0); position: absolute; top: 0; bottom: 0; height: 250px; width: 100%; background: #222d32; color: #fff; overflow: auto; } .contacts-list > li { border-bottom: 1px solid rgba(0, 0, 0, 0.2); padding: 10px; margin: 0; } .contacts-list > li:before, .contacts-list > li:after { content: " "; display: table; } .contacts-list > li:after { clear: both; } .contacts-list > li:last-of-type { border-bottom: none; } .contacts-list-img { border-radius: 50%; width: 40px; float: left; } .contacts-list-info { margin-left: 45px; color: #fff; } .contacts-list-name, .contacts-list-status { display: block; } .contacts-list-name { font-weight: 600; } .contacts-list-status { font-size: 12px; } .contacts-list-date { color: #aaa; font-weight: normal; } .contacts-list-msg { color: #999; } .direct-chat-danger .right > .direct-chat-text { background: #dd4b39; border-color: #dd4b39; color: #fff; } .direct-chat-danger .right > .direct-chat-text:after, .direct-chat-danger .right > .direct-chat-text:before { border-left-color: #dd4b39; } .direct-chat-primary .right > .direct-chat-text { background: #3c8dbc; border-color: #3c8dbc; color: #fff; } .direct-chat-primary .right > .direct-chat-text:after, .direct-chat-primary .right > .direct-chat-text:before { border-left-color: #3c8dbc; } .direct-chat-warning .right > .direct-chat-text { background: #f39c12; border-color: #f39c12; color: #fff; } .direct-chat-warning .right > .direct-chat-text:after, .direct-chat-warning .right > .direct-chat-text:before { border-left-color: #f39c12; } .direct-chat-info .right > .direct-chat-text { background: #00c0ef; border-color: #00c0ef; color: #fff; } .direct-chat-info .right > .direct-chat-text:after, .direct-chat-info .right > .direct-chat-text:before { border-left-color: #00c0ef; } .direct-chat-success .right > .direct-chat-text { background: #00a65a; border-color: #00a65a; color: #fff; } .direct-chat-success .right > .direct-chat-text:after, .direct-chat-success .right > .direct-chat-text:before { border-left-color: #00a65a; } /* * Component: Users List * --------------------- */ .users-list > li { width: 25%; float: left; padding: 10px; text-align: center; } .users-list > li img { border-radius: 50%; max-width: 100%; height: auto; } .users-list > li > a:hover, .users-list > li > a:hover .users-list-name { color: #999; } .users-list-name, .users-list-date { display: block; } .users-list-name { font-weight: 600; color: #444; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .users-list-date { color: #999; font-size: 12px; } /* * Component: Carousel * ------------------- */ .carousel-control.left, .carousel-control.right { background-image: none; } .carousel-control > .fa { font-size: 40px; position: absolute; top: 50%; z-index: 5; display: inline-block; margin-top: -20px; } /* * Component: modal * ---------------- */ .modal { background: rgba(0, 0, 0, 0.3); } .modal-content { border-radius: 0; -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); border: 0; } @media (min-width: 768px) { .modal-content { -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); } } .modal-header { border-bottom-color: #f4f4f4; } .modal-footer { border-top-color: #f4f4f4; } .modal-primary .modal-header, .modal-primary .modal-footer { border-color: #307095; } .modal-warning .modal-header, .modal-warning .modal-footer { border-color: #c87f0a; } .modal-info .modal-header, .modal-info .modal-footer { border-color: #0097bc; } .modal-success .modal-header, .modal-success .modal-footer { border-color: #00733e; } .modal-danger .modal-header, .modal-danger .modal-footer { border-color: #c23321; } /* * Component: Social Widgets * ------------------------- */ .box-widget { border: none; position: relative; } .widget-user .widget-user-header { padding: 20px; height: 120px; border-top-right-radius: 3px; border-top-left-radius: 3px; } .widget-user .widget-user-username { margin-top: 0; margin-bottom: 5px; font-size: 25px; font-weight: 300; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); } .widget-user .widget-user-desc { margin-top: 0; } .widget-user .widget-user-image { position: absolute; top: 65px; left: 50%; margin-left: -45px; } .widget-user .widget-user-image > img { width: 90px; height: auto; border: 3px solid #fff; } .widget-user .box-footer { padding-top: 30px; } .widget-user-2 .widget-user-header { padding: 20px; border-top-right-radius: 3px; border-top-left-radius: 3px; } .widget-user-2 .widget-user-username { margin-top: 5px; margin-bottom: 5px; font-size: 25px; font-weight: 300; } .widget-user-2 .widget-user-desc { margin-top: 0; } .widget-user-2 .widget-user-username, .widget-user-2 .widget-user-desc { margin-left: 75px; } .widget-user-2 .widget-user-image > img { width: 65px; height: auto; float: left; } .treeview-menu { display: none; list-style: none; padding: 0; margin: 0; padding-left: 5px; } .treeview-menu .treeview-menu { padding-left: 20px; } .treeview-menu > li { margin: 0; } .treeview-menu > li > a { padding: 5px 5px 5px 15px; display: block; font-size: 14px; } .treeview-menu > li > a > .fa, .treeview-menu > li > a > .glyphicon, .treeview-menu > li > a > .ion { width: 20px; } .treeview-menu > li > a > .pull-right-container > .fa-angle-left, .treeview-menu > li > a > .pull-right-container > .fa-angle-down, .treeview-menu > li > a > .fa-angle-left, .treeview-menu > li > a > .fa-angle-down { width: auto; } .treeview > ul.treeview-menu { overflow: hidden; height: auto; padding-top: 0px !important; padding-bottom: 0px !important; } .treeview.menu-open > ul.treeview-menu { overflow: visible; height: auto; } /* * Page: Mailbox * ------------- */ .mailbox-messages > .table { margin: 0; } .mailbox-controls { padding: 5px; } .mailbox-controls.with-border { border-bottom: 1px solid #f4f4f4; } .mailbox-read-info { border-bottom: 1px solid #f4f4f4; padding: 10px; } .mailbox-read-info h3 { font-size: 20px; margin: 0; } .mailbox-read-info h5 { margin: 0; padding: 5px 0 0 0; } .mailbox-read-time { color: #999; font-size: 13px; } .mailbox-read-message { padding: 10px; } .mailbox-attachments li { float: left; width: 200px; border: 1px solid #eee; margin-bottom: 10px; margin-right: 10px; } .mailbox-attachment-name { font-weight: bold; color: #666; } .mailbox-attachment-icon, .mailbox-attachment-info, .mailbox-attachment-size { display: block; } .mailbox-attachment-info { padding: 10px; background: #f4f4f4; } .mailbox-attachment-size { color: #999; font-size: 12px; } .mailbox-attachment-icon { text-align: center; font-size: 65px; color: #666; padding: 20px 10px; } .mailbox-attachment-icon.has-img { padding: 0; } .mailbox-attachment-icon.has-img > img { max-width: 100%; height: auto; } /* * Page: Lock Screen * ----------------- */ /* ADD THIS CLASS TO THE <BODY> TAG */ .lockscreen { background: #d2d6de; } .lockscreen-logo { font-size: 35px; text-align: center; margin-bottom: 25px; font-weight: 300; } .lockscreen-logo a { color: #444; } .lockscreen-wrapper { max-width: 400px; margin: 0 auto; margin-top: 10%; } /* User name [optional] */ .lockscreen .lockscreen-name { text-align: center; font-weight: 600; } /* Will contain the image and the sign in form */ .lockscreen-item { border-radius: 4px; padding: 0; background: #fff; position: relative; margin: 10px auto 30px auto; width: 290px; } /* User image */ .lockscreen-image { border-radius: 50%; position: absolute; left: -10px; top: -25px; background: #fff; padding: 5px; z-index: 10; } .lockscreen-image > img { border-radius: 50%; width: 70px; height: 70px; } /* Contains the password input and the login button */ .lockscreen-credentials { margin-left: 70px; } .lockscreen-credentials .form-control { border: 0; } .lockscreen-credentials .btn { background-color: #fff; border: 0; padding: 0 10px; } .lockscreen-footer { margin-top: 10px; } /* * Page: Login & Register * ---------------------- */ .login-logo, .register-logo { font-size: 35px; text-align: center; margin-bottom: 25px; font-weight: 300; } .login-logo a, .register-logo a { color: #444; } .login-page, .register-page { height: auto; background: #d2d6de; } .login-box, .register-box { width: 360px; margin: 7% auto; } @media (max-width: 768px) { .login-box, .register-box { width: 90%; margin-top: 20px; } } .login-box-body, .register-box-body { background: #fff; padding: 20px; border-top: 0; color: #666; } .login-box-body .form-control-feedback, .register-box-body .form-control-feedback { color: #777; } .login-box-msg, .register-box-msg { margin: 0; text-align: center; padding: 0 20px 20px 20px; } .social-auth-links { margin: 10px 0; } /* * Page: 400 and 500 error pages * ------------------------------ */ .error-page { width: 600px; margin: 20px auto 0 auto; } @media (max-width: 991px) { .error-page { width: 100%; } } .error-page > .headline { float: left; font-size: 100px; font-weight: 300; } @media (max-width: 991px) { .error-page > .headline { float: none; text-align: center; } } .error-page > .error-content { margin-left: 190px; display: block; } @media (max-width: 991px) { .error-page > .error-content { margin-left: 0; } } .error-page > .error-content > h3 { font-weight: 300; font-size: 25px; } @media (max-width: 991px) { .error-page > .error-content > h3 { text-align: center; } } /* * Page: Invoice * ------------- */ .invoice { position: relative; background: #fff; border: 1px solid #f4f4f4; padding: 20px; margin: 10px 25px; } .invoice-title { margin-top: 0; } /* * Page: Profile * ------------- */ .profile-user-img { margin: 0 auto; width: 100px; padding: 3px; border: 3px solid #d2d6de; } .profile-username { font-size: 21px; margin-top: 5px; } .post { border-bottom: 1px solid #d2d6de; margin-bottom: 15px; padding-bottom: 15px; color: #666; } .post:last-of-type { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; } .post .user-block { margin-bottom: 15px; } /* * General: Miscellaneous * ---------------------- */ .pad { padding: 10px; } .margin { margin: 10px; } .margin-bottom { margin-bottom: 20px; } .margin-bottom-none { margin-bottom: 0; } .margin-r-5 { margin-right: 5px; } .inline { display: inline; } .description-block { display: block; margin: 10px 0; text-align: center; } .description-block.margin-bottom { margin-bottom: 25px; } .description-block > .description-header { margin: 0; padding: 0; font-weight: 600; font-size: 16px; } .description-block > .description-text { text-transform: uppercase; } .bg-red, .bg-yellow, .bg-aqua, .bg-blue, .bg-light-blue, .bg-green, .bg-navy, .bg-teal, .bg-olive, .bg-lime, .bg-orange, .bg-fuchsia, .bg-purple, .bg-maroon, .bg-black, .bg-red-active, .bg-yellow-active, .bg-aqua-active, .bg-blue-active, .bg-light-blue-active, .bg-green-active, .bg-navy-active, .bg-teal-active, .bg-olive-active, .bg-lime-active, .bg-orange-active, .bg-fuchsia-active, .bg-purple-active, .bg-maroon-active, .bg-black-active, .callout.callout-danger, .callout.callout-warning, .callout.callout-info, .callout.callout-success, .alert-success, .alert-danger, .alert-error, .alert-warning, .alert-info, .label-danger, .label-info, .label-warning, .label-primary, .label-success, .modal-primary .modal-body, .modal-primary .modal-header, .modal-primary .modal-footer, .modal-warning .modal-body, .modal-warning .modal-header, .modal-warning .modal-footer, .modal-info .modal-body, .modal-info .modal-header, .modal-info .modal-footer, .modal-success .modal-body, .modal-success .modal-header, .modal-success .modal-footer, .modal-danger .modal-body, .modal-danger .modal-header, .modal-danger .modal-footer { color: #fff !important; } .bg-gray { color: #000; background-color: #d2d6de !important; } .bg-gray-light { background-color: #f7f7f7; } .bg-black { background-color: #111 !important; } .bg-red, .callout.callout-danger, .alert-danger, .alert-error, .label-danger, .modal-danger .modal-body { background-color: #dd4b39 !important; } .bg-yellow, .callout.callout-warning, .alert-warning, .label-warning, .modal-warning .modal-body { background-color: #f39c12 !important; } .bg-aqua, .callout.callout-info, .alert-info, .label-info, .modal-info .modal-body { background-color: #00c0ef !important; } .bg-blue { background-color: #0073b7 !important; } .bg-light-blue, .label-primary, .modal-primary .modal-body { background-color: #3c8dbc !important; } .bg-green, .callout.callout-success, .alert-success, .label-success, .modal-success .modal-body { background-color: #00a65a !important; } .bg-navy { background-color: #001F3F !important; } .bg-teal { background-color: #39CCCC !important; } .bg-olive { background-color: #3D9970 !important; } .bg-lime { background-color: #01FF70 !important; } .bg-orange { background-color: #FF851B !important; } .bg-fuchsia { background-color: #F012BE !important; } .bg-purple { background-color: #605ca8 !important; } .bg-maroon { background-color: #D81B60 !important; } .bg-gray-active { color: #000; background-color: #b5bbc8 !important; } .bg-black-active { background-color: #000000 !important; } .bg-red-active, .modal-danger .modal-header, .modal-danger .modal-footer { background-color: #d33724 !important; } .bg-yellow-active, .modal-warning .modal-header, .modal-warning .modal-footer { background-color: #db8b0b !important; } .bg-aqua-active, .modal-info .modal-header, .modal-info .modal-footer { background-color: #00a7d0 !important; } .bg-blue-active { background-color: #005384 !important; } .bg-light-blue-active, .modal-primary .modal-header, .modal-primary .modal-footer { background-color: #357ca5 !important; } .bg-green-active, .modal-success .modal-header, .modal-success .modal-footer { background-color: #008d4c !important; } .bg-navy-active { background-color: #001a35 !important; } .bg-teal-active { background-color: #30bbbb !important; } .bg-olive-active { background-color: #368763 !important; } .bg-lime-active { background-color: #00e765 !important; } .bg-orange-active { background-color: #ff7701 !important; } .bg-fuchsia-active { background-color: #db0ead !important; } .bg-purple-active { background-color: #555299 !important; } .bg-maroon-active { background-color: #ca195a !important; } [class^="bg-"].disabled { opacity: 0.65; filter: alpha(opacity=65); } .text-red { color: #dd4b39 !important; } .text-yellow { color: #f39c12 !important; } .text-aqua { color: #00c0ef !important; } .text-blue { color: #0073b7 !important; } .text-black { color: #111 !important; } .text-light-blue { color: #3c8dbc !important; } .text-green { color: #00a65a !important; } .text-gray { color: #d2d6de !important; } .text-navy { color: #001F3F !important; } .text-teal { color: #39CCCC !important; } .text-olive { color: #3D9970 !important; } .text-lime { color: #01FF70 !important; } .text-orange { color: #FF851B !important; } .text-fuchsia { color: #F012BE !important; } .text-purple { color: #605ca8 !important; } .text-maroon { color: #D81B60 !important; } .link-muted { color: #7a869d; } .link-muted:hover, .link-muted:focus { color: #606c84; } .link-black { color: #666; } .link-black:hover, .link-black:focus { color: #999; } .hide { display: none !important; } .no-border { border: 0 !important; } .no-padding { padding: 0 !important; } .no-margin { margin: 0 !important; } .no-shadow { box-shadow: none !important; } .list-unstyled, .chart-legend, .contacts-list, .users-list, .mailbox-attachments { list-style: none; margin: 0; padding: 0; } .list-group-unbordered > .list-group-item { border-left: 0; border-right: 0; border-radius: 0; padding-left: 0; padding-right: 0; } .flat { border-radius: 0 !important; } .text-bold, .text-bold.table td, .text-bold.table th { font-weight: 700; } .text-sm { font-size: 12px; } .jqstooltip { padding: 5px !important; width: auto !important; height: auto !important; } .bg-teal-gradient { background: #39CCCC !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39CCCC), color-stop(1, #7adddd)) !important; background: -ms-linear-gradient(bottom, #39CCCC, #7adddd) !important; background: -moz-linear-gradient(center bottom, #39CCCC 0%, #7adddd 100%) !important; background: -o-linear-gradient(#7adddd, #39CCCC) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39CCCC', GradientType=0) !important; color: #fff; } .bg-light-blue-gradient { background: #3c8dbc !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important; background: -ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important; background: -moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important; background: -o-linear-gradient(#67a8ce, #3c8dbc) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important; color: #fff; } .bg-blue-gradient { background: #0073b7 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important; background: -ms-linear-gradient(bottom, #0073b7, #0089db) !important; background: -moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important; background: -o-linear-gradient(#0089db, #0073b7) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important; color: #fff; } .bg-aqua-gradient { background: #00c0ef !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important; background: -ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important; background: -moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important; background: -o-linear-gradient(#14d1ff, #00c0ef) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important; color: #fff; } .bg-yellow-gradient { background: #f39c12 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important; background: -ms-linear-gradient(bottom, #f39c12, #f7bc60) !important; background: -moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important; background: -o-linear-gradient(#f7bc60, #f39c12) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important; color: #fff; } .bg-purple-gradient { background: #605ca8 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important; background: -ms-linear-gradient(bottom, #605ca8, #9491c4) !important; background: -moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important; background: -o-linear-gradient(#9491c4, #605ca8) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important; color: #fff; } .bg-green-gradient { background: #00a65a !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important; background: -ms-linear-gradient(bottom, #00a65a, #00ca6d) !important; background: -moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important; background: -o-linear-gradient(#00ca6d, #00a65a) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important; color: #fff; } .bg-red-gradient { background: #dd4b39 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important; background: -ms-linear-gradient(bottom, #dd4b39, #e47365) !important; background: -moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important; background: -o-linear-gradient(#e47365, #dd4b39) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important; color: #fff; } .bg-black-gradient { background: #111 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important; background: -ms-linear-gradient(bottom, #111, #2b2b2b) !important; background: -moz-linear-gradient(center bottom, #111 0%, #2b2b2b 100%) !important; background: -o-linear-gradient(#2b2b2b, #111) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111', GradientType=0) !important; color: #fff; } .bg-maroon-gradient { background: #D81B60 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #D81B60), color-stop(1, #e73f7c)) !important; background: -ms-linear-gradient(bottom, #D81B60, #e73f7c) !important; background: -moz-linear-gradient(center bottom, #D81B60 0%, #e73f7c 100%) !important; background: -o-linear-gradient(#e73f7c, #D81B60) !important; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#D81B60', GradientType=0) !important; color: #fff; } .description-block .description-icon { font-size: 16px; } .no-pad-top { padding-top: 0; } .position-static { position: static !important; } .list-header { font-size: 15px; padding: 10px 4px; font-weight: bold; color: #666; } .list-seperator { height: 1px; background: #f4f4f4; margin: 15px 0 9px 0; } .list-link > a { padding: 4px; color: #777; } .list-link > a:hover { color: #222; } .font-light { font-weight: 300; } .user-block:before, .user-block:after { content: " "; display: table; } .user-block:after { clear: both; } .user-block img { width: 40px; height: 40px; float: left; } .user-block .username, .user-block .description, .user-block .comment { display: block; margin-left: 50px; } .user-block .username { font-size: 16px; font-weight: 600; } .user-block .description { color: #999; font-size: 13px; } .user-block.user-block-sm .username, .user-block.user-block-sm .description, .user-block.user-block-sm .comment { margin-left: 40px; } .user-block.user-block-sm .username { font-size: 14px; } .img-sm, .img-md, .img-lg, .box-comments .box-comment img, .user-block.user-block-sm img { float: left; } .img-sm, .box-comments .box-comment img, .user-block.user-block-sm img { width: 30px !important; height: 30px !important; } .img-sm + .img-push { margin-left: 40px; } .img-md { width: 60px; height: 60px; } .img-md + .img-push { margin-left: 70px; } .img-lg { width: 100px; height: 100px; } .img-lg + .img-push { margin-left: 110px; } .img-bordered { border: 3px solid #d2d6de; padding: 3px; } .img-bordered-sm { border: 2px solid #d2d6de; padding: 2px; } .attachment-block { border: 1px solid #f4f4f4; padding: 5px; margin-bottom: 10px; background: #f7f7f7; } .attachment-block .attachment-img { max-width: 100px; max-height: 100px; height: auto; float: left; } .attachment-block .attachment-pushed { margin-left: 110px; } .attachment-block .attachment-heading { margin: 0; } .attachment-block .attachment-text { color: #555; } .connectedSortable { min-height: 100px; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .sort-highlight { background: #f4f4f4; border: 1px dashed #ddd; margin-bottom: 10px; } .full-opacity-hover { opacity: 0.65; filter: alpha(opacity=65); } .full-opacity-hover:hover { opacity: 1; filter: alpha(opacity=100); } .chart { position: relative; overflow: hidden; width: 100%; } .chart svg, .chart canvas { width: 100% !important; } hr { border-top: 1px solid #555555; } #red .slider-selection { background: #f56954; } #blue .slider-selection { background: #3c8dbc; } #green .slider-selection { background: #00a65a; } #yellow .slider-selection { background: #f39c12; } #aqua .slider-selection { background: #00c0ef; } #purple .slider-selection { background: #932ab6; } /* * Misc: print * ----------- */ @media print { .no-print, .main-sidebar, .left-side, .main-header, .content-header { display: none !important; } .content-wrapper, .right-side, .main-footer { margin-left: 0 !important; min-height: 0 !important; -webkit-transform: translate(0, 0) !important; -ms-transform: translate(0, 0) !important; -o-transform: translate(0, 0) !important; transform: translate(0, 0) !important; } .fixed .content-wrapper, .fixed .right-side { padding-top: 0 !important; } .invoice { width: 100%; border: 0; margin: 0; padding: 0; } .invoice-col { float: left; width: 33.3333333%; } .table-responsive { overflow: auto; } .table-responsive > .table tr th, .table-responsive > .table tr td { white-space: normal !important; } } AdminLTE/css/alt/AdminLTE-fullcalendar.min.css 0000644 00000002675 15002261751 0015045 0 ustar 00 .fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{width:100%;border:0}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0}.fc-toolbar{padding:10px;margin:0}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;margin-right:5px;line-height:30px}.fc-color-picker>li .fa{-webkit-transition:-webkit-transform linear .3s;-moz-transition:-moz-transform linear .3s;-o-transition:-o-transform linear .3s;transition:transform linear .3s}.fc-color-picker>li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}#add-new-event{-webkit-transition:all linear .3s;-o-transition:all linear .3s;transition:all linear .3s}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2)} AdminLTE/css/skins/skin-blue-light.css 0000644 00000010665 15002261751 0013577 0 ustar 00 /* * Skin: Blue * ---------- */ .skin-blue-light .main-header .navbar { background-color: #3c8dbc; } .skin-blue-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-blue-light .main-header .navbar .nav > li > a:hover, .skin-blue-light .main-header .navbar .nav > li > a:active, .skin-blue-light .main-header .navbar .nav > li > a:focus, .skin-blue-light .main-header .navbar .nav .open > a, .skin-blue-light .main-header .navbar .nav .open > a:hover, .skin-blue-light .main-header .navbar .nav .open > a:focus, .skin-blue-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-blue-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-blue-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-blue-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-blue-light .main-header .navbar .sidebar-toggle:hover { background-color: #367fa9; } @media (max-width: 767px) { .skin-blue-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-blue-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { background: #367fa9; } } .skin-blue-light .main-header .logo { background-color: #3c8dbc; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue-light .main-header .logo:hover { background-color: #3b8ab8; } .skin-blue-light .main-header li.user-header { background-color: #3c8dbc; } .skin-blue-light .content-header { background: transparent; } .skin-blue-light .wrapper, .skin-blue-light .main-sidebar, .skin-blue-light .left-side { background-color: #f9fafc; } .skin-blue-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-blue-light .user-panel > .info, .skin-blue-light .user-panel > .info > a { color: #444444; } .skin-blue-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-blue-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-blue-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-blue-light .sidebar-menu > li:hover > a, .skin-blue-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-blue-light .sidebar-menu > li.active { border-left-color: #3c8dbc; } .skin-blue-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-blue-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-blue-light .sidebar a { color: #444444; } .skin-blue-light .sidebar a:hover { text-decoration: none; } .skin-blue-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-blue-light .sidebar-menu .treeview-menu > li.active > a, .skin-blue-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-blue-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-blue-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-blue-light .sidebar-form input[type="text"], .skin-blue-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-blue-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-blue-light .sidebar-form input[type="text"]:focus, .skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-blue-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } .skin-blue-light .main-footer { border-top-color: #d2d6de; } .skin-blue.layout-top-nav .main-header > .logo { background-color: #3c8dbc; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue.layout-top-nav .main-header > .logo:hover { background-color: #3b8ab8; } AdminLTE/css/skins/skin-red.min.css 0000644 00000005550 15002261751 0013074 0 ustar 00 .skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a,.skin-red .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-red .sidebar-menu>li.active>a{border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-red .sidebar-menu .treeview-menu>li.active>a,.skin-red .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} AdminLTE/css/skins/skin-green.css 0000644 00000006671 15002261751 0012645 0 ustar 00 /* * Skin: Green * ----------- */ .skin-green .main-header .navbar { background-color: #00a65a; } .skin-green .main-header .navbar .nav > li > a { color: #ffffff; } .skin-green .main-header .navbar .nav > li > a:hover, .skin-green .main-header .navbar .nav > li > a:active, .skin-green .main-header .navbar .nav > li > a:focus, .skin-green .main-header .navbar .nav .open > a, .skin-green .main-header .navbar .nav .open > a:hover, .skin-green .main-header .navbar .nav .open > a:focus, .skin-green .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-green .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-green .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-green .main-header .navbar .sidebar-toggle { color: #fff; } .skin-green .main-header .navbar .sidebar-toggle:hover { background-color: #008d4c; } @media (max-width: 767px) { .skin-green .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-green .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-green .main-header .navbar .dropdown-menu li a:hover { background: #008d4c; } } .skin-green .main-header .logo { background-color: #008d4c; color: #ffffff; border-bottom: 0 solid transparent; } .skin-green .main-header .logo:hover { background-color: #008749; } .skin-green .main-header li.user-header { background-color: #00a65a; } .skin-green .content-header { background: transparent; } .skin-green .wrapper, .skin-green .main-sidebar, .skin-green .left-side { background-color: #222d32; } .skin-green .user-panel > .info, .skin-green .user-panel > .info > a { color: #fff; } .skin-green .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-green .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-green .sidebar-menu > li:hover > a, .skin-green .sidebar-menu > li.active > a, .skin-green .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-green .sidebar-menu > li.active > a { border-left-color: #00a65a; } .skin-green .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-green .sidebar a { color: #b8c7ce; } .skin-green .sidebar a:hover { text-decoration: none; } .skin-green .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-green .sidebar-menu .treeview-menu > li.active > a, .skin-green .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-green .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-green .sidebar-form input[type="text"], .skin-green .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-green .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-green .sidebar-form input[type="text"]:focus, .skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-green .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } AdminLTE/css/skins/skin-green-light.min.css 0000644 00000007207 15002261751 0014530 0 ustar 00 .skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .main-sidebar{border-right:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-green-light .sidebar-menu .treeview-menu>li.active>a,.skin-green-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-green-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} AdminLTE/css/skins/_all-skins.css 0000644 00000136531 15002261751 0012636 0 ustar 00 /* * Skin: Blue * ---------- */ .skin-blue .main-header .navbar { background-color: #3c8dbc; } .skin-blue .main-header .navbar .nav > li > a { color: #ffffff; } .skin-blue .main-header .navbar .nav > li > a:hover, .skin-blue .main-header .navbar .nav > li > a:active, .skin-blue .main-header .navbar .nav > li > a:focus, .skin-blue .main-header .navbar .nav .open > a, .skin-blue .main-header .navbar .nav .open > a:hover, .skin-blue .main-header .navbar .nav .open > a:focus, .skin-blue .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-blue .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-blue .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-blue .main-header .navbar .sidebar-toggle { color: #fff; } .skin-blue .main-header .navbar .sidebar-toggle:hover { background-color: #367fa9; } @media (max-width: 767px) { .skin-blue .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-blue .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-blue .main-header .navbar .dropdown-menu li a:hover { background: #367fa9; } } .skin-blue .main-header .logo { background-color: #367fa9; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue .main-header .logo:hover { background-color: #357ca5; } .skin-blue .main-header li.user-header { background-color: #3c8dbc; } .skin-blue .content-header { background: transparent; } .skin-blue .wrapper, .skin-blue .main-sidebar, .skin-blue .left-side { background-color: #222d32; } .skin-blue .user-panel > .info, .skin-blue .user-panel > .info > a { color: #fff; } .skin-blue .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-blue .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-blue .sidebar-menu > li:hover > a, .skin-blue .sidebar-menu > li.active > a, .skin-blue .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-blue .sidebar-menu > li.active > a { border-left-color: #3c8dbc; } .skin-blue .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-blue .sidebar a { color: #b8c7ce; } .skin-blue .sidebar a:hover { text-decoration: none; } .skin-blue .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-blue .sidebar-menu .treeview-menu > li.active > a, .skin-blue .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-blue .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-blue .sidebar-form input[type="text"], .skin-blue .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-blue .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-blue .sidebar-form input[type="text"]:focus, .skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-blue .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } .skin-blue.layout-top-nav .main-header > .logo { background-color: #3c8dbc; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue.layout-top-nav .main-header > .logo:hover { background-color: #3b8ab8; } /* * Skin: Blue * ---------- */ .skin-blue-light .main-header .navbar { background-color: #3c8dbc; } .skin-blue-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-blue-light .main-header .navbar .nav > li > a:hover, .skin-blue-light .main-header .navbar .nav > li > a:active, .skin-blue-light .main-header .navbar .nav > li > a:focus, .skin-blue-light .main-header .navbar .nav .open > a, .skin-blue-light .main-header .navbar .nav .open > a:hover, .skin-blue-light .main-header .navbar .nav .open > a:focus, .skin-blue-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-blue-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-blue-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-blue-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-blue-light .main-header .navbar .sidebar-toggle:hover { background-color: #367fa9; } @media (max-width: 767px) { .skin-blue-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-blue-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { background: #367fa9; } } .skin-blue-light .main-header .logo { background-color: #3c8dbc; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue-light .main-header .logo:hover { background-color: #3b8ab8; } .skin-blue-light .main-header li.user-header { background-color: #3c8dbc; } .skin-blue-light .content-header { background: transparent; } .skin-blue-light .wrapper, .skin-blue-light .main-sidebar, .skin-blue-light .left-side { background-color: #f9fafc; } .skin-blue-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-blue-light .user-panel > .info, .skin-blue-light .user-panel > .info > a { color: #444444; } .skin-blue-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-blue-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-blue-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-blue-light .sidebar-menu > li:hover > a, .skin-blue-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-blue-light .sidebar-menu > li.active { border-left-color: #3c8dbc; } .skin-blue-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-blue-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-blue-light .sidebar a { color: #444444; } .skin-blue-light .sidebar a:hover { text-decoration: none; } .skin-blue-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-blue-light .sidebar-menu .treeview-menu > li.active > a, .skin-blue-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-blue-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-blue-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-blue-light .sidebar-form input[type="text"], .skin-blue-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-blue-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-blue-light .sidebar-form input[type="text"]:focus, .skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-blue-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } .skin-blue-light .main-footer { border-top-color: #d2d6de; } .skin-blue.layout-top-nav .main-header > .logo { background-color: #3c8dbc; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue.layout-top-nav .main-header > .logo:hover { background-color: #3b8ab8; } /* * Skin: Black * ----------- */ /* skin-black navbar */ .skin-black .main-header { -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); } .skin-black .main-header .navbar-toggle { color: #333; } .skin-black .main-header .navbar-brand { color: #333; border-right: 1px solid #eee; } .skin-black .main-header .navbar { background-color: #ffffff; } .skin-black .main-header .navbar .nav > li > a { color: #333333; } .skin-black .main-header .navbar .nav > li > a:hover, .skin-black .main-header .navbar .nav > li > a:active, .skin-black .main-header .navbar .nav > li > a:focus, .skin-black .main-header .navbar .nav .open > a, .skin-black .main-header .navbar .nav .open > a:hover, .skin-black .main-header .navbar .nav .open > a:focus, .skin-black .main-header .navbar .nav > .active > a { background: #ffffff; color: #999999; } .skin-black .main-header .navbar .sidebar-toggle { color: #333333; } .skin-black .main-header .navbar .sidebar-toggle:hover { color: #999999; background: #ffffff; } .skin-black .main-header .navbar > .sidebar-toggle { color: #333; border-right: 1px solid #eee; } .skin-black .main-header .navbar .navbar-nav > li > a { border-right: 1px solid #eee; } .skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, .skin-black .main-header .navbar .navbar-right > li > a { border-left: 1px solid #eee; border-right-width: 0; } .skin-black .main-header .logo { background-color: #ffffff; color: #333333; border-bottom: 0 solid transparent; border-right: 1px solid #eee; } .skin-black .main-header .logo:hover { background-color: #fcfcfc; } @media (max-width: 767px) { .skin-black .main-header .logo { background-color: #222222; color: #ffffff; border-bottom: 0 solid transparent; border-right: none; } .skin-black .main-header .logo:hover { background-color: #1f1f1f; } } .skin-black .main-header li.user-header { background-color: #222; } .skin-black .content-header { background: transparent; box-shadow: none; } .skin-black .wrapper, .skin-black .main-sidebar, .skin-black .left-side { background-color: #222d32; } .skin-black .user-panel > .info, .skin-black .user-panel > .info > a { color: #fff; } .skin-black .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-black .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-black .sidebar-menu > li:hover > a, .skin-black .sidebar-menu > li.active > a, .skin-black .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-black .sidebar-menu > li.active > a { border-left-color: #ffffff; } .skin-black .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-black .sidebar a { color: #b8c7ce; } .skin-black .sidebar a:hover { text-decoration: none; } .skin-black .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-black .sidebar-menu .treeview-menu > li.active > a, .skin-black .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-black .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-black .sidebar-form input[type="text"], .skin-black .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-black .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-black .sidebar-form input[type="text"]:focus, .skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-black .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } .skin-black .pace .pace-progress { background: #222; } .skin-black .pace .pace-activity { border-top-color: #222; border-left-color: #222; } /* * Skin: Black * ----------- */ /* skin-black navbar */ .skin-black-light .main-header { -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); } .skin-black-light .main-header .navbar-toggle { color: #333; } .skin-black-light .main-header .navbar-brand { color: #333; border-right: 1px solid #d2d6de; } .skin-black-light .main-header .navbar { background-color: #ffffff; } .skin-black-light .main-header .navbar .nav > li > a { color: #333333; } .skin-black-light .main-header .navbar .nav > li > a:hover, .skin-black-light .main-header .navbar .nav > li > a:active, .skin-black-light .main-header .navbar .nav > li > a:focus, .skin-black-light .main-header .navbar .nav .open > a, .skin-black-light .main-header .navbar .nav .open > a:hover, .skin-black-light .main-header .navbar .nav .open > a:focus, .skin-black-light .main-header .navbar .nav > .active > a { background: #ffffff; color: #999999; } .skin-black-light .main-header .navbar .sidebar-toggle { color: #333333; } .skin-black-light .main-header .navbar .sidebar-toggle:hover { color: #999999; background: #ffffff; } .skin-black-light .main-header .navbar > .sidebar-toggle { color: #333; border-right: 1px solid #d2d6de; } .skin-black-light .main-header .navbar .navbar-nav > li > a { border-right: 1px solid #d2d6de; } .skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, .skin-black-light .main-header .navbar .navbar-right > li > a { border-left: 1px solid #d2d6de; border-right-width: 0; } .skin-black-light .main-header .logo { background-color: #ffffff; color: #333333; border-bottom: 0 solid transparent; border-right: 1px solid #d2d6de; } .skin-black-light .main-header .logo:hover { background-color: #fcfcfc; } @media (max-width: 767px) { .skin-black-light .main-header .logo { background-color: #222222; color: #ffffff; border-bottom: 0 solid transparent; border-right: none; } .skin-black-light .main-header .logo:hover { background-color: #1f1f1f; } } .skin-black-light .main-header li.user-header { background-color: #222; } .skin-black-light .content-header { background: transparent; box-shadow: none; } .skin-black-light .wrapper, .skin-black-light .main-sidebar, .skin-black-light .left-side { background-color: #f9fafc; } .skin-black-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-black-light .user-panel > .info, .skin-black-light .user-panel > .info > a { color: #444444; } .skin-black-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-black-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-black-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-black-light .sidebar-menu > li:hover > a, .skin-black-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-black-light .sidebar-menu > li.active { border-left-color: #ffffff; } .skin-black-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-black-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-black-light .sidebar a { color: #444444; } .skin-black-light .sidebar a:hover { text-decoration: none; } .skin-black-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-black-light .sidebar-menu .treeview-menu > li.active > a, .skin-black-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-black-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-black-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-black-light .sidebar-form input[type="text"], .skin-black-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-black-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-black-light .sidebar-form input[type="text"]:focus, .skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-black-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } /* * Skin: Green * ----------- */ .skin-green .main-header .navbar { background-color: #00a65a; } .skin-green .main-header .navbar .nav > li > a { color: #ffffff; } .skin-green .main-header .navbar .nav > li > a:hover, .skin-green .main-header .navbar .nav > li > a:active, .skin-green .main-header .navbar .nav > li > a:focus, .skin-green .main-header .navbar .nav .open > a, .skin-green .main-header .navbar .nav .open > a:hover, .skin-green .main-header .navbar .nav .open > a:focus, .skin-green .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-green .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-green .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-green .main-header .navbar .sidebar-toggle { color: #fff; } .skin-green .main-header .navbar .sidebar-toggle:hover { background-color: #008d4c; } @media (max-width: 767px) { .skin-green .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-green .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-green .main-header .navbar .dropdown-menu li a:hover { background: #008d4c; } } .skin-green .main-header .logo { background-color: #008d4c; color: #ffffff; border-bottom: 0 solid transparent; } .skin-green .main-header .logo:hover { background-color: #008749; } .skin-green .main-header li.user-header { background-color: #00a65a; } .skin-green .content-header { background: transparent; } .skin-green .wrapper, .skin-green .main-sidebar, .skin-green .left-side { background-color: #222d32; } .skin-green .user-panel > .info, .skin-green .user-panel > .info > a { color: #fff; } .skin-green .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-green .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-green .sidebar-menu > li:hover > a, .skin-green .sidebar-menu > li.active > a, .skin-green .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-green .sidebar-menu > li.active > a { border-left-color: #00a65a; } .skin-green .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-green .sidebar a { color: #b8c7ce; } .skin-green .sidebar a:hover { text-decoration: none; } .skin-green .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-green .sidebar-menu .treeview-menu > li.active > a, .skin-green .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-green .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-green .sidebar-form input[type="text"], .skin-green .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-green .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-green .sidebar-form input[type="text"]:focus, .skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-green .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } /* * Skin: Green * ----------- */ .skin-green-light .main-header .navbar { background-color: #00a65a; } .skin-green-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-green-light .main-header .navbar .nav > li > a:hover, .skin-green-light .main-header .navbar .nav > li > a:active, .skin-green-light .main-header .navbar .nav > li > a:focus, .skin-green-light .main-header .navbar .nav .open > a, .skin-green-light .main-header .navbar .nav .open > a:hover, .skin-green-light .main-header .navbar .nav .open > a:focus, .skin-green-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-green-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-green-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-green-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-green-light .main-header .navbar .sidebar-toggle:hover { background-color: #008d4c; } @media (max-width: 767px) { .skin-green-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-green-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-green-light .main-header .navbar .dropdown-menu li a:hover { background: #008d4c; } } .skin-green-light .main-header .logo { background-color: #00a65a; color: #ffffff; border-bottom: 0 solid transparent; } .skin-green-light .main-header .logo:hover { background-color: #00a157; } .skin-green-light .main-header li.user-header { background-color: #00a65a; } .skin-green-light .content-header { background: transparent; } .skin-green-light .wrapper, .skin-green-light .main-sidebar, .skin-green-light .left-side { background-color: #f9fafc; } .skin-green-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-green-light .user-panel > .info, .skin-green-light .user-panel > .info > a { color: #444444; } .skin-green-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-green-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-green-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-green-light .sidebar-menu > li:hover > a, .skin-green-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-green-light .sidebar-menu > li.active { border-left-color: #00a65a; } .skin-green-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-green-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-green-light .sidebar a { color: #444444; } .skin-green-light .sidebar a:hover { text-decoration: none; } .skin-green-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-green-light .sidebar-menu .treeview-menu > li.active > a, .skin-green-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-green-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-green-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-green-light .sidebar-form input[type="text"], .skin-green-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-green-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-green-light .sidebar-form input[type="text"]:focus, .skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-green-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } /* * Skin: Red * --------- */ .skin-red .main-header .navbar { background-color: #dd4b39; } .skin-red .main-header .navbar .nav > li > a { color: #ffffff; } .skin-red .main-header .navbar .nav > li > a:hover, .skin-red .main-header .navbar .nav > li > a:active, .skin-red .main-header .navbar .nav > li > a:focus, .skin-red .main-header .navbar .nav .open > a, .skin-red .main-header .navbar .nav .open > a:hover, .skin-red .main-header .navbar .nav .open > a:focus, .skin-red .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-red .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-red .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-red .main-header .navbar .sidebar-toggle { color: #fff; } .skin-red .main-header .navbar .sidebar-toggle:hover { background-color: #d73925; } @media (max-width: 767px) { .skin-red .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-red .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-red .main-header .navbar .dropdown-menu li a:hover { background: #d73925; } } .skin-red .main-header .logo { background-color: #d73925; color: #ffffff; border-bottom: 0 solid transparent; } .skin-red .main-header .logo:hover { background-color: #d33724; } .skin-red .main-header li.user-header { background-color: #dd4b39; } .skin-red .content-header { background: transparent; } .skin-red .wrapper, .skin-red .main-sidebar, .skin-red .left-side { background-color: #222d32; } .skin-red .user-panel > .info, .skin-red .user-panel > .info > a { color: #fff; } .skin-red .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-red .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-red .sidebar-menu > li:hover > a, .skin-red .sidebar-menu > li.active > a, .skin-red .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-red .sidebar-menu > li.active > a { border-left-color: #dd4b39; } .skin-red .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-red .sidebar a { color: #b8c7ce; } .skin-red .sidebar a:hover { text-decoration: none; } .skin-red .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-red .sidebar-menu .treeview-menu > li.active > a, .skin-red .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-red .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-red .sidebar-form input[type="text"], .skin-red .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-red .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-red .sidebar-form input[type="text"]:focus, .skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-red .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } /* * Skin: Red * --------- */ .skin-red-light .main-header .navbar { background-color: #dd4b39; } .skin-red-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-red-light .main-header .navbar .nav > li > a:hover, .skin-red-light .main-header .navbar .nav > li > a:active, .skin-red-light .main-header .navbar .nav > li > a:focus, .skin-red-light .main-header .navbar .nav .open > a, .skin-red-light .main-header .navbar .nav .open > a:hover, .skin-red-light .main-header .navbar .nav .open > a:focus, .skin-red-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-red-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-red-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-red-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-red-light .main-header .navbar .sidebar-toggle:hover { background-color: #d73925; } @media (max-width: 767px) { .skin-red-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-red-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-red-light .main-header .navbar .dropdown-menu li a:hover { background: #d73925; } } .skin-red-light .main-header .logo { background-color: #dd4b39; color: #ffffff; border-bottom: 0 solid transparent; } .skin-red-light .main-header .logo:hover { background-color: #dc4735; } .skin-red-light .main-header li.user-header { background-color: #dd4b39; } .skin-red-light .content-header { background: transparent; } .skin-red-light .wrapper, .skin-red-light .main-sidebar, .skin-red-light .left-side { background-color: #f9fafc; } .skin-red-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-red-light .user-panel > .info, .skin-red-light .user-panel > .info > a { color: #444444; } .skin-red-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-red-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-red-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-red-light .sidebar-menu > li:hover > a, .skin-red-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-red-light .sidebar-menu > li.active { border-left-color: #dd4b39; } .skin-red-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-red-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-red-light .sidebar a { color: #444444; } .skin-red-light .sidebar a:hover { text-decoration: none; } .skin-red-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-red-light .sidebar-menu .treeview-menu > li.active > a, .skin-red-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-red-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-red-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-red-light .sidebar-form input[type="text"], .skin-red-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-red-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-red-light .sidebar-form input[type="text"]:focus, .skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-red-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } /* * Skin: Yellow * ------------ */ .skin-yellow .main-header .navbar { background-color: #f39c12; } .skin-yellow .main-header .navbar .nav > li > a { color: #ffffff; } .skin-yellow .main-header .navbar .nav > li > a:hover, .skin-yellow .main-header .navbar .nav > li > a:active, .skin-yellow .main-header .navbar .nav > li > a:focus, .skin-yellow .main-header .navbar .nav .open > a, .skin-yellow .main-header .navbar .nav .open > a:hover, .skin-yellow .main-header .navbar .nav .open > a:focus, .skin-yellow .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-yellow .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-yellow .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-yellow .main-header .navbar .sidebar-toggle { color: #fff; } .skin-yellow .main-header .navbar .sidebar-toggle:hover { background-color: #e08e0b; } @media (max-width: 767px) { .skin-yellow .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-yellow .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-yellow .main-header .navbar .dropdown-menu li a:hover { background: #e08e0b; } } .skin-yellow .main-header .logo { background-color: #e08e0b; color: #ffffff; border-bottom: 0 solid transparent; } .skin-yellow .main-header .logo:hover { background-color: #db8b0b; } .skin-yellow .main-header li.user-header { background-color: #f39c12; } .skin-yellow .content-header { background: transparent; } .skin-yellow .wrapper, .skin-yellow .main-sidebar, .skin-yellow .left-side { background-color: #222d32; } .skin-yellow .user-panel > .info, .skin-yellow .user-panel > .info > a { color: #fff; } .skin-yellow .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-yellow .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-yellow .sidebar-menu > li:hover > a, .skin-yellow .sidebar-menu > li.active > a, .skin-yellow .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-yellow .sidebar-menu > li.active > a { border-left-color: #f39c12; } .skin-yellow .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-yellow .sidebar a { color: #b8c7ce; } .skin-yellow .sidebar a:hover { text-decoration: none; } .skin-yellow .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-yellow .sidebar-menu .treeview-menu > li.active > a, .skin-yellow .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-yellow .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-yellow .sidebar-form input[type="text"], .skin-yellow .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-yellow .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-yellow .sidebar-form input[type="text"]:focus, .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-yellow .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } /* * Skin: Yellow * ------------ */ .skin-yellow-light .main-header .navbar { background-color: #f39c12; } .skin-yellow-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-yellow-light .main-header .navbar .nav > li > a:hover, .skin-yellow-light .main-header .navbar .nav > li > a:active, .skin-yellow-light .main-header .navbar .nav > li > a:focus, .skin-yellow-light .main-header .navbar .nav .open > a, .skin-yellow-light .main-header .navbar .nav .open > a:hover, .skin-yellow-light .main-header .navbar .nav .open > a:focus, .skin-yellow-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-yellow-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-yellow-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-yellow-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-yellow-light .main-header .navbar .sidebar-toggle:hover { background-color: #e08e0b; } @media (max-width: 767px) { .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-yellow-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { background: #e08e0b; } } .skin-yellow-light .main-header .logo { background-color: #f39c12; color: #ffffff; border-bottom: 0 solid transparent; } .skin-yellow-light .main-header .logo:hover { background-color: #f39a0d; } .skin-yellow-light .main-header li.user-header { background-color: #f39c12; } .skin-yellow-light .content-header { background: transparent; } .skin-yellow-light .wrapper, .skin-yellow-light .main-sidebar, .skin-yellow-light .left-side { background-color: #f9fafc; } .skin-yellow-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-yellow-light .user-panel > .info, .skin-yellow-light .user-panel > .info > a { color: #444444; } .skin-yellow-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-yellow-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-yellow-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-yellow-light .sidebar-menu > li:hover > a, .skin-yellow-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-yellow-light .sidebar-menu > li.active { border-left-color: #f39c12; } .skin-yellow-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-yellow-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-yellow-light .sidebar a { color: #444444; } .skin-yellow-light .sidebar a:hover { text-decoration: none; } .skin-yellow-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-yellow-light .sidebar-menu .treeview-menu > li.active > a, .skin-yellow-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-yellow-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-yellow-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-yellow-light .sidebar-form input[type="text"], .skin-yellow-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-yellow-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-yellow-light .sidebar-form input[type="text"]:focus, .skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-yellow-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } /* * Skin: Purple * ------------ */ .skin-purple .main-header .navbar { background-color: #605ca8; } .skin-purple .main-header .navbar .nav > li > a { color: #ffffff; } .skin-purple .main-header .navbar .nav > li > a:hover, .skin-purple .main-header .navbar .nav > li > a:active, .skin-purple .main-header .navbar .nav > li > a:focus, .skin-purple .main-header .navbar .nav .open > a, .skin-purple .main-header .navbar .nav .open > a:hover, .skin-purple .main-header .navbar .nav .open > a:focus, .skin-purple .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-purple .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-purple .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-purple .main-header .navbar .sidebar-toggle { color: #fff; } .skin-purple .main-header .navbar .sidebar-toggle:hover { background-color: #555299; } @media (max-width: 767px) { .skin-purple .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-purple .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-purple .main-header .navbar .dropdown-menu li a:hover { background: #555299; } } .skin-purple .main-header .logo { background-color: #555299; color: #ffffff; border-bottom: 0 solid transparent; } .skin-purple .main-header .logo:hover { background-color: #545096; } .skin-purple .main-header li.user-header { background-color: #605ca8; } .skin-purple .content-header { background: transparent; } .skin-purple .wrapper, .skin-purple .main-sidebar, .skin-purple .left-side { background-color: #222d32; } .skin-purple .user-panel > .info, .skin-purple .user-panel > .info > a { color: #fff; } .skin-purple .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-purple .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-purple .sidebar-menu > li:hover > a, .skin-purple .sidebar-menu > li.active > a, .skin-purple .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-purple .sidebar-menu > li.active > a { border-left-color: #605ca8; } .skin-purple .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-purple .sidebar a { color: #b8c7ce; } .skin-purple .sidebar a:hover { text-decoration: none; } .skin-purple .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-purple .sidebar-menu .treeview-menu > li.active > a, .skin-purple .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-purple .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-purple .sidebar-form input[type="text"], .skin-purple .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-purple .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-purple .sidebar-form input[type="text"]:focus, .skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-purple .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } /* * Skin: Purple * ------------ */ .skin-purple-light .main-header .navbar { background-color: #605ca8; } .skin-purple-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-purple-light .main-header .navbar .nav > li > a:hover, .skin-purple-light .main-header .navbar .nav > li > a:active, .skin-purple-light .main-header .navbar .nav > li > a:focus, .skin-purple-light .main-header .navbar .nav .open > a, .skin-purple-light .main-header .navbar .nav .open > a:hover, .skin-purple-light .main-header .navbar .nav .open > a:focus, .skin-purple-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-purple-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-purple-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-purple-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-purple-light .main-header .navbar .sidebar-toggle:hover { background-color: #555299; } @media (max-width: 767px) { .skin-purple-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-purple-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { background: #555299; } } .skin-purple-light .main-header .logo { background-color: #605ca8; color: #ffffff; border-bottom: 0 solid transparent; } .skin-purple-light .main-header .logo:hover { background-color: #5d59a6; } .skin-purple-light .main-header li.user-header { background-color: #605ca8; } .skin-purple-light .content-header { background: transparent; } .skin-purple-light .wrapper, .skin-purple-light .main-sidebar, .skin-purple-light .left-side { background-color: #f9fafc; } .skin-purple-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-purple-light .user-panel > .info, .skin-purple-light .user-panel > .info > a { color: #444444; } .skin-purple-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-purple-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-purple-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-purple-light .sidebar-menu > li:hover > a, .skin-purple-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-purple-light .sidebar-menu > li.active { border-left-color: #605ca8; } .skin-purple-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-purple-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-purple-light .sidebar a { color: #444444; } .skin-purple-light .sidebar a:hover { text-decoration: none; } .skin-purple-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-purple-light .sidebar-menu .treeview-menu > li.active > a, .skin-purple-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-purple-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-purple-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-purple-light .sidebar-form input[type="text"], .skin-purple-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-purple-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-purple-light .sidebar-form input[type="text"]:focus, .skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-purple-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } AdminLTE/css/skins/skin-green.min.css 0000644 00000005702 15002261751 0013421 0 ustar 00 .skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a,.skin-green .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-green .sidebar-menu>li.active>a{border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-green .sidebar-menu .treeview-menu>li.active>a,.skin-green .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} AdminLTE/css/skins/skin-yellow.css 0000644 00000006750 15002261751 0013056 0 ustar 00 /* * Skin: Yellow * ------------ */ .skin-yellow .main-header .navbar { background-color: #f39c12; } .skin-yellow .main-header .navbar .nav > li > a { color: #ffffff; } .skin-yellow .main-header .navbar .nav > li > a:hover, .skin-yellow .main-header .navbar .nav > li > a:active, .skin-yellow .main-header .navbar .nav > li > a:focus, .skin-yellow .main-header .navbar .nav .open > a, .skin-yellow .main-header .navbar .nav .open > a:hover, .skin-yellow .main-header .navbar .nav .open > a:focus, .skin-yellow .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-yellow .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-yellow .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-yellow .main-header .navbar .sidebar-toggle { color: #fff; } .skin-yellow .main-header .navbar .sidebar-toggle:hover { background-color: #e08e0b; } @media (max-width: 767px) { .skin-yellow .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-yellow .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-yellow .main-header .navbar .dropdown-menu li a:hover { background: #e08e0b; } } .skin-yellow .main-header .logo { background-color: #e08e0b; color: #ffffff; border-bottom: 0 solid transparent; } .skin-yellow .main-header .logo:hover { background-color: #db8b0b; } .skin-yellow .main-header li.user-header { background-color: #f39c12; } .skin-yellow .content-header { background: transparent; } .skin-yellow .wrapper, .skin-yellow .main-sidebar, .skin-yellow .left-side { background-color: #222d32; } .skin-yellow .user-panel > .info, .skin-yellow .user-panel > .info > a { color: #fff; } .skin-yellow .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-yellow .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-yellow .sidebar-menu > li:hover > a, .skin-yellow .sidebar-menu > li.active > a, .skin-yellow .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-yellow .sidebar-menu > li.active > a { border-left-color: #f39c12; } .skin-yellow .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-yellow .sidebar a { color: #b8c7ce; } .skin-yellow .sidebar a:hover { text-decoration: none; } .skin-yellow .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-yellow .sidebar-menu .treeview-menu > li.active > a, .skin-yellow .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-yellow .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-yellow .sidebar-form input[type="text"], .skin-yellow .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-yellow .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-yellow .sidebar-form input[type="text"]:focus, .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-yellow .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } AdminLTE/css/skins/skin-blue-light.min.css 0000644 00000007514 15002261751 0014360 0 ustar 00 .skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .main-sidebar{border-right:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-blue-light .sidebar-menu .treeview-menu>li.active>a,.skin-blue-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-blue-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} AdminLTE/css/skins/skin-blue.min.css 0000644 00000006124 15002261751 0013247 0 ustar 00 .skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a,.skin-blue .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-blue .sidebar-menu>li.active>a{border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-blue .sidebar-menu .treeview-menu>li.active>a,.skin-blue .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} AdminLTE/css/skins/skin-red-light.css 0000644 00000010145 15002261751 0013413 0 ustar 00 /* * Skin: Red * --------- */ .skin-red-light .main-header .navbar { background-color: #dd4b39; } .skin-red-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-red-light .main-header .navbar .nav > li > a:hover, .skin-red-light .main-header .navbar .nav > li > a:active, .skin-red-light .main-header .navbar .nav > li > a:focus, .skin-red-light .main-header .navbar .nav .open > a, .skin-red-light .main-header .navbar .nav .open > a:hover, .skin-red-light .main-header .navbar .nav .open > a:focus, .skin-red-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-red-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-red-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-red-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-red-light .main-header .navbar .sidebar-toggle:hover { background-color: #d73925; } @media (max-width: 767px) { .skin-red-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-red-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-red-light .main-header .navbar .dropdown-menu li a:hover { background: #d73925; } } .skin-red-light .main-header .logo { background-color: #dd4b39; color: #ffffff; border-bottom: 0 solid transparent; } .skin-red-light .main-header .logo:hover { background-color: #dc4735; } .skin-red-light .main-header li.user-header { background-color: #dd4b39; } .skin-red-light .content-header { background: transparent; } .skin-red-light .wrapper, .skin-red-light .main-sidebar, .skin-red-light .left-side { background-color: #f9fafc; } .skin-red-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-red-light .user-panel > .info, .skin-red-light .user-panel > .info > a { color: #444444; } .skin-red-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-red-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-red-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-red-light .sidebar-menu > li:hover > a, .skin-red-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-red-light .sidebar-menu > li.active { border-left-color: #dd4b39; } .skin-red-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-red-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-red-light .sidebar a { color: #444444; } .skin-red-light .sidebar a:hover { text-decoration: none; } .skin-red-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-red-light .sidebar-menu .treeview-menu > li.active > a, .skin-red-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-red-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-red-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-red-light .sidebar-form input[type="text"], .skin-red-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-red-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-red-light .sidebar-form input[type="text"]:focus, .skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-red-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } AdminLTE/css/skins/skin-purple.min.css 0000644 00000005757 15002261751 0013642 0 ustar 00 .skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a,.skin-purple .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-purple .sidebar-menu>li.active>a{border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-purple .sidebar-menu .treeview-menu>li.active>a,.skin-purple .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} AdminLTE/css/skins/_all-skins.min.css 0000644 00000121243 15002261751 0013412 0 ustar 00 .skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a,.skin-blue .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-blue .sidebar-menu>li.active>a{border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-blue .sidebar-menu .treeview-menu>li.active>a,.skin-blue .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .main-sidebar{border-right:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-blue-light .sidebar-menu .treeview-menu>li.active>a,.skin-blue-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-blue-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar{background-color:#fff}.skin-black .main-header .navbar .nav>li>a{color:#333}.skin-black .main-header .navbar .nav>li>a:hover,.skin-black .main-header .navbar .nav>li>a:active,.skin-black .main-header .navbar .nav>li>a:focus,.skin-black .main-header .navbar .nav .open>a,.skin-black .main-header .navbar .nav .open>a:hover,.skin-black .main-header .navbar .nav .open>a:focus,.skin-black .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header .navbar .sidebar-toggle{color:#333}.skin-black .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header .navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header .logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header .logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header .logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header .logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a,.skin-black .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-black .sidebar-menu>li.active>a{border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-black .sidebar-menu .treeview-menu>li.active>a,.skin-black .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-black .pace .pace-progress{background:#222}.skin-black .pace .pace-activity{border-top-color:#222;border-left-color:#222}.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar{background-color:#fff}.skin-black-light .main-header .navbar .nav>li>a{color:#333}.skin-black-light .main-header .navbar .nav>li>a:hover,.skin-black-light .main-header .navbar .nav>li>a:active,.skin-black-light .main-header .navbar .nav>li>a:focus,.skin-black-light .main-header .navbar .nav .open>a,.skin-black-light .main-header .navbar .nav .open>a:hover,.skin-black-light .main-header .navbar .nav .open>a:focus,.skin-black-light .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header .navbar .sidebar-toggle{color:#333}.skin-black-light .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar .navbar-nav>li>a{border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header .navbar .navbar-right>li>a{border-left:1px solid #d2d6de;border-right-width:0}.skin-black-light .main-header .logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #d2d6de}.skin-black-light .main-header .logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header .logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header .logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .main-sidebar{border-right:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-black-light .sidebar-menu .treeview-menu>li.active>a,.skin-black-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-black-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a,.skin-green .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-green .sidebar-menu>li.active>a{border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-green .sidebar-menu .treeview-menu>li.active>a,.skin-green .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .main-sidebar{border-right:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-green-light .sidebar-menu .treeview-menu>li.active>a,.skin-green-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-green-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a,.skin-red .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-red .sidebar-menu>li.active>a{border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-red .sidebar-menu .treeview-menu>li.active>a,.skin-red .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .main-sidebar{border-right:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-red-light .sidebar-menu .treeview-menu>li.active>a,.skin-red-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-red-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a,.skin-yellow .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-yellow .sidebar-menu>li.active>a{border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-yellow .sidebar-menu .treeview-menu>li.active>a,.skin-yellow .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .main-sidebar{border-right:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a,.skin-yellow-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a,.skin-purple .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-purple .sidebar-menu>li.active>a{border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-purple .sidebar-menu .treeview-menu>li.active>a,.skin-purple .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .main-sidebar{border-right:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-purple-light .sidebar-menu .treeview-menu>li.active>a,.skin-purple-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-purple-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} AdminLTE/css/skins/skin-purple-light.min.css 0000644 00000007270 15002261751 0014737 0 ustar 00 .skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .main-sidebar{border-right:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-purple-light .sidebar-menu .treeview-menu>li.active>a,.skin-purple-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-purple-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} AdminLTE/css/skins/skin-yellow.min.css 0000644 00000005757 15002261751 0013646 0 ustar 00 .skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a,.skin-yellow .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-yellow .sidebar-menu>li.active>a{border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-yellow .sidebar-menu .treeview-menu>li.active>a,.skin-yellow .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} AdminLTE/css/skins/skin-black-light.css 0000644 00000011351 15002261751 0013715 0 ustar 00 /* * Skin: Black * ----------- */ /* skin-black navbar */ .skin-black-light .main-header { -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); } .skin-black-light .main-header .navbar-toggle { color: #333; } .skin-black-light .main-header .navbar-brand { color: #333; border-right: 1px solid #d2d6de; } .skin-black-light .main-header .navbar { background-color: #ffffff; } .skin-black-light .main-header .navbar .nav > li > a { color: #333333; } .skin-black-light .main-header .navbar .nav > li > a:hover, .skin-black-light .main-header .navbar .nav > li > a:active, .skin-black-light .main-header .navbar .nav > li > a:focus, .skin-black-light .main-header .navbar .nav .open > a, .skin-black-light .main-header .navbar .nav .open > a:hover, .skin-black-light .main-header .navbar .nav .open > a:focus, .skin-black-light .main-header .navbar .nav > .active > a { background: #ffffff; color: #999999; } .skin-black-light .main-header .navbar .sidebar-toggle { color: #333333; } .skin-black-light .main-header .navbar .sidebar-toggle:hover { color: #999999; background: #ffffff; } .skin-black-light .main-header .navbar > .sidebar-toggle { color: #333; border-right: 1px solid #d2d6de; } .skin-black-light .main-header .navbar .navbar-nav > li > a { border-right: 1px solid #d2d6de; } .skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, .skin-black-light .main-header .navbar .navbar-right > li > a { border-left: 1px solid #d2d6de; border-right-width: 0; } .skin-black-light .main-header .logo { background-color: #ffffff; color: #333333; border-bottom: 0 solid transparent; border-right: 1px solid #d2d6de; } .skin-black-light .main-header .logo:hover { background-color: #fcfcfc; } @media (max-width: 767px) { .skin-black-light .main-header .logo { background-color: #222222; color: #ffffff; border-bottom: 0 solid transparent; border-right: none; } .skin-black-light .main-header .logo:hover { background-color: #1f1f1f; } } .skin-black-light .main-header li.user-header { background-color: #222; } .skin-black-light .content-header { background: transparent; box-shadow: none; } .skin-black-light .wrapper, .skin-black-light .main-sidebar, .skin-black-light .left-side { background-color: #f9fafc; } .skin-black-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-black-light .user-panel > .info, .skin-black-light .user-panel > .info > a { color: #444444; } .skin-black-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-black-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-black-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-black-light .sidebar-menu > li:hover > a, .skin-black-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-black-light .sidebar-menu > li.active { border-left-color: #ffffff; } .skin-black-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-black-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-black-light .sidebar a { color: #444444; } .skin-black-light .sidebar a:hover { text-decoration: none; } .skin-black-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-black-light .sidebar-menu .treeview-menu > li.active > a, .skin-black-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-black-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-black-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-black-light .sidebar-form input[type="text"], .skin-black-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-black-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-black-light .sidebar-form input[type="text"]:focus, .skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-black-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } AdminLTE/css/skins/skin-yellow-light.css 0000644 00000010376 15002261751 0014162 0 ustar 00 /* * Skin: Yellow * ------------ */ .skin-yellow-light .main-header .navbar { background-color: #f39c12; } .skin-yellow-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-yellow-light .main-header .navbar .nav > li > a:hover, .skin-yellow-light .main-header .navbar .nav > li > a:active, .skin-yellow-light .main-header .navbar .nav > li > a:focus, .skin-yellow-light .main-header .navbar .nav .open > a, .skin-yellow-light .main-header .navbar .nav .open > a:hover, .skin-yellow-light .main-header .navbar .nav .open > a:focus, .skin-yellow-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-yellow-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-yellow-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-yellow-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-yellow-light .main-header .navbar .sidebar-toggle:hover { background-color: #e08e0b; } @media (max-width: 767px) { .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-yellow-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { background: #e08e0b; } } .skin-yellow-light .main-header .logo { background-color: #f39c12; color: #ffffff; border-bottom: 0 solid transparent; } .skin-yellow-light .main-header .logo:hover { background-color: #f39a0d; } .skin-yellow-light .main-header li.user-header { background-color: #f39c12; } .skin-yellow-light .content-header { background: transparent; } .skin-yellow-light .wrapper, .skin-yellow-light .main-sidebar, .skin-yellow-light .left-side { background-color: #f9fafc; } .skin-yellow-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-yellow-light .user-panel > .info, .skin-yellow-light .user-panel > .info > a { color: #444444; } .skin-yellow-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-yellow-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-yellow-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-yellow-light .sidebar-menu > li:hover > a, .skin-yellow-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-yellow-light .sidebar-menu > li.active { border-left-color: #f39c12; } .skin-yellow-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-yellow-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-yellow-light .sidebar a { color: #444444; } .skin-yellow-light .sidebar a:hover { text-decoration: none; } .skin-yellow-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-yellow-light .sidebar-menu .treeview-menu > li.active > a, .skin-yellow-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-yellow-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-yellow-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-yellow-light .sidebar-form input[type="text"], .skin-yellow-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-yellow-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-yellow-light .sidebar-form input[type="text"]:focus, .skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-yellow-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } AdminLTE/css/skins/skin-yellow-light.min.css 0000644 00000007270 15002261751 0014743 0 ustar 00 .skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .main-sidebar{border-right:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a,.skin-yellow-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} AdminLTE/css/skins/skin-purple-light.css 0000644 00000010376 15002261751 0014156 0 ustar 00 /* * Skin: Purple * ------------ */ .skin-purple-light .main-header .navbar { background-color: #605ca8; } .skin-purple-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-purple-light .main-header .navbar .nav > li > a:hover, .skin-purple-light .main-header .navbar .nav > li > a:active, .skin-purple-light .main-header .navbar .nav > li > a:focus, .skin-purple-light .main-header .navbar .nav .open > a, .skin-purple-light .main-header .navbar .nav .open > a:hover, .skin-purple-light .main-header .navbar .nav .open > a:focus, .skin-purple-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-purple-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-purple-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-purple-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-purple-light .main-header .navbar .sidebar-toggle:hover { background-color: #555299; } @media (max-width: 767px) { .skin-purple-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-purple-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { background: #555299; } } .skin-purple-light .main-header .logo { background-color: #605ca8; color: #ffffff; border-bottom: 0 solid transparent; } .skin-purple-light .main-header .logo:hover { background-color: #5d59a6; } .skin-purple-light .main-header li.user-header { background-color: #605ca8; } .skin-purple-light .content-header { background: transparent; } .skin-purple-light .wrapper, .skin-purple-light .main-sidebar, .skin-purple-light .left-side { background-color: #f9fafc; } .skin-purple-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-purple-light .user-panel > .info, .skin-purple-light .user-panel > .info > a { color: #444444; } .skin-purple-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-purple-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-purple-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-purple-light .sidebar-menu > li:hover > a, .skin-purple-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-purple-light .sidebar-menu > li.active { border-left-color: #605ca8; } .skin-purple-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-purple-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-purple-light .sidebar a { color: #444444; } .skin-purple-light .sidebar a:hover { text-decoration: none; } .skin-purple-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-purple-light .sidebar-menu .treeview-menu > li.active > a, .skin-purple-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-purple-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-purple-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-purple-light .sidebar-form input[type="text"], .skin-purple-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-purple-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-purple-light .sidebar-form input[type="text"]:focus, .skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-purple-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } AdminLTE/css/skins/skin-blue.css 0000644 00000007150 15002261751 0012465 0 ustar 00 /* * Skin: Blue * ---------- */ .skin-blue .main-header .navbar { background-color: #3c8dbc; } .skin-blue .main-header .navbar .nav > li > a { color: #ffffff; } .skin-blue .main-header .navbar .nav > li > a:hover, .skin-blue .main-header .navbar .nav > li > a:active, .skin-blue .main-header .navbar .nav > li > a:focus, .skin-blue .main-header .navbar .nav .open > a, .skin-blue .main-header .navbar .nav .open > a:hover, .skin-blue .main-header .navbar .nav .open > a:focus, .skin-blue .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-blue .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-blue .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-blue .main-header .navbar .sidebar-toggle { color: #fff; } .skin-blue .main-header .navbar .sidebar-toggle:hover { background-color: #367fa9; } @media (max-width: 767px) { .skin-blue .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-blue .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-blue .main-header .navbar .dropdown-menu li a:hover { background: #367fa9; } } .skin-blue .main-header .logo { background-color: #367fa9; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue .main-header .logo:hover { background-color: #357ca5; } .skin-blue .main-header li.user-header { background-color: #3c8dbc; } .skin-blue .content-header { background: transparent; } .skin-blue .wrapper, .skin-blue .main-sidebar, .skin-blue .left-side { background-color: #222d32; } .skin-blue .user-panel > .info, .skin-blue .user-panel > .info > a { color: #fff; } .skin-blue .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-blue .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-blue .sidebar-menu > li:hover > a, .skin-blue .sidebar-menu > li.active > a, .skin-blue .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-blue .sidebar-menu > li.active > a { border-left-color: #3c8dbc; } .skin-blue .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-blue .sidebar a { color: #b8c7ce; } .skin-blue .sidebar a:hover { text-decoration: none; } .skin-blue .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-blue .sidebar-menu .treeview-menu > li.active > a, .skin-blue .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-blue .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-blue .sidebar-form input[type="text"], .skin-blue .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-blue .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-blue .sidebar-form input[type="text"]:focus, .skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-blue .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } .skin-blue.layout-top-nav .main-header > .logo { background-color: #3c8dbc; color: #ffffff; border-bottom: 0 solid transparent; } .skin-blue.layout-top-nav .main-header > .logo:hover { background-color: #3b8ab8; } AdminLTE/css/skins/skin-red-light.min.css 0000644 00000007045 15002261751 0014202 0 ustar 00 .skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .main-sidebar{border-right:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-red-light .sidebar-menu .treeview-menu>li.active>a,.skin-red-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-red-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} AdminLTE/css/skins/skin-red.css 0000644 00000006533 15002261751 0012314 0 ustar 00 /* * Skin: Red * --------- */ .skin-red .main-header .navbar { background-color: #dd4b39; } .skin-red .main-header .navbar .nav > li > a { color: #ffffff; } .skin-red .main-header .navbar .nav > li > a:hover, .skin-red .main-header .navbar .nav > li > a:active, .skin-red .main-header .navbar .nav > li > a:focus, .skin-red .main-header .navbar .nav .open > a, .skin-red .main-header .navbar .nav .open > a:hover, .skin-red .main-header .navbar .nav .open > a:focus, .skin-red .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-red .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-red .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-red .main-header .navbar .sidebar-toggle { color: #fff; } .skin-red .main-header .navbar .sidebar-toggle:hover { background-color: #d73925; } @media (max-width: 767px) { .skin-red .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-red .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-red .main-header .navbar .dropdown-menu li a:hover { background: #d73925; } } .skin-red .main-header .logo { background-color: #d73925; color: #ffffff; border-bottom: 0 solid transparent; } .skin-red .main-header .logo:hover { background-color: #d33724; } .skin-red .main-header li.user-header { background-color: #dd4b39; } .skin-red .content-header { background: transparent; } .skin-red .wrapper, .skin-red .main-sidebar, .skin-red .left-side { background-color: #222d32; } .skin-red .user-panel > .info, .skin-red .user-panel > .info > a { color: #fff; } .skin-red .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-red .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-red .sidebar-menu > li:hover > a, .skin-red .sidebar-menu > li.active > a, .skin-red .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-red .sidebar-menu > li.active > a { border-left-color: #dd4b39; } .skin-red .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-red .sidebar a { color: #b8c7ce; } .skin-red .sidebar a:hover { text-decoration: none; } .skin-red .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-red .sidebar-menu .treeview-menu > li.active > a, .skin-red .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-red .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-red .sidebar-form input[type="text"], .skin-red .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-red .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-red .sidebar-form input[type="text"]:focus, .skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-red .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } AdminLTE/css/skins/skin-green-light.css 0000644 00000010313 15002261751 0013736 0 ustar 00 /* * Skin: Green * ----------- */ .skin-green-light .main-header .navbar { background-color: #00a65a; } .skin-green-light .main-header .navbar .nav > li > a { color: #ffffff; } .skin-green-light .main-header .navbar .nav > li > a:hover, .skin-green-light .main-header .navbar .nav > li > a:active, .skin-green-light .main-header .navbar .nav > li > a:focus, .skin-green-light .main-header .navbar .nav .open > a, .skin-green-light .main-header .navbar .nav .open > a:hover, .skin-green-light .main-header .navbar .nav .open > a:focus, .skin-green-light .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-green-light .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-green-light .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-green-light .main-header .navbar .sidebar-toggle { color: #fff; } .skin-green-light .main-header .navbar .sidebar-toggle:hover { background-color: #008d4c; } @media (max-width: 767px) { .skin-green-light .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-green-light .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-green-light .main-header .navbar .dropdown-menu li a:hover { background: #008d4c; } } .skin-green-light .main-header .logo { background-color: #00a65a; color: #ffffff; border-bottom: 0 solid transparent; } .skin-green-light .main-header .logo:hover { background-color: #00a157; } .skin-green-light .main-header li.user-header { background-color: #00a65a; } .skin-green-light .content-header { background: transparent; } .skin-green-light .wrapper, .skin-green-light .main-sidebar, .skin-green-light .left-side { background-color: #f9fafc; } .skin-green-light .main-sidebar { border-right: 1px solid #d2d6de; } .skin-green-light .user-panel > .info, .skin-green-light .user-panel > .info > a { color: #444444; } .skin-green-light .sidebar-menu > li { -webkit-transition: border-left-color 0.3s ease; -o-transition: border-left-color 0.3s ease; transition: border-left-color 0.3s ease; } .skin-green-light .sidebar-menu > li.header { color: #848484; background: #f9fafc; } .skin-green-light .sidebar-menu > li > a { border-left: 3px solid transparent; font-weight: 600; } .skin-green-light .sidebar-menu > li:hover > a, .skin-green-light .sidebar-menu > li.active > a { color: #000000; background: #f4f4f5; } .skin-green-light .sidebar-menu > li.active { border-left-color: #00a65a; } .skin-green-light .sidebar-menu > li.active > a { font-weight: 600; } .skin-green-light .sidebar-menu > li > .treeview-menu { background: #f4f4f5; } .skin-green-light .sidebar a { color: #444444; } .skin-green-light .sidebar a:hover { text-decoration: none; } .skin-green-light .sidebar-menu .treeview-menu > li > a { color: #777777; } .skin-green-light .sidebar-menu .treeview-menu > li.active > a, .skin-green-light .sidebar-menu .treeview-menu > li > a:hover { color: #000000; } .skin-green-light .sidebar-menu .treeview-menu > li.active > a { font-weight: 600; } .skin-green-light .sidebar-form { border-radius: 3px; border: 1px solid #d2d6de; margin: 10px 10px; } .skin-green-light .sidebar-form input[type="text"], .skin-green-light .sidebar-form .btn { box-shadow: none; background-color: #fff; border: 1px solid transparent; height: 35px; } .skin-green-light .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-green-light .sidebar-form input[type="text"]:focus, .skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-green-light .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } @media (min-width: 768px) { .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { border-left: 1px solid #d2d6de; } } AdminLTE/css/skins/skin-black-light.min.css 0000644 00000010046 15002261751 0014477 0 ustar 00 .skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar{background-color:#fff}.skin-black-light .main-header .navbar .nav>li>a{color:#333}.skin-black-light .main-header .navbar .nav>li>a:hover,.skin-black-light .main-header .navbar .nav>li>a:active,.skin-black-light .main-header .navbar .nav>li>a:focus,.skin-black-light .main-header .navbar .nav .open>a,.skin-black-light .main-header .navbar .nav .open>a:hover,.skin-black-light .main-header .navbar .nav .open>a:focus,.skin-black-light .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header .navbar .sidebar-toggle{color:#333}.skin-black-light .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar .navbar-nav>li>a{border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header .navbar .navbar-right>li>a{border-left:1px solid #d2d6de;border-right-width:0}.skin-black-light .main-header .logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #d2d6de}.skin-black-light .main-header .logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header .logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header .logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .main-sidebar{border-right:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-black-light .sidebar-menu .treeview-menu>li.active>a,.skin-black-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-black-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} AdminLTE/css/skins/skin-purple.css 0000644 00000006750 15002261751 0013052 0 ustar 00 /* * Skin: Purple * ------------ */ .skin-purple .main-header .navbar { background-color: #605ca8; } .skin-purple .main-header .navbar .nav > li > a { color: #ffffff; } .skin-purple .main-header .navbar .nav > li > a:hover, .skin-purple .main-header .navbar .nav > li > a:active, .skin-purple .main-header .navbar .nav > li > a:focus, .skin-purple .main-header .navbar .nav .open > a, .skin-purple .main-header .navbar .nav .open > a:hover, .skin-purple .main-header .navbar .nav .open > a:focus, .skin-purple .main-header .navbar .nav > .active > a { background: rgba(0, 0, 0, 0.1); color: #f6f6f6; } .skin-purple .main-header .navbar .sidebar-toggle { color: #ffffff; } .skin-purple .main-header .navbar .sidebar-toggle:hover { color: #f6f6f6; background: rgba(0, 0, 0, 0.1); } .skin-purple .main-header .navbar .sidebar-toggle { color: #fff; } .skin-purple .main-header .navbar .sidebar-toggle:hover { background-color: #555299; } @media (max-width: 767px) { .skin-purple .main-header .navbar .dropdown-menu li.divider { background-color: rgba(255, 255, 255, 0.1); } .skin-purple .main-header .navbar .dropdown-menu li a { color: #fff; } .skin-purple .main-header .navbar .dropdown-menu li a:hover { background: #555299; } } .skin-purple .main-header .logo { background-color: #555299; color: #ffffff; border-bottom: 0 solid transparent; } .skin-purple .main-header .logo:hover { background-color: #545096; } .skin-purple .main-header li.user-header { background-color: #605ca8; } .skin-purple .content-header { background: transparent; } .skin-purple .wrapper, .skin-purple .main-sidebar, .skin-purple .left-side { background-color: #222d32; } .skin-purple .user-panel > .info, .skin-purple .user-panel > .info > a { color: #fff; } .skin-purple .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-purple .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-purple .sidebar-menu > li:hover > a, .skin-purple .sidebar-menu > li.active > a, .skin-purple .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-purple .sidebar-menu > li.active > a { border-left-color: #605ca8; } .skin-purple .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-purple .sidebar a { color: #b8c7ce; } .skin-purple .sidebar a:hover { text-decoration: none; } .skin-purple .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-purple .sidebar-menu .treeview-menu > li.active > a, .skin-purple .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-purple .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-purple .sidebar-form input[type="text"], .skin-purple .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-purple .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-purple .sidebar-form input[type="text"]:focus, .skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-purple .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } AdminLTE/css/skins/skin-black.css 0000644 00000010103 15002261751 0012602 0 ustar 00 /* * Skin: Black * ----------- */ /* skin-black navbar */ .skin-black .main-header { -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); } .skin-black .main-header .navbar-toggle { color: #333; } .skin-black .main-header .navbar-brand { color: #333; border-right: 1px solid #eee; } .skin-black .main-header .navbar { background-color: #ffffff; } .skin-black .main-header .navbar .nav > li > a { color: #333333; } .skin-black .main-header .navbar .nav > li > a:hover, .skin-black .main-header .navbar .nav > li > a:active, .skin-black .main-header .navbar .nav > li > a:focus, .skin-black .main-header .navbar .nav .open > a, .skin-black .main-header .navbar .nav .open > a:hover, .skin-black .main-header .navbar .nav .open > a:focus, .skin-black .main-header .navbar .nav > .active > a { background: #ffffff; color: #999999; } .skin-black .main-header .navbar .sidebar-toggle { color: #333333; } .skin-black .main-header .navbar .sidebar-toggle:hover { color: #999999; background: #ffffff; } .skin-black .main-header .navbar > .sidebar-toggle { color: #333; border-right: 1px solid #eee; } .skin-black .main-header .navbar .navbar-nav > li > a { border-right: 1px solid #eee; } .skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, .skin-black .main-header .navbar .navbar-right > li > a { border-left: 1px solid #eee; border-right-width: 0; } .skin-black .main-header .logo { background-color: #ffffff; color: #333333; border-bottom: 0 solid transparent; border-right: 1px solid #eee; } .skin-black .main-header .logo:hover { background-color: #fcfcfc; } @media (max-width: 767px) { .skin-black .main-header .logo { background-color: #222222; color: #ffffff; border-bottom: 0 solid transparent; border-right: none; } .skin-black .main-header .logo:hover { background-color: #1f1f1f; } } .skin-black .main-header li.user-header { background-color: #222; } .skin-black .content-header { background: transparent; box-shadow: none; } .skin-black .wrapper, .skin-black .main-sidebar, .skin-black .left-side { background-color: #222d32; } .skin-black .user-panel > .info, .skin-black .user-panel > .info > a { color: #fff; } .skin-black .sidebar-menu > li.header { color: #4b646f; background: #1a2226; } .skin-black .sidebar-menu > li > a { border-left: 3px solid transparent; } .skin-black .sidebar-menu > li:hover > a, .skin-black .sidebar-menu > li.active > a, .skin-black .sidebar-menu > li.menu-open > a { color: #ffffff; background: #1e282c; } .skin-black .sidebar-menu > li.active > a { border-left-color: #ffffff; } .skin-black .sidebar-menu > li > .treeview-menu { margin: 0 1px; background: #2c3b41; } .skin-black .sidebar a { color: #b8c7ce; } .skin-black .sidebar a:hover { text-decoration: none; } .skin-black .sidebar-menu .treeview-menu > li > a { color: #8aa4af; } .skin-black .sidebar-menu .treeview-menu > li.active > a, .skin-black .sidebar-menu .treeview-menu > li > a:hover { color: #ffffff; } .skin-black .sidebar-form { border-radius: 3px; border: 1px solid #374850; margin: 10px 10px; } .skin-black .sidebar-form input[type="text"], .skin-black .sidebar-form .btn { box-shadow: none; background-color: #374850; border: 1px solid transparent; height: 35px; } .skin-black .sidebar-form input[type="text"] { color: #666; border-top-left-radius: 2px; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 2px; } .skin-black .sidebar-form input[type="text"]:focus, .skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { background-color: #fff; color: #666; } .skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { border-left-color: #fff; } .skin-black .sidebar-form .btn { color: #999; border-top-left-radius: 0; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 0; } .skin-black .pace .pace-progress { background: #222; } .skin-black .pace .pace-activity { border-top-color: #222; border-left-color: #222; } AdminLTE/css/skins/skin-black.min.css 0000644 00000006671 15002261751 0013403 0 ustar 00 .skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar{background-color:#fff}.skin-black .main-header .navbar .nav>li>a{color:#333}.skin-black .main-header .navbar .nav>li>a:hover,.skin-black .main-header .navbar .nav>li>a:active,.skin-black .main-header .navbar .nav>li>a:focus,.skin-black .main-header .navbar .nav .open>a,.skin-black .main-header .navbar .nav .open>a:hover,.skin-black .main-header .navbar .nav .open>a:focus,.skin-black .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header .navbar .sidebar-toggle{color:#333}.skin-black .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header .navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header .logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header .logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header .logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header .logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a,.skin-black .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-black .sidebar-menu>li.active>a{border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-black .sidebar-menu .treeview-menu>li.active>a,.skin-black .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-black .pace .pace-progress{background:#222}.skin-black .pace .pace-activity{border-top-color:#222;border-left-color:#222} AdminLTE/css/AdminLTE.rtl.min.css 0000644 00000015136 15002261751 0012427 0 ustar 00 /*! * AdminLTE v2.4.0 * Author: Almsaeed Studio * RTL[ED] By : Akram Ahmed * Company : IT4DS Co. * website : www.it4ds.com.eg */.layout-boxed body,.layout-boxed html,body,html{height:100%}@font-face{font-family:Conv_GESSTwoLight;src:url(../font/GESSTwoLight.eot);src:local('?'),url(../font/GESSTwoLight.woff) format('woff'),url(../font/GESSTwoLight.ttf) format('truetype'),url(../font/GESSTwoLight.svg) format('svg');font-weight:400;font-style:normal}body,html{font-family:Conv_GESSTwoLight,'Droid Arabic Kufi',sans-serif}.main-header .logo img{text-align:center;max-height:50px}@media (min-width:768px){.main-header .logo{float:right}}.main-header .navbar{-webkit-transition:margin-right .3s ease-in-out;-o-transition:margin-right .3s ease-in-out;transition:margin-right .3s ease-in-out;margin-right:230px;margin-left:0!important}.layout-top-nav .main-header .navbar{margin-right:0}.main-header .sidebar-toggle{float:right}.main-header .navbar-custom-menu,.main-header .navbar-right{float:left}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{left:0;right:auto}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4>small{left:0;right:100%}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open+.control-sidebar-bg{left:0!important;right:auto;margin:10px 0;padding:35px 10px}.control-sidebar,.control-sidebar-bg{left:-230px;-webkit-transition:left .3s ease-in-out;-o-transition:left .3s ease-in-out;transition:left .3s ease-in-out}.control-sidebar-menu .menu-icon{float:right}.control-sidebar-menu .menu-info{margin-right:45px}.main-sidebar{right:0;left:auto}.sidebar-menu li>a>.pull-right-container{left:10px}.sidebar-menu li>a>.fa-angle-left,.sidebar-menu li>a>.pull-right-container>.fa-angle-left{margin-left:10px;margin-right:0}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{margin-right:0}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu,.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right){right:50px;left:auto}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span{margin-right:-3px;padding:12px 20px 12px 5px}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container{float:left;right:180px!important}.box-header>.box-tools,.small-box .icon{right:auto;left:10px}.treeview-menu{padding:0 5px 0 0}.treeview-menu .treeview-menu{padding-right:20px;padding-left:0}.content-wrapper,.main-footer{margin-right:230px;margin-left:0!important}.content-header{padding:15px}.content-header>h1{margin:0;font-size:24px}.content-header>h1>small{font-size:15px;display:inline-block;padding-right:4px;font-weight:300}.content-header>.breadcrumb{float:left;position:absolute;top:15px;left:10px;right:auto}.content-header>.breadcrumb>li>a>.fa,.content-header>.breadcrumb>li>a>.glyphicon,.content-header>.breadcrumb>li>a>.ion{margin-left:5px}.nav-tabs-custom>.nav-tabs.pull-right>li{float:left}.todo-list>li .tools{float:left}.chat .item>.message{margin-right:55px}.users-list>li{float:right!important}.skin-aqua .sidebar-menu>li.active>a{border-right-color:#3c8dbc}.skin-aqua .sidebar-menu>li>a{border-right:3px solid transparent;border-left:0 solid transparent!important}.skin-black .sidebar-menu>li.active>a{border-right-color:#3c8dbc}.skin-black .sidebar-menu>li>a{border-right:3px solid transparent;border-left:0 solid transparent!important}.skin-black-light .sidebar-menu>li.active>a{border-right-color:#3c8dbc}.skin-black-light .sidebar-menu>li>a{border-right:3px solid transparent;border-left:0 solid transparent!important}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .main-footer{margin-right:0!important}}@media (max-width:767px){.content-wrapper,.main-footer{margin-right:0!important}.sidebar-open .content-wrapper,.sidebar-open .main-footer{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0)}.main-header .navbar-right{float:right}}@media (max-width:1991px){.content-header>.breadcrumb{position:relative;top:0;left:0;right:auto;float:none;background:#d2d6de;padding-right:10px}}@media (max-width:991px){.navbar-custom-menu .navbar-nav>li{float:right}.navbar-custom-menu .navbar-nav{margin:0;float:right}}@media (max-width:767px){.main-header .logo,.main-header .navbar{width:100%;float:none}.main-header .navbar{margin:0}.main-header .navbar-custom-menu{float:left}.main-sidebar{-webkit-transform:translate(230px,0);-ms-transform:translate(230px,0);-o-transform:translate(230px,0);transform:translate(230px,0)}}@media (max-width:991px){.navbar-collapse.pull-left{float:none!important}.navbar-collapse.pull-left+.navbar-custom-menu{display:block;position:absolute;top:0;left:40px;right:auto}}@media (min-width:768px){.sidebar-collapse .main-sidebar{-webkit-transform:translate(230px,0);-ms-transform:translate(230px,0);-o-transform:translate(230px,0);transform:translate(230px,0)}.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .main-footer,.sidebar-mini.sidebar-collapse .right-side{margin-right:50px!important;margin-left:0!important;z-index:840}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a{margin-right:0}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{border-top-left-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span,.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-bottom-left-radius:4px}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-right:50px}.control-sidebar-open .content-wrapper,.control-sidebar-open .main-footer,.control-sidebar-open .right-side{margin-left:230px}}@media (max-width:767px){.sidebar-open .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.navbar-nav>.user-menu .user-image{float:none;margin-left:0;margin-top:-8px;line-height:10px}}@media (max-width:991px){.navbar-custom-menu>.navbar-nav{float:left}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;left:5%;right:auto;border:1px solid #ddd;background:#fff}.chart-legend>li{float:right;margin-left:10px}.error-page>.headline{float:none;text-align:center}.error-page>.error-content{margin-right:0}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px;text-align:center}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px} .popover { direction: rtl; } .scrolltop { left: 10px !important; right: auto !important; } .scroll { left: 20px !important; right: auto !important; } AdminLTE/css/AdminLTE.min.css 0000644 00000320022 15002261751 0011620 0 ustar 00 /*! * AdminLTE v2.4.18 * * Author: Colorlib * Support: <https://github.com/ColorlibHQ/AdminLTE/issues> * Repository: git://github.com/ColorlibHQ/AdminLTE.git * License: MIT <http://opensource.org/licenses/MIT> */html,body{height:100%}.layout-boxed html,.layout-boxed body{height:100%}body{font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto}.wrapper{height:100%;position:relative;overflow-x:hidden;overflow-y:auto}.wrapper:before,.wrapper:after{content:" ";display:table}.wrapper:after{clear:both}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative}.layout-boxed{background-color:#f9fafc}.content-wrapper,.main-footer{-webkit-transition:-webkit-transform .3s ease-in-out,margin .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,margin .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,margin .3s ease-in-out;transition:transform .3s ease-in-out,margin .3s ease-in-out;margin-left:230px;z-index:820}.layout-top-nav .content-wrapper,.layout-top-nav .main-footer{margin-left:0}@media (max-width:767px){.content-wrapper,.main-footer{margin-left:0}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .main-footer{margin-left:0}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .main-footer{-webkit-transform:translate(230px, 0);-ms-transform:translate(230px, 0);-o-transform:translate(230px, 0);transform:translate(230px, 0)}}.content-wrapper{min-height:calc(100vh - 101px);background-color:#ecf0f5;z-index:800}@media (max-width:767px){.content-wrapper{min-height:calc(100vh - 151px)}}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed}.fixed .main-header{top:0;right:0;left:0}.fixed .content-wrapper,.fixed .right-side{padding-top:50px}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px}}.fixed.layout-boxed .wrapper{max-width:100%}.fixed .wrapper{overflow:hidden}.hold-transition .content-wrapper,.hold-transition .right-side,.hold-transition .main-footer,.hold-transition .main-sidebar,.hold-transition .left-side,.hold-transition .main-header .navbar,.hold-transition .main-header .logo,.hold-transition .menu-open .fa-angle-left{-webkit-transition:none;-o-transition:none;transition:none}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif}a{color:#3c8dbc}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2}.page-header{margin:10px 0 20px 0;font-size:22px}.page-header>small{color:#666;display:block;margin-top:5px}.main-header{position:relative;max-height:100px;z-index:1030}.main-header .navbar{-webkit-transition:margin-left .3s ease-in-out;-o-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0}.layout-top-nav .main-header .navbar{margin-left:0}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9)}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right}@media (max-width:991px){ .main-header .navbar-right a{color:inherit;background:transparent}}@media (max-width:767px){.main-header .navbar-right{float:none}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px}.main-header .navbar-right>li{color:inherit;border:0}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:15px 15px;font-family:fontAwesome}.main-header .sidebar-toggle:before{content:"\f0c9"}.main-header .sidebar-toggle:hover{color:#fff}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent}.main-header .sidebar-toggle.fa5{font-family:"Font Awesome\ 5 Free"}.main-header .sidebar-toggle.fa5:before{content:"\f0c9";font-weight:900}.main-header .sidebar-toggle .icon-bar{display:none}.main-header .navbar .nav>li.user>a>.fa,.main-header .navbar .nav>li.user>a>.glyphicon,.main-header .navbar .nav>li.user>a>.ion{margin-right:5px}.main-header .navbar .nav>li>a>.label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9}.main-header .logo{-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden}.main-header .logo img{padding:4px;object-fit:contain;margin:0 auto}.main-header .logo .logo-lg{display:block}.main-header .logo .logo-lg img{max-width:200px;max-height:50px}.main-header .logo .logo-lg .brandlogo-image{margin-top:8px;margin-right:10px;margin-left:-5px}.main-header .logo .logo-mini{display:none}.main-header .logo .logo-mini img{max-width:50px;max-height:50px}.main-header .logo .logo-mini .brandlogo-image{margin-top:8px;margin-right:10px;margin-left:10px}.main-header .logo .brandlogo-image{float:left;height:34px;width:auto}.main-header .navbar-brand{color:#fff}.content-header{position:relative;padding:15px 15px 0 15px}.content-header>h1{margin:0;font-size:24px}.content-header>h1>small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300}.content-header>.breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px}.content-header>.breadcrumb>li>a{color:#444;text-decoration:none;display:inline-block}.content-header>.breadcrumb>li>a>.fa,.content-header>.breadcrumb>li>a>.glyphicon,.content-header>.breadcrumb>li>a>.ion{margin-right:5px}.content-header>.breadcrumb>li+li:before{content:'>\00a0'}@media (max-width:991px){.content-header>.breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px}.content-header>.breadcrumb li:before{color:#97a0b3}}.navbar-toggle{color:#fff;border:0;margin:0;padding:15px 15px}@media (max-width:991px){.navbar-custom-menu .navbar-nav>li{float:left}.navbar-custom-menu .navbar-nav{margin:0;float:left}.navbar-custom-menu .navbar-nav>li>a{padding-top:15px;padding-bottom:15px;line-height:20px}}@media (max-width:767px){.main-header{position:relative}.main-header .logo,.main-header .navbar{width:100%;float:none}.main-header .navbar{margin:0}.main-header .navbar-custom-menu{float:right}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important}.navbar-collapse.pull-left+.navbar-custom-menu{display:block;position:absolute;top:0;right:40px}}.main-sidebar{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform .3s ease-in-out,width .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,width .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,width .3s ease-in-out;transition:transform .3s ease-in-out,width .3s ease-in-out}@media (max-width:767px){.main-sidebar{padding-top:100px}}@media (max-width:767px){.main-sidebar{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (min-width:768px){.sidebar-collapse .main-sidebar{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (max-width:767px){.sidebar-open .main-sidebar{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}}.sidebar{padding-bottom:10px}.sidebar-form input:focus{border-color:transparent}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden}.user-panel:before,.user-panel:after{content:" ";display:table}.user-panel:after{clear:both}.user-panel>.image>img{width:100%;max-width:45px;height:auto}.user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px}.user-panel>.info>p{font-weight:600;margin-bottom:9px}.user-panel>.info>a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px}.user-panel>.info>a>.fa,.user-panel>.info>a>.ion,.user-panel>.info>a>.glyphicon{margin-right:3px}.sidebar-menu{list-style:none;margin:0;padding:0}.sidebar-menu>li{position:relative;margin:0;padding:0}.sidebar-menu>li>a{padding:12px 5px 12px 15px;display:block}.sidebar-menu>li>a>.fa,.sidebar-menu>li>a>.glyphicon,.sidebar-menu>li>a>.ion{width:20px}.sidebar-menu>li .label,.sidebar-menu>li .badge{margin-right:5px}.sidebar-menu>li .badge{margin-top:3px}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px}.sidebar-menu li>a>.fa-angle-left,.sidebar-menu li>a>.pull-right-container>.fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;-webkit-transition:transform .5s ease;-o-transition:transform .5s ease;transition:transform .5s ease}.sidebar-menu li>a>.fa-angle-left{position:absolute;top:50%;right:10px;margin-top:-8px}.sidebar-menu .menu-open>a>.fa-angle-left,.sidebar-menu .menu-open>a>.pull-right-container>.fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.sidebar-menu .active>.treeview-menu{display:block}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);width:50px !important;z-index:850}.sidebar-mini.sidebar-collapse .sidebar-menu>li{position:relative}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a{margin-right:0}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{border-top-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span{border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span,.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-lg{display:none}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px}}@media (min-width:768px){.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right),.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{display:block !important;position:absolute;width:180px;left:50px}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container{position:relative !important;float:right;width:auto !important;left:180px !important;top:-22px !important;z-index:900}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container>.label:not(:first-of-type){display:none}.sidebar-mini:not(.sidebar-mini-expand-feature).sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{top:44px;margin-left:0}}.sidebar-expanded-on-hover .main-footer,.sidebar-expanded-on-hover .content-wrapper{margin-left:50px}.sidebar-expanded-on-hover .main-sidebar{box-shadow:3px 0 8px rgba(0,0,0,0.125)}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu>li.header{white-space:nowrap;overflow:hidden}.sidebar-menu:hover{overflow:visible}.sidebar-form,.sidebar-menu>li.header{overflow:hidden;text-overflow:clip}.sidebar-menu li>a{position:relative}.sidebar-menu li>a>.pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right .3s ease-in-out;-o-transition:right .3s ease-in-out;transition:right .3s ease-in-out}.control-sidebar{position:absolute;padding-top:50px;z-index:1010}@media (max-width:767px){.control-sidebar{padding-top:100px}}.control-sidebar>.tab-content{padding:10px 15px}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open+.control-sidebar-bg{right:0}.control-sidebar-hold-transition .control-sidebar-bg,.control-sidebar-hold-transition .control-sidebar,.control-sidebar-hold-transition .content-wrapper{transition:none}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px}}.fixed .control-sidebar{position:fixed;height:100%;overflow-y:auto;padding-bottom:50px}.nav-tabs.control-sidebar-tabs>li:first-of-type>a,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:hover,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:focus{border-left-width:0}.nav-tabs.control-sidebar-tabs>li>a{border-radius:0}.nav-tabs.control-sidebar-tabs>li>a,.nav-tabs.control-sidebar-tabs>li>a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent}.nav-tabs.control-sidebar-tabs>li>a .icon{font-size:16px}.nav-tabs.control-sidebar-tabs>li.active>a,.nav-tabs.control-sidebar-tabs>li.active>a:hover,.nav-tabs.control-sidebar-tabs>li.active>a:focus,.nav-tabs.control-sidebar-tabs>li.active>a:active{border-top:none;border-right:none;border-bottom:none}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table}.nav-tabs.control-sidebar-tabs>li{display:table-cell}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px}.control-sidebar-menu>li>a{display:block;padding:10px 15px}.control-sidebar-menu>li>a:before,.control-sidebar-menu>li>a:after{content:" ";display:table}.control-sidebar-menu>li>a:after{clear:both}.control-sidebar-menu>li>a>.control-sidebar-subheading{margin-top:0}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px}.control-sidebar-menu .menu-info>.control-sidebar-subheading{margin:0}.control-sidebar-menu .menu-info>p{margin:0;font-size:11px}.control-sidebar-menu .progress{margin:0}.control-sidebar-dark{color:#b8c7ce}.control-sidebar-dark,.control-sidebar-dark+.control-sidebar-bg{background:#222d32}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a{background:#181f23;color:#b8c7ce}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:active{background:#1c2529}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover{color:#fff}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#222d32;color:#fff}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff}.control-sidebar-dark .control-sidebar-menu>li>a:hover{background:#1e282c}.control-sidebar-dark .control-sidebar-menu>li>a .menu-info>p{color:#b8c7ce}.control-sidebar-light{color:#5e5e5e}.control-sidebar-light,.control-sidebar-light+.control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a{background:#e8ecf4;color:#444}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:active{background:#eff1f7}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#f9fafc;color:#111}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111}.control-sidebar-light .control-sidebar-menu{margin-left:-14px}.control-sidebar-light .control-sidebar-menu>li>a:hover{background:#f4f4f5}.control-sidebar-light .control-sidebar-menu>li>a .menu-info>p{color:#5e5e5e}.dropdown-menu{box-shadow:none;border-color:#eee}.dropdown-menu>li>a{color:#777}.dropdown-menu>li>a>.glyphicon,.dropdown-menu>li>a>.fa,.dropdown-menu>li>a>.ion{margin-right:10px}.dropdown-menu>li>a:hover{background-color:#e1e3e9;color:#333}.dropdown-menu>.divider{background-color:#eee}.navbar-nav>.notifications-menu>.dropdown-menu,.navbar-nav>.messages-menu>.dropdown-menu,.navbar-nav>.tasks-menu>.dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%}.navbar-nav>.notifications-menu>.dropdown-menu>li,.navbar-nav>.messages-menu>.dropdown-menu>li,.navbar-nav>.tasks-menu>.dropdown-menu>li{position:relative}.navbar-nav>.notifications-menu>.dropdown-menu>li.header,.navbar-nav>.messages-menu>.dropdown-menu>li.header,.navbar-nav>.tasks-menu>.dropdown-menu>li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center}@media (max-width:991px){.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{background:#fff !important;color:#444 !important}}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a:hover{text-decoration:none;font-weight:normal}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu,.navbar-nav>.messages-menu>.dropdown-menu>li .menu,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a:hover{background:#f4f4f4;text-decoration:none}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.glyphicon,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.fa,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.ion{width:20px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a{margin:0;padding:10px 10px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>div>img{margin:auto 10px auto auto;width:40px;height:40px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4>small{color:#999999;font-size:10px;position:absolute;top:0;right:0}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>p{margin:0 0 0 45px;font-size:12px;color:#888888}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:before,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{content:" ";display:table}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{clear:both}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{padding:10px}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>.progress{padding:0;margin:0}.navbar-nav>.user-menu>.dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd}.navbar-nav>.user-menu>.dropdown-menu>.user-body:before,.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{content:" ";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-body a{color:#444 !important}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff !important;color:#444 !important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#f9f9f9;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:before,.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{content:" ";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#666666}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#f9f9f9}}.navbar-nav>.user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px}@media (max-width:767px){.navbar-nav>.user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px}}.open:not(.dropup)>.animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX .7s both;-o-animation:flipInX .7s both;animation:flipInX .7s both}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{transform:perspective(400px)}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 90deg);-webkit-transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -20deg);-webkit-transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{-webkit-transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:991px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de}.form-control:focus{border-color:#3c8dbc;box-shadow:none}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1}.form-control:not(select){-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group.has-success label{color:#00a65a}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#00a65a;box-shadow:none}.form-group.has-success .help-block{color:#00a65a}.form-group.has-warning label{color:#f39c12}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none}.form-group.has-warning .help-block{color:#f39c12}.form-group.has-error label{color:#dd4b39}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#dd4b39;box-shadow:none}.form-group.has-error .help-block{color:#dd4b39}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.icheck>label{padding-left:0}.form-control-feedback.fa{line-height:34px}.input-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fa{line-height:46px}.input-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fa{line-height:30px}.progress,.progress>.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress,.progress>.progress-bar,.progress .progress-bar,.progress>.progress-bar .progress-bar{border-radius:1px}.progress.sm,.progress-sm{height:10px}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px}.progress.xs,.progress-xs{height:7px}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px}.progress.xxs,.progress-xxs{height:3px}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px}.progress.vertical>.progress-bar{width:100%;position:absolute;bottom:0}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px}.progress-group .progress-text{font-weight:600}.progress-group .progress-number{float:right}.table tr>td .progress{margin:0}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-green,.progress-bar-success{background-color:#00a65a}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-aqua,.progress-bar-info{background-color:#00c0ef}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-red,.progress-bar-danger{background-color:#dd4b39}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.small-box>.inner{padding:10px}.small-box>.small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none}.small-box>.small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15)}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0}.small-box p{font-size:15px}.small-box p>small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{-webkit-transition:all .3s linear;-o-transition:all .3s linear;transition:all .3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15)}.small-box:hover{text-decoration:none;color:#f9f9f9}.small-box:hover .icon{font-size:95px}@media (max-width:767px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.box.box-primary{border-top-color:#3c8dbc}.box.box-info{border-top-color:#00c0ef}.box.box-danger{border-top-color:#dd4b39}.box.box-warning{border-top-color:#f39c12}.box.box-success{border-top-color:#00a65a}.box.box-default{border-top-color:#d2d6de}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none}.box .nav-stacked>li{border-bottom:1px solid #f4f4f4;margin:0}.box .nav-stacked>li:last-of-type{border-bottom:none}.box.height-control .box-body{max-height:300px;overflow:auto}.box .border-right{border-right:1px solid #f4f4f4}.box .border-left{border-left:1px solid #f4f4f4}.box.box-solid{border-top:0}.box.box-solid>.box-header .btn.btn-default{background:transparent}.box.box-solid>.box-header .btn:hover,.box.box-solid>.box-header a:hover{background:rgba(0,0,0,0.1)}.box.box-solid.box-default{border:1px solid #d2d6de}.box.box-solid.box-default>.box-header{color:#444;background:#d2d6de;background-color:#d2d6de}.box.box-solid.box-default>.box-header a,.box.box-solid.box-default>.box-header .btn{color:#444}.box.box-solid.box-primary{border:1px solid #3c8dbc}.box.box-solid.box-primary>.box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc}.box.box-solid.box-primary>.box-header a,.box.box-solid.box-primary>.box-header .btn{color:#fff}.box.box-solid.box-info{border:1px solid #00c0ef}.box.box-solid.box-info>.box-header{color:#fff;background:#00c0ef;background-color:#00c0ef}.box.box-solid.box-info>.box-header a,.box.box-solid.box-info>.box-header .btn{color:#fff}.box.box-solid.box-danger{border:1px solid #dd4b39}.box.box-solid.box-danger>.box-header{color:#fff;background:#dd4b39;background-color:#dd4b39}.box.box-solid.box-danger>.box-header a,.box.box-solid.box-danger>.box-header .btn{color:#fff}.box.box-solid.box-warning{border:1px solid #f39c12}.box.box-solid.box-warning>.box-header{color:#fff;background:#f39c12;background-color:#f39c12}.box.box-solid.box-warning>.box-header a,.box.box-solid.box-warning>.box-header .btn{color:#fff}.box.box-solid.box-success{border:1px solid #00a65a}.box.box-solid.box-success>.box-header{color:#fff;background:#00a65a;background-color:#00a65a}.box.box-solid.box-success>.box-header a,.box.box-solid.box-success>.box-header .btn{color:#fff}.box.box-solid>.box-header>.box-tools .btn{border:0;box-shadow:none}.box.box-solid[class*='bg']>.box-header{color:#fff}.box .box-group>.box{margin-bottom:5px}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:.3em}.box>.overlay,.overlay-wrapper>.overlay,.box>.loading-img,.overlay-wrapper>.loading-img{position:absolute;top:0;left:0;width:100%;height:100%}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px}.box .overlay>.fa,.overlay-wrapper .overlay>.fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5)}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table}.box-header:after,.box-body:after,.box-footer:after{clear:both}.box-header{color:#444;display:block;padding:10px;position:relative}.box-header.with-border{border-bottom:1px solid #f4f4f4}.collapsed-box .box-header.with-border{border-bottom:none}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion{margin-right:5px}.box-header>.box-tools{float:right;margin-top:-5px;margin-bottom:-5px}.box-header>.box-tools [data-toggle="tooltip"]{position:relative}.box-header>.box-tools.pull-right .dropdown-menu{right:0;left:auto}.box-header>.box-tools .dropdown-menu>li>a{color:#444 !important}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84}.btn-box-tool.btn:active{box-shadow:none}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px}.box-body>.table{margin-bottom:0}.box-body .fc{margin-top:5px}.box-body .full-width-chart{margin:-19px}.box-body.no-padding .full-width-chart{margin:-9px}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff}.chart-legend{margin:10px 0}@media (max-width:991px){.chart-legend>li{float:left;margin-right:10px}}.box-comments{background:#f7f7f7}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table}.box-comments .box-comment:after{clear:both}.box-comments .box-comment:last-of-type{border-bottom:0}.box-comments .box-comment:first-of-type{padding-top:0}.box-comments .box-comment img{float:left}.box-comments .comment-text{margin-left:40px;color:#555}.box-comments .username{color:#444;display:block;font-weight:600}.box-comments .text-muted{font-weight:400;font-size:12px}.todo-list{margin:0;padding:0;list-style:none;overflow:auto}.todo-list>li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type='checkbox']{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;margin-left:5px;font-weight:600}.todo-list>li .label{margin-left:10px;font-size:9px}.todo-list>li .tools{display:none;float:right;color:#dd4b39}.todo-list>li .tools>.fa,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{margin-right:5px;cursor:pointer}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#999}.todo-list>li.done .text{text-decoration:line-through;font-weight:500}.todo-list>li.done .label{background:#d2d6de !important}.todo-list .danger{border-left-color:#dd4b39}.todo-list .warning{border-left-color:#f39c12}.todo-list .info{border-left-color:#00c0ef}.todo-list .success{border-left-color:#00a65a}.todo-list .primary{border-left-color:#3c8dbc}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px}.chat{padding:5px 20px 5px 10px}.chat .item{margin-bottom:10px}.chat .item:before,.chat .item:after{content:" ";display:table}.chat .item:after{clear:both}.chat .item>img{width:40px;height:40px;border:2px solid transparent;border-radius:50%}.chat .item>.online{border:2px solid #00a65a}.chat .item>.offline{border:2px solid #dd4b39}.chat .item>.message{margin-left:55px;margin-top:-40px}.chat .item>.message>.name{display:block;font-weight:600}.chat .item>.attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px}.chat .item>.attachment>h4{margin:0 0 5px 0;font-weight:600;font-size:14px}.chat .item>.attachment>p,.chat .item>.attachment>.filename{font-weight:600;font-size:13px;font-style:italic;margin:0}.chat .item>.attachment:before,.chat .item>.attachment:after{content:" ";display:table}.chat .item>.attachment:after{clear:both}.box-input{max-width:200px}.modal .panel-body{color:#444}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px}.info-box small{font-size:14px}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px}.info-box .progress,.info-box .progress .progress-bar{border-radius:0}.info-box .progress .progress-bar{background:#fff}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2)}.info-box-icon>img{max-width:100%}.info-box-content{padding:5px 10px;margin-left:90px}.info-box-number{display:block;font-weight:bold;font-size:18px}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.info-box-text{text-transform:uppercase}.info-box-more{display:block}.progress-description{margin:0}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px}.timeline>li{position:relative;margin-right:10px;margin-bottom:15px}.timeline>li:before,.timeline>li:after{content:" ";display:table}.timeline>li:after{clear:both}.timeline>li>.timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative}.timeline>li>.timeline-item>.time{color:#999;float:right;padding:10px;font-size:12px}.timeline>li>.timeline-item>.timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1}.timeline>li>.timeline-item>.timeline-header>a{font-weight:600}.timeline>li>.timeline-item>.timeline-body,.timeline>li>.timeline-item>.timeline-footer{padding:10px}.timeline>li>.fa,.timeline>li>.glyphicon,.timeline>li>.ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0}.timeline>.time-label>span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px}.timeline-inverse>li>.timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none}.timeline-inverse>li>.timeline-item>.timeline-header{border-bottom-color:#ddd}.btn{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent}.btn.uppercase{text-transform:uppercase}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:focus{outline:none}.btn.btn-file{position:relative;overflow:hidden}.btn.btn-file>input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7}.btn-primary{background-color:#3c8dbc;border-color:#367fa9}.btn-primary:hover,.btn-primary:active,.btn-primary.hover{background-color:#367fa9}.btn-success{background-color:#00a65a;border-color:#008d4c}.btn-success:hover,.btn-success:active,.btn-success.hover{background-color:#008d4c}.btn-info{background-color:#00c0ef;border-color:#00acd6}.btn-info:hover,.btn-info:active,.btn-info.hover{background-color:#00acd6}.btn-danger{background-color:#dd4b39;border-color:#d73925}.btn-danger:hover,.btn-danger:active,.btn-danger.hover{background-color:#d73925}.btn-warning{background-color:#f39c12;border-color:#e08e0b}.btn-warning:hover,.btn-warning:active,.btn-warning.hover{background-color:#e08e0b}.btn-outline{border:1px solid #fff;background:transparent;color:#fff}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7)}.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2)}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px}.btn-app>.fa,.btn-app>.glyphicon,.btn-app>.ion{font-size:20px;display:block}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-app>.badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee}.callout a{color:#fff;text-decoration:underline}.callout a:hover{color:#eee}.callout h4{margin-top:0;font-weight:600}.callout p:last-child{margin-bottom:0}.callout code,.callout .highlight{background-color:#fff}.callout.callout-danger{border-color:#c23321}.callout.callout-warning{border-color:#c87f0a}.callout.callout-info{border-color:#0097bc}.callout.callout-success{border-color:#00733e}.alert{border-radius:3px}.alert h4{font-weight:600}.alert .icon{margin-right:10px}.alert .close{color:#000;opacity:.2;filter:alpha(opacity=20)}.alert .close:hover{opacity:.5;filter:alpha(opacity=50)}.alert a{color:#fff;text-decoration:underline}.alert-success{border-color:#008d4c}.alert-danger,.alert-error{border-color:#d73925}.alert-warning{border-color:#e08e0b}.alert-info{border-color:#00acd6}.nav>li>a:hover,.nav>li>a:active,.nav>li>a:focus{color:#444;background:#f7f7f7}.nav-pills>li>a{border-radius:0;border-top:3px solid transparent;color:#444}.nav-pills>li>a>.fa,.nav-pills>li>a>.glyphicon,.nav-pills>li>a>.ion{margin-right:5px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{border-top-color:#3c8dbc}.nav-pills>li.active>a{font-weight:600}.nav-stacked>li>a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444}.nav-stacked>li.active>a,.nav-stacked>li.active>a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc}.nav-stacked>li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px}.nav-tabs-custom>.nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px}.nav-tabs-custom>.nav-tabs>li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px}.nav-tabs-custom>.nav-tabs>li.disabled>a{color:#777}.nav-tabs-custom>.nav-tabs>li>a{color:#444;border-radius:0}.nav-tabs-custom>.nav-tabs>li>a.text-muted{color:#999}.nav-tabs-custom>.nav-tabs>li>a,.nav-tabs-custom>.nav-tabs>li>a:hover{background:transparent;margin:0}.nav-tabs-custom>.nav-tabs>li>a:hover{color:#999}.nav-tabs-custom>.nav-tabs>li:not(.active)>a:hover,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:focus,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:active{border-color:transparent}.nav-tabs-custom>.nav-tabs>li.active{border-top-color:#3c8dbc}.nav-tabs-custom>.nav-tabs>li.active>a,.nav-tabs-custom>.nav-tabs>li.active:hover>a{background-color:#fff;color:#444}.nav-tabs-custom>.nav-tabs>li.active>a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4}.nav-tabs-custom>.nav-tabs>li:first-of-type{margin-left:0}.nav-tabs-custom>.nav-tabs>li:first-of-type.active>a{border-left-color:transparent}.nav-tabs-custom>.nav-tabs.pull-right{float:none !important}.nav-tabs-custom>.nav-tabs.pull-right>li{float:right}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type{margin-right:0}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type>a{border-left-width:1px}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a{border-left-color:#f4f4f4;border-right-color:transparent}.nav-tabs-custom>.nav-tabs>li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444}.nav-tabs-custom>.nav-tabs>li.header>.fa,.nav-tabs-custom>.nav-tabs>li.header>.glyphicon,.nav-tabs-custom>.nav-tabs>li.header>.ion{margin-right:5px}.nav-tabs-custom>.tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.nav-tabs-custom .dropdown.open>a:active,.nav-tabs-custom .dropdown.open>a:focus{background:transparent;color:#999}.nav-tabs-custom.tab-primary>.nav-tabs>li.active{border-top-color:#3c8dbc}.nav-tabs-custom.tab-info>.nav-tabs>li.active{border-top-color:#00c0ef}.nav-tabs-custom.tab-danger>.nav-tabs>li.active{border-top-color:#dd4b39}.nav-tabs-custom.tab-warning>.nav-tabs>li.active{border-top-color:#f39c12}.nav-tabs-custom.tab-success>.nav-tabs>li.active{border-top-color:#00a65a}.nav-tabs-custom.tab-default>.nav-tabs>li.active{border-top-color:#d2d6de}.pagination>li>a{background:#fafafa;color:#666}.pagination.pagination-flat>li>a{border-radius:0 !important}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff}.products-list>.item:before,.products-list>.item:after{content:" ";display:table}.products-list>.item:after{clear:both}.products-list .product-img{float:left}.products-list .product-img img{width:50px;height:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.product-list-in-box>.item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4}.product-list-in-box>.item:last-of-type{border-bottom-width:0}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #f4f4f4}.table>thead>tr>th{border-bottom:2px solid #f4f4f4}.table tr td .progress{margin-top:5px}.table-bordered{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table.no-border,.table.no-border td,.table.no-border th{border:0}table.text-center,table.text-center td,table.text-center th{text-align:center}.table.align th{text-align:left}.table.align td{text-align:right}.label-default{background-color:#d2d6de;color:#444}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-messages{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);padding:10px;height:250px;overflow:auto}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table}.direct-chat-msg:after{clear:both}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform .5s ease-in-out;-moz-transition:-moz-transform .5s ease-in-out;-o-transition:-o-transform .5s ease-in-out;transition:transform .5s ease-in-out}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-right:50px;margin-left:0}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px}.right .direct-chat-img{float:right}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#999}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-contacts{-webkit-transform:translate(101%, 0);-ms-transform:translate(101%, 0);-o-transform:translate(101%, 0);transform:translate(101%, 0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto}.contacts-list>li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0}.contacts-list>li:before,.contacts-list>li:after{content:" ";display:table}.contacts-list>li:after{clear:both}.contacts-list>li:last-of-type{border-bottom:none}.contacts-list-img{border-radius:50%;width:40px;float:left}.contacts-list-info{margin-left:45px;color:#fff}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:12px}.contacts-list-date{color:#aaa;font-weight:normal}.contacts-list-msg{color:#999}.direct-chat-danger .right>.direct-chat-text{background:#dd4b39;border-color:#dd4b39;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#dd4b39}.direct-chat-primary .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-warning .right>.direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#f39c12}.direct-chat-info .right>.direct-chat-text{background:#00c0ef;border-color:#00c0ef;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#00c0ef}.direct-chat-success .right>.direct-chat-text{background:#00a65a;border-color:#00a65a;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#00a65a}.users-list>li{width:25%;float:left;padding:10px;text-align:center}.users-list>li img{border-radius:50%;max-width:100%;height:auto}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-name,.users-list-date{display:block}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.users-list-date{color:#999;font-size:12px}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px}.modal{background:rgba(0,0,0,0.3)}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125)}}.modal-header{border-bottom-color:#f4f4f4}.modal-footer{border-top-color:#f4f4f4}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a}.modal-info .modal-header,.modal-info .modal-footer{border-color:#0097bc}.modal-success .modal-header,.modal-success .modal-footer{border-color:#00733e}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#c23321}.box-widget{border:none;position:relative}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2)}.widget-user .widget-user-desc{margin-top:0}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px}.widget-user .widget-user-image>img{width:90px;height:auto;border:3px solid #fff}.widget-user .box-footer{padding-top:30px}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300}.widget-user-2 .widget-user-desc{margin-top:0}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px}.widget-user-2 .widget-user-image>img{width:65px;height:auto;float:left}.treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px}.treeview-menu .treeview-menu{padding-left:20px}.treeview-menu>li{margin:0}.treeview-menu>li>a{padding:5px 5px 5px 15px;display:block;font-size:14px}.treeview-menu>li>a>.fa,.treeview-menu>li>a>.glyphicon,.treeview-menu>li>a>.ion{width:20px}.treeview-menu>li>a>.pull-right-container>.fa-angle-left,.treeview-menu>li>a>.pull-right-container>.fa-angle-down,.treeview-menu>li>a>.fa-angle-left,.treeview-menu>li>a>.fa-angle-down{width:auto}.treeview>ul.treeview-menu{overflow:hidden;height:auto;padding-top:0px !important;padding-bottom:0px !important}.treeview.menu-open>ul.treeview-menu{overflow:visible;height:auto}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px}.mailbox-attachment-name{font-weight:bold;color:#666}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{padding:10px;background:#f4f4f4}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{max-width:100%;height:auto}.lockscreen{background:#d2d6de}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.lockscreen-logo a{color:#444}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%}.lockscreen .lockscreen-name{text-align:center;font-weight:600}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10}.lockscreen-image>img{border-radius:50%;width:70px;height:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.login-logo a,.register-logo a{color:#444}.login-page,.register-page{height:auto;background:#d2d6de}.login-box,.register-box{width:360px;margin:7% auto}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px}.social-auth-links{margin:10px 0}.error-page{width:600px;margin:20px auto 0 auto}@media (max-width:991px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:991px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{margin-left:190px;display:block}@media (max-width:991px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-weight:300;font-size:25px}@media (max-width:991px){.error-page>.error-content>h3{text-align:center}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px}.invoice-title{margin-top:0}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de}.profile-username{font-size:21px;margin-top:5px}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.post .user-block{margin-bottom:15px}.btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon>:first-child{border:none;text-align:center;width:100%}.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0}.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0}.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active:hover,.btn-adn.active:hover,.open>.dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open>.dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open>.dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2)}.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none}.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus{background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn .badge{color:#d87a68;background-color:#fff}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open>.dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open>.dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open>.dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none}.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus{background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket .badge{color:#205081;background-color:#fff}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open>.dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open>.dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open>.dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none}.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus{background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox .badge{color:#1087dd;background-color:#fff}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active:hover,.btn-facebook.active:hover,.open>.dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open>.dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open>.dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2)}.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none}.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus{background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook .badge{color:#3b5998;background-color:#fff}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active:hover,.btn-flickr.active:hover,.open>.dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open>.dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open>.dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2)}.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none}.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus{background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr .badge{color:#ff0084;background-color:#fff}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open>.dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open>.dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open>.dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none}.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus{background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare .badge{color:#f94877;background-color:#fff}.btn-github{color:#fff;background-color:#444444;border-color:rgba(0,0,0,0.2)}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active:hover,.btn-github.active:hover,.open>.dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open>.dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open>.dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2)}.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none}.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus{background-color:#444444;border-color:rgba(0,0,0,0.2)}.btn-github .badge{color:#444444;background-color:#fff}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active:hover,.btn-google.active:hover,.open>.dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open>.dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open>.dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2)}.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none}.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google .badge{color:#dd4b39;background-color:#fff}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active:hover,.btn-instagram.active:hover,.open>.dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open>.dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open>.dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2)}.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none}.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus{background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram .badge{color:#3f729b;background-color:#fff}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open>.dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open>.dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open>.dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none}.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus{background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin .badge{color:#007bb6;background-color:#fff}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open>.dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open>.dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open>.dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none}.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus{background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft .badge{color:#2672ec;background-color:#fff}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active:hover,.btn-openid.active:hover,.open>.dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open>.dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open>.dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2)}.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none}.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus{background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid .badge{color:#f7931e;background-color:#fff}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open>.dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open>.dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open>.dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none}.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus{background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest .badge{color:#cb2027;background-color:#fff}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active:hover,.btn-reddit.active:hover,.open>.dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open>.dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open>.dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none}.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit .badge{color:#eff7ff;background-color:#000}.btn-soundcloud{color:#fff;background-color:#ff5500;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open>.dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open>.dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open>.dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none}.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus{background-color:#ff5500;border-color:rgba(0,0,0,0.2)}.btn-soundcloud .badge{color:#ff5500;background-color:#fff}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open>.dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open>.dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open>.dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none}.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus{background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr .badge{color:#2c4762;background-color:#fff}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active:hover,.btn-twitter.active:hover,.open>.dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open>.dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open>.dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2)}.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none}.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus{background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter .badge{color:#55acee;background-color:#fff}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open>.dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open>.dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open>.dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none}.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active:hover,.btn-vk.active:hover,.open>.dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open>.dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open>.dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2)}.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none}.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus{background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk .badge{color:#587ea3;background-color:#fff}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open>.dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open>.dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open>.dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none}.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus{background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo .badge{color:#720e9e;background-color:#fff}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{width:100%;border:0}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0}.fc-toolbar{padding:10px;margin:0}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;margin-right:5px;line-height:30px}.fc-color-picker>li .fa{-webkit-transition:-webkit-transform linear .3s;-moz-transition:-moz-transform linear .3s;-o-transition:-o-transform linear .3s;transition:transform linear .3s}.fc-color-picker>li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}#add-new-event{-webkit-transition:all linear .3s;-o-transition:all linear .3s;transition:all linear .3s}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2)}.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px}.select2-container--default.select2-container--open{border-color:#3c8dbc}.select2-dropdown{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default .select2-search--dropdown .select2-search__field{border-color:#3c8dbc !important}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px}.box .datepicker-inline,.box .datepicker-inline .datepicker-days,.box .datepicker-inline>table,.box .datepicker-inline .datepicker-days>table{width:100%}.box .datepicker-inline td:hover,.box .datepicker-inline .datepicker-days td:hover,.box .datepicker-inline>table td:hover,.box .datepicker-inline .datepicker-days>table td:hover{background-color:rgba(255,255,255,0.3)}.box .datepicker-inline td.day.old,.box .datepicker-inline .datepicker-days td.day.old,.box .datepicker-inline>table td.day.old,.box .datepicker-inline .datepicker-days>table td.day.old,.box .datepicker-inline td.day.new,.box .datepicker-inline .datepicker-days td.day.new,.box .datepicker-inline>table td.day.new,.box .datepicker-inline .datepicker-days>table td.day.new{color:#777}.pad{padding:10px}.margin{margin:10px}.margin-bottom{margin-bottom:20px}.margin-bottom-none{margin-bottom:0}.margin-r-5{margin-right:5px}.inline{display:inline}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{margin:0;padding:0;font-weight:600;font-size:16px}.description-block>.description-text{text-transform:uppercase}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.label-danger,.label-info,.label-warning,.label-primary,.label-success,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important}.bg-gray{color:#000;background-color:#d2d6de !important}.bg-gray-light{background-color:#f7f7f7}.bg-black{background-color:#111 !important}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.label-danger,.modal-danger .modal-body{background-color:#dd4b39 !important}.bg-yellow,.callout.callout-warning,.alert-warning,.label-warning,.modal-warning .modal-body{background-color:#f39c12 !important}.bg-aqua,.callout.callout-info,.alert-info,.label-info,.modal-info .modal-body{background-color:#00c0ef !important}.bg-blue{background-color:#0073b7 !important}.bg-light-blue,.label-primary,.modal-primary .modal-body{background-color:#3c8dbc !important}.bg-green,.callout.callout-success,.alert-success,.label-success,.modal-success .modal-body{background-color:#00a65a !important}.bg-navy{background-color:#001F3F !important}.bg-teal{background-color:#39CCCC !important}.bg-olive{background-color:#3D9970 !important}.bg-lime{background-color:#01FF70 !important}.bg-orange{background-color:#FF851B !important}.bg-fuchsia{background-color:#F012BE !important}.bg-purple{background-color:#605ca8 !important}.bg-maroon{background-color:#D81B60 !important}.bg-gray-active{color:#000;background-color:#b5bbc8 !important}.bg-black-active{background-color:#000 !important}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#d33724 !important}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#00a7d0 !important}.bg-blue-active{background-color:#005384 !important}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#008d4c !important}.bg-navy-active{background-color:#001a35 !important}.bg-teal-active{background-color:#30bbbb !important}.bg-olive-active{background-color:#368763 !important}.bg-lime-active{background-color:#00e765 !important}.bg-orange-active{background-color:#ff7701 !important}.bg-fuchsia-active{background-color:#db0ead !important}.bg-purple-active{background-color:#555299 !important}.bg-maroon-active{background-color:#ca195a !important}[class^="bg-"].disabled{opacity:.65;filter:alpha(opacity=65)}.text-red{color:#dd4b39 !important}.text-yellow{color:#f39c12 !important}.text-aqua{color:#00c0ef !important}.text-blue{color:#0073b7 !important}.text-black{color:#111 !important}.text-light-blue{color:#3c8dbc !important}.text-green{color:#00a65a !important}.text-gray{color:#d2d6de !important}.text-navy{color:#001F3F !important}.text-teal{color:#39CCCC !important}.text-olive{color:#3D9970 !important}.text-lime{color:#01FF70 !important}.text-orange{color:#FF851B !important}.text-fuchsia{color:#F012BE !important}.text-purple{color:#605ca8 !important}.text-maroon{color:#D81B60 !important}.link-muted{color:#7a869d}.link-muted:hover,.link-muted:focus{color:#606c84}.link-black{color:#666}.link-black:hover,.link-black:focus{color:#999}.hide{display:none !important}.no-border{border:0 !important}.no-padding{padding:0 !important}.no-margin{margin:0 !important}.no-shadow{box-shadow:none !important}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0}.list-group-unbordered>.list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0}.flat{border-radius:0 !important}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.text-sm{font-size:12px}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important}.bg-teal-gradient{background:#39CCCC !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #39CCCC), color-stop(1, #7adddd)) !important;background:-ms-linear-gradient(bottom, #39CCCC, #7adddd) !important;background:-moz-linear-gradient(center bottom, #39CCCC 0%, #7adddd 100%) !important;background:-o-linear-gradient(#7adddd, #39CCCC) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39CCCC', GradientType=0) !important;color:#fff}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;background:-ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important;background:-moz-linear-gradient(center bottom, #3c8dbc 0%, #67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce, #3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;color:#fff}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;background:-ms-linear-gradient(bottom, #0073b7, #0089db) !important;background:-moz-linear-gradient(center bottom, #0073b7 0%, #0089db 100%) !important;background:-o-linear-gradient(#0089db, #0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;color:#fff}.bg-aqua-gradient{background:#00c0ef !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;background:-ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important;background:-moz-linear-gradient(center bottom, #00c0ef 0%, #14d1ff 100%) !important;background:-o-linear-gradient(#14d1ff, #00c0ef) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;color:#fff}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;background:-ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;background:-moz-linear-gradient(center bottom, #f39c12 0%, #f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60, #f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;color:#fff}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;background:-ms-linear-gradient(bottom, #605ca8, #9491c4) !important;background:-moz-linear-gradient(center bottom, #605ca8 0%, #9491c4 100%) !important;background:-o-linear-gradient(#9491c4, #605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;color:#fff}.bg-green-gradient{background:#00a65a !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;background:-ms-linear-gradient(bottom, #00a65a, #00ca6d) !important;background:-moz-linear-gradient(center bottom, #00a65a 0%, #00ca6d 100%) !important;background:-o-linear-gradient(#00ca6d, #00a65a) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;color:#fff}.bg-red-gradient{background:#dd4b39 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;background:-ms-linear-gradient(bottom, #dd4b39, #e47365) !important;background:-moz-linear-gradient(center bottom, #dd4b39 0%, #e47365 100%) !important;background:-o-linear-gradient(#e47365, #dd4b39) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;color:#fff}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important;background:-ms-linear-gradient(bottom, #111, #2b2b2b) !important;background:-moz-linear-gradient(center bottom, #111 0%, #2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b, #111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111', GradientType=0) !important;color:#fff}.bg-maroon-gradient{background:#D81B60 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #D81B60), color-stop(1, #e73f7c)) !important;background:-ms-linear-gradient(bottom, #D81B60, #e73f7c) !important;background:-moz-linear-gradient(center bottom, #D81B60 0%, #e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c, #D81B60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#D81B60', GradientType=0) !important;color:#fff}.description-block .description-icon{font-size:16px}.no-pad-top{padding-top:0}.position-static{position:static !important}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0}.list-link>a{padding:4px;color:#777}.list-link>a:hover{color:#222}.font-light{font-weight:300}.user-block:before,.user-block:after{content:" ";display:table}.user-block:after{clear:both}.user-block img{width:40px;height:40px;float:left}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px}.user-block .username{font-size:16px;font-weight:600}.user-block .description{color:#999;font-size:13px}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px}.user-block.user-block-sm .username{font-size:14px}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important}.img-sm+.img-push{margin-left:40px}.img-md{width:60px;height:60px}.img-md+.img-push{margin-left:70px}.img-lg{width:100px;height:100px}.img-lg+.img-push{margin-left:110px}.img-bordered{border:3px solid #d2d6de;padding:3px}.img-bordered-sm{border:2px solid #d2d6de;padding:2px}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left}.attachment-block .attachment-pushed{margin-left:110px}.attachment-block .attachment-heading{margin:0}.attachment-block .attachment-text{color:#555}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px}.full-opacity-hover{opacity:.65;filter:alpha(opacity=65)}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100)}.chart{position:relative;overflow:hidden;width:100%}.chart svg,.chart canvas{width:100% !important}hr{border-top:1px solid #555}#red .slider-selection{background:#f56954}#blue .slider-selection{background:#3c8dbc}#green .slider-selection{background:#00a65a}#yellow .slider-selection{background:#f39c12}#aqua .slider-selection{background:#00c0ef}#purple .slider-selection{background:#932ab6}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0, 0) !important;-ms-transform:translate(0, 0) !important;-o-transform:translate(0, 0) !important;transform:translate(0, 0) !important}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important}.invoice{width:100%;border:0;margin:0;padding:0}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr th,.table-responsive>.table tr td{white-space:normal !important}} AdminLTE/js/AdminLTE-app.js 0000644 00000066533 15002261751 0011302 0 ustar 00 /*! AdminLTE app.js * ================ * Main JS application file for AdminLTE v2. This file * should be included in all pages. It controls some layout * options and implements exclusive AdminLTE plugins. * * @Author Almsaeed Studio * @Support <http://www.almsaeedstudio.com> * @Email <abdullah@almsaeedstudio.com> * @version 2.3.8 * @license MIT <http://opensource.org/licenses/MIT> */ //Make sure jQuery has been loaded before app.js if (typeof jQuery === 'undefined') { throw new Error('AdminLTE requires jQuery'); } /* AdminLTE * * @type Object * @description $.AdminLTE is the main object for the template's app. * It's used for implementing functions and options related * to the template. Keeping everything wrapped in an object * prevents conflict with other plugins and is a better * way to organize our code. */ $.AdminLTE = {}; /* -------------------- * - AdminLTE Options - * -------------------- * Modify these options to suit your implementation */ $.AdminLTE.options = { //Add slimscroll to navbar menus //This requires you to load the slimscroll plugin //in every page before app.js navbarMenuSlimscroll: true, navbarMenuSlimscrollWidth: '3px', //The width of the scroll bar navbarMenuHeight: '200px', //The height of the inner menu //General animation speed for JS animated elements such as box collapse/expand and //sidebar treeview slide up/down. This options accepts an integer as milliseconds, //'fast', 'normal', or 'slow' animationSpeed: 500, //Sidebar push menu toggle button selector sidebarToggleSelector: "[data-toggle='offcanvas']", //Activate sidebar push menu sidebarPushMenu: true, //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin) sidebarSlimScroll: true, //Enable sidebar expand on hover effect for sidebar mini //This option is forced to true if both the fixed layout and sidebar mini //are used together sidebarExpandOnHover: false, //BoxRefresh Plugin enableBoxRefresh: true, //Bootstrap.js tooltip enableBSToppltip: true, BSTooltipSelector: "[data-toggle='tooltip']", //Enable Fast Click. Fastclick.js creates a more //native touch experience with touch devices. If you //choose to enable the plugin, make sure you load the script //before AdminLTE's app.js enableFastclick: false, //Control Sidebar Tree views enableControlTreeView: true, //Control Sidebar Options enableControlSidebar: true, controlSidebarOptions: { //Which button should trigger the open/close event toggleBtnSelector: "[data-toggle='control-sidebar']", //The sidebar selector selector: '.control-sidebar', //Enable slide over content slide: true, }, //Box Widget Plugin. Enable this plugin //to allow boxes to be collapsed and/or removed enableBoxWidget: true, //Box Widget plugin options boxWidgetOptions: { boxWidgetIcons: { //Collapse icon collapse: 'fa-minus', //Open icon open: 'fa-plus', //Remove icon remove: 'fa-times', }, boxWidgetSelectors: { //Remove button selector remove: '[data-widget="remove"]', //Collapse button selector collapse: '[data-widget="collapse"]', }, }, //Direct Chat plugin options directChat: { //Enable direct chat by default enable: true, //The button to open and close the chat contacts pane contactToggleSelector: '[data-widget="chat-pane-toggle"]', }, //Define the set of colors to use globally around the website colors: { lightBlue: '#3c8dbc', red: '#f56954', green: '#00a65a', aqua: '#00c0ef', yellow: '#f39c12', blue: '#0073b7', navy: '#001F3F', teal: '#39CCCC', olive: '#3D9970', lime: '#01FF70', orange: '#FF851B', fuchsia: '#F012BE', purple: '#8E24AA', maroon: '#D81B60', black: '#222222', gray: '#d2d6de', }, //The standard screen sizes that bootstrap uses. //If you change these in the variables.less file, change //them here too. screenSizes: { xs: 480, sm: 768, md: 992, lg: 1200, }, }; /* ------------------ * - Implementation - * ------------------ * The next block of code implements AdminLTE's * functions and plugins as specified by the * options above. */ $(function() { 'use strict'; //Fix for IE page transitions $('body').removeClass('hold-transition'); //Extend options if external options exist if (typeof AdminLTEOptions !== 'undefined') { $.extend(true, $.AdminLTE.options, AdminLTEOptions); } //Easy access to options var o = $.AdminLTE.options; //Set up the object _init(); //Activate the layout maker $.AdminLTE.layout.activate(); //Enable sidebar tree view controls if (o.enableControlTreeView) { $.AdminLTE.tree('.sidebar'); } //Enable control sidebar if (o.enableControlSidebar) { $.AdminLTE.controlSidebar.activate(); } //Add slimscroll to navbar dropdown if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') { $('.navbar .menu') .slimscroll({ height: o.navbarMenuHeight, alwaysVisible: false, size: o.navbarMenuSlimscrollWidth, }) .css('width', '100%'); } //Activate sidebar push menu if (o.sidebarPushMenu) { $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector); } //Activate Bootstrap tooltip if (o.enableBSToppltip) { $('body').tooltip({ selector: o.BSTooltipSelector, container: 'body', }); } //Activate box widget if (o.enableBoxWidget) { $.AdminLTE.boxWidget.activate(); } //Activate fast click if (o.enableFastclick && typeof FastClick != 'undefined') { FastClick.attach(document.body); } //Activate direct chat widget if (o.directChat.enable) { $(document).on('click', o.directChat.contactToggleSelector, function() { var box = $(this) .parents('.direct-chat') .first(); box.toggleClass('direct-chat-contacts-open'); }); } /* * INITIALIZE BUTTON TOGGLE * ------------------------ */ $('.btn-group[data-toggle="btn-toggle"]').each(function() { var group = $(this); $(this) .find('.btn') .on('click', function(e) { group.find('.btn.active').removeClass('active'); $(this).addClass('active'); e.preventDefault(); }); }); }); /* ---------------------------------- * - Initialize the AdminLTE Object - * ---------------------------------- * All AdminLTE functions are implemented below. */ function _init() { 'use strict'; /* Layout * ====== * Fixes the layout height in case min-height fails. * * @type Object * @usage $.AdminLTE.layout.activate() * $.AdminLTE.layout.fix() * $.AdminLTE.layout.fixSidebar() */ $.AdminLTE.layout = { activate: function() { var _this = this; _this.fix(); _this.fixSidebar(); $('body, html, .wrapper').css('height', 'auto'); $(window, '.wrapper').resize(function() { _this.fix(); _this.fixSidebar(); }); }, fix: function() { // Remove overflow from .wrapper if layout-boxed exists $('.layout-boxed > .wrapper').css('overflow', 'hidden'); //Get window height and the wrapper height var footer_height = $('.main-footer').outerHeight() || 0; var neg = $('.main-header').outerHeight() + footer_height; var window_height = $(window).height(); var sidebar_height = $('.sidebar').height() || 0; //Set the min-height of the content and sidebar based on the //the height of the document. if ($('body').hasClass('fixed')) { $('.content-wrapper, .right-side').css('min-height', window_height - footer_height); } else { var postSetWidth; if (window_height >= sidebar_height) { $('.content-wrapper, .right-side').css('min-height', window_height - neg); postSetWidth = window_height - neg; } else { $('.content-wrapper, .right-side').css('min-height', sidebar_height); postSetWidth = sidebar_height; } //Fix for the control sidebar height var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector); if (typeof controlSidebar !== 'undefined') { if (controlSidebar.height() > postSetWidth) $('.content-wrapper, .right-side').css( 'min-height', controlSidebar.height() ); } } }, fixSidebar: function() { //Make sure the body tag has the .fixed class if (!$('body').hasClass('fixed')) { if (typeof $.fn.slimScroll != 'undefined') { $('.sidebar') .slimScroll({ destroy: true }) .height('auto'); } return; } else if (typeof $.fn.slimScroll == 'undefined' && window.console) { window.console.error('Error: the fixed layout requires the slimscroll plugin!'); } //Enable slimscroll for fixed layout if ($.AdminLTE.options.sidebarSlimScroll) { if (typeof $.fn.slimScroll != 'undefined') { //Destroy if it exists $('.sidebar') .slimScroll({ destroy: true }) .height('auto'); //Add slimscroll $('.sidebar').slimScroll({ height: $(window).height() - $('.main-header').height() + 'px', color: 'rgba(0,0,0,0.2)', size: '3px', }); } } }, }; /* PushMenu() * ========== * Adds the push menu functionality to the sidebar. * * @type Function * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']") */ $.AdminLTE.pushMenu = { activate: function(toggleBtn) { //Get the screen sizes var screenSizes = $.AdminLTE.options.screenSizes; //Enable sidebar toggle $(document).on('click', toggleBtn, function(e) { e.preventDefault(); //Enable sidebar push menu if ($(window).width() > screenSizes.sm - 1) { if ($('body').hasClass('sidebar-collapse')) { $('body') .removeClass('sidebar-collapse') .trigger('expanded.pushMenu'); } else { $('body') .addClass('sidebar-collapse') .trigger('collapsed.pushMenu'); } } //Handle sidebar push menu for small screens else { if ($('body').hasClass('sidebar-open')) { $('body') .removeClass('sidebar-open') .removeClass('sidebar-collapse') .trigger('collapsed.pushMenu'); } else { $('body') .addClass('sidebar-open') .trigger('expanded.pushMenu'); } } }); $('.content-wrapper').click(function() { //Enable hide menu when clicking on the content-wrapper on small screens if ($(window).width() <= screenSizes.sm - 1 && $('body').hasClass('sidebar-open')) { $('body').removeClass('sidebar-open'); } }); //Enable expand on hover for sidebar mini if ( $.AdminLTE.options.sidebarExpandOnHover || ($('body').hasClass('fixed') && $('body').hasClass('sidebar-mini')) ) { this.expandOnHover(); } }, expandOnHover: function() { var _this = this; var screenWidth = $.AdminLTE.options.screenSizes.sm - 1; //Expand sidebar on hover $('.main-sidebar').hover( function() { if ( $('body').hasClass('sidebar-mini') && $('body').hasClass('sidebar-collapse') && $(window).width() > screenWidth ) { _this.expand(); } }, function() { if ( $('body').hasClass('sidebar-mini') && $('body').hasClass('sidebar-expanded-on-hover') && $(window).width() > screenWidth ) { _this.collapse(); } } ); }, expand: function() { $('body') .removeClass('sidebar-collapse') .addClass('sidebar-expanded-on-hover'); }, collapse: function() { if ($('body').hasClass('sidebar-expanded-on-hover')) { $('body') .removeClass('sidebar-expanded-on-hover') .addClass('sidebar-collapse'); } }, }; /* Tree() * ====== * Converts the sidebar into a multilevel * tree view menu. * * @type Function * @Usage: $.AdminLTE.tree('.sidebar') */ $.AdminLTE.tree = function(menu) { var _this = this; var animationSpeed = $.AdminLTE.options.animationSpeed; $(document) .off('click', menu + ' li a') .on('click', menu + ' li a', function(e) { //Get the clicked link and the next element var $this = $(this); var checkElement = $this.next(); //Check if the next element is a menu and is visible if ( checkElement.is('.treeview-menu') && checkElement.is(':visible') && !$('body').hasClass('sidebar-collapse') ) { //Close the menu checkElement.slideUp(animationSpeed, function() { checkElement.removeClass('menu-open'); //Fix the layout in case the sidebar stretches over the height of the window //_this.layout.fix(); }); checkElement.parent('li').removeClass('active'); } //If the menu is not visible else if (checkElement.is('.treeview-menu') && !checkElement.is(':visible')) { //Get the parent menu var parent = $this.parents('ul').first(); //Close all open menus within the parent var ul = parent.find('ul:visible').slideUp(animationSpeed); //Remove the menu-open class from the parent ul.removeClass('menu-open'); //Get the parent li var parent_li = $this.parent('li'); //Open the target menu and add the menu-open class checkElement.slideDown(animationSpeed, function() { //Add the class active to the parent li checkElement.addClass('menu-open'); parent.find('li.active').removeClass('active'); parent_li.addClass('active'); //Fix the layout in case the sidebar stretches over the height of the window _this.layout.fix(); }); } //if this isn't a link, prevent the page from being redirected if (checkElement.is('.treeview-menu')) { e.preventDefault(); } }); }; /* ControlSidebar * ============== * Adds functionality to the right sidebar * * @type Object * @usage $.AdminLTE.controlSidebar.activate(options) */ $.AdminLTE.controlSidebar = { //instantiate the object activate: function() { //Get the object var _this = this; //Update options var o = $.AdminLTE.options.controlSidebarOptions; //Get the sidebar var sidebar = $(o.selector); //The toggle button var btn = $(o.toggleBtnSelector); //Listen to the click event btn.on('click', function(e) { e.preventDefault(); //If the sidebar is not open if ( !sidebar.hasClass('control-sidebar-open') && !$('body').hasClass('control-sidebar-open') ) { //Open the sidebar _this.open(sidebar, o.slide); } else { _this.close(sidebar, o.slide); } }); //If the body has a boxed layout, fix the sidebar bg position var bg = $('.control-sidebar-bg'); _this._fix(bg); //If the body has a fixed layout, make the control sidebar fixed if ($('body').hasClass('fixed')) { _this._fixForFixed(sidebar); } else { //If the content height is less than the sidebar's height, force max height if ($('.content-wrapper, .right-side').height() < sidebar.height()) { _this._fixForContent(sidebar); } } }, //Open the control sidebar open: function(sidebar, slide) { //Slide over content if (slide) { sidebar.addClass('control-sidebar-open'); } else { //Push the content by adding the open class to the body instead //of the sidebar itself $('body').addClass('control-sidebar-open'); } }, //Close the control sidebar close: function(sidebar, slide) { if (slide) { sidebar.removeClass('control-sidebar-open'); } else { $('body').removeClass('control-sidebar-open'); } }, _fix: function(sidebar) { var _this = this; if ($('body').hasClass('layout-boxed')) { sidebar.css('position', 'absolute'); sidebar.height($('.wrapper').height()); if (_this.hasBindedResize) { return; } $(window).resize(function() { _this._fix(sidebar); }); _this.hasBindedResize = true; } else { sidebar.css({ position: 'fixed', height: 'auto', }); } }, _fixForFixed: function(sidebar) { sidebar.css({ position: 'fixed', 'max-height': '100%', overflow: 'auto', 'padding-bottom': '50px', }); }, _fixForContent: function(sidebar) { $('.content-wrapper, .right-side').css('min-height', sidebar.height()); }, }; /* BoxWidget * ========= * BoxWidget is a plugin to handle collapsing and * removing boxes from the screen. * * @type Object * @usage $.AdminLTE.boxWidget.activate() * Set all your options in the main $.AdminLTE.options object */ $.AdminLTE.boxWidget = { selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors, icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons, animationSpeed: $.AdminLTE.options.animationSpeed, activate: function(_box) { var _this = this; if (!_box) { _box = document; // activate all boxes per default } //Listen for collapse event triggers $(_box).on('click', _this.selectors.collapse, function(e) { e.preventDefault(); _this.collapse($(this)); }); //Listen for remove event triggers $(_box).on('click', _this.selectors.remove, function(e) { e.preventDefault(); _this.remove($(this)); }); }, collapse: function(element) { var _this = this; //Find the box parent var box = element.parents('.box').first(); //Find the body and the footer var box_content = box.find( '> .box-body, > .box-footer, > form >.box-body, > form > .box-footer' ); if (!box.hasClass('collapsed-box')) { //Convert minus into plus element .children(':first') .removeClass(_this.icons.collapse) .addClass(_this.icons.open); //Hide the content box_content.slideUp(_this.animationSpeed, function() { box.addClass('collapsed-box'); }); } else { //Convert plus into minus element .children(':first') .removeClass(_this.icons.open) .addClass(_this.icons.collapse); //Show the content box_content.slideDown(_this.animationSpeed, function() { box.removeClass('collapsed-box'); }); } }, remove: function(element) { //Find the box parent var box = element.parents('.box').first(); box.slideUp(this.animationSpeed); }, }; } /* ------------------ * - Custom Plugins - * ------------------ * All custom plugins are defined below. */ /* * BOX REFRESH BUTTON * ------------------ * This is a custom plugin to use with the component BOX. It allows you to add * a refresh button to the box. It converts the box's state to a loading state. * * @type plugin * @usage $("#box-widget").boxRefresh( options ); */ (function($) { 'use strict'; $.fn.boxRefresh = function(options) { // Render options var settings = $.extend( { //Refresh button selector trigger: '.refresh-btn', //File source to be loaded (e.g: ajax/src.php) source: '', //Callbacks onLoadStart: function(box) { return box; }, //Right after the button has been clicked onLoadDone: function(box) { return box; }, //When the source has been loaded }, options ); //The overlay var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>'); return this.each(function() { //if a source is specified if (settings.source === '') { if (window.console) { window.console.log('Please specify a source first - boxRefresh()'); } return; } //the box var box = $(this); //the button var rBtn = box.find(settings.trigger).first(); //On trigger click rBtn.on('click', function(e) { e.preventDefault(); //Add loading overlay start(box); //Perform ajax call box.find('.box-body').load(settings.source, function() { done(box); }); }); }); function start(box) { //Add overlay and loading img box.append(overlay); settings.onLoadStart.call(box); } function done(box) { //Remove overlay and loading img box.find(overlay).remove(); settings.onLoadDone.call(box); } }; })(jQuery); /* * EXPLICIT BOX CONTROLS * ----------------------- * This is a custom plugin to use with the component BOX. It allows you to activate * a box inserted in the DOM after the app.js was loaded, toggle and remove box. * * @type plugin * @usage $("#box-widget").activateBox(); * @usage $("#box-widget").toggleBox(); * @usage $("#box-widget").removeBox(); */ (function($) { 'use strict'; $.fn.activateBox = function() { $.AdminLTE.boxWidget.activate(this); }; $.fn.toggleBox = function() { var button = $($.AdminLTE.boxWidget.selectors.collapse, this); $.AdminLTE.boxWidget.collapse(button); }; $.fn.removeBox = function() { var button = $($.AdminLTE.boxWidget.selectors.remove, this); $.AdminLTE.boxWidget.remove(button); }; })(jQuery); /* * TODO LIST CUSTOM PLUGIN * ----------------------- * This plugin depends on iCheck plugin for checkbox and radio inputs * * @type plugin * @usage $("#todo-widget").todolist( options ); */ (function($) { 'use strict'; $.fn.todolist = function(options) { // Render options var settings = $.extend( { //When the user checks the input onCheck: function(ele) { return ele; }, //When the user unchecks the input onUncheck: function(ele) { return ele; }, }, options ); return this.each(function() { if (typeof $.fn.iCheck != 'undefined') { $('input', this).on('ifChecked', function() { var ele = $(this) .parents('li') .first(); ele.toggleClass('done'); settings.onCheck.call(ele); }); $('input', this).on('ifUnchecked', function() { var ele = $(this) .parents('li') .first(); ele.toggleClass('done'); settings.onUncheck.call(ele); }); } else { $('input', this).on('change', function() { var ele = $(this) .parents('li') .first(); ele.toggleClass('done'); if ($('input', ele).is(':checked')) { settings.onCheck.call(ele); } else { settings.onUncheck.call(ele); } }); } }); }; })(jQuery); AdminLTE/js/adminlte.js 0000644 00000072065 15002261751 0010721 0 ustar 00 /*! AdminLTE app.js * ================ * Main JS application file for AdminLTE v2. This file * should be included in all pages. It controls some layout * options and implements exclusive AdminLTE plugins. * * @author Colorlib * @support <https://github.com/ColorlibHQ/AdminLTE/issues> * @version v2.4.18 * @repository git://github.com/ColorlibHQ/AdminLTE.git * @license MIT <http://opensource.org/licenses/MIT> */ // Make sure jQuery has been loaded if (typeof jQuery === 'undefined') { throw new Error('AdminLTE requires jQuery') } /* BoxRefresh() * ========= * Adds AJAX content control to a box. * * @Usage: $('#my-box').boxRefresh(options) * or add [data-widget="box-refresh"] to the box element * Pass any option as data-option="value" */ +function ($) { 'use strict'; var DataKey = 'lte.boxrefresh'; var Default = { source : '', params : {}, trigger : '.refresh-btn', content : '.box-body', loadInContent : true, responseType : '', overlayTemplate: '<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>', onLoadStart : function () { }, onLoadDone : function (response) { return response; } }; var Selector = { data: '[data-widget="box-refresh"]' }; // BoxRefresh Class Definition // ========================= var BoxRefresh = function (element, options) { this.element = element; this.options = options; this.$overlay = $(options.overlayTemplate); if (options.source === '') { throw new Error('Source url was not defined. Please specify a url in your BoxRefresh source option.'); } this._setUpListeners(); this.load(); }; BoxRefresh.prototype.load = function () { this._addOverlay(); this.options.onLoadStart.call($(this)); $.get(this.options.source, this.options.params, function (response) { if (this.options.loadInContent) { $(this.element).find(this.options.content).html(response); } this.options.onLoadDone.call($(this), response); this._removeOverlay(); }.bind(this), this.options.responseType !== '' && this.options.responseType); }; // Private BoxRefresh.prototype._setUpListeners = function () { $(this.element).on('click', this.options.trigger, function (event) { if (event) event.preventDefault(); this.load(); }.bind(this)); }; BoxRefresh.prototype._addOverlay = function () { $(this.element).append(this.$overlay); }; BoxRefresh.prototype._removeOverlay = function () { $(this.$overlay).remove(); }; // Plugin Definition // ================= function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); $this.data(DataKey, (data = new BoxRefresh($this, options))); } if (typeof data == 'string') { if (typeof data[option] == 'undefined') { throw new Error('No method named ' + option); } data[option](); } }); } var old = $.fn.boxRefresh; $.fn.boxRefresh = Plugin; $.fn.boxRefresh.Constructor = BoxRefresh; // No Conflict Mode // ================ $.fn.boxRefresh.noConflict = function () { $.fn.boxRefresh = old; return this; }; // BoxRefresh Data API // ================= $(window).on('load', function () { $(Selector.data).each(function () { Plugin.call($(this)); }); }); }(jQuery); /* BoxWidget() * ====== * Adds box widget functions to boxes. * * @Usage: $('.my-box').boxWidget(options) * This plugin auto activates on any element using the `.box` class * Pass any option as data-option="value" */ +function ($) { 'use strict'; var DataKey = 'lte.boxwidget'; var Default = { animationSpeed : 500, collapseTrigger: '[data-widget="collapse"]', removeTrigger : '[data-widget="remove"]', collapseIcon : 'fa-minus', expandIcon : 'fa-plus', removeIcon : 'fa-times' }; var Selector = { data : '.box', collapsed: '.collapsed-box', header : '.box-header', body : '.box-body', footer : '.box-footer', tools : '.box-tools' }; var ClassName = { collapsed: 'collapsed-box' }; var Event = { collapsing: 'collapsing.boxwidget', collapsed: 'collapsed.boxwidget', expanding: 'expanding.boxwidget', expanded: 'expanded.boxwidget', removing: 'removing.boxwidget', removed: 'removed.boxwidget' }; // BoxWidget Class Definition // ===================== var BoxWidget = function (element, options) { this.element = element; this.options = options; this._setUpListeners(); }; BoxWidget.prototype.toggle = function () { var isOpen = !$(this.element).is(Selector.collapsed); if (isOpen) { this.collapse(); } else { this.expand(); } }; BoxWidget.prototype.expand = function () { var expandedEvent = $.Event(Event.expanded); var expandingEvent = $.Event(Event.expanding); var collapseIcon = this.options.collapseIcon; var expandIcon = this.options.expandIcon; $(this.element).removeClass(ClassName.collapsed); $(this.element) .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer) .children(Selector.tools) .find('.' + expandIcon) .removeClass(expandIcon) .addClass(collapseIcon); $(this.element).children(Selector.body + ', ' + Selector.footer) .slideDown(this.options.animationSpeed, function () { $(this.element).trigger(expandedEvent); }.bind(this)) .trigger(expandingEvent); }; BoxWidget.prototype.collapse = function () { var collapsedEvent = $.Event(Event.collapsed); var collapsingEvent = $.Event(Event.collapsing); var collapseIcon = this.options.collapseIcon; var expandIcon = this.options.expandIcon; $(this.element) .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer) .children(Selector.tools) .find('.' + collapseIcon) .removeClass(collapseIcon) .addClass(expandIcon); $(this.element).children(Selector.body + ', ' + Selector.footer) .slideUp(this.options.animationSpeed, function () { $(this.element).addClass(ClassName.collapsed); $(this.element).trigger(collapsedEvent); }.bind(this)) .trigger(collapsingEvent); }; BoxWidget.prototype.remove = function () { var removedEvent = $.Event(Event.removed); var removingEvent = $.Event(Event.removing); $(this.element).slideUp(this.options.animationSpeed, function () { $(this.element).trigger(removedEvent); $(this.element).remove(); }.bind(this)) .trigger(removingEvent); }; // Private BoxWidget.prototype._setUpListeners = function () { var that = this; $(this.element).on('click', this.options.collapseTrigger, function (event) { if (event) event.preventDefault(); that.toggle($(this)); return false; }); $(this.element).on('click', this.options.removeTrigger, function (event) { if (event) event.preventDefault(); that.remove($(this)); return false; }); }; // Plugin Definition // ================= function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); $this.data(DataKey, (data = new BoxWidget($this, options))); } if (typeof option == 'string') { if (typeof data[option] == 'undefined') { throw new Error('No method named ' + option); } data[option](); } }); } var old = $.fn.boxWidget; $.fn.boxWidget = Plugin; $.fn.boxWidget.Constructor = BoxWidget; // No Conflict Mode // ================ $.fn.boxWidget.noConflict = function () { $.fn.boxWidget = old; return this; }; // BoxWidget Data API // ================== $(window).on('load', function () { $(Selector.data).each(function () { Plugin.call($(this)); }); }); }(jQuery); /* ControlSidebar() * =============== * Toggles the state of the control sidebar * * @Usage: $('#control-sidebar-trigger').controlSidebar(options) * or add [data-toggle="control-sidebar"] to the trigger * Pass any option as data-option="value" */ +function ($) { 'use strict'; var DataKey = 'lte.controlsidebar'; var Default = { controlsidebarSlide: true }; var Selector = { sidebar: '.control-sidebar', data : '[data-toggle="control-sidebar"]', open : '.control-sidebar-open', bg : '.control-sidebar-bg', wrapper: '.wrapper', content: '.content-wrapper', boxed : '.layout-boxed' }; var ClassName = { open: 'control-sidebar-open', transition: 'control-sidebar-hold-transition', fixed: 'fixed' }; var Event = { collapsed: 'collapsed.controlsidebar', expanded : 'expanded.controlsidebar' }; // ControlSidebar Class Definition // =============================== var ControlSidebar = function (element, options) { this.element = element; this.options = options; this.hasBindedResize = false; this.init(); }; ControlSidebar.prototype.init = function () { // Add click listener if the element hasn't been // initialized using the data API if (!$(this.element).is(Selector.data)) { $(this).on('click', this.toggle); } this.fix(); $(window).resize(function () { this.fix(); }.bind(this)); }; ControlSidebar.prototype.toggle = function (event) { if (event) event.preventDefault(); this.fix(); if (!$(Selector.sidebar).is(Selector.open) && !$('body').is(Selector.open)) { this.expand(); } else { this.collapse(); } }; ControlSidebar.prototype.expand = function () { $(Selector.sidebar).show(); if (!this.options.controlsidebarSlide) { $('body').addClass(ClassName.transition).addClass(ClassName.open).delay(50).queue(function(){ $('body').removeClass(ClassName.transition); $(this).dequeue() }) } else { $(Selector.sidebar).addClass(ClassName.open); } $(this.element).trigger($.Event(Event.expanded)); }; ControlSidebar.prototype.collapse = function () { if (!this.options.controlsidebarSlide) { $('body').addClass(ClassName.transition).removeClass(ClassName.open).delay(50).queue(function(){ $('body').removeClass(ClassName.transition); $(this).dequeue() }) } else { $(Selector.sidebar).removeClass(ClassName.open); } $(Selector.sidebar).fadeOut(); $(this.element).trigger($.Event(Event.collapsed)); }; ControlSidebar.prototype.fix = function () { if ($('body').is(Selector.boxed)) { this._fixForBoxed($(Selector.bg)); } }; // Private ControlSidebar.prototype._fixForBoxed = function (bg) { bg.css({ position: 'absolute', height : $(Selector.wrapper).height() }); }; // Plugin Definition // ================= function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); $this.data(DataKey, (data = new ControlSidebar($this, options))); } if (typeof option == 'string') data.toggle(); }); } var old = $.fn.controlSidebar; $.fn.controlSidebar = Plugin; $.fn.controlSidebar.Constructor = ControlSidebar; // No Conflict Mode // ================ $.fn.controlSidebar.noConflict = function () { $.fn.controlSidebar = old; return this; }; // ControlSidebar Data API // ======================= $(document).on('click', Selector.data, function (event) { if (event) event.preventDefault(); Plugin.call($(this), 'toggle'); }); }(jQuery); /* DirectChat() * =============== * Toggles the state of the control sidebar * * @Usage: $('#my-chat-box').directChat() * or add [data-widget="direct-chat"] to the trigger */ +function ($) { 'use strict'; var DataKey = 'lte.directchat'; var Selector = { data: '[data-widget="chat-pane-toggle"]', box : '.direct-chat' }; var ClassName = { open: 'direct-chat-contacts-open' }; // DirectChat Class Definition // =========================== var DirectChat = function (element) { this.element = element; }; DirectChat.prototype.toggle = function ($trigger) { $trigger.parents(Selector.box).first().toggleClass(ClassName.open); }; // Plugin Definition // ================= function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { $this.data(DataKey, (data = new DirectChat($this))); } if (typeof option == 'string') data.toggle($this); }); } var old = $.fn.directChat; $.fn.directChat = Plugin; $.fn.directChat.Constructor = DirectChat; // No Conflict Mode // ================ $.fn.directChat.noConflict = function () { $.fn.directChat = old; return this; }; // DirectChat Data API // =================== $(document).on('click', Selector.data, function (event) { if (event) event.preventDefault(); Plugin.call($(this), 'toggle'); }); }(jQuery); /* PushMenu() * ========== * Adds the push menu functionality to the sidebar. * * @usage: $('.btn').pushMenu(options) * or add [data-toggle="push-menu"] to any button * Pass any option as data-option="value" */ +function ($) { 'use strict'; var DataKey = 'lte.pushmenu'; var Default = { collapseScreenSize : 767, expandOnHover : false, expandTransitionDelay: 200 }; var Selector = { collapsed : '.sidebar-collapse', open : '.sidebar-open', mainSidebar : '.main-sidebar', contentWrapper: '.content-wrapper', searchInput : '.sidebar-form .form-control', button : '[data-toggle="push-menu"]', mini : '.sidebar-mini', expanded : '.sidebar-expanded-on-hover', layoutFixed : '.fixed' }; var ClassName = { collapsed : 'sidebar-collapse', open : 'sidebar-open', mini : 'sidebar-mini', expanded : 'sidebar-expanded-on-hover', expandFeature: 'sidebar-mini-expand-feature', layoutFixed : 'fixed' }; var Event = { expanded : 'expanded.pushMenu', collapsed: 'collapsed.pushMenu' }; // PushMenu Class Definition // ========================= var PushMenu = function (options) { this.options = options; this.init(); }; PushMenu.prototype.init = function () { if (this.options.expandOnHover || ($('body').is(Selector.mini + Selector.layoutFixed))) { this.expandOnHover(); $('body').addClass(ClassName.expandFeature); } $(Selector.contentWrapper).click(function () { // Enable hide menu when clicking on the content-wrapper on small screens if ($(window).width() <= this.options.collapseScreenSize && $('body').hasClass(ClassName.open)) { this.close(); } }.bind(this)); // __Fix for android devices $(Selector.searchInput).click(function (e) { e.stopPropagation(); }); }; PushMenu.prototype.toggle = function () { var windowWidth = $(window).width(); var isOpen = !$('body').hasClass(ClassName.collapsed); if (windowWidth <= this.options.collapseScreenSize) { isOpen = $('body').hasClass(ClassName.open); } if (!isOpen) { this.open(); } else { this.close(); } }; PushMenu.prototype.open = function () { var windowWidth = $(window).width(); if (windowWidth > this.options.collapseScreenSize) { $('body').removeClass(ClassName.collapsed) .trigger($.Event(Event.expanded)); } else { $('body').addClass(ClassName.open) .trigger($.Event(Event.expanded)); } }; PushMenu.prototype.close = function () { var windowWidth = $(window).width(); if (windowWidth > this.options.collapseScreenSize) { $('body').addClass(ClassName.collapsed) .trigger($.Event(Event.collapsed)); } else { $('body').removeClass(ClassName.open + ' ' + ClassName.collapsed) .trigger($.Event(Event.collapsed)); } }; PushMenu.prototype.expandOnHover = function () { $(Selector.mainSidebar).hover(function () { if ($('body').is(Selector.mini + Selector.collapsed) && $(window).width() > this.options.collapseScreenSize) { this.expand(); } }.bind(this), function () { if ($('body').is(Selector.expanded)) { this.collapse(); } }.bind(this)); }; PushMenu.prototype.expand = function () { setTimeout(function () { $('body').removeClass(ClassName.collapsed) .addClass(ClassName.expanded); }, this.options.expandTransitionDelay); }; PushMenu.prototype.collapse = function () { setTimeout(function () { $('body').removeClass(ClassName.expanded) .addClass(ClassName.collapsed); }, this.options.expandTransitionDelay); }; // PushMenu Plugin Definition // ========================== function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); $this.data(DataKey, (data = new PushMenu(options))); } if (option === 'toggle') data.toggle(); }); } var old = $.fn.pushMenu; $.fn.pushMenu = Plugin; $.fn.pushMenu.Constructor = PushMenu; // No Conflict Mode // ================ $.fn.pushMenu.noConflict = function () { $.fn.pushMenu = old; return this; }; // Data API // ======== $(document).on('click', Selector.button, function (e) { e.preventDefault(); Plugin.call($(this), 'toggle'); }); $(window).on('load', function () { Plugin.call($(Selector.button)); }); }(jQuery); /* TodoList() * ========= * Converts a list into a todoList. * * @Usage: $('.my-list').todoList(options) * or add [data-widget="todo-list"] to the ul element * Pass any option as data-option="value" */ +function ($) { 'use strict'; var DataKey = 'lte.todolist'; var Default = { onCheck : function (item) { return item; }, onUnCheck: function (item) { return item; } }; var Selector = { data: '[data-widget="todo-list"]' }; var ClassName = { done: 'done' }; // TodoList Class Definition // ========================= var TodoList = function (element, options) { this.element = element; this.options = options; this._setUpListeners(); }; TodoList.prototype.toggle = function (item) { item.parents(Selector.li).first().toggleClass(ClassName.done); if (!item.prop('checked')) { this.unCheck(item); return; } this.check(item); }; TodoList.prototype.check = function (item) { this.options.onCheck.call(item); }; TodoList.prototype.unCheck = function (item) { this.options.onUnCheck.call(item); }; // Private TodoList.prototype._setUpListeners = function () { var that = this; $(this.element).on('change ifChanged', 'input:checkbox', function () { that.toggle($(this)); }); }; // Plugin Definition // ================= function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); $this.data(DataKey, (data = new TodoList($this, options))); } if (typeof data == 'string') { if (typeof data[option] == 'undefined') { throw new Error('No method named ' + option); } data[option](); } }); } var old = $.fn.todoList; $.fn.todoList = Plugin; $.fn.todoList.Constructor = TodoList; // No Conflict Mode // ================ $.fn.todoList.noConflict = function () { $.fn.todoList = old; return this; }; // TodoList Data API // ================= $(window).on('load', function () { $(Selector.data).each(function () { Plugin.call($(this)); }); }); }(jQuery); /* Tree() * ====== * Converts a nested list into a multilevel * tree view menu. * * @Usage: $('.my-menu').tree(options) * or add [data-widget="tree"] to the ul element * Pass any option as data-option="value" */ +function ($) { 'use strict'; var DataKey = 'lte.tree'; var Default = { animationSpeed: 500, accordion : true, followLink : false, trigger : '.treeview a' }; var Selector = { tree : '.tree', treeview : '.treeview', treeviewMenu: '.treeview-menu', open : '.menu-open, .active', li : 'li', data : '[data-widget="tree"]', active : '.active' }; var ClassName = { open: 'menu-open', tree: 'tree' }; var Event = { collapsed: 'collapsed.tree', expanded : 'expanded.tree' }; // Tree Class Definition // ===================== var Tree = function (element, options) { this.element = element; this.options = options; $(this.element).addClass(ClassName.tree); $(Selector.treeview + Selector.active, this.element).addClass(ClassName.open); this._setUpListeners(); }; Tree.prototype.toggle = function (link, event) { var treeviewMenu = link.next(Selector.treeviewMenu); var parentLi = link.parent(); var isOpen = parentLi.hasClass(ClassName.open); if (!parentLi.is(Selector.treeview)) { return; } if (!this.options.followLink || link.attr('href') === '#') { event.preventDefault(); } if (isOpen) { this.collapse(treeviewMenu, parentLi); } else { this.expand(treeviewMenu, parentLi); } }; Tree.prototype.expand = function (tree, parent) { var expandedEvent = $.Event(Event.expanded); if (this.options.accordion) { var openMenuLi = parent.siblings(Selector.open); var openTree = openMenuLi.children(Selector.treeviewMenu); this.collapse(openTree, openMenuLi); } parent.addClass(ClassName.open); tree.stop().slideDown(this.options.animationSpeed, function () { $(this.element).trigger(expandedEvent); parent.height('auto'); }.bind(this)); }; Tree.prototype.collapse = function (tree, parentLi) { var collapsedEvent = $.Event(Event.collapsed); //tree.find(Selector.open).removeClass(ClassName.open); parentLi.removeClass(ClassName.open); tree.stop().slideUp(this.options.animationSpeed, function () { //tree.find(Selector.open + ' > ' + Selector.treeview).slideUp(); $(this.element).trigger(collapsedEvent); // Collapse child items parentLi.find(Selector.treeview).removeClass(ClassName.open).find(Selector.treeviewMenu).hide(); }.bind(this)); }; // Private Tree.prototype._setUpListeners = function () { var that = this; $(this.element).on('click', this.options.trigger, function (event) { that.toggle($(this), event); }); }; // Plugin Definition // ================= function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); $this.data(DataKey, new Tree($this, options)); } }); } var old = $.fn.tree; $.fn.tree = Plugin; $.fn.tree.Constructor = Tree; // No Conflict Mode // ================ $.fn.tree.noConflict = function () { $.fn.tree = old; return this; }; // Tree Data API // ============= $(window).on('load', function () { $(Selector.data).each(function () { Plugin.call($(this)); }); }); }(jQuery); /* Layout() * ======== * Implements AdminLTE layout. * Fixes the layout height in case min-height fails. * * @usage activated automatically upon window load. * Configure any options by passing data-option="value" * to the body tag. */ +function ($) { 'use strict'; var DataKey = 'lte.layout'; var Default = { slimscroll : true, resetHeight: true }; var Selector = { wrapper : '.wrapper', contentWrapper: '.content-wrapper', layoutBoxed : '.layout-boxed', mainFooter : '.main-footer', mainHeader : '.main-header', mainSidebar : '.main-sidebar', slimScrollDiv : 'slimScrollDiv', sidebar : '.sidebar', controlSidebar: '.control-sidebar', fixed : '.fixed', sidebarMenu : '.sidebar-menu', logo : '.main-header .logo' }; var ClassName = { fixed : 'fixed', holdTransition: 'hold-transition' }; var Layout = function (options) { this.options = options; this.bindedResize = false; this.activate(); }; Layout.prototype.activate = function () { this.fix(); this.fixSidebar(); $('body').removeClass(ClassName.holdTransition); if (this.options.resetHeight) { $('body, html, ' + Selector.wrapper).css({ 'height' : 'auto', 'min-height': '100%' }); } if (!this.bindedResize) { $(window).resize(function () { this.fix(); this.fixSidebar(); $(Selector.logo + ', ' + Selector.sidebar).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function () { this.fix(); this.fixSidebar(); }.bind(this)); }.bind(this)); this.bindedResize = true; } $(Selector.sidebarMenu).on('expanded.tree', function () { this.fix(); this.fixSidebar(); }.bind(this)); $(Selector.sidebarMenu).on('collapsed.tree', function () { this.fix(); this.fixSidebar(); }.bind(this)); }; Layout.prototype.fix = function () { // Remove overflow from .wrapper if layout-boxed exists $(Selector.layoutBoxed + ' > ' + Selector.wrapper).css('overflow', 'hidden'); // Get window height and the wrapper height var footerHeight = $(Selector.mainFooter).outerHeight() || 0; var headerHeight = $(Selector.mainHeader).outerHeight() || 0; var neg = headerHeight + footerHeight; var windowHeight = $(window).height(); var sidebarHeight = $(Selector.sidebar).outerHeight() || 0; // Set the min-height of the content and sidebar based on // the height of the document. if ($('body').hasClass(ClassName.fixed)) { $(Selector.contentWrapper).css('min-height', windowHeight - footerHeight); } else { var postSetHeight; if (windowHeight >= sidebarHeight + headerHeight) { $(Selector.contentWrapper).css('min-height', windowHeight - neg); postSetHeight = windowHeight - neg; } else { $(Selector.contentWrapper).css('min-height', sidebarHeight); postSetHeight = sidebarHeight; } // Fix for the control sidebar height var $controlSidebar = $(Selector.controlSidebar); if (typeof $controlSidebar !== 'undefined') { if ($controlSidebar.height() > postSetHeight) $(Selector.contentWrapper).css('min-height', $controlSidebar.height()); } } }; Layout.prototype.fixSidebar = function () { // Make sure the body tag has the .fixed class if (!$('body').hasClass(ClassName.fixed)) { if (typeof $.fn.slimScroll !== 'undefined') { $(Selector.sidebar).slimScroll({ destroy: true }).height('auto'); } return; } // Enable slimscroll for fixed layout if (this.options.slimscroll) { if (typeof $.fn.slimScroll !== 'undefined') { // Destroy if it exists // $(Selector.sidebar).slimScroll({ destroy: true }).height('auto') // Add slimscroll if ($(Selector.mainSidebar).find(Selector.slimScrollDiv).length === 0) { $(Selector.sidebar).slimScroll({ height: ($(window).height() - $(Selector.mainHeader).height()) + 'px' }); } } } }; // Plugin Definition // ================= function Plugin(option) { return this.each(function () { var $this = $(this); var data = $this.data(DataKey); if (!data) { var options = $.extend({}, Default, $this.data(), typeof option === 'object' && option); $this.data(DataKey, (data = new Layout(options))); } if (typeof option === 'string') { if (typeof data[option] === 'undefined') { throw new Error('No method named ' + option); } data[option](); } }); } var old = $.fn.layout; $.fn.layout = Plugin; $.fn.layout.Constuctor = Layout; // No conflict mode // ================ $.fn.layout.noConflict = function () { $.fn.layout = old; return this; }; // Layout DATA-API // =============== $(window).on('load', function () { Plugin.call($('body')); }); }(jQuery); AdminLTE/js/demo.js 0000644 00000044260 15002261751 0010044 0 ustar 00 /** * AdminLTE Demo Menu * ------------------ * You should not use this file in production. * This file is for demo purposes only. */ $(function () { 'use strict' /** * Get access to plugins */ $('[data-toggle="control-sidebar"]').controlSidebar() $('[data-toggle="push-menu"]').pushMenu() var $pushMenu = $('[data-toggle="push-menu"]').data('lte.pushmenu') var $controlSidebar = $('[data-toggle="control-sidebar"]').data('lte.controlsidebar') var $layout = $('body').data('lte.layout') $(window).on('load', function() { // Reinitialize variables on load $pushMenu = $('[data-toggle="push-menu"]').data('lte.pushmenu') $controlSidebar = $('[data-toggle="control-sidebar"]').data('lte.controlsidebar') $layout = $('body').data('lte.layout') }) /** * List of all the available skins * * @type Array */ var mySkins = [ 'skin-blue', 'skin-black', 'skin-red', 'skin-yellow', 'skin-purple', 'skin-green', 'skin-blue-light', 'skin-black-light', 'skin-red-light', 'skin-yellow-light', 'skin-purple-light', 'skin-green-light' ] /** * Get a prestored setting * * @param String name Name of of the setting * @returns String The value of the setting | null */ function get(name) { if (typeof (Storage) !== 'undefined') { return localStorage.getItem(name) } else { window.alert('Please use a modern browser to properly view this template!') } } /** * Store a new settings in the browser * * @param String name Name of the setting * @param String val Value of the setting * @returns void */ function store(name, val) { if (typeof (Storage) !== 'undefined') { localStorage.setItem(name, val) } else { window.alert('Please use a modern browser to properly view this template!') } } /** * Toggles layout classes * * @param String cls the layout class to toggle * @returns void */ function changeLayout(cls) { $('body').toggleClass(cls) $layout.fixSidebar() if ($('body').hasClass('fixed') && cls == 'fixed') { $pushMenu.expandOnHover() $layout.activate() } $controlSidebar.fix() } /** * Replaces the old skin with the new skin * @param String cls the new skin class * @returns Boolean false to prevent link's default action */ function changeSkin(cls) { $.each(mySkins, function (i) { $('body').removeClass(mySkins[i]) }) $('body').addClass(cls) store('skin', cls) return false } /** * Retrieve default settings and apply them to the template * * @returns void */ function setup() { var tmp = get('skin') if (tmp && $.inArray(tmp, mySkins)) changeSkin(tmp) // Add the change skin listener $('[data-skin]').on('click', function (e) { if ($(this).hasClass('knob')) return e.preventDefault() changeSkin($(this).data('skin')) }) // Add the layout manager $('[data-layout]').on('click', function () { changeLayout($(this).data('layout')) }) $('[data-controlsidebar]').on('click', function () { changeLayout($(this).data('controlsidebar')) var slide = !$controlSidebar.options.slide $controlSidebar.options.slide = slide if (!slide) $('.control-sidebar').removeClass('control-sidebar-open') }) $('[data-sidebarskin="toggle"]').on('click', function () { var $sidebar = $('.control-sidebar') if ($sidebar.hasClass('control-sidebar-dark')) { $sidebar.removeClass('control-sidebar-dark') $sidebar.addClass('control-sidebar-light') } else { $sidebar.removeClass('control-sidebar-light') $sidebar.addClass('control-sidebar-dark') } }) $('[data-enable="expandOnHover"]').on('click', function () { $(this).attr('disabled', true) $pushMenu.expandOnHover() if (!$('body').hasClass('sidebar-collapse')) $('[data-layout="sidebar-collapse"]').click() }) // Reset options if ($('body').hasClass('fixed')) { $('[data-layout="fixed"]').attr('checked', 'checked') } if ($('body').hasClass('layout-boxed')) { $('[data-layout="layout-boxed"]').attr('checked', 'checked') } if ($('body').hasClass('sidebar-collapse')) { $('[data-layout="sidebar-collapse"]').attr('checked', 'checked') } } // Create the new tab var $tabPane = $('<div />', { 'id': 'control-sidebar-theme-demo-options-tab', 'class': 'tab-pane active' }) // Create the tab button var $tabButton = $('<li />', {'class': 'active'}) .html('<a href=\'#control-sidebar-theme-demo-options-tab\' data-toggle=\'tab\'>' + '<i class="fa fa-wrench"></i>' + '</a>') // Add the tab button to the right sidebar tabs $('[href="#control-sidebar-home-tab"]') .parent() .before($tabButton) // Create the menu var $demoSettings = $('<div />') // Layout options $demoSettings.append( '<h4 class="control-sidebar-heading">' + 'Layout Options' + '</h4>' // Fixed layout + '<div class="form-group">' + '<label class="control-sidebar-subheading">' + '<input type="checkbox"data-layout="fixed"class="pull-right"/> ' + 'Fixed layout' + '</label>' + '<p>Activate the fixed layout. You can\'t use fixed and boxed layouts together</p>' + '</div>' // Boxed layout + '<div class="form-group">' + '<label class="control-sidebar-subheading">' + '<input type="checkbox"data-layout="layout-boxed" class="pull-right"/> ' + 'Boxed Layout' + '</label>' + '<p>Activate the boxed layout</p>' + '</div>' // Sidebar Toggle + '<div class="form-group">' + '<label class="control-sidebar-subheading">' + '<input type="checkbox"data-layout="sidebar-collapse"class="pull-right"/> ' + 'Toggle Sidebar' + '</label>' + '<p>Toggle the left sidebar\'s state (open or collapse)</p>' + '</div>' // Sidebar mini expand on hover toggle + '<div class="form-group">' + '<label class="control-sidebar-subheading">' + '<input type="checkbox"data-enable="expandOnHover"class="pull-right"/> ' + 'Sidebar Expand on Hover' + '</label>' + '<p>Let the sidebar mini expand on hover</p>' + '</div>' // Control Sidebar Toggle + '<div class="form-group">' + '<label class="control-sidebar-subheading">' + '<input type="checkbox"data-controlsidebar="control-sidebar-open"class="pull-right"/> ' + 'Toggle Right Sidebar Slide' + '</label>' + '<p>Toggle between slide over content and push content effects</p>' + '</div>' // Control Sidebar Skin Toggle + '<div class="form-group">' + '<label class="control-sidebar-subheading">' + '<input type="checkbox"data-sidebarskin="toggle"class="pull-right"/> ' + 'Toggle Right Sidebar Skin' + '</label>' + '<p>Toggle between dark and light skins for the right sidebar</p>' + '</div>' ) var $skinsList = $('<ul />', {'class': 'list-unstyled clearfix'}) // Dark sidebar skins var $skinBlue = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-blue" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px; background: #367fa9"></span><span class="bg-light-blue" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin">Blue</p>') $skinsList.append($skinBlue) var $skinBlack = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-black" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div style="box-shadow: 0 0 2px rgba(0,0,0,0.1)" class="clearfix"><span style="display:block; width: 20%; float: left; height: 7px; background: #fefefe"></span><span style="display:block; width: 80%; float: left; height: 7px; background: #fefefe"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin">Black</p>') $skinsList.append($skinBlack) var $skinPurple = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-purple" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-purple-active"></span><span class="bg-purple" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin">Purple</p>') $skinsList.append($skinPurple) var $skinGreen = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-green" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-green-active"></span><span class="bg-green" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin">Green</p>') $skinsList.append($skinGreen) var $skinRed = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-red" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-red-active"></span><span class="bg-red" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin">Red</p>') $skinsList.append($skinRed) var $skinYellow = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-yellow" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-yellow-active"></span><span class="bg-yellow" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin">Yellow</p>') $skinsList.append($skinYellow) // Light sidebar skins var $skinBlueLight = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-blue-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px; background: #367fa9"></span><span class="bg-light-blue" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin" style="font-size: 12px">Blue Light</p>') $skinsList.append($skinBlueLight) var $skinBlackLight = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-black-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div style="box-shadow: 0 0 2px rgba(0,0,0,0.1)" class="clearfix"><span style="display:block; width: 20%; float: left; height: 7px; background: #fefefe"></span><span style="display:block; width: 80%; float: left; height: 7px; background: #fefefe"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin" style="font-size: 12px">Black Light</p>') $skinsList.append($skinBlackLight) var $skinPurpleLight = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-purple-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-purple-active"></span><span class="bg-purple" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin" style="font-size: 12px">Purple Light</p>') $skinsList.append($skinPurpleLight) var $skinGreenLight = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-green-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-green-active"></span><span class="bg-green" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin" style="font-size: 12px">Green Light</p>') $skinsList.append($skinGreenLight) var $skinRedLight = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-red-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-red-active"></span><span class="bg-red" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin" style="font-size: 12px">Red Light</p>') $skinsList.append($skinRedLight) var $skinYellowLight = $('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'}) .append('<a href="javascript:void(0)" data-skin="skin-yellow-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">' + '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-yellow-active"></span><span class="bg-yellow" style="display:block; width: 80%; float: left; height: 7px;"></span></div>' + '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>' + '</a>' + '<p class="text-center no-margin" style="font-size: 12px">Yellow Light</p>') $skinsList.append($skinYellowLight) $demoSettings.append('<h4 class="control-sidebar-heading">Skins</h4>') $demoSettings.append($skinsList) $tabPane.append($demoSettings) $('#control-sidebar-home-tab').after($tabPane) setup() $('[data-toggle="tooltip"]').tooltip() }) AdminLTE/js/adminlte.min.js 0000644 00000032453 15002261751 0011500 0 ustar 00 /*! AdminLTE app.js * ================ * Main JS application file for AdminLTE v2. This file * should be included in all pages. It controls some layout * options and implements exclusive AdminLTE plugins. * * @author Colorlib * @support <https://github.com/ColorlibHQ/AdminLTE/issues> * @version v2.4.18 * @repository git://github.com/ColorlibHQ/AdminLTE.git * @license MIT <http://opensource.org/licenses/MIT> */ if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");!function(i){"use strict";function s(t,e){if(this.element=t,this.options=e,this.$overlay=i(e.overlayTemplate),""===e.source)throw new Error("Source url was not defined. Please specify a url in your BoxRefresh source option.");this._setUpListeners(),this.load()}var r="lte.boxrefresh",a={source:"",params:{},trigger:".refresh-btn",content:".box-body",loadInContent:!0,responseType:"",overlayTemplate:'<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>',onLoadStart:function(){},onLoadDone:function(t){return t}},t='[data-widget="box-refresh"]';function e(n){return this.each(function(){var t=i(this),e=t.data(r);if(!e){var o=i.extend({},a,t.data(),"object"==typeof n&&n);t.data(r,e=new s(t,o))}if("string"==typeof e){if(void 0===e[n])throw new Error("No method named "+n);e[n]()}})}s.prototype.load=function(){this._addOverlay(),this.options.onLoadStart.call(i(this)),i.get(this.options.source,this.options.params,function(t){this.options.loadInContent&&i(this.element).find(this.options.content).html(t),this.options.onLoadDone.call(i(this),t),this._removeOverlay()}.bind(this),""!==this.options.responseType&&this.options.responseType)},s.prototype._setUpListeners=function(){i(this.element).on("click",this.options.trigger,function(t){t&&t.preventDefault(),this.load()}.bind(this))},s.prototype._addOverlay=function(){i(this.element).append(this.$overlay)},s.prototype._removeOverlay=function(){i(this.$overlay).remove()};var o=i.fn.boxRefresh;i.fn.boxRefresh=e,i.fn.boxRefresh.Constructor=s,i.fn.boxRefresh.noConflict=function(){return i.fn.boxRefresh=o,this},i(window).on("load",function(){i(t).each(function(){e.call(i(this))})})}(jQuery),function(i){"use strict";function s(t,e){this.element=t,this.options=e,this._setUpListeners()}var r="lte.boxwidget",a={animationSpeed:500,collapseTrigger:'[data-widget="collapse"]',removeTrigger:'[data-widget="remove"]',collapseIcon:"fa-minus",expandIcon:"fa-plus",removeIcon:"fa-times"},t=".box",e=".collapsed-box",d=".box-header",l=".box-body",c=".box-footer",h=".box-tools",f="collapsed-box",p="collapsing.boxwidget",u="collapsed.boxwidget",g="expanding.boxwidget",v="expanded.boxwidget",o="removing.boxwidget",n="removed.boxwidget";function b(n){return this.each(function(){var t=i(this),e=t.data(r);if(!e){var o=i.extend({},a,t.data(),"object"==typeof n&&n);t.data(r,e=new s(t,o))}if("string"==typeof n){if(void 0===e[n])throw new Error("No method named "+n);e[n]()}})}s.prototype.toggle=function(){!i(this.element).is(e)?this.collapse():this.expand()},s.prototype.expand=function(){var t=i.Event(v),e=i.Event(g),o=this.options.collapseIcon,n=this.options.expandIcon;i(this.element).removeClass(f),i(this.element).children(d+", "+l+", "+c).children(h).find("."+n).removeClass(n).addClass(o),i(this.element).children(l+", "+c).slideDown(this.options.animationSpeed,function(){i(this.element).trigger(t)}.bind(this)).trigger(e)},s.prototype.collapse=function(){var t=i.Event(u),e=i.Event(p),o=this.options.collapseIcon,n=this.options.expandIcon;i(this.element).children(d+", "+l+", "+c).children(h).find("."+o).removeClass(o).addClass(n),i(this.element).children(l+", "+c).slideUp(this.options.animationSpeed,function(){i(this.element).addClass(f),i(this.element).trigger(t)}.bind(this)).trigger(e)},s.prototype.remove=function(){var t=i.Event(n),e=i.Event(o);i(this.element).slideUp(this.options.animationSpeed,function(){i(this.element).trigger(t),i(this.element).remove()}.bind(this)).trigger(e)},s.prototype._setUpListeners=function(){var e=this;i(this.element).on("click",this.options.collapseTrigger,function(t){return t&&t.preventDefault(),e.toggle(i(this)),!1}),i(this.element).on("click",this.options.removeTrigger,function(t){return t&&t.preventDefault(),e.remove(i(this)),!1})};var m=i.fn.boxWidget;i.fn.boxWidget=b,i.fn.boxWidget.Constructor=s,i.fn.boxWidget.noConflict=function(){return i.fn.boxWidget=m,this},i(window).on("load",function(){i(t).each(function(){b.call(i(this))})})}(jQuery),function(i){"use strict";function s(t,e){this.element=t,this.options=e,this.hasBindedResize=!1,this.init()}var r="lte.controlsidebar",a={controlsidebarSlide:!0},e=".control-sidebar",t='[data-toggle="control-sidebar"]',o=".control-sidebar-open",n=".control-sidebar-bg",d=".wrapper",l=".layout-boxed",c="control-sidebar-open",h="control-sidebar-hold-transition",f="collapsed.controlsidebar",p="expanded.controlsidebar";function u(n){return this.each(function(){var t=i(this),e=t.data(r);if(!e){var o=i.extend({},a,t.data(),"object"==typeof n&&n);t.data(r,e=new s(t,o))}"string"==typeof n&&e.toggle()})}s.prototype.init=function(){i(this.element).is(t)||i(this).on("click",this.toggle),this.fix(),i(window).resize(function(){this.fix()}.bind(this))},s.prototype.toggle=function(t){t&&t.preventDefault(),this.fix(),i(e).is(o)||i("body").is(o)?this.collapse():this.expand()},s.prototype.expand=function(){i(e).show(),this.options.controlsidebarSlide?i(e).addClass(c):i("body").addClass(h).addClass(c).delay(50).queue(function(){i("body").removeClass(h),i(this).dequeue()}),i(this.element).trigger(i.Event(p))},s.prototype.collapse=function(){this.options.controlsidebarSlide?i(e).removeClass(c):i("body").addClass(h).removeClass(c).delay(50).queue(function(){i("body").removeClass(h),i(this).dequeue()}),i(e).fadeOut(),i(this.element).trigger(i.Event(f))},s.prototype.fix=function(){i("body").is(l)&&this._fixForBoxed(i(n))},s.prototype._fixForBoxed=function(t){t.css({position:"absolute",height:i(d).height()})};var g=i.fn.controlSidebar;i.fn.controlSidebar=u,i.fn.controlSidebar.Constructor=s,i.fn.controlSidebar.noConflict=function(){return i.fn.controlSidebar=g,this},i(document).on("click",t,function(t){t&&t.preventDefault(),u.call(i(this),"toggle")})}(jQuery),function(n){"use strict";function i(t){this.element=t}var s="lte.directchat",t='[data-widget="chat-pane-toggle"]',e=".direct-chat",o="direct-chat-contacts-open";function r(o){return this.each(function(){var t=n(this),e=t.data(s);e||t.data(s,e=new i(t)),"string"==typeof o&&e.toggle(t)})}i.prototype.toggle=function(t){t.parents(e).first().toggleClass(o)};var a=n.fn.directChat;n.fn.directChat=r,n.fn.directChat.Constructor=i,n.fn.directChat.noConflict=function(){return n.fn.directChat=a,this},n(document).on("click",t,function(t){t&&t.preventDefault(),r.call(n(this),"toggle")})}(jQuery),function(i){"use strict";function s(t){this.options=t,this.init()}var r="lte.pushmenu",a={collapseScreenSize:767,expandOnHover:!1,expandTransitionDelay:200},t=".sidebar-collapse",e=".main-sidebar",o=".content-wrapper",n=".sidebar-form .form-control",d='[data-toggle="push-menu"]',l=".sidebar-mini",c=".sidebar-expanded-on-hover",h=".fixed",f="sidebar-collapse",p="sidebar-open",u="sidebar-expanded-on-hover",g="sidebar-mini-expand-feature",v="expanded.pushMenu",b="collapsed.pushMenu";function m(n){return this.each(function(){var t=i(this),e=t.data(r);if(!e){var o=i.extend({},a,t.data(),"object"==typeof n&&n);t.data(r,e=new s(o))}"toggle"===n&&e.toggle()})}s.prototype.init=function(){(this.options.expandOnHover||i("body").is(l+h))&&(this.expandOnHover(),i("body").addClass(g)),i(o).click(function(){i(window).width()<=this.options.collapseScreenSize&&i("body").hasClass(p)&&this.close()}.bind(this)),i(n).click(function(t){t.stopPropagation()})},s.prototype.toggle=function(){var t=i(window).width(),e=!i("body").hasClass(f);t<=this.options.collapseScreenSize&&(e=i("body").hasClass(p)),e?this.close():this.open()},s.prototype.open=function(){i(window).width()>this.options.collapseScreenSize?i("body").removeClass(f).trigger(i.Event(v)):i("body").addClass(p).trigger(i.Event(v))},s.prototype.close=function(){i(window).width()>this.options.collapseScreenSize?i("body").addClass(f).trigger(i.Event(b)):i("body").removeClass(p+" "+f).trigger(i.Event(b))},s.prototype.expandOnHover=function(){i(e).hover(function(){i("body").is(l+t)&&i(window).width()>this.options.collapseScreenSize&&this.expand()}.bind(this),function(){i("body").is(c)&&this.collapse()}.bind(this))},s.prototype.expand=function(){setTimeout(function(){i("body").removeClass(f).addClass(u)},this.options.expandTransitionDelay)},s.prototype.collapse=function(){setTimeout(function(){i("body").removeClass(u).addClass(f)},this.options.expandTransitionDelay)};var y=i.fn.pushMenu;i.fn.pushMenu=m,i.fn.pushMenu.Constructor=s,i.fn.pushMenu.noConflict=function(){return i.fn.pushMenu=y,this},i(document).on("click",d,function(t){t.preventDefault(),m.call(i(this),"toggle")}),i(window).on("load",function(){m.call(i(d))})}(jQuery),function(i){"use strict";function s(t,e){this.element=t,this.options=e,this._setUpListeners()}var r="lte.todolist",a={onCheck:function(t){return t},onUnCheck:function(t){return t}},e={data:'[data-widget="todo-list"]'},o="done";function t(n){return this.each(function(){var t=i(this),e=t.data(r);if(!e){var o=i.extend({},a,t.data(),"object"==typeof n&&n);t.data(r,e=new s(t,o))}if("string"==typeof e){if(void 0===e[n])throw new Error("No method named "+n);e[n]()}})}s.prototype.toggle=function(t){t.parents(e.li).first().toggleClass(o),t.prop("checked")?this.check(t):this.unCheck(t)},s.prototype.check=function(t){this.options.onCheck.call(t)},s.prototype.unCheck=function(t){this.options.onUnCheck.call(t)},s.prototype._setUpListeners=function(){var t=this;i(this.element).on("change ifChanged","input:checkbox",function(){t.toggle(i(this))})};var n=i.fn.todoList;i.fn.todoList=t,i.fn.todoList.Constructor=s,i.fn.todoList.noConflict=function(){return i.fn.todoList=n,this},i(window).on("load",function(){i(e.data).each(function(){t.call(i(this))})})}(jQuery),function(s){"use strict";function n(t,e){this.element=t,this.options=e,s(this.element).addClass(h),s(a+o,this.element).addClass(c),this._setUpListeners()}var i="lte.tree",r={animationSpeed:500,accordion:!0,followLink:!1,trigger:".treeview a"},a=".treeview",d=".treeview-menu",l=".menu-open, .active",t='[data-widget="tree"]',o=".active",c="menu-open",h="tree",f="collapsed.tree",p="expanded.tree";function e(o){return this.each(function(){var t=s(this);if(!t.data(i)){var e=s.extend({},r,t.data(),"object"==typeof o&&o);t.data(i,new n(t,e))}})}n.prototype.toggle=function(t,e){var o=t.next(d),n=t.parent(),i=n.hasClass(c);n.is(a)&&(this.options.followLink&&"#"!==t.attr("href")||e.preventDefault(),i?this.collapse(o,n):this.expand(o,n))},n.prototype.expand=function(t,e){var o=s.Event(p);if(this.options.accordion){var n=e.siblings(l),i=n.children(d);this.collapse(i,n)}e.addClass(c),t.stop().slideDown(this.options.animationSpeed,function(){s(this.element).trigger(o),e.height("auto")}.bind(this))},n.prototype.collapse=function(t,e){var o=s.Event(f);e.removeClass(c),t.stop().slideUp(this.options.animationSpeed,function(){s(this.element).trigger(o),e.find(a).removeClass(c).find(d).hide()}.bind(this))},n.prototype._setUpListeners=function(){var e=this;s(this.element).on("click",this.options.trigger,function(t){e.toggle(s(this),t)})};var u=s.fn.tree;s.fn.tree=e,s.fn.tree.Constructor=n,s.fn.tree.noConflict=function(){return s.fn.tree=u,this},s(window).on("load",function(){s(t).each(function(){e.call(s(this))})})}(jQuery),function(a){"use strict";function i(t){this.options=t,this.bindedResize=!1,this.activate()}var s="lte.layout",r={slimscroll:!0,resetHeight:!0},d=".wrapper",l=".content-wrapper",c=".layout-boxed",h=".main-footer",f=".main-header",t=".main-sidebar",e="slimScrollDiv",p=".sidebar",u=".control-sidebar",o=".sidebar-menu",n=".main-header .logo",g="fixed",v="hold-transition";function b(n){return this.each(function(){var t=a(this),e=t.data(s);if(!e){var o=a.extend({},r,t.data(),"object"==typeof n&&n);t.data(s,e=new i(o))}if("string"==typeof n){if(void 0===e[n])throw new Error("No method named "+n);e[n]()}})}i.prototype.activate=function(){this.fix(),this.fixSidebar(),a("body").removeClass(v),this.options.resetHeight&&a("body, html, "+d).css({height:"auto","min-height":"100%"}),this.bindedResize||(a(window).resize(function(){this.fix(),this.fixSidebar(),a(n+", "+p).one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",function(){this.fix(),this.fixSidebar()}.bind(this))}.bind(this)),this.bindedResize=!0),a(o).on("expanded.tree",function(){this.fix(),this.fixSidebar()}.bind(this)),a(o).on("collapsed.tree",function(){this.fix(),this.fixSidebar()}.bind(this))},i.prototype.fix=function(){a(c+" > "+d).css("overflow","hidden");var t=a(h).outerHeight()||0,e=a(f).outerHeight()||0,o=e+t,n=a(window).height(),i=a(p).outerHeight()||0;if(a("body").hasClass(g))a(l).css("min-height",n-t);else{var s;s=i+e<=n?(a(l).css("min-height",n-o),n-o):(a(l).css("min-height",i),i);var r=a(u);void 0!==r&&r.height()>s&&a(l).css("min-height",r.height())}},i.prototype.fixSidebar=function(){a("body").hasClass(g)?this.options.slimscroll&&void 0!==a.fn.slimScroll&&0===a(t).find(e).length&&a(p).slimScroll({height:a(window).height()-a(f).height()+"px"}):void 0!==a.fn.slimScroll&&a(p).slimScroll({destroy:!0}).height("auto")};var m=a.fn.layout;a.fn.layout=b,a.fn.layout.Constuctor=i,a.fn.layout.noConflict=function(){return a.fn.layout=m,this},a(window).on("load",function(){b.call(a("body"))})}(jQuery); AdminLTE/js/pages/dashboard2.js 0000644 00000022607 15002261751 0012231 0 ustar 00 $(function () { 'use strict'; /* ChartJS * ------- * Here we will create a few charts using ChartJS */ // ----------------------- // - MONTHLY SALES CHART - // ----------------------- // Get context with jQuery - using jQuery's .get() method. var salesChartCanvas = $('#salesChart').get(0).getContext('2d'); // This will get the first returned node in the jQuery collection. var salesChart = new Chart(salesChartCanvas); var salesChartData = { labels : ['January', 'February', 'March', 'April', 'May', 'June', 'July'], datasets: [ { label : 'Electronics', fillColor : 'rgb(210, 214, 222)', strokeColor : 'rgb(210, 214, 222)', pointColor : 'rgb(210, 214, 222)', pointStrokeColor : '#c1c7d1', pointHighlightFill : '#fff', pointHighlightStroke: 'rgb(220,220,220)', data : [65, 59, 80, 81, 56, 55, 40] }, { label : 'Digital Goods', fillColor : 'rgba(60,141,188,0.9)', strokeColor : 'rgba(60,141,188,0.8)', pointColor : '#3b8bba', pointStrokeColor : 'rgba(60,141,188,1)', pointHighlightFill : '#fff', pointHighlightStroke: 'rgba(60,141,188,1)', data : [28, 48, 40, 19, 86, 27, 90] } ] }; var salesChartOptions = { // Boolean - If we should show the scale at all showScale : true, // Boolean - Whether grid lines are shown across the chart scaleShowGridLines : false, // String - Colour of the grid lines scaleGridLineColor : 'rgba(0,0,0,.05)', // Number - Width of the grid lines scaleGridLineWidth : 1, // Boolean - Whether to show horizontal lines (except X axis) scaleShowHorizontalLines: true, // Boolean - Whether to show vertical lines (except Y axis) scaleShowVerticalLines : true, // Boolean - Whether the line is curved between points bezierCurve : true, // Number - Tension of the bezier curve between points bezierCurveTension : 0.3, // Boolean - Whether to show a dot for each point pointDot : false, // Number - Radius of each point dot in pixels pointDotRadius : 4, // Number - Pixel width of point dot stroke pointDotStrokeWidth : 1, // Number - amount extra to add to the radius to cater for hit detection outside the drawn point pointHitDetectionRadius : 20, // Boolean - Whether to show a stroke for datasets datasetStroke : true, // Number - Pixel width of dataset stroke datasetStrokeWidth : 2, // Boolean - Whether to fill the dataset with a color datasetFill : true, // String - A legend template legendTemplate : '<ul class=\'<%=name.toLowerCase()%>-legend\'><% for (var i=0; i<datasets.length; i++){%><li><span style=\'background-color:<%=datasets[i].lineColor%>\'></span><%=datasets[i].label%></li><%}%></ul>', // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container maintainAspectRatio : true, // Boolean - whether to make the chart responsive to window resizing responsive : true }; // Create the line chart salesChart.Line(salesChartData, salesChartOptions); // --------------------------- // - END MONTHLY SALES CHART - // --------------------------- // ------------- // - PIE CHART - // ------------- // Get context with jQuery - using jQuery's .get() method. var pieChartCanvas = $('#pieChart').get(0).getContext('2d'); var pieChart = new Chart(pieChartCanvas); var PieData = [ { value : 700, color : '#f56954', highlight: '#f56954', label : 'Chrome' }, { value : 500, color : '#00a65a', highlight: '#00a65a', label : 'IE' }, { value : 400, color : '#f39c12', highlight: '#f39c12', label : 'FireFox' }, { value : 600, color : '#00c0ef', highlight: '#00c0ef', label : 'Safari' }, { value : 300, color : '#3c8dbc', highlight: '#3c8dbc', label : 'Opera' }, { value : 100, color : '#d2d6de', highlight: '#d2d6de', label : 'Navigator' } ]; var pieOptions = { // Boolean - Whether we should show a stroke on each segment segmentShowStroke : true, // String - The colour of each segment stroke segmentStrokeColor : '#fff', // Number - The width of each segment stroke segmentStrokeWidth : 1, // Number - The percentage of the chart that we cut out of the middle percentageInnerCutout: 50, // This is 0 for Pie charts // Number - Amount of animation steps animationSteps : 100, // String - Animation easing effect animationEasing : 'easeOutBounce', // Boolean - Whether we animate the rotation of the Doughnut animateRotate : true, // Boolean - Whether we animate scaling the Doughnut from the centre animateScale : false, // Boolean - whether to make the chart responsive to window resizing responsive : true, // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container maintainAspectRatio : false, // String - A legend template legendTemplate : '<ul class=\'<%=name.toLowerCase()%>-legend\'><% for (var i=0; i<segments.length; i++){%><li><span style=\'background-color:<%=segments[i].fillColor%>\'></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>', // String - A tooltip template tooltipTemplate : '<%=value %> <%=label%> users' }; // Create pie or douhnut chart // You can switch between pie and douhnut using the method below. pieChart.Doughnut(PieData, pieOptions); // ----------------- // - END PIE CHART - // ----------------- /* jVector Maps * ------------ * Create a world map with markers */ $('#world-map-markers').vectorMap({ map : 'world_mill_en', normalizeFunction: 'polynomial', hoverOpacity : 0.7, hoverColor : false, backgroundColor : 'transparent', regionStyle : { initial : { fill : 'rgba(210, 214, 222, 1)', 'fill-opacity' : 1, stroke : 'none', 'stroke-width' : 0, 'stroke-opacity': 1 }, hover : { 'fill-opacity': 0.7, cursor : 'pointer' }, selected : { fill: 'yellow' }, selectedHover: {} }, markerStyle : { initial: { fill : '#00a65a', stroke: '#111' } }, markers : [ { latLng: [41.90, 12.45], name: 'Vatican City' }, { latLng: [43.73, 7.41], name: 'Monaco' }, { latLng: [-0.52, 166.93], name: 'Nauru' }, { latLng: [-8.51, 179.21], name: 'Tuvalu' }, { latLng: [43.93, 12.46], name: 'San Marino' }, { latLng: [47.14, 9.52], name: 'Liechtenstein' }, { latLng: [7.11, 171.06], name: 'Marshall Islands' }, { latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis' }, { latLng: [3.2, 73.22], name: 'Maldives' }, { latLng: [35.88, 14.5], name: 'Malta' }, { latLng: [12.05, -61.75], name: 'Grenada' }, { latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines' }, { latLng: [13.16, -59.55], name: 'Barbados' }, { latLng: [17.11, -61.85], name: 'Antigua and Barbuda' }, { latLng: [-4.61, 55.45], name: 'Seychelles' }, { latLng: [7.35, 134.46], name: 'Palau' }, { latLng: [42.5, 1.51], name: 'Andorra' }, { latLng: [14.01, -60.98], name: 'Saint Lucia' }, { latLng: [6.91, 158.18], name: 'Federated States of Micronesia' }, { latLng: [1.3, 103.8], name: 'Singapore' }, { latLng: [1.46, 173.03], name: 'Kiribati' }, { latLng: [-21.13, -175.2], name: 'Tonga' }, { latLng: [15.3, -61.38], name: 'Dominica' }, { latLng: [-20.2, 57.5], name: 'Mauritius' }, { latLng: [26.02, 50.55], name: 'Bahrain' }, { latLng: [0.33, 6.73], name: 'São Tomé and Príncipe' } ] }); /* SPARKLINE CHARTS * ---------------- * Create a inline charts with spark line */ // ----------------- // - SPARKLINE BAR - // ----------------- $('.sparkbar').each(function () { var $this = $(this); $this.sparkline('html', { type : 'bar', height : $this.data('height') ? $this.data('height') : '30', barColor: $this.data('color') }); }); // ----------------- // - SPARKLINE PIE - // ----------------- $('.sparkpie').each(function () { var $this = $(this); $this.sparkline('html', { type : 'pie', height : $this.data('height') ? $this.data('height') : '90', sliceColors: $this.data('color') }); }); // ------------------ // - SPARKLINE LINE - // ------------------ $('.sparkline').each(function () { var $this = $(this); $this.sparkline('html', { type : 'line', height : $this.data('height') ? $this.data('height') : '90', width : '100%', lineColor: $this.data('linecolor'), fillColor: $this.data('fillcolor'), spotColor: $this.data('spotcolor') }); }); }); AdminLTE/js/pages/dashboard.js 0000644 00000013740 15002261751 0012145 0 ustar 00 /* * Author: Abdullah A Almsaeed * Date: 4 Jan 2014 * Description: * This is a demo file used only for the main dashboard (index.html) **/ $(function () { 'use strict'; // Make the dashboard widgets sortable Using jquery UI $('.connectedSortable').sortable({ containment : $('section.content'), placeholder : 'sort-highlight', connectWith : '.connectedSortable', handle : '.box-header, .nav-tabs', forcePlaceholderSize: true, zIndex : 999999 }); $('.connectedSortable .box-header, .connectedSortable .nav-tabs-custom').css('cursor', 'move'); // jQuery UI sortable for the todo list $('.todo-list').sortable({ placeholder : 'sort-highlight', handle : '.handle', forcePlaceholderSize: true, zIndex : 999999 }); // bootstrap WYSIHTML5 - text editor $('.textarea').wysihtml5(); $('.daterange').daterangepicker({ ranges : { 'Today' : [moment(), moment()], 'Yesterday' : [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 'Last 7 Days' : [moment().subtract(6, 'days'), moment()], 'Last 30 Days': [moment().subtract(29, 'days'), moment()], 'This Month' : [moment().startOf('month'), moment().endOf('month')], 'Last Month' : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] }, startDate: moment().subtract(29, 'days'), endDate : moment() }, function (start, end) { window.alert('You chose: ' + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); }); /* jQueryKnob */ $('.knob').knob(); // jvectormap data var visitorsData = { US: 398, // USA SA: 400, // Saudi Arabia CA: 1000, // Canada DE: 500, // Germany FR: 760, // France CN: 300, // China AU: 700, // Australia BR: 600, // Brazil IN: 800, // India GB: 320, // Great Britain RU: 3000 // Russia }; // World map by jvectormap $('#world-map').vectorMap({ map : 'world_mill_en', backgroundColor : 'transparent', regionStyle : { initial: { fill : '#e4e4e4', 'fill-opacity' : 1, stroke : 'none', 'stroke-width' : 0, 'stroke-opacity': 1 } }, series : { regions: [ { values : visitorsData, scale : ['#92c1dc', '#ebf4f9'], normalizeFunction: 'polynomial' } ] }, onRegionLabelShow: function (e, el, code) { if (typeof visitorsData[code] != 'undefined') el.html(el.html() + ': ' + visitorsData[code] + ' new visitors'); } }); // Sparkline charts var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]; $('#sparkline-1').sparkline(myvalues, { type : 'line', lineColor: '#92c1dc', fillColor: '#ebf4f9', height : '50', width : '80' }); myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]; $('#sparkline-2').sparkline(myvalues, { type : 'line', lineColor: '#92c1dc', fillColor: '#ebf4f9', height : '50', width : '80' }); myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]; $('#sparkline-3').sparkline(myvalues, { type : 'line', lineColor: '#92c1dc', fillColor: '#ebf4f9', height : '50', width : '80' }); // The Calender $('#calendar').datepicker(); // SLIMSCROLL FOR CHAT WIDGET $('#chat-box').slimScroll({ height: '250px' }); /* Morris.js Charts */ // Sales chart var area = new Morris.Area({ element : 'revenue-chart', resize : true, data : [ { y: '2011 Q1', item1: 2666, item2: 2666 }, { y: '2011 Q2', item1: 2778, item2: 2294 }, { y: '2011 Q3', item1: 4912, item2: 1969 }, { y: '2011 Q4', item1: 3767, item2: 3597 }, { y: '2012 Q1', item1: 6810, item2: 1914 }, { y: '2012 Q2', item1: 5670, item2: 4293 }, { y: '2012 Q3', item1: 4820, item2: 3795 }, { y: '2012 Q4', item1: 15073, item2: 5967 }, { y: '2013 Q1', item1: 10687, item2: 4460 }, { y: '2013 Q2', item1: 8432, item2: 5713 } ], xkey : 'y', ykeys : ['item1', 'item2'], labels : ['Item 1', 'Item 2'], lineColors: ['#a0d0e0', '#3c8dbc'], hideHover : 'auto' }); var line = new Morris.Line({ element : 'line-chart', resize : true, data : [ { y: '2011 Q1', item1: 2666 }, { y: '2011 Q2', item1: 2778 }, { y: '2011 Q3', item1: 4912 }, { y: '2011 Q4', item1: 3767 }, { y: '2012 Q1', item1: 6810 }, { y: '2012 Q2', item1: 5670 }, { y: '2012 Q3', item1: 4820 }, { y: '2012 Q4', item1: 15073 }, { y: '2013 Q1', item1: 10687 }, { y: '2013 Q2', item1: 8432 } ], xkey : 'y', ykeys : ['item1'], labels : ['Item 1'], lineColors : ['#efefef'], lineWidth : 2, hideHover : 'auto', gridTextColor : '#fff', gridStrokeWidth : 0.4, pointSize : 4, pointStrokeColors: ['#efefef'], gridLineColor : '#efefef', gridTextFamily : 'Open Sans', gridTextSize : 10 }); // Donut Chart var donut = new Morris.Donut({ element : 'sales-chart', resize : true, colors : ['#3c8dbc', '#f56954', '#00a65a'], data : [ { label: 'Download Sales', value: 12 }, { label: 'In-Store Sales', value: 30 }, { label: 'Mail-Order Sales', value: 20 } ], hideHover: 'auto' }); // Fix for charts under tabs $('.box ul.nav a').on('shown.bs.tab', function () { area.redraw(); donut.redraw(); line.redraw(); }); /* The todo list plugin */ $('.todo-list').todoList({ onCheck : function () { window.console.log($(this), 'The element has been checked'); }, onUnCheck: function () { window.console.log($(this), 'The element has been unchecked'); } }); }); AdminLTE/.npmignore 0000644 00000000035 15002261751 0010135 0 ustar 00 documentation/ composer.json AdminLTE/plugins/daterangepicker/.gitignore 0000644 00000000134 15002261751 0014737 0 ustar 00 bower_components node_modules npm-debug.log *.sublime-workspace *.sublime-project *.sw[onp] AdminLTE/plugins/daterangepicker/daterangepicker.css 0000644 00000016753 15002261751 0016627 0 ustar 00 .daterangepicker { position: absolute; color: inherit; background-color: #fff; border-radius: 4px; border: 1px solid #ddd; width: 278px; max-width: none; padding: 0; margin-top: 7px; top: 100px; left: 20px; z-index: 3001; display: none; font-family: arial; font-size: 15px; line-height: 1em; } .daterangepicker:before, .daterangepicker:after { position: absolute; display: inline-block; border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .daterangepicker:before { top: -7px; border-right: 7px solid transparent; border-left: 7px solid transparent; border-bottom: 7px solid #ccc; } .daterangepicker:after { top: -6px; border-right: 6px solid transparent; border-bottom: 6px solid #fff; border-left: 6px solid transparent; } .daterangepicker.opensleft:before { right: 9px; } .daterangepicker.opensleft:after { right: 10px; } .daterangepicker.openscenter:before { left: 0; right: 0; width: 0; margin-left: auto; margin-right: auto; } .daterangepicker.openscenter:after { left: 0; right: 0; width: 0; margin-left: auto; margin-right: auto; } .daterangepicker.opensright:before { left: 9px; } .daterangepicker.opensright:after { left: 10px; } .daterangepicker.drop-up { margin-top: -7px; } .daterangepicker.drop-up:before { top: initial; bottom: -7px; border-bottom: initial; border-top: 7px solid #ccc; } .daterangepicker.drop-up:after { top: initial; bottom: -6px; border-bottom: initial; border-top: 6px solid #fff; } .daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar { float: none; } .daterangepicker.single .drp-selected { display: none; } .daterangepicker.show-calendar .drp-calendar { display: block; } .daterangepicker.show-calendar .drp-buttons { display: block; } .daterangepicker.auto-apply .drp-buttons { display: none; } .daterangepicker .drp-calendar { display: none; max-width: 270px; } .daterangepicker .drp-calendar.left { padding: 8px 0 8px 8px; } .daterangepicker .drp-calendar.right { padding: 8px; } .daterangepicker .drp-calendar.single .calendar-table { border: none; } .daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { color: #fff; border: solid black; border-width: 0 2px 2px 0; border-radius: 0; display: inline-block; padding: 3px; } .daterangepicker .calendar-table .next span { transform: rotate(-45deg); -webkit-transform: rotate(-45deg); } .daterangepicker .calendar-table .prev span { transform: rotate(135deg); -webkit-transform: rotate(135deg); } .daterangepicker .calendar-table th, .daterangepicker .calendar-table td { white-space: nowrap; text-align: center; vertical-align: middle; min-width: 32px; width: 32px; height: 24px; line-height: 24px; font-size: 12px; border-radius: 4px; border: 1px solid transparent; white-space: nowrap; cursor: pointer; } .daterangepicker .calendar-table { border: 1px solid #fff; border-radius: 4px; background-color: #fff; } .daterangepicker .calendar-table table { width: 100%; margin: 0; border-spacing: 0; border-collapse: collapse; } .daterangepicker td.available:hover, .daterangepicker th.available:hover { background-color: #eee; border-color: transparent; color: inherit; } .daterangepicker td.week, .daterangepicker th.week { font-size: 80%; color: #ccc; } .daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { background-color: #fff; border-color: transparent; color: #999; } .daterangepicker td.in-range { background-color: #ebf4f8; border-color: transparent; color: #000; border-radius: 0; } .daterangepicker td.start-date { border-radius: 4px 0 0 4px; } .daterangepicker td.end-date { border-radius: 0 4px 4px 0; } .daterangepicker td.start-date.end-date { border-radius: 4px; } .daterangepicker td.active, .daterangepicker td.active:hover { background-color: #357ebd; border-color: transparent; color: #fff; } .daterangepicker th.month { width: auto; } .daterangepicker td.disabled, .daterangepicker option.disabled { color: #999; cursor: not-allowed; text-decoration: line-through; } .daterangepicker select.monthselect, .daterangepicker select.yearselect { font-size: 12px; padding: 1px; height: auto; margin: 0; cursor: default; } .daterangepicker select.monthselect { margin-right: 2%; width: 56%; } .daterangepicker select.yearselect { width: 40%; } .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { width: 50px; margin: 0 auto; background: #eee; border: 1px solid #eee; padding: 2px; outline: 0; font-size: 12px; } .daterangepicker .calendar-time { text-align: center; margin: 4px auto 0 auto; line-height: 30px; position: relative; } .daterangepicker .calendar-time select.disabled { color: #ccc; cursor: not-allowed; } .daterangepicker .drp-buttons { clear: both; text-align: right; padding: 8px; border-top: 1px solid #ddd; display: none; line-height: 12px; vertical-align: middle; } .daterangepicker .drp-selected { display: inline-block; font-size: 12px; padding-right: 8px; } .daterangepicker .drp-buttons .btn { margin-left: 8px; font-size: 12px; font-weight: bold; padding: 4px 8px; } .daterangepicker.show-ranges.single.rtl .drp-calendar.left { border-right: 1px solid #ddd; } .daterangepicker.show-ranges.single.ltr .drp-calendar.left { border-left: 1px solid #ddd; } .daterangepicker.show-ranges.rtl .drp-calendar.right { border-right: 1px solid #ddd; } .daterangepicker.show-ranges.ltr .drp-calendar.left { border-left: 1px solid #ddd; } .daterangepicker .ranges { float: none; text-align: left; margin: 0; } .daterangepicker.show-calendar .ranges { margin-top: 8px; } .daterangepicker .ranges ul { list-style: none; margin: 0 auto; padding: 0; width: 100%; } .daterangepicker .ranges li { font-size: 12px; padding: 8px 12px; cursor: pointer; } .daterangepicker .ranges li:hover { background-color: #eee; } .daterangepicker .ranges li.active { background-color: #08c; color: #fff; } /* Larger Screen Styling */ @media (min-width: 564px) { .daterangepicker { width: auto; } .daterangepicker .ranges ul { width: 140px; } .daterangepicker.single .ranges ul { width: 100%; } .daterangepicker.single .drp-calendar.left { clear: none; } .daterangepicker.single .ranges, .daterangepicker.single .drp-calendar { float: left; } .daterangepicker { direction: ltr; text-align: left; } .daterangepicker .drp-calendar.left { clear: left; margin-right: 0; } .daterangepicker .drp-calendar.left .calendar-table { border-right: none; border-top-right-radius: 0; border-bottom-right-radius: 0; } .daterangepicker .drp-calendar.right { margin-left: 0; } .daterangepicker .drp-calendar.right .calendar-table { border-left: none; border-top-left-radius: 0; border-bottom-left-radius: 0; } .daterangepicker .drp-calendar.left .calendar-table { padding-right: 8px; } .daterangepicker .ranges, .daterangepicker .drp-calendar { float: left; } } @media (min-width: 730px) { .daterangepicker .ranges { width: auto; } .daterangepicker .ranges { float: left; } .daterangepicker.rtl .ranges { float: right; } .daterangepicker .drp-calendar.left { clear: none !important; } } AdminLTE/plugins/daterangepicker/moment.min.js 0000644 00000150114 15002261751 0015372 0 ustar 00 !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function h(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Tt(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function v(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function p(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function k(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function S(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function D(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=S(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&D(e[s])!==D(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function b(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function x(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function C(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function H(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function R(e){var t,n,s={};for(n in e)m(e,n)&&(t=H(n))&&(s[t]=e[n]);return s}var U={};function F(e,t){U[e]=t}function L(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return L(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=b(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=b(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(he(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function he(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var de={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),h(n)&&(s=function(e,t){t[n]=D(e)}),t=0;t<e.length;t++)de[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,ve=4,pe=5,we=6,Me=7,ke=8;function Se(e){return De(e)?366:365}function De(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),C("year","y"),F("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):D(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return D(e)+(68<D(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(xe(this,t,e),c.updateOffset(this,n),this):be(this,t)}}function be(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function xe(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&De(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?De(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),C("month","M"),F("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=D(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ce="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var He="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Re(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=D(t);else if(!h(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Ue(e){return null!=e?(Re(this,e),c.updateOffset(this,!0),this):be(this,"Month")}var Fe=ae;var Le=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=he(s[t]),i[t]=he(i[t]);for(t=0;t<24;t++)r[t]=he(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t;if(e<100&&0<=e){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?Se(r=e-1)+o:o>Se(e)?(r=e+1,o-Se(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(Se(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),C("week","w"),C("isoWeek","W"),F("week",5),F("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=D(e)});function je(e,t){return e.slice(t,7).concat(e.slice(0,t))}I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),C("day","d"),C("weekday","e"),C("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=D(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var $e="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var qe=ae;var Je=ae;var Be=ae;function Qe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=he(o[t]),u[t]=he(u[t]),l[t]=he(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Xe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+L(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),C("hour","h"),F("hour",13),ue("a",et),ue("A",et),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=D(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=D(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i))});var tt,nt=Te("Hours",!0),st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:He,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){var t=null;if(!it[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=tt._abbr,require("./locale/"+e),ut(t)}catch(e){}return it[e]}function ut(e,t){var n;return e&&((n=l(t)?ht(e):lt(e,t))?tt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),tt._abbr}function lt(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ot(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new P(x(s,t)),rt[e]&&rt[e].forEach(function(e){lt(e.name,e.config)}),ut(e),it[e]}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return tt;if(!o(e)){if(t=ot(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=at(e[r]).split("-")).length,n=(n=at(e[r+1]))?n.split("-"):null;0<t;){if(s=ot(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return tt}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[ve]||0!==n[pe]||0!==n[we])?ge:n[ve]<0||59<n[ve]?ve:n[pe]<0||59<n[pe]?pe:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=ke),g(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ft(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ct(t.GG,e._a[me],Ie(bt(),1,4).year),s=ct(t.W,1),((i=ct(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(bt(),r,a);n=ct(t.gg,e._a[me],l.year),s=ct(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ct(e._a[me],s[me]),(e._dayOfYear>Se(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[ve]&&0===e._a[pe]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var mt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/Z|[+-]\d\d(?::?\d\d)?/,gt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],vt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,n,s,i,r,a,o=e._i,u=mt.exec(o)||_t.exec(o);if(u){for(g(e).iso=!0,t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[1])){i=gt[t][0],s=!1!==gt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=vt.length;t<n;t++)if(vt[t][1].exec(u[3])){r=(u[2]||" ")+vt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!yt.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Yt(e)}else e._isValid=!1}var Mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function kt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),He.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=Mt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var r=kt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function Yt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,h=l.length,d=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),d+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(de,a)&&de[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=h-d,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ft(e),dt(e)}else Dt(e);else wt(e)}function Ot(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||ht(e._l),null===r||void 0===a&&""===r?p({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),k(r)?new M(dt(r)):(d(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Yt(t),v(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?Yt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):d(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(wt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ft(t)):u(n)?function(e){if(!e._d){var t=R(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ft(e)}}(t):h(n)?t._d=new Date(n):c.createFromInputFallback(t),v(e)||(e._d=null),e))}function Tt(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Ot(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function bt(e,t,n,s){return Tt(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:p()}),Pt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:p()});function Wt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return bt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Ct=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=R(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,h=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Ct,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Ct.length;++s)if(e[Ct[s]]){if(n)return!1;parseFloat(e[Ct[s]])!==D(e[Ct[s]])&&(n=!0)}return!0}(t),this._milliseconds=+h+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=ht(),this._bubble()}function Rt(e){return e instanceof Ht}function Ut(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+L(~~(e/60),2)+n+L(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Nt(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Nt(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+D(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Gt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(k(e)||d(e)?e.valueOf():bt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):bt(e).local()}function Vt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Et(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var It=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,At=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function jt(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:h(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:D(a[ye])*n,h:D(a[ge])*n,m:D(a[ve])*n,s:D(a[pe])*n,ms:D(Ut(1e3*a[we]))*n}):(a=At.exec(e))?(n="-"===a[1]?-1:1,r={y:Zt(a[2],n),M:Zt(a[3],n),w:Zt(a[4],n),d:Zt(a[5],n),h:Zt(a[6],n),m:Zt(a[7],n),s:Zt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=zt(e,t):((n=zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(bt(r.from),bt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function Zt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function zt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function $t(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),qt(this,jt(e="string"==typeof e?+e:e,t),s),this}}function qt(e,t,n,s){var i=t._milliseconds,r=Ut(t._days),a=Ut(t._months);e.isValid()&&(s=null==s||s,a&&Re(e,be(e,"Month")+a*n),r&&xe(e,"Date",be(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}jt.fn=Ht.prototype,jt.invalid=function(){return jt(NaN)};var Jt=$t(1,"add"),Bt=$t(-1,"subtract");function Qt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Xt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ht(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Kt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function en(){return this._locale}var tn=126227808e5;function nn(e,t){return(e%t+t)%t}function sn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-tn:new Date(e,t,n).valueOf()}function rn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-tn:Date.UTC(e,t,n)}function an(e,t){I(0,[e,e.length],0,t)}function on(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),an("gggg","weekYear"),an("ggggg","weekYear"),an("GGGG","isoWeekYear"),an("GGGGG","isoWeekYear"),C("weekYear","gg"),C("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=D(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),C("quarter","Q"),F("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(D(e)-1)}),I("D",["DD",2],"Do","date"),C("date","D"),F("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=D(e.match(B)[0])});var un=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),C("dayOfYear","DDD"),F("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=D(e)}),I("m",["mm",2],0,"minute"),C("minute","m"),F("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],ve);var ln=Te("Minutes",!1);I("s",["ss",2],0,"second"),C("second","s"),F("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],pe);var hn,dn=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),C("millisecond","ms"),F("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),hn="SSSS";hn.length<=9;hn+="S")ue(hn,ne);function cn(e,t){t[we]=D(1e3*("0."+e))}for(hn="S";hn.length<=9;hn+="S")ce(hn,cn);var fn=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var mn=M.prototype;function _n(e){return e}mn.add=Jt,mn.calendar=function(e,t){var n=e||bt(),s=Gt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(b(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,bt(n)))},mn.clone=function(){return new M(this)},mn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=H(t)){case"year":r=Qt(this,s)/12;break;case"month":r=Qt(this,s);break;case"quarter":r=Qt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:S(r)},mn.endOf=function(e){var t;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-nn(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-nn(t,1e3)-1;break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},mn.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.fromNow=function(e){return this.from(bt(),e)},mn.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.toNow=function(e){return this.to(bt(),e)},mn.get=function(e){return b(this[e=H(e)])?this[e]():this},mn.invalidAt=function(){return g(this).overflow},mn.isAfter=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},mn.isBefore=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},mn.isBetween=function(e,t,n,s){var i=k(e)?e:bt(e),r=k(t)?t:bt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},mn.isSame=function(e,t){var n,s=k(e)?e:bt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},mn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},mn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},mn.isValid=function(){return v(this)},mn.lang=Kt,mn.locale=Xt,mn.localeData=en,mn.max=Pt,mn.min=xt,mn.parsingFlags=function(){return _({},g(this))},mn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:U[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=R(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(b(this[e=H(e)]))return this[e](t);return this},mn.startOf=function(e){var t;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=nn(t,6e4);break;case"second":t=this._d.valueOf(),t-=nn(t,1e3);break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.subtract=Bt,mn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},mn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},mn.toDate=function(){return new Date(this.valueOf())},mn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):b(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},mn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},mn.toJSON=function(){return this.isValid()?this.toISOString():null},mn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},mn.unix=function(){return Math.floor(this.valueOf()/1e3)},mn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},mn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},mn.year=Oe,mn.isLeapYear=function(){return De(this.year())},mn.weekYear=function(e){return on.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},mn.isoWeekYear=function(e){return on.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},mn.quarter=mn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},mn.month=Ue,mn.daysInMonth=function(){return Pe(this.year(),this.month())},mn.week=mn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},mn.isoWeek=mn.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},mn.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},mn.isoWeeksInYear=function(){return Ae(this.year(),1,4)},mn.date=un,mn.day=mn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},mn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},mn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},mn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},mn.hour=mn.hours=nt,mn.minute=mn.minutes=ln,mn.second=mn.seconds=dn,mn.millisecond=mn.milliseconds=fn,mn.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Vt(this);if("string"==typeof e){if(null===(e=Nt(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Vt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?qt(this,jt(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},mn.utc=function(e){return this.utcOffset(0,e)},mn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Vt(this),"m")),this},mn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Nt(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},mn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?bt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},mn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},mn.isUtc=Et,mn.isUTC=Et,mn.zoneAbbr=function(){return this._isUTC?"UTC":""},mn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},mn.dates=n("dates accessor is deprecated. Use date instead.",un),mn.months=n("months accessor is deprecated. Use month instead",Ue),mn.years=n("years accessor is deprecated. Use year instead",Oe),mn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),mn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Ot(e))._a){var t=e._isUTC?y(e._a):bt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var yn=P.prototype;function gn(e,t,n,s){var i=ht(),r=y().set(s,t);return i[n](r,e)}function vn(e,t,n){if(h(e)&&(t=e,e=void 0),e=e||"",null!=t)return gn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=gn(e,s,n,"month");return i}function pn(e,t,n,s){t=("boolean"==typeof e?h(t)&&(n=t,t=void 0):(t=e,e=!1,h(n=t)&&(n=t,t=void 0)),t||"");var i,r=ht(),a=e?r._week.dow:0;if(null!=n)return gn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=gn(t,(i+a)%7,s,"day");return o}yn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return b(s)?s.call(t,n):s},yn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},yn.invalidDate=function(){return this._invalidDate},yn.ordinal=function(e){return this._ordinal.replace("%d",e)},yn.preparse=_n,yn.postformat=_n,yn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return b(i)?i(e,t,n,s):i.replace(/%d/i,e)},yn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return b(n)?n(t):n.replace(/%s/i,t)},yn.set=function(e){var t,n;for(n in e)b(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},yn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},yn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},yn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},yn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},yn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Fe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},yn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},yn.firstDayOfYear=function(){return this._week.doy},yn.firstDayOfWeek=function(){return this._week.dow},yn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?je(n,this._week.dow):e?n[e.day()]:n},yn.weekdaysMin=function(e){return!0===e?je(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},yn.weekdaysShort=function(e){return!0===e?je(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},yn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},yn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},yn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Je),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},yn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Be),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},yn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},yn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ut("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===D(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ut),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",ht);var wn=Math.abs;function Mn(e,t,n,s){var i=jt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function kn(e){return e<0?Math.floor(e):Math.ceil(e)}function Sn(e){return 4800*e/146097}function Dn(e){return 146097*e/4800}function Yn(e){return function(){return this.as(e)}}var On=Yn("ms"),Tn=Yn("s"),bn=Yn("m"),xn=Yn("h"),Pn=Yn("d"),Wn=Yn("w"),Cn=Yn("M"),Hn=Yn("Q"),Rn=Yn("y");function Un(e){return function(){return this.isValid()?this._data[e]:NaN}}var Fn=Un("milliseconds"),Ln=Un("seconds"),Nn=Un("minutes"),Gn=Un("hours"),Vn=Un("days"),En=Un("months"),In=Un("years");var An=Math.round,jn={ss:44,s:45,m:45,h:22,d:26,M:11};var Zn=Math.abs;function zn(e){return(0<e)-(e<0)||+e}function $n(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Zn(this._milliseconds)/1e3,s=Zn(this._days),i=Zn(this._months);t=S((e=S(n/60))/60),n%=60,e%=60;var r=S(i/12),a=i%=12,o=s,u=t,l=e,h=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var c=d<0?"-":"",f=zn(this._months)!==zn(d)?"-":"",m=zn(this._days)!==zn(d)?"-":"",_=zn(this._milliseconds)!==zn(d)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||h?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(h?_+h+"S":"")}var qn=Ht.prototype;return qn.isValid=function(){return this._isValid},qn.abs=function(){var e=this._data;return this._milliseconds=wn(this._milliseconds),this._days=wn(this._days),this._months=wn(this._months),e.milliseconds=wn(e.milliseconds),e.seconds=wn(e.seconds),e.minutes=wn(e.minutes),e.hours=wn(e.hours),e.months=wn(e.months),e.years=wn(e.years),this},qn.add=function(e,t){return Mn(this,e,t,1)},qn.subtract=function(e,t){return Mn(this,e,t,-1)},qn.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=H(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+Sn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Dn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},qn.asMilliseconds=On,qn.asSeconds=Tn,qn.asMinutes=bn,qn.asHours=xn,qn.asDays=Pn,qn.asWeeks=Wn,qn.asMonths=Cn,qn.asQuarters=Hn,qn.asYears=Rn,qn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*D(this._months/12):NaN},qn._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*kn(Dn(o)+a),o=a=0),u.milliseconds=r%1e3,e=S(r/1e3),u.seconds=e%60,t=S(e/60),u.minutes=t%60,n=S(t/60),u.hours=n%24,o+=i=S(Sn(a+=S(n/24))),a-=kn(Dn(i)),s=S(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},qn.clone=function(){return jt(this)},qn.get=function(e){return e=H(e),this.isValid()?this[e+"s"]():NaN},qn.milliseconds=Fn,qn.seconds=Ln,qn.minutes=Nn,qn.hours=Gn,qn.days=Vn,qn.weeks=function(){return S(this.days()/7)},qn.months=En,qn.years=In,qn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,h,d,c=this.localeData(),f=(n=!e,s=c,i=jt(t=this).abs(),r=An(i.as("s")),a=An(i.as("m")),o=An(i.as("h")),u=An(i.as("d")),l=An(i.as("M")),h=An(i.as("y")),(d=r<=jn.ss&&["s",r]||r<jn.s&&["ss",r]||a<=1&&["m"]||a<jn.m&&["mm",a]||o<=1&&["h"]||o<jn.h&&["hh",o]||u<=1&&["d"]||u<jn.d&&["dd",u]||l<=1&&["M"]||l<jn.M&&["MM",l]||h<=1&&["y"]||["yy",h])[2]=n,d[3]=0<+t,d[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,d));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},qn.toISOString=$n,qn.toString=$n,qn.toJSON=$n,qn.locale=Xt,qn.localeData=en,qn.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",$n),qn.lang=Kt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(D(e))}),c.version="2.24.0",e=bt,c.fn=mn,c.min=function(){return Wt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Wt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return bt(1e3*e)},c.months=function(e,t){return vn(e,t,"months")},c.isDate=d,c.locale=ut,c.invalid=p,c.duration=jt,c.isMoment=k,c.weekdays=function(e,t,n){return pn(e,t,n,"weekdays")},c.parseZone=function(){return bt.apply(null,arguments).parseZone()},c.localeData=ht,c.isDuration=Rt,c.monthsShort=function(e,t){return vn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return pn(e,t,n,"weekdaysMin")},c.defineLocale=lt,c.updateLocale=function(e,t){if(null!=t){var n,s,i=st;null!=(s=ot(e))&&(i=s._config),(n=new P(t=x(i,t))).parentLocale=it[e],it[e]=n,ut(e)}else null!=it[e]&&(null!=it[e].parentLocale?it[e]=it[e].parentLocale:null!=it[e]&&delete it[e]);return it[e]},c.locales=function(){return s(it)},c.weekdaysShort=function(e,t,n){return pn(e,t,n,"weekdaysShort")},c.normalizeUnits=H,c.relativeTimeRounding=function(e){return void 0===e?An:"function"==typeof e&&(An=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==jn[e]&&(void 0===t?jn[e]:(jn[e]=t,"s"===e&&(jn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=mn,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c}); AdminLTE/plugins/daterangepicker/daterangepicker.js 0000644 00000200235 15002261751 0016441 0 ustar 00 /** * @version: 3.0.5 * @author: Dan Grossman http://www.dangrossman.info/ * @copyright: Copyright (c) 2012-2019 Dan Grossman. All rights reserved. * @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php * @website: http://www.daterangepicker.com/ */ // Following the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js (function (root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Make globaly available as well define(['moment', 'jquery'], function (moment, jquery) { if (!jquery.fn) jquery.fn = {}; // webpack server rendering if (typeof moment !== 'function' && moment.default) moment = moment.default return factory(moment, jquery); }); } else if (typeof module === 'object' && module.exports) { // Node / Browserify //isomorphic issue var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; if (!jQuery) { jQuery = require('jquery'); if (!jQuery.fn) jQuery.fn = {}; } var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment'); module.exports = factory(moment, jQuery); } else { // Browser globals root.daterangepicker = factory(root.moment, root.jQuery); } }(this, function(moment, $) { var DateRangePicker = function(element, options, cb) { //default settings for options this.parentEl = 'body'; this.element = $(element); this.startDate = moment().startOf('day'); this.endDate = moment().endOf('day'); this.minDate = false; this.maxDate = false; this.maxSpan = false; this.autoApply = false; this.singleDatePicker = false; this.showDropdowns = false; this.minYear = moment().subtract(100, 'year').format('YYYY'); this.maxYear = moment().add(100, 'year').format('YYYY'); this.showWeekNumbers = false; this.showISOWeekNumbers = false; this.showCustomRangeLabel = true; this.timePicker = false; this.timePicker24Hour = false; this.timePickerIncrement = 1; this.timePickerSeconds = false; this.linkedCalendars = true; this.autoUpdateInput = true; this.alwaysShowCalendars = false; this.ranges = {}; this.opens = 'right'; if (this.element.hasClass('pull-right')) this.opens = 'left'; this.drops = 'down'; if (this.element.hasClass('dropup')) this.drops = 'up'; this.buttonClasses = 'btn btn-sm'; this.applyButtonClasses = 'btn-primary'; this.cancelButtonClasses = 'btn-default'; this.locale = { direction: 'ltr', format: moment.localeData().longDateFormat('L'), separator: ' - ', applyLabel: 'Apply', cancelLabel: 'Cancel', weekLabel: 'W', customRangeLabel: 'Custom Range', daysOfWeek: moment.weekdaysMin(), monthNames: moment.monthsShort(), firstDay: moment.localeData().firstDayOfWeek() }; this.callback = function() { }; //some state information this.isShowing = false; this.leftCalendar = {}; this.rightCalendar = {}; //custom options from user if (typeof options !== 'object' || options === null) options = {}; //allow setting options with data attributes //data-api options will be overwritten with custom javascript options options = $.extend(this.element.data(), options); //html template for the picker UI if (typeof options.template !== 'string' && !(options.template instanceof $)) options.template = '<div class="daterangepicker">' + '<div class="ranges"></div>' + '<div class="drp-calendar left">' + '<div class="calendar-table"></div>' + '<div class="calendar-time"></div>' + '</div>' + '<div class="drp-calendar right">' + '<div class="calendar-table"></div>' + '<div class="calendar-time"></div>' + '</div>' + '<div class="drp-buttons">' + '<span class="drp-selected"></span>' + '<button class="cancelBtn" type="button"></button>' + '<button class="applyBtn" disabled="disabled" type="button"></button> ' + '</div>' + '</div>'; this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); this.container = $(options.template).appendTo(this.parentEl); // // handle all the possible options overriding defaults // if (typeof options.locale === 'object') { if (typeof options.locale.direction === 'string') this.locale.direction = options.locale.direction; if (typeof options.locale.format === 'string') this.locale.format = options.locale.format; if (typeof options.locale.separator === 'string') this.locale.separator = options.locale.separator; if (typeof options.locale.daysOfWeek === 'object') this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); if (typeof options.locale.monthNames === 'object') this.locale.monthNames = options.locale.monthNames.slice(); if (typeof options.locale.firstDay === 'number') this.locale.firstDay = options.locale.firstDay; if (typeof options.locale.applyLabel === 'string') this.locale.applyLabel = options.locale.applyLabel; if (typeof options.locale.cancelLabel === 'string') this.locale.cancelLabel = options.locale.cancelLabel; if (typeof options.locale.weekLabel === 'string') this.locale.weekLabel = options.locale.weekLabel; if (typeof options.locale.customRangeLabel === 'string'){ //Support unicode chars in the custom range name. var elem = document.createElement('textarea'); elem.innerHTML = options.locale.customRangeLabel; var rangeHtml = elem.value; this.locale.customRangeLabel = rangeHtml; } } this.container.addClass(this.locale.direction); if (typeof options.startDate === 'string') this.startDate = moment(options.startDate, this.locale.format); if (typeof options.endDate === 'string') this.endDate = moment(options.endDate, this.locale.format); if (typeof options.minDate === 'string') this.minDate = moment(options.minDate, this.locale.format); if (typeof options.maxDate === 'string') this.maxDate = moment(options.maxDate, this.locale.format); if (typeof options.startDate === 'object') this.startDate = moment(options.startDate); if (typeof options.endDate === 'object') this.endDate = moment(options.endDate); if (typeof options.minDate === 'object') this.minDate = moment(options.minDate); if (typeof options.maxDate === 'object') this.maxDate = moment(options.maxDate); // sanity check for bad options if (this.minDate && this.startDate.isBefore(this.minDate)) this.startDate = this.minDate.clone(); // sanity check for bad options if (this.maxDate && this.endDate.isAfter(this.maxDate)) this.endDate = this.maxDate.clone(); if (typeof options.applyButtonClasses === 'string') this.applyButtonClasses = options.applyButtonClasses; if (typeof options.applyClass === 'string') //backwards compat this.applyButtonClasses = options.applyClass; if (typeof options.cancelButtonClasses === 'string') this.cancelButtonClasses = options.cancelButtonClasses; if (typeof options.cancelClass === 'string') //backwards compat this.cancelButtonClasses = options.cancelClass; if (typeof options.maxSpan === 'object') this.maxSpan = options.maxSpan; if (typeof options.dateLimit === 'object') //backwards compat this.maxSpan = options.dateLimit; if (typeof options.opens === 'string') this.opens = options.opens; if (typeof options.drops === 'string') this.drops = options.drops; if (typeof options.showWeekNumbers === 'boolean') this.showWeekNumbers = options.showWeekNumbers; if (typeof options.showISOWeekNumbers === 'boolean') this.showISOWeekNumbers = options.showISOWeekNumbers; if (typeof options.buttonClasses === 'string') this.buttonClasses = options.buttonClasses; if (typeof options.buttonClasses === 'object') this.buttonClasses = options.buttonClasses.join(' '); if (typeof options.showDropdowns === 'boolean') this.showDropdowns = options.showDropdowns; if (typeof options.minYear === 'number') this.minYear = options.minYear; if (typeof options.maxYear === 'number') this.maxYear = options.maxYear; if (typeof options.showCustomRangeLabel === 'boolean') this.showCustomRangeLabel = options.showCustomRangeLabel; if (typeof options.singleDatePicker === 'boolean') { this.singleDatePicker = options.singleDatePicker; if (this.singleDatePicker) this.endDate = this.startDate.clone(); } if (typeof options.timePicker === 'boolean') this.timePicker = options.timePicker; if (typeof options.timePickerSeconds === 'boolean') this.timePickerSeconds = options.timePickerSeconds; if (typeof options.timePickerIncrement === 'number') this.timePickerIncrement = options.timePickerIncrement; if (typeof options.timePicker24Hour === 'boolean') this.timePicker24Hour = options.timePicker24Hour; if (typeof options.autoApply === 'boolean') this.autoApply = options.autoApply; if (typeof options.autoUpdateInput === 'boolean') this.autoUpdateInput = options.autoUpdateInput; if (typeof options.linkedCalendars === 'boolean') this.linkedCalendars = options.linkedCalendars; if (typeof options.isInvalidDate === 'function') this.isInvalidDate = options.isInvalidDate; if (typeof options.isCustomDate === 'function') this.isCustomDate = options.isCustomDate; if (typeof options.alwaysShowCalendars === 'boolean') this.alwaysShowCalendars = options.alwaysShowCalendars; // update day names order to firstDay if (this.locale.firstDay != 0) { var iterator = this.locale.firstDay; while (iterator > 0) { this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); iterator--; } } var start, end, range; //if no start/end dates set, check if an input element contains initial values if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { if ($(this.element).is(':text')) { var val = $(this.element).val(), split = val.split(this.locale.separator); start = end = null; if (split.length == 2) { start = moment(split[0], this.locale.format); end = moment(split[1], this.locale.format); } else if (this.singleDatePicker && val !== "") { start = moment(val, this.locale.format); end = moment(val, this.locale.format); } if (start !== null && end !== null) { this.setStartDate(start); this.setEndDate(end); } } } if (typeof options.ranges === 'object') { for (range in options.ranges) { if (typeof options.ranges[range][0] === 'string') start = moment(options.ranges[range][0], this.locale.format); else start = moment(options.ranges[range][0]); if (typeof options.ranges[range][1] === 'string') end = moment(options.ranges[range][1], this.locale.format); else end = moment(options.ranges[range][1]); // If the start or end date exceed those allowed by the minDate or maxSpan // options, shorten the range to the allowable period. if (this.minDate && start.isBefore(this.minDate)) start = this.minDate.clone(); var maxDate = this.maxDate; if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate)) maxDate = start.clone().add(this.maxSpan); if (maxDate && end.isAfter(maxDate)) end = maxDate.clone(); // If the end of the range is before the minimum or the start of the range is // after the maximum, don't display this range option at all. if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day'))) continue; //Support unicode chars in the range names. var elem = document.createElement('textarea'); elem.innerHTML = range; var rangeHtml = elem.value; this.ranges[rangeHtml] = [start, end]; } var list = '<ul>'; for (range in this.ranges) { list += '<li data-range-key="' + range + '">' + range + '</li>'; } if (this.showCustomRangeLabel) { list += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + '</li>'; } list += '</ul>'; this.container.find('.ranges').prepend(list); } if (typeof cb === 'function') { this.callback = cb; } if (!this.timePicker) { this.startDate = this.startDate.startOf('day'); this.endDate = this.endDate.endOf('day'); this.container.find('.calendar-time').hide(); } //can't be used together for now if (this.timePicker && this.autoApply) this.autoApply = false; if (this.autoApply) { this.container.addClass('auto-apply'); } if (typeof options.ranges === 'object') this.container.addClass('show-ranges'); if (this.singleDatePicker) { this.container.addClass('single'); this.container.find('.drp-calendar.left').addClass('single'); this.container.find('.drp-calendar.left').show(); this.container.find('.drp-calendar.right').hide(); if (!this.timePicker) { this.container.addClass('auto-apply'); } } if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { this.container.addClass('show-calendar'); } this.container.addClass('opens' + this.opens); //apply CSS classes and labels to buttons this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses); if (this.applyButtonClasses.length) this.container.find('.applyBtn').addClass(this.applyButtonClasses); if (this.cancelButtonClasses.length) this.container.find('.cancelBtn').addClass(this.cancelButtonClasses); this.container.find('.applyBtn').html(this.locale.applyLabel); this.container.find('.cancelBtn').html(this.locale.cancelLabel); // // event listeners // this.container.find('.drp-calendar') .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this)) .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this)) .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this)) this.container.find('.ranges') .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) this.container.find('.drp-buttons') .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) if (this.element.is('input') || this.element.is('button')) { this.element.on({ 'click.daterangepicker': $.proxy(this.show, this), 'focus.daterangepicker': $.proxy(this.show, this), 'keyup.daterangepicker': $.proxy(this.elementChanged, this), 'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility }); } else { this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this)); } // // if attached to a text input, set the initial value // this.updateElement(); }; DateRangePicker.prototype = { constructor: DateRangePicker, setStartDate: function(startDate) { if (typeof startDate === 'string') this.startDate = moment(startDate, this.locale.format); if (typeof startDate === 'object') this.startDate = moment(startDate); if (!this.timePicker) this.startDate = this.startDate.startOf('day'); if (this.timePicker && this.timePickerIncrement) this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); if (this.minDate && this.startDate.isBefore(this.minDate)) { this.startDate = this.minDate.clone(); if (this.timePicker && this.timePickerIncrement) this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); } if (this.maxDate && this.startDate.isAfter(this.maxDate)) { this.startDate = this.maxDate.clone(); if (this.timePicker && this.timePickerIncrement) this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); } if (!this.isShowing) this.updateElement(); this.updateMonthsInView(); }, setEndDate: function(endDate) { if (typeof endDate === 'string') this.endDate = moment(endDate, this.locale.format); if (typeof endDate === 'object') this.endDate = moment(endDate); if (!this.timePicker) this.endDate = this.endDate.endOf('day'); if (this.timePicker && this.timePickerIncrement) this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); if (this.endDate.isBefore(this.startDate)) this.endDate = this.startDate.clone(); if (this.maxDate && this.endDate.isAfter(this.maxDate)) this.endDate = this.maxDate.clone(); if (this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate)) this.endDate = this.startDate.clone().add(this.maxSpan); this.previousRightTime = this.endDate.clone(); this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); if (!this.isShowing) this.updateElement(); this.updateMonthsInView(); }, isInvalidDate: function() { return false; }, isCustomDate: function() { return false; }, updateView: function() { if (this.timePicker) { this.renderTimePicker('left'); this.renderTimePicker('right'); if (!this.endDate) { this.container.find('.right .calendar-time select').prop('disabled', true).addClass('disabled'); } else { this.container.find('.right .calendar-time select').prop('disabled', false).removeClass('disabled'); } } if (this.endDate) this.container.find('.drp-selected').html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); this.updateMonthsInView(); this.updateCalendars(); this.updateFormInputs(); }, updateMonthsInView: function() { if (this.endDate) { //if both dates are visible already, do nothing if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) && (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) ) { return; } this.leftCalendar.month = this.startDate.clone().date(2); if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) { this.rightCalendar.month = this.endDate.clone().date(2); } else { this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); } } else { if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) { this.leftCalendar.month = this.startDate.clone().date(2); this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); } } if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) { this.rightCalendar.month = this.maxDate.clone().date(2); this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month'); } }, updateCalendars: function() { if (this.timePicker) { var hour, minute, second; if (this.endDate) { hour = parseInt(this.container.find('.left .hourselect').val(), 10); minute = parseInt(this.container.find('.left .minuteselect').val(), 10); if (isNaN(minute)) { minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10); } second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; if (!this.timePicker24Hour) { var ampm = this.container.find('.left .ampmselect').val(); if (ampm === 'PM' && hour < 12) hour += 12; if (ampm === 'AM' && hour === 12) hour = 0; } } else { hour = parseInt(this.container.find('.right .hourselect').val(), 10); minute = parseInt(this.container.find('.right .minuteselect').val(), 10); if (isNaN(minute)) { minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10); } second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; if (!this.timePicker24Hour) { var ampm = this.container.find('.right .ampmselect').val(); if (ampm === 'PM' && hour < 12) hour += 12; if (ampm === 'AM' && hour === 12) hour = 0; } } this.leftCalendar.month.hour(hour).minute(minute).second(second); this.rightCalendar.month.hour(hour).minute(minute).second(second); } this.renderCalendar('left'); this.renderCalendar('right'); //highlight any predefined range matching the current start and end dates this.container.find('.ranges li').removeClass('active'); if (this.endDate == null) return; this.calculateChosenLabel(); }, renderCalendar: function(side) { // // Build the matrix of dates that will populate the calendar // var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar; var month = calendar.month.month(); var year = calendar.month.year(); var hour = calendar.month.hour(); var minute = calendar.month.minute(); var second = calendar.month.second(); var daysInMonth = moment([year, month]).daysInMonth(); var firstDay = moment([year, month, 1]); var lastDay = moment([year, month, daysInMonth]); var lastMonth = moment(firstDay).subtract(1, 'month').month(); var lastYear = moment(firstDay).subtract(1, 'month').year(); var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); var dayOfWeek = firstDay.day(); //initialize a 6 rows x 7 columns array for the calendar var calendar = []; calendar.firstDay = firstDay; calendar.lastDay = lastDay; for (var i = 0; i < 6; i++) { calendar[i] = []; } //populate the calendar with date objects var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; if (startDay > daysInLastMonth) startDay -= 7; if (dayOfWeek == this.locale.firstDay) startDay = daysInLastMonth - 6; var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]); var col, row; for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { if (i > 0 && col % 7 === 0) { col = 0; row++; } calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second); curDate.hour(12); if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { calendar[row][col] = this.minDate.clone(); } if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { calendar[row][col] = this.maxDate.clone(); } } //make the calendar object available to hoverDate/clickDate if (side == 'left') { this.leftCalendar.calendar = calendar; } else { this.rightCalendar.calendar = calendar; } // // Display the calendar // var minDate = side == 'left' ? this.minDate : this.startDate; var maxDate = this.maxDate; var selected = side == 'left' ? this.startDate : this.endDate; var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'}; var html = '<table class="table-condensed">'; html += '<thead>'; html += '<tr>'; // add empty cell for week number if (this.showWeekNumbers || this.showISOWeekNumbers) html += '<th></th>'; if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) { html += '<th class="prev available"><span></span></th>'; } else { html += '<th></th>'; } var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); if (this.showDropdowns) { var currentMonth = calendar[1][1].month(); var currentYear = calendar[1][1].year(); var maxYear = (maxDate && maxDate.year()) || (this.maxYear); var minYear = (minDate && minDate.year()) || (this.minYear); var inMinYear = currentYear == minYear; var inMaxYear = currentYear == maxYear; var monthHtml = '<select class="monthselect">'; for (var m = 0; m < 12; m++) { if ((!inMinYear || (minDate && m >= minDate.month())) && (!inMaxYear || (maxDate && m <= maxDate.month()))) { monthHtml += "<option value='" + m + "'" + (m === currentMonth ? " selected='selected'" : "") + ">" + this.locale.monthNames[m] + "</option>"; } else { monthHtml += "<option value='" + m + "'" + (m === currentMonth ? " selected='selected'" : "") + " disabled='disabled'>" + this.locale.monthNames[m] + "</option>"; } } monthHtml += "</select>"; var yearHtml = '<select class="yearselect">'; for (var y = minYear; y <= maxYear; y++) { yearHtml += '<option value="' + y + '"' + (y === currentYear ? ' selected="selected"' : '') + '>' + y + '</option>'; } yearHtml += '</select>'; dateHtml = monthHtml + yearHtml; } html += '<th colspan="5" class="month">' + dateHtml + '</th>'; if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) { html += '<th class="next available"><span></span></th>'; } else { html += '<th></th>'; } html += '</tr>'; html += '<tr>'; // add week number label if (this.showWeekNumbers || this.showISOWeekNumbers) html += '<th class="week">' + this.locale.weekLabel + '</th>'; $.each(this.locale.daysOfWeek, function(index, dayOfWeek) { html += '<th>' + dayOfWeek + '</th>'; }); html += '</tr>'; html += '</thead>'; html += '<tbody>'; //adjust maxDate to reflect the maxSpan setting in order to //grey out end dates beyond the maxSpan if (this.endDate == null && this.maxSpan) { var maxLimit = this.startDate.clone().add(this.maxSpan).endOf('day'); if (!maxDate || maxLimit.isBefore(maxDate)) { maxDate = maxLimit; } } for (var row = 0; row < 6; row++) { html += '<tr>'; // add week number if (this.showWeekNumbers) html += '<td class="week">' + calendar[row][0].week() + '</td>'; else if (this.showISOWeekNumbers) html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>'; for (var col = 0; col < 7; col++) { var classes = []; //highlight today's date if (calendar[row][col].isSame(new Date(), "day")) classes.push('today'); //highlight weekends if (calendar[row][col].isoWeekday() > 5) classes.push('weekend'); //grey out the dates in other months displayed at beginning and end of this calendar if (calendar[row][col].month() != calendar[1][1].month()) classes.push('off', 'ends'); //don't allow selection of dates before the minimum date if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) classes.push('off', 'disabled'); //don't allow selection of dates after the maximum date if (maxDate && calendar[row][col].isAfter(maxDate, 'day')) classes.push('off', 'disabled'); //don't allow selection of date if a custom function decides it's invalid if (this.isInvalidDate(calendar[row][col])) classes.push('off', 'disabled'); //highlight the currently selected start date if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) classes.push('active', 'start-date'); //highlight the currently selected end date if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) classes.push('active', 'end-date'); //highlight dates in-between the selected dates if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) classes.push('in-range'); //apply custom classes for this date var isCustom = this.isCustomDate(calendar[row][col]); if (isCustom !== false) { if (typeof isCustom === 'string') classes.push(isCustom); else Array.prototype.push.apply(classes, isCustom); } var cname = '', disabled = false; for (var i = 0; i < classes.length; i++) { cname += classes[i] + ' '; if (classes[i] == 'disabled') disabled = true; } if (!disabled) cname += 'available'; html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>'; } html += '</tr>'; } html += '</tbody>'; html += '</table>'; this.container.find('.drp-calendar.' + side + ' .calendar-table').html(html); }, renderTimePicker: function(side) { // Don't bother updating the time picker if it's currently disabled // because an end date hasn't been clicked yet if (side == 'right' && !this.endDate) return; var html, selected, minDate, maxDate = this.maxDate; if (this.maxSpan && (!this.maxDate || this.startDate.clone().add(this.maxSpan).isBefore(this.maxDate))) maxDate = this.startDate.clone().add(this.maxSpan); if (side == 'left') { selected = this.startDate.clone(); minDate = this.minDate; } else if (side == 'right') { selected = this.endDate.clone(); minDate = this.startDate; //Preserve the time already selected var timeSelector = this.container.find('.drp-calendar.right .calendar-time'); if (timeSelector.html() != '') { selected.hour(!isNaN(selected.hour()) ? selected.hour() : timeSelector.find('.hourselect option:selected').val()); selected.minute(!isNaN(selected.minute()) ? selected.minute() : timeSelector.find('.minuteselect option:selected').val()); selected.second(!isNaN(selected.second()) ? selected.second() : timeSelector.find('.secondselect option:selected').val()); if (!this.timePicker24Hour) { var ampm = timeSelector.find('.ampmselect option:selected').val(); if (ampm === 'PM' && selected.hour() < 12) selected.hour(selected.hour() + 12); if (ampm === 'AM' && selected.hour() === 12) selected.hour(0); } } if (selected.isBefore(this.startDate)) selected = this.startDate.clone(); if (maxDate && selected.isAfter(maxDate)) selected = maxDate.clone(); } // // hours // html = '<select class="hourselect">'; var start = this.timePicker24Hour ? 0 : 1; var end = this.timePicker24Hour ? 23 : 12; for (var i = start; i <= end; i++) { var i_in_24 = i; if (!this.timePicker24Hour) i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i); var time = selected.clone().hour(i_in_24); var disabled = false; if (minDate && time.minute(59).isBefore(minDate)) disabled = true; if (maxDate && time.minute(0).isAfter(maxDate)) disabled = true; if (i_in_24 == selected.hour() && !disabled) { html += '<option value="' + i + '" selected="selected">' + i + '</option>'; } else if (disabled) { html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>'; } else { html += '<option value="' + i + '">' + i + '</option>'; } } html += '</select> '; // // minutes // html += ': <select class="minuteselect">'; for (var i = 0; i < 60; i += this.timePickerIncrement) { var padded = i < 10 ? '0' + i : i; var time = selected.clone().minute(i); var disabled = false; if (minDate && time.second(59).isBefore(minDate)) disabled = true; if (maxDate && time.second(0).isAfter(maxDate)) disabled = true; if (selected.minute() == i && !disabled) { html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; } else if (disabled) { html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; } else { html += '<option value="' + i + '">' + padded + '</option>'; } } html += '</select> '; // // seconds // if (this.timePickerSeconds) { html += ': <select class="secondselect">'; for (var i = 0; i < 60; i++) { var padded = i < 10 ? '0' + i : i; var time = selected.clone().second(i); var disabled = false; if (minDate && time.isBefore(minDate)) disabled = true; if (maxDate && time.isAfter(maxDate)) disabled = true; if (selected.second() == i && !disabled) { html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; } else if (disabled) { html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; } else { html += '<option value="' + i + '">' + padded + '</option>'; } } html += '</select> '; } // // AM/PM // if (!this.timePicker24Hour) { html += '<select class="ampmselect">'; var am_html = ''; var pm_html = ''; if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) am_html = ' disabled="disabled" class="disabled"'; if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) pm_html = ' disabled="disabled" class="disabled"'; if (selected.hour() >= 12) { html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>'; } else { html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>'; } html += '</select>'; } this.container.find('.drp-calendar.' + side + ' .calendar-time').html(html); }, updateFormInputs: function() { if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) { this.container.find('button.applyBtn').prop('disabled', false); } else { this.container.find('button.applyBtn').prop('disabled', true); } }, move: function() { var parentOffset = { top: 0, left: 0 }, containerTop; var parentRightEdge = $(window).width(); if (!this.parentEl.is('body')) { parentOffset = { top: this.parentEl.offset().top - this.parentEl.scrollTop(), left: this.parentEl.offset().left - this.parentEl.scrollLeft() }; parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; } if (this.drops == 'up') containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; else containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; // Force the container to it's actual width this.container.css({ top: 0, left: 0, right: 'auto' }); var containerWidth = this.container.outerWidth(); this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('drop-up'); if (this.opens == 'left') { var containerRight = parentRightEdge - this.element.offset().left - this.element.outerWidth(); if (containerWidth + containerRight > $(window).width()) { this.container.css({ top: containerTop, right: 'auto', left: 9 }); } else { this.container.css({ top: containerTop, right: containerRight, left: 'auto' }); } } else if (this.opens == 'center') { var containerLeft = this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 - containerWidth / 2; if (containerLeft < 0) { this.container.css({ top: containerTop, right: 'auto', left: 9 }); } else if (containerLeft + containerWidth > $(window).width()) { this.container.css({ top: containerTop, left: 'auto', right: 0 }); } else { this.container.css({ top: containerTop, left: containerLeft, right: 'auto' }); } } else { var containerLeft = this.element.offset().left - parentOffset.left; if (containerLeft + containerWidth > $(window).width()) { this.container.css({ top: containerTop, left: 'auto', right: 0 }); } else { this.container.css({ top: containerTop, left: containerLeft, right: 'auto' }); } } }, show: function(e) { if (this.isShowing) return; // Create a click proxy that is private to this instance of datepicker, for unbinding this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this); // Bind global datepicker mousedown for hiding and $(document) .on('mousedown.daterangepicker', this._outsideClickProxy) // also support mobile devices .on('touchend.daterangepicker', this._outsideClickProxy) // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) // and also close when focus changes to outside the picker (eg. tabbing between controls) .on('focusin.daterangepicker', this._outsideClickProxy); // Reposition the picker if the window is resized while it's open $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this)); this.oldStartDate = this.startDate.clone(); this.oldEndDate = this.endDate.clone(); this.previousRightTime = this.endDate.clone(); this.updateView(); this.container.show(); this.move(); this.element.trigger('show.daterangepicker', this); this.isShowing = true; }, hide: function(e) { if (!this.isShowing) return; //incomplete date selection, revert to last values if (!this.endDate) { this.startDate = this.oldStartDate.clone(); this.endDate = this.oldEndDate.clone(); } //if a new date range was selected, invoke the user callback function if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel); //if picker is attached to a text input, update it this.updateElement(); $(document).off('.daterangepicker'); $(window).off('.daterangepicker'); this.container.hide(); this.element.trigger('hide.daterangepicker', this); this.isShowing = false; }, toggle: function(e) { if (this.isShowing) { this.hide(); } else { this.show(); } }, outsideClick: function(e) { var target = $(e.target); // if the page is clicked anywhere except within the daterangerpicker/button // itself then call this.hide() if ( // ie modal dialog fix e.type == "focusin" || target.closest(this.element).length || target.closest(this.container).length || target.closest('.calendar-table').length ) return; this.hide(); this.element.trigger('outsideClick.daterangepicker', this); }, showCalendars: function() { this.container.addClass('show-calendar'); this.move(); this.element.trigger('showCalendar.daterangepicker', this); }, hideCalendars: function() { this.container.removeClass('show-calendar'); this.element.trigger('hideCalendar.daterangepicker', this); }, clickRange: function(e) { var label = e.target.getAttribute('data-range-key'); this.chosenLabel = label; if (label == this.locale.customRangeLabel) { this.showCalendars(); } else { var dates = this.ranges[label]; this.startDate = dates[0]; this.endDate = dates[1]; if (!this.timePicker) { this.startDate.startOf('day'); this.endDate.endOf('day'); } if (!this.alwaysShowCalendars) this.hideCalendars(); this.clickApply(); } }, clickPrev: function(e) { var cal = $(e.target).parents('.drp-calendar'); if (cal.hasClass('left')) { this.leftCalendar.month.subtract(1, 'month'); if (this.linkedCalendars) this.rightCalendar.month.subtract(1, 'month'); } else { this.rightCalendar.month.subtract(1, 'month'); } this.updateCalendars(); }, clickNext: function(e) { var cal = $(e.target).parents('.drp-calendar'); if (cal.hasClass('left')) { this.leftCalendar.month.add(1, 'month'); } else { this.rightCalendar.month.add(1, 'month'); if (this.linkedCalendars) this.leftCalendar.month.add(1, 'month'); } this.updateCalendars(); }, hoverDate: function(e) { //ignore dates that can't be selected if (!$(e.target).hasClass('available')) return; var title = $(e.target).attr('data-title'); var row = title.substr(1, 1); var col = title.substr(3, 1); var cal = $(e.target).parents('.drp-calendar'); var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; //highlight the dates between the start date and the date being hovered as a potential end date var leftCalendar = this.leftCalendar; var rightCalendar = this.rightCalendar; var startDate = this.startDate; if (!this.endDate) { this.container.find('.drp-calendar tbody td').each(function(index, el) { //skip week numbers, only look at dates if ($(el).hasClass('week')) return; var title = $(el).attr('data-title'); var row = title.substr(1, 1); var col = title.substr(3, 1); var cal = $(el).parents('.drp-calendar'); var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col]; if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) { $(el).addClass('in-range'); } else { $(el).removeClass('in-range'); } }); } }, clickDate: function(e) { if (!$(e.target).hasClass('available')) return; var title = $(e.target).attr('data-title'); var row = title.substr(1, 1); var col = title.substr(3, 1); var cal = $(e.target).parents('.drp-calendar'); var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; // // this function needs to do a few things: // * alternate between selecting a start and end date for the range, // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date // * if autoapply is enabled, and an end date was chosen, apply the selection // * if single date picker mode, and time picker isn't enabled, apply the selection immediately // * if one of the inputs above the calendars was focused, cancel that manual input // if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start if (this.timePicker) { var hour = parseInt(this.container.find('.left .hourselect').val(), 10); if (!this.timePicker24Hour) { var ampm = this.container.find('.left .ampmselect').val(); if (ampm === 'PM' && hour < 12) hour += 12; if (ampm === 'AM' && hour === 12) hour = 0; } var minute = parseInt(this.container.find('.left .minuteselect').val(), 10); if (isNaN(minute)) { minute = parseInt(this.container.find('.left .minuteselect option:last').val(), 10); } var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; date = date.clone().hour(hour).minute(minute).second(second); } this.endDate = null; this.setStartDate(date.clone()); } else if (!this.endDate && date.isBefore(this.startDate)) { //special case: clicking the same date for start/end, //but the time of the end date is before the start date this.setEndDate(this.startDate.clone()); } else { // picking end if (this.timePicker) { var hour = parseInt(this.container.find('.right .hourselect').val(), 10); if (!this.timePicker24Hour) { var ampm = this.container.find('.right .ampmselect').val(); if (ampm === 'PM' && hour < 12) hour += 12; if (ampm === 'AM' && hour === 12) hour = 0; } var minute = parseInt(this.container.find('.right .minuteselect').val(), 10); if (isNaN(minute)) { minute = parseInt(this.container.find('.right .minuteselect option:last').val(), 10); } var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; date = date.clone().hour(hour).minute(minute).second(second); } this.setEndDate(date.clone()); if (this.autoApply) { this.calculateChosenLabel(); this.clickApply(); } } if (this.singleDatePicker) { this.setEndDate(this.startDate); if (!this.timePicker) this.clickApply(); } this.updateView(); //This is to cancel the blur event handler if the mouse was in one of the inputs e.stopPropagation(); }, calculateChosenLabel: function () { var customRange = true; var i = 0; for (var range in this.ranges) { if (this.timePicker) { var format = this.timePickerSeconds ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD HH:mm"; //ignore times when comparing dates if time picker seconds is not enabled if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) { customRange = false; this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key'); break; } } else { //ignore times when comparing dates if time picker is not enabled if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { customRange = false; this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').attr('data-range-key'); break; } } i++; } if (customRange) { if (this.showCustomRangeLabel) { this.chosenLabel = this.container.find('.ranges li:last').addClass('active').attr('data-range-key'); } else { this.chosenLabel = null; } this.showCalendars(); } }, clickApply: function(e) { this.hide(); this.element.trigger('apply.daterangepicker', this); }, clickCancel: function(e) { this.startDate = this.oldStartDate; this.endDate = this.oldEndDate; this.hide(); this.element.trigger('cancel.daterangepicker', this); }, monthOrYearChanged: function(e) { var isLeft = $(e.target).closest('.drp-calendar').hasClass('left'), leftOrRight = isLeft ? 'left' : 'right', cal = this.container.find('.drp-calendar.'+leftOrRight); // Month must be Number for new moment versions var month = parseInt(cal.find('.monthselect').val(), 10); var year = cal.find('.yearselect').val(); if (!isLeft) { if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) { month = this.startDate.month(); year = this.startDate.year(); } } if (this.minDate) { if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) { month = this.minDate.month(); year = this.minDate.year(); } } if (this.maxDate) { if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) { month = this.maxDate.month(); year = this.maxDate.year(); } } if (isLeft) { this.leftCalendar.month.month(month).year(year); if (this.linkedCalendars) this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month'); } else { this.rightCalendar.month.month(month).year(year); if (this.linkedCalendars) this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month'); } this.updateCalendars(); }, timeChanged: function(e) { var cal = $(e.target).closest('.drp-calendar'), isLeft = cal.hasClass('left'); var hour = parseInt(cal.find('.hourselect').val(), 10); var minute = parseInt(cal.find('.minuteselect').val(), 10); if (isNaN(minute)) { minute = parseInt(cal.find('.minuteselect option:last').val(), 10); } var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0; if (!this.timePicker24Hour) { var ampm = cal.find('.ampmselect').val(); if (ampm === 'PM' && hour < 12) hour += 12; if (ampm === 'AM' && hour === 12) hour = 0; } if (isLeft) { var start = this.startDate.clone(); start.hour(hour); start.minute(minute); start.second(second); this.setStartDate(start); if (this.singleDatePicker) { this.endDate = this.startDate.clone(); } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) { this.setEndDate(start.clone()); } } else if (this.endDate) { var end = this.endDate.clone(); end.hour(hour); end.minute(minute); end.second(second); this.setEndDate(end); } //update the calendars so all clickable dates reflect the new time component this.updateCalendars(); //update the form inputs above the calendars with the new time this.updateFormInputs(); //re-render the time pickers because changing one selection can affect what's enabled in another this.renderTimePicker('left'); this.renderTimePicker('right'); }, elementChanged: function() { if (!this.element.is('input')) return; if (!this.element.val().length) return; var dateString = this.element.val().split(this.locale.separator), start = null, end = null; if (dateString.length === 2) { start = moment(dateString[0], this.locale.format); end = moment(dateString[1], this.locale.format); } if (this.singleDatePicker || start === null || end === null) { start = moment(this.element.val(), this.locale.format); end = start; } if (!start.isValid() || !end.isValid()) return; this.setStartDate(start); this.setEndDate(end); this.updateView(); }, keydown: function(e) { //hide on tab or enter if ((e.keyCode === 9) || (e.keyCode === 13)) { this.hide(); } //hide on esc and prevent propagation if (e.keyCode === 27) { e.preventDefault(); e.stopPropagation(); this.hide(); } }, updateElement: function() { if (this.element.is('input') && this.autoUpdateInput) { var newValue = this.startDate.format(this.locale.format); if (!this.singleDatePicker) { newValue += this.locale.separator + this.endDate.format(this.locale.format); } if (newValue !== this.element.val()) { this.element.val(newValue).trigger('change'); } } }, remove: function() { this.container.remove(); this.element.off('.daterangepicker'); this.element.removeData(); } }; $.fn.daterangepicker = function(options, callback) { var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options); this.each(function() { var el = $(this); if (el.data('daterangepicker')) el.data('daterangepicker').remove(); el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback)); }); return this; }; return DateRangePicker; })); AdminLTE/plugins/fullcalendar/fullcalendar.min.css 0000644 00000024610 15002261751 0016210 0 ustar 00 /*! * FullCalendar v2.2.5 Stylesheet * Docs & License: http://arshaw.com/fullcalendar/ * (c) 2013 Adam Shaw */.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed hr,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-popover .fc-header,.fc-unthemed hr{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed .fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1;opacity:.3;filter:alpha(opacity=30)}.fc-bgevent{background:#8fdf82;opacity:.3;filter:alpha(opacity=30)}.fc-nonbusiness{background:#ccc}.fc-icon{display:inline-block;font-size:2em;line-height:.5em;height:.5em;font-family:"Courier New",Courier,monospace}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700}.fc-icon-left-double-arrow:after{content:"\000AB"}.fc-icon-right-double-arrow:after{content:"\000BB"}.fc-icon-x:after{content:"\000D7"}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:.05em;margin:0 .1em}.fc-state-default{background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.fc-button-group{display:inline-block}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{cursor:pointer}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:25px;margin-top:4px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc hr{height:0;margin:0;padding:0 0 2px;border-style:solid;border-width:1px 0}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc-bg table{height:100%}.fc table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{overflow-y:scroll;overflow-x:hidden}.fc-scroller>*{position:relative;width:100%;overflow:hidden}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;background-color:#3a87ad;font-weight:400}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-event.fc-draggable,.fc-event[href]{cursor:pointer}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}.fc-ltr .fc-day-grid-event.fc-not-start,.fc-rtl .fc-day-grid-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-day-grid-event.fc-not-end,.fc-rtl .fc-day-grid-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-day-grid-event>.fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-day-grid-event .fc-resizer{position:absolute;top:0;bottom:0;width:7px}.fc-ltr .fc-day-grid-event .fc-resizer{right:-3px;cursor:e-resize}.fc-rtl .fc-day-grid-event .fc-resizer{left:-3px;cursor:w-resize}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-toolbar{text-align:center;margin-bottom:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc-basic-view tbody .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:0 2px}.fc-basic-view td.fc-day-number,.fc-basic-view td.fc-week-number span{padding-top:2px;padding-bottom:2px}.fc-basic-view .fc-week-number{text-align:center}.fc-basic-view .fc-week-number span{display:inline-block;min-width:1.25em}.fc-ltr .fc-basic-view .fc-day-number{text-align:right}.fc-rtl .fc-basic-view .fc-day-number{text-align:left}.fc-day-number.fc-other-month{opacity:.3;filter:alpha(opacity=30)}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-bgevent-skeleton,.fc-time-grid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-time-grid .fc-bgevent-skeleton{z-index:3}.fc-time-grid .fc-highlight-skeleton{z-index:4}.fc-time-grid .fc-content-skeleton{z-index:5}.fc-time-grid .fc-helper-skeleton{z-index:6}.fc-slats td{height:1.5em;border-bottom:0}.fc-slats .fc-minor td{border-top-style:dotted}.fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight-container{position:relative}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-time-grid .fc-bgevent-container,.fc-time-grid .fc-event-container{position:relative}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-time-grid-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-time-grid-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event{overflow:hidden}.fc-time-grid-event>.fc-content{position:relative;z-index:2}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event .fc-bg{z-index:1;background:#fff;opacity:.25;filter:alpha(opacity=25)}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event .fc-resizer{position:absolute;z-index:3;left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event .fc-resizer:after{content:"="} AdminLTE/plugins/fullcalendar/fullcalendar.print.css 0000644 00000012417 15002261751 0016563 0 ustar 00 /*! * FullCalendar v2.2.5 Print Stylesheet * Docs & License: http://arshaw.com/fullcalendar/ * (c) 2013 Adam Shaw */ /* * Include this stylesheet on your page to get a more printer-friendly calendar. * When including this stylesheet, use the media='print' attribute of the <link> tag. * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. */ .fc { max-width: 100% !important; } /* Global Event Restyling --------------------------------------------------------------------------------------------------*/ .fc-event { background: #fff !important; color: #000 !important; page-break-inside: avoid; } .fc-event .fc-resizer { display: none; } /* Table & Day-Row Restyling --------------------------------------------------------------------------------------------------*/ th, td, hr, thead, tbody, .fc-row { border-color: #ccc !important; background: #fff !important; } /* kill the overlaid, absolutely-positioned common components */ .fc-bg, .fc-bgevent-skeleton, .fc-highlight-skeleton, .fc-helper-skeleton { display: none; } /* don't force a min-height on rows (for DayGrid) */ .fc tbody .fc-row { height: auto !important; /* undo height that JS set in distributeHeight */ min-height: 0 !important; /* undo the min-height from each view's specific stylesheet */ } .fc tbody .fc-row .fc-content-skeleton { position: static; /* undo .fc-rigid */ padding-bottom: 0 !important; /* use a more border-friendly method for this... */ } .fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { /* only works in newer browsers */ padding-bottom: 1em; /* ...gives space within the skeleton. also ensures min height in a way */ } .fc tbody .fc-row .fc-content-skeleton table { /* provides a min-height for the row, but only effective for IE, which exaggerates this value, making it look more like 3em. for other browers, it will already be this tall */ height: 1em; } /* Undo month-view event limiting. Display all events and hide the "more" links --------------------------------------------------------------------------------------------------*/ .fc-more-cell, .fc-more { display: none !important; } .fc tr.fc-limited { display: table-row !important; } .fc td.fc-limited { display: table-cell !important; } .fc-popover { display: none; /* never display the "more.." popover in print mode */ } /* TimeGrid Restyling --------------------------------------------------------------------------------------------------*/ /* undo the min-height 100% trick used to fill the container's height */ .fc-time-grid { min-height: 0 !important; } /* don't display the side axis at all ("all-day" and time cells) */ .fc-agenda-view .fc-axis { display: none; } /* don't display the horizontal lines */ .fc-slats, .fc-time-grid hr { /* this hr is used when height is underused and needs to be filled */ display: none !important; /* important overrides inline declaration */ } /* let the container that holds the events be naturally positioned and create real height */ .fc-time-grid .fc-content-skeleton { position: static; } /* in case there are no events, we still want some height */ .fc-time-grid .fc-content-skeleton table { height: 4em; } /* kill the horizontal spacing made by the event container. event margins will be done below */ .fc-time-grid .fc-event-container { margin: 0 !important; } /* TimeGrid *Event* Restyling --------------------------------------------------------------------------------------------------*/ /* naturally position events, vertically stacking them */ .fc-time-grid .fc-event { position: static !important; margin: 3px 2px !important; } /* for events that continue to a future day, give the bottom border back */ .fc-time-grid .fc-event.fc-not-end { border-bottom-width: 1px !important; } /* indicate the event continues via "..." text */ .fc-time-grid .fc-event.fc-not-end:after { content: "..."; } /* for events that are continuations from previous days, give the top border back */ .fc-time-grid .fc-event.fc-not-start { border-top-width: 1px !important; } /* indicate the event is a continuation via "..." text */ .fc-time-grid .fc-event.fc-not-start:before { content: "..."; } /* time */ /* undo a previous declaration and let the time text span to a second line */ .fc-time-grid .fc-event .fc-time { white-space: normal !important; } /* hide the the time that is normally displayed... */ .fc-time-grid .fc-event .fc-time span { display: none; } /* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */ .fc-time-grid .fc-event .fc-time:after { content: attr(data-full); } /* Vertical Scroller & Containers --------------------------------------------------------------------------------------------------*/ /* kill the scrollbars and allow natural height */ .fc-scroller, .fc-day-grid-container, /* these divs might be assigned height, which we need to cleared */ .fc-time-grid-container { /* */ overflow: visible !important; height: auto !important; } /* kill the horizontal border/padding used to compensate for scrollbars */ .fc-row { border: 0 !important; margin: 0 !important; } /* Button Controls --------------------------------------------------------------------------------------------------*/ .fc-button-group, .fc button { display: none; /* don't display any button-related controls */ } AdminLTE/plugins/fullcalendar/fullcalendar.css 0000644 00000053763 15002261751 0015441 0 ustar 00 /*! * FullCalendar v2.2.5 Stylesheet * Docs & License: http://arshaw.com/fullcalendar/ * (c) 2013 Adam Shaw */ .fc { direction: ltr; text-align: left; } .fc-rtl { text-align: right; } body .fc { /* extra precedence to overcome jqui */ font-size: 1em; } /* Colors --------------------------------------------------------------------------------------------------*/ .fc-unthemed th, .fc-unthemed td, .fc-unthemed hr, .fc-unthemed thead, .fc-unthemed tbody, .fc-unthemed .fc-row, .fc-unthemed .fc-popover { border-color: #ddd; } .fc-unthemed .fc-popover { background-color: #fff; } .fc-unthemed hr, .fc-unthemed .fc-popover .fc-header { background: #eee; } .fc-unthemed .fc-popover .fc-header .fc-close { color: #666; } .fc-unthemed .fc-today { background: #fcf8e3; } .fc-highlight { /* when user is selecting cells */ background: #bce8f1; opacity: .3; filter: alpha(opacity=30); /* for IE */ } .fc-bgevent { /* default look for background events */ background: rgb(143, 223, 130); opacity: .3; filter: alpha(opacity=30); /* for IE */ } .fc-nonbusiness { /* default look for non-business-hours areas */ /* will inherit .fc-bgevent's styles */ background: #ccc; } /* Icons (inline elements with styled text that mock arrow icons) --------------------------------------------------------------------------------------------------*/ .fc-icon { display: inline-block; font-size: 2em; line-height: .5em; height: .5em; /* will make the total height 1em */ font-family: "Courier New", Courier, monospace; } .fc-icon-left-single-arrow:after { content: "\02039"; font-weight: bold; } .fc-icon-right-single-arrow:after { content: "\0203A"; font-weight: bold; } .fc-icon-left-double-arrow:after { content: "\000AB"; } .fc-icon-right-double-arrow:after { content: "\000BB"; } .fc-icon-x:after { content: "\000D7"; } /* Buttons (styled <button> tags, normalized to work cross-browser) --------------------------------------------------------------------------------------------------*/ .fc button { /* force height to include the border and padding */ -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; /* dimensions */ margin: 0; height: 2.1em; padding: 0 .6em; /* text & cursor */ font-size: 1em; /* normalize */ white-space: nowrap; cursor: pointer; } /* Firefox has an annoying inner border */ .fc button::-moz-focus-inner { margin: 0; padding: 0; } .fc-state-default { /* non-theme */ border: 1px solid; } .fc-state-default.fc-corner-left { /* non-theme */ border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .fc-state-default.fc-corner-right { /* non-theme */ border-top-right-radius: 4px; border-bottom-right-radius: 4px; } /* icons in buttons */ .fc button .fc-icon { /* non-theme */ position: relative; top: .05em; /* seems to be a good adjustment across browsers */ margin: 0 .1em; } /* button states borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/) */ .fc-state-default { background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); background-repeat: repeat-x; border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); color: #333; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .fc-state-hover, .fc-state-down, .fc-state-active, .fc-state-disabled { color: #333333; background-color: #e6e6e6; } .fc-state-hover { color: #333333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } .fc-state-down, .fc-state-active { background-color: #cccccc; background-image: none; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } .fc-state-disabled { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); box-shadow: none; } /* Buttons Groups --------------------------------------------------------------------------------------------------*/ .fc-button-group { display: inline-block; } /* every button that is not first in a button group should scootch over one pixel and cover the previous button's border... */ .fc .fc-button-group > * { /* extra precedence b/c buttons have margin set to zero */ float: left; margin: 0 0 0 -1px; } .fc .fc-button-group > :first-child { /* same */ margin-left: 0; } /* Popover --------------------------------------------------------------------------------------------------*/ .fc-popover { position: absolute; box-shadow: 0 2px 6px rgba(0,0,0,.15); } .fc-popover .fc-header { padding: 2px 4px; } .fc-popover .fc-header .fc-title { margin: 0 2px; } .fc-popover .fc-header .fc-close { cursor: pointer; } .fc-ltr .fc-popover .fc-header .fc-title, .fc-rtl .fc-popover .fc-header .fc-close { float: left; } .fc-rtl .fc-popover .fc-header .fc-title, .fc-ltr .fc-popover .fc-header .fc-close { float: right; } /* unthemed */ .fc-unthemed .fc-popover { border-width: 1px; border-style: solid; } .fc-unthemed .fc-popover .fc-header .fc-close { font-size: 25px; margin-top: 4px; } /* jqui themed */ .fc-popover > .ui-widget-header + .ui-widget-content { border-top: 0; /* where they meet, let the header have the border */ } /* Misc Reusable Components --------------------------------------------------------------------------------------------------*/ .fc hr { height: 0; margin: 0; padding: 0 0 2px; /* height is unreliable across browsers, so use padding */ border-style: solid; border-width: 1px 0; } .fc-clear { clear: both; } .fc-bg, .fc-bgevent-skeleton, .fc-highlight-skeleton, .fc-helper-skeleton { /* these element should always cling to top-left/right corners */ position: absolute; top: 0; left: 0; right: 0; } .fc-bg { bottom: 0; /* strech bg to bottom edge */ } .fc-bg table { height: 100%; /* strech bg to bottom edge */ } /* Tables --------------------------------------------------------------------------------------------------*/ .fc table { width: 100%; table-layout: fixed; border-collapse: collapse; border-spacing: 0; font-size: 1em; /* normalize cross-browser */ } .fc th { text-align: center; } .fc th, .fc td { border-style: solid; border-width: 1px; padding: 0; vertical-align: top; } .fc td.fc-today { border-style: double; /* overcome neighboring borders */ } /* Fake Table Rows --------------------------------------------------------------------------------------------------*/ .fc .fc-row { /* extra precedence to overcome themes w/ .ui-widget-content forcing a 1px border */ /* no visible border by default. but make available if need be (scrollbar width compensation) */ border-style: solid; border-width: 0; } .fc-row table { /* don't put left/right border on anything within a fake row. the outer tbody will worry about this */ border-left: 0 hidden transparent; border-right: 0 hidden transparent; /* no bottom borders on rows */ border-bottom: 0 hidden transparent; } .fc-row:first-child table { border-top: 0 hidden transparent; /* no top border on first row */ } /* Day Row (used within the header and the DayGrid) --------------------------------------------------------------------------------------------------*/ .fc-row { position: relative; } .fc-row .fc-bg { z-index: 1; } /* highlighting cells & background event skeleton */ .fc-row .fc-bgevent-skeleton, .fc-row .fc-highlight-skeleton { bottom: 0; /* stretch skeleton to bottom of row */ } .fc-row .fc-bgevent-skeleton table, .fc-row .fc-highlight-skeleton table { height: 100%; /* stretch skeleton to bottom of row */ } .fc-row .fc-highlight-skeleton td, .fc-row .fc-bgevent-skeleton td { border-color: transparent; } .fc-row .fc-bgevent-skeleton { z-index: 2; } .fc-row .fc-highlight-skeleton { z-index: 3; } /* row content (which contains day/week numbers and events) as well as "helper" (which contains temporary rendered events). */ .fc-row .fc-content-skeleton { position: relative; z-index: 4; padding-bottom: 2px; /* matches the space above the events */ } .fc-row .fc-helper-skeleton { z-index: 5; } .fc-row .fc-content-skeleton td, .fc-row .fc-helper-skeleton td { /* see-through to the background below */ background: none; /* in case <td>s are globally styled */ border-color: transparent; /* don't put a border between events and/or the day number */ border-bottom: 0; } .fc-row .fc-content-skeleton tbody td, /* cells with events inside (so NOT the day number cell) */ .fc-row .fc-helper-skeleton tbody td { /* don't put a border between event cells */ border-top: 0; } /* Scrolling Container --------------------------------------------------------------------------------------------------*/ .fc-scroller { /* this class goes on elements for guaranteed vertical scrollbars */ overflow-y: scroll; overflow-x: hidden; } .fc-scroller > * { /* we expect an immediate inner element */ position: relative; /* re-scope all positions */ width: 100%; /* hack to force re-sizing this inner element when scrollbars appear/disappear */ overflow: hidden; /* don't let negative margins or absolute positioning create further scroll */ } /* Global Event Styles --------------------------------------------------------------------------------------------------*/ .fc-event { position: relative; /* for resize handle and other inner positioning */ display: block; /* make the <a> tag block */ font-size: .85em; line-height: 1.3; border-radius: 3px; border: 1px solid #3a87ad; /* default BORDER color */ background-color: #3a87ad; /* default BACKGROUND color */ font-weight: normal; /* undo jqui's ui-widget-header bold */ } /* overpower some of bootstrap's and jqui's styles on <a> tags */ .fc-event, .fc-event:hover, .ui-widget .fc-event { color: #fff; /* default TEXT color */ text-decoration: none; /* if <a> has an href */ } .fc-event[href], .fc-event.fc-draggable { cursor: pointer; /* give events with links and draggable events a hand mouse pointer */ } .fc-not-allowed, /* causes a "warning" cursor. applied on body */ .fc-not-allowed .fc-event { /* to override an event's custom cursor */ cursor: not-allowed; } /* DayGrid events ---------------------------------------------------------------------------------------------------- We use the full "fc-day-grid-event" class instead of using descendants because the event won't be a descendant of the grid when it is being dragged. */ .fc-day-grid-event { margin: 1px 2px 0; /* spacing between events and edges */ padding: 0 1px; } /* events that are continuing to/from another week. kill rounded corners and butt up against edge */ .fc-ltr .fc-day-grid-event.fc-not-start, .fc-rtl .fc-day-grid-event.fc-not-end { margin-left: 0; border-left-width: 0; padding-left: 1px; /* replace the border with padding */ border-top-left-radius: 0; border-bottom-left-radius: 0; } .fc-ltr .fc-day-grid-event.fc-not-end, .fc-rtl .fc-day-grid-event.fc-not-start { margin-right: 0; border-right-width: 0; padding-right: 1px; /* replace the border with padding */ border-top-right-radius: 0; border-bottom-right-radius: 0; } .fc-day-grid-event > .fc-content { /* force events to be one-line tall */ white-space: nowrap; overflow: hidden; } .fc-day-grid-event .fc-time { font-weight: bold; } /* resize handle (outside of fc-content, so can go outside of bounds) */ .fc-day-grid-event .fc-resizer { position: absolute; top: 0; bottom: 0; width: 7px; } .fc-ltr .fc-day-grid-event .fc-resizer { right: -3px; cursor: e-resize; } .fc-rtl .fc-day-grid-event .fc-resizer { left: -3px; cursor: w-resize; } /* Event Limiting --------------------------------------------------------------------------------------------------*/ /* "more" link that represents hidden events */ a.fc-more { margin: 1px 3px; font-size: .85em; cursor: pointer; text-decoration: none; } a.fc-more:hover { text-decoration: underline; } .fc-limited { /* rows and cells that are hidden because of a "more" link */ display: none; } /* popover that appears when "more" link is clicked */ .fc-day-grid .fc-row { z-index: 1; /* make the "more" popover one higher than this */ } .fc-more-popover { z-index: 2; width: 220px; } .fc-more-popover .fc-event-container { padding: 10px; } /* Toolbar --------------------------------------------------------------------------------------------------*/ .fc-toolbar { text-align: center; margin-bottom: 1em; } .fc-toolbar .fc-left { float: left; } .fc-toolbar .fc-right { float: right; } .fc-toolbar .fc-center { display: inline-block; } /* the things within each left/right/center section */ .fc .fc-toolbar > * > * { /* extra precedence to override button border margins */ float: left; margin-left: .75em; } /* the first thing within each left/center/right section */ .fc .fc-toolbar > * > :first-child { /* extra precedence to override button border margins */ margin-left: 0; } /* title text */ .fc-toolbar h2 { margin: 0; } /* button layering (for border precedence) */ .fc-toolbar button { position: relative; } .fc-toolbar .fc-state-hover, .fc-toolbar .ui-state-hover { z-index: 2; } .fc-toolbar .fc-state-down { z-index: 3; } .fc-toolbar .fc-state-active, .fc-toolbar .ui-state-active { z-index: 4; } .fc-toolbar button:focus { z-index: 5; } /* View Structure --------------------------------------------------------------------------------------------------*/ /* undo twitter bootstrap's box-sizing rules. normalizes positioning techniques */ /* don't do this for the toolbar because we'll want bootstrap to style those buttons as some pt */ .fc-view-container *, .fc-view-container *:before, .fc-view-container *:after { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; } .fc-view, /* scope positioning and z-index's for everything within the view */ .fc-view > table { /* so dragged elements can be above the view's main element */ position: relative; z-index: 1; } /* BasicView --------------------------------------------------------------------------------------------------*/ /* day row structure */ .fc-basicWeek-view .fc-content-skeleton, .fc-basicDay-view .fc-content-skeleton { /* we are sure there are no day numbers in these views, so... */ padding-top: 1px; /* add a pixel to make sure there are 2px padding above events */ padding-bottom: 1em; /* ensure a space at bottom of cell for user selecting/clicking */ } .fc-basic-view tbody .fc-row { min-height: 4em; /* ensure that all rows are at least this tall */ } /* a "rigid" row will take up a constant amount of height because content-skeleton is absolute */ .fc-row.fc-rigid { overflow: hidden; } .fc-row.fc-rigid .fc-content-skeleton { position: absolute; top: 0; left: 0; right: 0; } /* week and day number styling */ .fc-basic-view .fc-week-number, .fc-basic-view .fc-day-number { padding: 0 2px; } .fc-basic-view td.fc-week-number span, .fc-basic-view td.fc-day-number { padding-top: 2px; padding-bottom: 2px; } .fc-basic-view .fc-week-number { text-align: center; } .fc-basic-view .fc-week-number span { /* work around the way we do column resizing and ensure a minimum width */ display: inline-block; min-width: 1.25em; } .fc-ltr .fc-basic-view .fc-day-number { text-align: right; } .fc-rtl .fc-basic-view .fc-day-number { text-align: left; } .fc-day-number.fc-other-month { opacity: 0.3; filter: alpha(opacity=30); /* for IE */ /* opacity with small font can sometimes look too faded might want to set the 'color' property instead making day-numbers bold also fixes the problem */ } /* AgendaView all-day area --------------------------------------------------------------------------------------------------*/ .fc-agenda-view .fc-day-grid { position: relative; z-index: 2; /* so the "more.." popover will be over the time grid */ } .fc-agenda-view .fc-day-grid .fc-row { min-height: 3em; /* all-day section will never get shorter than this */ } .fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton { padding-top: 1px; /* add a pixel to make sure there are 2px padding above events */ padding-bottom: 1em; /* give space underneath events for clicking/selecting days */ } /* TimeGrid axis running down the side (for both the all-day area and the slot area) --------------------------------------------------------------------------------------------------*/ .fc .fc-axis { /* .fc to overcome default cell styles */ vertical-align: middle; padding: 0 4px; white-space: nowrap; } .fc-ltr .fc-axis { text-align: right; } .fc-rtl .fc-axis { text-align: left; } .ui-widget td.fc-axis { font-weight: normal; /* overcome jqui theme making it bold */ } /* TimeGrid Structure --------------------------------------------------------------------------------------------------*/ .fc-time-grid-container, /* so scroll container's z-index is below all-day */ .fc-time-grid { /* so slats/bg/content/etc positions get scoped within here */ position: relative; z-index: 1; } .fc-time-grid { min-height: 100%; /* so if height setting is 'auto', .fc-bg stretches to fill height */ } .fc-time-grid table { /* don't put outer borders on slats/bg/content/etc */ border: 0 hidden transparent; } .fc-time-grid > .fc-bg { z-index: 1; } .fc-time-grid .fc-slats, .fc-time-grid > hr { /* the <hr> AgendaView injects when grid is shorter than scroller */ position: relative; z-index: 2; } .fc-time-grid .fc-bgevent-skeleton, .fc-time-grid .fc-content-skeleton { position: absolute; top: 0; left: 0; right: 0; } .fc-time-grid .fc-bgevent-skeleton { z-index: 3; } .fc-time-grid .fc-highlight-skeleton { z-index: 4; } .fc-time-grid .fc-content-skeleton { z-index: 5; } .fc-time-grid .fc-helper-skeleton { z-index: 6; } /* TimeGrid Slats (lines that run horizontally) --------------------------------------------------------------------------------------------------*/ .fc-slats td { height: 1.5em; border-bottom: 0; /* each cell is responsible for its top border */ } .fc-slats .fc-minor td { border-top-style: dotted; } .fc-slats .ui-widget-content { /* for jqui theme */ background: none; /* see through to fc-bg */ } /* TimeGrid Highlighting Slots --------------------------------------------------------------------------------------------------*/ .fc-time-grid .fc-highlight-container { /* a div within a cell within the fc-highlight-skeleton */ position: relative; /* scopes the left/right of the fc-highlight to be in the column */ } .fc-time-grid .fc-highlight { position: absolute; left: 0; right: 0; /* top and bottom will be in by JS */ } /* TimeGrid Event Containment --------------------------------------------------------------------------------------------------*/ .fc-time-grid .fc-event-container, /* a div within a cell within the fc-content-skeleton */ .fc-time-grid .fc-bgevent-container { /* a div within a cell within the fc-bgevent-skeleton */ position: relative; } .fc-ltr .fc-time-grid .fc-event-container { /* space on the sides of events for LTR (default) */ margin: 0 2.5% 0 2px; } .fc-rtl .fc-time-grid .fc-event-container { /* space on the sides of events for RTL */ margin: 0 2px 0 2.5%; } .fc-time-grid .fc-event, .fc-time-grid .fc-bgevent { position: absolute; z-index: 1; /* scope inner z-index's */ } .fc-time-grid .fc-bgevent { /* background events always span full width */ left: 0; right: 0; } /* TimeGrid Event Styling ---------------------------------------------------------------------------------------------------- We use the full "fc-time-grid-event" class instead of using descendants because the event won't be a descendant of the grid when it is being dragged. */ .fc-time-grid-event.fc-not-start { /* events that are continuing from another day */ /* replace space made by the top border with padding */ border-top-width: 0; padding-top: 1px; /* remove top rounded corners */ border-top-left-radius: 0; border-top-right-radius: 0; } .fc-time-grid-event.fc-not-end { /* replace space made by the top border with padding */ border-bottom-width: 0; padding-bottom: 1px; /* remove bottom rounded corners */ border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .fc-time-grid-event { overflow: hidden; /* don't let the bg flow over rounded corners */ } .fc-time-grid-event > .fc-content { /* contains the time and title, but no bg and resizer */ position: relative; z-index: 2; /* above the bg */ } .fc-time-grid-event .fc-time, .fc-time-grid-event .fc-title { padding: 0 1px; } .fc-time-grid-event .fc-time { font-size: .85em; white-space: nowrap; } .fc-time-grid-event .fc-bg { z-index: 1; background: #fff; opacity: .25; filter: alpha(opacity=25); /* for IE */ } /* short mode, where time and title are on the same line */ .fc-time-grid-event.fc-short .fc-content { /* don't wrap to second line (now that contents will be inline) */ white-space: nowrap; } .fc-time-grid-event.fc-short .fc-time, .fc-time-grid-event.fc-short .fc-title { /* put the time and title on the same line */ display: inline-block; vertical-align: top; } .fc-time-grid-event.fc-short .fc-time span { display: none; /* don't display the full time text... */ } .fc-time-grid-event.fc-short .fc-time:before { content: attr(data-start); /* ...instead, display only the start time */ } .fc-time-grid-event.fc-short .fc-time:after { content: "\000A0-\000A0"; /* seperate with a dash, wrapped in nbsp's */ } .fc-time-grid-event.fc-short .fc-title { font-size: .85em; /* make the title text the same size as the time */ padding: 0; /* undo padding from above */ } /* resizer */ .fc-time-grid-event .fc-resizer { position: absolute; z-index: 3; /* above content */ left: 0; right: 0; bottom: 0; height: 8px; overflow: hidden; line-height: 8px; font-size: 11px; font-family: monospace; text-align: center; cursor: s-resize; } .fc-time-grid-event .fc-resizer:after { content: "="; } AdminLTE/plugins/fullcalendar/fullcalendar.js 0000644 00001041333 15002261751 0015254 0 ustar 00 /*! * FullCalendar v2.2.5 * Docs & License: http://arshaw.com/fullcalendar/ * (c) 2013 Adam Shaw */ (function(factory) { if (typeof define === 'function' && define.amd) { define([ 'jquery', 'moment' ], factory); } else { factory(jQuery, moment); } })(function($, moment) { var defaults = { titleRangeSeparator: ' \u2014 ', // emphasized dash monthYearFormat: 'MMMM YYYY', // required for en. other languages rely on datepicker computable option defaultTimedEventDuration: '02:00:00', defaultAllDayEventDuration: { days: 1 }, forceEventDuration: false, nextDayThreshold: '09:00:00', // 9am // display defaultView: 'month', aspectRatio: 1.35, header: { left: 'title', center: '', right: 'today prev,next' }, weekends: true, weekNumbers: false, weekNumberTitle: 'W', weekNumberCalculation: 'local', //editable: false, // event ajax lazyFetching: true, startParam: 'start', endParam: 'end', timezoneParam: 'timezone', timezone: false, //allDayDefault: undefined, // locale isRTL: false, defaultButtonText: { prev: "prev", next: "next", prevYear: "prev year", nextYear: "next year", today: 'today', month: 'month', week: 'week', day: 'day' }, buttonIcons: { prev: 'left-single-arrow', next: 'right-single-arrow', prevYear: 'left-double-arrow', nextYear: 'right-double-arrow' }, // jquery-ui theming theme: false, themeButtonIcons: { prev: 'circle-triangle-w', next: 'circle-triangle-e', prevYear: 'seek-prev', nextYear: 'seek-next' }, dragOpacity: .75, dragRevertDuration: 500, dragScroll: true, //selectable: false, unselectAuto: true, dropAccept: '*', eventLimit: false, eventLimitText: 'more', eventLimitClick: 'popover', dayPopoverFormat: 'LL', handleWindowResize: true, windowResizeDelay: 200 // milliseconds before an updateSize happens }; var englishDefaults = { dayPopoverFormat: 'dddd, MMMM D' }; // right-to-left defaults var rtlDefaults = { header: { left: 'next,prev today', center: '', right: 'title' }, buttonIcons: { prev: 'right-single-arrow', next: 'left-single-arrow', prevYear: 'right-double-arrow', nextYear: 'left-double-arrow' }, themeButtonIcons: { prev: 'circle-triangle-e', next: 'circle-triangle-w', nextYear: 'seek-prev', prevYear: 'seek-next' } }; var fc = $.fullCalendar = { version: "2.2.5" }; var fcViews = fc.views = {}; $.fn.fullCalendar = function(options) { var args = Array.prototype.slice.call(arguments, 1); // for a possible method call var res = this; // what this function will return (this jQuery object by default) this.each(function(i, _element) { // loop each DOM element involved var element = $(_element); var calendar = element.data('fullCalendar'); // get the existing calendar object (if any) var singleRes; // the returned value of this single method call // a method call if (typeof options === 'string') { if (calendar && $.isFunction(calendar[options])) { singleRes = calendar[options].apply(calendar, args); if (!i) { res = singleRes; // record the first method call result } if (options === 'destroy') { // for the destroy method, must remove Calendar object data element.removeData('fullCalendar'); } } } // a new calendar initialization else if (!calendar) { // don't initialize twice calendar = new Calendar(element, options); element.data('fullCalendar', calendar); calendar.render(); } }); return res; }; // function for adding/overriding defaults function setDefaults(d) { mergeOptions(defaults, d); } // Recursively combines option hash-objects. // Better than `$.extend(true, ...)` because arrays are not traversed/copied. // // called like: // mergeOptions(target, obj1, obj2, ...) // function mergeOptions(target) { function mergeIntoTarget(name, value) { if ($.isPlainObject(value) && $.isPlainObject(target[name]) && !isForcedAtomicOption(name)) { // merge into a new object to avoid destruction target[name] = mergeOptions({}, target[name], value); // combine. `value` object takes precedence } else if (value !== undefined) { // only use values that are set and not undefined target[name] = value; } } for (var i=1; i<arguments.length; i++) { $.each(arguments[i], mergeIntoTarget); } return target; } // overcome sucky view-option-hash and option-merging behavior messing with options it shouldn't function isForcedAtomicOption(name) { // Any option that ends in "Time" or "Duration" is probably a Duration, // and these will commonly be specified as plain objects, which we don't want to mess up. return /(Time|Duration)$/.test(name); } // FIX: find a different solution for view-option-hashes and have a whitelist // for options that can be recursively merged. var langOptionHash = fc.langs = {}; // initialize and expose // TODO: document the structure and ordering of a FullCalendar lang file // TODO: rename everything "lang" to "locale", like what the moment project did // Initialize jQuery UI datepicker translations while using some of the translations // Will set this as the default language for datepicker. fc.datepickerLang = function(langCode, dpLangCode, dpOptions) { // get the FullCalendar internal option hash for this language. create if necessary var fcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {}); // transfer some simple options from datepicker to fc fcOptions.isRTL = dpOptions.isRTL; fcOptions.weekNumberTitle = dpOptions.weekHeader; // compute some more complex options from datepicker $.each(dpComputableOptions, function(name, func) { fcOptions[name] = func(dpOptions); }); // is jQuery UI Datepicker is on the page? if ($.datepicker) { // Register the language data. // FullCalendar and MomentJS use language codes like "pt-br" but Datepicker // does it like "pt-BR" or if it doesn't have the language, maybe just "pt". // Make an alias so the language can be referenced either way. $.datepicker.regional[dpLangCode] = $.datepicker.regional[langCode] = // alias dpOptions; // Alias 'en' to the default language data. Do this every time. $.datepicker.regional.en = $.datepicker.regional['']; // Set as Datepicker's global defaults. $.datepicker.setDefaults(dpOptions); } }; // Sets FullCalendar-specific translations. Will set the language as the global default. fc.lang = function(langCode, newFcOptions) { var fcOptions; var momOptions; // get the FullCalendar internal option hash for this language. create if necessary fcOptions = langOptionHash[langCode] || (langOptionHash[langCode] = {}); // provided new options for this language? merge them in if (newFcOptions) { mergeOptions(fcOptions, newFcOptions); } // compute language options that weren't defined. // always do this. newFcOptions can be undefined when initializing from i18n file, // so no way to tell if this is an initialization or a default-setting. momOptions = getMomentLocaleData(langCode); // will fall back to en $.each(momComputableOptions, function(name, func) { if (fcOptions[name] === undefined) { fcOptions[name] = func(momOptions, fcOptions); } }); // set it as the default language for FullCalendar defaults.lang = langCode; }; // NOTE: can't guarantee any of these computations will run because not every language has datepicker // configs, so make sure there are English fallbacks for these in the defaults file. var dpComputableOptions = { defaultButtonText: function(dpOptions) { return { // the translations sometimes wrongly contain HTML entities prev: stripHtmlEntities(dpOptions.prevText), next: stripHtmlEntities(dpOptions.nextText), today: stripHtmlEntities(dpOptions.currentText) }; }, // Produces format strings like "MMMM YYYY" -> "September 2014" monthYearFormat: function(dpOptions) { return dpOptions.showMonthAfterYear ? 'YYYY[' + dpOptions.yearSuffix + '] MMMM' : 'MMMM YYYY[' + dpOptions.yearSuffix + ']'; } }; var momComputableOptions = { // Produces format strings like "ddd MM/DD" -> "Fri 12/10" dayOfMonthFormat: function(momOptions, fcOptions) { var format = momOptions.longDateFormat('l'); // for the format like "M/D/YYYY" // strip the year off the edge, as well as other misc non-whitespace chars format = format.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g, ''); if (fcOptions.isRTL) { format += ' ddd'; // for RTL, add day-of-week to end } else { format = 'ddd ' + format; // for LTR, add day-of-week to beginning } return format; }, // Produces format strings like "H(:mm)a" -> "6pm" or "6:30pm" smallTimeFormat: function(momOptions) { return momOptions.longDateFormat('LT') .replace(':mm', '(:mm)') .replace(/(\Wmm)$/, '($1)') // like above, but for foreign langs .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand }, // Produces format strings like "H(:mm)t" -> "6p" or "6:30p" extraSmallTimeFormat: function(momOptions) { return momOptions.longDateFormat('LT') .replace(':mm', '(:mm)') .replace(/(\Wmm)$/, '($1)') // like above, but for foreign langs .replace(/\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand }, // Produces format strings like "H:mm" -> "6:30" (with no AM/PM) noMeridiemTimeFormat: function(momOptions) { return momOptions.longDateFormat('LT') .replace(/\s*a$/i, ''); // remove trailing AM/PM } }; // Returns moment's internal locale data. If doesn't exist, returns English. // Works with moment-pre-2.8 function getMomentLocaleData(langCode) { var func = moment.localeData || moment.langData; return func.call(moment, langCode) || func.call(moment, 'en'); // the newer localData could return null, so fall back to en } // Initialize English by forcing computation of moment-derived options. // Also, sets it as the default. fc.lang('en', englishDefaults); // exports fc.intersectionToSeg = intersectionToSeg; fc.applyAll = applyAll; fc.debounce = debounce; /* FullCalendar-specific DOM Utilities ----------------------------------------------------------------------------------------------------------------------*/ // Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left // and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that. function compensateScroll(rowEls, scrollbarWidths) { if (scrollbarWidths.left) { rowEls.css({ 'border-left-width': 1, 'margin-left': scrollbarWidths.left - 1 }); } if (scrollbarWidths.right) { rowEls.css({ 'border-right-width': 1, 'margin-right': scrollbarWidths.right - 1 }); } } // Undoes compensateScroll and restores all borders/margins function uncompensateScroll(rowEls) { rowEls.css({ 'margin-left': '', 'margin-right': '', 'border-left-width': '', 'border-right-width': '' }); } // Make the mouse cursor express that an event is not allowed in the current area function disableCursor() { $('body').addClass('fc-not-allowed'); } // Returns the mouse cursor to its original look function enableCursor() { $('body').removeClass('fc-not-allowed'); } // Given a total available height to fill, have `els` (essentially child rows) expand to accomodate. // By default, all elements that are shorter than the recommended height are expanded uniformly, not considering // any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and // reduces the available height. function distributeHeight(els, availableHeight, shouldRedistribute) { // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions, // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars. var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE* var flexEls = []; // elements that are allowed to expand. array of DOM nodes var flexOffsets = []; // amount of vertical space it takes up var flexHeights = []; // actual css height var usedHeight = 0; undistributeHeight(els); // give all elements their natural height // find elements that are below the recommended height (expandable). // important to query for heights in a single first pass (to avoid reflow oscillation). els.each(function(i, el) { var minOffset = i === els.length - 1 ? minOffset2 : minOffset1; var naturalOffset = $(el).outerHeight(true); if (naturalOffset < minOffset) { flexEls.push(el); flexOffsets.push(naturalOffset); flexHeights.push($(el).height()); } else { // this element stretches past recommended height (non-expandable). mark the space as occupied. usedHeight += naturalOffset; } }); // readjust the recommended height to only consider the height available to non-maxed-out rows. if (shouldRedistribute) { availableHeight -= usedHeight; minOffset1 = Math.floor(availableHeight / flexEls.length); minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE* } // assign heights to all expandable elements $(flexEls).each(function(i, el) { var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1; var naturalOffset = flexOffsets[i]; var naturalHeight = flexHeights[i]; var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things $(el).height(newHeight); } }); } // Undoes distrubuteHeight, restoring all els to their natural height function undistributeHeight(els) { els.height(''); } // Given `els`, a jQuery set of <td> cells, find the cell with the largest natural width and set the widths of all the // cells to be that width. // PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline function matchCellWidths(els) { var maxInnerWidth = 0; els.find('> *').each(function(i, innerEl) { var innerWidth = $(innerEl).outerWidth(); if (innerWidth > maxInnerWidth) { maxInnerWidth = innerWidth; } }); maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance els.width(maxInnerWidth); return maxInnerWidth; } // Turns a container element into a scroller if its contents is taller than the allotted height. // Returns true if the element is now a scroller, false otherwise. // NOTE: this method is best because it takes weird zooming dimensions into account function setPotentialScroller(containerEl, height) { containerEl.height(height).addClass('fc-scroller'); // are scrollbars needed? if (containerEl[0].scrollHeight - 1 > containerEl[0].clientHeight) { // !!! -1 because IE is often off-by-one :( return true; } unsetScroller(containerEl); // undo return false; } // Takes an element that might have been a scroller, and turns it back into a normal element. function unsetScroller(containerEl) { containerEl.height('').removeClass('fc-scroller'); } /* General DOM Utilities ----------------------------------------------------------------------------------------------------------------------*/ // borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51 function getScrollParent(el) { var position = el.css('position'), scrollParent = el.parents().filter(function() { var parent = $(this); return (/(auto|scroll)/).test( parent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x') ); }).eq(0); return position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent; } // Given a container element, return an object with the pixel values of the left/right scrollbars. // Left scrollbars might occur on RTL browsers (IE maybe?) but I have not tested. // PREREQUISITE: container element must have a single child with display:block function getScrollbarWidths(container) { var containerLeft = container.offset().left; var containerRight = containerLeft + container.width(); var inner = container.children(); var innerLeft = inner.offset().left; var innerRight = innerLeft + inner.outerWidth(); return { left: innerLeft - containerLeft, right: containerRight - innerRight }; } // Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) function isPrimaryMouseButton(ev) { return ev.which == 1 && !ev.ctrlKey; } /* FullCalendar-specific Misc Utilities ----------------------------------------------------------------------------------------------------------------------*/ // Creates a basic segment with the intersection of the two ranges. Returns undefined if no intersection. // Expects all dates to be normalized to the same timezone beforehand. // TODO: move to date section? function intersectionToSeg(subjectRange, constraintRange) { var subjectStart = subjectRange.start; var subjectEnd = subjectRange.end; var constraintStart = constraintRange.start; var constraintEnd = constraintRange.end; var segStart, segEnd; var isStart, isEnd; if (subjectEnd > constraintStart && subjectStart < constraintEnd) { // in bounds at all? if (subjectStart >= constraintStart) { segStart = subjectStart.clone(); isStart = true; } else { segStart = constraintStart.clone(); isStart = false; } if (subjectEnd <= constraintEnd) { segEnd = subjectEnd.clone(); isEnd = true; } else { segEnd = constraintEnd.clone(); isEnd = false; } return { start: segStart, end: segEnd, isStart: isStart, isEnd: isEnd }; } } function smartProperty(obj, name) { // get a camel-cased/namespaced property of an object obj = obj || {}; if (obj[name] !== undefined) { return obj[name]; } var parts = name.split(/(?=[A-Z])/), i = parts.length - 1, res; for (; i>=0; i--) { res = obj[parts[i].toLowerCase()]; if (res !== undefined) { return res; } } return obj['default']; } /* Date Utilities ----------------------------------------------------------------------------------------------------------------------*/ var dayIDs = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ]; var intervalUnits = [ 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond' ]; // Diffs the two moments into a Duration where full-days are recorded first, then the remaining time. // Moments will have their timezones normalized. function diffDayTime(a, b) { return moment.duration({ days: a.clone().stripTime().diff(b.clone().stripTime(), 'days'), ms: a.time() - b.time() // time-of-day from day start. disregards timezone }); } // Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations. function diffDay(a, b) { return moment.duration({ days: a.clone().stripTime().diff(b.clone().stripTime(), 'days') }); } // Computes the larges whole-unit period of time, as a duration object. // For example, 48 hours will be {days:2} whereas 49 hours will be {hours:49}. // Accepts start/end, a range object, or an original duration object. /* (never used) function computeIntervalDuration(start, end) { var durationInput = {}; var i, unit; var val; for (i = 0; i < intervalUnits.length; i++) { unit = intervalUnits[i]; val = computeIntervalAs(unit, start, end); if (val) { break; } } durationInput[unit] = val; return moment.duration(durationInput); } */ // Computes the unit name of the largest whole-unit period of time. // For example, 48 hours will be "days" wherewas 49 hours will be "hours". // Accepts start/end, a range object, or an original duration object. function computeIntervalUnit(start, end) { var i, unit; for (i = 0; i < intervalUnits.length; i++) { unit = intervalUnits[i]; if (computeIntervalAs(unit, start, end)) { break; } } return unit; // will be "milliseconds" if nothing else matches } // Computes the number of units the interval is cleanly comprised of. // If the given unit does not cleanly divide the interval a whole number of times, `false` is returned. // Accepts start/end, a range object, or an original duration object. function computeIntervalAs(unit, start, end) { var val; if (end != null) { // given start, end val = end.diff(start, unit, true); } else if (moment.isDuration(start)) { // given duration val = start.as(unit); } else { // given { start, end } range object val = start.end.diff(start.start, unit, true); } if (val >= 1 && isInt(val)) { return val; } return false; } function isNativeDate(input) { return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; } // Returns a boolean about whether the given input is a time string, like "06:40:00" or "06:00" function isTimeString(str) { return /^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(str); } /* General Utilities ----------------------------------------------------------------------------------------------------------------------*/ var hasOwnPropMethod = {}.hasOwnProperty; // Create an object that has the given prototype. Just like Object.create function createObject(proto) { var f = function() {}; f.prototype = proto; return new f(); } function copyOwnProps(src, dest) { for (var name in src) { if (hasOwnProp(src, name)) { dest[name] = src[name]; } } } function hasOwnProp(obj, name) { return hasOwnPropMethod.call(obj, name); } // Is the given value a non-object non-function value? function isAtomic(val) { return /undefined|null|boolean|number|string/.test($.type(val)); } function applyAll(functions, thisObj, args) { if ($.isFunction(functions)) { functions = [ functions ]; } if (functions) { var i; var ret; for (i=0; i<functions.length; i++) { ret = functions[i].apply(thisObj, args) || ret; } return ret; } } function firstDefined() { for (var i=0; i<arguments.length; i++) { if (arguments[i] !== undefined) { return arguments[i]; } } } function htmlEscape(s) { return (s + '').replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/'/g, ''') .replace(/"/g, '"') .replace(/\n/g, '<br />'); } function stripHtmlEntities(text) { return text.replace(/&.*?;/g, ''); } function capitaliseFirstLetter(str) { return str.charAt(0).toUpperCase() + str.slice(1); } function compareNumbers(a, b) { // for .sort() return a - b; } function isInt(n) { return n % 1 === 0; } // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for // N milliseconds. // https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714 function debounce(func, wait) { var timeoutId; var args; var context; var timestamp; // of most recent call var later = function() { var last = +new Date() - timestamp; if (last < wait && last > 0) { timeoutId = setTimeout(later, wait - last); } else { timeoutId = null; func.apply(context, args); if (!timeoutId) { context = args = null; } } }; return function() { context = this; args = arguments; timestamp = +new Date(); if (!timeoutId) { timeoutId = setTimeout(later, wait); } }; } var ambigDateOfMonthRegex = /^\s*\d{4}-\d\d$/; var ambigTimeOrZoneRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/; var newMomentProto = moment.fn; // where we will attach our new methods var oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods var allowValueOptimization; var setUTCValues; // function defined below var setLocalValues; // function defined below // Creating // ------------------------------------------------------------------------------------------------- // Creates a new moment, similar to the vanilla moment(...) constructor, but with // extra features (ambiguous time, enhanced formatting). When given an existing moment, // it will function as a clone (and retain the zone of the moment). Anything else will // result in a moment in the local zone. fc.moment = function() { return makeMoment(arguments); }; // Sames as fc.moment, but forces the resulting moment to be in the UTC timezone. fc.moment.utc = function() { var mom = makeMoment(arguments, true); // Force it into UTC because makeMoment doesn't guarantee it // (if given a pre-existing moment for example) if (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone mom.utc(); } return mom; }; // Same as fc.moment, but when given an ISO8601 string, the timezone offset is preserved. // ISO8601 strings with no timezone offset will become ambiguously zoned. fc.moment.parseZone = function() { return makeMoment(arguments, true, true); }; // Builds an enhanced moment from args. When given an existing moment, it clones. When given a // native Date, or called with no arguments (the current time), the resulting moment will be local. // Anything else needs to be "parsed" (a string or an array), and will be affected by: // parseAsUTC - if there is no zone information, should we parse the input in UTC? // parseZone - if there is zone information, should we force the zone of the moment? function makeMoment(args, parseAsUTC, parseZone) { var input = args[0]; var isSingleString = args.length == 1 && typeof input === 'string'; var isAmbigTime; var isAmbigZone; var ambigMatch; var mom; if (moment.isMoment(input)) { mom = moment.apply(null, args); // clone it transferAmbigs(input, mom); // the ambig flags weren't transfered with the clone } else if (isNativeDate(input) || input === undefined) { mom = moment.apply(null, args); // will be local } else { // "parsing" is required isAmbigTime = false; isAmbigZone = false; if (isSingleString) { if (ambigDateOfMonthRegex.test(input)) { // accept strings like '2014-05', but convert to the first of the month input += '-01'; args = [ input ]; // for when we pass it on to moment's constructor isAmbigTime = true; isAmbigZone = true; } else if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) { isAmbigTime = !ambigMatch[5]; // no time part? isAmbigZone = true; } } else if ($.isArray(input)) { // arrays have no timezone information, so assume ambiguous zone isAmbigZone = true; } // otherwise, probably a string with a format if (parseAsUTC || isAmbigTime) { mom = moment.utc.apply(moment, args); } else { mom = moment.apply(null, args); } if (isAmbigTime) { mom._ambigTime = true; mom._ambigZone = true; // ambiguous time always means ambiguous zone } else if (parseZone) { // let's record the inputted zone somehow if (isAmbigZone) { mom._ambigZone = true; } else if (isSingleString) { mom.zone(input); // if not a valid zone, will assign UTC } } } mom._fullCalendar = true; // flag for extended functionality return mom; } // A clone method that works with the flags related to our enhanced functionality. // In the future, use moment.momentProperties newMomentProto.clone = function() { var mom = oldMomentProto.clone.apply(this, arguments); // these flags weren't transfered with the clone transferAmbigs(this, mom); if (this._fullCalendar) { mom._fullCalendar = true; } return mom; }; // Time-of-day // ------------------------------------------------------------------------------------------------- // GETTER // Returns a Duration with the hours/minutes/seconds/ms values of the moment. // If the moment has an ambiguous time, a duration of 00:00 will be returned. // // SETTER // You can supply a Duration, a Moment, or a Duration-like argument. // When setting the time, and the moment has an ambiguous time, it then becomes unambiguous. newMomentProto.time = function(time) { // Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar. // `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins. if (!this._fullCalendar) { return oldMomentProto.time.apply(this, arguments); } if (time == null) { // getter return moment.duration({ hours: this.hours(), minutes: this.minutes(), seconds: this.seconds(), milliseconds: this.milliseconds() }); } else { // setter this._ambigTime = false; // mark that the moment now has a time if (!moment.isDuration(time) && !moment.isMoment(time)) { time = moment.duration(time); } // The day value should cause overflow (so 24 hours becomes 00:00:00 of next day). // Only for Duration times, not Moment times. var dayHours = 0; if (moment.isDuration(time)) { dayHours = Math.floor(time.asDays()) * 24; } // We need to set the individual fields. // Can't use startOf('day') then add duration. In case of DST at start of day. return this.hours(dayHours + time.hours()) .minutes(time.minutes()) .seconds(time.seconds()) .milliseconds(time.milliseconds()); } }; // Converts the moment to UTC, stripping out its time-of-day and timezone offset, // but preserving its YMD. A moment with a stripped time will display no time // nor timezone offset when .format() is called. newMomentProto.stripTime = function() { var a; if (!this._ambigTime) { // get the values before any conversion happens a = this.toArray(); // array of y/m/d/h/m/s/ms this.utc(); // set the internal UTC flag (will clear the ambig flags) setUTCValues(this, a.slice(0, 3)); // set the year/month/date. time will be zero // Mark the time as ambiguous. This needs to happen after the .utc() call, which calls .zone(), // which clears all ambig flags. Same with setUTCValues with moment-timezone. this._ambigTime = true; this._ambigZone = true; // if ambiguous time, also ambiguous timezone offset } return this; // for chaining }; // Returns if the moment has a non-ambiguous time (boolean) newMomentProto.hasTime = function() { return !this._ambigTime; }; // Timezone // ------------------------------------------------------------------------------------------------- // Converts the moment to UTC, stripping out its timezone offset, but preserving its // YMD and time-of-day. A moment with a stripped timezone offset will display no // timezone offset when .format() is called. newMomentProto.stripZone = function() { var a, wasAmbigTime; if (!this._ambigZone) { // get the values before any conversion happens a = this.toArray(); // array of y/m/d/h/m/s/ms wasAmbigTime = this._ambigTime; this.utc(); // set the internal UTC flag (will clear the ambig flags) setUTCValues(this, a); // will set the year/month/date/hours/minutes/seconds/ms if (wasAmbigTime) { // the above call to .utc()/.zone() unfortunately clears the ambig flags, so reassign this._ambigTime = true; } // Mark the zone as ambiguous. This needs to happen after the .utc() call, which calls .zone(), // which clears all ambig flags. Same with setUTCValues with moment-timezone. this._ambigZone = true; } return this; // for chaining }; // Returns of the moment has a non-ambiguous timezone offset (boolean) newMomentProto.hasZone = function() { return !this._ambigZone; }; // this method implicitly marks a zone (will get called upon .utc() and .local()) newMomentProto.zone = function(tzo) { if (tzo != null) { // setter // these assignments needs to happen before the original zone method is called. // I forget why, something to do with a browser crash. this._ambigTime = false; this._ambigZone = false; } return oldMomentProto.zone.apply(this, arguments); }; // this method implicitly marks a zone newMomentProto.local = function() { var a = this.toArray(); // year,month,date,hours,minutes,seconds,ms as an array var wasAmbigZone = this._ambigZone; oldMomentProto.local.apply(this, arguments); // will clear ambig flags if (wasAmbigZone) { // If the moment was ambiguously zoned, the date fields were stored as UTC. // We want to preserve these, but in local time. setLocalValues(this, a); } return this; // for chaining }; // Formatting // ------------------------------------------------------------------------------------------------- newMomentProto.format = function() { if (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided? return formatDate(this, arguments[0]); // our extended formatting } if (this._ambigTime) { return oldMomentFormat(this, 'YYYY-MM-DD'); } if (this._ambigZone) { return oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss'); } return oldMomentProto.format.apply(this, arguments); }; newMomentProto.toISOString = function() { if (this._ambigTime) { return oldMomentFormat(this, 'YYYY-MM-DD'); } if (this._ambigZone) { return oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss'); } return oldMomentProto.toISOString.apply(this, arguments); }; // Querying // ------------------------------------------------------------------------------------------------- // Is the moment within the specified range? `end` is exclusive. // FYI, this method is not a standard Moment method, so always do our enhanced logic. newMomentProto.isWithin = function(start, end) { var a = commonlyAmbiguate([ this, start, end ]); return a[0] >= a[1] && a[0] < a[2]; }; // When isSame is called with units, timezone ambiguity is normalized before the comparison happens. // If no units specified, the two moments must be identically the same, with matching ambig flags. newMomentProto.isSame = function(input, units) { var a; // only do custom logic if this is an enhanced moment if (!this._fullCalendar) { return oldMomentProto.isSame.apply(this, arguments); } if (units) { a = commonlyAmbiguate([ this, input ], true); // normalize timezones but don't erase times return oldMomentProto.isSame.call(a[0], a[1], units); } else { input = fc.moment.parseZone(input); // normalize input return oldMomentProto.isSame.call(this, input) && Boolean(this._ambigTime) === Boolean(input._ambigTime) && Boolean(this._ambigZone) === Boolean(input._ambigZone); } }; // Make these query methods work with ambiguous moments $.each([ 'isBefore', 'isAfter' ], function(i, methodName) { newMomentProto[methodName] = function(input, units) { var a; // only do custom logic if this is an enhanced moment if (!this._fullCalendar) { return oldMomentProto[methodName].apply(this, arguments); } a = commonlyAmbiguate([ this, input ]); return oldMomentProto[methodName].call(a[0], a[1], units); }; }); // Misc Internals // ------------------------------------------------------------------------------------------------- // given an array of moment-like inputs, return a parallel array w/ moments similarly ambiguated. // for example, of one moment has ambig time, but not others, all moments will have their time stripped. // set `preserveTime` to `true` to keep times, but only normalize zone ambiguity. // returns the original moments if no modifications are necessary. function commonlyAmbiguate(inputs, preserveTime) { var anyAmbigTime = false; var anyAmbigZone = false; var len = inputs.length; var moms = []; var i, mom; // parse inputs into real moments and query their ambig flags for (i = 0; i < len; i++) { mom = inputs[i]; if (!moment.isMoment(mom)) { mom = fc.moment.parseZone(mom); } anyAmbigTime = anyAmbigTime || mom._ambigTime; anyAmbigZone = anyAmbigZone || mom._ambigZone; moms.push(mom); } // strip each moment down to lowest common ambiguity // use clones to avoid modifying the original moments for (i = 0; i < len; i++) { mom = moms[i]; if (!preserveTime && anyAmbigTime && !mom._ambigTime) { moms[i] = mom.clone().stripTime(); } else if (anyAmbigZone && !mom._ambigZone) { moms[i] = mom.clone().stripZone(); } } return moms; } // Transfers all the flags related to ambiguous time/zone from the `src` moment to the `dest` moment function transferAmbigs(src, dest) { if (src._ambigTime) { dest._ambigTime = true; } else if (dest._ambigTime) { dest._ambigTime = false; } if (src._ambigZone) { dest._ambigZone = true; } else if (dest._ambigZone) { dest._ambigZone = false; } } // Sets the year/month/date/etc values of the moment from the given array. // Inefficient because it calls each individual setter. function setMomentValues(mom, a) { mom.year(a[0] || 0) .month(a[1] || 0) .date(a[2] || 0) .hours(a[3] || 0) .minutes(a[4] || 0) .seconds(a[5] || 0) .milliseconds(a[6] || 0); } // Can we set the moment's internal date directly? allowValueOptimization = '_d' in moment() && 'updateOffset' in moment; // Utility function. Accepts a moment and an array of the UTC year/month/date/etc values to set. // Assumes the given moment is already in UTC mode. setUTCValues = allowValueOptimization ? function(mom, a) { // simlate what moment's accessors do mom._d.setTime(Date.UTC.apply(Date, a)); moment.updateOffset(mom, false); // keepTime=false } : setMomentValues; // Utility function. Accepts a moment and an array of the local year/month/date/etc values to set. // Assumes the given moment is already in local mode. setLocalValues = allowValueOptimization ? function(mom, a) { // simlate what moment's accessors do mom._d.setTime(+new Date( // FYI, there is now way to apply an array of args to a constructor a[0] || 0, a[1] || 0, a[2] || 0, a[3] || 0, a[4] || 0, a[5] || 0, a[6] || 0 )); moment.updateOffset(mom, false); // keepTime=false } : setMomentValues; // Single Date Formatting // ------------------------------------------------------------------------------------------------- // call this if you want Moment's original format method to be used function oldMomentFormat(mom, formatStr) { return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js } // Formats `date` with a Moment formatting string, but allow our non-zero areas and // additional token. function formatDate(date, formatStr) { return formatDateWithChunks(date, getFormatStringChunks(formatStr)); } function formatDateWithChunks(date, chunks) { var s = ''; var i; for (i=0; i<chunks.length; i++) { s += formatDateWithChunk(date, chunks[i]); } return s; } // addition formatting tokens we want recognized var tokenOverrides = { t: function(date) { // "a" or "p" return oldMomentFormat(date, 'a').charAt(0); }, T: function(date) { // "A" or "P" return oldMomentFormat(date, 'A').charAt(0); } }; function formatDateWithChunk(date, chunk) { var token; var maybeStr; if (typeof chunk === 'string') { // a literal string return chunk; } else if ((token = chunk.token)) { // a token, like "YYYY" if (tokenOverrides[token]) { return tokenOverrides[token](date); // use our custom token } return oldMomentFormat(date, token); } else if (chunk.maybe) { // a grouping of other chunks that must be non-zero maybeStr = formatDateWithChunks(date, chunk.maybe); if (maybeStr.match(/[1-9]/)) { return maybeStr; } } return ''; } // Date Range Formatting // ------------------------------------------------------------------------------------------------- // TODO: make it work with timezone offset // Using a formatting string meant for a single date, generate a range string, like // "Sep 2 - 9 2013", that intelligently inserts a separator where the dates differ. // If the dates are the same as far as the format string is concerned, just return a single // rendering of one date, without any separator. function formatRange(date1, date2, formatStr, separator, isRTL) { var localeData; date1 = fc.moment.parseZone(date1); date2 = fc.moment.parseZone(date2); localeData = (date1.localeData || date1.lang).call(date1); // works with moment-pre-2.8 // Expand localized format strings, like "LL" -> "MMMM D YYYY" formatStr = localeData.longDateFormat(formatStr) || formatStr; // BTW, this is not important for `formatDate` because it is impossible to put custom tokens // or non-zero areas in Moment's localized format strings. separator = separator || ' - '; return formatRangeWithChunks( date1, date2, getFormatStringChunks(formatStr), separator, isRTL ); } fc.formatRange = formatRange; // expose function formatRangeWithChunks(date1, date2, chunks, separator, isRTL) { var chunkStr; // the rendering of the chunk var leftI; var leftStr = ''; var rightI; var rightStr = ''; var middleI; var middleStr1 = ''; var middleStr2 = ''; var middleStr = ''; // Start at the leftmost side of the formatting string and continue until you hit a token // that is not the same between dates. for (leftI=0; leftI<chunks.length; leftI++) { chunkStr = formatSimilarChunk(date1, date2, chunks[leftI]); if (chunkStr === false) { break; } leftStr += chunkStr; } // Similarly, start at the rightmost side of the formatting string and move left for (rightI=chunks.length-1; rightI>leftI; rightI--) { chunkStr = formatSimilarChunk(date1, date2, chunks[rightI]); if (chunkStr === false) { break; } rightStr = chunkStr + rightStr; } // The area in the middle is different for both of the dates. // Collect them distinctly so we can jam them together later. for (middleI=leftI; middleI<=rightI; middleI++) { middleStr1 += formatDateWithChunk(date1, chunks[middleI]); middleStr2 += formatDateWithChunk(date2, chunks[middleI]); } if (middleStr1 || middleStr2) { if (isRTL) { middleStr = middleStr2 + separator + middleStr1; } else { middleStr = middleStr1 + separator + middleStr2; } } return leftStr + middleStr + rightStr; } var similarUnitMap = { Y: 'year', M: 'month', D: 'day', // day of month d: 'day', // day of week // prevents a separator between anything time-related... A: 'second', // AM/PM a: 'second', // am/pm T: 'second', // A/P t: 'second', // a/p H: 'second', // hour (24) h: 'second', // hour (12) m: 'second', // minute s: 'second' // second }; // TODO: week maybe? // Given a formatting chunk, and given that both dates are similar in the regard the // formatting chunk is concerned, format date1 against `chunk`. Otherwise, return `false`. function formatSimilarChunk(date1, date2, chunk) { var token; var unit; if (typeof chunk === 'string') { // a literal string return chunk; } else if ((token = chunk.token)) { unit = similarUnitMap[token.charAt(0)]; // are the dates the same for this unit of measurement? if (unit && date1.isSame(date2, unit)) { return oldMomentFormat(date1, token); // would be the same if we used `date2` // BTW, don't support custom tokens } } return false; // the chunk is NOT the same for the two dates // BTW, don't support splitting on non-zero areas } // Chunking Utils // ------------------------------------------------------------------------------------------------- var formatStringChunkCache = {}; function getFormatStringChunks(formatStr) { if (formatStr in formatStringChunkCache) { return formatStringChunkCache[formatStr]; } return (formatStringChunkCache[formatStr] = chunkFormatString(formatStr)); } // Break the formatting string into an array of chunks function chunkFormatString(formatStr) { var chunks = []; var chunker = /\[([^\]]*)\]|\(([^\)]*)\)|(LT|(\w)\4*o?)|([^\w\[\(]+)/g; // TODO: more descrimination var match; while ((match = chunker.exec(formatStr))) { if (match[1]) { // a literal string inside [ ... ] chunks.push(match[1]); } else if (match[2]) { // non-zero formatting inside ( ... ) chunks.push({ maybe: chunkFormatString(match[2]) }); } else if (match[3]) { // a formatting token chunks.push({ token: match[3] }); } else if (match[5]) { // an unenclosed literal string chunks.push(match[5]); } } return chunks; } fc.Class = Class; // export // class that all other classes will inherit from function Class() { } // called upon a class to create a subclass Class.extend = function(members) { var superClass = this; var subClass; members = members || {}; // ensure a constructor for the subclass, forwarding all arguments to the super-constructor if it doesn't exist if (hasOwnProp(members, 'constructor')) { subClass = members.constructor; } if (typeof subClass !== 'function') { subClass = members.constructor = function() { superClass.apply(this, arguments); }; } // build the base prototype for the subclass, which is an new object chained to the superclass's prototype subClass.prototype = createObject(superClass.prototype); // copy each member variable/method onto the the subclass's prototype copyOwnProps(members, subClass.prototype); // copy over all class variables/methods to the subclass, such as `extend` and `mixin` copyOwnProps(superClass, subClass); return subClass; }; // adds new member variables/methods to the class's prototype. // can be called with another class, or a plain object hash containing new members. Class.mixin = function(members) { copyOwnProps(members.prototype || members, this.prototype); }; /* A rectangular panel that is absolutely positioned over other content ------------------------------------------------------------------------------------------------------------------------ Options: - className (string) - content (HTML string or jQuery element set) - parentEl - top - left - right (the x coord of where the right edge should be. not a "CSS" right) - autoHide (boolean) - show (callback) - hide (callback) */ var Popover = Class.extend({ isHidden: true, options: null, el: null, // the container element for the popover. generated by this object documentMousedownProxy: null, // document mousedown handler bound to `this` margin: 10, // the space required between the popover and the edges of the scroll container constructor: function(options) { this.options = options || {}; }, // Shows the popover on the specified position. Renders it if not already show: function() { if (this.isHidden) { if (!this.el) { this.render(); } this.el.show(); this.position(); this.isHidden = false; this.trigger('show'); } }, // Hides the popover, through CSS, but does not remove it from the DOM hide: function() { if (!this.isHidden) { this.el.hide(); this.isHidden = true; this.trigger('hide'); } }, // Creates `this.el` and renders content inside of it render: function() { var _this = this; var options = this.options; this.el = $('<div class="fc-popover"/>') .addClass(options.className || '') .css({ // position initially to the top left to avoid creating scrollbars top: 0, left: 0 }) .append(options.content) .appendTo(options.parentEl); // when a click happens on anything inside with a 'fc-close' className, hide the popover this.el.on('click', '.fc-close', function() { _this.hide(); }); if (options.autoHide) { $(document).on('mousedown', this.documentMousedownProxy = $.proxy(this, 'documentMousedown')); } }, // Triggered when the user clicks *anywhere* in the document, for the autoHide feature documentMousedown: function(ev) { // only hide the popover if the click happened outside the popover if (this.el && !$(ev.target).closest(this.el).length) { this.hide(); } }, // Hides and unregisters any handlers destroy: function() { this.hide(); if (this.el) { this.el.remove(); this.el = null; } $(document).off('mousedown', this.documentMousedownProxy); }, // Positions the popover optimally, using the top/left/right options position: function() { var options = this.options; var origin = this.el.offsetParent().offset(); var width = this.el.outerWidth(); var height = this.el.outerHeight(); var windowEl = $(window); var viewportEl = getScrollParent(this.el); var viewportTop; var viewportLeft; var viewportOffset; var top; // the "position" (not "offset") values for the popover var left; // // compute top and left top = options.top || 0; if (options.left !== undefined) { left = options.left; } else if (options.right !== undefined) { left = options.right - width; // derive the left value from the right value } else { left = 0; } if (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result viewportEl = windowEl; viewportTop = 0; // the window is always at the top left viewportLeft = 0; // (and .offset() won't work if called here) } else { viewportOffset = viewportEl.offset(); viewportTop = viewportOffset.top; viewportLeft = viewportOffset.left; } // if the window is scrolled, it causes the visible area to be further down viewportTop += windowEl.scrollTop(); viewportLeft += windowEl.scrollLeft(); // constrain to the view port. if constrained by two edges, give precedence to top/left if (options.viewportConstrain !== false) { top = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin); top = Math.max(top, viewportTop + this.margin); left = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin); left = Math.max(left, viewportLeft + this.margin); } this.el.css({ top: top - origin.top, left: left - origin.left }); }, // Triggers a callback. Calls a function in the option hash of the same name. // Arguments beyond the first `name` are forwarded on. // TODO: better code reuse for this. Repeat code trigger: function(name) { if (this.options[name]) { this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); } } }); /* A "coordinate map" converts pixel coordinates into an associated cell, which has an associated date ------------------------------------------------------------------------------------------------------------------------ Common interface: CoordMap.prototype = { build: function() {}, getCell: function(x, y) {} }; */ /* Coordinate map for a grid component ----------------------------------------------------------------------------------------------------------------------*/ var GridCoordMap = Class.extend({ grid: null, // reference to the Grid rowCoords: null, // array of {top,bottom} objects colCoords: null, // array of {left,right} objects containerEl: null, // container element that all coordinates are constrained to. optionally assigned minX: null, maxX: null, // exclusive minY: null, maxY: null, // exclusive constructor: function(grid) { this.grid = grid; }, // Queries the grid for the coordinates of all the cells build: function() { this.rowCoords = this.grid.computeRowCoords(); this.colCoords = this.grid.computeColCoords(); this.computeBounds(); }, // Clears the coordinates data to free up memory clear: function() { this.rowCoords = null; this.colCoords = null; }, // Given a coordinate of the document, gets the associated cell. If no cell is underneath, returns null getCell: function(x, y) { var rowCoords = this.rowCoords; var colCoords = this.colCoords; var hitRow = null; var hitCol = null; var i, coords; var cell; if (this.inBounds(x, y)) { for (i = 0; i < rowCoords.length; i++) { coords = rowCoords[i]; if (y >= coords.top && y < coords.bottom) { hitRow = i; break; } } for (i = 0; i < colCoords.length; i++) { coords = colCoords[i]; if (x >= coords.left && x < coords.right) { hitCol = i; break; } } if (hitRow !== null && hitCol !== null) { cell = this.grid.getCell(hitRow, hitCol); cell.grid = this.grid; // for DragListener's isCellsEqual. dragging between grids return cell; } } return null; }, // If there is a containerEl, compute the bounds into min/max values computeBounds: function() { var containerOffset; if (this.containerEl) { containerOffset = this.containerEl.offset(); this.minX = containerOffset.left; this.maxX = containerOffset.left + this.containerEl.outerWidth(); this.minY = containerOffset.top; this.maxY = containerOffset.top + this.containerEl.outerHeight(); } }, // Determines if the given coordinates are in bounds. If no `containerEl`, always true inBounds: function(x, y) { if (this.containerEl) { return x >= this.minX && x < this.maxX && y >= this.minY && y < this.maxY; } return true; } }); /* Coordinate map that is a combination of multiple other coordinate maps ----------------------------------------------------------------------------------------------------------------------*/ var ComboCoordMap = Class.extend({ coordMaps: null, // an array of CoordMaps constructor: function(coordMaps) { this.coordMaps = coordMaps; }, // Builds all coordMaps build: function() { var coordMaps = this.coordMaps; var i; for (i = 0; i < coordMaps.length; i++) { coordMaps[i].build(); } }, // Queries all coordMaps for the cell underneath the given coordinates, returning the first result getCell: function(x, y) { var coordMaps = this.coordMaps; var cell = null; var i; for (i = 0; i < coordMaps.length && !cell; i++) { cell = coordMaps[i].getCell(x, y); } return cell; }, // Clears all coordMaps clear: function() { var coordMaps = this.coordMaps; var i; for (i = 0; i < coordMaps.length; i++) { coordMaps[i].clear(); } } }); /* Tracks mouse movements over a CoordMap and raises events about which cell the mouse is over. ----------------------------------------------------------------------------------------------------------------------*/ // TODO: very useful to have a handler that gets called upon cellOut OR when dragging stops (for cleanup) var DragListener = Class.extend({ coordMap: null, options: null, isListening: false, isDragging: false, // the cell the mouse was over when listening started origCell: null, // the cell the mouse is over cell: null, // coordinates of the initial mousedown mouseX0: null, mouseY0: null, // handler attached to the document, bound to the DragListener's `this` mousemoveProxy: null, mouseupProxy: null, scrollEl: null, scrollBounds: null, // { top, bottom, left, right } scrollTopVel: null, // pixels per second scrollLeftVel: null, // pixels per second scrollIntervalId: null, // ID of setTimeout for scrolling animation loop scrollHandlerProxy: null, // this-scoped function for handling when scrollEl is scrolled scrollSensitivity: 30, // pixels from edge for scrolling to start scrollSpeed: 200, // pixels per second, at maximum speed scrollIntervalMs: 50, // millisecond wait between scroll increment constructor: function(coordMap, options) { this.coordMap = coordMap; this.options = options || {}; }, // Call this when the user does a mousedown. Will probably lead to startListening mousedown: function(ev) { if (isPrimaryMouseButton(ev)) { ev.preventDefault(); // prevents native selection in most browsers this.startListening(ev); // start the drag immediately if there is no minimum distance for a drag start if (!this.options.distance) { this.startDrag(ev); } } }, // Call this to start tracking mouse movements startListening: function(ev) { var scrollParent; var cell; if (!this.isListening) { // grab scroll container and attach handler if (ev && this.options.scroll) { scrollParent = getScrollParent($(ev.target)); if (!scrollParent.is(window) && !scrollParent.is(document)) { this.scrollEl = scrollParent; // scope to `this`, and use `debounce` to make sure rapid calls don't happen this.scrollHandlerProxy = debounce($.proxy(this, 'scrollHandler'), 100); this.scrollEl.on('scroll', this.scrollHandlerProxy); } } this.computeCoords(); // relies on `scrollEl` // get info on the initial cell and its coordinates if (ev) { cell = this.getCell(ev); this.origCell = cell; this.mouseX0 = ev.pageX; this.mouseY0 = ev.pageY; } $(document) .on('mousemove', this.mousemoveProxy = $.proxy(this, 'mousemove')) .on('mouseup', this.mouseupProxy = $.proxy(this, 'mouseup')) .on('selectstart', this.preventDefault); // prevents native selection in IE<=8 this.isListening = true; this.trigger('listenStart', ev); } }, // Recomputes the drag-critical positions of elements computeCoords: function() { this.coordMap.build(); this.computeScrollBounds(); }, // Called when the user moves the mouse mousemove: function(ev) { var minDistance; var distanceSq; // current distance from mouseX0/mouseY0, squared if (!this.isDragging) { // if not already dragging... // then start the drag if the minimum distance criteria is met minDistance = this.options.distance || 1; distanceSq = Math.pow(ev.pageX - this.mouseX0, 2) + Math.pow(ev.pageY - this.mouseY0, 2); if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem this.startDrag(ev); } } if (this.isDragging) { this.drag(ev); // report a drag, even if this mousemove initiated the drag } }, // Call this to initiate a legitimate drag. // This function is called internally from this class, but can also be called explicitly from outside startDrag: function(ev) { var cell; if (!this.isListening) { // startDrag must have manually initiated this.startListening(); } if (!this.isDragging) { this.isDragging = true; this.trigger('dragStart', ev); // report the initial cell the mouse is over // especially important if no min-distance and drag starts immediately cell = this.getCell(ev); // this might be different from this.origCell if the min-distance is large if (cell) { this.cellOver(cell); } } }, // Called while the mouse is being moved and when we know a legitimate drag is taking place drag: function(ev) { var cell; if (this.isDragging) { cell = this.getCell(ev); if (!isCellsEqual(cell, this.cell)) { // a different cell than before? if (this.cell) { this.cellOut(); } if (cell) { this.cellOver(cell); } } this.dragScroll(ev); // will possibly cause scrolling } }, // Called when a the mouse has just moved over a new cell cellOver: function(cell) { this.cell = cell; this.trigger('cellOver', cell, isCellsEqual(cell, this.origCell)); }, // Called when the mouse has just moved out of a cell cellOut: function() { if (this.cell) { this.trigger('cellOut', this.cell); this.cell = null; } }, // Called when the user does a mouseup mouseup: function(ev) { this.stopDrag(ev); this.stopListening(ev); }, // Called when the drag is over. Will not cause listening to stop however. // A concluding 'cellOut' event will NOT be triggered. stopDrag: function(ev) { if (this.isDragging) { this.stopScrolling(); this.trigger('dragStop', ev); this.isDragging = false; } }, // Call this to stop listening to the user's mouse events stopListening: function(ev) { if (this.isListening) { // remove the scroll handler if there is a scrollEl if (this.scrollEl) { this.scrollEl.off('scroll', this.scrollHandlerProxy); this.scrollHandlerProxy = null; } $(document) .off('mousemove', this.mousemoveProxy) .off('mouseup', this.mouseupProxy) .off('selectstart', this.preventDefault); this.mousemoveProxy = null; this.mouseupProxy = null; this.isListening = false; this.trigger('listenStop', ev); this.origCell = this.cell = null; this.coordMap.clear(); } }, // Gets the cell underneath the coordinates for the given mouse event getCell: function(ev) { return this.coordMap.getCell(ev.pageX, ev.pageY); }, // Triggers a callback. Calls a function in the option hash of the same name. // Arguments beyond the first `name` are forwarded on. trigger: function(name) { if (this.options[name]) { this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); } }, // Stops a given mouse event from doing it's native browser action. In our case, text selection. preventDefault: function(ev) { ev.preventDefault(); }, /* Scrolling ------------------------------------------------------------------------------------------------------------------*/ // Computes and stores the bounding rectangle of scrollEl computeScrollBounds: function() { var el = this.scrollEl; var offset; if (el) { offset = el.offset(); this.scrollBounds = { top: offset.top, left: offset.left, bottom: offset.top + el.outerHeight(), right: offset.left + el.outerWidth() }; } }, // Called when the dragging is in progress and scrolling should be updated dragScroll: function(ev) { var sensitivity = this.scrollSensitivity; var bounds = this.scrollBounds; var topCloseness, bottomCloseness; var leftCloseness, rightCloseness; var topVel = 0; var leftVel = 0; if (bounds) { // only scroll if scrollEl exists // compute closeness to edges. valid range is from 0.0 - 1.0 topCloseness = (sensitivity - (ev.pageY - bounds.top)) / sensitivity; bottomCloseness = (sensitivity - (bounds.bottom - ev.pageY)) / sensitivity; leftCloseness = (sensitivity - (ev.pageX - bounds.left)) / sensitivity; rightCloseness = (sensitivity - (bounds.right - ev.pageX)) / sensitivity; // translate vertical closeness into velocity. // mouse must be completely in bounds for velocity to happen. if (topCloseness >= 0 && topCloseness <= 1) { topVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up } else if (bottomCloseness >= 0 && bottomCloseness <= 1) { topVel = bottomCloseness * this.scrollSpeed; } // translate horizontal closeness into velocity if (leftCloseness >= 0 && leftCloseness <= 1) { leftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left } else if (rightCloseness >= 0 && rightCloseness <= 1) { leftVel = rightCloseness * this.scrollSpeed; } } this.setScrollVel(topVel, leftVel); }, // Sets the speed-of-scrolling for the scrollEl setScrollVel: function(topVel, leftVel) { this.scrollTopVel = topVel; this.scrollLeftVel = leftVel; this.constrainScrollVel(); // massages into realistic values // if there is non-zero velocity, and an animation loop hasn't already started, then START if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) { this.scrollIntervalId = setInterval( $.proxy(this, 'scrollIntervalFunc'), // scope to `this` this.scrollIntervalMs ); } }, // Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way constrainScrollVel: function() { var el = this.scrollEl; if (this.scrollTopVel < 0) { // scrolling up? if (el.scrollTop() <= 0) { // already scrolled all the way up? this.scrollTopVel = 0; } } else if (this.scrollTopVel > 0) { // scrolling down? if (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down? this.scrollTopVel = 0; } } if (this.scrollLeftVel < 0) { // scrolling left? if (el.scrollLeft() <= 0) { // already scrolled all the left? this.scrollLeftVel = 0; } } else if (this.scrollLeftVel > 0) { // scrolling right? if (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right? this.scrollLeftVel = 0; } } }, // This function gets called during every iteration of the scrolling animation loop scrollIntervalFunc: function() { var el = this.scrollEl; var frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by // change the value of scrollEl's scroll if (this.scrollTopVel) { el.scrollTop(el.scrollTop() + this.scrollTopVel * frac); } if (this.scrollLeftVel) { el.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac); } this.constrainScrollVel(); // since the scroll values changed, recompute the velocities // if scrolled all the way, which causes the vels to be zero, stop the animation loop if (!this.scrollTopVel && !this.scrollLeftVel) { this.stopScrolling(); } }, // Kills any existing scrolling animation loop stopScrolling: function() { if (this.scrollIntervalId) { clearInterval(this.scrollIntervalId); this.scrollIntervalId = null; // when all done with scrolling, recompute positions since they probably changed this.computeCoords(); } }, // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce) scrollHandler: function() { // recompute all coordinates, but *only* if this is *not* part of our scrolling animation if (!this.scrollIntervalId) { this.computeCoords(); } } }); // Returns `true` if the cells are identically equal. `false` otherwise. // They must have the same row, col, and be from the same grid. // Two null values will be considered equal, as two "out of the grid" states are the same. function isCellsEqual(cell1, cell2) { if (!cell1 && !cell2) { return true; } if (cell1 && cell2) { return cell1.grid === cell2.grid && cell1.row === cell2.row && cell1.col === cell2.col; } return false; } /* Creates a clone of an element and lets it track the mouse as it moves ----------------------------------------------------------------------------------------------------------------------*/ var MouseFollower = Class.extend({ options: null, sourceEl: null, // the element that will be cloned and made to look like it is dragging el: null, // the clone of `sourceEl` that will track the mouse parentEl: null, // the element that `el` (the clone) will be attached to // the initial position of el, relative to the offset parent. made to match the initial offset of sourceEl top0: null, left0: null, // the initial position of the mouse mouseY0: null, mouseX0: null, // the number of pixels the mouse has moved from its initial position topDelta: null, leftDelta: null, mousemoveProxy: null, // document mousemove handler, bound to the MouseFollower's `this` isFollowing: false, isHidden: false, isAnimating: false, // doing the revert animation? constructor: function(sourceEl, options) { this.options = options = options || {}; this.sourceEl = sourceEl; this.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent }, // Causes the element to start following the mouse start: function(ev) { if (!this.isFollowing) { this.isFollowing = true; this.mouseY0 = ev.pageY; this.mouseX0 = ev.pageX; this.topDelta = 0; this.leftDelta = 0; if (!this.isHidden) { this.updatePosition(); } $(document).on('mousemove', this.mousemoveProxy = $.proxy(this, 'mousemove')); } }, // Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position. // `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately. stop: function(shouldRevert, callback) { var _this = this; var revertDuration = this.options.revertDuration; function complete() { this.isAnimating = false; _this.destroyEl(); this.top0 = this.left0 = null; // reset state for future updatePosition calls if (callback) { callback(); } } if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time this.isFollowing = false; $(document).off('mousemove', this.mousemoveProxy); if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation? this.isAnimating = true; this.el.animate({ top: this.top0, left: this.left0 }, { duration: revertDuration, complete: complete }); } else { complete(); } } }, // Gets the tracking element. Create it if necessary getEl: function() { var el = this.el; if (!el) { this.sourceEl.width(); // hack to force IE8 to compute correct bounding box el = this.el = this.sourceEl.clone() .css({ position: 'absolute', visibility: '', // in case original element was hidden (commonly through hideEvents()) display: this.isHidden ? 'none' : '', // for when initially hidden margin: 0, right: 'auto', // erase and set width instead bottom: 'auto', // erase and set height instead width: this.sourceEl.width(), // explicit height in case there was a 'right' value height: this.sourceEl.height(), // explicit width in case there was a 'bottom' value opacity: this.options.opacity || '', zIndex: this.options.zIndex }) .appendTo(this.parentEl); } return el; }, // Removes the tracking element if it has already been created destroyEl: function() { if (this.el) { this.el.remove(); this.el = null; } }, // Update the CSS position of the tracking element updatePosition: function() { var sourceOffset; var origin; this.getEl(); // ensure this.el // make sure origin info was computed if (this.top0 === null) { this.sourceEl.width(); // hack to force IE8 to compute correct bounding box sourceOffset = this.sourceEl.offset(); origin = this.el.offsetParent().offset(); this.top0 = sourceOffset.top - origin.top; this.left0 = sourceOffset.left - origin.left; } this.el.css({ top: this.top0 + this.topDelta, left: this.left0 + this.leftDelta }); }, // Gets called when the user moves the mouse mousemove: function(ev) { this.topDelta = ev.pageY - this.mouseY0; this.leftDelta = ev.pageX - this.mouseX0; if (!this.isHidden) { this.updatePosition(); } }, // Temporarily makes the tracking element invisible. Can be called before following starts hide: function() { if (!this.isHidden) { this.isHidden = true; if (this.el) { this.el.hide(); } } }, // Show the tracking element after it has been temporarily hidden show: function() { if (this.isHidden) { this.isHidden = false; this.updatePosition(); this.getEl().show(); } } }); /* A utility class for rendering <tr> rows. ----------------------------------------------------------------------------------------------------------------------*/ // It leverages methods of the subclass and the View to determine custom rendering behavior for each row "type" // (such as highlight rows, day rows, helper rows, etc). var RowRenderer = Class.extend({ view: null, // a View object isRTL: null, // shortcut to the view's isRTL option cellHtml: '<td/>', // plain default HTML used for a cell when no other is available constructor: function(view) { this.view = view; this.isRTL = view.opt('isRTL'); }, // Renders the HTML for a row, leveraging custom cell-HTML-renderers based on the `rowType`. // Also applies the "intro" and "outro" cells, which are specified by the subclass and views. // `row` is an optional row number. rowHtml: function(rowType, row) { var renderCell = this.getHtmlRenderer('cell', rowType); var rowCellHtml = ''; var col; var cell; row = row || 0; for (col = 0; col < this.colCnt; col++) { cell = this.getCell(row, col); rowCellHtml += renderCell(cell); } rowCellHtml = this.bookendCells(rowCellHtml, rowType, row); // apply intro and outro return '<tr>' + rowCellHtml + '</tr>'; }, // Applies the "intro" and "outro" HTML to the given cells. // Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro. // `cells` can be an HTML string of <td>'s or a jQuery <tr> element // `row` is an optional row number. bookendCells: function(cells, rowType, row) { var intro = this.getHtmlRenderer('intro', rowType)(row || 0); var outro = this.getHtmlRenderer('outro', rowType)(row || 0); var prependHtml = this.isRTL ? outro : intro; var appendHtml = this.isRTL ? intro : outro; if (typeof cells === 'string') { return prependHtml + cells + appendHtml; } else { // a jQuery <tr> element return cells.prepend(prependHtml).append(appendHtml); } }, // Returns an HTML-rendering function given a specific `rendererName` (like cell, intro, or outro) and a specific // `rowType` (like day, eventSkeleton, helperSkeleton), which is optional. // If a renderer for the specific rowType doesn't exist, it will fall back to a generic renderer. // We will query the View object first for any custom rendering functions, then the methods of the subclass. getHtmlRenderer: function(rendererName, rowType) { var view = this.view; var generalName; // like "cellHtml" var specificName; // like "dayCellHtml". based on rowType var provider; // either the View or the RowRenderer subclass, whichever provided the method var renderer; generalName = rendererName + 'Html'; if (rowType) { specificName = rowType + capitaliseFirstLetter(rendererName) + 'Html'; } if (specificName && (renderer = view[specificName])) { provider = view; } else if (specificName && (renderer = this[specificName])) { provider = this; } else if ((renderer = view[generalName])) { provider = view; } else if ((renderer = this[generalName])) { provider = this; } if (typeof renderer === 'function') { return function() { return renderer.apply(provider, arguments) || ''; // use correct `this` and always return a string }; } // the rendered can be a plain string as well. if not specified, always an empty string. return function() { return renderer || ''; }; } }); /* An abstract class comprised of a "grid" of cells that each represent a specific datetime ----------------------------------------------------------------------------------------------------------------------*/ var Grid = fc.Grid = RowRenderer.extend({ start: null, // the date of the first cell end: null, // the date after the last cell rowCnt: 0, // number of rows colCnt: 0, // number of cols rowData: null, // array of objects, holding misc data for each row colData: null, // array of objects, holding misc data for each column el: null, // the containing element coordMap: null, // a GridCoordMap that converts pixel values to datetimes elsByFill: null, // a hash of jQuery element sets used for rendering each fill. Keyed by fill name. documentDragStartProxy: null, // binds the Grid's scope to documentDragStart (in DayGrid.events) // derived from options colHeadFormat: null, // TODO: move to another class. not applicable to all Grids eventTimeFormat: null, displayEventEnd: null, constructor: function() { RowRenderer.apply(this, arguments); // call the super-constructor this.coordMap = new GridCoordMap(this); this.elsByFill = {}; this.documentDragStartProxy = $.proxy(this, 'documentDragStart'); }, // Renders the grid into the `el` element. // Subclasses should override and call this super-method when done. render: function() { this.bindHandlers(); }, // Called when the grid's resources need to be cleaned up destroy: function() { this.unbindHandlers(); }, /* Options ------------------------------------------------------------------------------------------------------------------*/ // Generates the format string used for the text in column headers, if not explicitly defined by 'columnFormat' // TODO: move to another class. not applicable to all Grids computeColHeadFormat: function() { // subclasses must implement if they want to use headHtml() }, // Generates the format string used for event time text, if not explicitly defined by 'timeFormat' computeEventTimeFormat: function() { return this.view.opt('smallTimeFormat'); }, // Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventEnd' computeDisplayEventEnd: function() { return false; }, /* Dates ------------------------------------------------------------------------------------------------------------------*/ // Tells the grid about what period of time to display. Grid will subsequently compute dates for cell system. setRange: function(range) { var view = this.view; this.start = range.start.clone(); this.end = range.end.clone(); this.rowData = []; this.colData = []; this.updateCells(); // Populate option-derived settings. Look for override first, then compute if necessary. this.colHeadFormat = view.opt('columnFormat') || this.computeColHeadFormat(); this.eventTimeFormat = view.opt('timeFormat') || this.computeEventTimeFormat(); this.displayEventEnd = view.opt('displayEventEnd'); if (this.displayEventEnd == null) { this.displayEventEnd = this.computeDisplayEventEnd(); } }, // Responsible for setting rowCnt/colCnt and any other row/col data updateCells: function() { // subclasses must implement }, // Converts a range with an inclusive `start` and an exclusive `end` into an array of segment objects rangeToSegs: function(range) { // subclasses must implement }, /* Cells ------------------------------------------------------------------------------------------------------------------*/ // NOTE: columns are ordered left-to-right // Gets an object containing row/col number, misc data, and range information about the cell. // Accepts row/col values, an object with row/col properties, or a single-number offset from the first cell. getCell: function(row, col) { var cell; if (col == null) { if (typeof row === 'number') { // a single-number offset col = row % this.colCnt; row = Math.floor(row / this.colCnt); } else { // an object with row/col properties col = row.col; row = row.row; } } cell = { row: row, col: col }; $.extend(cell, this.getRowData(row), this.getColData(col)); $.extend(cell, this.computeCellRange(cell)); return cell; }, // Given a cell object with index and misc data, generates a range object computeCellRange: function(cell) { // subclasses must implement }, // Retrieves misc data about the given row getRowData: function(row) { return this.rowData[row] || {}; }, // Retrieves misc data baout the given column getColData: function(col) { return this.colData[col] || {}; }, // Retrieves the element representing the given row getRowEl: function(row) { // subclasses should implement if leveraging the default getCellDayEl() or computeRowCoords() }, // Retrieves the element representing the given column getColEl: function(col) { // subclasses should implement if leveraging the default getCellDayEl() or computeColCoords() }, // Given a cell object, returns the element that represents the cell's whole-day getCellDayEl: function(cell) { return this.getColEl(cell.col) || this.getRowEl(cell.row); }, /* Cell Coordinates ------------------------------------------------------------------------------------------------------------------*/ // Computes the top/bottom coordinates of all rows. // By default, queries the dimensions of the element provided by getRowEl(). computeRowCoords: function() { var items = []; var i, el; var item; for (i = 0; i < this.rowCnt; i++) { el = this.getRowEl(i); item = { top: el.offset().top }; if (i > 0) { items[i - 1].bottom = item.top; } items.push(item); } item.bottom = item.top + el.outerHeight(); return items; }, // Computes the left/right coordinates of all rows. // By default, queries the dimensions of the element provided by getColEl(). computeColCoords: function() { var items = []; var i, el; var item; for (i = 0; i < this.colCnt; i++) { el = this.getColEl(i); item = { left: el.offset().left }; if (i > 0) { items[i - 1].right = item.left; } items.push(item); } item.right = item.left + el.outerWidth(); return items; }, /* Handlers ------------------------------------------------------------------------------------------------------------------*/ // Attaches handlers to DOM bindHandlers: function() { var _this = this; // attach a handler to the grid's root element. // we don't need to clean up in unbindHandlers or destroy, because when jQuery removes the element from the // DOM it automatically unregisters the handlers. this.el.on('mousedown', function(ev) { if ( !$(ev.target).is('.fc-event-container *, .fc-more') && // not an an event element, or "more.." link !$(ev.target).closest('.fc-popover').length // not on a popover (like the "more.." events one) ) { _this.dayMousedown(ev); } }); // attach event-element-related handlers. in Grid.events // same garbage collection note as above. this.bindSegHandlers(); $(document).on('dragstart', this.documentDragStartProxy); // jqui drag }, // Unattaches handlers from the DOM unbindHandlers: function() { $(document).off('dragstart', this.documentDragStartProxy); // jqui drag }, // Process a mousedown on an element that represents a day. For day clicking and selecting. dayMousedown: function(ev) { var _this = this; var view = this.view; var isSelectable = view.opt('selectable'); var dayClickCell; // null if invalid dayClick var selectionRange; // null if invalid selection // this listener tracks a mousedown on a day element, and a subsequent drag. // if the drag ends on the same day, it is a 'dayClick'. // if 'selectable' is enabled, this listener also detects selections. var dragListener = new DragListener(this.coordMap, { //distance: 5, // needs more work if we want dayClick to fire correctly scroll: view.opt('dragScroll'), dragStart: function() { view.unselect(); // since we could be rendering a new selection, we want to clear any old one }, cellOver: function(cell, isOrig) { var origCell = dragListener.origCell; if (origCell) { // click needs to have started on a cell dayClickCell = isOrig ? cell : null; // single-cell selection is a day click if (isSelectable) { selectionRange = _this.computeSelection(origCell, cell); if (selectionRange) { _this.renderSelection(selectionRange); } else { disableCursor(); } } } }, cellOut: function(cell) { dayClickCell = null; selectionRange = null; _this.destroySelection(); enableCursor(); }, listenStop: function(ev) { if (dayClickCell) { view.trigger('dayClick', _this.getCellDayEl(dayClickCell), dayClickCell.start, ev); } if (selectionRange) { // the selection will already have been rendered. just report it view.reportSelection(selectionRange, ev); } enableCursor(); } }); dragListener.mousedown(ev); // start listening, which will eventually initiate a dragStart }, /* Event Helper ------------------------------------------------------------------------------------------------------------------*/ // TODO: should probably move this to Grid.events, like we did event dragging / resizing // Renders a mock event over the given range. // The range's end can be null, in which case the mock event that is rendered will have a null end time. // `sourceSeg` is the internal segment object involved in the drag. If null, something external is dragging. renderRangeHelper: function(range, sourceSeg) { var fakeEvent; fakeEvent = sourceSeg ? createObject(sourceSeg.event) : {}; // mask the original event object if possible fakeEvent.start = range.start.clone(); fakeEvent.end = range.end ? range.end.clone() : null; fakeEvent.allDay = null; // force it to be freshly computed by normalizeEventDateProps this.view.calendar.normalizeEventDateProps(fakeEvent); // this extra className will be useful for differentiating real events from mock events in CSS fakeEvent.className = (fakeEvent.className || []).concat('fc-helper'); // if something external is being dragged in, don't render a resizer if (!sourceSeg) { fakeEvent.editable = false; } this.renderHelper(fakeEvent, sourceSeg); // do the actual rendering }, // Renders a mock event renderHelper: function(event, sourceSeg) { // subclasses must implement }, // Unrenders a mock event destroyHelper: function() { // subclasses must implement }, /* Selection ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of a selection. Will highlight by default but can be overridden by subclasses. renderSelection: function(range) { this.renderHighlight(range); }, // Unrenders any visual indications of a selection. Will unrender a highlight by default. destroySelection: function() { this.destroyHighlight(); }, // Given the first and last cells of a selection, returns a range object. // Will return something falsy if the selection is invalid (when outside of selectionConstraint for example). // Subclasses can override and provide additional data in the range object. Will be passed to renderSelection(). computeSelection: function(firstCell, lastCell) { var dates = [ firstCell.start, firstCell.end, lastCell.start, lastCell.end ]; var range; dates.sort(compareNumbers); // sorts chronologically. works with Moments range = { start: dates[0].clone(), end: dates[3].clone() }; if (!this.view.calendar.isSelectionRangeAllowed(range)) { return null; } return range; }, /* Highlight ------------------------------------------------------------------------------------------------------------------*/ // Renders an emphasis on the given date range. `start` is inclusive. `end` is exclusive. renderHighlight: function(range) { this.renderFill('highlight', this.rangeToSegs(range)); }, // Unrenders the emphasis on a date range destroyHighlight: function() { this.destroyFill('highlight'); }, // Generates an array of classNames for rendering the highlight. Used by the fill system. highlightSegClasses: function() { return [ 'fc-highlight' ]; }, /* Fill System (highlight, background events, business hours) ------------------------------------------------------------------------------------------------------------------*/ // Renders a set of rectangles over the given segments of time. // Returns a subset of segs, the segs that were actually rendered. // Responsible for populating this.elsByFill. TODO: better API for expressing this requirement renderFill: function(type, segs) { // subclasses must implement }, // Unrenders a specific type of fill that is currently rendered on the grid destroyFill: function(type) { var el = this.elsByFill[type]; if (el) { el.remove(); delete this.elsByFill[type]; } }, // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types. // Only returns segments that successfully rendered. // To be harnessed by renderFill (implemented by subclasses). // Analagous to renderFgSegEls. renderFillSegEls: function(type, segs) { var _this = this; var segElMethod = this[type + 'SegEl']; var html = ''; var renderedSegs = []; var i; if (segs.length) { // build a large concatenation of segment HTML for (i = 0; i < segs.length; i++) { html += this.fillSegHtml(type, segs[i]); } // Grab individual elements from the combined HTML string. Use each as the default rendering. // Then, compute the 'el' for each segment. $(html).each(function(i, node) { var seg = segs[i]; var el = $(node); // allow custom filter methods per-type if (segElMethod) { el = segElMethod.call(_this, seg, el); } if (el) { // custom filters did not cancel the render el = $(el); // allow custom filter to return raw DOM node // correct element type? (would be bad if a non-TD were inserted into a table for example) if (el.is(_this.fillSegTag)) { seg.el = el; renderedSegs.push(seg); } } }); } return renderedSegs; }, fillSegTag: 'div', // subclasses can override // Builds the HTML needed for one fill segment. Generic enought o work with different types. fillSegHtml: function(type, seg) { var classesMethod = this[type + 'SegClasses']; // custom hooks per-type var stylesMethod = this[type + 'SegStyles']; // var classes = classesMethod ? classesMethod.call(this, seg) : []; var styles = stylesMethod ? stylesMethod.call(this, seg) : ''; // a semi-colon separated CSS property string return '<' + this.fillSegTag + (classes.length ? ' class="' + classes.join(' ') + '"' : '') + (styles ? ' style="' + styles + '"' : '') + ' />'; }, /* Generic rendering utilities for subclasses ------------------------------------------------------------------------------------------------------------------*/ // Renders a day-of-week header row. // TODO: move to another class. not applicable to all Grids headHtml: function() { return '' + '<div class="fc-row ' + this.view.widgetHeaderClass + '">' + '<table>' + '<thead>' + this.rowHtml('head') + // leverages RowRenderer '</thead>' + '</table>' + '</div>'; }, // Used by the `headHtml` method, via RowRenderer, for rendering the HTML of a day-of-week header cell // TODO: move to another class. not applicable to all Grids headCellHtml: function(cell) { var view = this.view; var date = cell.start; return '' + '<th class="fc-day-header ' + view.widgetHeaderClass + ' fc-' + dayIDs[date.day()] + '">' + htmlEscape(date.format(this.colHeadFormat)) + '</th>'; }, // Renders the HTML for a single-day background cell bgCellHtml: function(cell) { var view = this.view; var date = cell.start; var classes = this.getDayClasses(date); classes.unshift('fc-day', view.widgetContentClass); return '<td class="' + classes.join(' ') + '"' + ' data-date="' + date.format('YYYY-MM-DD') + '"' + // if date has a time, won't format it '></td>'; }, // Computes HTML classNames for a single-day cell getDayClasses: function(date) { var view = this.view; var today = view.calendar.getNow().stripTime(); var classes = [ 'fc-' + dayIDs[date.day()] ]; if ( view.name === 'month' && date.month() != view.intervalStart.month() ) { classes.push('fc-other-month'); } if (date.isSame(today, 'day')) { classes.push( 'fc-today', view.highlightStateClass ); } else if (date < today) { classes.push('fc-past'); } else { classes.push('fc-future'); } return classes; } }); /* Event-rendering and event-interaction methods for the abstract Grid class ----------------------------------------------------------------------------------------------------------------------*/ Grid.mixin({ mousedOverSeg: null, // the segment object the user's mouse is over. null if over nothing isDraggingSeg: false, // is a segment being dragged? boolean isResizingSeg: false, // is a segment being resized? boolean segs: null, // the event segments currently rendered in the grid // Renders the given events onto the grid renderEvents: function(events) { var segs = this.eventsToSegs(events); var bgSegs = []; var fgSegs = []; var i, seg; for (i = 0; i < segs.length; i++) { seg = segs[i]; if (isBgEvent(seg.event)) { bgSegs.push(seg); } else { fgSegs.push(seg); } } // Render each different type of segment. // Each function may return a subset of the segs, segs that were actually rendered. bgSegs = this.renderBgSegs(bgSegs) || bgSegs; fgSegs = this.renderFgSegs(fgSegs) || fgSegs; this.segs = bgSegs.concat(fgSegs); }, // Unrenders all events currently rendered on the grid destroyEvents: function() { this.triggerSegMouseout(); // trigger an eventMouseout if user's mouse is over an event this.destroyFgSegs(); this.destroyBgSegs(); this.segs = null; }, // Retrieves all rendered segment objects currently rendered on the grid getEventSegs: function() { return this.segs || []; }, /* Foreground Segment Rendering ------------------------------------------------------------------------------------------------------------------*/ // Renders foreground event segments onto the grid. May return a subset of segs that were rendered. renderFgSegs: function(segs) { // subclasses must implement }, // Unrenders all currently rendered foreground segments destroyFgSegs: function() { // subclasses must implement }, // Renders and assigns an `el` property for each foreground event segment. // Only returns segments that successfully rendered. // A utility that subclasses may use. renderFgSegEls: function(segs, disableResizing) { var view = this.view; var html = ''; var renderedSegs = []; var i; if (segs.length) { // don't build an empty html string // build a large concatenation of event segment HTML for (i = 0; i < segs.length; i++) { html += this.fgSegHtml(segs[i], disableResizing); } // Grab individual elements from the combined HTML string. Use each as the default rendering. // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false. $(html).each(function(i, node) { var seg = segs[i]; var el = view.resolveEventEl(seg.event, $(node)); if (el) { el.data('fc-seg', seg); // used by handlers seg.el = el; renderedSegs.push(seg); } }); } return renderedSegs; }, // Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls() fgSegHtml: function(seg, disableResizing) { // subclasses should implement }, /* Background Segment Rendering ------------------------------------------------------------------------------------------------------------------*/ // Renders the given background event segments onto the grid. // Returns a subset of the segs that were actually rendered. renderBgSegs: function(segs) { return this.renderFill('bgEvent', segs); }, // Unrenders all the currently rendered background event segments destroyBgSegs: function() { this.destroyFill('bgEvent'); }, // Renders a background event element, given the default rendering. Called by the fill system. bgEventSegEl: function(seg, el) { return this.view.resolveEventEl(seg.event, el); // will filter through eventRender }, // Generates an array of classNames to be used for the default rendering of a background event. // Called by the fill system. bgEventSegClasses: function(seg) { var event = seg.event; var source = event.source || {}; return [ 'fc-bgevent' ].concat( event.className, source.className || [] ); }, // Generates a semicolon-separated CSS string to be used for the default rendering of a background event. // Called by the fill system. // TODO: consolidate with getEventSkinCss? bgEventSegStyles: function(seg) { var view = this.view; var event = seg.event; var source = event.source || {}; var eventColor = event.color; var sourceColor = source.color; var optionColor = view.opt('eventColor'); var backgroundColor = event.backgroundColor || eventColor || source.backgroundColor || sourceColor || view.opt('eventBackgroundColor') || optionColor; if (backgroundColor) { return 'background-color:' + backgroundColor; } return ''; }, // Generates an array of classNames to be used for the rendering business hours overlay. Called by the fill system. businessHoursSegClasses: function(seg) { return [ 'fc-nonbusiness', 'fc-bgevent' ]; }, /* Handlers ------------------------------------------------------------------------------------------------------------------*/ // Attaches event-element-related handlers to the container element and leverage bubbling bindSegHandlers: function() { var _this = this; var view = this.view; $.each( { mouseenter: function(seg, ev) { _this.triggerSegMouseover(seg, ev); }, mouseleave: function(seg, ev) { _this.triggerSegMouseout(seg, ev); }, click: function(seg, ev) { return view.trigger('eventClick', this, seg.event, ev); // can return `false` to cancel }, mousedown: function(seg, ev) { if ($(ev.target).is('.fc-resizer') && view.isEventResizable(seg.event)) { _this.segResizeMousedown(seg, ev); } else if (view.isEventDraggable(seg.event)) { _this.segDragMousedown(seg, ev); } } }, function(name, func) { // attach the handler to the container element and only listen for real event elements via bubbling _this.el.on(name, '.fc-event-container > *', function(ev) { var seg = $(this).data('fc-seg'); // grab segment data. put there by View::renderEvents // only call the handlers if there is not a drag/resize in progress if (seg && !_this.isDraggingSeg && !_this.isResizingSeg) { return func.call(this, seg, ev); // `this` will be the event element } }); } ); }, // Updates internal state and triggers handlers for when an event element is moused over triggerSegMouseover: function(seg, ev) { if (!this.mousedOverSeg) { this.mousedOverSeg = seg; this.view.trigger('eventMouseover', seg.el[0], seg.event, ev); } }, // Updates internal state and triggers handlers for when an event element is moused out. // Can be given no arguments, in which case it will mouseout the segment that was previously moused over. triggerSegMouseout: function(seg, ev) { ev = ev || {}; // if given no args, make a mock mouse event if (this.mousedOverSeg) { seg = seg || this.mousedOverSeg; // if given no args, use the currently moused-over segment this.mousedOverSeg = null; this.view.trigger('eventMouseout', seg.el[0], seg.event, ev); } }, /* Event Dragging ------------------------------------------------------------------------------------------------------------------*/ // Called when the user does a mousedown on an event, which might lead to dragging. // Generic enough to work with any type of Grid. segDragMousedown: function(seg, ev) { var _this = this; var view = this.view; var el = seg.el; var event = seg.event; var dropLocation; // A clone of the original element that will move with the mouse var mouseFollower = new MouseFollower(seg.el, { parentEl: view.el, opacity: view.opt('dragOpacity'), revertDuration: view.opt('dragRevertDuration'), zIndex: 2 // one above the .fc-view }); // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents // of the view. var dragListener = new DragListener(view.coordMap, { distance: 5, scroll: view.opt('dragScroll'), listenStart: function(ev) { mouseFollower.hide(); // don't show until we know this is a real drag mouseFollower.start(ev); }, dragStart: function(ev) { _this.triggerSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported _this.isDraggingSeg = true; view.hideEvent(event); // hide all event segments. our mouseFollower will take over view.trigger('eventDragStart', el[0], event, ev, {}); // last argument is jqui dummy }, cellOver: function(cell, isOrig) { var origCell = seg.cell || dragListener.origCell; // starting cell could be forced (DayGrid.limit) dropLocation = _this.computeEventDrop(origCell, cell, event); if (dropLocation) { if (view.renderDrag(dropLocation, seg)) { // have the subclass render a visual indication mouseFollower.hide(); // if the subclass is already using a mock event "helper", hide our own } else { mouseFollower.show(); } if (isOrig) { dropLocation = null; // needs to have moved cells to be a valid drop } } else { // have the helper follow the mouse (no snapping) with a warning-style cursor mouseFollower.show(); disableCursor(); } }, cellOut: function() { // called before mouse moves to a different cell OR moved out of all cells dropLocation = null; view.destroyDrag(); // unrender whatever was done in renderDrag mouseFollower.show(); // show in case we are moving out of all cells enableCursor(); }, dragStop: function(ev) { // do revert animation if hasn't changed. calls a callback when finished (whether animation or not) mouseFollower.stop(!dropLocation, function() { _this.isDraggingSeg = false; view.destroyDrag(); view.showEvent(event); view.trigger('eventDragStop', el[0], event, ev, {}); // last argument is jqui dummy if (dropLocation) { view.reportEventDrop(event, dropLocation, el, ev); } }); enableCursor(); }, listenStop: function() { mouseFollower.stop(); // put in listenStop in case there was a mousedown but the drag never started } }); dragListener.mousedown(ev); // start listening, which will eventually lead to a dragStart }, // Given the cell an event drag began, and the cell event was dropped, calculates the new start/end/allDay // values for the event. Subclasses may override and set additional properties to be used by renderDrag. // A falsy returned value indicates an invalid drop. computeEventDrop: function(startCell, endCell, event) { var dragStart = startCell.start; var dragEnd = endCell.start; var delta; var newStart; var newEnd; var newAllDay; var dropLocation; if (dragStart.hasTime() === dragEnd.hasTime()) { delta = diffDayTime(dragEnd, dragStart); newStart = event.start.clone().add(delta); if (event.end === null) { // do we need to compute an end? newEnd = null; } else { newEnd = event.end.clone().add(delta); } newAllDay = event.allDay; // keep it the same } else { // if switching from day <-> timed, start should be reset to the dropped date, and the end cleared newStart = dragEnd.clone(); newEnd = null; // end should be cleared newAllDay = !dragEnd.hasTime(); } dropLocation = { start: newStart, end: newEnd, allDay: newAllDay }; if (!this.view.calendar.isEventRangeAllowed(dropLocation, event)) { return null; } return dropLocation; }, /* External Element Dragging ------------------------------------------------------------------------------------------------------------------*/ // Called when a jQuery UI drag is initiated anywhere in the DOM documentDragStart: function(ev, ui) { var view = this.view; var el; var accept; if (view.opt('droppable')) { // only listen if this setting is on el = $(ev.target); // Test that the dragged element passes the dropAccept selector or filter function. // FYI, the default is "*" (matches all) accept = view.opt('dropAccept'); if ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) { this.startExternalDrag(el, ev, ui); } } }, // Called when a jQuery UI drag starts and it needs to be monitored for cell dropping startExternalDrag: function(el, ev, ui) { var _this = this; var meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create var dragListener; var dropLocation; // a null value signals an unsuccessful drag // listener that tracks mouse movement over date-associated pixel regions dragListener = new DragListener(this.coordMap, { cellOver: function(cell) { dropLocation = _this.computeExternalDrop(cell, meta); if (dropLocation) { _this.renderDrag(dropLocation); // called without a seg parameter } else { // invalid drop cell disableCursor(); } }, cellOut: function() { dropLocation = null; // signal unsuccessful _this.destroyDrag(); enableCursor(); } }); // gets called, only once, when jqui drag is finished $(document).one('dragstop', function(ev, ui) { _this.destroyDrag(); enableCursor(); if (dropLocation) { // element was dropped on a valid date/time cell _this.view.reportExternalDrop(meta, dropLocation, el, ev, ui); } }); dragListener.startDrag(ev); // start listening immediately }, // Given a cell to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object), // returns start/end dates for the event that would result from the hypothetical drop. end might be null. // Returning a null value signals an invalid drop cell. computeExternalDrop: function(cell, meta) { var dropLocation = { start: cell.start.clone(), end: null }; // if dropped on an all-day cell, and element's metadata specified a time, set it if (meta.startTime && !dropLocation.start.hasTime()) { dropLocation.start.time(meta.startTime); } if (meta.duration) { dropLocation.end = dropLocation.start.clone().add(meta.duration); } if (!this.view.calendar.isExternalDropRangeAllowed(dropLocation, meta.eventProps)) { return null; } return dropLocation; }, /* Drag Rendering (for both events and an external elements) ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event or external element being dragged. // `dropLocation` contains hypothetical start/end/allDay values the event would have if dropped. end can be null. // `seg` is the internal segment object that is being dragged. If dragging an external element, `seg` is null. // A truthy returned value indicates this method has rendered a helper element. renderDrag: function(dropLocation, seg) { // subclasses must implement }, // Unrenders a visual indication of an event or external element being dragged destroyDrag: function() { // subclasses must implement }, /* Resizing ------------------------------------------------------------------------------------------------------------------*/ // Called when the user does a mousedown on an event's resizer, which might lead to resizing. // Generic enough to work with any type of Grid. segResizeMousedown: function(seg, ev) { var _this = this; var view = this.view; var calendar = view.calendar; var el = seg.el; var event = seg.event; var start = event.start; var oldEnd = calendar.getEventEnd(event); var newEnd; // falsy if invalid resize var dragListener; function destroy() { // resets the rendering to show the original event _this.destroyEventResize(); view.showEvent(event); enableCursor(); } // Tracks mouse movement over the *grid's* coordinate map dragListener = new DragListener(this.coordMap, { distance: 5, scroll: view.opt('dragScroll'), dragStart: function(ev) { _this.triggerSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported _this.isResizingSeg = true; view.trigger('eventResizeStart', el[0], event, ev, {}); // last argument is jqui dummy }, cellOver: function(cell) { newEnd = cell.end; if (!newEnd.isAfter(start)) { // was end moved before start? newEnd = start.clone().add( // make the event span a single slot diffDayTime(cell.end, cell.start) // assumes all slot durations are the same ); } if (newEnd.isSame(oldEnd)) { newEnd = null; } else if (!calendar.isEventRangeAllowed({ start: start, end: newEnd }, event)) { newEnd = null; disableCursor(); } else { _this.renderEventResize({ start: start, end: newEnd }, seg); view.hideEvent(event); } }, cellOut: function() { // called before mouse moves to a different cell OR moved out of all cells newEnd = null; destroy(); }, dragStop: function(ev) { _this.isResizingSeg = false; destroy(); view.trigger('eventResizeStop', el[0], event, ev, {}); // last argument is jqui dummy if (newEnd) { // valid date to resize to? view.reportEventResize(event, newEnd, el, ev); } } }); dragListener.mousedown(ev); // start listening, which will eventually lead to a dragStart }, // Renders a visual indication of an event being resized. // `range` has the updated dates of the event. `seg` is the original segment object involved in the drag. renderEventResize: function(range, seg) { // subclasses must implement }, // Unrenders a visual indication of an event being resized. destroyEventResize: function() { // subclasses must implement }, /* Rendering Utils ------------------------------------------------------------------------------------------------------------------*/ // Compute the text that should be displayed on an event's element. // `range` can be the Event object itself, or something range-like, with at least a `start`. // The `timeFormat` options and the grid's default format is used, but `formatStr` can override. getEventTimeText: function(range, formatStr) { formatStr = formatStr || this.eventTimeFormat; if (range.end && this.displayEventEnd) { return this.view.formatRange(range, formatStr); } else { return range.start.format(formatStr); } }, // Generic utility for generating the HTML classNames for an event segment's element getSegClasses: function(seg, isDraggable, isResizable) { var event = seg.event; var classes = [ 'fc-event', seg.isStart ? 'fc-start' : 'fc-not-start', seg.isEnd ? 'fc-end' : 'fc-not-end' ].concat( event.className, event.source ? event.source.className : [] ); if (isDraggable) { classes.push('fc-draggable'); } if (isResizable) { classes.push('fc-resizable'); } return classes; }, // Utility for generating a CSS string with all the event skin-related properties getEventSkinCss: function(event) { var view = this.view; var source = event.source || {}; var eventColor = event.color; var sourceColor = source.color; var optionColor = view.opt('eventColor'); var backgroundColor = event.backgroundColor || eventColor || source.backgroundColor || sourceColor || view.opt('eventBackgroundColor') || optionColor; var borderColor = event.borderColor || eventColor || source.borderColor || sourceColor || view.opt('eventBorderColor') || optionColor; var textColor = event.textColor || source.textColor || view.opt('eventTextColor'); var statements = []; if (backgroundColor) { statements.push('background-color:' + backgroundColor); } if (borderColor) { statements.push('border-color:' + borderColor); } if (textColor) { statements.push('color:' + textColor); } return statements.join(';'); }, /* Converting events -> ranges -> segs ------------------------------------------------------------------------------------------------------------------*/ // Converts an array of event objects into an array of event segment objects. // A custom `rangeToSegsFunc` may be given for arbitrarily slicing up events. eventsToSegs: function(events, rangeToSegsFunc) { var eventRanges = this.eventsToRanges(events); var segs = []; var i; for (i = 0; i < eventRanges.length; i++) { segs.push.apply( segs, this.eventRangeToSegs(eventRanges[i], rangeToSegsFunc) ); } return segs; }, // Converts an array of events into an array of "range" objects. // A "range" object is a plain object with start/end properties denoting the time it covers. Also an event property. // For "normal" events, this will be identical to the event's start/end, but for "inverse-background" events, // will create an array of ranges that span the time *not* covered by the given event. eventsToRanges: function(events) { var _this = this; var eventsById = groupEventsById(events); var ranges = []; // group by ID so that related inverse-background events can be rendered together $.each(eventsById, function(id, eventGroup) { if (eventGroup.length) { ranges.push.apply( ranges, isInverseBgEvent(eventGroup[0]) ? _this.eventsToInverseRanges(eventGroup) : _this.eventsToNormalRanges(eventGroup) ); } }); return ranges; }, // Converts an array of "normal" events (not inverted rendering) into a parallel array of ranges eventsToNormalRanges: function(events) { var calendar = this.view.calendar; var ranges = []; var i, event; var eventStart, eventEnd; for (i = 0; i < events.length; i++) { event = events[i]; // make copies and normalize by stripping timezone eventStart = event.start.clone().stripZone(); eventEnd = calendar.getEventEnd(event).stripZone(); ranges.push({ event: event, start: eventStart, end: eventEnd, eventStartMS: +eventStart, eventDurationMS: eventEnd - eventStart }); } return ranges; }, // Converts an array of events, with inverse-background rendering, into an array of range objects. // The range objects will cover all the time NOT covered by the events. eventsToInverseRanges: function(events) { var view = this.view; var viewStart = view.start.clone().stripZone(); // normalize timezone var viewEnd = view.end.clone().stripZone(); // normalize timezone var normalRanges = this.eventsToNormalRanges(events); // will give us normalized dates we can use w/o copies var inverseRanges = []; var event0 = events[0]; // assign this to each range's `.event` var start = viewStart; // the end of the previous range. the start of the new range var i, normalRange; // ranges need to be in order. required for our date-walking algorithm normalRanges.sort(compareNormalRanges); for (i = 0; i < normalRanges.length; i++) { normalRange = normalRanges[i]; // add the span of time before the event (if there is any) if (normalRange.start > start) { // compare millisecond time (skip any ambig logic) inverseRanges.push({ event: event0, start: start, end: normalRange.start }); } start = normalRange.end; } // add the span of time after the last event (if there is any) if (start < viewEnd) { // compare millisecond time (skip any ambig logic) inverseRanges.push({ event: event0, start: start, end: viewEnd }); } return inverseRanges; }, // Slices the given event range into one or more segment objects. // A `rangeToSegsFunc` custom slicing function can be given. eventRangeToSegs: function(eventRange, rangeToSegsFunc) { var segs; var i, seg; if (rangeToSegsFunc) { segs = rangeToSegsFunc(eventRange); } else { segs = this.rangeToSegs(eventRange); // defined by the subclass } for (i = 0; i < segs.length; i++) { seg = segs[i]; seg.event = eventRange.event; seg.eventStartMS = eventRange.eventStartMS; seg.eventDurationMS = eventRange.eventDurationMS; } return segs; } }); /* Utilities ----------------------------------------------------------------------------------------------------------------------*/ function isBgEvent(event) { // returns true if background OR inverse-background var rendering = getEventRendering(event); return rendering === 'background' || rendering === 'inverse-background'; } function isInverseBgEvent(event) { return getEventRendering(event) === 'inverse-background'; } function getEventRendering(event) { return firstDefined((event.source || {}).rendering, event.rendering); } function groupEventsById(events) { var eventsById = {}; var i, event; for (i = 0; i < events.length; i++) { event = events[i]; (eventsById[event._id] || (eventsById[event._id] = [])).push(event); } return eventsById; } // A cmp function for determining which non-inverted "ranges" (see above) happen earlier function compareNormalRanges(range1, range2) { return range1.eventStartMS - range2.eventStartMS; // earlier ranges go first } // A cmp function for determining which segments should take visual priority // DOES NOT WORK ON INVERTED BACKGROUND EVENTS because they have no eventStartMS/eventDurationMS function compareSegs(seg1, seg2) { return seg1.eventStartMS - seg2.eventStartMS || // earlier events go first seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first seg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1) (seg1.event.title || '').localeCompare(seg2.event.title); // tie? alphabetically by title } fc.compareSegs = compareSegs; // export /* External-Dragging-Element Data ----------------------------------------------------------------------------------------------------------------------*/ // Require all HTML5 data-* attributes used by FullCalendar to have this prefix. // A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event. fc.dataAttrPrefix = ''; // Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure // to be used for Event Object creation. // A defined `.eventProps`, even when empty, indicates that an event should be created. function getDraggedElMeta(el) { var prefix = fc.dataAttrPrefix; var eventProps; // properties for creating the event, not related to date/time var startTime; // a Duration var duration; var stick; if (prefix) { prefix += '-'; } eventProps = el.data(prefix + 'event') || null; if (eventProps) { if (typeof eventProps === 'object') { eventProps = $.extend({}, eventProps); // make a copy } else { // something like 1 or true. still signal event creation eventProps = {}; } // pluck special-cased date/time properties startTime = eventProps.start; if (startTime == null) { startTime = eventProps.time; } // accept 'time' as well duration = eventProps.duration; stick = eventProps.stick; delete eventProps.start; delete eventProps.time; delete eventProps.duration; delete eventProps.stick; } // fallback to standalone attribute values for each of the date/time properties if (startTime == null) { startTime = el.data(prefix + 'start'); } if (startTime == null) { startTime = el.data(prefix + 'time'); } // accept 'time' as well if (duration == null) { duration = el.data(prefix + 'duration'); } if (stick == null) { stick = el.data(prefix + 'stick'); } // massage into correct data types startTime = startTime != null ? moment.duration(startTime) : null; duration = duration != null ? moment.duration(duration) : null; stick = Boolean(stick); return { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick }; } /* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week. ----------------------------------------------------------------------------------------------------------------------*/ var DayGrid = Grid.extend({ numbersVisible: false, // should render a row for day/week numbers? set by outside view. TODO: make internal bottomCoordPadding: 0, // hack for extending the hit area for the last row of the coordinate grid breakOnWeeks: null, // should create a new row for each week? set by outside view cellDates: null, // flat chronological array of each cell's dates dayToCellOffsets: null, // maps days offsets from grid's start date, to cell offsets rowEls: null, // set of fake row elements dayEls: null, // set of whole-day elements comprising the row's background helperEls: null, // set of cell skeleton elements for rendering the mock event "helper" // Renders the rows and columns into the component's `this.el`, which should already be assigned. // isRigid determins whether the individual rows should ignore the contents and be a constant height. // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient. render: function(isRigid) { var view = this.view; var rowCnt = this.rowCnt; var colCnt = this.colCnt; var cellCnt = rowCnt * colCnt; var html = ''; var row; var i, cell; for (row = 0; row < rowCnt; row++) { html += this.dayRowHtml(row, isRigid); } this.el.html(html); this.rowEls = this.el.find('.fc-row'); this.dayEls = this.el.find('.fc-day'); // trigger dayRender with each cell's element for (i = 0; i < cellCnt; i++) { cell = this.getCell(i); view.trigger('dayRender', null, cell.start, this.dayEls.eq(i)); } Grid.prototype.render.call(this); // call the super-method }, destroy: function() { this.destroySegPopover(); Grid.prototype.destroy.call(this); // call the super-method }, // Generates the HTML for a single row. `row` is the row number. dayRowHtml: function(row, isRigid) { var view = this.view; var classes = [ 'fc-row', 'fc-week', view.widgetContentClass ]; if (isRigid) { classes.push('fc-rigid'); } return '' + '<div class="' + classes.join(' ') + '">' + '<div class="fc-bg">' + '<table>' + this.rowHtml('day', row) + // leverages RowRenderer. calls dayCellHtml() '</table>' + '</div>' + '<div class="fc-content-skeleton">' + '<table>' + (this.numbersVisible ? '<thead>' + this.rowHtml('number', row) + // leverages RowRenderer. View will define render method '</thead>' : '' ) + '</table>' + '</div>' + '</div>'; }, // Renders the HTML for a whole-day cell. Will eventually end up in the day-row's background. // We go through a 'day' row type instead of just doing a 'bg' row type so that the View can do custom rendering // specifically for whole-day rows, whereas a 'bg' might also be used for other purposes (TimeGrid bg for example). dayCellHtml: function(cell) { return this.bgCellHtml(cell); }, /* Options ------------------------------------------------------------------------------------------------------------------*/ // Computes a default column header formatting string if `colFormat` is not explicitly defined computeColHeadFormat: function() { if (this.rowCnt > 1) { // more than one week row. day numbers will be in each cell return 'ddd'; // "Sat" } else if (this.colCnt > 1) { // multiple days, so full single date string WON'T be in title text return this.view.opt('dayOfMonthFormat'); // "Sat 12/10" } else { // single day, so full single date string will probably be in title text return 'dddd'; // "Saturday" } }, // Computes a default event time formatting string if `timeFormat` is not explicitly defined computeEventTimeFormat: function() { return this.view.opt('extraSmallTimeFormat'); // like "6p" or "6:30p" }, // Computes a default `displayEventEnd` value if one is not expliclty defined computeDisplayEventEnd: function() { return this.colCnt == 1; // we'll likely have space if there's only one day }, /* Cell System ------------------------------------------------------------------------------------------------------------------*/ // Initializes row/col information updateCells: function() { var cellDates; var firstDay; var rowCnt; var colCnt; this.updateCellDates(); // populates cellDates and dayToCellOffsets cellDates = this.cellDates; if (this.breakOnWeeks) { // count columns until the day-of-week repeats firstDay = cellDates[0].day(); for (colCnt = 1; colCnt < cellDates.length; colCnt++) { if (cellDates[colCnt].day() == firstDay) { break; } } rowCnt = Math.ceil(cellDates.length / colCnt); } else { rowCnt = 1; colCnt = cellDates.length; } this.rowCnt = rowCnt; this.colCnt = colCnt; }, // Populates cellDates and dayToCellOffsets updateCellDates: function() { var view = this.view; var date = this.start.clone(); var dates = []; var offset = -1; var offsets = []; while (date.isBefore(this.end)) { // loop each day from start to end if (view.isHiddenDay(date)) { offsets.push(offset + 0.5); // mark that it's between offsets } else { offset++; offsets.push(offset); dates.push(date.clone()); } date.add(1, 'days'); } this.cellDates = dates; this.dayToCellOffsets = offsets; }, // Given a cell object, generates a range object computeCellRange: function(cell) { var colCnt = this.colCnt; var index = cell.row * colCnt + (this.isRTL ? colCnt - cell.col - 1 : cell.col); var start = this.cellDates[index].clone(); var end = start.clone().add(1, 'day'); return { start: start, end: end }; }, // Retrieves the element representing the given row getRowEl: function(row) { return this.rowEls.eq(row); }, // Retrieves the element representing the given column getColEl: function(col) { return this.dayEls.eq(col); }, // Gets the whole-day element associated with the cell getCellDayEl: function(cell) { return this.dayEls.eq(cell.row * this.colCnt + cell.col); }, // Overrides Grid's method for when row coordinates are computed computeRowCoords: function() { var rowCoords = Grid.prototype.computeRowCoords.call(this); // call the super-method // hack for extending last row (used by AgendaView) rowCoords[rowCoords.length - 1].bottom += this.bottomCoordPadding; return rowCoords; }, /* Dates ------------------------------------------------------------------------------------------------------------------*/ // Slices up a date range by row into an array of segments rangeToSegs: function(range) { var isRTL = this.isRTL; var rowCnt = this.rowCnt; var colCnt = this.colCnt; var segs = []; var first, last; // inclusive cell-offset range for given range var row; var rowFirst, rowLast; // inclusive cell-offset range for current row var isStart, isEnd; var segFirst, segLast; // inclusive cell-offset range for segment var seg; range = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold first = this.dateToCellOffset(range.start); last = this.dateToCellOffset(range.end.subtract(1, 'days')); // offset of inclusive end date for (row = 0; row < rowCnt; row++) { rowFirst = row * colCnt; rowLast = rowFirst + colCnt - 1; // intersect segment's offset range with the row's segFirst = Math.max(rowFirst, first); segLast = Math.min(rowLast, last); // deal with in-between indices segFirst = Math.ceil(segFirst); // in-between starts round to next cell segLast = Math.floor(segLast); // in-between ends round to prev cell if (segFirst <= segLast) { // was there any intersection with the current row? // must be matching integers to be the segment's start/end isStart = segFirst === first; isEnd = segLast === last; // translate offsets to be relative to start-of-row segFirst -= rowFirst; segLast -= rowFirst; seg = { row: row, isStart: isStart, isEnd: isEnd }; if (isRTL) { seg.leftCol = colCnt - segLast - 1; seg.rightCol = colCnt - segFirst - 1; } else { seg.leftCol = segFirst; seg.rightCol = segLast; } segs.push(seg); } } return segs; }, // Given a date, returns its chronolocial cell-offset from the first cell of the grid. // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. // If before the first offset, returns a negative number. // If after the last offset, returns an offset past the last cell offset. // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. dateToCellOffset: function(date) { var offsets = this.dayToCellOffsets; var day = date.diff(this.start, 'days'); if (day < 0) { return offsets[0] - 1; } else if (day >= offsets.length) { return offsets[offsets.length - 1] + 1; } else { return offsets[day]; } }, /* Event Drag Visualization ------------------------------------------------------------------------------------------------------------------*/ // TODO: move to DayGrid.event, similar to what we did with Grid's drag methods // Renders a visual indication of an event or external element being dragged. // The dropLocation's end can be null. seg can be null. See Grid::renderDrag for more info. renderDrag: function(dropLocation, seg) { var opacity; // always render a highlight underneath this.renderHighlight( this.view.calendar.ensureVisibleEventRange(dropLocation) // needs to be a proper range ); // if a segment from the same calendar but another component is being dragged, render a helper event if (seg && !seg.el.closest(this.el).length) { this.renderRangeHelper(dropLocation, seg); opacity = this.view.opt('dragOpacity'); if (opacity !== undefined) { this.helperEls.css('opacity', opacity); } return true; // a helper has been rendered } }, // Unrenders any visual indication of a hovering event destroyDrag: function() { this.destroyHighlight(); this.destroyHelper(); }, /* Event Resize Visualization ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event being resized renderEventResize: function(range, seg) { this.renderHighlight(range); this.renderRangeHelper(range, seg); }, // Unrenders a visual indication of an event being resized destroyEventResize: function() { this.destroyHighlight(); this.destroyHelper(); }, /* Event Helper ------------------------------------------------------------------------------------------------------------------*/ // Renders a mock "helper" event. `sourceSeg` is the associated internal segment object. It can be null. renderHelper: function(event, sourceSeg) { var helperNodes = []; var segs = this.eventsToSegs([ event ]); var rowStructs; segs = this.renderFgSegEls(segs); // assigns each seg's el and returns a subset of segs that were rendered rowStructs = this.renderSegRows(segs); // inject each new event skeleton into each associated row this.rowEls.each(function(row, rowNode) { var rowEl = $(rowNode); // the .fc-row var skeletonEl = $('<div class="fc-helper-skeleton"><table/></div>'); // will be absolutely positioned var skeletonTop; // If there is an original segment, match the top position. Otherwise, put it at the row's top level if (sourceSeg && sourceSeg.row === row) { skeletonTop = sourceSeg.el.position().top; } else { skeletonTop = rowEl.find('.fc-content-skeleton tbody').position().top; } skeletonEl.css('top', skeletonTop) .find('table') .append(rowStructs[row].tbodyEl); rowEl.append(skeletonEl); helperNodes.push(skeletonEl[0]); }); this.helperEls = $(helperNodes); // array -> jQuery set }, // Unrenders any visual indication of a mock helper event destroyHelper: function() { if (this.helperEls) { this.helperEls.remove(); this.helperEls = null; } }, /* Fill System (highlight, background events, business hours) ------------------------------------------------------------------------------------------------------------------*/ fillSegTag: 'td', // override the default tag name // Renders a set of rectangles over the given segments of days. // Only returns segments that successfully rendered. renderFill: function(type, segs) { var nodes = []; var i, seg; var skeletonEl; segs = this.renderFillSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs for (i = 0; i < segs.length; i++) { seg = segs[i]; skeletonEl = this.renderFillRow(type, seg); this.rowEls.eq(seg.row).append(skeletonEl); nodes.push(skeletonEl[0]); } this.elsByFill[type] = $(nodes); return segs; }, // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered. renderFillRow: function(type, seg) { var colCnt = this.colCnt; var startCol = seg.leftCol; var endCol = seg.rightCol + 1; var skeletonEl; var trEl; skeletonEl = $( '<div class="fc-' + type.toLowerCase() + '-skeleton">' + '<table><tr/></table>' + '</div>' ); trEl = skeletonEl.find('tr'); if (startCol > 0) { trEl.append('<td colspan="' + startCol + '"/>'); } trEl.append( seg.el.attr('colspan', endCol - startCol) ); if (endCol < colCnt) { trEl.append('<td colspan="' + (colCnt - endCol) + '"/>'); } this.bookendCells(trEl, type); return skeletonEl; } }); /* Event-rendering methods for the DayGrid class ----------------------------------------------------------------------------------------------------------------------*/ DayGrid.mixin({ rowStructs: null, // an array of objects, each holding information about a row's foreground event-rendering // Unrenders all events currently rendered on the grid destroyEvents: function() { this.destroySegPopover(); // removes the "more.." events popover Grid.prototype.destroyEvents.apply(this, arguments); // calls the super-method }, // Retrieves all rendered segment objects currently rendered on the grid getEventSegs: function() { return Grid.prototype.getEventSegs.call(this) // get the segments from the super-method .concat(this.popoverSegs || []); // append the segments from the "more..." popover }, // Renders the given background event segments onto the grid renderBgSegs: function(segs) { // don't render timed background events var allDaySegs = $.grep(segs, function(seg) { return seg.event.allDay; }); return Grid.prototype.renderBgSegs.call(this, allDaySegs); // call the super-method }, // Renders the given foreground event segments onto the grid renderFgSegs: function(segs) { var rowStructs; // render an `.el` on each seg // returns a subset of the segs. segs that were actually rendered segs = this.renderFgSegEls(segs); rowStructs = this.rowStructs = this.renderSegRows(segs); // append to each row's content skeleton this.rowEls.each(function(i, rowNode) { $(rowNode).find('.fc-content-skeleton > table').append( rowStructs[i].tbodyEl ); }); return segs; // return only the segs that were actually rendered }, // Unrenders all currently rendered foreground event segments destroyFgSegs: function() { var rowStructs = this.rowStructs || []; var rowStruct; while ((rowStruct = rowStructs.pop())) { rowStruct.tbodyEl.remove(); } this.rowStructs = null; }, // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton. // Returns an array of rowStruct objects (see the bottom of `renderSegRow`). // PRECONDITION: each segment shoud already have a rendered and assigned `.el` renderSegRows: function(segs) { var rowStructs = []; var segRows; var row; segRows = this.groupSegRows(segs); // group into nested arrays // iterate each row of segment groupings for (row = 0; row < segRows.length; row++) { rowStructs.push( this.renderSegRow(row, segRows[row]) ); } return rowStructs; }, // Builds the HTML to be used for the default element for an individual segment fgSegHtml: function(seg, disableResizing) { var view = this.view; var event = seg.event; var isDraggable = view.isEventDraggable(event); var isResizable = !disableResizing && event.allDay && seg.isEnd && view.isEventResizable(event); var classes = this.getSegClasses(seg, isDraggable, isResizable); var skinCss = this.getEventSkinCss(event); var timeHtml = ''; var titleHtml; classes.unshift('fc-day-grid-event'); // Only display a timed events time if it is the starting segment if (!event.allDay && seg.isStart) { timeHtml = '<span class="fc-time">' + htmlEscape(this.getEventTimeText(event)) + '</span>'; } titleHtml = '<span class="fc-title">' + (htmlEscape(event.title || '') || ' ') + // we always want one line of height '</span>'; return '<a class="' + classes.join(' ') + '"' + (event.url ? ' href="' + htmlEscape(event.url) + '"' : '' ) + (skinCss ? ' style="' + skinCss + '"' : '' ) + '>' + '<div class="fc-content">' + (this.isRTL ? titleHtml + ' ' + timeHtml : // put a natural space in between timeHtml + ' ' + titleHtml // ) + '</div>' + (isResizable ? '<div class="fc-resizer"/>' : '' ) + '</a>'; }, // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains // the segments. Returns object with a bunch of internal data about how the render was calculated. renderSegRow: function(row, rowSegs) { var colCnt = this.colCnt; var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels var levelCnt = Math.max(1, segLevels.length); // ensure at least one level var tbody = $('<tbody/>'); var segMatrix = []; // lookup for which segments are rendered into which level+col cells var cellMatrix = []; // lookup for all <td> elements of the level+col matrix var loneCellMatrix = []; // lookup for <td> elements that only take up a single column var i, levelSegs; var col; var tr; var j, seg; var td; // populates empty cells from the current column (`col`) to `endCol` function emptyCellsUntil(endCol) { while (col < endCol) { // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell td = (loneCellMatrix[i - 1] || [])[col]; if (td) { td.attr( 'rowspan', parseInt(td.attr('rowspan') || 1, 10) + 1 ); } else { td = $('<td/>'); tr.append(td); } cellMatrix[i][col] = td; loneCellMatrix[i][col] = td; col++; } } for (i = 0; i < levelCnt; i++) { // iterate through all levels levelSegs = segLevels[i]; col = 0; tr = $('<tr/>'); segMatrix.push([]); cellMatrix.push([]); loneCellMatrix.push([]); // levelCnt might be 1 even though there are no actual levels. protect against this. // this single empty row is useful for styling. if (levelSegs) { for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level seg = levelSegs[j]; emptyCellsUntil(seg.leftCol); // create a container that occupies or more columns. append the event element. td = $('<td class="fc-event-container"/>').append(seg.el); if (seg.leftCol != seg.rightCol) { td.attr('colspan', seg.rightCol - seg.leftCol + 1); } else { // a single-column segment loneCellMatrix[i][col] = td; } while (col <= seg.rightCol) { cellMatrix[i][col] = td; segMatrix[i][col] = seg; col++; } tr.append(td); } } emptyCellsUntil(colCnt); // finish off the row this.bookendCells(tr, 'eventSkeleton'); tbody.append(tr); } return { // a "rowStruct" row: row, // the row number tbodyEl: tbody, cellMatrix: cellMatrix, segMatrix: segMatrix, segLevels: segLevels, segs: rowSegs }; }, // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels. buildSegLevels: function(segs) { var levels = []; var i, seg; var j; // Give preference to elements with certain criteria, so they have // a chance to be closer to the top. segs.sort(compareSegs); for (i = 0; i < segs.length; i++) { seg = segs[i]; // loop through levels, starting with the topmost, until the segment doesn't collide with other segments for (j = 0; j < levels.length; j++) { if (!isDaySegCollision(seg, levels[j])) { break; } } // `j` now holds the desired subrow index seg.level = j; // create new level array if needed and append segment (levels[j] || (levels[j] = [])).push(seg); } // order segments left-to-right. very important if calendar is RTL for (j = 0; j < levels.length; j++) { levels[j].sort(compareDaySegCols); } return levels; }, // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row groupSegRows: function(segs) { var segRows = []; var i; for (i = 0; i < this.rowCnt; i++) { segRows.push([]); } for (i = 0; i < segs.length; i++) { segRows[segs[i].row].push(segs[i]); } return segRows; } }); // Computes whether two segments' columns collide. They are assumed to be in the same row. function isDaySegCollision(seg, otherSegs) { var i, otherSeg; for (i = 0; i < otherSegs.length; i++) { otherSeg = otherSegs[i]; if ( otherSeg.leftCol <= seg.rightCol && otherSeg.rightCol >= seg.leftCol ) { return true; } } return false; } // A cmp function for determining the leftmost event function compareDaySegCols(a, b) { return a.leftCol - b.leftCol; } /* Methods relate to limiting the number events for a given day on a DayGrid ----------------------------------------------------------------------------------------------------------------------*/ // NOTE: all the segs being passed around in here are foreground segs DayGrid.mixin({ segPopover: null, // the Popover that holds events that can't fit in a cell. null when not visible popoverSegs: null, // an array of segment objects that the segPopover holds. null when not visible destroySegPopover: function() { if (this.segPopover) { this.segPopover.hide(); // will trigger destruction of `segPopover` and `popoverSegs` } }, // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid. // `levelLimit` can be false (don't limit), a number, or true (should be computed). limitRows: function(levelLimit) { var rowStructs = this.rowStructs || []; var row; // row # var rowLevelLimit; for (row = 0; row < rowStructs.length; row++) { this.unlimitRow(row); if (!levelLimit) { rowLevelLimit = false; } else if (typeof levelLimit === 'number') { rowLevelLimit = levelLimit; } else { rowLevelLimit = this.computeRowLevelLimit(row); } if (rowLevelLimit !== false) { this.limitRow(row, rowLevelLimit); } } }, // Computes the number of levels a row will accomodate without going outside its bounds. // Assumes the row is "rigid" (maintains a constant height regardless of what is inside). // `row` is the row number. computeRowLevelLimit: function(row) { var rowEl = this.rowEls.eq(row); // the containing "fake" row div var rowHeight = rowEl.height(); // TODO: cache somehow? var trEls = this.rowStructs[row].tbodyEl.children(); var i, trEl; // Reveal one level <tr> at a time and stop when we find one out of bounds for (i = 0; i < trEls.length; i++) { trEl = trEls.eq(i).removeClass('fc-limited'); // get and reveal if (trEl.position().top + trEl.outerHeight() > rowHeight) { return i; } } return false; // should not limit at all }, // Limits the given grid row to the maximum number of levels and injects "more" links if necessary. // `row` is the row number. // `levelLimit` is a number for the maximum (inclusive) number of levels allowed. limitRow: function(row, levelLimit) { var _this = this; var rowStruct = this.rowStructs[row]; var moreNodes = []; // array of "more" <a> links and <td> DOM nodes var col = 0; // col #, left-to-right (not chronologically) var cell; var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right var cellMatrix; // a matrix (by level, then column) of all <td> jQuery elements in the row var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes var i, seg; var segsBelow; // array of segment objects below `seg` in the current `col` var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column) var td, rowspan; var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell var j; var moreTd, moreWrap, moreLink; // Iterates through empty level cells and places "more" links inside if need be function emptyCellsUntil(endCol) { // goes from current `col` to `endCol` while (col < endCol) { cell = _this.getCell(row, col); segsBelow = _this.getCellSegs(cell, levelLimit); if (segsBelow.length) { td = cellMatrix[levelLimit - 1][col]; moreLink = _this.renderMoreLink(cell, segsBelow); moreWrap = $('<div/>').append(moreLink); td.append(moreWrap); moreNodes.push(moreWrap[0]); } col++; } } if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit? levelSegs = rowStruct.segLevels[levelLimit - 1]; cellMatrix = rowStruct.cellMatrix; limitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level <tr> elements past the limit .addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array // iterate though segments in the last allowable level for (i = 0; i < levelSegs.length; i++) { seg = levelSegs[i]; emptyCellsUntil(seg.leftCol); // process empty cells before the segment // determine *all* segments below `seg` that occupy the same columns colSegsBelow = []; totalSegsBelow = 0; while (col <= seg.rightCol) { cell = this.getCell(row, col); segsBelow = this.getCellSegs(cell, levelLimit); colSegsBelow.push(segsBelow); totalSegsBelow += segsBelow.length; col++; } if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links? td = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell rowspan = td.attr('rowspan') || 1; segMoreNodes = []; // make a replacement <td> for each column the segment occupies. will be one for each colspan for (j = 0; j < colSegsBelow.length; j++) { moreTd = $('<td class="fc-more-cell"/>').attr('rowspan', rowspan); segsBelow = colSegsBelow[j]; cell = this.getCell(row, seg.leftCol + j); moreLink = this.renderMoreLink(cell, [ seg ].concat(segsBelow)); // count seg as hidden too moreWrap = $('<div/>').append(moreLink); moreTd.append(moreWrap); segMoreNodes.push(moreTd[0]); moreNodes.push(moreTd[0]); } td.addClass('fc-limited').after($(segMoreNodes)); // hide original <td> and inject replacements limitedNodes.push(td[0]); } } emptyCellsUntil(this.colCnt); // finish off the level rowStruct.moreEls = $(moreNodes); // for easy undoing later rowStruct.limitedEls = $(limitedNodes); // for easy undoing later } }, // Reveals all levels and removes all "more"-related elements for a grid's row. // `row` is a row number. unlimitRow: function(row) { var rowStruct = this.rowStructs[row]; if (rowStruct.moreEls) { rowStruct.moreEls.remove(); rowStruct.moreEls = null; } if (rowStruct.limitedEls) { rowStruct.limitedEls.removeClass('fc-limited'); rowStruct.limitedEls = null; } }, // Renders an <a> element that represents hidden event element for a cell. // Responsible for attaching click handler as well. renderMoreLink: function(cell, hiddenSegs) { var _this = this; var view = this.view; return $('<a class="fc-more"/>') .text( this.getMoreLinkText(hiddenSegs.length) ) .on('click', function(ev) { var clickOption = view.opt('eventLimitClick'); var date = cell.start; var moreEl = $(this); var dayEl = _this.getCellDayEl(cell); var allSegs = _this.getCellSegs(cell); // rescope the segments to be within the cell's date var reslicedAllSegs = _this.resliceDaySegs(allSegs, date); var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date); if (typeof clickOption === 'function') { // the returned value can be an atomic option clickOption = view.trigger('eventLimitClick', null, { date: date, dayEl: dayEl, moreEl: moreEl, segs: reslicedAllSegs, hiddenSegs: reslicedHiddenSegs }, ev); } if (clickOption === 'popover') { _this.showSegPopover(cell, moreEl, reslicedAllSegs); } else if (typeof clickOption === 'string') { // a view name view.calendar.zoomTo(date, clickOption); } }); }, // Reveals the popover that displays all events within a cell showSegPopover: function(cell, moreLink, segs) { var _this = this; var view = this.view; var moreWrap = moreLink.parent(); // the <div> wrapper around the <a> var topEl; // the element we want to match the top coordinate of var options; if (this.rowCnt == 1) { topEl = view.el; // will cause the popover to cover any sort of header } else { topEl = this.rowEls.eq(cell.row); // will align with top of row } options = { className: 'fc-more-popover', content: this.renderSegPopoverContent(cell, segs), parentEl: this.el, top: topEl.offset().top, autoHide: true, // when the user clicks elsewhere, hide the popover viewportConstrain: view.opt('popoverViewportConstrain'), hide: function() { // destroy everything when the popover is hidden _this.segPopover.destroy(); _this.segPopover = null; _this.popoverSegs = null; } }; // Determine horizontal coordinate. // We use the moreWrap instead of the <td> to avoid border confusion. if (this.isRTL) { options.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border } else { options.left = moreWrap.offset().left - 1; // -1 to be over cell border } this.segPopover = new Popover(options); this.segPopover.show(); }, // Builds the inner DOM contents of the segment popover renderSegPopoverContent: function(cell, segs) { var view = this.view; var isTheme = view.opt('theme'); var title = cell.start.format(view.opt('dayPopoverFormat')); var content = $( '<div class="fc-header ' + view.widgetHeaderClass + '">' + '<span class="fc-close ' + (isTheme ? 'ui-icon ui-icon-closethick' : 'fc-icon fc-icon-x') + '"></span>' + '<span class="fc-title">' + htmlEscape(title) + '</span>' + '<div class="fc-clear"/>' + '</div>' + '<div class="fc-body ' + view.widgetContentClass + '">' + '<div class="fc-event-container"></div>' + '</div>' ); var segContainer = content.find('.fc-event-container'); var i; // render each seg's `el` and only return the visible segs segs = this.renderFgSegEls(segs, true); // disableResizing=true this.popoverSegs = segs; for (i = 0; i < segs.length; i++) { // because segments in the popover are not part of a grid coordinate system, provide a hint to any // grids that want to do drag-n-drop about which cell it came from segs[i].cell = cell; segContainer.append(segs[i].el); } return content; }, // Given the events within an array of segment objects, reslice them to be in a single day resliceDaySegs: function(segs, dayDate) { // build an array of the original events var events = $.map(segs, function(seg) { return seg.event; }); var dayStart = dayDate.clone().stripTime(); var dayEnd = dayStart.clone().add(1, 'days'); var dayRange = { start: dayStart, end: dayEnd }; // slice the events with a custom slicing function return this.eventsToSegs( events, function(range) { var seg = intersectionToSeg(range, dayRange); // undefind if no intersection return seg ? [ seg ] : []; // must return an array of segments } ); }, // Generates the text that should be inside a "more" link, given the number of events it represents getMoreLinkText: function(num) { var opt = this.view.opt('eventLimitText'); if (typeof opt === 'function') { return opt(num); } else { return '+' + num + ' ' + opt; } }, // Returns segments within a given cell. // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs. getCellSegs: function(cell, startLevel) { var segMatrix = this.rowStructs[cell.row].segMatrix; var level = startLevel || 0; var segs = []; var seg; while (level < segMatrix.length) { seg = segMatrix[level][cell.col]; if (seg) { segs.push(seg); } level++; } return segs; } }); /* A component that renders one or more columns of vertical time slots ----------------------------------------------------------------------------------------------------------------------*/ var TimeGrid = Grid.extend({ slotDuration: null, // duration of a "slot", a distinct time segment on given day, visualized by lines snapDuration: null, // granularity of time for dragging and selecting minTime: null, // Duration object that denotes the first visible time of any given day maxTime: null, // Duration object that denotes the exclusive visible end time of any given day axisFormat: null, // formatting string for times running along vertical axis dayEls: null, // cells elements in the day-row background slatEls: null, // elements running horizontally across all columns slatTops: null, // an array of top positions, relative to the container. last item holds bottom of last slot helperEl: null, // cell skeleton element for rendering the mock event "helper" businessHourSegs: null, constructor: function() { Grid.apply(this, arguments); // call the super-constructor this.processOptions(); }, // Renders the time grid into `this.el`, which should already be assigned. // Relies on the view's colCnt. In the future, this component should probably be self-sufficient. render: function() { this.el.html(this.renderHtml()); this.dayEls = this.el.find('.fc-day'); this.slatEls = this.el.find('.fc-slats tr'); this.computeSlatTops(); this.renderBusinessHours(); Grid.prototype.render.call(this); // call the super-method }, renderBusinessHours: function() { var events = this.view.calendar.getBusinessHoursEvents(); this.businessHourSegs = this.renderFill('businessHours', this.eventsToSegs(events), 'bgevent'); }, // Renders the basic HTML skeleton for the grid renderHtml: function() { return '' + '<div class="fc-bg">' + '<table>' + this.rowHtml('slotBg') + // leverages RowRenderer, which will call slotBgCellHtml '</table>' + '</div>' + '<div class="fc-slats">' + '<table>' + this.slatRowHtml() + '</table>' + '</div>'; }, // Renders the HTML for a vertical background cell behind the slots. // This method is distinct from 'bg' because we wanted a new `rowType` so the View could customize the rendering. slotBgCellHtml: function(cell) { return this.bgCellHtml(cell); }, // Generates the HTML for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL. slatRowHtml: function() { var view = this.view; var isRTL = this.isRTL; var html = ''; var slotNormal = this.slotDuration.asMinutes() % 15 === 0; var slotTime = moment.duration(+this.minTime); // wish there was .clone() for durations var slotDate; // will be on the view's first day, but we only care about its time var minutes; var axisHtml; // Calculate the time for each slot while (slotTime < this.maxTime) { slotDate = this.start.clone().time(slotTime); // will be in UTC but that's good. to avoid DST issues minutes = slotDate.minutes(); axisHtml = '<td class="fc-axis fc-time ' + view.widgetContentClass + '" ' + view.axisStyleAttr() + '>' + ((!slotNormal || !minutes) ? // if irregular slot duration, or on the hour, then display the time '<span>' + // for matchCellWidths htmlEscape(slotDate.format(this.axisFormat)) + '</span>' : '' ) + '</td>'; html += '<tr ' + (!minutes ? '' : 'class="fc-minor"') + '>' + (!isRTL ? axisHtml : '') + '<td class="' + view.widgetContentClass + '"/>' + (isRTL ? axisHtml : '') + "</tr>"; slotTime.add(this.slotDuration); } return html; }, /* Options ------------------------------------------------------------------------------------------------------------------*/ // Parses various options into properties of this object processOptions: function() { var view = this.view; var slotDuration = view.opt('slotDuration'); var snapDuration = view.opt('snapDuration'); slotDuration = moment.duration(slotDuration); snapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration; this.slotDuration = slotDuration; this.snapDuration = snapDuration; this.minTime = moment.duration(view.opt('minTime')); this.maxTime = moment.duration(view.opt('maxTime')); this.axisFormat = view.opt('axisFormat') || view.opt('smallTimeFormat'); }, // Computes a default column header formatting string if `colFormat` is not explicitly defined computeColHeadFormat: function() { if (this.colCnt > 1) { // multiple days, so full single date string WON'T be in title text return this.view.opt('dayOfMonthFormat'); // "Sat 12/10" } else { // single day, so full single date string will probably be in title text return 'dddd'; // "Saturday" } }, // Computes a default event time formatting string if `timeFormat` is not explicitly defined computeEventTimeFormat: function() { return this.view.opt('noMeridiemTimeFormat'); // like "6:30" (no AM/PM) }, // Computes a default `displayEventEnd` value if one is not expliclty defined computeDisplayEventEnd: function() { return true; }, /* Cell System ------------------------------------------------------------------------------------------------------------------*/ // Initializes row/col information updateCells: function() { var view = this.view; var colData = []; var date; date = this.start.clone(); while (date.isBefore(this.end)) { colData.push({ day: date.clone() }); date.add(1, 'day'); date = view.skipHiddenDays(date); } if (this.isRTL) { colData.reverse(); } this.colData = colData; this.colCnt = colData.length; this.rowCnt = Math.ceil((this.maxTime - this.minTime) / this.snapDuration); // # of vertical snaps }, // Given a cell object, generates a range object computeCellRange: function(cell) { var time = this.computeSnapTime(cell.row); var start = this.view.calendar.rezoneDate(cell.day).time(time); var end = start.clone().add(this.snapDuration); return { start: start, end: end }; }, // Retrieves the element representing the given column getColEl: function(col) { return this.dayEls.eq(col); }, /* Dates ------------------------------------------------------------------------------------------------------------------*/ // Given a row number of the grid, representing a "snap", returns a time (Duration) from its start-of-day computeSnapTime: function(row) { return moment.duration(this.minTime + this.snapDuration * row); }, // Slices up a date range by column into an array of segments rangeToSegs: function(range) { var colCnt = this.colCnt; var segs = []; var seg; var col; var colDate; var colRange; // normalize :( range = { start: range.start.clone().stripZone(), end: range.end.clone().stripZone() }; for (col = 0; col < colCnt; col++) { colDate = this.colData[col].day; // will be ambig time/timezone colRange = { start: colDate.clone().time(this.minTime), end: colDate.clone().time(this.maxTime) }; seg = intersectionToSeg(range, colRange); // both will be ambig timezone if (seg) { seg.col = col; segs.push(seg); } } return segs; }, /* Coordinates ------------------------------------------------------------------------------------------------------------------*/ // Called when there is a window resize/zoom and we need to recalculate coordinates for the grid resize: function() { this.computeSlatTops(); this.updateSegVerticals(); }, // Computes the top/bottom coordinates of each "snap" rows computeRowCoords: function() { var originTop = this.el.offset().top; var items = []; var i; var item; for (i = 0; i < this.rowCnt; i++) { item = { top: originTop + this.computeTimeTop(this.computeSnapTime(i)) }; if (i > 0) { items[i - 1].bottom = item.top; } items.push(item); } item.bottom = item.top + this.computeTimeTop(this.computeSnapTime(i)); return items; }, // Computes the top coordinate, relative to the bounds of the grid, of the given date. // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight. computeDateTop: function(date, startOfDayDate) { return this.computeTimeTop( moment.duration( date.clone().stripZone() - startOfDayDate.clone().stripTime() ) ); }, // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration). computeTimeTop: function(time) { var slatCoverage = (time - this.minTime) / this.slotDuration; // floating-point value of # of slots covered var slatIndex; var slatRemainder; var slatTop; var slatBottom; // constrain. because minTime/maxTime might be customized slatCoverage = Math.max(0, slatCoverage); slatCoverage = Math.min(this.slatEls.length, slatCoverage); slatIndex = Math.floor(slatCoverage); // an integer index of the furthest whole slot slatRemainder = slatCoverage - slatIndex; slatTop = this.slatTops[slatIndex]; // the top position of the furthest whole slot if (slatRemainder) { // time spans part-way into the slot slatBottom = this.slatTops[slatIndex + 1]; return slatTop + (slatBottom - slatTop) * slatRemainder; // part-way between slots } else { return slatTop; } }, // Queries each `slatEl` for its position relative to the grid's container and stores it in `slatTops`. // Includes the the bottom of the last slat as the last item in the array. computeSlatTops: function() { var tops = []; var top; this.slatEls.each(function(i, node) { top = $(node).position().top; tops.push(top); }); tops.push(top + this.slatEls.last().outerHeight()); // bottom of the last slat this.slatTops = tops; }, /* Event Drag Visualization ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event being dragged over the specified date(s). // dropLocation's end might be null, as well as `seg`. See Grid::renderDrag for more info. // A returned value of `true` signals that a mock "helper" event has been rendered. renderDrag: function(dropLocation, seg) { var opacity; if (seg) { // if there is event information for this drag, render a helper event this.renderRangeHelper(dropLocation, seg); opacity = this.view.opt('dragOpacity'); if (opacity !== undefined) { this.helperEl.css('opacity', opacity); } return true; // signal that a helper has been rendered } else { // otherwise, just render a highlight this.renderHighlight( this.view.calendar.ensureVisibleEventRange(dropLocation) // needs to be a proper range ); } }, // Unrenders any visual indication of an event being dragged destroyDrag: function() { this.destroyHelper(); this.destroyHighlight(); }, /* Event Resize Visualization ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of an event being resized renderEventResize: function(range, seg) { this.renderRangeHelper(range, seg); }, // Unrenders any visual indication of an event being resized destroyEventResize: function() { this.destroyHelper(); }, /* Event Helper ------------------------------------------------------------------------------------------------------------------*/ // Renders a mock "helper" event. `sourceSeg` is the original segment object and might be null (an external drag) renderHelper: function(event, sourceSeg) { var segs = this.eventsToSegs([ event ]); var tableEl; var i, seg; var sourceEl; segs = this.renderFgSegEls(segs); // assigns each seg's el and returns a subset of segs that were rendered tableEl = this.renderSegTable(segs); // Try to make the segment that is in the same row as sourceSeg look the same for (i = 0; i < segs.length; i++) { seg = segs[i]; if (sourceSeg && sourceSeg.col === seg.col) { sourceEl = sourceSeg.el; seg.el.css({ left: sourceEl.css('left'), right: sourceEl.css('right'), 'margin-left': sourceEl.css('margin-left'), 'margin-right': sourceEl.css('margin-right') }); } } this.helperEl = $('<div class="fc-helper-skeleton"/>') .append(tableEl) .appendTo(this.el); }, // Unrenders any mock helper event destroyHelper: function() { if (this.helperEl) { this.helperEl.remove(); this.helperEl = null; } }, /* Selection ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight. renderSelection: function(range) { if (this.view.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered this.renderRangeHelper(range); } else { this.renderHighlight(range); } }, // Unrenders any visual indication of a selection destroySelection: function() { this.destroyHelper(); this.destroyHighlight(); }, /* Fill System (highlight, background events, business hours) ------------------------------------------------------------------------------------------------------------------*/ // Renders a set of rectangles over the given time segments. // Only returns segments that successfully rendered. renderFill: function(type, segs, className) { var segCols; var skeletonEl; var trEl; var col, colSegs; var tdEl; var containerEl; var dayDate; var i, seg; if (segs.length) { segs = this.renderFillSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs segCols = this.groupSegCols(segs); // group into sub-arrays, and assigns 'col' to each seg className = className || type.toLowerCase(); skeletonEl = $( '<div class="fc-' + className + '-skeleton">' + '<table><tr/></table>' + '</div>' ); trEl = skeletonEl.find('tr'); for (col = 0; col < segCols.length; col++) { colSegs = segCols[col]; tdEl = $('<td/>').appendTo(trEl); if (colSegs.length) { containerEl = $('<div class="fc-' + className + '-container"/>').appendTo(tdEl); dayDate = this.colData[col].day; for (i = 0; i < colSegs.length; i++) { seg = colSegs[i]; containerEl.append( seg.el.css({ top: this.computeDateTop(seg.start, dayDate), bottom: -this.computeDateTop(seg.end, dayDate) // the y position of the bottom edge }) ); } } } this.bookendCells(trEl, type); this.el.append(skeletonEl); this.elsByFill[type] = skeletonEl; } return segs; } }); /* Event-rendering methods for the TimeGrid class ----------------------------------------------------------------------------------------------------------------------*/ TimeGrid.mixin({ eventSkeletonEl: null, // has cells with event-containers, which contain absolutely positioned event elements // Renders the given foreground event segments onto the grid renderFgSegs: function(segs) { segs = this.renderFgSegEls(segs); // returns a subset of the segs. segs that were actually rendered this.el.append( this.eventSkeletonEl = $('<div class="fc-content-skeleton"/>') .append(this.renderSegTable(segs)) ); return segs; // return only the segs that were actually rendered }, // Unrenders all currently rendered foreground event segments destroyFgSegs: function(segs) { if (this.eventSkeletonEl) { this.eventSkeletonEl.remove(); this.eventSkeletonEl = null; } }, // Renders and returns the <table> portion of the event-skeleton. // Returns an object with properties 'tbodyEl' and 'segs'. renderSegTable: function(segs) { var tableEl = $('<table><tr/></table>'); var trEl = tableEl.find('tr'); var segCols; var i, seg; var col, colSegs; var containerEl; segCols = this.groupSegCols(segs); // group into sub-arrays, and assigns 'col' to each seg this.computeSegVerticals(segs); // compute and assign top/bottom for (col = 0; col < segCols.length; col++) { // iterate each column grouping colSegs = segCols[col]; placeSlotSegs(colSegs); // compute horizontal coordinates, z-index's, and reorder the array containerEl = $('<div class="fc-event-container"/>'); // assign positioning CSS and insert into container for (i = 0; i < colSegs.length; i++) { seg = colSegs[i]; seg.el.css(this.generateSegPositionCss(seg)); // if the height is short, add a className for alternate styling if (seg.bottom - seg.top < 30) { seg.el.addClass('fc-short'); } containerEl.append(seg.el); } trEl.append($('<td/>').append(containerEl)); } this.bookendCells(trEl, 'eventSkeleton'); return tableEl; }, // Refreshes the CSS top/bottom coordinates for each segment element. Probably after a window resize/zoom. // Repositions business hours segs too, so not just for events. Maybe shouldn't be here. updateSegVerticals: function() { var allSegs = (this.segs || []).concat(this.businessHourSegs || []); var i; this.computeSegVerticals(allSegs); for (i = 0; i < allSegs.length; i++) { allSegs[i].el.css( this.generateSegVerticalCss(allSegs[i]) ); } }, // For each segment in an array, computes and assigns its top and bottom properties computeSegVerticals: function(segs) { var i, seg; for (i = 0; i < segs.length; i++) { seg = segs[i]; seg.top = this.computeDateTop(seg.start, seg.start); seg.bottom = this.computeDateTop(seg.end, seg.start); } }, // Renders the HTML for a single event segment's default rendering fgSegHtml: function(seg, disableResizing) { var view = this.view; var event = seg.event; var isDraggable = view.isEventDraggable(event); var isResizable = !disableResizing && seg.isEnd && view.isEventResizable(event); var classes = this.getSegClasses(seg, isDraggable, isResizable); var skinCss = this.getEventSkinCss(event); var timeText; var fullTimeText; // more verbose time text. for the print stylesheet var startTimeText; // just the start time text classes.unshift('fc-time-grid-event'); if (view.isMultiDayEvent(event)) { // if the event appears to span more than one day... // Don't display time text on segments that run entirely through a day. // That would appear as midnight-midnight and would look dumb. // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am) if (seg.isStart || seg.isEnd) { timeText = this.getEventTimeText(seg); fullTimeText = this.getEventTimeText(seg, 'LT'); startTimeText = this.getEventTimeText({ start: seg.start }); } } else { // Display the normal time text for the *event's* times timeText = this.getEventTimeText(event); fullTimeText = this.getEventTimeText(event, 'LT'); startTimeText = this.getEventTimeText({ start: event.start }); } return '<a class="' + classes.join(' ') + '"' + (event.url ? ' href="' + htmlEscape(event.url) + '"' : '' ) + (skinCss ? ' style="' + skinCss + '"' : '' ) + '>' + '<div class="fc-content">' + (timeText ? '<div class="fc-time"' + ' data-start="' + htmlEscape(startTimeText) + '"' + ' data-full="' + htmlEscape(fullTimeText) + '"' + '>' + '<span>' + htmlEscape(timeText) + '</span>' + '</div>' : '' ) + (event.title ? '<div class="fc-title">' + htmlEscape(event.title) + '</div>' : '' ) + '</div>' + '<div class="fc-bg"/>' + (isResizable ? '<div class="fc-resizer"/>' : '' ) + '</a>'; }, // Generates an object with CSS properties/values that should be applied to an event segment element. // Contains important positioning-related properties that should be applied to any event element, customized or not. generateSegPositionCss: function(seg) { var shouldOverlap = this.view.opt('slotEventOverlap'); var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point var props = this.generateSegVerticalCss(seg); // get top/bottom first var left; // amount of space from left edge, a fraction of the total width var right; // amount of space from right edge, a fraction of the total width if (shouldOverlap) { // double the width, but don't go beyond the maximum forward coordinate (1.0) forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2); } if (this.isRTL) { left = 1 - forwardCoord; right = backwardCoord; } else { left = backwardCoord; right = 1 - forwardCoord; } props.zIndex = seg.level + 1; // convert from 0-base to 1-based props.left = left * 100 + '%'; props.right = right * 100 + '%'; if (shouldOverlap && seg.forwardPressure) { // add padding to the edge so that forward stacked events don't cover the resizer's icon props[this.isRTL ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width } return props; }, // Generates an object with CSS properties for the top/bottom coordinates of a segment element generateSegVerticalCss: function(seg) { return { top: seg.top, bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container }; }, // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col groupSegCols: function(segs) { var segCols = []; var i; for (i = 0; i < this.colCnt; i++) { segCols.push([]); } for (i = 0; i < segs.length; i++) { segCols[segs[i].col].push(segs[i]); } return segCols; } }); // Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each. // Also reorders the given array by date! function placeSlotSegs(segs) { var levels; var level0; var i; segs.sort(compareSegs); // order by date levels = buildSlotSegLevels(segs); computeForwardSlotSegs(levels); if ((level0 = levels[0])) { for (i = 0; i < level0.length; i++) { computeSlotSegPressures(level0[i]); } for (i = 0; i < level0.length; i++) { computeSlotSegCoords(level0[i], 0, 0); } } } // Builds an array of segments "levels". The first level will be the leftmost tier of segments if the calendar is // left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date. function buildSlotSegLevels(segs) { var levels = []; var i, seg; var j; for (i=0; i<segs.length; i++) { seg = segs[i]; // go through all the levels and stop on the first level where there are no collisions for (j=0; j<levels.length; j++) { if (!computeSlotSegCollisions(seg, levels[j]).length) { break; } } seg.level = j; (levels[j] || (levels[j] = [])).push(seg); } return levels; } // For every segment, figure out the other segments that are in subsequent // levels that also occupy the same vertical space. Accumulate in seg.forwardSegs function computeForwardSlotSegs(levels) { var i, level; var j, seg; var k; for (i=0; i<levels.length; i++) { level = levels[i]; for (j=0; j<level.length; j++) { seg = level[j]; seg.forwardSegs = []; for (k=i+1; k<levels.length; k++) { computeSlotSegCollisions(seg, levels[k], seg.forwardSegs); } } } } // Figure out which path forward (via seg.forwardSegs) results in the longest path until // the furthest edge is reached. The number of segments in this path will be seg.forwardPressure function computeSlotSegPressures(seg) { var forwardSegs = seg.forwardSegs; var forwardPressure = 0; var i, forwardSeg; if (seg.forwardPressure === undefined) { // not already computed for (i=0; i<forwardSegs.length; i++) { forwardSeg = forwardSegs[i]; // figure out the child's maximum forward path computeSlotSegPressures(forwardSeg); // either use the existing maximum, or use the child's forward pressure // plus one (for the forwardSeg itself) forwardPressure = Math.max( forwardPressure, 1 + forwardSeg.forwardPressure ); } seg.forwardPressure = forwardPressure; } } // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to "left" and // seg.forwardCoord maps to "right" (via percentage). Vice-versa if the calendar is right-to-left. // // The segment might be part of a "series", which means consecutive segments with the same pressure // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of // segments behind this one in the current series, and `seriesBackwardCoord` is the starting // coordinate of the first segment in the series. function computeSlotSegCoords(seg, seriesBackwardPressure, seriesBackwardCoord) { var forwardSegs = seg.forwardSegs; var i; if (seg.forwardCoord === undefined) { // not already computed if (!forwardSegs.length) { // if there are no forward segments, this segment should butt up against the edge seg.forwardCoord = 1; } else { // sort highest pressure first forwardSegs.sort(compareForwardSlotSegs); // this segment's forwardCoord will be calculated from the backwardCoord of the // highest-pressure forward segment. computeSlotSegCoords(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord); seg.forwardCoord = forwardSegs[0].backwardCoord; } // calculate the backwardCoord from the forwardCoord. consider the series seg.backwardCoord = seg.forwardCoord - (seg.forwardCoord - seriesBackwardCoord) / // available width for series (seriesBackwardPressure + 1); // # of segments in the series // use this segment's coordinates to computed the coordinates of the less-pressurized // forward segments for (i=0; i<forwardSegs.length; i++) { computeSlotSegCoords(forwardSegs[i], 0, seg.forwardCoord); } } } // Find all the segments in `otherSegs` that vertically collide with `seg`. // Append into an optionally-supplied `results` array and return. function computeSlotSegCollisions(seg, otherSegs, results) { results = results || []; for (var i=0; i<otherSegs.length; i++) { if (isSlotSegCollision(seg, otherSegs[i])) { results.push(otherSegs[i]); } } return results; } // Do these segments occupy the same vertical space? function isSlotSegCollision(seg1, seg2) { return seg1.bottom > seg2.top && seg1.top < seg2.bottom; } // A cmp function for determining which forward segment to rely on more when computing coordinates. function compareForwardSlotSegs(seg1, seg2) { // put higher-pressure first return seg2.forwardPressure - seg1.forwardPressure || // put segments that are closer to initial edge first (and favor ones with no coords yet) (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) || // do normal sorting... compareSegs(seg1, seg2); } /* An abstract class from which other views inherit from ----------------------------------------------------------------------------------------------------------------------*/ var View = fc.View = Class.extend({ type: null, // subclass' view name (string) name: null, // deprecated. use `type` instead calendar: null, // owner Calendar object options: null, // view-specific options coordMap: null, // a CoordMap object for converting pixel regions to dates el: null, // the view's containing element. set by Calendar // range the view is actually displaying (moments) start: null, end: null, // exclusive // range the view is formally responsible for (moments) // may be different from start/end. for example, a month view might have 1st-31st, excluding padded dates intervalStart: null, intervalEnd: null, // exclusive intervalDuration: null, // the whole-unit duration that is being displayed intervalUnit: null, // name of largest unit being displayed, like "month" or "week" isSelected: false, // boolean whether a range of time is user-selected or not // subclasses can optionally use a scroll container scrollerEl: null, // the element that will most likely scroll when content is too tall scrollTop: null, // cached vertical scroll value // classNames styled by jqui themes widgetHeaderClass: null, widgetContentClass: null, highlightStateClass: null, // for date utils, computed from options nextDayThreshold: null, isHiddenDayHash: null, // document handlers, bound to `this` object documentMousedownProxy: null, // TODO: doesn't work with touch constructor: function(calendar, viewOptions, viewType) { this.calendar = calendar; this.options = viewOptions; this.type = this.name = viewType; // .name is deprecated this.nextDayThreshold = moment.duration(this.opt('nextDayThreshold')); this.initTheming(); this.initHiddenDays(); this.documentMousedownProxy = $.proxy(this, 'documentMousedown'); this.initialize(); }, // A good place for subclasses to initialize member variables initialize: function() { // subclasses can implement }, // Retrieves an option with the given name opt: function(name) { var val; val = this.options[name]; // look at view-specific options first if (val !== undefined) { return val; } val = this.calendar.options[name]; if ($.isPlainObject(val) && !isForcedAtomicOption(name)) { // view-option-hashes are deprecated return smartProperty(val, this.type); } return val; }, // Triggers handlers that are view-related. Modifies args before passing to calendar. trigger: function(name, thisObj) { // arguments beyond thisObj are passed along var calendar = this.calendar; return calendar.trigger.apply( calendar, [name, thisObj || this].concat( Array.prototype.slice.call(arguments, 2), // arguments beyond thisObj [ this ] // always make the last argument a reference to the view. TODO: deprecate ) ); }, /* Dates ------------------------------------------------------------------------------------------------------------------*/ // Updates all internal dates to center around the given current date setDate: function(date) { this.setRange(this.computeRange(date)); }, // Updates all internal dates for displaying the given range. // Expects all values to be normalized (like what computeRange does). setRange: function(range) { $.extend(this, range); }, // Given a single current date, produce information about what range to display. // Subclasses can override. Must return all properties. computeRange: function(date) { var intervalDuration = moment.duration(this.opt('duration') || this.constructor.duration || { days: 1 }); var intervalUnit = computeIntervalUnit(intervalDuration); var intervalStart = date.clone().startOf(intervalUnit); var intervalEnd = intervalStart.clone().add(intervalDuration); var start, end; // normalize the range's time-ambiguity if (computeIntervalAs('days', intervalDuration)) { // whole-days? intervalStart.stripTime(); intervalEnd.stripTime(); } else { // needs to have a time? if (!intervalStart.hasTime()) { intervalStart = this.calendar.rezoneDate(intervalStart); // convert to current timezone, with 00:00 } if (!intervalEnd.hasTime()) { intervalEnd = this.calendar.rezoneDate(intervalEnd); // convert to current timezone, with 00:00 } } start = intervalStart.clone(); start = this.skipHiddenDays(start); end = intervalEnd.clone(); end = this.skipHiddenDays(end, -1, true); // exclusively move backwards return { intervalDuration: intervalDuration, intervalUnit: intervalUnit, intervalStart: intervalStart, intervalEnd: intervalEnd, start: start, end: end }; }, // Computes the new date when the user hits the prev button, given the current date computePrevDate: function(date) { return this.skipHiddenDays( date.clone().startOf(this.intervalUnit).subtract(this.intervalDuration), -1 ); }, // Computes the new date when the user hits the next button, given the current date computeNextDate: function(date) { return this.skipHiddenDays( date.clone().startOf(this.intervalUnit).add(this.intervalDuration) ); }, /* Title and Date Formatting ------------------------------------------------------------------------------------------------------------------*/ // Computes what the title at the top of the calendar should be for this view computeTitle: function() { return this.formatRange( { start: this.intervalStart, end: this.intervalEnd }, this.opt('titleFormat') || this.computeTitleFormat(), this.opt('titleRangeSeparator') ); }, // Generates the format string that should be used to generate the title for the current date range. // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`. computeTitleFormat: function() { if (this.intervalUnit == 'year') { return 'YYYY'; } else if (this.intervalUnit == 'month') { return this.opt('monthYearFormat'); // like "September 2014" } else if (this.intervalDuration.as('days') > 1) { return 'll'; // multi-day range. shorter, like "Sep 9 - 10 2014" } else { return 'LL'; // one day. longer, like "September 9 2014" } }, // Utility for formatting a range. Accepts a range object, formatting string, and optional separator. // Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account. formatRange: function(range, formatStr, separator) { var end = range.end; if (!end.hasTime()) { // all-day? end = end.clone().subtract(1); // convert to inclusive. last ms of previous day } return formatRange(range.start, end, formatStr, separator, this.opt('isRTL')); }, /* Rendering ------------------------------------------------------------------------------------------------------------------*/ // Wraps the basic render() method with more View-specific logic. Called by the owner Calendar. renderView: function() { this.render(); this.updateSize(); this.initializeScroll(); this.trigger('viewRender', this, this, this.el); // attach handlers to document. do it here to allow for destroy/rerender $(document).on('mousedown', this.documentMousedownProxy); }, // Renders the view inside an already-defined `this.el` render: function() { // subclasses should implement }, // Wraps the basic destroy() method with more View-specific logic. Called by the owner Calendar. destroyView: function() { this.unselect(); this.destroyViewEvents(); this.destroy(); this.trigger('viewDestroy', this, this, this.el); $(document).off('mousedown', this.documentMousedownProxy); }, // Clears the view's rendering destroy: function() { this.el.empty(); // removes inner contents but leaves the element intact }, // Initializes internal variables related to theming initTheming: function() { var tm = this.opt('theme') ? 'ui' : 'fc'; this.widgetHeaderClass = tm + '-widget-header'; this.widgetContentClass = tm + '-widget-content'; this.highlightStateClass = tm + '-state-highlight'; }, /* Dimensions ------------------------------------------------------------------------------------------------------------------*/ // Refreshes anything dependant upon sizing of the container element of the grid updateSize: function(isResize) { if (isResize) { this.recordScroll(); } this.updateHeight(); this.updateWidth(); }, // Refreshes the horizontal dimensions of the calendar updateWidth: function() { // subclasses should implement }, // Refreshes the vertical dimensions of the calendar updateHeight: function() { var calendar = this.calendar; // we poll the calendar for height information this.setHeight( calendar.getSuggestedViewHeight(), calendar.isHeightAuto() ); }, // Updates the vertical dimensions of the calendar to the specified height. // if `isAuto` is set to true, height becomes merely a suggestion and the view should use its "natural" height. setHeight: function(height, isAuto) { // subclasses should implement }, /* Scroller ------------------------------------------------------------------------------------------------------------------*/ // Given the total height of the view, return the number of pixels that should be used for the scroller. // By default, uses this.scrollerEl, but can pass this in as well. // Utility for subclasses. computeScrollerHeight: function(totalHeight, scrollerEl) { var both; var otherHeight; // cumulative height of everything that is not the scrollerEl in the view (header+borders) scrollerEl = scrollerEl || this.scrollerEl; both = this.el.add(scrollerEl); // fuckin IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked both.css({ position: 'relative', // cause a reflow, which will force fresh dimension recalculation left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll }); otherHeight = this.el.outerHeight() - scrollerEl.height(); // grab the dimensions both.css({ position: '', left: '' }); // undo hack return totalHeight - otherHeight; }, // Sets the scroll value of the scroller to the initial pre-configured state prior to allowing the user to change it initializeScroll: function() { }, // Called for remembering the current scroll value of the scroller. // Should be called before there is a destructive operation (like removing DOM elements) that might inadvertently // change the scroll of the container. recordScroll: function() { if (this.scrollerEl) { this.scrollTop = this.scrollerEl.scrollTop(); } }, // Set the scroll value of the scroller to the previously recorded value. // Should be called after we know the view's dimensions have been restored following some type of destructive // operation (like temporarily removing DOM elements). restoreScroll: function() { if (this.scrollTop !== null) { this.scrollerEl.scrollTop(this.scrollTop); } }, /* Event Elements / Segments ------------------------------------------------------------------------------------------------------------------*/ // Wraps the basic renderEvents() method with more View-specific logic renderViewEvents: function(events) { this.renderEvents(events); this.eventSegEach(function(seg) { this.trigger('eventAfterRender', seg.event, seg.event, seg.el); }); this.trigger('eventAfterAllRender'); }, // Renders the events onto the view. renderEvents: function() { // subclasses should implement }, // Wraps the basic destroyEvents() method with more View-specific logic destroyViewEvents: function() { this.eventSegEach(function(seg) { this.trigger('eventDestroy', seg.event, seg.event, seg.el); }); this.destroyEvents(); }, // Removes event elements from the view. destroyEvents: function() { // subclasses should implement }, // Given an event and the default element used for rendering, returns the element that should actually be used. // Basically runs events and elements through the eventRender hook. resolveEventEl: function(event, el) { var custom = this.trigger('eventRender', event, event, el); if (custom === false) { // means don't render at all el = null; } else if (custom && custom !== true) { el = $(custom); } return el; }, // Hides all rendered event segments linked to the given event showEvent: function(event) { this.eventSegEach(function(seg) { seg.el.css('visibility', ''); }, event); }, // Shows all rendered event segments linked to the given event hideEvent: function(event) { this.eventSegEach(function(seg) { seg.el.css('visibility', 'hidden'); }, event); }, // Iterates through event segments. Goes through all by default. // If the optional `event` argument is specified, only iterates through segments linked to that event. // The `this` value of the callback function will be the view. eventSegEach: function(func, event) { var segs = this.getEventSegs(); var i; for (i = 0; i < segs.length; i++) { if (!event || segs[i].event._id === event._id) { func.call(this, segs[i]); } } }, // Retrieves all the rendered segment objects for the view getEventSegs: function() { // subclasses must implement return []; }, /* Event Drag-n-Drop ------------------------------------------------------------------------------------------------------------------*/ // Computes if the given event is allowed to be dragged by the user isEventDraggable: function(event) { var source = event.source || {}; return firstDefined( event.startEditable, source.startEditable, this.opt('eventStartEditable'), event.editable, source.editable, this.opt('editable') ); }, // Must be called when an event in the view is dropped onto new location. // `dropLocation` is an object that contains the new start/end/allDay values for the event. reportEventDrop: function(event, dropLocation, el, ev) { var calendar = this.calendar; var mutateResult = calendar.mutateEvent(event, dropLocation); var undoFunc = function() { mutateResult.undo(); calendar.reportEventChange(); }; this.triggerEventDrop(event, mutateResult.dateDelta, undoFunc, el, ev); calendar.reportEventChange(); // will rerender events }, // Triggers event-drop handlers that have subscribed via the API triggerEventDrop: function(event, dateDelta, undoFunc, el, ev) { this.trigger('eventDrop', el[0], event, dateDelta, undoFunc, ev, {}); // {} = jqui dummy }, /* External Element Drag-n-Drop ------------------------------------------------------------------------------------------------------------------*/ // Must be called when an external element, via jQuery UI, has been dropped onto the calendar. // `meta` is the parsed data that has been embedded into the dragging event. // `dropLocation` is an object that contains the new start/end/allDay values for the event. reportExternalDrop: function(meta, dropLocation, el, ev, ui) { var eventProps = meta.eventProps; var eventInput; var event; // Try to build an event object and render it. TODO: decouple the two if (eventProps) { eventInput = $.extend({}, eventProps, dropLocation); event = this.calendar.renderEvent(eventInput, meta.stick)[0]; // renderEvent returns an array } this.triggerExternalDrop(event, dropLocation, el, ev, ui); }, // Triggers external-drop handlers that have subscribed via the API triggerExternalDrop: function(event, dropLocation, el, ev, ui) { // trigger 'drop' regardless of whether element represents an event this.trigger('drop', el[0], dropLocation.start, ev, ui); if (event) { this.trigger('eventReceive', null, event); // signal an external event landed } }, /* Drag-n-Drop Rendering (for both events and external elements) ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of a event or external-element drag over the given drop zone. // If an external-element, seg will be `null` renderDrag: function(dropLocation, seg) { // subclasses must implement }, // Unrenders a visual indication of an event or external-element being dragged. destroyDrag: function() { // subclasses must implement }, /* Event Resizing ------------------------------------------------------------------------------------------------------------------*/ // Computes if the given event is allowed to be resize by the user isEventResizable: function(event) { var source = event.source || {}; return firstDefined( event.durationEditable, source.durationEditable, this.opt('eventDurationEditable'), event.editable, source.editable, this.opt('editable') ); }, // Must be called when an event in the view has been resized to a new length reportEventResize: function(event, newEnd, el, ev) { var calendar = this.calendar; var mutateResult = calendar.mutateEvent(event, { end: newEnd }); var undoFunc = function() { mutateResult.undo(); calendar.reportEventChange(); }; this.triggerEventResize(event, mutateResult.durationDelta, undoFunc, el, ev); calendar.reportEventChange(); // will rerender events }, // Triggers event-resize handlers that have subscribed via the API triggerEventResize: function(event, durationDelta, undoFunc, el, ev) { this.trigger('eventResize', el[0], event, durationDelta, undoFunc, ev, {}); // {} = jqui dummy }, /* Selection ------------------------------------------------------------------------------------------------------------------*/ // Selects a date range on the view. `start` and `end` are both Moments. // `ev` is the native mouse event that begin the interaction. select: function(range, ev) { this.unselect(ev); this.renderSelection(range); this.reportSelection(range, ev); }, // Renders a visual indication of the selection renderSelection: function(range) { // subclasses should implement }, // Called when a new selection is made. Updates internal state and triggers handlers. reportSelection: function(range, ev) { this.isSelected = true; this.trigger('select', null, range.start, range.end, ev); }, // Undoes a selection. updates in the internal state and triggers handlers. // `ev` is the native mouse event that began the interaction. unselect: function(ev) { if (this.isSelected) { this.isSelected = false; this.destroySelection(); this.trigger('unselect', null, ev); } }, // Unrenders a visual indication of selection destroySelection: function() { // subclasses should implement }, // Handler for unselecting when the user clicks something and the 'unselectAuto' setting is on documentMousedown: function(ev) { var ignore; // is there a selection, and has the user made a proper left click? if (this.isSelected && this.opt('unselectAuto') && isPrimaryMouseButton(ev)) { // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element ignore = this.opt('unselectCancel'); if (!ignore || !$(ev.target).closest(ignore).length) { this.unselect(ev); } } }, /* Date Utils ------------------------------------------------------------------------------------------------------------------*/ // Initializes internal variables related to calculating hidden days-of-week initHiddenDays: function() { var hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) var dayCnt = 0; var i; if (this.opt('weekends') === false) { hiddenDays.push(0, 6); // 0=sunday, 6=saturday } for (i = 0; i < 7; i++) { if ( !(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1) ) { dayCnt++; } } if (!dayCnt) { throw 'invalid hiddenDays'; // all days were hidden? bad. } this.isHiddenDayHash = isHiddenDayHash; }, // Is the current day hidden? // `day` is a day-of-week index (0-6), or a Moment isHiddenDay: function(day) { if (moment.isMoment(day)) { day = day.day(); } return this.isHiddenDayHash[day]; }, // Incrementing the current day until it is no longer a hidden day, returning a copy. // If the initial value of `date` is not a hidden day, don't do anything. // Pass `isExclusive` as `true` if you are dealing with an end date. // `inc` defaults to `1` (increment one day forward each time) skipHiddenDays: function(date, inc, isExclusive) { var out = date.clone(); inc = inc || 1; while ( this.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7] ) { out.add(inc, 'days'); } return out; }, // Returns the date range of the full days the given range visually appears to occupy. // Returns a new range object. computeDayRange: function(range) { var startDay = range.start.clone().stripTime(); // the beginning of the day the range starts var end = range.end; var endDay = null; var endTimeMS; if (end) { endDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends endTimeMS = +end.time(); // # of milliseconds into `endDay` // If the end time is actually inclusively part of the next day and is equal to or // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`. // Otherwise, leaving it as inclusive will cause it to exclude `endDay`. if (endTimeMS && endTimeMS >= this.nextDayThreshold) { endDay.add(1, 'days'); } } // If no end was specified, or if it is within `startDay` but not past nextDayThreshold, // assign the default duration of one day. if (!end || endDay <= startDay) { endDay = startDay.clone().add(1, 'days'); } return { start: startDay, end: endDay }; }, // Does the given event visually appear to occupy more than one day? isMultiDayEvent: function(event) { var range = this.computeDayRange(event); // event is range-ish return range.end.diff(range.start, 'days') > 1; } }); function Calendar(element, instanceOptions) { var t = this; // Build options object // ----------------------------------------------------------------------------------- // Precedence (lowest to highest): defaults, rtlDefaults, langOptions, instanceOptions instanceOptions = instanceOptions || {}; var options = mergeOptions({}, defaults, instanceOptions); var langOptions; // determine language options if (options.lang in langOptionHash) { langOptions = langOptionHash[options.lang]; } else { langOptions = langOptionHash[defaults.lang]; } if (langOptions) { // if language options exist, rebuild... options = mergeOptions({}, defaults, langOptions, instanceOptions); } if (options.isRTL) { // is isRTL, rebuild... options = mergeOptions({}, defaults, rtlDefaults, langOptions || {}, instanceOptions); } // Exports // ----------------------------------------------------------------------------------- t.options = options; t.render = render; t.destroy = destroy; t.refetchEvents = refetchEvents; t.reportEvents = reportEvents; t.reportEventChange = reportEventChange; t.rerenderEvents = renderEvents; // `renderEvents` serves as a rerender. an API method t.changeView = changeView; t.select = select; t.unselect = unselect; t.prev = prev; t.next = next; t.prevYear = prevYear; t.nextYear = nextYear; t.today = today; t.gotoDate = gotoDate; t.incrementDate = incrementDate; t.zoomTo = zoomTo; t.getDate = getDate; t.getCalendar = getCalendar; t.getView = getView; t.option = option; t.trigger = trigger; t.isValidViewType = isValidViewType; t.getViewButtonText = getViewButtonText; // Language-data Internals // ----------------------------------------------------------------------------------- // Apply overrides to the current language's data var localeData = createObject( // make a cheap copy getMomentLocaleData(options.lang) // will fall back to en ); if (options.monthNames) { localeData._months = options.monthNames; } if (options.monthNamesShort) { localeData._monthsShort = options.monthNamesShort; } if (options.dayNames) { localeData._weekdays = options.dayNames; } if (options.dayNamesShort) { localeData._weekdaysShort = options.dayNamesShort; } if (options.firstDay != null) { var _week = createObject(localeData._week); // _week: { dow: # } _week.dow = options.firstDay; localeData._week = _week; } // Calendar-specific Date Utilities // ----------------------------------------------------------------------------------- t.defaultAllDayEventDuration = moment.duration(options.defaultAllDayEventDuration); t.defaultTimedEventDuration = moment.duration(options.defaultTimedEventDuration); // Builds a moment using the settings of the current calendar: timezone and language. // Accepts anything the vanilla moment() constructor accepts. t.moment = function() { var mom; if (options.timezone === 'local') { mom = fc.moment.apply(null, arguments); // Force the moment to be local, because fc.moment doesn't guarantee it. if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone mom.local(); } } else if (options.timezone === 'UTC') { mom = fc.moment.utc.apply(null, arguments); // process as UTC } else { mom = fc.moment.parseZone.apply(null, arguments); // let the input decide the zone } if ('_locale' in mom) { // moment 2.8 and above mom._locale = localeData; } else { // pre-moment-2.8 mom._lang = localeData; } return mom; }; // Returns a boolean about whether or not the calendar knows how to calculate // the timezone offset of arbitrary dates in the current timezone. t.getIsAmbigTimezone = function() { return options.timezone !== 'local' && options.timezone !== 'UTC'; }; // Returns a copy of the given date in the current timezone of it is ambiguously zoned. // This will also give the date an unambiguous time. t.rezoneDate = function(date) { return t.moment(date.toArray()); }; // Returns a moment for the current date, as defined by the client's computer, // or overridden by the `now` option. t.getNow = function() { var now = options.now; if (typeof now === 'function') { now = now(); } return t.moment(now); }; // Calculates the week number for a moment according to the calendar's // `weekNumberCalculation` setting. t.calculateWeekNumber = function(mom) { var calc = options.weekNumberCalculation; if (typeof calc === 'function') { return calc(mom); } else if (calc === 'local') { return mom.week(); } else if (calc.toUpperCase() === 'ISO') { return mom.isoWeek(); } }; // Get an event's normalized end date. If not present, calculate it from the defaults. t.getEventEnd = function(event) { if (event.end) { return event.end.clone(); } else { return t.getDefaultEventEnd(event.allDay, event.start); } }; // Given an event's allDay status and start date, return swhat its fallback end date should be. t.getDefaultEventEnd = function(allDay, start) { // TODO: rename to computeDefaultEventEnd var end = start.clone(); if (allDay) { end.stripTime().add(t.defaultAllDayEventDuration); } else { end.add(t.defaultTimedEventDuration); } if (t.getIsAmbigTimezone()) { end.stripZone(); // we don't know what the tzo should be } return end; }; // Produces a human-readable string for the given duration. // Side-effect: changes the locale of the given duration. function humanizeDuration(duration) { return (duration.locale || duration.lang).call(duration, options.lang) // works moment-pre-2.8 .humanize(); } // Imports // ----------------------------------------------------------------------------------- EventManager.call(t, options); var isFetchNeeded = t.isFetchNeeded; var fetchEvents = t.fetchEvents; // Locals // ----------------------------------------------------------------------------------- var _element = element[0]; var header; var headerElement; var content; var tm; // for making theme classes var viewSpecCache = {}; var currentView; var suggestedViewHeight; var windowResizeProxy; // wraps the windowResize function var ignoreWindowResize = 0; var date; var events = []; // Main Rendering // ----------------------------------------------------------------------------------- if (options.defaultDate != null) { date = t.moment(options.defaultDate); } else { date = t.getNow(); } function render(inc) { if (!content) { initialRender(); } else if (elementVisible()) { // mainly for the public API calcSize(); renderView(inc); } } function initialRender() { tm = options.theme ? 'ui' : 'fc'; element.addClass('fc'); if (options.isRTL) { element.addClass('fc-rtl'); } else { element.addClass('fc-ltr'); } if (options.theme) { element.addClass('ui-widget'); } else { element.addClass('fc-unthemed'); } content = $("<div class='fc-view-container'/>").prependTo(element); header = new Header(t, options); headerElement = header.render(); if (headerElement) { element.prepend(headerElement); } changeView(options.defaultView); if (options.handleWindowResize) { windowResizeProxy = debounce(windowResize, options.windowResizeDelay); // prevents rapid calls $(window).resize(windowResizeProxy); } } function destroy() { if (currentView) { currentView.destroyView(); } header.destroy(); content.remove(); element.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget'); $(window).unbind('resize', windowResizeProxy); } function elementVisible() { return element.is(':visible'); } // View Rendering // ----------------------------------------------------------------------------------- function changeView(viewType) { renderView(0, viewType); } // Renders a view because of a date change, view-type change, or for the first time function renderView(delta, viewType) { ignoreWindowResize++; // if viewType is changing, destroy the old view if (currentView && viewType && currentView.type !== viewType) { header.deactivateButton(currentView.type); freezeContentHeight(); // prevent a scroll jump when view element is removed if (currentView.start) { // rendered before? currentView.destroyView(); } currentView.el.remove(); currentView = null; } // if viewType changed, or the view was never created, create a fresh view if (!currentView && viewType) { currentView = instantiateView(viewType); currentView.el = $("<div class='fc-view fc-" + viewType + "-view' />").appendTo(content); header.activateButton(viewType); } if (currentView) { // let the view determine what the delta means if (delta < 0) { date = currentView.computePrevDate(date); } else if (delta > 0) { date = currentView.computeNextDate(date); } // render or rerender the view if ( !currentView.start || // never rendered before delta || // explicit date window change !date.isWithin(currentView.intervalStart, currentView.intervalEnd) // implicit date window change ) { if (elementVisible()) { freezeContentHeight(); if (currentView.start) { // rendered before? currentView.destroyView(); } currentView.setDate(date); currentView.renderView(); unfreezeContentHeight(); // need to do this after View::render, so dates are calculated updateTitle(); updateTodayButton(); getAndRenderEvents(); } } } unfreezeContentHeight(); // undo any lone freezeContentHeight calls ignoreWindowResize--; } // View Instantiation // ----------------------------------------------------------------------------------- // Given a view name for a custom view or a standard view, creates a ready-to-go View object function instantiateView(viewType) { var spec = getViewSpec(viewType); return new spec['class'](t, spec.options, viewType); } // Gets information about how to create a view function getViewSpec(requestedViewType) { var allDefaultButtonText = options.defaultButtonText || {}; var allButtonText = options.buttonText || {}; var hash = options.views || {}; // the `views` option object var viewType = requestedViewType; var viewOptionsChain = []; var viewOptions; var viewClass; var duration, unit, unitIsSingle = false; var buttonText; if (viewSpecCache[requestedViewType]) { return viewSpecCache[requestedViewType]; } function processSpecInput(input) { if (typeof input === 'function') { viewClass = input; } else if (typeof input === 'object') { $.extend(viewOptions, input); } } // iterate up a view's spec ancestor chain util we find a class to instantiate while (viewType && !viewClass) { viewOptions = {}; // only for this specific view in the ancestry processSpecInput(fcViews[viewType]); // $.fullCalendar.views, lower precedence processSpecInput(hash[viewType]); // options at initialization, higher precedence viewOptionsChain.unshift(viewOptions); // record older ancestors first viewType = viewOptions.type; } viewOptionsChain.unshift({}); // jQuery's extend needs at least one arg viewOptions = $.extend.apply($, viewOptionsChain); // combine all, newer ancestors overwritting old if (viewClass) { duration = viewOptions.duration || viewClass.duration; if (duration) { duration = moment.duration(duration); unit = computeIntervalUnit(duration); unitIsSingle = computeIntervalAs(unit, duration) === 1; } // options that are specified per the view's duration, like "week" or "day" if (unitIsSingle && hash[unit]) { viewOptions = $.extend({}, hash[unit], viewOptions); // lowest priority } // compute the final text for the button representing this view buttonText = allButtonText[requestedViewType] || // init options, like "agendaWeek" (unitIsSingle ? allButtonText[unit] : null) || // init options, like "week" allDefaultButtonText[requestedViewType] || // lang data, like "agendaWeek" (unitIsSingle ? allDefaultButtonText[unit] : null) || // lang data, like "week" viewOptions.buttonText || viewClass.buttonText || (duration ? humanizeDuration(duration) : null) || requestedViewType; return (viewSpecCache[requestedViewType] = { 'class': viewClass, options: viewOptions, buttonText: buttonText }); } } // Returns a boolean about whether the view is okay to instantiate at some point function isValidViewType(viewType) { return Boolean(getViewSpec(viewType)); } // Gets the text that should be displayed on a view's button in the header function getViewButtonText(viewType) { var spec = getViewSpec(viewType); if (spec) { return spec.buttonText; } } // Resizing // ----------------------------------------------------------------------------------- t.getSuggestedViewHeight = function() { if (suggestedViewHeight === undefined) { calcSize(); } return suggestedViewHeight; }; t.isHeightAuto = function() { return options.contentHeight === 'auto' || options.height === 'auto'; }; function updateSize(shouldRecalc) { if (elementVisible()) { if (shouldRecalc) { _calcSize(); } ignoreWindowResize++; currentView.updateSize(true); // isResize=true. will poll getSuggestedViewHeight() and isHeightAuto() ignoreWindowResize--; return true; // signal success } } function calcSize() { if (elementVisible()) { _calcSize(); } } function _calcSize() { // assumes elementVisible if (typeof options.contentHeight === 'number') { // exists and not 'auto' suggestedViewHeight = options.contentHeight; } else if (typeof options.height === 'number') { // exists and not 'auto' suggestedViewHeight = options.height - (headerElement ? headerElement.outerHeight(true) : 0); } else { suggestedViewHeight = Math.round(content.width() / Math.max(options.aspectRatio, .5)); } } function windowResize(ev) { if ( !ignoreWindowResize && ev.target === window && // so we don't process jqui "resize" events that have bubbled up currentView.start // view has already been rendered ) { if (updateSize(true)) { currentView.trigger('windowResize', _element); } } } /* Event Fetching/Rendering -----------------------------------------------------------------------------*/ // TODO: going forward, most of this stuff should be directly handled by the view function refetchEvents() { // can be called as an API method destroyEvents(); // so that events are cleared before user starts waiting for AJAX fetchAndRenderEvents(); } function renderEvents() { // destroys old events if previously rendered if (elementVisible()) { freezeContentHeight(); currentView.destroyViewEvents(); // no performance cost if never rendered currentView.renderViewEvents(events); unfreezeContentHeight(); } } function destroyEvents() { freezeContentHeight(); currentView.destroyViewEvents(); unfreezeContentHeight(); } function getAndRenderEvents() { if (!options.lazyFetching || isFetchNeeded(currentView.start, currentView.end)) { fetchAndRenderEvents(); } else { renderEvents(); } } function fetchAndRenderEvents() { fetchEvents(currentView.start, currentView.end); // ... will call reportEvents // ... which will call renderEvents } // called when event data arrives function reportEvents(_events) { events = _events; renderEvents(); } // called when a single event's data has been changed function reportEventChange() { renderEvents(); } /* Header Updating -----------------------------------------------------------------------------*/ function updateTitle() { header.updateTitle(currentView.computeTitle()); } function updateTodayButton() { var now = t.getNow(); if (now.isWithin(currentView.intervalStart, currentView.intervalEnd)) { header.disableButton('today'); } else { header.enableButton('today'); } } /* Selection -----------------------------------------------------------------------------*/ function select(start, end) { start = t.moment(start); if (end) { end = t.moment(end); } else if (start.hasTime()) { end = start.clone().add(t.defaultTimedEventDuration); } else { end = start.clone().add(t.defaultAllDayEventDuration); } currentView.select({ start: start, end: end }); // accepts a range } function unselect() { // safe to be called before renderView if (currentView) { currentView.unselect(); } } /* Date -----------------------------------------------------------------------------*/ function prev() { renderView(-1); } function next() { renderView(1); } function prevYear() { date.add(-1, 'years'); renderView(); } function nextYear() { date.add(1, 'years'); renderView(); } function today() { date = t.getNow(); renderView(); } function gotoDate(dateInput) { date = t.moment(dateInput); renderView(); } function incrementDate(delta) { date.add(moment.duration(delta)); renderView(); } // Forces navigation to a view for the given date. // `viewType` can be a specific view name or a generic one like "week" or "day". function zoomTo(newDate, viewType) { var viewStr; var match; if (!viewType || !isValidViewType(viewType)) { // a general view name, or "auto" viewType = viewType || 'day'; viewStr = header.getViewsWithButtons().join(' '); // space-separated string of all the views in the header // try to match a general view name, like "week", against a specific one, like "agendaWeek" match = viewStr.match(new RegExp('\\w+' + capitaliseFirstLetter(viewType))); // fall back to the day view being used in the header if (!match) { match = viewStr.match(/\w+Day/); } viewType = match ? match[0] : 'agendaDay'; // fall back to agendaDay } date = newDate; changeView(viewType); } function getDate() { return date.clone(); } /* Height "Freezing" -----------------------------------------------------------------------------*/ function freezeContentHeight() { content.css({ width: '100%', height: content.height(), overflow: 'hidden' }); } function unfreezeContentHeight() { content.css({ width: '', height: '', overflow: '' }); } /* Misc -----------------------------------------------------------------------------*/ function getCalendar() { return t; } function getView() { return currentView; } function option(name, value) { if (value === undefined) { return options[name]; } if (name == 'height' || name == 'contentHeight' || name == 'aspectRatio') { options[name] = value; updateSize(true); // true = allow recalculation of height } } function trigger(name, thisObj) { if (options[name]) { return options[name].apply( thisObj || _element, Array.prototype.slice.call(arguments, 2) ); } } } /* Top toolbar area with buttons and title ----------------------------------------------------------------------------------------------------------------------*/ // TODO: rename all header-related things to "toolbar" function Header(calendar, options) { var t = this; // exports t.render = render; t.destroy = destroy; t.updateTitle = updateTitle; t.activateButton = activateButton; t.deactivateButton = deactivateButton; t.disableButton = disableButton; t.enableButton = enableButton; t.getViewsWithButtons = getViewsWithButtons; // locals var el = $(); var viewsWithButtons = []; var tm; function render() { var sections = options.header; tm = options.theme ? 'ui' : 'fc'; if (sections) { el = $("<div class='fc-toolbar'/>") .append(renderSection('left')) .append(renderSection('right')) .append(renderSection('center')) .append('<div class="fc-clear"/>'); return el; } } function destroy() { el.remove(); } function renderSection(position) { var sectionEl = $('<div class="fc-' + position + '"/>'); var buttonStr = options.header[position]; if (buttonStr) { $.each(buttonStr.split(' '), function(i) { var groupChildren = $(); var isOnlyButtons = true; var groupEl; $.each(this.split(','), function(j, buttonName) { var buttonClick; var themeIcon; var normalIcon; var defaultText; var viewText; // highest priority var customText; var innerHtml; var classes; var button; if (buttonName == 'title') { groupChildren = groupChildren.add($('<h2> </h2>')); // we always want it to take up height isOnlyButtons = false; } else { if (calendar[buttonName]) { // a calendar method buttonClick = function() { calendar[buttonName](); }; } else if (calendar.isValidViewType(buttonName)) { // a view type buttonClick = function() { calendar.changeView(buttonName); }; viewsWithButtons.push(buttonName); viewText = calendar.getViewButtonText(buttonName); } if (buttonClick) { // smartProperty allows different text per view button (ex: "Agenda Week" vs "Basic Week") themeIcon = smartProperty(options.themeButtonIcons, buttonName); normalIcon = smartProperty(options.buttonIcons, buttonName); defaultText = smartProperty(options.defaultButtonText, buttonName); // from languages customText = smartProperty(options.buttonText, buttonName); if (viewText || customText) { innerHtml = htmlEscape(viewText || customText); } else if (themeIcon && options.theme) { innerHtml = "<span class='ui-icon ui-icon-" + themeIcon + "'></span>"; } else if (normalIcon && !options.theme) { innerHtml = "<span class='fc-icon fc-icon-" + normalIcon + "'></span>"; } else { innerHtml = htmlEscape(defaultText || buttonName); } classes = [ 'fc-' + buttonName + '-button', tm + '-button', tm + '-state-default' ]; button = $( // type="button" so that it doesn't submit a form '<button type="button" class="' + classes.join(' ') + '">' + innerHtml + '</button>' ) .click(function() { // don't process clicks for disabled buttons if (!button.hasClass(tm + '-state-disabled')) { buttonClick(); // after the click action, if the button becomes the "active" tab, or disabled, // it should never have a hover class, so remove it now. if ( button.hasClass(tm + '-state-active') || button.hasClass(tm + '-state-disabled') ) { button.removeClass(tm + '-state-hover'); } } }) .mousedown(function() { // the *down* effect (mouse pressed in). // only on buttons that are not the "active" tab, or disabled button .not('.' + tm + '-state-active') .not('.' + tm + '-state-disabled') .addClass(tm + '-state-down'); }) .mouseup(function() { // undo the *down* effect button.removeClass(tm + '-state-down'); }) .hover( function() { // the *hover* effect. // only on buttons that are not the "active" tab, or disabled button .not('.' + tm + '-state-active') .not('.' + tm + '-state-disabled') .addClass(tm + '-state-hover'); }, function() { // undo the *hover* effect button .removeClass(tm + '-state-hover') .removeClass(tm + '-state-down'); // if mouseleave happens before mouseup } ); groupChildren = groupChildren.add(button); } } }); if (isOnlyButtons) { groupChildren .first().addClass(tm + '-corner-left').end() .last().addClass(tm + '-corner-right').end(); } if (groupChildren.length > 1) { groupEl = $('<div/>'); if (isOnlyButtons) { groupEl.addClass('fc-button-group'); } groupEl.append(groupChildren); sectionEl.append(groupEl); } else { sectionEl.append(groupChildren); // 1 or 0 children } }); } return sectionEl; } function updateTitle(text) { el.find('h2').text(text); } function activateButton(buttonName) { el.find('.fc-' + buttonName + '-button') .addClass(tm + '-state-active'); } function deactivateButton(buttonName) { el.find('.fc-' + buttonName + '-button') .removeClass(tm + '-state-active'); } function disableButton(buttonName) { el.find('.fc-' + buttonName + '-button') .attr('disabled', 'disabled') .addClass(tm + '-state-disabled'); } function enableButton(buttonName) { el.find('.fc-' + buttonName + '-button') .removeAttr('disabled') .removeClass(tm + '-state-disabled'); } function getViewsWithButtons() { return viewsWithButtons; } } fc.sourceNormalizers = []; fc.sourceFetchers = []; var ajaxDefaults = { dataType: 'json', cache: false }; var eventGUID = 1; function EventManager(options) { // assumed to be a calendar var t = this; // exports t.isFetchNeeded = isFetchNeeded; t.fetchEvents = fetchEvents; t.addEventSource = addEventSource; t.removeEventSource = removeEventSource; t.updateEvent = updateEvent; t.renderEvent = renderEvent; t.removeEvents = removeEvents; t.clientEvents = clientEvents; t.mutateEvent = mutateEvent; t.normalizeEventDateProps = normalizeEventDateProps; t.ensureVisibleEventRange = ensureVisibleEventRange; // imports var trigger = t.trigger; var getView = t.getView; var reportEvents = t.reportEvents; // locals var stickySource = { events: [] }; var sources = [ stickySource ]; var rangeStart, rangeEnd; var currentFetchID = 0; var pendingSourceCnt = 0; var loadingLevel = 0; var cache = []; // holds events that have already been expanded $.each( (options.events ? [ options.events ] : []).concat(options.eventSources || []), function(i, sourceInput) { var source = buildEventSource(sourceInput); if (source) { sources.push(source); } } ); /* Fetching -----------------------------------------------------------------------------*/ function isFetchNeeded(start, end) { return !rangeStart || // nothing has been fetched yet? // or, a part of the new range is outside of the old range? (after normalizing) start.clone().stripZone() < rangeStart.clone().stripZone() || end.clone().stripZone() > rangeEnd.clone().stripZone(); } function fetchEvents(start, end) { rangeStart = start; rangeEnd = end; cache = []; var fetchID = ++currentFetchID; var len = sources.length; pendingSourceCnt = len; for (var i=0; i<len; i++) { fetchEventSource(sources[i], fetchID); } } function fetchEventSource(source, fetchID) { _fetchEventSource(source, function(eventInputs) { var isArraySource = $.isArray(source.events); var i, eventInput; var abstractEvent; if (fetchID == currentFetchID) { if (eventInputs) { for (i = 0; i < eventInputs.length; i++) { eventInput = eventInputs[i]; if (isArraySource) { // array sources have already been convert to Event Objects abstractEvent = eventInput; } else { abstractEvent = buildEventFromInput(eventInput, source); } if (abstractEvent) { // not false (an invalid event) cache.push.apply( cache, expandEvent(abstractEvent) // add individual expanded events to the cache ); } } } pendingSourceCnt--; if (!pendingSourceCnt) { reportEvents(cache); } } }); } function _fetchEventSource(source, callback) { var i; var fetchers = fc.sourceFetchers; var res; for (i=0; i<fetchers.length; i++) { res = fetchers[i].call( t, // this, the Calendar object source, rangeStart.clone(), rangeEnd.clone(), options.timezone, callback ); if (res === true) { // the fetcher is in charge. made its own async request return; } else if (typeof res == 'object') { // the fetcher returned a new source. process it _fetchEventSource(res, callback); return; } } var events = source.events; if (events) { if ($.isFunction(events)) { pushLoading(); events.call( t, // this, the Calendar object rangeStart.clone(), rangeEnd.clone(), options.timezone, function(events) { callback(events); popLoading(); } ); } else if ($.isArray(events)) { callback(events); } else { callback(); } }else{ var url = source.url; if (url) { var success = source.success; var error = source.error; var complete = source.complete; // retrieve any outbound GET/POST $.ajax data from the options var customData; if ($.isFunction(source.data)) { // supplied as a function that returns a key/value object customData = source.data(); } else { // supplied as a straight key/value object customData = source.data; } // use a copy of the custom data so we can modify the parameters // and not affect the passed-in object. var data = $.extend({}, customData || {}); var startParam = firstDefined(source.startParam, options.startParam); var endParam = firstDefined(source.endParam, options.endParam); var timezoneParam = firstDefined(source.timezoneParam, options.timezoneParam); if (startParam) { data[startParam] = rangeStart.format(); } if (endParam) { data[endParam] = rangeEnd.format(); } if (options.timezone && options.timezone != 'local') { data[timezoneParam] = options.timezone; } pushLoading(); $.ajax($.extend({}, ajaxDefaults, source, { data: data, success: function(events) { events = events || []; var res = applyAll(success, this, arguments); if ($.isArray(res)) { events = res; } callback(events); }, error: function() { applyAll(error, this, arguments); callback(); }, complete: function() { applyAll(complete, this, arguments); popLoading(); } })); }else{ callback(); } } } /* Sources -----------------------------------------------------------------------------*/ function addEventSource(sourceInput) { var source = buildEventSource(sourceInput); if (source) { sources.push(source); pendingSourceCnt++; fetchEventSource(source, currentFetchID); // will eventually call reportEvents } } function buildEventSource(sourceInput) { // will return undefined if invalid source var normalizers = fc.sourceNormalizers; var source; var i; if ($.isFunction(sourceInput) || $.isArray(sourceInput)) { source = { events: sourceInput }; } else if (typeof sourceInput === 'string') { source = { url: sourceInput }; } else if (typeof sourceInput === 'object') { source = $.extend({}, sourceInput); // shallow copy } if (source) { // TODO: repeat code, same code for event classNames if (source.className) { if (typeof source.className === 'string') { source.className = source.className.split(/\s+/); } // otherwise, assumed to be an array } else { source.className = []; } // for array sources, we convert to standard Event Objects up front if ($.isArray(source.events)) { source.origArray = source.events; // for removeEventSource source.events = $.map(source.events, function(eventInput) { return buildEventFromInput(eventInput, source); }); } for (i=0; i<normalizers.length; i++) { normalizers[i].call(t, source); } return source; } } function removeEventSource(source) { sources = $.grep(sources, function(src) { return !isSourcesEqual(src, source); }); // remove all client events from that source cache = $.grep(cache, function(e) { return !isSourcesEqual(e.source, source); }); reportEvents(cache); } function isSourcesEqual(source1, source2) { return source1 && source2 && getSourcePrimitive(source1) == getSourcePrimitive(source2); } function getSourcePrimitive(source) { return ( (typeof source === 'object') ? // a normalized event source? (source.origArray || source.googleCalendarId || source.url || source.events) : // get the primitive null ) || source; // the given argument *is* the primitive } /* Manipulation -----------------------------------------------------------------------------*/ // Only ever called from the externally-facing API function updateEvent(event) { // massage start/end values, even if date string values event.start = t.moment(event.start); if (event.end) { event.end = t.moment(event.end); } else { event.end = null; } mutateEvent(event, getMiscEventProps(event)); // will handle start/end/allDay normalization reportEvents(cache); // reports event modifications (so we can redraw) } // Returns a hash of misc event properties that should be copied over to related events. function getMiscEventProps(event) { var props = {}; $.each(event, function(name, val) { if (isMiscEventPropName(name)) { if (val !== undefined && isAtomic(val)) { // a defined non-object props[name] = val; } } }); return props; } // non-date-related, non-id-related, non-secret function isMiscEventPropName(name) { return !/^_|^(id|allDay|start|end)$/.test(name); } // returns the expanded events that were created function renderEvent(eventInput, stick) { var abstractEvent = buildEventFromInput(eventInput); var events; var i, event; if (abstractEvent) { // not false (a valid input) events = expandEvent(abstractEvent); for (i = 0; i < events.length; i++) { event = events[i]; if (!event.source) { if (stick) { stickySource.events.push(event); event.source = stickySource; } cache.push(event); } } reportEvents(cache); return events; } return []; } function removeEvents(filter) { var eventID; var i; if (filter == null) { // null or undefined. remove all events filter = function() { return true; }; // will always match } else if (!$.isFunction(filter)) { // an event ID eventID = filter + ''; filter = function(event) { return event._id == eventID; }; } // Purge event(s) from our local cache cache = $.grep(cache, filter, true); // inverse=true // Remove events from array sources. // This works because they have been converted to official Event Objects up front. // (and as a result, event._id has been calculated). for (i=0; i<sources.length; i++) { if ($.isArray(sources[i].events)) { sources[i].events = $.grep(sources[i].events, filter, true); } } reportEvents(cache); } function clientEvents(filter) { if ($.isFunction(filter)) { return $.grep(cache, filter); } else if (filter != null) { // not null, not undefined. an event ID filter += ''; return $.grep(cache, function(e) { return e._id == filter; }); } return cache; // else, return all } /* Loading State -----------------------------------------------------------------------------*/ function pushLoading() { if (!(loadingLevel++)) { trigger('loading', null, true, getView()); } } function popLoading() { if (!(--loadingLevel)) { trigger('loading', null, false, getView()); } } /* Event Normalization -----------------------------------------------------------------------------*/ // Given a raw object with key/value properties, returns an "abstract" Event object. // An "abstract" event is an event that, if recurring, will not have been expanded yet. // Will return `false` when input is invalid. // `source` is optional function buildEventFromInput(input, source) { var out = {}; var start, end; var allDay; if (options.eventDataTransform) { input = options.eventDataTransform(input); } if (source && source.eventDataTransform) { input = source.eventDataTransform(input); } // Copy all properties over to the resulting object. // The special-case properties will be copied over afterwards. $.extend(out, input); if (source) { out.source = source; } out._id = input._id || (input.id === undefined ? '_fc' + eventGUID++ : input.id + ''); if (input.className) { if (typeof input.className == 'string') { out.className = input.className.split(/\s+/); } else { // assumed to be an array out.className = input.className; } } else { out.className = []; } start = input.start || input.date; // "date" is an alias for "start" end = input.end; // parse as a time (Duration) if applicable if (isTimeString(start)) { start = moment.duration(start); } if (isTimeString(end)) { end = moment.duration(end); } if (input.dow || moment.isDuration(start) || moment.isDuration(end)) { // the event is "abstract" (recurring) so don't calculate exact start/end dates just yet out.start = start ? moment.duration(start) : null; // will be a Duration or null out.end = end ? moment.duration(end) : null; // will be a Duration or null out._recurring = true; // our internal marker } else { if (start) { start = t.moment(start); if (!start.isValid()) { return false; } } if (end) { end = t.moment(end); if (!end.isValid()) { end = null; // let defaults take over } } allDay = input.allDay; if (allDay === undefined) { // still undefined? fallback to default allDay = firstDefined( source ? source.allDayDefault : undefined, options.allDayDefault ); // still undefined? normalizeEventDateProps will calculate it } assignDatesToEvent(start, end, allDay, out); } return out; } // Normalizes and assigns the given dates to the given partially-formed event object. // NOTE: mutates the given start/end moments. does not make a copy. function assignDatesToEvent(start, end, allDay, event) { event.start = start; event.end = end; event.allDay = allDay; normalizeEventDateProps(event); backupEventDates(event); } // Ensures the allDay property exists. // Ensures the start/end dates are consistent with allDay and forceEventDuration. // Accepts an Event object, or a plain object with event-ish properties. // NOTE: Will modify the given object. function normalizeEventDateProps(props) { if (props.allDay == null) { props.allDay = !(props.start.hasTime() || (props.end && props.end.hasTime())); } if (props.allDay) { props.start.stripTime(); if (props.end) { props.end.stripTime(); } } else { if (!props.start.hasTime()) { props.start = t.rezoneDate(props.start); // will also give it a 00:00 time } if (props.end && !props.end.hasTime()) { props.end = t.rezoneDate(props.end); // will also give it a 00:00 time } } if (props.end && !props.end.isAfter(props.start)) { props.end = null; } if (!props.end) { if (options.forceEventDuration) { props.end = t.getDefaultEventEnd(props.allDay, props.start); } else { props.end = null; } } } // If `range` is a proper range with a start and end, returns the original object. // If missing an end, computes a new range with an end, computing it as if it were an event. // TODO: make this a part of the event -> eventRange system function ensureVisibleEventRange(range) { var allDay; if (!range.end) { allDay = range.allDay; // range might be more event-ish than we think if (allDay == null) { allDay = !range.start.hasTime(); } range = { start: range.start, end: t.getDefaultEventEnd(allDay, range.start) }; } return range; } // If the given event is a recurring event, break it down into an array of individual instances. // If not a recurring event, return an array with the single original event. // If given a falsy input (probably because of a failed buildEventFromInput call), returns an empty array. // HACK: can override the recurring window by providing custom rangeStart/rangeEnd (for businessHours). function expandEvent(abstractEvent, _rangeStart, _rangeEnd) { var events = []; var dowHash; var dow; var i; var date; var startTime, endTime; var start, end; var event; _rangeStart = _rangeStart || rangeStart; _rangeEnd = _rangeEnd || rangeEnd; if (abstractEvent) { if (abstractEvent._recurring) { // make a boolean hash as to whether the event occurs on each day-of-week if ((dow = abstractEvent.dow)) { dowHash = {}; for (i = 0; i < dow.length; i++) { dowHash[dow[i]] = true; } } // iterate through every day in the current range date = _rangeStart.clone().stripTime(); // holds the date of the current day while (date.isBefore(_rangeEnd)) { if (!dowHash || dowHash[date.day()]) { // if everyday, or this particular day-of-week startTime = abstractEvent.start; // the stored start and end properties are times (Durations) endTime = abstractEvent.end; // " start = date.clone(); end = null; if (startTime) { start = start.time(startTime); } if (endTime) { end = date.clone().time(endTime); } event = $.extend({}, abstractEvent); // make a copy of the original assignDatesToEvent( start, end, !startTime && !endTime, // allDay? event ); events.push(event); } date.add(1, 'days'); } } else { events.push(abstractEvent); // return the original event. will be a one-item array } } return events; } /* Event Modification Math -----------------------------------------------------------------------------------------*/ // Modifies an event and all related events by applying the given properties. // Special date-diffing logic is used for manipulation of dates. // If `props` does not contain start/end dates, the updated values are assumed to be the event's current start/end. // All date comparisons are done against the event's pristine _start and _end dates. // Returns an object with delta information and a function to undo all operations. // function mutateEvent(event, props) { var miscProps = {}; var clearEnd; var dateDelta; var durationDelta; var undoFunc; props = props || {}; // ensure new date-related values to compare against if (!props.start) { props.start = event.start.clone(); } if (props.end === undefined) { props.end = event.end ? event.end.clone() : null; } if (props.allDay == null) { // is null or undefined? props.allDay = event.allDay; } normalizeEventDateProps(props); // massages start/end/allDay // clear the end date if explicitly changed to null clearEnd = event._end !== null && props.end === null; // compute the delta for moving the start and end dates together if (props.allDay) { dateDelta = diffDay(props.start, event._start); // whole-day diff from start-of-day } else { dateDelta = diffDayTime(props.start, event._start); } // compute the delta for moving the end date (after applying dateDelta) if (!clearEnd && props.end) { durationDelta = diffDayTime( // new duration props.end, props.start ).subtract(diffDayTime( // subtract old duration event._end || t.getDefaultEventEnd(event._allDay, event._start), event._start )); } // gather all non-date-related properties $.each(props, function(name, val) { if (isMiscEventPropName(name)) { if (val !== undefined) { miscProps[name] = val; } } }); // apply the operations to the event and all related events undoFunc = mutateEvents( clientEvents(event._id), // get events with this ID clearEnd, props.allDay, dateDelta, durationDelta, miscProps ); return { dateDelta: dateDelta, durationDelta: durationDelta, undo: undoFunc }; } // Modifies an array of events in the following ways (operations are in order): // - clear the event's `end` // - convert the event to allDay // - add `dateDelta` to the start and end // - add `durationDelta` to the event's duration // - assign `miscProps` to the event // // Returns a function that can be called to undo all the operations. // // TODO: don't use so many closures. possible memory issues when lots of events with same ID. // function mutateEvents(events, clearEnd, allDay, dateDelta, durationDelta, miscProps) { var isAmbigTimezone = t.getIsAmbigTimezone(); var undoFunctions = []; // normalize zero-length deltas to be null if (dateDelta && !dateDelta.valueOf()) { dateDelta = null; } if (durationDelta && !durationDelta.valueOf()) { durationDelta = null; } $.each(events, function(i, event) { var oldProps; var newProps; // build an object holding all the old values, both date-related and misc. // for the undo function. oldProps = { start: event.start.clone(), end: event.end ? event.end.clone() : null, allDay: event.allDay }; $.each(miscProps, function(name) { oldProps[name] = event[name]; }); // new date-related properties. work off the original date snapshot. // ok to use references because they will be thrown away when backupEventDates is called. newProps = { start: event._start, end: event._end, allDay: event._allDay }; if (clearEnd) { newProps.end = null; } newProps.allDay = allDay; normalizeEventDateProps(newProps); // massages start/end/allDay if (dateDelta) { newProps.start.add(dateDelta); if (newProps.end) { newProps.end.add(dateDelta); } } if (durationDelta) { if (!newProps.end) { newProps.end = t.getDefaultEventEnd(newProps.allDay, newProps.start); } newProps.end.add(durationDelta); } // if the dates have changed, and we know it is impossible to recompute the // timezone offsets, strip the zone. if ( isAmbigTimezone && !newProps.allDay && (dateDelta || durationDelta) ) { newProps.start.stripZone(); if (newProps.end) { newProps.end.stripZone(); } } $.extend(event, miscProps, newProps); // copy over misc props, then date-related props backupEventDates(event); // regenerate internal _start/_end/_allDay undoFunctions.push(function() { $.extend(event, oldProps); backupEventDates(event); // regenerate internal _start/_end/_allDay }); }); return function() { for (var i = 0; i < undoFunctions.length; i++) { undoFunctions[i](); } }; } /* Business Hours -----------------------------------------------------------------------------------------*/ t.getBusinessHoursEvents = getBusinessHoursEvents; // Returns an array of events as to when the business hours occur in the given view. // Abuse of our event system :( function getBusinessHoursEvents() { var optionVal = options.businessHours; var defaultVal = { className: 'fc-nonbusiness', start: '09:00', end: '17:00', dow: [ 1, 2, 3, 4, 5 ], // monday - friday rendering: 'inverse-background' }; var view = t.getView(); var eventInput; if (optionVal) { if (typeof optionVal === 'object') { // option value is an object that can override the default business hours eventInput = $.extend({}, defaultVal, optionVal); } else { // option value is `true`. use default business hours eventInput = defaultVal; } } if (eventInput) { return expandEvent( buildEventFromInput(eventInput), view.start, view.end ); } return []; } /* Overlapping / Constraining -----------------------------------------------------------------------------------------*/ t.isEventRangeAllowed = isEventRangeAllowed; t.isSelectionRangeAllowed = isSelectionRangeAllowed; t.isExternalDropRangeAllowed = isExternalDropRangeAllowed; function isEventRangeAllowed(range, event) { var source = event.source || {}; var constraint = firstDefined( event.constraint, source.constraint, options.eventConstraint ); var overlap = firstDefined( event.overlap, source.overlap, options.eventOverlap ); range = ensureVisibleEventRange(range); // ensure a proper range with an end for isRangeAllowed return isRangeAllowed(range, constraint, overlap, event); } function isSelectionRangeAllowed(range) { return isRangeAllowed(range, options.selectConstraint, options.selectOverlap); } // when `eventProps` is defined, consider this an event. // `eventProps` can contain misc non-date-related info about the event. function isExternalDropRangeAllowed(range, eventProps) { var eventInput; var event; // note: very similar logic is in View's reportExternalDrop if (eventProps) { eventInput = $.extend({}, eventProps, range); event = expandEvent(buildEventFromInput(eventInput))[0]; } if (event) { return isEventRangeAllowed(range, event); } else { // treat it as a selection range = ensureVisibleEventRange(range); // ensure a proper range with an end for isSelectionRangeAllowed return isSelectionRangeAllowed(range); } } // Returns true if the given range (caused by an event drop/resize or a selection) is allowed to exist // according to the constraint/overlap settings. // `event` is not required if checking a selection. function isRangeAllowed(range, constraint, overlap, event) { var constraintEvents; var anyContainment; var i, otherEvent; var otherOverlap; // normalize. fyi, we're normalizing in too many places :( range = { start: range.start.clone().stripZone(), end: range.end.clone().stripZone() }; // the range must be fully contained by at least one of produced constraint events if (constraint != null) { // not treated as an event! intermediate data structure // TODO: use ranges in the future constraintEvents = constraintToEvents(constraint); anyContainment = false; for (i = 0; i < constraintEvents.length; i++) { if (eventContainsRange(constraintEvents[i], range)) { anyContainment = true; break; } } if (!anyContainment) { return false; } } for (i = 0; i < cache.length; i++) { // loop all events and detect overlap otherEvent = cache[i]; // don't compare the event to itself or other related [repeating] events if (event && event._id === otherEvent._id) { continue; } // there needs to be an actual intersection before disallowing anything if (eventIntersectsRange(otherEvent, range)) { // evaluate overlap for the given range and short-circuit if necessary if (overlap === false) { return false; } else if (typeof overlap === 'function' && !overlap(otherEvent, event)) { return false; } // if we are computing if the given range is allowable for an event, consider the other event's // EventObject-specific or Source-specific `overlap` property if (event) { otherOverlap = firstDefined( otherEvent.overlap, (otherEvent.source || {}).overlap // we already considered the global `eventOverlap` ); if (otherOverlap === false) { return false; } if (typeof otherOverlap === 'function' && !otherOverlap(event, otherEvent)) { return false; } } } } return true; } // Given an event input from the API, produces an array of event objects. Possible event inputs: // 'businessHours' // An event ID (number or string) // An object with specific start/end dates or a recurring event (like what businessHours accepts) function constraintToEvents(constraintInput) { if (constraintInput === 'businessHours') { return getBusinessHoursEvents(); } if (typeof constraintInput === 'object') { return expandEvent(buildEventFromInput(constraintInput)); } return clientEvents(constraintInput); // probably an ID } // Does the event's date range fully contain the given range? // start/end already assumed to have stripped zones :( function eventContainsRange(event, range) { var eventStart = event.start.clone().stripZone(); var eventEnd = t.getEventEnd(event).stripZone(); return range.start >= eventStart && range.end <= eventEnd; } // Does the event's date range intersect with the given range? // start/end already assumed to have stripped zones :( function eventIntersectsRange(event, range) { var eventStart = event.start.clone().stripZone(); var eventEnd = t.getEventEnd(event).stripZone(); return range.start < eventEnd && range.end > eventStart; } } // updates the "backup" properties, which are preserved in order to compute diffs later on. function backupEventDates(event) { event._allDay = event.allDay; event._start = event.start.clone(); event._end = event.end ? event.end.clone() : null; } /* An abstract class for the "basic" views, as well as month view. Renders one or more rows of day cells. ----------------------------------------------------------------------------------------------------------------------*/ // It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. // It is responsible for managing width/height. var BasicView = fcViews.basic = View.extend({ dayGrid: null, // the main subcomponent that does most of the heavy lifting dayNumbersVisible: false, // display day numbers on each day cell? weekNumbersVisible: false, // display week numbers along the side? weekNumberWidth: null, // width of all the week-number cells running down the side headRowEl: null, // the fake row element of the day-of-week header initialize: function() { this.dayGrid = new DayGrid(this); this.coordMap = this.dayGrid.coordMap; // the view's date-to-cell mapping is identical to the subcomponent's }, // Sets the display range and computes all necessary dates setRange: function(range) { View.prototype.setRange.call(this, range); // call the super-method this.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit); // do before setRange this.dayGrid.setRange(range); }, // Compute the value to feed into setRange. Overrides superclass. computeRange: function(date) { var range = View.prototype.computeRange.call(this, date); // get value from the super-method // year and month views should be aligned with weeks. this is already done for week if (/year|month/.test(range.intervalUnit)) { range.start.startOf('week'); range.start = this.skipHiddenDays(range.start); // make end-of-week if not already if (range.end.weekday()) { range.end.add(1, 'week').startOf('week'); range.end = this.skipHiddenDays(range.end, -1, true); // exclusively move backwards } } return range; }, // Renders the view into `this.el`, which should already be assigned render: function() { this.dayNumbersVisible = this.dayGrid.rowCnt > 1; // TODO: make grid responsible this.weekNumbersVisible = this.opt('weekNumbers'); this.dayGrid.numbersVisible = this.dayNumbersVisible || this.weekNumbersVisible; this.el.addClass('fc-basic-view').html(this.renderHtml()); this.headRowEl = this.el.find('thead .fc-row'); this.scrollerEl = this.el.find('.fc-day-grid-container'); this.dayGrid.coordMap.containerEl = this.scrollerEl; // constrain clicks/etc to the dimensions of the scroller this.dayGrid.el = this.el.find('.fc-day-grid'); this.dayGrid.render(this.hasRigidRows()); }, // Make subcomponents ready for cleanup destroy: function() { this.dayGrid.destroy(); View.prototype.destroy.call(this); // call the super-method }, // Builds the HTML skeleton for the view. // The day-grid component will render inside of a container defined by this HTML. renderHtml: function() { return '' + '<table>' + '<thead>' + '<tr>' + '<td class="' + this.widgetHeaderClass + '">' + this.dayGrid.headHtml() + // render the day-of-week headers '</td>' + '</tr>' + '</thead>' + '<tbody>' + '<tr>' + '<td class="' + this.widgetContentClass + '">' + '<div class="fc-day-grid-container">' + '<div class="fc-day-grid"/>' + '</div>' + '</td>' + '</tr>' + '</tbody>' + '</table>'; }, // Generates the HTML that will go before the day-of week header cells. // Queried by the DayGrid subcomponent when generating rows. Ordering depends on isRTL. headIntroHtml: function() { if (this.weekNumbersVisible) { return '' + '<th class="fc-week-number ' + this.widgetHeaderClass + '" ' + this.weekNumberStyleAttr() + '>' + '<span>' + // needed for matchCellWidths htmlEscape(this.opt('weekNumberTitle')) + '</span>' + '</th>'; } }, // Generates the HTML that will go before content-skeleton cells that display the day/week numbers. // Queried by the DayGrid subcomponent. Ordering depends on isRTL. numberIntroHtml: function(row) { if (this.weekNumbersVisible) { return '' + '<td class="fc-week-number" ' + this.weekNumberStyleAttr() + '>' + '<span>' + // needed for matchCellWidths this.calendar.calculateWeekNumber(this.dayGrid.getCell(row, 0).start) + '</span>' + '</td>'; } }, // Generates the HTML that goes before the day bg cells for each day-row. // Queried by the DayGrid subcomponent. Ordering depends on isRTL. dayIntroHtml: function() { if (this.weekNumbersVisible) { return '<td class="fc-week-number ' + this.widgetContentClass + '" ' + this.weekNumberStyleAttr() + '></td>'; } }, // Generates the HTML that goes before every other type of row generated by DayGrid. Ordering depends on isRTL. // Affects helper-skeleton and highlight-skeleton rows. introHtml: function() { if (this.weekNumbersVisible) { return '<td class="fc-week-number" ' + this.weekNumberStyleAttr() + '></td>'; } }, // Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton. // The number row will only exist if either day numbers or week numbers are turned on. numberCellHtml: function(cell) { var date = cell.start; var classes; if (!this.dayNumbersVisible) { // if there are week numbers but not day numbers return '<td/>'; // will create an empty space above events :( } classes = this.dayGrid.getDayClasses(date); classes.unshift('fc-day-number'); return '' + '<td class="' + classes.join(' ') + '" data-date="' + date.format() + '">' + date.date() + '</td>'; }, // Generates an HTML attribute string for setting the width of the week number column, if it is known weekNumberStyleAttr: function() { if (this.weekNumberWidth !== null) { return 'style="width:' + this.weekNumberWidth + 'px"'; } return ''; }, // Determines whether each row should have a constant height hasRigidRows: function() { var eventLimit = this.opt('eventLimit'); return eventLimit && typeof eventLimit !== 'number'; }, /* Dimensions ------------------------------------------------------------------------------------------------------------------*/ // Refreshes the horizontal dimensions of the view updateWidth: function() { if (this.weekNumbersVisible) { // Make sure all week number cells running down the side have the same width. // Record the width for cells created later. this.weekNumberWidth = matchCellWidths( this.el.find('.fc-week-number') ); } }, // Adjusts the vertical dimensions of the view to the specified values setHeight: function(totalHeight, isAuto) { var eventLimit = this.opt('eventLimit'); var scrollerHeight; // reset all heights to be natural unsetScroller(this.scrollerEl); uncompensateScroll(this.headRowEl); this.dayGrid.destroySegPopover(); // kill the "more" popover if displayed // is the event limit a constant level number? if (eventLimit && typeof eventLimit === 'number') { this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after } scrollerHeight = this.computeScrollerHeight(totalHeight); this.setGridHeight(scrollerHeight, isAuto); // is the event limit dynamically calculated? if (eventLimit && typeof eventLimit !== 'number') { this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set } if (!isAuto && setPotentialScroller(this.scrollerEl, scrollerHeight)) { // using scrollbars? compensateScroll(this.headRowEl, getScrollbarWidths(this.scrollerEl)); // doing the scrollbar compensation might have created text overflow which created more height. redo scrollerHeight = this.computeScrollerHeight(totalHeight); this.scrollerEl.height(scrollerHeight); this.restoreScroll(); } }, // Sets the height of just the DayGrid component in this view setGridHeight: function(height, isAuto) { if (isAuto) { undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding } else { distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows } }, /* Events ------------------------------------------------------------------------------------------------------------------*/ // Renders the given events onto the view and populates the segments array renderEvents: function(events) { this.dayGrid.renderEvents(events); this.updateHeight(); // must compensate for events that overflow the row }, // Retrieves all segment objects that are rendered in the view getEventSegs: function() { return this.dayGrid.getEventSegs(); }, // Unrenders all event elements and clears internal segment data destroyEvents: function() { this.recordScroll(); // removing events will reduce height and mess with the scroll, so record beforehand this.dayGrid.destroyEvents(); // we DON'T need to call updateHeight() because: // A) a renderEvents() call always happens after this, which will eventually call updateHeight() // B) in IE8, this causes a flash whenever events are rerendered }, /* Dragging (for both events and external elements) ------------------------------------------------------------------------------------------------------------------*/ // A returned value of `true` signals that a mock "helper" event has been rendered. renderDrag: function(dropLocation, seg) { return this.dayGrid.renderDrag(dropLocation, seg); }, destroyDrag: function() { this.dayGrid.destroyDrag(); }, /* Selection ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of a selection renderSelection: function(range) { this.dayGrid.renderSelection(range); }, // Unrenders a visual indications of a selection destroySelection: function() { this.dayGrid.destroySelection(); } }); /* A month view with day cells running in rows (one-per-week) and columns ----------------------------------------------------------------------------------------------------------------------*/ setDefaults({ fixedWeekCount: true }); var MonthView = fcViews.month = BasicView.extend({ // Produces information about what range to display computeRange: function(date) { var range = BasicView.prototype.computeRange.call(this, date); // get value from super-method if (this.isFixedWeeks()) { // ensure 6 weeks range.end.add( 6 - range.end.diff(range.start, 'weeks'), 'weeks' ); } return range; }, // Overrides the default BasicView behavior to have special multi-week auto-height logic setGridHeight: function(height, isAuto) { isAuto = isAuto || this.opt('weekMode') === 'variable'; // LEGACY: weekMode is deprecated // if auto, make the height of each row the height that it would be if there were 6 weeks if (isAuto) { height *= this.rowCnt / 6; } distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows }, isFixedWeeks: function() { var weekMode = this.opt('weekMode'); // LEGACY: weekMode is deprecated if (weekMode) { return weekMode === 'fixed'; // if any other type of weekMode, assume NOT fixed } return this.opt('fixedWeekCount'); } }); MonthView.duration = { months: 1 }; /* A week view with simple day cells running horizontally ----------------------------------------------------------------------------------------------------------------------*/ fcViews.basicWeek = { type: 'basic', duration: { weeks: 1 } }; /* A view with a single simple day cell ----------------------------------------------------------------------------------------------------------------------*/ fcViews.basicDay = { type: 'basic', duration: { days: 1 } }; /* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically. ----------------------------------------------------------------------------------------------------------------------*/ // Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on). // Responsible for managing width/height. setDefaults({ allDaySlot: true, allDayText: 'all-day', scrollTime: '06:00:00', slotDuration: '00:30:00', minTime: '00:00:00', maxTime: '24:00:00', slotEventOverlap: true }); var AGENDA_ALL_DAY_EVENT_LIMIT = 5; fcViews.agenda = View.extend({ // AgendaView timeGrid: null, // the main time-grid subcomponent of this view dayGrid: null, // the "all-day" subcomponent. if all-day is turned off, this will be null axisWidth: null, // the width of the time axis running down the side noScrollRowEls: null, // set of fake row elements that must compensate when scrollerEl has scrollbars // when the time-grid isn't tall enough to occupy the given height, we render an <hr> underneath bottomRuleEl: null, bottomRuleHeight: null, initialize: function() { this.timeGrid = new TimeGrid(this); if (this.opt('allDaySlot')) { // should we display the "all-day" area? this.dayGrid = new DayGrid(this); // the all-day subcomponent of this view // the coordinate grid will be a combination of both subcomponents' grids this.coordMap = new ComboCoordMap([ this.dayGrid.coordMap, this.timeGrid.coordMap ]); } else { this.coordMap = this.timeGrid.coordMap; } }, /* Rendering ------------------------------------------------------------------------------------------------------------------*/ // Sets the display range and computes all necessary dates setRange: function(range) { View.prototype.setRange.call(this, range); // call the super-method this.timeGrid.setRange(range); if (this.dayGrid) { this.dayGrid.setRange(range); } }, // Renders the view into `this.el`, which has already been assigned render: function() { this.el.addClass('fc-agenda-view').html(this.renderHtml()); // the element that wraps the time-grid that will probably scroll this.scrollerEl = this.el.find('.fc-time-grid-container'); this.timeGrid.coordMap.containerEl = this.scrollerEl; // don't accept clicks/etc outside of this this.timeGrid.el = this.el.find('.fc-time-grid'); this.timeGrid.render(); // the <hr> that sometimes displays under the time-grid this.bottomRuleEl = $('<hr class="' + this.widgetHeaderClass + '"/>') .appendTo(this.timeGrid.el); // inject it into the time-grid if (this.dayGrid) { this.dayGrid.el = this.el.find('.fc-day-grid'); this.dayGrid.render(); // have the day-grid extend it's coordinate area over the <hr> dividing the two grids this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight(); } this.noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); // fake rows not within the scroller }, // Make subcomponents ready for cleanup destroy: function() { this.timeGrid.destroy(); if (this.dayGrid) { this.dayGrid.destroy(); } View.prototype.destroy.call(this); // call the super-method }, // Builds the HTML skeleton for the view. // The day-grid and time-grid components will render inside containers defined by this HTML. renderHtml: function() { return '' + '<table>' + '<thead>' + '<tr>' + '<td class="' + this.widgetHeaderClass + '">' + this.timeGrid.headHtml() + // render the day-of-week headers '</td>' + '</tr>' + '</thead>' + '<tbody>' + '<tr>' + '<td class="' + this.widgetContentClass + '">' + (this.dayGrid ? '<div class="fc-day-grid"/>' + '<hr class="' + this.widgetHeaderClass + '"/>' : '' ) + '<div class="fc-time-grid-container">' + '<div class="fc-time-grid"/>' + '</div>' + '</td>' + '</tr>' + '</tbody>' + '</table>'; }, // Generates the HTML that will go before the day-of week header cells. // Queried by the TimeGrid subcomponent when generating rows. Ordering depends on isRTL. headIntroHtml: function() { var date; var weekNumber; var weekTitle; var weekText; if (this.opt('weekNumbers')) { date = this.timeGrid.getCell(0).start; weekNumber = this.calendar.calculateWeekNumber(date); weekTitle = this.opt('weekNumberTitle'); if (this.opt('isRTL')) { weekText = weekNumber + weekTitle; } else { weekText = weekTitle + weekNumber; } return '' + '<th class="fc-axis fc-week-number ' + this.widgetHeaderClass + '" ' + this.axisStyleAttr() + '>' + '<span>' + // needed for matchCellWidths htmlEscape(weekText) + '</span>' + '</th>'; } else { return '<th class="fc-axis ' + this.widgetHeaderClass + '" ' + this.axisStyleAttr() + '></th>'; } }, // Generates the HTML that goes before the all-day cells. // Queried by the DayGrid subcomponent when generating rows. Ordering depends on isRTL. dayIntroHtml: function() { return '' + '<td class="fc-axis ' + this.widgetContentClass + '" ' + this.axisStyleAttr() + '>' + '<span>' + // needed for matchCellWidths (this.opt('allDayHtml') || htmlEscape(this.opt('allDayText'))) + '</span>' + '</td>'; }, // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column. slotBgIntroHtml: function() { return '<td class="fc-axis ' + this.widgetContentClass + '" ' + this.axisStyleAttr() + '></td>'; }, // Generates the HTML that goes before all other types of cells. // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. // Queried by the TimeGrid and DayGrid subcomponents when generating rows. Ordering depends on isRTL. introHtml: function() { return '<td class="fc-axis" ' + this.axisStyleAttr() + '></td>'; }, // Generates an HTML attribute string for setting the width of the axis, if it is known axisStyleAttr: function() { if (this.axisWidth !== null) { return 'style="width:' + this.axisWidth + 'px"'; } return ''; }, /* Dimensions ------------------------------------------------------------------------------------------------------------------*/ updateSize: function(isResize) { if (isResize) { this.timeGrid.resize(); } View.prototype.updateSize.call(this, isResize); }, // Refreshes the horizontal dimensions of the view updateWidth: function() { // make all axis cells line up, and record the width so newly created axis cells will have it this.axisWidth = matchCellWidths(this.el.find('.fc-axis')); }, // Adjusts the vertical dimensions of the view to the specified values setHeight: function(totalHeight, isAuto) { var eventLimit; var scrollerHeight; if (this.bottomRuleHeight === null) { // calculate the height of the rule the very first time this.bottomRuleHeight = this.bottomRuleEl.outerHeight(); } this.bottomRuleEl.hide(); // .show() will be called later if this <hr> is necessary // reset all dimensions back to the original state this.scrollerEl.css('overflow', ''); unsetScroller(this.scrollerEl); uncompensateScroll(this.noScrollRowEls); // limit number of events in the all-day area if (this.dayGrid) { this.dayGrid.destroySegPopover(); // kill the "more" popover if displayed eventLimit = this.opt('eventLimit'); if (eventLimit && typeof eventLimit !== 'number') { eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure "auto" goes to a real number } if (eventLimit) { this.dayGrid.limitRows(eventLimit); } } if (!isAuto) { // should we force dimensions of the scroll container, or let the contents be natural height? scrollerHeight = this.computeScrollerHeight(totalHeight); if (setPotentialScroller(this.scrollerEl, scrollerHeight)) { // using scrollbars? // make the all-day and header rows lines up compensateScroll(this.noScrollRowEls, getScrollbarWidths(this.scrollerEl)); // the scrollbar compensation might have changed text flow, which might affect height, so recalculate // and reapply the desired height to the scroller. scrollerHeight = this.computeScrollerHeight(totalHeight); this.scrollerEl.height(scrollerHeight); this.restoreScroll(); } else { // no scrollbars // still, force a height and display the bottom rule (marks the end of day) this.scrollerEl.height(scrollerHeight).css('overflow', 'hidden'); // in case <hr> goes outside this.bottomRuleEl.show(); } } }, // Sets the scroll value of the scroller to the initial pre-configured state prior to allowing the user to change it initializeScroll: function() { var _this = this; var scrollTime = moment.duration(this.opt('scrollTime')); var top = this.timeGrid.computeTimeTop(scrollTime); // zoom can give weird floating-point values. rather scroll a little bit further top = Math.ceil(top); if (top) { top++; // to overcome top border that slots beyond the first have. looks better } function scroll() { _this.scrollerEl.scrollTop(top); } scroll(); setTimeout(scroll, 0); // overrides any previous scroll state made by the browser }, /* Events ------------------------------------------------------------------------------------------------------------------*/ // Renders events onto the view and populates the View's segment array renderEvents: function(events) { var dayEvents = []; var timedEvents = []; var daySegs = []; var timedSegs; var i; // separate the events into all-day and timed for (i = 0; i < events.length; i++) { if (events[i].allDay) { dayEvents.push(events[i]); } else { timedEvents.push(events[i]); } } // render the events in the subcomponents timedSegs = this.timeGrid.renderEvents(timedEvents); if (this.dayGrid) { daySegs = this.dayGrid.renderEvents(dayEvents); } // the all-day area is flexible and might have a lot of events, so shift the height this.updateHeight(); }, // Retrieves all segment objects that are rendered in the view getEventSegs: function() { return this.timeGrid.getEventSegs().concat( this.dayGrid ? this.dayGrid.getEventSegs() : [] ); }, // Unrenders all event elements and clears internal segment data destroyEvents: function() { // if destroyEvents is being called as part of an event rerender, renderEvents will be called shortly // after, so remember what the scroll value was so we can restore it. this.recordScroll(); // destroy the events in the subcomponents this.timeGrid.destroyEvents(); if (this.dayGrid) { this.dayGrid.destroyEvents(); } // we DON'T need to call updateHeight() because: // A) a renderEvents() call always happens after this, which will eventually call updateHeight() // B) in IE8, this causes a flash whenever events are rerendered }, /* Dragging (for events and external elements) ------------------------------------------------------------------------------------------------------------------*/ // A returned value of `true` signals that a mock "helper" event has been rendered. renderDrag: function(dropLocation, seg) { if (dropLocation.start.hasTime()) { return this.timeGrid.renderDrag(dropLocation, seg); } else if (this.dayGrid) { return this.dayGrid.renderDrag(dropLocation, seg); } }, destroyDrag: function() { this.timeGrid.destroyDrag(); if (this.dayGrid) { this.dayGrid.destroyDrag(); } }, /* Selection ------------------------------------------------------------------------------------------------------------------*/ // Renders a visual indication of a selection renderSelection: function(range) { if (range.start.hasTime() || range.end.hasTime()) { this.timeGrid.renderSelection(range); } else if (this.dayGrid) { this.dayGrid.renderSelection(range); } }, // Unrenders a visual indications of a selection destroySelection: function() { this.timeGrid.destroySelection(); if (this.dayGrid) { this.dayGrid.destroySelection(); } } }); /* A week view with an all-day cell area at the top, and a time grid below ----------------------------------------------------------------------------------------------------------------------*/ fcViews.agendaWeek = { type: 'agenda', duration: { weeks: 1 } }; /* A day view with an all-day cell area at the top, and a time grid below ----------------------------------------------------------------------------------------------------------------------*/ fcViews.agendaDay = { type: 'agenda', duration: { days: 1 } }; }); AdminLTE/plugins/fullcalendar/fullcalendar.min.js 0000644 00000245527 15002261751 0016050 0 ustar 00 /*! * FullCalendar v2.2.5 * Docs & License: http://arshaw.com/fullcalendar/ * (c) 2013 Adam Shaw */ (function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):t(jQuery,moment)})(function(t,e){function n(t){i(Ee,t)}function i(e){function n(n,s){t.isPlainObject(s)&&t.isPlainObject(e[n])&&!r(n)?e[n]=i({},e[n],s):void 0!==s&&(e[n]=s)}for(var s=1;arguments.length>s;s++)t.each(arguments[s],n);return e}function r(t){return/(Time|Duration)$/.test(t)}function s(t){var n=e.localeData||e.langData;return n.call(e,t)||n.call(e,"en")}function o(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function l(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function a(){t("body").addClass("fc-not-allowed")}function u(){t("body").removeClass("fc-not-allowed")}function d(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],a=[],u=0;c(e),e.each(function(n,i){var d=n===e.length-1?s:r,c=t(i).outerHeight(!0);d>c?(o.push(i),l.push(c),a.push(t(i).height())):u+=c}),i&&(n-=u,r=Math.floor(n/o.length),s=Math.floor(n-r*(o.length-1))),t(o).each(function(e,n){var i=e===o.length-1?s:r,u=l[e],d=a[e],c=i-(u-d);i>u&&t(n).height(c)})}function c(t){t.height("")}function h(e){var n=0;return e.find("> *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function f(t,e){return t.height(e).addClass("fc-scroller"),t[0].scrollHeight-1>t[0].clientHeight?!0:(g(t),!1)}function g(t){t.height("").removeClass("fc-scroller")}function p(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function m(t){var e=t.offset().left,n=e+t.width(),i=t.children(),r=i.offset().left,s=r+i.outerWidth();return{left:r-e,right:n-s}}function v(t){return 1==t.which&&!t.ctrlKey}function y(t,e){var n,i,r,s,o=t.start,l=t.end,a=e.start,u=e.end;return l>a&&u>o?(o>=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),u>=l?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}):void 0}function w(t,e){if(t=t||{},void 0!==t[e])return t[e];for(var n,i=e.split(/(?=[A-Z])/),r=i.length-1;r>=0;r--)if(n=t[i[r].toLowerCase()],void 0!==n)return n;return t["default"]}function E(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function S(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days")})}function b(t,e){var n,i;for(n=0;ze.length>n&&(i=ze[n],!D(i,t,e));n++);return i}function D(t,n,i){var r;return r=null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0),r>=1&&_(r)?r:!1}function C(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function T(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function x(t){var e=function(){};return e.prototype=t,new e}function H(t,e){for(var n in t)R(t,n)&&(e[n]=t[n])}function R(t,e){return Le.call(t,e)}function k(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function M(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;e.length>r;r++)s=e[r].apply(n,i)||s;return s}}function F(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t]}function z(t){return(t+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"<br />")}function L(t){return t.replace(/&.*?;/g,"")}function P(t){return t.charAt(0).toUpperCase()+t.slice(1)}function V(t,e){return t-e}function _(t){return 0===t%1}function G(t,e){var n,i,r,s,o=function(){var l=+new Date-s;e>l&&l>0?n=setTimeout(o,e-l):(n=null,t.apply(r,i),n||(r=i=null))};return function(){r=this,i=arguments,s=+new Date,n||(n=setTimeout(o,e))}}function A(n,i,r){var s,o,l,a,u=n[0],d=1==n.length&&"string"==typeof u;return e.isMoment(u)?(a=e.apply(null,n),Y(u,a)):C(u)||void 0===u?a=e.apply(null,n):(s=!1,o=!1,d?Pe.test(u)?(u+="-01",n=[u],s=!0,o=!0):(l=Ve.exec(u))&&(s=!l[5],o=!0):t.isArray(u)&&(o=!0),a=i||s?e.utc.apply(e,n):e.apply(null,n),s?(a._ambigTime=!0,a._ambigZone=!0):r&&(o?a._ambigZone=!0:d&&a.zone(u))),a._fullCalendar=!0,a}function N(t,n){var i,r,s=!1,o=!1,l=t.length,a=[];for(i=0;l>i;i++)r=t[i],e.isMoment(r)||(r=De.moment.parseZone(r)),s=s||r._ambigTime,o=o||r._ambigZone,a.push(r);for(i=0;l>i;i++)r=a[i],n||!s||r._ambigTime?o&&!r._ambigZone&&(a[i]=r.clone().stripZone()):a[i]=r.clone().stripTime();return a}function Y(t,e){t._ambigTime?e._ambigTime=!0:e._ambigTime&&(e._ambigTime=!1),t._ambigZone?e._ambigZone=!0:e._ambigZone&&(e._ambigZone=!1)}function O(t,e){t.year(e[0]||0).month(e[1]||0).date(e[2]||0).hours(e[3]||0).minutes(e[4]||0).seconds(e[5]||0).milliseconds(e[6]||0)}function B(t,e){return Ge.format.call(t,e)}function Z(t,e){return I(t,U(e))}function I(t,e){var n,i="";for(n=0;e.length>n;n++)i+=W(t,e[n]);return i}function W(t,e){var n,i;return"string"==typeof e?e:(n=e.token)?Ae[n]?Ae[n](t):B(t,n):e.maybe&&(i=I(t,e.maybe),i.match(/[1-9]/))?i:""}function j(t,e,n,i,r){var s;return t=De.moment.parseZone(t),e=De.moment.parseZone(e),s=(t.localeData||t.lang).call(t),n=s.longDateFormat(n)||n,i=i||" - ",X(t,e,U(n),i,r)}function X(t,e,n,i,r){var s,o,l,a,u="",d="",c="",h="",f="";for(o=0;n.length>o&&(s=$(t,e,n[o]),s!==!1);o++)u+=s;for(l=n.length-1;l>o&&(s=$(t,e,n[l]),s!==!1);l--)d=s+d;for(a=o;l>=a;a++)c+=W(t,n[a]),h+=W(e,n[a]);return(c||h)&&(f=r?h+i+c:c+i+h),u+f+d}function $(t,e,n){var i,r;return"string"==typeof n?n:(i=n.token)&&(r=Ne[i.charAt(0)],r&&t.isSame(e,r))?B(t,i):!1}function U(t){return t in Ye?Ye[t]:Ye[t]=q(t)}function q(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:q(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function K(){}function Q(t,e){return t||e?t&&e?t.grid===e.grid&&t.row===e.row&&t.col===e.col:!1:!0}function J(t){var e=ee(t);return"background"===e||"inverse-background"===e}function te(t){return"inverse-background"===ee(t)}function ee(t){return F((t.source||{}).rendering,t.rendering)}function ne(t){var e,n,i={};for(e=0;t.length>e;e++)n=t[e],(i[n._id]||(i[n._id]=[])).push(n);return i}function ie(t,e){return t.eventStartMS-e.eventStartMS}function re(t,e){return t.eventStartMS-e.eventStartMS||e.eventDurationMS-t.eventDurationMS||e.event.allDay-t.event.allDay||(t.event.title||"").localeCompare(e.event.title)}function se(n){var i,r,s,o,l=De.dataAttrPrefix;return l&&(l+="-"),i=n.data(l+"event")||null,i&&(i="object"==typeof i?t.extend({},i):{},r=i.start,null==r&&(r=i.time),s=i.duration,o=i.stick,delete i.start,delete i.time,delete i.duration,delete i.stick),null==r&&(r=n.data(l+"start")),null==r&&(r=n.data(l+"time")),null==s&&(s=n.data(l+"duration")),null==o&&(o=n.data(l+"stick")),r=null!=r?e.duration(r):null,s=null!=s?e.duration(s):null,o=Boolean(o),{eventProps:i,startTime:r,duration:s,stick:o}}function oe(t,e){var n,i;for(n=0;e.length>n;n++)if(i=e[n],i.leftCol<=t.rightCol&&i.rightCol>=t.leftCol)return!0;return!1}function le(t,e){return t.leftCol-e.leftCol}function ae(t){var e,n,i;if(t.sort(re),e=ue(t),de(e),n=e[0]){for(i=0;n.length>i;i++)ce(n[i]);for(i=0;n.length>i;i++)he(n[i],0,0)}}function ue(t){var e,n,i,r=[];for(e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&fe(n,r[i]).length;i++);n.level=i,(r[i]||(r[i]=[])).push(n)}return r}function de(t){var e,n,i,r,s;for(e=0;t.length>e;e++)for(n=t[e],i=0;n.length>i;i++)for(r=n[i],r.forwardSegs=[],s=e+1;t.length>s;s++)fe(r,t[s],r.forwardSegs)}function ce(t){var e,n,i=t.forwardSegs,r=0;if(void 0===t.forwardPressure){for(e=0;i.length>e;e++)n=i[e],ce(n),r=Math.max(r,1+n.forwardPressure);t.forwardPressure=r}}function he(t,e,n){var i,r=t.forwardSegs;if(void 0===t.forwardCoord)for(r.length?(r.sort(pe),he(r[0],e+1,n),t.forwardCoord=r[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),i=0;r.length>i;i++)he(r[i],0,t.forwardCoord)}function fe(t,e,n){n=n||[];for(var i=0;e.length>i;i++)ge(t,e[i])&&n.push(e[i]);return n}function ge(t,e){return t.bottom>e.top&&t.top<e.bottom}function pe(t,e){return e.forwardPressure-t.forwardPressure||(t.backwardCoord||0)-(e.backwardCoord||0)||re(t,e)}function me(n,r){function o(t){return(t.locale||t.lang).call(t,te.lang).humanize()}function l(t){se?d()&&(y(),h(t)):a()}function a(){oe=te.theme?"ui":"fc",n.addClass("fc"),te.isRTL?n.addClass("fc-rtl"):n.addClass("fc-ltr"),te.theme?n.addClass("ui-widget"):n.addClass("fc-unthemed"),se=t("<div class='fc-view-container'/>").prependTo(n),ie=new ve(Q,te),re=ie.render(),re&&n.prepend(re),c(te.defaultView),te.handleWindowResize&&(ue=G(E,te.windowResizeDelay),t(window).resize(ue))}function u(){le&&le.destroyView(),ie.destroy(),se.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),t(window).unbind("resize",ue)}function d(){return n.is(":visible")}function c(t){h(0,t)}function h(e,n){pe++,le&&n&&le.type!==n&&(ie.deactivateButton(le.type),j(),le.start&&le.destroyView(),le.el.remove(),le=null),!le&&n&&(le=f(n),le.el=t("<div class='fc-view fc-"+n+"-view' />").appendTo(se),ie.activateButton(n)),le&&(0>e?de=le.computePrevDate(de):e>0&&(de=le.computeNextDate(de)),le.start&&!e&&de.isWithin(le.intervalStart,le.intervalEnd)||d()&&(j(),le.start&&le.destroyView(),le.setDate(de),le.renderView(),X(),F(),z(),H())),X(),pe--}function f(t){var e=g(t);return new e["class"](Q,e.options,t)}function g(n){function i(e){"function"==typeof e?s=e:"object"==typeof e&&t.extend(r,e)}var r,s,l,a,u,d=te.defaultButtonText||{},c=te.buttonText||{},h=te.views||{},f=n,g=[],p=!1;if(ge[n])return ge[n];for(;f&&!s;)r={},i(Ce[f]),i(h[f]),g.unshift(r),f=r.type;return g.unshift({}),r=t.extend.apply(t,g),s?(l=r.duration||s.duration,l&&(l=e.duration(l),a=b(l),p=1===D(a,l)),p&&h[a]&&(r=t.extend({},h[a],r)),u=c[n]||(p?c[a]:null)||d[n]||(p?d[a]:null)||r.buttonText||s.buttonText||(l?o(l):null)||n,ge[n]={"class":s,options:r,buttonText:u}):void 0}function p(t){return Boolean(g(t))}function m(t){var e=g(t);return e?e.buttonText:void 0}function v(t){return d()?(t&&w(),pe++,le.updateSize(!0),pe--,!0):void 0}function y(){d()&&w()}function w(){ae="number"==typeof te.contentHeight?te.contentHeight:"number"==typeof te.height?te.height-(re?re.outerHeight(!0):0):Math.round(se.width()/Math.max(te.aspectRatio,.5))}function E(t){!pe&&t.target===window&&le.start&&v(!0)&&le.trigger("windowResize",fe)}function S(){T(),R()}function C(){d()&&(j(),le.destroyViewEvents(),le.renderViewEvents(me),X())}function T(){j(),le.destroyViewEvents(),X()}function H(){!te.lazyFetching||ce(le.start,le.end)?R():C()}function R(){he(le.start,le.end)}function k(t){me=t,C()}function M(){C()}function F(){ie.updateTitle(le.computeTitle())}function z(){var t=Q.getNow();t.isWithin(le.intervalStart,le.intervalEnd)?ie.disableButton("today"):ie.enableButton("today")}function L(t,e){t=Q.moment(t),e=e?Q.moment(e):t.hasTime()?t.clone().add(Q.defaultTimedEventDuration):t.clone().add(Q.defaultAllDayEventDuration),le.select({start:t,end:e})}function V(){le&&le.unselect()}function _(){h(-1)}function A(){h(1)}function N(){de.add(-1,"years"),h()}function Y(){de.add(1,"years"),h()}function O(){de=Q.getNow(),h()}function B(t){de=Q.moment(t),h()}function Z(t){de.add(e.duration(t)),h()}function I(t,e){var n,i;e&&p(e)||(e=e||"day",n=ie.getViewsWithButtons().join(" "),i=n.match(RegExp("\\w+"+P(e))),i||(i=n.match(/\w+Day/)),e=i?i[0]:"agendaDay"),de=t,c(e)}function W(){return de.clone()}function j(){se.css({width:"100%",height:se.height(),overflow:"hidden"})}function X(){se.css({width:"",height:"",overflow:""})}function $(){return Q}function U(){return le}function q(t,e){return void 0===e?te[t]:(("height"==t||"contentHeight"==t||"aspectRatio"==t)&&(te[t]=e,v(!0)),void 0)}function K(t,e){return te[t]?te[t].apply(e||fe,Array.prototype.slice.call(arguments,2)):void 0}var Q=this;r=r||{};var J,te=i({},Ee,r);J=te.lang in Te?Te[te.lang]:Te[Ee.lang],J&&(te=i({},Ee,J,r)),te.isRTL&&(te=i({},Ee,be,J||{},r)),Q.options=te,Q.render=l,Q.destroy=u,Q.refetchEvents=S,Q.reportEvents=k,Q.reportEventChange=M,Q.rerenderEvents=C,Q.changeView=c,Q.select=L,Q.unselect=V,Q.prev=_,Q.next=A,Q.prevYear=N,Q.nextYear=Y,Q.today=O,Q.gotoDate=B,Q.incrementDate=Z,Q.zoomTo=I,Q.getDate=W,Q.getCalendar=$,Q.getView=U,Q.option=q,Q.trigger=K,Q.isValidViewType=p,Q.getViewButtonText=m;var ee=x(s(te.lang));if(te.monthNames&&(ee._months=te.monthNames),te.monthNamesShort&&(ee._monthsShort=te.monthNamesShort),te.dayNames&&(ee._weekdays=te.dayNames),te.dayNamesShort&&(ee._weekdaysShort=te.dayNamesShort),null!=te.firstDay){var ne=x(ee._week);ne.dow=te.firstDay,ee._week=ne}Q.defaultAllDayEventDuration=e.duration(te.defaultAllDayEventDuration),Q.defaultTimedEventDuration=e.duration(te.defaultTimedEventDuration),Q.moment=function(){var t;return"local"===te.timezone?(t=De.moment.apply(null,arguments),t.hasTime()&&t.local()):t="UTC"===te.timezone?De.moment.utc.apply(null,arguments):De.moment.parseZone.apply(null,arguments),"_locale"in t?t._locale=ee:t._lang=ee,t},Q.getIsAmbigTimezone=function(){return"local"!==te.timezone&&"UTC"!==te.timezone},Q.rezoneDate=function(t){return Q.moment(t.toArray())},Q.getNow=function(){var t=te.now;return"function"==typeof t&&(t=t()),Q.moment(t)},Q.calculateWeekNumber=function(t){var e=te.weekNumberCalculation;return"function"==typeof e?e(t):"local"===e?t.week():"ISO"===e.toUpperCase()?t.isoWeek():void 0},Q.getEventEnd=function(t){return t.end?t.end.clone():Q.getDefaultEventEnd(t.allDay,t.start)},Q.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(Q.defaultAllDayEventDuration):n.add(Q.defaultTimedEventDuration),Q.getIsAmbigTimezone()&&n.stripZone(),n},ye.call(Q,te);var ie,re,se,oe,le,ae,ue,de,ce=Q.isFetchNeeded,he=Q.fetchEvents,fe=n[0],ge={},pe=0,me=[];de=null!=te.defaultDate?Q.moment(te.defaultDate):Q.getNow(),Q.getSuggestedViewHeight=function(){return void 0===ae&&y(),ae},Q.isHeightAuto=function(){return"auto"===te.contentHeight||"auto"===te.height}}function ve(e,n){function i(){var e=n.header;return f=n.theme?"ui":"fc",e?g=t("<div class='fc-toolbar'/>").append(s("left")).append(s("right")).append(s("center")).append('<div class="fc-clear"/>'):void 0}function r(){g.remove()}function s(i){var r=t('<div class="fc-'+i+'"/>'),s=n.header[i];return s&&t.each(s.split(" "),function(){var i,s=t(),o=!0;t.each(this.split(","),function(i,r){var l,a,u,d,c,h,g,m,v;"title"==r?(s=s.add(t("<h2> </h2>")),o=!1):(e[r]?l=function(){e[r]()}:e.isValidViewType(r)&&(l=function(){e.changeView(r)},p.push(r),c=e.getViewButtonText(r)),l&&(a=w(n.themeButtonIcons,r),u=w(n.buttonIcons,r),d=w(n.defaultButtonText,r),h=w(n.buttonText,r),g=c||h?z(c||h):a&&n.theme?"<span class='ui-icon ui-icon-"+a+"'></span>":u&&!n.theme?"<span class='fc-icon fc-icon-"+u+"'></span>":z(d||r),m=["fc-"+r+"-button",f+"-button",f+"-state-default"],v=t('<button type="button" class="'+m.join(" ")+'">'+g+"</button>").click(function(){v.hasClass(f+"-state-disabled")||(l(),(v.hasClass(f+"-state-active")||v.hasClass(f+"-state-disabled"))&&v.removeClass(f+"-state-hover"))}).mousedown(function(){v.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-down")}).mouseup(function(){v.removeClass(f+"-state-down")}).hover(function(){v.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-hover")},function(){v.removeClass(f+"-state-hover").removeClass(f+"-state-down")}),s=s.add(v)))}),o&&s.first().addClass(f+"-corner-left").end().last().addClass(f+"-corner-right").end(),s.length>1?(i=t("<div/>"),o&&i.addClass("fc-button-group"),i.append(s),r.append(i)):r.append(s)}),r}function o(t){g.find("h2").text(t)}function l(t){g.find(".fc-"+t+"-button").addClass(f+"-state-active")}function a(t){g.find(".fc-"+t+"-button").removeClass(f+"-state-active")}function u(t){g.find(".fc-"+t+"-button").attr("disabled","disabled").addClass(f+"-state-disabled")}function d(t){g.find(".fc-"+t+"-button").removeAttr("disabled").removeClass(f+"-state-disabled")}function c(){return p}var h=this;h.render=i,h.destroy=r,h.updateTitle=o,h.activateButton=l,h.deactivateButton=a,h.disableButton=u,h.enableButton=d,h.getViewsWithButtons=c;var f,g=t(),p=[]}function ye(n){function i(t,e){return!B||t.clone().stripZone()<B.clone().stripZone()||e.clone().stripZone()>Z.clone().stripZone()}function r(t,e){B=t,Z=e,Q=[];var n=++U,i=$.length;q=i;for(var r=0;i>r;r++)s($[r],n)}function s(e,n){o(e,function(i){var r,s,o,l=t.isArray(e.events);if(n==U){if(i)for(r=0;i.length>r;r++)s=i[r],o=l?s:b(s,e),o&&Q.push.apply(Q,H(o));q--,q||j(Q)}})}function o(e,i){var r,s,l=De.sourceFetchers;for(r=0;l.length>r;r++){if(s=l[r].call(O,e,B.clone(),Z.clone(),n.timezone,i),s===!0)return;if("object"==typeof s)return o(s,i),void 0}var a=e.events;if(a)t.isFunction(a)?(y(),a.call(O,B.clone(),Z.clone(),n.timezone,function(t){i(t),w()})):t.isArray(a)?i(a):i();else{var u=e.url;if(u){var d,c=e.success,h=e.error,f=e.complete;d=t.isFunction(e.data)?e.data():e.data;var g=t.extend({},d||{}),p=F(e.startParam,n.startParam),m=F(e.endParam,n.endParam),v=F(e.timezoneParam,n.timezoneParam);p&&(g[p]=B.format()),m&&(g[m]=Z.format()),n.timezone&&"local"!=n.timezone&&(g[v]=n.timezone),y(),t.ajax(t.extend({},Ke,e,{data:g,success:function(e){e=e||[];var n=M(c,this,arguments);t.isArray(n)&&(e=n),i(e)},error:function(){M(h,this,arguments),i()},complete:function(){M(f,this,arguments),w()}}))}else i()}}function l(t){var e=a(t);e&&($.push(e),q++,s(e,U))}function a(e){var n,i,r=De.sourceNormalizers;if(t.isFunction(e)||t.isArray(e)?n={events:e}:"string"==typeof e?n={url:e}:"object"==typeof e&&(n=t.extend({},e)),n){for(n.className?"string"==typeof n.className&&(n.className=n.className.split(/\s+/)):n.className=[],t.isArray(n.events)&&(n.origArray=n.events,n.events=t.map(n.events,function(t){return b(t,n)})),i=0;r.length>i;i++)r[i].call(O,n);return n}}function u(e){$=t.grep($,function(t){return!d(t,e)}),Q=t.grep(Q,function(t){return!d(t.source,e)}),j(Q)}function d(t,e){return t&&e&&c(t)==c(e)}function c(t){return("object"==typeof t?t.origArray||t.googleCalendarId||t.url||t.events:null)||t}function h(t){t.start=O.moment(t.start),t.end=t.end?O.moment(t.end):null,R(t,f(t)),j(Q)}function f(e){var n={};return t.each(e,function(t,e){g(t)&&void 0!==e&&k(e)&&(n[t]=e)}),n}function g(t){return!/^_|^(id|allDay|start|end)$/.test(t)}function p(t,e){var n,i,r,s=b(t);if(s){for(n=H(s),i=0;n.length>i;i++)r=n[i],r.source||(e&&(X.events.push(r),r.source=X),Q.push(r));return j(Q),n}return[]}function m(e){var n,i;for(null==e?e=function(){return!0}:t.isFunction(e)||(n=e+"",e=function(t){return t._id==n}),Q=t.grep(Q,e,!0),i=0;$.length>i;i++)t.isArray($[i].events)&&($[i].events=t.grep($[i].events,e,!0));j(Q)}function v(e){return t.isFunction(e)?t.grep(Q,e):null!=e?(e+="",t.grep(Q,function(t){return t._id==e})):Q}function y(){K++||I("loading",null,!0,W())}function w(){--K||I("loading",null,!1,W())}function b(i,r){var s,o,l,a={};if(n.eventDataTransform&&(i=n.eventDataTransform(i)),r&&r.eventDataTransform&&(i=r.eventDataTransform(i)),t.extend(a,i),r&&(a.source=r),a._id=i._id||(void 0===i.id?"_fc"+Qe++:i.id+""),a.className=i.className?"string"==typeof i.className?i.className.split(/\s+/):i.className:[],s=i.start||i.date,o=i.end,T(s)&&(s=e.duration(s)),T(o)&&(o=e.duration(o)),i.dow||e.isDuration(s)||e.isDuration(o))a.start=s?e.duration(s):null,a.end=o?e.duration(o):null,a._recurring=!0;else{if(s&&(s=O.moment(s),!s.isValid()))return!1;o&&(o=O.moment(o),o.isValid()||(o=null)),l=i.allDay,void 0===l&&(l=F(r?r.allDayDefault:void 0,n.allDayDefault)),D(s,o,l,a)}return a}function D(t,e,n,i){i.start=t,i.end=e,i.allDay=n,C(i),we(i)}function C(t){null==t.allDay&&(t.allDay=!(t.start.hasTime()||t.end&&t.end.hasTime())),t.allDay?(t.start.stripTime(),t.end&&t.end.stripTime()):(t.start.hasTime()||(t.start=O.rezoneDate(t.start)),t.end&&!t.end.hasTime()&&(t.end=O.rezoneDate(t.end))),t.end&&!t.end.isAfter(t.start)&&(t.end=null),t.end||(t.end=n.forceEventDuration?O.getDefaultEventEnd(t.allDay,t.start):null)}function x(t){var e;return t.end||(e=t.allDay,null==e&&(e=!t.start.hasTime()),t={start:t.start,end:O.getDefaultEventEnd(e,t.start)}),t}function H(e,n,i){var r,s,o,l,a,u,d,c,h,f=[];if(n=n||B,i=i||Z,e)if(e._recurring){if(s=e.dow)for(r={},o=0;s.length>o;o++)r[s[o]]=!0;for(l=n.clone().stripTime();l.isBefore(i);)(!r||r[l.day()])&&(a=e.start,u=e.end,d=l.clone(),c=null,a&&(d=d.time(a)),u&&(c=l.clone().time(u)),h=t.extend({},e),D(d,c,!a&&!u,h),f.push(h)),l.add(1,"days")}else f.push(e);return f}function R(e,n){var i,r,s,o,l={};return n=n||{},n.start||(n.start=e.start.clone()),void 0===n.end&&(n.end=e.end?e.end.clone():null),null==n.allDay&&(n.allDay=e.allDay),C(n),i=null!==e._end&&null===n.end,r=n.allDay?S(n.start,e._start):E(n.start,e._start),!i&&n.end&&(s=E(n.end,n.start).subtract(E(e._end||O.getDefaultEventEnd(e._allDay,e._start),e._start))),t.each(n,function(t,e){g(t)&&void 0!==e&&(l[t]=e)}),o=z(v(e._id),i,n.allDay,r,s,l),{dateDelta:r,durationDelta:s,undo:o}}function z(e,n,i,r,s,o){var l=O.getIsAmbigTimezone(),a=[];return r&&!r.valueOf()&&(r=null),s&&!s.valueOf()&&(s=null),t.each(e,function(e,u){var d,c;d={start:u.start.clone(),end:u.end?u.end.clone():null,allDay:u.allDay},t.each(o,function(t){d[t]=u[t]}),c={start:u._start,end:u._end,allDay:u._allDay},n&&(c.end=null),c.allDay=i,C(c),r&&(c.start.add(r),c.end&&c.end.add(r)),s&&(c.end||(c.end=O.getDefaultEventEnd(c.allDay,c.start)),c.end.add(s)),l&&!c.allDay&&(r||s)&&(c.start.stripZone(),c.end&&c.end.stripZone()),t.extend(u,o,c),we(u),a.push(function(){t.extend(u,d),we(u)})}),function(){for(var t=0;a.length>t;t++)a[t]()}}function L(){var e,i=n.businessHours,r={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},s=O.getView();return i&&(e="object"==typeof i?t.extend({},r,i):r),e?H(b(e),s.start,s.end):[]}function P(t,e){var i=e.source||{},r=F(e.constraint,i.constraint,n.eventConstraint),s=F(e.overlap,i.overlap,n.eventOverlap);return t=x(t),G(t,r,s,e)}function V(t){return G(t,n.selectConstraint,n.selectOverlap)}function _(e,n){var i,r;return n&&(i=t.extend({},n,e),r=H(b(i))[0]),r?P(e,r):(e=x(e),V(e))}function G(t,e,n,i){var r,s,o,l,a;if(t={start:t.start.clone().stripZone(),end:t.end.clone().stripZone()},null!=e){for(r=A(e),s=!1,o=0;r.length>o;o++)if(N(r[o],t)){s=!0;break}if(!s)return!1}for(o=0;Q.length>o;o++)if(l=Q[o],(!i||i._id!==l._id)&&Y(l,t)){if(n===!1)return!1;if("function"==typeof n&&!n(l,i))return!1;if(i){if(a=F(l.overlap,(l.source||{}).overlap),a===!1)return!1;if("function"==typeof a&&!a(i,l))return!1}}return!0}function A(t){return"businessHours"===t?L():"object"==typeof t?H(b(t)):v(t)}function N(t,e){var n=t.start.clone().stripZone(),i=O.getEventEnd(t).stripZone();return e.start>=n&&i>=e.end}function Y(t,e){var n=t.start.clone().stripZone(),i=O.getEventEnd(t).stripZone();return i>e.start&&e.end>n}var O=this;O.isFetchNeeded=i,O.fetchEvents=r,O.addEventSource=l,O.removeEventSource=u,O.updateEvent=h,O.renderEvent=p,O.removeEvents=m,O.clientEvents=v,O.mutateEvent=R,O.normalizeEventDateProps=C,O.ensureVisibleEventRange=x;var B,Z,I=O.trigger,W=O.getView,j=O.reportEvents,X={events:[]},$=[X],U=0,q=0,K=0,Q=[];t.each((n.events?[n.events]:[]).concat(n.eventSources||[]),function(t,e){var n=a(e);n&&$.push(n)}),O.getBusinessHoursEvents=L,O.isEventRangeAllowed=P,O.isSelectionRangeAllowed=V,O.isExternalDropRangeAllowed=_}function we(t){t._allDay=t.allDay,t._start=t.start.clone(),t._end=t.end?t.end.clone():null}var Ee={titleRangeSeparator:" — ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,defaultButtonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200},Se={dayPopoverFormat:"dddd, MMMM D"},be={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}},De=t.fullCalendar={version:"2.2.5"},Ce=De.views={};t.fn.fullCalendar=function(e){var n=Array.prototype.slice.call(arguments,1),i=this;return this.each(function(r,s){var o,l=t(s),a=l.data("fullCalendar");"string"==typeof e?a&&t.isFunction(a[e])&&(o=a[e].apply(a,n),r||(i=o),"destroy"===e&&l.removeData("fullCalendar")):a||(a=new me(l,e),l.data("fullCalendar",a),a.render())}),i};var Te=De.langs={};De.datepickerLang=function(e,n,i){var r=Te[e]||(Te[e]={});r.isRTL=i.isRTL,r.weekNumberTitle=i.weekHeader,t.each(xe,function(t,e){r[t]=e(i)}),t.datepicker&&(t.datepicker.regional[n]=t.datepicker.regional[e]=i,t.datepicker.regional.en=t.datepicker.regional[""],t.datepicker.setDefaults(i))},De.lang=function(e,n){var r,o;r=Te[e]||(Te[e]={}),n&&i(r,n),o=s(e),t.each(He,function(t,e){void 0===r[t]&&(r[t]=e(o,r))}),Ee.lang=e};var xe={defaultButtonText:function(t){return{prev:L(t.prevText),next:L(t.nextText),today:L(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?"YYYY["+t.yearSuffix+"] MMMM":"MMMM YYYY["+t.yearSuffix+"]"}},He={dayOfMonthFormat:function(t,e){var n=t.longDateFormat("l");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),e.isRTL?n+=" ddd":n="ddd "+n,n},smallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},noMeridiemTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"")}};De.lang("en",Se),De.intersectionToSeg=y,De.applyAll=M,De.debounce=G;var Re,ke,Me,Fe=["sun","mon","tue","wed","thu","fri","sat"],ze=["year","month","week","day","hour","minute","second","millisecond"],Le={}.hasOwnProperty,Pe=/^\s*\d{4}-\d\d$/,Ve=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,_e=e.fn,Ge=t.extend({},_e);De.moment=function(){return A(arguments)},De.moment.utc=function(){var t=A(arguments,!0);return t.hasTime()&&t.utc(),t},De.moment.parseZone=function(){return A(arguments,!0,!0)},_e.clone=function(){var t=Ge.clone.apply(this,arguments);return Y(this,t),this._fullCalendar&&(t._fullCalendar=!0),t},_e.time=function(t){if(!this._fullCalendar)return Ge.time.apply(this,arguments);if(null==t)return e.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,e.isDuration(t)||e.isMoment(t)||(t=e.duration(t));var n=0;return e.isDuration(t)&&(n=24*Math.floor(t.asDays())),this.hours(n+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},_e.stripTime=function(){var t;return this._ambigTime||(t=this.toArray(),this.utc(),ke(this,t.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0),this},_e.hasTime=function(){return!this._ambigTime},_e.stripZone=function(){var t,e;return this._ambigZone||(t=this.toArray(),e=this._ambigTime,this.utc(),ke(this,t),e&&(this._ambigTime=!0),this._ambigZone=!0),this},_e.hasZone=function(){return!this._ambigZone},_e.zone=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),Ge.zone.apply(this,arguments)},_e.local=function(){var t=this.toArray(),e=this._ambigZone;return Ge.local.apply(this,arguments),e&&Me(this,t),this},_e.format=function(){return this._fullCalendar&&arguments[0]?Z(this,arguments[0]):this._ambigTime?B(this,"YYYY-MM-DD"):this._ambigZone?B(this,"YYYY-MM-DD[T]HH:mm:ss"):Ge.format.apply(this,arguments)},_e.toISOString=function(){return this._ambigTime?B(this,"YYYY-MM-DD"):this._ambigZone?B(this,"YYYY-MM-DD[T]HH:mm:ss"):Ge.toISOString.apply(this,arguments)},_e.isWithin=function(t,e){var n=N([this,t,e]);return n[0]>=n[1]&&n[0]<n[2]},_e.isSame=function(t,e){var n;return this._fullCalendar?e?(n=N([this,t],!0),Ge.isSame.call(n[0],n[1],e)):(t=De.moment.parseZone(t),Ge.isSame.call(this,t)&&Boolean(this._ambigTime)===Boolean(t._ambigTime)&&Boolean(this._ambigZone)===Boolean(t._ambigZone)):Ge.isSame.apply(this,arguments)},t.each(["isBefore","isAfter"],function(t,e){_e[e]=function(t,n){var i;return this._fullCalendar?(i=N([this,t]),Ge[e].call(i[0],i[1],n)):Ge[e].apply(this,arguments)}}),Re="_d"in e()&&"updateOffset"in e,ke=Re?function(t,n){t._d.setTime(Date.UTC.apply(Date,n)),e.updateOffset(t,!1)}:O,Me=Re?function(t,n){t._d.setTime(+new Date(n[0]||0,n[1]||0,n[2]||0,n[3]||0,n[4]||0,n[5]||0,n[6]||0)),e.updateOffset(t,!1)}:O;var Ae={t:function(t){return B(t,"a").charAt(0)},T:function(t){return B(t,"A").charAt(0)}};De.formatRange=j;var Ne={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},Ye={};De.Class=K,K.extend=function(t){var e,n=this;return t=t||{},R(t,"constructor")&&(e=t.constructor),"function"!=typeof e&&(e=t.constructor=function(){n.apply(this,arguments)}),e.prototype=x(n.prototype),H(t,e.prototype),H(n,e),e},K.mixin=function(t){H(t.prototype||t,this.prototype)};var Oe=K.extend({isHidden:!0,options:null,el:null,documentMousedownProxy:null,margin:10,constructor:function(t){this.options=t||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var e=this,n=this.options;this.el=t('<div class="fc-popover"/>').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&t(document).on("mousedown",this.documentMousedownProxy=t.proxy(this,"documentMousedown"))},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},destroy:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),t(document).off("mousedown",this.documentMousedownProxy)},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),d=t(window),c=p(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,c.is(window)||c.is(document)?(c=d,e=0,n=0):(i=c.offset(),e=i.top,n=i.left),e+=d.scrollTop(),n+=d.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+c.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+c.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),Be=K.extend({grid:null,rowCoords:null,colCoords:null,containerEl:null,minX:null,maxX:null,minY:null,maxY:null,constructor:function(t){this.grid=t},build:function(){this.rowCoords=this.grid.computeRowCoords(),this.colCoords=this.grid.computeColCoords(),this.computeBounds()},clear:function(){this.rowCoords=null,this.colCoords=null},getCell:function(t,e){var n,i,r,s=this.rowCoords,o=this.colCoords,l=null,a=null;if(this.inBounds(t,e)){for(n=0;s.length>n;n++)if(i=s[n],e>=i.top&&i.bottom>e){l=n;break}for(n=0;o.length>n;n++)if(i=o[n],t>=i.left&&i.right>t){a=n;break}if(null!==l&&null!==a)return r=this.grid.getCell(l,a),r.grid=this.grid,r}return null},computeBounds:function(){var t;this.containerEl&&(t=this.containerEl.offset(),this.minX=t.left,this.maxX=t.left+this.containerEl.outerWidth(),this.minY=t.top,this.maxY=t.top+this.containerEl.outerHeight()) },inBounds:function(t,e){return this.containerEl?t>=this.minX&&this.maxX>t&&e>=this.minY&&this.maxY>e:!0}}),Ze=K.extend({coordMaps:null,constructor:function(t){this.coordMaps=t},build:function(){var t,e=this.coordMaps;for(t=0;e.length>t;t++)e[t].build()},getCell:function(t,e){var n,i=this.coordMaps,r=null;for(n=0;i.length>n&&!r;n++)r=i[n].getCell(t,e);return r},clear:function(){var t,e=this.coordMaps;for(t=0;e.length>t;t++)e[t].clear()}}),Ie=K.extend({coordMap:null,options:null,isListening:!1,isDragging:!1,origCell:null,cell:null,mouseX0:null,mouseY0:null,mousemoveProxy:null,mouseupProxy:null,scrollEl:null,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollHandlerProxy:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,constructor:function(t,e){this.coordMap=t,this.options=e||{}},mousedown:function(t){v(t)&&(t.preventDefault(),this.startListening(t),this.options.distance||this.startDrag(t))},startListening:function(e){var n,i;this.isListening||(e&&this.options.scroll&&(n=p(t(e.target)),n.is(window)||n.is(document)||(this.scrollEl=n,this.scrollHandlerProxy=G(t.proxy(this,"scrollHandler"),100),this.scrollEl.on("scroll",this.scrollHandlerProxy))),this.computeCoords(),e&&(i=this.getCell(e),this.origCell=i,this.mouseX0=e.pageX,this.mouseY0=e.pageY),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")).on("mouseup",this.mouseupProxy=t.proxy(this,"mouseup")).on("selectstart",this.preventDefault),this.isListening=!0,this.trigger("listenStart",e))},computeCoords:function(){this.coordMap.build(),this.computeScrollBounds()},mousemove:function(t){var e,n;this.isDragging||(e=this.options.distance||1,n=Math.pow(t.pageX-this.mouseX0,2)+Math.pow(t.pageY-this.mouseY0,2),n>=e*e&&this.startDrag(t)),this.isDragging&&this.drag(t)},startDrag:function(t){var e;this.isListening||this.startListening(),this.isDragging||(this.isDragging=!0,this.trigger("dragStart",t),e=this.getCell(t),e&&this.cellOver(e))},drag:function(t){var e;this.isDragging&&(e=this.getCell(t),Q(e,this.cell)||(this.cell&&this.cellOut(),e&&this.cellOver(e)),this.dragScroll(t))},cellOver:function(t){this.cell=t,this.trigger("cellOver",t,Q(t,this.origCell))},cellOut:function(){this.cell&&(this.trigger("cellOut",this.cell),this.cell=null)},mouseup:function(t){this.stopDrag(t),this.stopListening(t)},stopDrag:function(t){this.isDragging&&(this.stopScrolling(),this.trigger("dragStop",t),this.isDragging=!1)},stopListening:function(e){this.isListening&&(this.scrollEl&&(this.scrollEl.off("scroll",this.scrollHandlerProxy),this.scrollHandlerProxy=null),t(document).off("mousemove",this.mousemoveProxy).off("mouseup",this.mouseupProxy).off("selectstart",this.preventDefault),this.mousemoveProxy=null,this.mouseupProxy=null,this.isListening=!1,this.trigger("listenStop",e),this.origCell=this.cell=null,this.coordMap.clear())},getCell:function(t){return this.coordMap.getCell(t.pageX,t.pageY)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))},preventDefault:function(t){t.preventDefault()},computeScrollBounds:function(){var t,e=this.scrollEl;e&&(t=e.offset(),this.scrollBounds={top:t.top,left:t.left,bottom:t.top+e.outerHeight(),right:t.left+e.outerWidth()})},dragScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(t.pageY-o.top))/s,n=(s-(o.bottom-t.pageY))/s,i=(s-(t.pageX-o.left))/s,r=(s-(o.right-t.pageX))/s,e>=0&&1>=e?l=-1*e*this.scrollSpeed:n>=0&&1>=n&&(l=n*this.scrollSpeed),i>=0&&1>=i?a=-1*i*this.scrollSpeed:r>=0&&1>=r&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(e,n){this.scrollTopVel=e,this.scrollLeftVel=n,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(t.proxy(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;0>this.scrollTopVel?0>=t.scrollTop()&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),0>this.scrollLeftVel?0>=t.scrollLeft()&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.stopScrolling()},stopScrolling:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.computeCoords())},scrollHandler:function(){this.scrollIntervalId||this.computeCoords()}}),We=K.extend({options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,mouseY0:null,mouseX0:null,topDelta:null,leftDelta:null,mousemoveProxy:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.mouseY0=e.pageY,this.mouseX0=e.pageX,this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")))},stop:function(e,n){function i(){this.isAnimating=!1,r.destroyEl(),this.top0=this.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,t(document).off("mousemove",this.mousemoveProxy),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(this.sourceEl.width(),t=this.el=this.sourceEl.clone().css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}).appendTo(this.parentEl)),t},destroyEl:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(this.sourceEl.width(),t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},mousemove:function(t){this.topDelta=t.pageY-this.mouseY0,this.leftDelta=t.pageX-this.mouseX0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),je=K.extend({view:null,isRTL:null,cellHtml:"<td/>",constructor:function(t){this.view=t,this.isRTL=t.opt("isRTL")},rowHtml:function(t,e){var n,i,r=this.getHtmlRenderer("cell",t),s="";for(e=e||0,n=0;this.colCnt>n;n++)i=this.getCell(e,n),s+=r(i);return s=this.bookendCells(s,t,e),"<tr>"+s+"</tr>"},bookendCells:function(t,e,n){var i=this.getHtmlRenderer("intro",e)(n||0),r=this.getHtmlRenderer("outro",e)(n||0),s=this.isRTL?r:i,o=this.isRTL?i:r;return"string"==typeof t?s+t+o:t.prepend(s).append(o)},getHtmlRenderer:function(t,e){var n,i,r,s,o=this.view;return n=t+"Html",e&&(i=e+P(t)+"Html"),i&&(s=o[i])?r=o:i&&(s=this[i])?r=this:(s=o[n])?r=o:(s=this[n])&&(r=this),"function"==typeof s?function(){return s.apply(r,arguments)||""}:function(){return s||""}}}),Xe=De.Grid=je.extend({start:null,end:null,rowCnt:0,colCnt:0,rowData:null,colData:null,el:null,coordMap:null,elsByFill:null,documentDragStartProxy:null,colHeadFormat:null,eventTimeFormat:null,displayEventEnd:null,constructor:function(){je.apply(this,arguments),this.coordMap=new Be(this),this.elsByFill={},this.documentDragStartProxy=t.proxy(this,"documentDragStart")},render:function(){this.bindHandlers()},destroy:function(){this.unbindHandlers()},computeColHeadFormat:function(){},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventEnd:function(){return!1},setRange:function(t){var e=this.view;this.start=t.start.clone(),this.end=t.end.clone(),this.rowData=[],this.colData=[],this.updateCells(),this.colHeadFormat=e.opt("columnFormat")||this.computeColHeadFormat(),this.eventTimeFormat=e.opt("timeFormat")||this.computeEventTimeFormat(),this.displayEventEnd=e.opt("displayEventEnd"),null==this.displayEventEnd&&(this.displayEventEnd=this.computeDisplayEventEnd())},updateCells:function(){},rangeToSegs:function(){},getCell:function(e,n){var i;return null==n&&("number"==typeof e?(n=e%this.colCnt,e=Math.floor(e/this.colCnt)):(n=e.col,e=e.row)),i={row:e,col:n},t.extend(i,this.getRowData(e),this.getColData(n)),t.extend(i,this.computeCellRange(i)),i},computeCellRange:function(){},getRowData:function(t){return this.rowData[t]||{}},getColData:function(t){return this.colData[t]||{}},getRowEl:function(){},getColEl:function(){},getCellDayEl:function(t){return this.getColEl(t.col)||this.getRowEl(t.row)},computeRowCoords:function(){var t,e,n,i=[];for(t=0;this.rowCnt>t;t++)e=this.getRowEl(t),n={top:e.offset().top},t>0&&(i[t-1].bottom=n.top),i.push(n);return n.bottom=n.top+e.outerHeight(),i},computeColCoords:function(){var t,e,n,i=[];for(t=0;this.colCnt>t;t++)e=this.getColEl(t),n={left:e.offset().left},t>0&&(i[t-1].right=n.left),i.push(n);return n.right=n.left+e.outerWidth(),i},bindHandlers:function(){var e=this;this.el.on("mousedown",function(n){t(n.target).is(".fc-event-container *, .fc-more")||t(n.target).closest(".fc-popover").length||e.dayMousedown(n)}),this.bindSegHandlers(),t(document).on("dragstart",this.documentDragStartProxy)},unbindHandlers:function(){t(document).off("dragstart",this.documentDragStartProxy)},dayMousedown:function(t){var e,n,i=this,r=this.view,s=r.opt("selectable"),o=new Ie(this.coordMap,{scroll:r.opt("dragScroll"),dragStart:function(){r.unselect()},cellOver:function(t,r){var l=o.origCell;l&&(e=r?t:null,s&&(n=i.computeSelection(l,t),n?i.renderSelection(n):a()))},cellOut:function(){e=null,n=null,i.destroySelection(),u()},listenStop:function(t){e&&r.trigger("dayClick",i.getCellDayEl(e),e.start,t),n&&r.reportSelection(n,t),u()}});o.mousedown(t)},renderRangeHelper:function(t,e){var n;n=e?x(e.event):{},n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDateProps(n),n.className=(n.className||[]).concat("fc-helper"),e||(n.editable=!1),this.renderHelper(n,e)},renderHelper:function(){},destroyHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},destroySelection:function(){this.destroyHighlight()},computeSelection:function(t,e){var n,i=[t.start,t.end,e.start,e.end];return i.sort(V),n={start:i[0].clone(),end:i[3].clone()},this.view.calendar.isSelectionRangeAllowed(n)?n:null},renderHighlight:function(t){this.renderFill("highlight",this.rangeToSegs(t))},destroyHighlight:function(){this.destroyFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderFill:function(){},destroyFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;n.length>i;i++)o+=this.fillSegHtml(e,n[i]);t(o).each(function(e,i){var o=n[e],a=t(i);s&&(a=s.call(r,o,a)),a&&(a=t(a),a.is(r.fillSegTag)&&(o.el=a,l.push(o)))})}return l},fillSegTag:"div",fillSegHtml:function(t,e){var n=this[t+"SegClasses"],i=this[t+"SegStyles"],r=n?n.call(this,e):[],s=i?i.call(this,e):"";return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(s?' style="'+s+'"':"")+" />"},headHtml:function(){return'<div class="fc-row '+this.view.widgetHeaderClass+'">'+"<table>"+"<thead>"+this.rowHtml("head")+"</thead>"+"</table>"+"</div>"},headCellHtml:function(t){var e=this.view,n=t.start;return'<th class="fc-day-header '+e.widgetHeaderClass+" fc-"+Fe[n.day()]+'">'+z(n.format(this.colHeadFormat))+"</th>"},bgCellHtml:function(t){var e=this.view,n=t.start,i=this.getDayClasses(n);return i.unshift("fc-day",e.widgetContentClass),'<td class="'+i.join(" ")+'"'+' data-date="'+n.format("YYYY-MM-DD")+'"'+"></td>"},getDayClasses:function(t){var e=this.view,n=e.calendar.getNow().stripTime(),i=["fc-"+Fe[t.day()]];return"month"===e.name&&t.month()!=e.intervalStart.month()&&i.push("fc-other-month"),t.isSame(n,"day")?i.push("fc-today",e.highlightStateClass):n>t?i.push("fc-past"):i.push("fc-future"),i}});Xe.mixin({mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,segs:null,renderEvents:function(t){var e,n,i=this.eventsToSegs(t),r=[],s=[];for(e=0;i.length>e;e++)n=i[e],J(n.event)?r.push(n):s.push(n);r=this.renderBgSegs(r)||r,s=this.renderFgSegs(s)||s,this.segs=r.concat(s)},destroyEvents:function(){this.triggerSegMouseout(),this.destroyFgSegs(),this.destroyBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(){},destroyFgSegs:function(){},renderFgSegEls:function(e,n){var i,r=this.view,s="",o=[];if(e.length){for(i=0;e.length>i;i++)s+=this.fgSegHtml(e[i],n);t(s).each(function(n,i){var s=e[n],l=r.resolveEventEl(s.event,t(i));l&&(l.data("fc-seg",s),s.el=l,o.push(s))})}return o},fgSegHtml:function(){},renderBgSegs:function(t){return this.renderFill("bgEvent",t)},destroyBgSegs:function(){this.destroyFill("bgEvent")},bgEventSegEl:function(t,e){return this.view.resolveEventEl(t.event,e)},bgEventSegClasses:function(t){var e=t.event,n=e.source||{};return["fc-bgevent"].concat(e.className,n.className||[])},bgEventSegStyles:function(t){var e=this.view,n=t.event,i=n.source||{},r=n.color,s=i.color,o=e.opt("eventColor"),l=n.backgroundColor||r||i.backgroundColor||s||e.opt("eventBackgroundColor")||o;return l?"background-color:"+l:""},businessHoursSegClasses:function(){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){var e=this,n=this.view;t.each({mouseenter:function(t,n){e.triggerSegMouseover(t,n)},mouseleave:function(t,n){e.triggerSegMouseout(t,n)},click:function(t,e){return n.trigger("eventClick",this,t.event,e)},mousedown:function(i,r){t(r.target).is(".fc-resizer")&&n.isEventResizable(i.event)?e.segResizeMousedown(i,r):n.isEventDraggable(i.event)&&e.segDragMousedown(i,r)}},function(n,i){e.el.on(n,".fc-event-container > *",function(n){var r=t(this).data("fc-seg");return!r||e.isDraggingSeg||e.isResizingSeg?void 0:i.call(this,r,n)})})},triggerSegMouseover:function(t,e){this.mousedOverSeg||(this.mousedOverSeg=t,this.view.trigger("eventMouseover",t.el[0],t.event,e))},triggerSegMouseout:function(t,e){e=e||{},this.mousedOverSeg&&(t=t||this.mousedOverSeg,this.mousedOverSeg=null,this.view.trigger("eventMouseout",t.el[0],t.event,e))},segDragMousedown:function(t,e){var n,i=this,r=this.view,s=t.el,o=t.event,l=new We(t.el,{parentEl:r.el,opacity:r.opt("dragOpacity"),revertDuration:r.opt("dragRevertDuration"),zIndex:2}),d=new Ie(r.coordMap,{distance:5,scroll:r.opt("dragScroll"),listenStart:function(t){l.hide(),l.start(t)},dragStart:function(e){i.triggerSegMouseout(t,e),i.isDraggingSeg=!0,r.hideEvent(o),r.trigger("eventDragStart",s[0],o,e,{})},cellOver:function(e,s){var u=t.cell||d.origCell;n=i.computeEventDrop(u,e,o),n?(r.renderDrag(n,t)?l.hide():l.show(),s&&(n=null)):(l.show(),a())},cellOut:function(){n=null,r.destroyDrag(),l.show(),u()},dragStop:function(t){l.stop(!n,function(){i.isDraggingSeg=!1,r.destroyDrag(),r.showEvent(o),r.trigger("eventDragStop",s[0],o,t,{}),n&&r.reportEventDrop(o,n,s,t)}),u()},listenStop:function(){l.stop()}});d.mousedown(e)},computeEventDrop:function(t,e,n){var i,r,s,o,l,a=t.start,u=e.start;return a.hasTime()===u.hasTime()?(i=E(u,a),r=n.start.clone().add(i),s=null===n.end?null:n.end.clone().add(i),o=n.allDay):(r=u.clone(),s=null,o=!u.hasTime()),l={start:r,end:s,allDay:o},this.view.calendar.isEventRangeAllowed(l,n)?l:null},documentDragStart:function(e,n){var i,r,s=this.view;s.opt("droppable")&&(i=t(e.target),r=s.opt("dropAccept"),(t.isFunction(r)?r.call(i[0],i):i.is(r))&&this.startExternalDrag(i,e,n))},startExternalDrag:function(e,n){var i,r,s=this,o=se(e);i=new Ie(this.coordMap,{cellOver:function(t){r=s.computeExternalDrop(t,o),r?s.renderDrag(r):a()},cellOut:function(){r=null,s.destroyDrag(),u()}}),t(document).one("dragstop",function(t,n){s.destroyDrag(),u(),r&&s.view.reportExternalDrop(o,r,e,t,n)}),i.startDrag(n)},computeExternalDrop:function(t,e){var n={start:t.start.clone(),end:null};return e.startTime&&!n.start.hasTime()&&n.start.time(e.startTime),e.duration&&(n.end=n.start.clone().add(e.duration)),this.view.calendar.isExternalDropRangeAllowed(n,e.eventProps)?n:null},renderDrag:function(){},destroyDrag:function(){},segResizeMousedown:function(t,e){function n(){s.destroyEventResize(),o.showEvent(c),u()}var i,r,s=this,o=this.view,l=o.calendar,d=t.el,c=t.event,h=c.start,f=l.getEventEnd(c);r=new Ie(this.coordMap,{distance:5,scroll:o.opt("dragScroll"),dragStart:function(e){s.triggerSegMouseout(t,e),s.isResizingSeg=!0,o.trigger("eventResizeStart",d[0],c,e,{})},cellOver:function(e){i=e.end,i.isAfter(h)||(i=h.clone().add(E(e.end,e.start))),i.isSame(f)?i=null:l.isEventRangeAllowed({start:h,end:i},c)?(s.renderEventResize({start:h,end:i},t),o.hideEvent(c)):(i=null,a())},cellOut:function(){i=null,n()},dragStop:function(t){s.isResizingSeg=!1,n(),o.trigger("eventResizeStop",d[0],c,t,{}),i&&o.reportEventResize(c,i,d,t)}}),r.mousedown(e)},renderEventResize:function(){},destroyEventResize:function(){},getEventTimeText:function(t,e){return e=e||this.eventTimeFormat,t.end&&this.displayEventEnd?this.view.formatRange(t,e):t.start.format(e)},getSegClasses:function(t,e,n){var i=t.event,r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(i.className,i.source?i.source.className:[]);return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),r},getEventSkinCss:function(t){var e=this.view,n=t.source||{},i=t.color,r=n.color,s=e.opt("eventColor"),o=t.backgroundColor||i||n.backgroundColor||r||e.opt("eventBackgroundColor")||s,l=t.borderColor||i||n.borderColor||r||e.opt("eventBorderColor")||s,a=t.textColor||n.textColor||e.opt("eventTextColor"),u=[];return o&&u.push("background-color:"+o),l&&u.push("border-color:"+l),a&&u.push("color:"+a),u.join(";")},eventsToSegs:function(t,e){var n,i=this.eventsToRanges(t),r=[];for(n=0;i.length>n;n++)r.push.apply(r,this.eventRangeToSegs(i[n],e));return r},eventsToRanges:function(e){var n=this,i=ne(e),r=[];return t.each(i,function(t,e){e.length&&r.push.apply(r,te(e[0])?n.eventsToInverseRanges(e):n.eventsToNormalRanges(e))}),r},eventsToNormalRanges:function(t){var e,n,i,r,s=this.view.calendar,o=[];for(e=0;t.length>e;e++)n=t[e],i=n.start.clone().stripZone(),r=s.getEventEnd(n).stripZone(),o.push({event:n,start:i,end:r,eventStartMS:+i,eventDurationMS:r-i});return o},eventsToInverseRanges:function(t){var e,n,i=this.view,r=i.start.clone().stripZone(),s=i.end.clone().stripZone(),o=this.eventsToNormalRanges(t),l=[],a=t[0],u=r;for(o.sort(ie),e=0;o.length>e;e++)n=o[e],n.start>u&&l.push({event:a,start:u,end:n.start}),u=n.end;return s>u&&l.push({event:a,start:u,end:s}),l},eventRangeToSegs:function(t,e){var n,i,r;for(n=e?e(t):this.rangeToSegs(t),i=0;n.length>i;i++)r=n[i],r.event=t.event,r.eventStartMS=t.eventStartMS,r.eventDurationMS=t.eventDurationMS;return n}}),De.compareSegs=re,De.dataAttrPrefix="";var $e=Xe.extend({numbersVisible:!1,bottomCoordPadding:0,breakOnWeeks:null,cellDates:null,dayToCellOffsets:null,rowEls:null,dayEls:null,helperEls:null,render:function(t){var e,n,i,r=this.view,s=this.rowCnt,o=this.colCnt,l=s*o,a="";for(e=0;s>e;e++)a+=this.dayRowHtml(e,t);for(this.el.html(a),this.rowEls=this.el.find(".fc-row"),this.dayEls=this.el.find(".fc-day"),n=0;l>n;n++)i=this.getCell(n),r.trigger("dayRender",null,i.start,this.dayEls.eq(n));Xe.prototype.render.call(this)},destroy:function(){this.destroySegPopover(),Xe.prototype.destroy.call(this)},dayRowHtml:function(t,e){var n=this.view,i=["fc-row","fc-week",n.widgetContentClass];return e&&i.push("fc-rigid"),'<div class="'+i.join(" ")+'">'+'<div class="fc-bg">'+"<table>"+this.rowHtml("day",t)+"</table>"+"</div>"+'<div class="fc-content-skeleton">'+"<table>"+(this.numbersVisible?"<thead>"+this.rowHtml("number",t)+"</thead>":"")+"</table>"+"</div>"+"</div>"},dayCellHtml:function(t){return this.bgCellHtml(t)},computeColHeadFormat:function(){return this.rowCnt>1?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},updateCells:function(){var t,e,n,i;if(this.updateCellDates(),t=this.cellDates,this.breakOnWeeks){for(e=t[0].day(),i=1;t.length>i&&t[i].day()!=e;i++);n=Math.ceil(t.length/i)}else n=1,i=t.length;this.rowCnt=n,this.colCnt=i},updateCellDates:function(){for(var t=this.view,e=this.start.clone(),n=[],i=-1,r=[];e.isBefore(this.end);)t.isHiddenDay(e)?r.push(i+.5):(i++,r.push(i),n.push(e.clone())),e.add(1,"days");this.cellDates=n,this.dayToCellOffsets=r},computeCellRange:function(t){var e=this.colCnt,n=t.row*e+(this.isRTL?e-t.col-1:t.col),i=this.cellDates[n].clone(),r=i.clone().add(1,"day");return{start:i,end:r}},getRowEl:function(t){return this.rowEls.eq(t)},getColEl:function(t){return this.dayEls.eq(t)},getCellDayEl:function(t){return this.dayEls.eq(t.row*this.colCnt+t.col)},computeRowCoords:function(){var t=Xe.prototype.computeRowCoords.call(this);return t[t.length-1].bottom+=this.bottomCoordPadding,t},rangeToSegs:function(t){var e,n,i,r,s,o,l,a,u,d,c=this.isRTL,h=this.rowCnt,f=this.colCnt,g=[];for(t=this.view.computeDayRange(t),e=this.dateToCellOffset(t.start),n=this.dateToCellOffset(t.end.subtract(1,"days")),i=0;h>i;i++)r=i*f,s=r+f-1,a=Math.max(r,e),u=Math.min(s,n),a=Math.ceil(a),u=Math.floor(u),u>=a&&(o=a===e,l=u===n,a-=r,u-=r,d={row:i,isStart:o,isEnd:l},c?(d.leftCol=f-u-1,d.rightCol=f-a-1):(d.leftCol=a,d.rightCol=u),g.push(d));return g},dateToCellOffset:function(t){var e=this.dayToCellOffsets,n=t.diff(this.start,"days");return 0>n?e[0]-1:n>=e.length?e[e.length-1]+1:e[n]},renderDrag:function(t,e){var n;return this.renderHighlight(this.view.calendar.ensureVisibleEventRange(t)),e&&!e.el.closest(this.el).length?(this.renderRangeHelper(t,e),n=this.view.opt("dragOpacity"),void 0!==n&&this.helperEls.css("opacity",n),!0):void 0},destroyDrag:function(){this.destroyHighlight(),this.destroyHelper()},renderEventResize:function(t,e){this.renderHighlight(t),this.renderRangeHelper(t,e)},destroyEventResize:function(){this.destroyHighlight(),this.destroyHelper()},renderHelper:function(e,n){var i,r=[],s=this.eventsToSegs([e]);s=this.renderFgSegEls(s),i=this.renderSegRows(s),this.rowEls.each(function(e,s){var o,l=t(s),a=t('<div class="fc-helper-skeleton"><table/></div>');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},destroyHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n){var i,r,s,o=[];for(n=this.renderFillSegEls(e,n),i=0;n.length>i;i++)r=n[i],s=this.renderFillRow(e,r),this.rowEls.eq(r.row).append(s),o.push(s[0]);return this.elsByFill[e]=t(o),n},renderFillRow:function(e,n){var i,r,s=this.colCnt,o=n.leftCol,l=n.rightCol+1;return i=t('<div class="fc-'+e.toLowerCase()+'-skeleton">'+"<table><tr/></table>"+"</div>"),r=i.find("tr"),o>0&&r.append('<td colspan="'+o+'"/>'),r.append(n.el.attr("colspan",l-o)),s>l&&r.append('<td colspan="'+(s-l)+'"/>'),this.bookendCells(r,e),i}});$e.mixin({rowStructs:null,destroyEvents:function(){this.destroySegPopover(),Xe.prototype.destroyEvents.apply(this,arguments)},getEventSegs:function(){return Xe.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return Xe.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},destroyFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;e.length>n;n++)i.push(this.renderSegRow(n,e[n]));return i},fgSegHtml:function(t,e){var n,i=this.view,r=t.event,s=i.isEventDraggable(r),o=!e&&r.allDay&&t.isEnd&&i.isEventResizable(r),l=this.getSegClasses(t,s,o),a=this.getEventSkinCss(r),u="";return l.unshift("fc-day-grid-event"),!r.allDay&&t.isStart&&(u='<span class="fc-time">'+z(this.getEventTimeText(r))+"</span>"),n='<span class="fc-title">'+(z(r.title||"")||" ")+"</span>",'<a class="'+l.join(" ")+'"'+(r.url?' href="'+z(r.url)+'"':"")+(a?' style="'+a+'"':"")+">"+'<div class="fc-content">'+(this.isRTL?n+" "+u:u+" "+n)+"</div>"+(o?'<div class="fc-resizer"/>':"")+"</a>"},renderSegRow:function(e,n){function i(e){for(;e>o;)d=(v[r-1]||[])[o],d?d.attr("rowspan",parseInt(d.attr("rowspan")||1,10)+1):(d=t("<td/>"),l.append(d)),m[r][o]=d,v[r][o]=d,o++}var r,s,o,l,a,u,d,c=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t("<tbody/>"),p=[],m=[],v=[];for(r=0;f>r;r++){if(s=h[r],o=0,l=t("<tr/>"),p.push([]),m.push([]),v.push([]),s)for(a=0;s.length>a;a++){for(u=s[a],i(u.leftCol),d=t('<td class="fc-event-container"/>').append(u.el),u.leftCol!=u.rightCol?d.attr("colspan",u.rightCol-u.leftCol+1):v[r][o]=d;u.rightCol>=o;)m[r][o]=d,p[r][o]=u,o++;l.append(d)}i(c),this.bookendCells(l,"eventSkeleton"),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:m,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(t.sort(re),e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&oe(n,r[i]);i++);n.level=i,(r[i]||(r[i]=[])).push(n)}for(i=0;r.length>i;i++)r[i].sort(le);return r},groupSegRows:function(t){var e,n=[];for(e=0;this.rowCnt>e;e++)n.push([]);for(e=0;t.length>e;e++)n[t[e].row].push(t[e]);return n}}),$e.mixin({segPopover:null,popoverSegs:null,destroySegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(t){var e,n,i=this.rowStructs||[];for(e=0;i.length>e;e++)this.unlimitRow(e),n=t?"number"==typeof t?t:this.computeRowLevelLimit(e):!1,n!==!1&&this.limitRow(e,n)},computeRowLevelLimit:function(t){var e,n,i=this.rowEls.eq(t),r=i.height(),s=this.rowStructs[t].tbodyEl.children();for(e=0;s.length>e;e++)if(n=s.eq(e).removeClass("fc-limited"),n.position().top+n.outerHeight()>r)return e;return!1},limitRow:function(e,n){function i(i){for(;i>D;)r=E.getCell(e,D),d=E.getCellSegs(r,n),d.length&&(f=o[n-1][D],w=E.renderMoreLink(r,d),y=t("<div/>").append(w),f.append(y),b.push(y[0])),D++}var r,s,o,l,a,u,d,c,h,f,g,p,m,v,y,w,E=this,S=this.rowStructs[e],b=[],D=0;if(n&&S.segLevels.length>n){for(s=S.segLevels[n-1],o=S.cellMatrix,l=S.tbodyEl.children().slice(n).addClass("fc-limited").get(),a=0;s.length>a;a++){for(u=s[a],i(u.leftCol),h=[],c=0;u.rightCol>=D;)r=this.getCell(e,D),d=this.getCellSegs(r,n),h.push(d),c+=d.length,D++;if(c){for(f=o[n-1][u.leftCol],g=f.attr("rowspan")||1,p=[],m=0;h.length>m;m++)v=t('<td class="fc-more-cell"/>').attr("rowspan",g),d=h[m],r=this.getCell(e,u.leftCol+m),w=this.renderMoreLink(r,[u].concat(d)),y=t("<div/>").append(w),v.append(y),p.push(v[0]),b.push(v[0]);f.addClass("fc-limited").after(t(p)),l.push(f[0])}}i(this.colCnt),S.moreEls=t(b),S.limitedEls=t(l)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n){var i=this,r=this.view;return t('<a class="fc-more"/>').text(this.getMoreLinkText(n.length)).on("click",function(s){var o=r.opt("eventLimitClick"),l=e.start,a=t(this),u=i.getCellDayEl(e),d=i.getCellSegs(e),c=i.resliceDaySegs(d,l),h=i.resliceDaySegs(n,l);"function"==typeof o&&(o=r.trigger("eventLimitClick",null,{date:l,dayEl:u,moreEl:a,segs:c,hiddenSegs:h},s)),"popover"===o?i.showSegPopover(e,a,c):"string"==typeof o&&r.calendar.zoomTo(l,o)})},showSegPopover:function(t,e,n){var i,r,s=this,o=this.view,l=e.parent();i=1==this.rowCnt?o.el:this.rowEls.eq(t.row),r={className:"fc-more-popover",content:this.renderSegPopoverContent(t,n),parentEl:this.el,top:i.offset().top,autoHide:!0,viewportConstrain:o.opt("popoverViewportConstrain"),hide:function(){s.segPopover.destroy(),s.segPopover=null,s.popoverSegs=null}},this.isRTL?r.right=l.offset().left+l.outerWidth()+1:r.left=l.offset().left-1,this.segPopover=new Oe(r),this.segPopover.show()},renderSegPopoverContent:function(e,n){var i,r=this.view,s=r.opt("theme"),o=e.start.format(r.opt("dayPopoverFormat")),l=t('<div class="fc-header '+r.widgetHeaderClass+'">'+'<span class="fc-close '+(s?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span>'+'<span class="fc-title">'+z(o)+"</span>"+'<div class="fc-clear"/>'+"</div>"+'<div class="fc-body '+r.widgetContentClass+'">'+'<div class="fc-event-container"></div>'+"</div>"),a=l.find(".fc-event-container");for(n=this.renderFgSegEls(n,!0),this.popoverSegs=n,i=0;n.length>i;i++)n[i].cell=e,a.append(n[i].el);return l},resliceDaySegs:function(e,n){var i=t.map(e,function(t){return t.event}),r=n.clone().stripTime(),s=r.clone().add(1,"days"),o={start:r,end:s};return this.eventsToSegs(i,function(t){var e=y(t,o);return e?[e]:[]})},getMoreLinkText:function(t){var e=this.view.opt("eventLimitText");return"function"==typeof e?e(t):"+"+t+" "+e},getCellSegs:function(t,e){for(var n,i=this.rowStructs[t.row].segMatrix,r=e||0,s=[];i.length>r;)n=i[r][t.col],n&&s.push(n),r++;return s}});var Ue=Xe.extend({slotDuration:null,snapDuration:null,minTime:null,maxTime:null,axisFormat:null,dayEls:null,slatEls:null,slatTops:null,helperEl:null,businessHourSegs:null,constructor:function(){Xe.apply(this,arguments),this.processOptions()},render:function(){this.el.html(this.renderHtml()),this.dayEls=this.el.find(".fc-day"),this.slatEls=this.el.find(".fc-slats tr"),this.computeSlatTops(),this.renderBusinessHours(),Xe.prototype.render.call(this)},renderBusinessHours:function(){var t=this.view.calendar.getBusinessHoursEvents();this.businessHourSegs=this.renderFill("businessHours",this.eventsToSegs(t),"bgevent")},renderHtml:function(){return'<div class="fc-bg"><table>'+this.rowHtml("slotBg")+"</table>"+"</div>"+'<div class="fc-slats">'+"<table>"+this.slatRowHtml()+"</table>"+"</div>"},slotBgCellHtml:function(t){return this.bgCellHtml(t)},slatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o="",l=0===this.slotDuration.asMinutes()%15,a=e.duration(+this.minTime);this.maxTime>a;)t=this.start.clone().time(a),n=t.minutes(),i='<td class="fc-axis fc-time '+r.widgetContentClass+'" '+r.axisStyleAttr()+">"+(l&&n?"":"<span>"+z(t.format(this.axisFormat))+"</span>")+"</td>",o+="<tr "+(n?'class="fc-minor"':"")+">"+(s?"":i)+'<td class="'+r.widgetContentClass+'"/>'+(s?i:"")+"</tr>",a.add(this.slotDuration);return o},processOptions:function(){var t=this.view,n=t.opt("slotDuration"),i=t.opt("snapDuration");n=e.duration(n),i=i?e.duration(i):n,this.slotDuration=n,this.snapDuration=i,this.minTime=e.duration(t.opt("minTime")),this.maxTime=e.duration(t.opt("maxTime")),this.axisFormat=t.opt("axisFormat")||t.opt("smallTimeFormat")},computeColHeadFormat:function(){return this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},updateCells:function(){var t,e=this.view,n=[];for(t=this.start.clone();t.isBefore(this.end);)n.push({day:t.clone()}),t.add(1,"day"),t=e.skipHiddenDays(t);this.isRTL&&n.reverse(),this.colData=n,this.colCnt=n.length,this.rowCnt=Math.ceil((this.maxTime-this.minTime)/this.snapDuration)},computeCellRange:function(t){var e=this.computeSnapTime(t.row),n=this.view.calendar.rezoneDate(t.day).time(e),i=n.clone().add(this.snapDuration);return{start:n,end:i}},getColEl:function(t){return this.dayEls.eq(t)},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},rangeToSegs:function(t){var e,n,i,r,s=this.colCnt,o=[];for(t={start:t.start.clone().stripZone(),end:t.end.clone().stripZone()},n=0;s>n;n++)i=this.colData[n].day,r={start:i.clone().time(this.minTime),end:i.clone().time(this.maxTime)},e=y(t,r),e&&(e.col=n,o.push(e)); return o},resize:function(){this.computeSlatTops(),this.updateSegVerticals()},computeRowCoords:function(){var t,e,n=this.el.offset().top,i=[];for(t=0;this.rowCnt>t;t++)e={top:n+this.computeTimeTop(this.computeSnapTime(t))},t>0&&(i[t-1].bottom=e.top),i.push(e);return e.bottom=e.top+this.computeTimeTop(this.computeSnapTime(t)),i},computeDateTop:function(t,n){return this.computeTimeTop(e.duration(t.clone().stripZone()-n.clone().stripTime()))},computeTimeTop:function(t){var e,n,i,r,s=(t-this.minTime)/this.slotDuration;return s=Math.max(0,s),s=Math.min(this.slatEls.length,s),e=Math.floor(s),n=s-e,i=this.slatTops[e],n?(r=this.slatTops[e+1],i+(r-i)*n):i},computeSlatTops:function(){var e,n=[];this.slatEls.each(function(i,r){e=t(r).position().top,n.push(e)}),n.push(e+this.slatEls.last().outerHeight()),this.slatTops=n},renderDrag:function(t,e){var n;return e?(this.renderRangeHelper(t,e),n=this.view.opt("dragOpacity"),void 0!==n&&this.helperEl.css("opacity",n),!0):(this.renderHighlight(this.view.calendar.ensureVisibleEventRange(t)),void 0)},destroyDrag:function(){this.destroyHelper(),this.destroyHighlight()},renderEventResize:function(t,e){this.renderRangeHelper(t,e)},destroyEventResize:function(){this.destroyHelper()},renderHelper:function(e,n){var i,r,s,o,l=this.eventsToSegs([e]);for(l=this.renderFgSegEls(l),i=this.renderSegTable(l),r=0;l.length>r;r++)s=l[r],n&&n.col===s.col&&(o=n.el,s.el.css({left:o.css("left"),right:o.css("right"),"margin-left":o.css("margin-left"),"margin-right":o.css("margin-right")}));this.helperEl=t('<div class="fc-helper-skeleton"/>').append(i).appendTo(this.el)},destroyHelper:function(){this.helperEl&&(this.helperEl.remove(),this.helperEl=null)},renderSelection:function(t){this.view.opt("selectHelper")?this.renderRangeHelper(t):this.renderHighlight(t)},destroySelection:function(){this.destroyHelper(),this.destroyHighlight()},renderFill:function(e,n,i){var r,s,o,l,a,u,d,c,h,f;if(n.length){for(n=this.renderFillSegEls(e,n),r=this.groupSegCols(n),i=i||e.toLowerCase(),s=t('<div class="fc-'+i+'-skeleton">'+"<table><tr/></table>"+"</div>"),o=s.find("tr"),l=0;r.length>l;l++)if(a=r[l],u=t("<td/>").appendTo(o),a.length)for(d=t('<div class="fc-'+i+'-container"/>').appendTo(u),c=this.colData[l].day,h=0;a.length>h;h++)f=a[h],d.append(f.el.css({top:this.computeDateTop(f.start,c),bottom:-this.computeDateTop(f.end,c)}));this.bookendCells(o,e),this.el.append(s),this.elsByFill[e]=s}return n}});Ue.mixin({eventSkeletonEl:null,renderFgSegs:function(e){return e=this.renderFgSegEls(e),this.el.append(this.eventSkeletonEl=t('<div class="fc-content-skeleton"/>').append(this.renderSegTable(e))),e},destroyFgSegs:function(){this.eventSkeletonEl&&(this.eventSkeletonEl.remove(),this.eventSkeletonEl=null)},renderSegTable:function(e){var n,i,r,s,o,l,a=t("<table><tr/></table>"),u=a.find("tr");for(n=this.groupSegCols(e),this.computeSegVerticals(e),s=0;n.length>s;s++){for(o=n[s],ae(o),l=t('<div class="fc-event-container"/>'),i=0;o.length>i;i++)r=o[i],r.el.css(this.generateSegPositionCss(r)),30>r.bottom-r.top&&r.el.addClass("fc-short"),l.append(r.el);u.append(t("<td/>").append(l))}return this.bookendCells(u,"eventSkeleton"),a},updateSegVerticals:function(){var t,e=(this.segs||[]).concat(this.businessHourSegs||[]);for(this.computeSegVerticals(e),t=0;e.length>t;t++)e[t].el.css(this.generateSegVerticalCss(e[t]))},computeSegVerticals:function(t){var e,n;for(e=0;t.length>e;e++)n=t[e],n.top=this.computeDateTop(n.start,n.start),n.bottom=this.computeDateTop(n.end,n.start)},fgSegHtml:function(t,e){var n,i,r,s=this.view,o=t.event,l=s.isEventDraggable(o),a=!e&&t.isEnd&&s.isEventResizable(o),u=this.getSegClasses(t,l,a),d=this.getEventSkinCss(o);return u.unshift("fc-time-grid-event"),s.isMultiDayEvent(o)?(t.isStart||t.isEnd)&&(n=this.getEventTimeText(t),i=this.getEventTimeText(t,"LT"),r=this.getEventTimeText({start:t.start})):(n=this.getEventTimeText(o),i=this.getEventTimeText(o,"LT"),r=this.getEventTimeText({start:o.start})),'<a class="'+u.join(" ")+'"'+(o.url?' href="'+z(o.url)+'"':"")+(d?' style="'+d+'"':"")+">"+'<div class="fc-content">'+(n?'<div class="fc-time" data-start="'+z(r)+'"'+' data-full="'+z(i)+'"'+">"+"<span>"+z(n)+"</span>"+"</div>":"")+(o.title?'<div class="fc-title">'+z(o.title)+"</div>":"")+"</div>"+'<div class="fc-bg"/>'+(a?'<div class="fc-resizer"/>':"")+"</a>"},generateSegPositionCss:function(t){var e,n,i=this.view.opt("slotEventOverlap"),r=t.backwardCoord,s=t.forwardCoord,o=this.generateSegVerticalCss(t);return i&&(s=Math.min(1,r+2*(s-r))),this.isRTL?(e=1-s,n=r):(e=r,n=1-s),o.zIndex=t.level+1,o.left=100*e+"%",o.right=100*n+"%",i&&t.forwardPressure&&(o[this.isRTL?"marginLeft":"marginRight"]=20),o},generateSegVerticalCss:function(t){return{top:t.top,bottom:-t.bottom}},groupSegCols:function(t){var e,n=[];for(e=0;this.colCnt>e;e++)n.push([]);for(e=0;t.length>e;e++)n[t[e].col].push(t[e]);return n}});var qe=De.View=K.extend({type:null,name:null,calendar:null,options:null,coordMap:null,el:null,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isSelected:!1,scrollerEl:null,scrollTop:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,documentMousedownProxy:null,constructor:function(n,i,r){this.calendar=n,this.options=i,this.type=this.name=r,this.nextDayThreshold=e.duration(this.opt("nextDayThreshold")),this.initTheming(),this.initHiddenDays(),this.documentMousedownProxy=t.proxy(this,"documentMousedown"),this.initialize()},initialize:function(){},opt:function(e){var n;return n=this.options[e],void 0!==n?n:(n=this.calendar.options[e],t.isPlainObject(n)&&!r(e)?w(n,this.type):n)},trigger:function(t,e){var n=this.calendar;return n.trigger.apply(n,[t,e||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(t){this.setRange(this.computeRange(t))},setRange:function(e){t.extend(this,e)},computeRange:function(t){var n,i,r=e.duration(this.opt("duration")||this.constructor.duration||{days:1}),s=b(r),o=t.clone().startOf(s),l=o.clone().add(r);return D("days",r)?(o.stripTime(),l.stripTime()):(o.hasTime()||(o=this.calendar.rezoneDate(o)),l.hasTime()||(l=this.calendar.rezoneDate(l))),n=o.clone(),n=this.skipHiddenDays(n),i=l.clone(),i=this.skipHiddenDays(i,-1,!0),{intervalDuration:r,intervalUnit:s,intervalStart:o,intervalEnd:l,start:n,end:i}},computePrevDate:function(t){return this.skipHiddenDays(t.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(t){return this.skipHiddenDays(t.clone().startOf(this.intervalUnit).add(this.intervalDuration))},computeTitle:function(){return this.formatRange({start:this.intervalStart,end:this.intervalEnd},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),j(t.start,i,e,n,this.opt("isRTL"))},renderView:function(){this.render(),this.updateSize(),this.initializeScroll(),this.trigger("viewRender",this,this,this.el),t(document).on("mousedown",this.documentMousedownProxy)},render:function(){},destroyView:function(){this.unselect(),this.destroyViewEvents(),this.destroy(),this.trigger("viewDestroy",this,this,this.el),t(document).off("mousedown",this.documentMousedownProxy)},destroy:function(){this.el.empty()},initTheming:function(){var t=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=t+"-widget-header",this.widgetContentClass=t+"-widget-content",this.highlightStateClass=t+"-state-highlight"},updateSize:function(t){t&&this.recordScroll(),this.updateHeight(),this.updateWidth()},updateWidth:function(){},updateHeight:function(){var t=this.calendar;this.setHeight(t.getSuggestedViewHeight(),t.isHeightAuto())},setHeight:function(){},computeScrollerHeight:function(t,e){var n,i;return e=e||this.scrollerEl,n=this.el.add(e),n.css({position:"relative",left:-1}),i=this.el.outerHeight()-e.height(),n.css({position:"",left:""}),t-i},initializeScroll:function(){},recordScroll:function(){this.scrollerEl&&(this.scrollTop=this.scrollerEl.scrollTop())},restoreScroll:function(){null!==this.scrollTop&&this.scrollerEl.scrollTop(this.scrollTop)},renderViewEvents:function(t){this.renderEvents(t),this.eventSegEach(function(t){this.trigger("eventAfterRender",t.event,t.event,t.el)}),this.trigger("eventAfterAllRender")},renderEvents:function(){},destroyViewEvents:function(){this.eventSegEach(function(t){this.trigger("eventDestroy",t.event,t.event,t.el)}),this.destroyEvents()},destroyEvents:function(){},resolveEventEl:function(e,n){var i=this.trigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.eventSegEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.eventSegEach(function(t){t.el.css("visibility","hidden")},t)},eventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;i.length>n;n++)e&&i[n].event._id!==e._id||t.call(this,i[n])},getEventSegs:function(){return[]},isEventDraggable:function(t){var e=t.source||{};return F(t.startEditable,e.startEditable,this.opt("eventStartEditable"),t.editable,e.editable,this.opt("editable"))},reportEventDrop:function(t,e,n,i){var r=this.calendar,s=r.mutateEvent(t,e),o=function(){s.undo(),r.reportEventChange()};this.triggerEventDrop(t,s.dateDelta,o,n,i),r.reportEventChange()},triggerEventDrop:function(t,e,n,i,r){this.trigger("eventDrop",i[0],t,e,n,r,{})},reportExternalDrop:function(e,n,i,r,s){var o,l,a=e.eventProps;a&&(o=t.extend({},a,n),l=this.calendar.renderEvent(o,e.stick)[0]),this.triggerExternalDrop(l,n,i,r,s)},triggerExternalDrop:function(t,e,n,i,r){this.trigger("drop",n[0],e.start,i,r),t&&this.trigger("eventReceive",null,t)},renderDrag:function(){},destroyDrag:function(){},isEventResizable:function(t){var e=t.source||{};return F(t.durationEditable,e.durationEditable,this.opt("eventDurationEditable"),t.editable,e.editable,this.opt("editable"))},reportEventResize:function(t,e,n,i){var r=this.calendar,s=r.mutateEvent(t,{end:e}),o=function(){s.undo(),r.reportEventChange()};this.triggerEventResize(t,s.durationDelta,o,n,i),r.reportEventChange()},triggerEventResize:function(t,e,n,i,r){this.trigger("eventResize",i[0],t,e,n,r,{})},select:function(t,e){this.unselect(e),this.renderSelection(t),this.reportSelection(t,e)},renderSelection:function(){},reportSelection:function(t,e){this.isSelected=!0,this.trigger("select",null,t.start,t.end,e)},unselect:function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection(),this.trigger("unselect",null,t))},destroySelection:function(){},documentMousedown:function(e){var n;this.isSelected&&this.opt("unselectAuto")&&v(e)&&(n=this.opt("unselectCancel"),n&&t(e.target).closest(n).length||this.unselect(e))},initHiddenDays:function(){var e,n=this.opt("hiddenDays")||[],i=[],r=0;for(this.opt("weekends")===!1&&n.push(0,6),e=0;7>e;e++)(i[e]=-1!==t.inArray(e,n))||r++;if(!r)throw"invalid hiddenDays";this.isHiddenDayHash=i},isHiddenDay:function(t){return e.isMoment(t)&&(t=t.day()),this.isHiddenDayHash[t]},skipHiddenDays:function(t,e,n){var i=t.clone();for(e=e||1;this.isHiddenDayHash[(i.day()+(n?e:0)+7)%7];)i.add(e,"days");return i},computeDayRange:function(t){var e,n=t.start.clone().stripTime(),i=t.end,r=null;return i&&(r=i.clone().stripTime(),e=+i.time(),e&&e>=this.nextDayThreshold&&r.add(1,"days")),(!i||n>=r)&&(r=n.clone().add(1,"days")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1}});De.sourceNormalizers=[],De.sourceFetchers=[];var Ke={dataType:"json",cache:!1},Qe=1,Je=Ce.basic=qe.extend({dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headRowEl:null,initialize:function(){this.dayGrid=new $e(this),this.coordMap=this.dayGrid.coordMap},setRange:function(t){qe.prototype.setRange.call(this,t),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(t)},computeRange:function(t){var e=qe.prototype.computeRange.call(this,t);return/year|month/.test(e.intervalUnit)&&(e.start.startOf("week"),e.start=this.skipHiddenDays(e.start),e.end.weekday()&&(e.end.add(1,"week").startOf("week"),e.end=this.skipHiddenDays(e.end,-1,!0))),e},render:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderHtml()),this.headRowEl=this.el.find("thead .fc-row"),this.scrollerEl=this.el.find(".fc-day-grid-container"),this.dayGrid.coordMap.containerEl=this.scrollerEl,this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(this.hasRigidRows())},destroy:function(){this.dayGrid.destroy(),qe.prototype.destroy.call(this)},renderHtml:function(){return'<table><thead><tr><td class="'+this.widgetHeaderClass+'">'+this.dayGrid.headHtml()+"</td>"+"</tr>"+"</thead>"+"<tbody>"+"<tr>"+'<td class="'+this.widgetContentClass+'">'+'<div class="fc-day-grid-container">'+'<div class="fc-day-grid"/>'+"</div>"+"</td>"+"</tr>"+"</tbody>"+"</table>"},headIntroHtml:function(){return this.weekNumbersVisible?'<th class="fc-week-number '+this.widgetHeaderClass+'" '+this.weekNumberStyleAttr()+">"+"<span>"+z(this.opt("weekNumberTitle"))+"</span>"+"</th>":void 0},numberIntroHtml:function(t){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+">"+"<span>"+this.calendar.calculateWeekNumber(this.dayGrid.getCell(t,0).start)+"</span>"+"</td>":void 0},dayIntroHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number '+this.widgetContentClass+'" '+this.weekNumberStyleAttr()+"></td>":void 0},introHtml:function(){return this.weekNumbersVisible?'<td class="fc-week-number" '+this.weekNumberStyleAttr()+"></td>":void 0},numberCellHtml:function(t){var e,n=t.start;return this.dayNumbersVisible?(e=this.dayGrid.getDayClasses(n),e.unshift("fc-day-number"),'<td class="'+e.join(" ")+'" data-date="'+n.format()+'">'+n.date()+"</td>"):"<td/>"},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=h(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,i=this.opt("eventLimit");g(this.scrollerEl),l(this.headRowEl),this.dayGrid.destroySegPopover(),i&&"number"==typeof i&&this.dayGrid.limitRows(i),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),i&&"number"!=typeof i&&this.dayGrid.limitRows(i),!e&&f(this.scrollerEl,n)&&(o(this.headRowEl,m(this.scrollerEl)),n=this.computeScrollerHeight(t),this.scrollerEl.height(n),this.restoreScroll())},setGridHeight:function(t,e){e?c(this.dayGrid.rowEls):d(this.dayGrid.rowEls,t,!0)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},destroyEvents:function(){this.recordScroll(),this.dayGrid.destroyEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},destroyDrag:function(){this.dayGrid.destroyDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},destroySelection:function(){this.dayGrid.destroySelection()}});n({fixedWeekCount:!0});var tn=Ce.month=Je.extend({computeRange:function(t){var e=Je.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&e.end.add(6-e.end.diff(e.start,"weeks"),"weeks"),e},setGridHeight:function(t,e){e=e||"variable"===this.opt("weekMode"),e&&(t*=this.rowCnt/6),d(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){var t=this.opt("weekMode");return t?"fixed"===t:this.opt("fixedWeekCount")}});tn.duration={months:1},Ce.basicWeek={type:"basic",duration:{weeks:1}},Ce.basicDay={type:"basic",duration:{days:1}},n({allDaySlot:!0,allDayText:"all-day",scrollTime:"06:00:00",slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0});var en=5;Ce.agenda=qe.extend({timeGrid:null,dayGrid:null,axisWidth:null,noScrollRowEls:null,bottomRuleEl:null,bottomRuleHeight:null,initialize:function(){this.timeGrid=new Ue(this),this.opt("allDaySlot")?(this.dayGrid=new $e(this),this.coordMap=new Ze([this.dayGrid.coordMap,this.timeGrid.coordMap])):this.coordMap=this.timeGrid.coordMap},setRange:function(t){qe.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},render:function(){this.el.addClass("fc-agenda-view").html(this.renderHtml()),this.scrollerEl=this.el.find(".fc-time-grid-container"),this.timeGrid.coordMap.containerEl=this.scrollerEl,this.timeGrid.el=this.el.find(".fc-time-grid"),this.timeGrid.render(),this.bottomRuleEl=t('<hr class="'+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},destroy:function(){this.timeGrid.destroy(),this.dayGrid&&this.dayGrid.destroy(),qe.prototype.destroy.call(this)},renderHtml:function(){return'<table><thead><tr><td class="'+this.widgetHeaderClass+'">'+this.timeGrid.headHtml()+"</td>"+"</tr>"+"</thead>"+"<tbody>"+"<tr>"+'<td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="'+this.widgetHeaderClass+'"/>':"")+'<div class="fc-time-grid-container">'+'<div class="fc-time-grid"/>'+"</div>"+"</td>"+"</tr>"+"</tbody>"+"</table>"},headIntroHtml:function(){var t,e,n,i;return this.opt("weekNumbers")?(t=this.timeGrid.getCell(0).start,e=this.calendar.calculateWeekNumber(t),n=this.opt("weekNumberTitle"),i=this.opt("isRTL")?e+n:n+e,'<th class="fc-axis fc-week-number '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+">"+"<span>"+z(i)+"</span>"+"</th>"):'<th class="fc-axis '+this.widgetHeaderClass+'" '+this.axisStyleAttr()+"></th>"},dayIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+">"+"<span>"+(this.opt("allDayHtml")||z(this.opt("allDayText")))+"</span>"+"</td>"},slotBgIntroHtml:function(){return'<td class="fc-axis '+this.widgetContentClass+'" '+this.axisStyleAttr()+"></td>"},introHtml:function(){return'<td class="fc-axis" '+this.axisStyleAttr()+"></td>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},updateSize:function(t){t&&this.timeGrid.resize(),qe.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=h(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,i;null===this.bottomRuleHeight&&(this.bottomRuleHeight=this.bottomRuleEl.outerHeight()),this.bottomRuleEl.hide(),this.scrollerEl.css("overflow",""),g(this.scrollerEl),l(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.destroySegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=en),n&&this.dayGrid.limitRows(n)),e||(i=this.computeScrollerHeight(t),f(this.scrollerEl,i)?(o(this.noScrollRowEls,m(this.scrollerEl)),i=this.computeScrollerHeight(t),this.scrollerEl.height(i),this.restoreScroll()):(this.scrollerEl.height(i).css("overflow","hidden"),this.bottomRuleEl.show()))},initializeScroll:function(){function t(){n.scrollerEl.scrollTop(r)}var n=this,i=e.duration(this.opt("scrollTime")),r=this.timeGrid.computeTimeTop(i);r=Math.ceil(r),r&&r++,t(),setTimeout(t,0)},renderEvents:function(t){var e,n,i=[],r=[],s=[];for(n=0;t.length>n;n++)t[n].allDay?i.push(t[n]):r.push(t[n]);e=this.timeGrid.renderEvents(r),this.dayGrid&&(s=this.dayGrid.renderEvents(i)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},destroyEvents:function(){this.recordScroll(),this.timeGrid.destroyEvents(),this.dayGrid&&this.dayGrid.destroyEvents()},renderDrag:function(t,e){return t.start.hasTime()?this.timeGrid.renderDrag(t,e):this.dayGrid?this.dayGrid.renderDrag(t,e):void 0},destroyDrag:function(){this.timeGrid.destroyDrag(),this.dayGrid&&this.dayGrid.destroyDrag()},renderSelection:function(t){t.start.hasTime()||t.end.hasTime()?this.timeGrid.renderSelection(t):this.dayGrid&&this.dayGrid.renderSelection(t)},destroySelection:function(){this.timeGrid.destroySelection(),this.dayGrid&&this.dayGrid.destroySelection()}}),Ce.agendaWeek={type:"agenda",duration:{weeks:1}},Ce.agendaDay={type:"agenda",duration:{days:1}}}); AdminLTE/plugins/timepicker/bootstrap-timepicker.min.js 0000644 00000044375 15002261751 0017261 0 ustar 00 /*! bootstrap-timepicker v0.5.2 * http://jdewit.github.com/bootstrap-timepicker * Copyright (c) 2016 Joris de Wit and bootstrap-timepicker contributors * MIT License */!function(a,b,c){"use strict";var d=function(b,c){this.widget="",this.$element=a(b),this.defaultTime=c.defaultTime,this.disableFocus=c.disableFocus,this.disableMousewheel=c.disableMousewheel,this.isOpen=c.isOpen,this.minuteStep=c.minuteStep,this.modalBackdrop=c.modalBackdrop,this.orientation=c.orientation,this.secondStep=c.secondStep,this.snapToStep=c.snapToStep,this.showInputs=c.showInputs,this.showMeridian=c.showMeridian,this.showSeconds=c.showSeconds,this.template=c.template,this.appendWidgetTo=c.appendWidgetTo,this.showWidgetOnAddonClick=c.showWidgetOnAddonClick,this.icons=c.icons,this.maxHours=c.maxHours,this.explicitMode=c.explicitMode,this.handleDocumentClick=function(a){var b=a.data.scope;b.$element.parent().find(a.target).length||b.$widget.is(a.target)||b.$widget.find(a.target).length||b.hideWidget()},this._init()};d.prototype={constructor:d,_init:function(){var b=this;this.showWidgetOnAddonClick&&this.$element.parent().hasClass("input-group")&&this.$element.parent().hasClass("bootstrap-timepicker")?(this.$element.parent(".input-group.bootstrap-timepicker").find(".input-group-addon").on({"click.timepicker":a.proxy(this.showWidget,this)}),this.$element.on({"focus.timepicker":a.proxy(this.highlightUnit,this),"click.timepicker":a.proxy(this.highlightUnit,this),"keydown.timepicker":a.proxy(this.elementKeydown,this),"blur.timepicker":a.proxy(this.blurElement,this),"mousewheel.timepicker DOMMouseScroll.timepicker":a.proxy(this.mousewheel,this)})):this.template?this.$element.on({"focus.timepicker":a.proxy(this.showWidget,this),"click.timepicker":a.proxy(this.showWidget,this),"blur.timepicker":a.proxy(this.blurElement,this),"mousewheel.timepicker DOMMouseScroll.timepicker":a.proxy(this.mousewheel,this)}):this.$element.on({"focus.timepicker":a.proxy(this.highlightUnit,this),"click.timepicker":a.proxy(this.highlightUnit,this),"keydown.timepicker":a.proxy(this.elementKeydown,this),"blur.timepicker":a.proxy(this.blurElement,this),"mousewheel.timepicker DOMMouseScroll.timepicker":a.proxy(this.mousewheel,this)}),this.template!==!1?this.$widget=a(this.getTemplate()).on("click",a.proxy(this.widgetClick,this)):this.$widget=!1,this.showInputs&&this.$widget!==!1&&this.$widget.find("input").each(function(){a(this).on({"click.timepicker":function(){a(this).select()},"keydown.timepicker":a.proxy(b.widgetKeydown,b),"keyup.timepicker":a.proxy(b.widgetKeyup,b)})}),this.setDefaultTime(this.defaultTime)},blurElement:function(){this.highlightedUnit=null,this.updateFromElementVal()},clear:function(){this.hour="",this.minute="",this.second="",this.meridian="",this.$element.val("")},decrementHour:function(){if(this.showMeridian)if(1===this.hour)this.hour=12;else{if(12===this.hour)return this.hour--,this.toggleMeridian();if(0===this.hour)return this.hour=11,this.toggleMeridian();this.hour--}else this.hour<=0?this.hour=this.maxHours-1:this.hour--},decrementMinute:function(a){var b;b=a?this.minute-a:this.minute-this.minuteStep,0>b?(this.decrementHour(),this.minute=b+60):this.minute=b},decrementSecond:function(){var a=this.second-this.secondStep;0>a?(this.decrementMinute(!0),this.second=a+60):this.second=a},elementKeydown:function(a){switch(a.which){case 9:if(a.shiftKey){if("hour"===this.highlightedUnit){this.hideWidget();break}this.highlightPrevUnit()}else{if(this.showMeridian&&"meridian"===this.highlightedUnit||this.showSeconds&&"second"===this.highlightedUnit||!this.showMeridian&&!this.showSeconds&&"minute"===this.highlightedUnit){this.hideWidget();break}this.highlightNextUnit()}a.preventDefault(),this.updateFromElementVal();break;case 27:this.updateFromElementVal();break;case 37:a.preventDefault(),this.highlightPrevUnit(),this.updateFromElementVal();break;case 38:switch(a.preventDefault(),this.highlightedUnit){case"hour":this.incrementHour(),this.highlightHour();break;case"minute":this.incrementMinute(),this.highlightMinute();break;case"second":this.incrementSecond(),this.highlightSecond();break;case"meridian":this.toggleMeridian(),this.highlightMeridian()}this.update();break;case 39:a.preventDefault(),this.highlightNextUnit(),this.updateFromElementVal();break;case 40:switch(a.preventDefault(),this.highlightedUnit){case"hour":this.decrementHour(),this.highlightHour();break;case"minute":this.decrementMinute(),this.highlightMinute();break;case"second":this.decrementSecond(),this.highlightSecond();break;case"meridian":this.toggleMeridian(),this.highlightMeridian()}this.update()}},getCursorPosition:function(){var a=this.$element.get(0);if("selectionStart"in a)return a.selectionStart;if(c.selection){a.focus();var b=c.selection.createRange(),d=c.selection.createRange().text.length;return b.moveStart("character",-a.value.length),b.text.length-d}},getTemplate:function(){var a,b,c,d,e,f;switch(this.showInputs?(b='<input type="text" class="bootstrap-timepicker-hour" maxlength="2"/>',c='<input type="text" class="bootstrap-timepicker-minute" maxlength="2"/>',d='<input type="text" class="bootstrap-timepicker-second" maxlength="2"/>',e='<input type="text" class="bootstrap-timepicker-meridian" maxlength="2"/>'):(b='<span class="bootstrap-timepicker-hour"></span>',c='<span class="bootstrap-timepicker-minute"></span>',d='<span class="bootstrap-timepicker-second"></span>',e='<span class="bootstrap-timepicker-meridian"></span>'),f='<table><tr><td><a href="#" data-action="incrementHour"><span class="'+this.icons.up+'"></span></a></td><td class="separator"> </td><td><a href="#" data-action="incrementMinute"><span class="'+this.icons.up+'"></span></a></td>'+(this.showSeconds?'<td class="separator"> </td><td><a href="#" data-action="incrementSecond"><span class="'+this.icons.up+'"></span></a></td>':"")+(this.showMeridian?'<td class="separator"> </td><td class="meridian-column"><a href="#" data-action="toggleMeridian"><span class="'+this.icons.up+'"></span></a></td>':"")+"</tr><tr><td>"+b+'</td> <td class="separator">:</td><td>'+c+"</td> "+(this.showSeconds?'<td class="separator">:</td><td>'+d+"</td>":"")+(this.showMeridian?'<td class="separator"> </td><td>'+e+"</td>":"")+'</tr><tr><td><a href="#" data-action="decrementHour"><span class="'+this.icons.down+'"></span></a></td><td class="separator"></td><td><a href="#" data-action="decrementMinute"><span class="'+this.icons.down+'"></span></a></td>'+(this.showSeconds?'<td class="separator"> </td><td><a href="#" data-action="decrementSecond"><span class="'+this.icons.down+'"></span></a></td>':"")+(this.showMeridian?'<td class="separator"> </td><td><a href="#" data-action="toggleMeridian"><span class="'+this.icons.down+'"></span></a></td>':"")+"</tr></table>",this.template){case"modal":a='<div class="bootstrap-timepicker-widget modal hide fade in" data-backdrop="'+(this.modalBackdrop?"true":"false")+'"><div class="modal-header"><a href="#" class="close" data-dismiss="modal">×</a><h3>Pick a Time</h3></div><div class="modal-content">'+f+'</div><div class="modal-footer"><a href="#" class="btn btn-primary" data-dismiss="modal">OK</a></div></div>';break;case"dropdown":a='<div class="bootstrap-timepicker-widget dropdown-menu">'+f+"</div>"}return a},getTime:function(){return""===this.hour?"":this.hour+":"+(1===this.minute.toString().length?"0"+this.minute:this.minute)+(this.showSeconds?":"+(1===this.second.toString().length?"0"+this.second:this.second):"")+(this.showMeridian?" "+this.meridian:"")},hideWidget:function(){this.isOpen!==!1&&(this.$element.trigger({type:"hide.timepicker",time:{value:this.getTime(),hours:this.hour,minutes:this.minute,seconds:this.second,meridian:this.meridian}}),"modal"===this.template&&this.$widget.modal?this.$widget.modal("hide"):this.$widget.removeClass("open"),a(c).off("mousedown.timepicker, touchend.timepicker",this.handleDocumentClick),this.isOpen=!1,this.$widget.detach())},highlightUnit:function(){this.position=this.getCursorPosition(),this.position>=0&&this.position<=2?this.highlightHour():this.position>=3&&this.position<=5?this.highlightMinute():this.position>=6&&this.position<=8?this.showSeconds?this.highlightSecond():this.highlightMeridian():this.position>=9&&this.position<=11&&this.highlightMeridian()},highlightNextUnit:function(){switch(this.highlightedUnit){case"hour":this.highlightMinute();break;case"minute":this.showSeconds?this.highlightSecond():this.showMeridian?this.highlightMeridian():this.highlightHour();break;case"second":this.showMeridian?this.highlightMeridian():this.highlightHour();break;case"meridian":this.highlightHour()}},highlightPrevUnit:function(){switch(this.highlightedUnit){case"hour":this.showMeridian?this.highlightMeridian():this.showSeconds?this.highlightSecond():this.highlightMinute();break;case"minute":this.highlightHour();break;case"second":this.highlightMinute();break;case"meridian":this.showSeconds?this.highlightSecond():this.highlightMinute()}},highlightHour:function(){var a=this.$element.get(0),b=this;this.highlightedUnit="hour",a.setSelectionRange&&setTimeout(function(){b.hour<10?a.setSelectionRange(0,1):a.setSelectionRange(0,2)},0)},highlightMinute:function(){var a=this.$element.get(0),b=this;this.highlightedUnit="minute",a.setSelectionRange&&setTimeout(function(){b.hour<10?a.setSelectionRange(2,4):a.setSelectionRange(3,5)},0)},highlightSecond:function(){var a=this.$element.get(0),b=this;this.highlightedUnit="second",a.setSelectionRange&&setTimeout(function(){b.hour<10?a.setSelectionRange(5,7):a.setSelectionRange(6,8)},0)},highlightMeridian:function(){var a=this.$element.get(0),b=this;this.highlightedUnit="meridian",a.setSelectionRange&&(this.showSeconds?setTimeout(function(){b.hour<10?a.setSelectionRange(8,10):a.setSelectionRange(9,11)},0):setTimeout(function(){b.hour<10?a.setSelectionRange(5,7):a.setSelectionRange(6,8)},0))},incrementHour:function(){if(this.showMeridian){if(11===this.hour)return this.hour++,this.toggleMeridian();12===this.hour&&(this.hour=0)}return this.hour===this.maxHours-1?void(this.hour=0):void this.hour++},incrementMinute:function(a){var b;b=a?this.minute+a:this.minute+this.minuteStep-this.minute%this.minuteStep,b>59?(this.incrementHour(),this.minute=b-60):this.minute=b},incrementSecond:function(){var a=this.second+this.secondStep-this.second%this.secondStep;a>59?(this.incrementMinute(!0),this.second=a-60):this.second=a},mousewheel:function(b){if(!this.disableMousewheel){b.preventDefault(),b.stopPropagation();var c=b.originalEvent.wheelDelta||-b.originalEvent.detail,d=null;switch("mousewheel"===b.type?d=-1*b.originalEvent.wheelDelta:"DOMMouseScroll"===b.type&&(d=40*b.originalEvent.detail),d&&(b.preventDefault(),a(this).scrollTop(d+a(this).scrollTop())),this.highlightedUnit){case"minute":c>0?this.incrementMinute():this.decrementMinute(),this.highlightMinute();break;case"second":c>0?this.incrementSecond():this.decrementSecond(),this.highlightSecond();break;case"meridian":this.toggleMeridian(),this.highlightMeridian();break;default:c>0?this.incrementHour():this.decrementHour(),this.highlightHour()}return!1}},changeToNearestStep:function(a,b){return a%b===0?a:Math.round(a%b/b)?(a+(b-a%b))%60:a-a%b},place:function(){if(!this.isInline){var c=this.$widget.outerWidth(),d=this.$widget.outerHeight(),e=10,f=a(b).width(),g=a(b).height(),h=a(b).scrollTop(),i=parseInt(this.$element.parents().filter(function(){return"auto"!==a(this).css("z-index")}).first().css("z-index"),10)+10,j=this.component?this.component.parent().offset():this.$element.offset(),k=this.component?this.component.outerHeight(!0):this.$element.outerHeight(!1),l=this.component?this.component.outerWidth(!0):this.$element.outerWidth(!1),m=j.left,n=j.top;this.$widget.removeClass("timepicker-orient-top timepicker-orient-bottom timepicker-orient-right timepicker-orient-left"),"auto"!==this.orientation.x?(this.$widget.addClass("timepicker-orient-"+this.orientation.x),"right"===this.orientation.x&&(m-=c-l)):(this.$widget.addClass("timepicker-orient-left"),j.left<0?m-=j.left-e:j.left+c>f&&(m=f-c-e));var o,p,q=this.orientation.y;"auto"===q&&(o=-h+j.top-d,p=h+g-(j.top+k+d),q=Math.max(o,p)===p?"top":"bottom"),this.$widget.addClass("timepicker-orient-"+q),"top"===q?n+=k:n-=d+parseInt(this.$widget.css("padding-top"),10),this.$widget.css({top:n,left:m,zIndex:i})}},remove:function(){a("document").off(".timepicker"),this.$widget&&this.$widget.remove(),delete this.$element.data().timepicker},setDefaultTime:function(a){if(this.$element.val())this.updateFromElementVal();else if("current"===a){var b=new Date,c=b.getHours(),d=b.getMinutes(),e=b.getSeconds(),f="AM";0!==e&&(e=Math.ceil(b.getSeconds()/this.secondStep)*this.secondStep,60===e&&(d+=1,e=0)),0!==d&&(d=Math.ceil(b.getMinutes()/this.minuteStep)*this.minuteStep,60===d&&(c+=1,d=0)),this.showMeridian&&(0===c?c=12:c>=12?(c>12&&(c-=12),f="PM"):f="AM"),this.hour=c,this.minute=d,this.second=e,this.meridian=f,this.update()}else a===!1?(this.hour=0,this.minute=0,this.second=0,this.meridian="AM"):this.setTime(a)},setTime:function(a,b){if(!a)return void this.clear();var c,d,e,f,g,h;if("object"==typeof a&&a.getMonth)e=a.getHours(),f=a.getMinutes(),g=a.getSeconds(),this.showMeridian&&(h="AM",e>12&&(h="PM",e%=12),12===e&&(h="PM"));else{if(c=(/a/i.test(a)?1:0)+(/p/i.test(a)?2:0),c>2)return void this.clear();if(d=a.replace(/[^0-9\:]/g,"").split(":"),e=d[0]?d[0].toString():d.toString(),this.explicitMode&&e.length>2&&e.length%2!==0)return void this.clear();f=d[1]?d[1].toString():"",g=d[2]?d[2].toString():"",e.length>4&&(g=e.slice(-2),e=e.slice(0,-2)),e.length>2&&(f=e.slice(-2),e=e.slice(0,-2)),f.length>2&&(g=f.slice(-2),f=f.slice(0,-2)),e=parseInt(e,10),f=parseInt(f,10),g=parseInt(g,10),isNaN(e)&&(e=0),isNaN(f)&&(f=0),isNaN(g)&&(g=0),g>59&&(g=59),f>59&&(f=59),e>=this.maxHours&&(e=this.maxHours-1),this.showMeridian?(e>12&&(c=2,e-=12),c||(c=1),0===e&&(e=12),h=1===c?"AM":"PM"):12>e&&2===c?e+=12:e>=this.maxHours?e=this.maxHours-1:(0>e||12===e&&1===c)&&(e=0)}this.hour=e,this.snapToStep?(this.minute=this.changeToNearestStep(f,this.minuteStep),this.second=this.changeToNearestStep(g,this.secondStep)):(this.minute=f,this.second=g),this.meridian=h,this.update(b)},showWidget:function(){this.isOpen||this.$element.is(":disabled")||(this.$widget.appendTo(this.appendWidgetTo),a(c).on("mousedown.timepicker, touchend.timepicker",{scope:this},this.handleDocumentClick),this.$element.trigger({type:"show.timepicker",time:{value:this.getTime(),hours:this.hour,minutes:this.minute,seconds:this.second,meridian:this.meridian}}),this.place(),this.disableFocus&&this.$element.blur(),""===this.hour&&(this.defaultTime?this.setDefaultTime(this.defaultTime):this.setTime("0:0:0")),"modal"===this.template&&this.$widget.modal?this.$widget.modal("show").on("hidden",a.proxy(this.hideWidget,this)):this.isOpen===!1&&this.$widget.addClass("open"),this.isOpen=!0)},toggleMeridian:function(){this.meridian="AM"===this.meridian?"PM":"AM"},update:function(a){this.updateElement(),a||this.updateWidget(),this.$element.trigger({type:"changeTime.timepicker",time:{value:this.getTime(),hours:this.hour,minutes:this.minute,seconds:this.second,meridian:this.meridian}})},updateElement:function(){this.$element.val(this.getTime()).change()},updateFromElementVal:function(){this.setTime(this.$element.val())},updateWidget:function(){if(this.$widget!==!1){var a=this.hour,b=1===this.minute.toString().length?"0"+this.minute:this.minute,c=1===this.second.toString().length?"0"+this.second:this.second;this.showInputs?(this.$widget.find("input.bootstrap-timepicker-hour").val(a),this.$widget.find("input.bootstrap-timepicker-minute").val(b),this.showSeconds&&this.$widget.find("input.bootstrap-timepicker-second").val(c),this.showMeridian&&this.$widget.find("input.bootstrap-timepicker-meridian").val(this.meridian)):(this.$widget.find("span.bootstrap-timepicker-hour").text(a),this.$widget.find("span.bootstrap-timepicker-minute").text(b),this.showSeconds&&this.$widget.find("span.bootstrap-timepicker-second").text(c),this.showMeridian&&this.$widget.find("span.bootstrap-timepicker-meridian").text(this.meridian))}},updateFromWidgetInputs:function(){if(this.$widget!==!1){var a=this.$widget.find("input.bootstrap-timepicker-hour").val()+":"+this.$widget.find("input.bootstrap-timepicker-minute").val()+(this.showSeconds?":"+this.$widget.find("input.bootstrap-timepicker-second").val():"")+(this.showMeridian?this.$widget.find("input.bootstrap-timepicker-meridian").val():"");this.setTime(a,!0)}},widgetClick:function(b){b.stopPropagation(),b.preventDefault();var c=a(b.target),d=c.closest("a").data("action");d&&this[d](),this.update(),c.is("input")&&c.get(0).setSelectionRange(0,2)},widgetKeydown:function(b){var c=a(b.target),d=c.attr("class").replace("bootstrap-timepicker-","");switch(b.which){case 9:if(b.shiftKey){if("hour"===d)return this.hideWidget()}else if(this.showMeridian&&"meridian"===d||this.showSeconds&&"second"===d||!this.showMeridian&&!this.showSeconds&&"minute"===d)return this.hideWidget();break;case 27:this.hideWidget();break;case 38:switch(b.preventDefault(),d){case"hour":this.incrementHour();break;case"minute":this.incrementMinute();break;case"second":this.incrementSecond();break;case"meridian":this.toggleMeridian()}this.setTime(this.getTime()),c.get(0).setSelectionRange(0,2);break;case 40:switch(b.preventDefault(),d){case"hour":this.decrementHour();break;case"minute":this.decrementMinute();break;case"second":this.decrementSecond();break;case"meridian":this.toggleMeridian()}this.setTime(this.getTime()),c.get(0).setSelectionRange(0,2)}},widgetKeyup:function(a){(65===a.which||77===a.which||80===a.which||46===a.which||8===a.which||a.which>=48&&a.which<=57||a.which>=96&&a.which<=105)&&this.updateFromWidgetInputs()}},a.fn.timepicker=function(b){var c=Array.apply(null,arguments);return c.shift(),this.each(function(){var e=a(this),f=e.data("timepicker"),g="object"==typeof b&&b;f||e.data("timepicker",f=new d(this,a.extend({},a.fn.timepicker.defaults,g,a(this).data()))),"string"==typeof b&&f[b].apply(f,c)})},a.fn.timepicker.defaults={defaultTime:"current",disableFocus:!1,disableMousewheel:!1,isOpen:!1,minuteStep:15,modalBackdrop:!1,orientation:{x:"auto",y:"auto"},secondStep:15,snapToStep:!1,showSeconds:!1,showInputs:!0,showMeridian:!0,template:"dropdown",appendWidgetTo:"body",showWidgetOnAddonClick:!0,icons:{up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down"},maxHours:24,explicitMode:!1},a.fn.timepicker.Constructor=d,a(c).on("focus.timepicker.data-api click.timepicker.data-api",'[data-provide="timepicker"]',function(b){var c=a(this);c.data("timepicker")||(b.preventDefault(),c.timepicker())})}(jQuery,window,document); AdminLTE/plugins/timepicker/bootstrap-timepicker.js 0000644 00000103107 15002261751 0016464 0 ustar 00 /*! * Timepicker Component for Twitter Bootstrap * * Copyright 2013 Joris de Wit and bootstrap-timepicker contributors * * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ (function($, window, document) { 'use strict'; // TIMEPICKER PUBLIC CLASS DEFINITION var Timepicker = function(element, options) { this.widget = ''; this.$element = $(element); this.defaultTime = options.defaultTime; this.disableFocus = options.disableFocus; this.disableMousewheel = options.disableMousewheel; this.isOpen = options.isOpen; this.minuteStep = options.minuteStep; this.modalBackdrop = options.modalBackdrop; this.orientation = options.orientation; this.secondStep = options.secondStep; this.snapToStep = options.snapToStep; this.showInputs = options.showInputs; this.showMeridian = options.showMeridian; this.showSeconds = options.showSeconds; this.template = options.template; this.appendWidgetTo = options.appendWidgetTo; this.showWidgetOnAddonClick = options.showWidgetOnAddonClick; this.icons = options.icons; this.maxHours = options.maxHours; this.explicitMode = options.explicitMode; // If true 123 = 1:23, 12345 = 1:23:45, else invalid. this.handleDocumentClick = function (e) { var self = e.data.scope; // This condition was inspired by bootstrap-datepicker. // The element the timepicker is invoked on is the input but it has a sibling for addon/button. if (!(self.$element.parent().find(e.target).length || self.$widget.is(e.target) || self.$widget.find(e.target).length)) { self.hideWidget(); } }; this._init(); }; Timepicker.prototype = { constructor: Timepicker, _init: function() { var self = this; if (this.showWidgetOnAddonClick && (this.$element.parent().hasClass('input-group') && this.$element.parent().hasClass('bootstrap-timepicker'))) { this.$element.parent('.input-group.bootstrap-timepicker').find('.input-group-addon').on({ 'click.timepicker': $.proxy(this.showWidget, this) }); this.$element.on({ 'focus.timepicker': $.proxy(this.highlightUnit, this), 'click.timepicker': $.proxy(this.highlightUnit, this), 'keydown.timepicker': $.proxy(this.elementKeydown, this), 'blur.timepicker': $.proxy(this.blurElement, this), 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this) }); } else { if (this.template) { this.$element.on({ 'focus.timepicker': $.proxy(this.showWidget, this), 'click.timepicker': $.proxy(this.showWidget, this), 'blur.timepicker': $.proxy(this.blurElement, this), 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this) }); } else { this.$element.on({ 'focus.timepicker': $.proxy(this.highlightUnit, this), 'click.timepicker': $.proxy(this.highlightUnit, this), 'keydown.timepicker': $.proxy(this.elementKeydown, this), 'blur.timepicker': $.proxy(this.blurElement, this), 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this) }); } } if (this.template !== false) { this.$widget = $(this.getTemplate()).on('click', $.proxy(this.widgetClick, this)); } else { this.$widget = false; } if (this.showInputs && this.$widget !== false) { this.$widget.find('input').each(function() { $(this).on({ 'click.timepicker': function() { $(this).select(); }, 'keydown.timepicker': $.proxy(self.widgetKeydown, self), 'keyup.timepicker': $.proxy(self.widgetKeyup, self) }); }); } this.setDefaultTime(this.defaultTime); }, blurElement: function() { this.highlightedUnit = null; this.updateFromElementVal(); }, clear: function() { this.hour = ''; this.minute = ''; this.second = ''; this.meridian = ''; this.$element.val(''); }, decrementHour: function() { if (this.showMeridian) { if (this.hour === 1) { this.hour = 12; } else if (this.hour === 12) { this.hour--; return this.toggleMeridian(); } else if (this.hour === 0) { this.hour = 11; return this.toggleMeridian(); } else { this.hour--; } } else { if (this.hour <= 0) { this.hour = this.maxHours - 1; } else { this.hour--; } } }, decrementMinute: function(step) { var newVal; if (step) { newVal = this.minute - step; } else { newVal = this.minute - this.minuteStep; } if (newVal < 0) { this.decrementHour(); this.minute = newVal + 60; } else { this.minute = newVal; } }, decrementSecond: function() { var newVal = this.second - this.secondStep; if (newVal < 0) { this.decrementMinute(true); this.second = newVal + 60; } else { this.second = newVal; } }, elementKeydown: function(e) { switch (e.which) { case 9: //tab if (e.shiftKey) { if (this.highlightedUnit === 'hour') { this.hideWidget(); break; } this.highlightPrevUnit(); } else if ((this.showMeridian && this.highlightedUnit === 'meridian') || (this.showSeconds && this.highlightedUnit === 'second') || (!this.showMeridian && !this.showSeconds && this.highlightedUnit ==='minute')) { this.hideWidget(); break; } else { this.highlightNextUnit(); } e.preventDefault(); this.updateFromElementVal(); break; case 27: // escape this.updateFromElementVal(); break; case 37: // left arrow e.preventDefault(); this.highlightPrevUnit(); this.updateFromElementVal(); break; case 38: // up arrow e.preventDefault(); switch (this.highlightedUnit) { case 'hour': this.incrementHour(); this.highlightHour(); break; case 'minute': this.incrementMinute(); this.highlightMinute(); break; case 'second': this.incrementSecond(); this.highlightSecond(); break; case 'meridian': this.toggleMeridian(); this.highlightMeridian(); break; } this.update(); break; case 39: // right arrow e.preventDefault(); this.highlightNextUnit(); this.updateFromElementVal(); break; case 40: // down arrow e.preventDefault(); switch (this.highlightedUnit) { case 'hour': this.decrementHour(); this.highlightHour(); break; case 'minute': this.decrementMinute(); this.highlightMinute(); break; case 'second': this.decrementSecond(); this.highlightSecond(); break; case 'meridian': this.toggleMeridian(); this.highlightMeridian(); break; } this.update(); break; } }, getCursorPosition: function() { var input = this.$element.get(0); if ('selectionStart' in input) {// Standard-compliant browsers return input.selectionStart; } else if (document.selection) {// IE fix input.focus(); var sel = document.selection.createRange(), selLen = document.selection.createRange().text.length; sel.moveStart('character', - input.value.length); return sel.text.length - selLen; } }, getTemplate: function() { var template, hourTemplate, minuteTemplate, secondTemplate, meridianTemplate, templateContent; if (this.showInputs) { hourTemplate = '<input type="text" class="bootstrap-timepicker-hour" maxlength="2"/>'; minuteTemplate = '<input type="text" class="bootstrap-timepicker-minute" maxlength="2"/>'; secondTemplate = '<input type="text" class="bootstrap-timepicker-second" maxlength="2"/>'; meridianTemplate = '<input type="text" class="bootstrap-timepicker-meridian" maxlength="2"/>'; } else { hourTemplate = '<span class="bootstrap-timepicker-hour"></span>'; minuteTemplate = '<span class="bootstrap-timepicker-minute"></span>'; secondTemplate = '<span class="bootstrap-timepicker-second"></span>'; meridianTemplate = '<span class="bootstrap-timepicker-meridian"></span>'; } templateContent = '<table>'+ '<tr>'+ '<td><a href="#" data-action="incrementHour"><span class="'+ this.icons.up +'"></span></a></td>'+ '<td class="separator"> </td>'+ '<td><a href="#" data-action="incrementMinute"><span class="'+ this.icons.up +'"></span></a></td>'+ (this.showSeconds ? '<td class="separator"> </td>'+ '<td><a href="#" data-action="incrementSecond"><span class="'+ this.icons.up +'"></span></a></td>' : '') + (this.showMeridian ? '<td class="separator"> </td>'+ '<td class="meridian-column"><a href="#" data-action="toggleMeridian"><span class="'+ this.icons.up +'"></span></a></td>' : '') + '</tr>'+ '<tr>'+ '<td>'+ hourTemplate +'</td> '+ '<td class="separator">:</td>'+ '<td>'+ minuteTemplate +'</td> '+ (this.showSeconds ? '<td class="separator">:</td>'+ '<td>'+ secondTemplate +'</td>' : '') + (this.showMeridian ? '<td class="separator"> </td>'+ '<td>'+ meridianTemplate +'</td>' : '') + '</tr>'+ '<tr>'+ '<td><a href="#" data-action="decrementHour"><span class="'+ this.icons.down +'"></span></a></td>'+ '<td class="separator"></td>'+ '<td><a href="#" data-action="decrementMinute"><span class="'+ this.icons.down +'"></span></a></td>'+ (this.showSeconds ? '<td class="separator"> </td>'+ '<td><a href="#" data-action="decrementSecond"><span class="'+ this.icons.down +'"></span></a></td>' : '') + (this.showMeridian ? '<td class="separator"> </td>'+ '<td><a href="#" data-action="toggleMeridian"><span class="'+ this.icons.down +'"></span></a></td>' : '') + '</tr>'+ '</table>'; switch(this.template) { case 'modal': template = '<div class="bootstrap-timepicker-widget modal hide fade in" data-backdrop="'+ (this.modalBackdrop ? 'true' : 'false') +'">'+ '<div class="modal-header">'+ '<a href="#" class="close" data-dismiss="modal">×</a>'+ '<h3>Pick a Time</h3>'+ '</div>'+ '<div class="modal-content">'+ templateContent + '</div>'+ '<div class="modal-footer">'+ '<a href="#" class="btn btn-primary" data-dismiss="modal">OK</a>'+ '</div>'+ '</div>'; break; case 'dropdown': template = '<div class="bootstrap-timepicker-widget dropdown-menu">'+ templateContent +'</div>'; break; } return template; }, getTime: function() { if (this.hour === '') { return ''; } return this.hour + ':' + (this.minute.toString().length === 1 ? '0' + this.minute : this.minute) + (this.showSeconds ? ':' + (this.second.toString().length === 1 ? '0' + this.second : this.second) : '') + (this.showMeridian ? ' ' + this.meridian : ''); }, hideWidget: function() { if (this.isOpen === false) { return; } this.$element.trigger({ 'type': 'hide.timepicker', 'time': { 'value': this.getTime(), 'hours': this.hour, 'minutes': this.minute, 'seconds': this.second, 'meridian': this.meridian } }); if (this.template === 'modal' && this.$widget.modal) { this.$widget.modal('hide'); } else { this.$widget.removeClass('open'); } $(document).off('mousedown.timepicker, touchend.timepicker', this.handleDocumentClick); this.isOpen = false; // show/hide approach taken by datepicker this.$widget.detach(); }, highlightUnit: function() { this.position = this.getCursorPosition(); if (this.position >= 0 && this.position <= 2) { this.highlightHour(); } else if (this.position >= 3 && this.position <= 5) { this.highlightMinute(); } else if (this.position >= 6 && this.position <= 8) { if (this.showSeconds) { this.highlightSecond(); } else { this.highlightMeridian(); } } else if (this.position >= 9 && this.position <= 11) { this.highlightMeridian(); } }, highlightNextUnit: function() { switch (this.highlightedUnit) { case 'hour': this.highlightMinute(); break; case 'minute': if (this.showSeconds) { this.highlightSecond(); } else if (this.showMeridian){ this.highlightMeridian(); } else { this.highlightHour(); } break; case 'second': if (this.showMeridian) { this.highlightMeridian(); } else { this.highlightHour(); } break; case 'meridian': this.highlightHour(); break; } }, highlightPrevUnit: function() { switch (this.highlightedUnit) { case 'hour': if(this.showMeridian){ this.highlightMeridian(); } else if (this.showSeconds) { this.highlightSecond(); } else { this.highlightMinute(); } break; case 'minute': this.highlightHour(); break; case 'second': this.highlightMinute(); break; case 'meridian': if (this.showSeconds) { this.highlightSecond(); } else { this.highlightMinute(); } break; } }, highlightHour: function() { var $element = this.$element.get(0), self = this; this.highlightedUnit = 'hour'; if ($element.setSelectionRange) { setTimeout(function() { if (self.hour < 10) { $element.setSelectionRange(0,1); } else { $element.setSelectionRange(0,2); } }, 0); } }, highlightMinute: function() { var $element = this.$element.get(0), self = this; this.highlightedUnit = 'minute'; if ($element.setSelectionRange) { setTimeout(function() { if (self.hour < 10) { $element.setSelectionRange(2,4); } else { $element.setSelectionRange(3,5); } }, 0); } }, highlightSecond: function() { var $element = this.$element.get(0), self = this; this.highlightedUnit = 'second'; if ($element.setSelectionRange) { setTimeout(function() { if (self.hour < 10) { $element.setSelectionRange(5,7); } else { $element.setSelectionRange(6,8); } }, 0); } }, highlightMeridian: function() { var $element = this.$element.get(0), self = this; this.highlightedUnit = 'meridian'; if ($element.setSelectionRange) { if (this.showSeconds) { setTimeout(function() { if (self.hour < 10) { $element.setSelectionRange(8,10); } else { $element.setSelectionRange(9,11); } }, 0); } else { setTimeout(function() { if (self.hour < 10) { $element.setSelectionRange(5,7); } else { $element.setSelectionRange(6,8); } }, 0); } } }, incrementHour: function() { if (this.showMeridian) { if (this.hour === 11) { this.hour++; return this.toggleMeridian(); } else if (this.hour === 12) { this.hour = 0; } } if (this.hour === this.maxHours - 1) { this.hour = 0; return; } this.hour++; }, incrementMinute: function(step) { var newVal; if (step) { newVal = this.minute + step; } else { newVal = this.minute + this.minuteStep - (this.minute % this.minuteStep); } if (newVal > 59) { this.incrementHour(); this.minute = newVal - 60; } else { this.minute = newVal; } }, incrementSecond: function() { var newVal = this.second + this.secondStep - (this.second % this.secondStep); if (newVal > 59) { this.incrementMinute(true); this.second = newVal - 60; } else { this.second = newVal; } }, mousewheel: function(e) { if (this.disableMousewheel) { return; } e.preventDefault(); e.stopPropagation(); var delta = e.originalEvent.wheelDelta || -e.originalEvent.detail, scrollTo = null; if (e.type === 'mousewheel') { scrollTo = (e.originalEvent.wheelDelta * -1); } else if (e.type === 'DOMMouseScroll') { scrollTo = 40 * e.originalEvent.detail; } if (scrollTo) { e.preventDefault(); $(this).scrollTop(scrollTo + $(this).scrollTop()); } switch (this.highlightedUnit) { case 'minute': if (delta > 0) { this.incrementMinute(); } else { this.decrementMinute(); } this.highlightMinute(); break; case 'second': if (delta > 0) { this.incrementSecond(); } else { this.decrementSecond(); } this.highlightSecond(); break; case 'meridian': this.toggleMeridian(); this.highlightMeridian(); break; default: if (delta > 0) { this.incrementHour(); } else { this.decrementHour(); } this.highlightHour(); break; } return false; }, /** * Given a segment value like 43, will round and snap the segment * to the nearest "step", like 45 if step is 15. Segment will * "overflow" to 0 if it's larger than 59 or would otherwise * round up to 60. */ changeToNearestStep: function (segment, step) { if (segment % step === 0) { return segment; } if (Math.round((segment % step) / step)) { return (segment + (step - segment % step)) % 60; } else { return segment - segment % step; } }, // This method was adapted from bootstrap-datepicker. place : function() { if (this.isInline) { return; } var widgetWidth = this.$widget.outerWidth(), widgetHeight = this.$widget.outerHeight(), visualPadding = 10, windowWidth = $(window).width(), windowHeight = $(window).height(), scrollTop = $(window).scrollTop(); var zIndex = parseInt(this.$element.parents().filter(function() { return $(this).css('z-index') !== 'auto'; }).first().css('z-index'), 10) + 10; var offset = this.component ? this.component.parent().offset() : this.$element.offset(); var height = this.component ? this.component.outerHeight(true) : this.$element.outerHeight(false); var width = this.component ? this.component.outerWidth(true) : this.$element.outerWidth(false); var left = offset.left, top = offset.top; this.$widget.removeClass('timepicker-orient-top timepicker-orient-bottom timepicker-orient-right timepicker-orient-left'); if (this.orientation.x !== 'auto') { this.$widget.addClass('timepicker-orient-' + this.orientation.x); if (this.orientation.x === 'right') { left -= widgetWidth - width; } } else{ // auto x orientation is best-placement: if it crosses a window edge, fudge it sideways // Default to left this.$widget.addClass('timepicker-orient-left'); if (offset.left < 0) { left -= offset.left - visualPadding; } else if (offset.left + widgetWidth > windowWidth) { left = windowWidth - widgetWidth - visualPadding; } } // auto y orientation is best-situation: top or bottom, no fudging, decision based on which shows more of the widget var yorient = this.orientation.y, topOverflow, bottomOverflow; if (yorient === 'auto') { topOverflow = -scrollTop + offset.top - widgetHeight; bottomOverflow = scrollTop + windowHeight - (offset.top + height + widgetHeight); if (Math.max(topOverflow, bottomOverflow) === bottomOverflow) { yorient = 'top'; } else { yorient = 'bottom'; } } this.$widget.addClass('timepicker-orient-' + yorient); if (yorient === 'top'){ top += height; } else{ top -= widgetHeight + parseInt(this.$widget.css('padding-top'), 10); } this.$widget.css({ top : top, left : left, zIndex : zIndex }); }, remove: function() { $('document').off('.timepicker'); if (this.$widget) { this.$widget.remove(); } delete this.$element.data().timepicker; }, setDefaultTime: function(defaultTime) { if (!this.$element.val()) { if (defaultTime === 'current') { var dTime = new Date(), hours = dTime.getHours(), minutes = dTime.getMinutes(), seconds = dTime.getSeconds(), meridian = 'AM'; if (seconds !== 0) { seconds = Math.ceil(dTime.getSeconds() / this.secondStep) * this.secondStep; if (seconds === 60) { minutes += 1; seconds = 0; } } if (minutes !== 0) { minutes = Math.ceil(dTime.getMinutes() / this.minuteStep) * this.minuteStep; if (minutes === 60) { hours += 1; minutes = 0; } } if (this.showMeridian) { if (hours === 0) { hours = 12; } else if (hours >= 12) { if (hours > 12) { hours = hours - 12; } meridian = 'PM'; } else { meridian = 'AM'; } } this.hour = hours; this.minute = minutes; this.second = seconds; this.meridian = meridian; this.update(); } else if (defaultTime === false) { this.hour = 0; this.minute = 0; this.second = 0; this.meridian = 'AM'; } else { this.setTime(defaultTime); } } else { this.updateFromElementVal(); } }, setTime: function(time, ignoreWidget) { if (!time) { this.clear(); return; } var timeMode, timeArray, hour, minute, second, meridian; if (typeof time === 'object' && time.getMonth){ // this is a date object hour = time.getHours(); minute = time.getMinutes(); second = time.getSeconds(); if (this.showMeridian){ meridian = 'AM'; if (hour > 12){ meridian = 'PM'; hour = hour % 12; } if (hour === 12){ meridian = 'PM'; } } } else { timeMode = ((/a/i).test(time) ? 1 : 0) + ((/p/i).test(time) ? 2 : 0); // 0 = none, 1 = AM, 2 = PM, 3 = BOTH. if (timeMode > 2) { // If both are present, fail. this.clear(); return; } timeArray = time.replace(/[^0-9\:]/g, '').split(':'); hour = timeArray[0] ? timeArray[0].toString() : timeArray.toString(); if(this.explicitMode && hour.length > 2 && (hour.length % 2) !== 0 ) { this.clear(); return; } minute = timeArray[1] ? timeArray[1].toString() : ''; second = timeArray[2] ? timeArray[2].toString() : ''; // adaptive time parsing if (hour.length > 4) { second = hour.slice(-2); hour = hour.slice(0, -2); } if (hour.length > 2) { minute = hour.slice(-2); hour = hour.slice(0, -2); } if (minute.length > 2) { second = minute.slice(-2); minute = minute.slice(0, -2); } hour = parseInt(hour, 10); minute = parseInt(minute, 10); second = parseInt(second, 10); if (isNaN(hour)) { hour = 0; } if (isNaN(minute)) { minute = 0; } if (isNaN(second)) { second = 0; } // Adjust the time based upon unit boundary. // NOTE: Negatives will never occur due to time.replace() above. if (second > 59) { second = 59; } if (minute > 59) { minute = 59; } if (hour >= this.maxHours) { // No day/date handling. hour = this.maxHours - 1; } if (this.showMeridian) { if (hour > 12) { // Force PM. timeMode = 2; hour -= 12; } if (!timeMode) { timeMode = 1; } if (hour === 0) { hour = 12; // AM or PM, reset to 12. 0 AM = 12 AM. 0 PM = 12 PM, etc. } meridian = timeMode === 1 ? 'AM' : 'PM'; } else if (hour < 12 && timeMode === 2) { hour += 12; } else { if (hour >= this.maxHours) { hour = this.maxHours - 1; } else if ((hour < 0) || (hour === 12 && timeMode === 1)){ hour = 0; } } } this.hour = hour; if (this.snapToStep) { this.minute = this.changeToNearestStep(minute, this.minuteStep); this.second = this.changeToNearestStep(second, this.secondStep); } else { this.minute = minute; this.second = second; } this.meridian = meridian; this.update(ignoreWidget); }, showWidget: function() { if (this.isOpen) { return; } if (this.$element.is(':disabled')) { return; } // show/hide approach taken by datepicker this.$widget.appendTo(this.appendWidgetTo); $(document).on('mousedown.timepicker, touchend.timepicker', {scope: this}, this.handleDocumentClick); this.$element.trigger({ 'type': 'show.timepicker', 'time': { 'value': this.getTime(), 'hours': this.hour, 'minutes': this.minute, 'seconds': this.second, 'meridian': this.meridian } }); this.place(); if (this.disableFocus) { this.$element.blur(); } // widget shouldn't be empty on open if (this.hour === '') { if (this.defaultTime) { this.setDefaultTime(this.defaultTime); } else { this.setTime('0:0:0'); } } if (this.template === 'modal' && this.$widget.modal) { this.$widget.modal('show').on('hidden', $.proxy(this.hideWidget, this)); } else { if (this.isOpen === false) { this.$widget.addClass('open'); } } this.isOpen = true; }, toggleMeridian: function() { this.meridian = this.meridian === 'AM' ? 'PM' : 'AM'; }, update: function(ignoreWidget) { this.updateElement(); if (!ignoreWidget) { this.updateWidget(); } this.$element.trigger({ 'type': 'changeTime.timepicker', 'time': { 'value': this.getTime(), 'hours': this.hour, 'minutes': this.minute, 'seconds': this.second, 'meridian': this.meridian } }); }, updateElement: function() { this.$element.val(this.getTime()).change(); }, updateFromElementVal: function() { this.setTime(this.$element.val()); }, updateWidget: function() { if (this.$widget === false) { return; } var hour = this.hour, minute = this.minute.toString().length === 1 ? '0' + this.minute : this.minute, second = this.second.toString().length === 1 ? '0' + this.second : this.second; if (this.showInputs) { this.$widget.find('input.bootstrap-timepicker-hour').val(hour); this.$widget.find('input.bootstrap-timepicker-minute').val(minute); if (this.showSeconds) { this.$widget.find('input.bootstrap-timepicker-second').val(second); } if (this.showMeridian) { this.$widget.find('input.bootstrap-timepicker-meridian').val(this.meridian); } } else { this.$widget.find('span.bootstrap-timepicker-hour').text(hour); this.$widget.find('span.bootstrap-timepicker-minute').text(minute); if (this.showSeconds) { this.$widget.find('span.bootstrap-timepicker-second').text(second); } if (this.showMeridian) { this.$widget.find('span.bootstrap-timepicker-meridian').text(this.meridian); } } }, updateFromWidgetInputs: function() { if (this.$widget === false) { return; } var t = this.$widget.find('input.bootstrap-timepicker-hour').val() + ':' + this.$widget.find('input.bootstrap-timepicker-minute').val() + (this.showSeconds ? ':' + this.$widget.find('input.bootstrap-timepicker-second').val() : '') + (this.showMeridian ? this.$widget.find('input.bootstrap-timepicker-meridian').val() : '') ; this.setTime(t, true); }, widgetClick: function(e) { e.stopPropagation(); e.preventDefault(); var $input = $(e.target), action = $input.closest('a').data('action'); if (action) { this[action](); } this.update(); if ($input.is('input')) { $input.get(0).setSelectionRange(0,2); } }, widgetKeydown: function(e) { var $input = $(e.target), name = $input.attr('class').replace('bootstrap-timepicker-', ''); switch (e.which) { case 9: //tab if (e.shiftKey) { if (name === 'hour') { return this.hideWidget(); } } else if ((this.showMeridian && name === 'meridian') || (this.showSeconds && name === 'second') || (!this.showMeridian && !this.showSeconds && name === 'minute')) { return this.hideWidget(); } break; case 27: // escape this.hideWidget(); break; case 38: // up arrow e.preventDefault(); switch (name) { case 'hour': this.incrementHour(); break; case 'minute': this.incrementMinute(); break; case 'second': this.incrementSecond(); break; case 'meridian': this.toggleMeridian(); break; } this.setTime(this.getTime()); $input.get(0).setSelectionRange(0,2); break; case 40: // down arrow e.preventDefault(); switch (name) { case 'hour': this.decrementHour(); break; case 'minute': this.decrementMinute(); break; case 'second': this.decrementSecond(); break; case 'meridian': this.toggleMeridian(); break; } this.setTime(this.getTime()); $input.get(0).setSelectionRange(0,2); break; } }, widgetKeyup: function(e) { if ((e.which === 65) || (e.which === 77) || (e.which === 80) || (e.which === 46) || (e.which === 8) || (e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105)) { this.updateFromWidgetInputs(); } } }; //TIMEPICKER PLUGIN DEFINITION $.fn.timepicker = function(option) { var args = Array.apply(null, arguments); args.shift(); return this.each(function() { var $this = $(this), data = $this.data('timepicker'), options = typeof option === 'object' && option; if (!data) { $this.data('timepicker', (data = new Timepicker(this, $.extend({}, $.fn.timepicker.defaults, options, $(this).data())))); } if (typeof option === 'string') { data[option].apply(data, args); } }); }; $.fn.timepicker.defaults = { defaultTime: 'current', disableFocus: false, disableMousewheel: false, isOpen: false, minuteStep: 15, modalBackdrop: false, orientation: { x: 'auto', y: 'auto'}, secondStep: 15, snapToStep: false, showSeconds: false, showInputs: true, showMeridian: true, template: 'dropdown', appendWidgetTo: 'body', showWidgetOnAddonClick: true, icons: { up: 'glyphicon glyphicon-chevron-up', down: 'glyphicon glyphicon-chevron-down' }, maxHours: 24, explicitMode: false }; $.fn.timepicker.Constructor = Timepicker; $(document).on( 'focus.timepicker.data-api click.timepicker.data-api', '[data-provide="timepicker"]', function(e){ var $this = $(this); if ($this.data('timepicker')) { return; } e.preventDefault(); // component click requires us to explicitly show it $this.timepicker(); } ); })(jQuery, window, document); AdminLTE/plugins/timepicker/bootstrap-timepicker.min.css 0000644 00000005732 15002261751 0017427 0 ustar 00 /*! * Timepicker Component for Twitter Bootstrap * * Copyright 2013 Joris de Wit * * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */.bootstrap-timepicker{position:relative}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu{left:auto;right:0}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before{left:auto;right:12px}.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after{left:auto;right:13px}.bootstrap-timepicker .input-group-addon{cursor:pointer}.bootstrap-timepicker .input-group-addon i{display:inline-block;width:16px;height:16px}.bootstrap-timepicker-widget.dropdown-menu{padding:4px}.bootstrap-timepicker-widget.dropdown-menu.open{display:inline-block}.bootstrap-timepicker-widget.dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,0.2);border-left:7px solid transparent;border-right:7px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.dropdown-menu:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:"";display:inline-block;position:absolute}.bootstrap-timepicker-widget.timepicker-orient-left:before{left:6px}.bootstrap-timepicker-widget.timepicker-orient-left:after{left:7px}.bootstrap-timepicker-widget.timepicker-orient-right:before{right:6px}.bootstrap-timepicker-widget.timepicker-orient-right:after{right:7px}.bootstrap-timepicker-widget.timepicker-orient-top:before{top:-7px}.bootstrap-timepicker-widget.timepicker-orient-top:after{top:-6px}.bootstrap-timepicker-widget.timepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.bootstrap-timepicker-widget.timepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.bootstrap-timepicker-widget a.btn,.bootstrap-timepicker-widget input{border-radius:4px}.bootstrap-timepicker-widget table{width:100%;margin:0}.bootstrap-timepicker-widget table td{text-align:center;height:30px;margin:0;padding:2px}.bootstrap-timepicker-widget table td:not(.separator){min-width:30px}.bootstrap-timepicker-widget table td span{width:100%}.bootstrap-timepicker-widget table td a{border:1px transparent solid;width:100%;display:inline-block;margin:0;padding:8px 0;outline:0;color:#333}.bootstrap-timepicker-widget table td a:hover{text-decoration:none;background-color:#eee;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border-color:#ddd}.bootstrap-timepicker-widget table td a i{margin-top:2px;font-size:18px}.bootstrap-timepicker-widget table td input{width:25px;margin:0;text-align:center}.bootstrap-timepicker-widget .modal-content{padding:4px}@media(min-width:767px){.bootstrap-timepicker-widget.modal{width:200px;margin-left:-100px}}@media(max-width:767px){.bootstrap-timepicker{width:100%}.bootstrap-timepicker .dropdown-menu{width:100%}} AdminLTE/plugins/timepicker/bootstrap-timepicker.css 0000644 00000006623 15002261751 0016645 0 ustar 00 /*! * Timepicker Component for Twitter Bootstrap * * Copyright 2013 Joris de Wit * * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ .bootstrap-timepicker { position: relative; } .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu { left: auto; right: 0; } .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before { left: auto; right: 12px; } .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after { left: auto; right: 13px; } .bootstrap-timepicker .input-group-addon { cursor: pointer; } .bootstrap-timepicker .input-group-addon i { display: inline-block; width: 16px; height: 16px; } .bootstrap-timepicker-widget.dropdown-menu { padding: 4px; } .bootstrap-timepicker-widget.dropdown-menu.open { display: inline-block; } .bootstrap-timepicker-widget.dropdown-menu:before { border-bottom: 7px solid rgba(0, 0, 0, 0.2); border-left: 7px solid transparent; border-right: 7px solid transparent; content: ""; display: inline-block; position: absolute; } .bootstrap-timepicker-widget.dropdown-menu:after { border-bottom: 6px solid #FFFFFF; border-left: 6px solid transparent; border-right: 6px solid transparent; content: ""; display: inline-block; position: absolute; } .bootstrap-timepicker-widget.timepicker-orient-left:before { left: 6px; } .bootstrap-timepicker-widget.timepicker-orient-left:after { left: 7px; } .bootstrap-timepicker-widget.timepicker-orient-right:before { right: 6px; } .bootstrap-timepicker-widget.timepicker-orient-right:after { right: 7px; } .bootstrap-timepicker-widget.timepicker-orient-top:before { top: -7px; } .bootstrap-timepicker-widget.timepicker-orient-top:after { top: -6px; } .bootstrap-timepicker-widget.timepicker-orient-bottom:before { bottom: -7px; border-bottom: 0; border-top: 7px solid #999; } .bootstrap-timepicker-widget.timepicker-orient-bottom:after { bottom: -6px; border-bottom: 0; border-top: 6px solid #ffffff; } .bootstrap-timepicker-widget a.btn, .bootstrap-timepicker-widget input { border-radius: 4px; } .bootstrap-timepicker-widget table { width: 100%; margin: 0; } .bootstrap-timepicker-widget table td { text-align: center; height: 30px; margin: 0; padding: 2px; } .bootstrap-timepicker-widget table td:not(.separator) { min-width: 30px; } .bootstrap-timepicker-widget table td span { width: 100%; } .bootstrap-timepicker-widget table td a { border: 1px transparent solid; width: 100%; display: inline-block; margin: 0; padding: 8px 0; outline: 0; color: #333; } .bootstrap-timepicker-widget table td a:hover { text-decoration: none; background-color: #eee; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; border-color: #ddd; } .bootstrap-timepicker-widget table td a i { margin-top: 2px; font-size: 18px; } .bootstrap-timepicker-widget table td input { width: 25px; margin: 0; text-align: center; } .bootstrap-timepicker-widget .modal-content { padding: 4px; } @media (min-width: 767px) { .bootstrap-timepicker-widget.modal { width: 200px; margin-left: -100px; } } @media (max-width: 767px) { .bootstrap-timepicker { width: 100%; } .bootstrap-timepicker .dropdown-menu { width: 100%; } } AdminLTE/plugins/pace/pace.min.js 0000644 00000030333 15002261751 0012563 0 ustar 00 /*! pace 1.0.2 */ (function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X=[].slice,Y={}.hasOwnProperty,Z=function(a,b){function c(){this.constructor=a}for(var d in b)Y.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},$=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};for(u={catchupTime:100,initialRate:.03,minTime:250,ghostTime:100,maxProgressPerFrame:20,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},C=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?a:+new Date},E=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==E&&(E=function(a){return setTimeout(a,50)},t=function(a){return clearTimeout(a)}),G=function(a){var b,c;return b=C(),(c=function(){var d;return d=C()-b,d>=33?(b=C(),a(d,function(){return E(c)})):setTimeout(c,33-d)})()},F=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?X.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},v=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?X.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)Y.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?v(b[a],e):b[a]=e);return b},q=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},x=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];c<this.bindings[a].length;)e.push(this.bindings[a][c].handler===b?this.bindings[a].splice(c,1):c++);return e}},a.prototype.trigger=function(){var a,b,c,d,e,f,g,h,i;if(c=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],null!=(g=this.bindings)?g[c]:void 0){for(e=0,i=[];e<this.bindings[c].length;)h=this.bindings[c][e],d=h.handler,b=h.ctx,f=h.once,d.apply(null!=b?b:this,a),i.push(f?this.bindings[c].splice(e,1):e++);return i}},a}(),j=window.Pace||{},window.Pace=j,v(j,g.prototype),D=j.options=v({},u,window.paceOptions,x()),U=["ajax","document","eventLag","elements"],Q=0,S=U.length;S>Q;Q++)K=U[Q],D[K]===!0&&(D[K]=u[K]);i=function(a){function b(){return V=b.__super__.constructor.apply(this,arguments)}return Z(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(D.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b,c,d,e,f,g;if(null==document.querySelector(D.target))return!1;for(a=this.getElement(),d="translate3d("+this.progress+"%, 0, 0)",g=["webkitTransform","msTransform","transform"],e=0,f=g.length;f>e;e++)b=g[e],a.children[0].style[b]=d;return(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?c="99":(c=this.progress<10?"0":"",c+=0|this.progress),a.children[0].setAttribute("data-progress",""+c)),this.lastRenderedProgress=this.progress},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),P=window.XMLHttpRequest,O=window.XDomainRequest,N=window.WebSocket,w=function(a,b){var c,d,e;e=[];for(d in b.prototype)try{e.push(null==a[d]&&"function"!=typeof b[d]?"function"==typeof Object.defineProperty?Object.defineProperty(a,d,{get:function(){return b.prototype[d]},configurable:!0,enumerable:!0}):a[d]=b.prototype[d]:void 0)}catch(f){c=f}return e},A=[],j.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("ignore"),c=b.apply(null,a),A.shift(),c},j.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?X.call(arguments,1):[],A.unshift("track"),c=b.apply(null,a),A.shift(),c},J=function(a){var b;if(null==a&&(a="GET"),"track"===A[0])return"force";if(!A.length&&D.ajax){if("socket"===a&&D.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),$.call(D.ajax.trackMethods,b)>=0)return!0}return!1},k=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return J(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new P(b),a(c),c};try{w(window.XMLHttpRequest,P)}catch(d){}if(null!=O){window.XDomainRequest=function(){var b;return b=new O,a(b),b};try{w(window.XDomainRequest,O)}catch(d){}}if(null!=N&&D.ajax.trackWebSockets){window.WebSocket=function(a,b){var d;return d=null!=b?new N(a,b):new N(a),J("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d};try{w(window.WebSocket,N)}catch(d){}}}return Z(b,a),b}(h),R=null,y=function(){return null==R&&(R=new k),R},I=function(a){var b,c,d,e;for(e=D.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},y().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,I(g)?void 0:j.running||D.restartOnRequestAfter===!1&&"force"!==J(f)?void 0:(d=arguments,c=D.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,k;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(j.restart(),i=j.sources,k=[],c=0,g=i.length;g>c;c++){if(K=i[c],K instanceof a){K.watch.apply(K,d);break}k.push(void 0)}return k}},c))}),a=function(){function a(){var a=this;this.elements=[],y().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,I(e)?void 0:(c="socket"===d?new n(b):new o(b),this.elements.push(c))},a}(),o=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2},!1),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100},!1);else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),n=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100},!1)}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},D.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=C(),b=setInterval(function(){var g;return g=C()-c-50,c=C(),e.push(g),e.length>D.eventLag.sampleCount&&e.shift(),a=q(e),++d>=D.eventLag.minSamples&&a<D.eventLag.lagThreshold?(f.progress=100,clearInterval(b)):f.progress=100*(3/(a+3))},50)}return a}(),m=function(){function a(a){this.source=a,this.last=this.sinceLastUpdate=0,this.rate=D.initialRate,this.catchup=0,this.progress=this.lastProgress=0,null!=this.source&&(this.progress=F(this.source,"progress"))}return a.prototype.tick=function(a,b){var c;return null==b&&(b=F(this.source,"progress")),b>=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/D.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,D.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+D.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),L=null,H=null,r=null,M=null,p=null,s=null,j.running=!1,z=function(){return D.restartOnPushState?j.restart():void 0},null!=window.history.pushState&&(T=window.history.pushState,window.history.pushState=function(){return z(),T.apply(window.history,arguments)}),null!=window.history.replaceState&&(W=window.history.replaceState,window.history.replaceState=function(){return z(),W.apply(window.history,arguments)}),l={ajax:a,elements:d,document:c,eventLag:f},(B=function(){var a,c,d,e,f,g,h,i;for(j.sources=L=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],D[a]!==!1&&L.push(new l[a](D[a]));for(i=null!=(h=D.extraSources)?h:[],d=0,f=i.length;f>d;d++)K=i[d],L.push(new K(D));return j.bar=r=new b,H=[],M=new m})(),j.stop=function(){return j.trigger("stop"),j.running=!1,r.destroy(),s=!0,null!=p&&("function"==typeof t&&t(p),p=null),B()},j.restart=function(){return j.trigger("restart"),j.stop(),j.start()},j.go=function(){var a;return j.running=!0,r.render(),a=C(),s=!1,p=G(function(b,c){var d,e,f,g,h,i,k,l,n,o,p,q,t,u,v,w;for(l=100-r.progress,e=p=0,f=!0,i=q=0,u=L.length;u>q;i=++q)for(K=L[i],o=null!=H[i]?H[i]:H[i]=[],h=null!=(w=K.elements)?w:[K],k=t=0,v=h.length;v>t;k=++t)g=h[k],n=null!=o[k]?o[k]:o[k]=new m(g),f&=n.done,n.done||(e++,p+=n.tick(b));return d=p/e,r.update(M.tick(b,d)),r.done()||f||s?(r.update(100),j.trigger("done"),setTimeout(function(){return r.finish(),j.running=!1,j.trigger("hide")},Math.max(D.ghostTime,Math.max(D.minTime-(C()-a),0)))):c()})},j.start=function(a){v(D,a),j.running=!0;try{r.render()}catch(b){i=b}return document.querySelector(".pace")?(j.trigger("start"),j.go()):setTimeout(j.start,50)},"function"==typeof define&&define.amd?define(["pace"],function(){return j}):"object"==typeof exports?module.exports=j:D.startOnPageLoad&&j.start()}).call(this); AdminLTE/plugins/pace/pace.min.css 0000644 00000003507 15002261751 0012742 0 ustar 00 .pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#fff;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}.pace .pace-progress-inner{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #fff,0 0 5px #fff;opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-moz-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);-o-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px)}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:15px;right:50%;width:14px;height:14px;border:solid 2px transparent;border-top-color:#fff;border-left-color:#fff;border-radius:10px;-webkit-animation:pace-spinner 400ms linear infinite;-moz-animation:pace-spinner 400ms linear infinite;-ms-animation:pace-spinner 400ms linear infinite;-o-animation:pace-spinner 400ms linear infinite;animation:pace-spinner 400ms linear infinite}@media (max-width: 767px){.pace .pace-activity{top:15px;right:15px;width:14px;height:14px}}@-webkit-keyframes pace-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes pace-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes pace-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes pace-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pace-spinner{0%{transform:rotate(0deg);transform:rotate(0deg)}100%{transform:rotate(360deg);transform:rotate(360deg)}} AdminLTE/plugins/pace/pace.css 0000644 00000004236 15002261751 0012160 0 ustar 00 .pace { -webkit-pointer-events: none; pointer-events: none; -webkit-user-select: none; -moz-user-select: none; user-select: none; } .pace-inactive { display: none; } .pace .pace-progress { background: #fff; position: fixed; z-index: 2000; top: 0; right: 100%; width: 100%; height: 2px; } .pace .pace-progress-inner { display: block; position: absolute; right: 0px; width: 100px; height: 100%; box-shadow: 0 0 10px #fff, 0 0 5px #fff; opacity: 1.0; -webkit-transform: rotate(3deg) translate(0px, -4px); -moz-transform: rotate(3deg) translate(0px, -4px); -ms-transform: rotate(3deg) translate(0px, -4px); -o-transform: rotate(3deg) translate(0px, -4px); transform: rotate(3deg) translate(0px, -4px); } .pace .pace-activity { display: block; position: fixed; z-index: 2000; top: 15px; right: 50%; width: 14px; height: 14px; border: solid 2px transparent; border-top-color: #fff; border-left-color: #fff; border-radius: 10px; -webkit-animation: pace-spinner 400ms linear infinite; -moz-animation: pace-spinner 400ms linear infinite; -ms-animation: pace-spinner 400ms linear infinite; -o-animation: pace-spinner 400ms linear infinite; animation: pace-spinner 400ms linear infinite; } @media (max-width: 767px) { .pace .pace-activity { top: 15px; right: 15px; width: 14px; height: 14px; } } @-webkit-keyframes pace-spinner { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @-moz-keyframes pace-spinner { 0% { -moz-transform: rotate(0deg); transform: rotate(0deg); } 100% { -moz-transform: rotate(360deg); transform: rotate(360deg); } } @-o-keyframes pace-spinner { 0% { -o-transform: rotate(0deg); transform: rotate(0deg); } 100% { -o-transform: rotate(360deg); transform: rotate(360deg); } } @-ms-keyframes pace-spinner { 0% { -ms-transform: rotate(0deg); transform: rotate(0deg); } 100% { -ms-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes pace-spinner { 0% { transform: rotate(0deg); transform: rotate(0deg); } 100% { transform: rotate(360deg); transform: rotate(360deg); } } AdminLTE/plugins/pace/pace.js 0000644 00000063706 15002261751 0012013 0 ustar 00 (function() { var AjaxMonitor, Bar, DocumentMonitor, ElementMonitor, ElementTracker, EventLagMonitor, Evented, Events, NoTargetError, Pace, RequestIntercept, SOURCE_KEYS, Scaler, SocketRequestTracker, XHRRequestTracker, animation, avgAmplitude, bar, cancelAnimation, cancelAnimationFrame, defaultOptions, extend, extendNative, getFromDOM, getIntercept, handlePushState, ignoreStack, init, now, options, requestAnimationFrame, result, runAnimation, scalers, shouldIgnoreURL, shouldTrack, source, sources, uniScaler, _WebSocket, _XDomainRequest, _XMLHttpRequest, _i, _intercept, _len, _pushState, _ref, _ref1, _replaceState, __slice = [].slice, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; defaultOptions = { catchupTime: 100, initialRate: .03, minTime: 250, ghostTime: 100, maxProgressPerFrame: 20, easeFactor: 1.25, startOnPageLoad: true, restartOnPushState: true, restartOnRequestAfter: 500, target: 'body', elements: { checkInterval: 100, selectors: ['body'] }, eventLag: { minSamples: 10, sampleCount: 3, lagThreshold: 3 }, ajax: { trackMethods: ['GET'], trackWebSockets: true, ignoreURLs: [] } }; now = function() { var _ref; return (_ref = typeof performance !== "undefined" && performance !== null ? typeof performance.now === "function" ? performance.now() : void 0 : void 0) != null ? _ref : +(new Date); }; requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame; if (requestAnimationFrame == null) { requestAnimationFrame = function(fn) { return setTimeout(fn, 50); }; cancelAnimationFrame = function(id) { return clearTimeout(id); }; } runAnimation = function(fn) { var last, tick; last = now(); tick = function() { var diff; diff = now() - last; if (diff >= 33) { last = now(); return fn(diff, function() { return requestAnimationFrame(tick); }); } else { return setTimeout(tick, 33 - diff); } }; return tick(); }; result = function() { var args, key, obj; obj = arguments[0], key = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : []; if (typeof obj[key] === 'function') { return obj[key].apply(obj, args); } else { return obj[key]; } }; extend = function() { var key, out, source, sources, val, _i, _len; out = arguments[0], sources = 2 <= arguments.length ? __slice.call(arguments, 1) : []; for (_i = 0, _len = sources.length; _i < _len; _i++) { source = sources[_i]; if (source) { for (key in source) { if (!__hasProp.call(source, key)) continue; val = source[key]; if ((out[key] != null) && typeof out[key] === 'object' && (val != null) && typeof val === 'object') { extend(out[key], val); } else { out[key] = val; } } } } return out; }; avgAmplitude = function(arr) { var count, sum, v, _i, _len; sum = count = 0; for (_i = 0, _len = arr.length; _i < _len; _i++) { v = arr[_i]; sum += Math.abs(v); count++; } return sum / count; }; getFromDOM = function(key, json) { var data, e, el; if (key == null) { key = 'options'; } if (json == null) { json = true; } el = document.querySelector("[data-pace-" + key + "]"); if (!el) { return; } data = el.getAttribute("data-pace-" + key); if (!json) { return data; } try { return JSON.parse(data); } catch (_error) { e = _error; return typeof console !== "undefined" && console !== null ? console.error("Error parsing inline pace options", e) : void 0; } }; Evented = (function() { function Evented() {} Evented.prototype.on = function(event, handler, ctx, once) { var _base; if (once == null) { once = false; } if (this.bindings == null) { this.bindings = {}; } if ((_base = this.bindings)[event] == null) { _base[event] = []; } return this.bindings[event].push({ handler: handler, ctx: ctx, once: once }); }; Evented.prototype.once = function(event, handler, ctx) { return this.on(event, handler, ctx, true); }; Evented.prototype.off = function(event, handler) { var i, _ref, _results; if (((_ref = this.bindings) != null ? _ref[event] : void 0) == null) { return; } if (handler == null) { return delete this.bindings[event]; } else { i = 0; _results = []; while (i < this.bindings[event].length) { if (this.bindings[event][i].handler === handler) { _results.push(this.bindings[event].splice(i, 1)); } else { _results.push(i++); } } return _results; } }; Evented.prototype.trigger = function() { var args, ctx, event, handler, i, once, _ref, _ref1, _results; event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; if ((_ref = this.bindings) != null ? _ref[event] : void 0) { i = 0; _results = []; while (i < this.bindings[event].length) { _ref1 = this.bindings[event][i], handler = _ref1.handler, ctx = _ref1.ctx, once = _ref1.once; handler.apply(ctx != null ? ctx : this, args); if (once) { _results.push(this.bindings[event].splice(i, 1)); } else { _results.push(i++); } } return _results; } }; return Evented; })(); Pace = window.Pace || {}; window.Pace = Pace; extend(Pace, Evented.prototype); options = Pace.options = extend({}, defaultOptions, window.paceOptions, getFromDOM()); _ref = ['ajax', 'document', 'eventLag', 'elements']; for (_i = 0, _len = _ref.length; _i < _len; _i++) { source = _ref[_i]; if (options[source] === true) { options[source] = defaultOptions[source]; } } NoTargetError = (function(_super) { __extends(NoTargetError, _super); function NoTargetError() { _ref1 = NoTargetError.__super__.constructor.apply(this, arguments); return _ref1; } return NoTargetError; })(Error); Bar = (function() { function Bar() { this.progress = 0; } Bar.prototype.getElement = function() { var targetElement; if (this.el == null) { targetElement = document.querySelector(options.target); if (!targetElement) { throw new NoTargetError; } this.el = document.createElement('div'); this.el.className = "pace pace-active"; document.body.className = document.body.className.replace(/pace-done/g, ''); document.body.className += ' pace-running'; this.el.innerHTML = '<div class="pace-progress">\n <div class="pace-progress-inner"></div>\n</div>\n<div class="pace-activity"></div>'; if (targetElement.firstChild != null) { targetElement.insertBefore(this.el, targetElement.firstChild); } else { targetElement.appendChild(this.el); } } return this.el; }; Bar.prototype.finish = function() { var el; el = this.getElement(); el.className = el.className.replace('pace-active', ''); el.className += ' pace-inactive'; document.body.className = document.body.className.replace('pace-running', ''); return document.body.className += ' pace-done'; }; Bar.prototype.update = function(prog) { this.progress = prog; return this.render(); }; Bar.prototype.destroy = function() { try { this.getElement().parentNode.removeChild(this.getElement()); } catch (_error) { NoTargetError = _error; } return this.el = void 0; }; Bar.prototype.render = function() { var el, key, progressStr, transform, _j, _len1, _ref2; if (document.querySelector(options.target) == null) { return false; } el = this.getElement(); transform = "translate3d(" + this.progress + "%, 0, 0)"; _ref2 = ['webkitTransform', 'msTransform', 'transform']; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { key = _ref2[_j]; el.children[0].style[key] = transform; } if (!this.lastRenderedProgress || this.lastRenderedProgress | 0 !== this.progress | 0) { el.children[0].setAttribute('data-progress-text', "" + (this.progress | 0) + "%"); if (this.progress >= 100) { progressStr = '99'; } else { progressStr = this.progress < 10 ? "0" : ""; progressStr += this.progress | 0; } el.children[0].setAttribute('data-progress', "" + progressStr); } return this.lastRenderedProgress = this.progress; }; Bar.prototype.done = function() { return this.progress >= 100; }; return Bar; })(); Events = (function() { function Events() { this.bindings = {}; } Events.prototype.trigger = function(name, val) { var binding, _j, _len1, _ref2, _results; if (this.bindings[name] != null) { _ref2 = this.bindings[name]; _results = []; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { binding = _ref2[_j]; _results.push(binding.call(this, val)); } return _results; } }; Events.prototype.on = function(name, fn) { var _base; if ((_base = this.bindings)[name] == null) { _base[name] = []; } return this.bindings[name].push(fn); }; return Events; })(); _XMLHttpRequest = window.XMLHttpRequest; _XDomainRequest = window.XDomainRequest; _WebSocket = window.WebSocket; extendNative = function(to, from) { var e, key, _results; _results = []; for (key in from.prototype) { try { if ((to[key] == null) && typeof from[key] !== 'function') { if (typeof Object.defineProperty === 'function') { _results.push(Object.defineProperty(to, key, { get: function() { return from.prototype[key]; }, configurable: true, enumerable: true })); } else { _results.push(to[key] = from.prototype[key]); } } else { _results.push(void 0); } } catch (_error) { e = _error; } } return _results; }; ignoreStack = []; Pace.ignore = function() { var args, fn, ret; fn = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; ignoreStack.unshift('ignore'); ret = fn.apply(null, args); ignoreStack.shift(); return ret; }; Pace.track = function() { var args, fn, ret; fn = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; ignoreStack.unshift('track'); ret = fn.apply(null, args); ignoreStack.shift(); return ret; }; shouldTrack = function(method) { var _ref2; if (method == null) { method = 'GET'; } if (ignoreStack[0] === 'track') { return 'force'; } if (!ignoreStack.length && options.ajax) { if (method === 'socket' && options.ajax.trackWebSockets) { return true; } else if (_ref2 = method.toUpperCase(), __indexOf.call(options.ajax.trackMethods, _ref2) >= 0) { return true; } } return false; }; RequestIntercept = (function(_super) { __extends(RequestIntercept, _super); function RequestIntercept() { var monitorXHR, _this = this; RequestIntercept.__super__.constructor.apply(this, arguments); monitorXHR = function(req) { var _open; _open = req.open; return req.open = function(type, url, async) { if (shouldTrack(type)) { _this.trigger('request', { type: type, url: url, request: req }); } return _open.apply(req, arguments); }; }; window.XMLHttpRequest = function(flags) { var req; req = new _XMLHttpRequest(flags); monitorXHR(req); return req; }; try { extendNative(window.XMLHttpRequest, _XMLHttpRequest); } catch (_error) {} if (_XDomainRequest != null) { window.XDomainRequest = function() { var req; req = new _XDomainRequest; monitorXHR(req); return req; }; try { extendNative(window.XDomainRequest, _XDomainRequest); } catch (_error) {} } if ((_WebSocket != null) && options.ajax.trackWebSockets) { window.WebSocket = function(url, protocols) { var req; if (protocols != null) { req = new _WebSocket(url, protocols); } else { req = new _WebSocket(url); } if (shouldTrack('socket')) { _this.trigger('request', { type: 'socket', url: url, protocols: protocols, request: req }); } return req; }; try { extendNative(window.WebSocket, _WebSocket); } catch (_error) {} } } return RequestIntercept; })(Events); _intercept = null; getIntercept = function() { if (_intercept == null) { _intercept = new RequestIntercept; } return _intercept; }; shouldIgnoreURL = function(url) { var pattern, _j, _len1, _ref2; _ref2 = options.ajax.ignoreURLs; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { pattern = _ref2[_j]; if (typeof pattern === 'string') { if (url.indexOf(pattern) !== -1) { return true; } } else { if (pattern.test(url)) { return true; } } } return false; }; getIntercept().on('request', function(_arg) { var after, args, request, type, url; type = _arg.type, request = _arg.request, url = _arg.url; if (shouldIgnoreURL(url)) { return; } if (!Pace.running && (options.restartOnRequestAfter !== false || shouldTrack(type) === 'force')) { args = arguments; after = options.restartOnRequestAfter || 0; if (typeof after === 'boolean') { after = 0; } return setTimeout(function() { var stillActive, _j, _len1, _ref2, _ref3, _results; if (type === 'socket') { stillActive = request.readyState < 2; } else { stillActive = (0 < (_ref2 = request.readyState) && _ref2 < 4); } if (stillActive) { Pace.restart(); _ref3 = Pace.sources; _results = []; for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) { source = _ref3[_j]; if (source instanceof AjaxMonitor) { source.watch.apply(source, args); break; } else { _results.push(void 0); } } return _results; } }, after); } }); AjaxMonitor = (function() { function AjaxMonitor() { var _this = this; this.elements = []; getIntercept().on('request', function() { return _this.watch.apply(_this, arguments); }); } AjaxMonitor.prototype.watch = function(_arg) { var request, tracker, type, url; type = _arg.type, request = _arg.request, url = _arg.url; if (shouldIgnoreURL(url)) { return; } if (type === 'socket') { tracker = new SocketRequestTracker(request); } else { tracker = new XHRRequestTracker(request); } return this.elements.push(tracker); }; return AjaxMonitor; })(); XHRRequestTracker = (function() { function XHRRequestTracker(request) { var event, size, _j, _len1, _onreadystatechange, _ref2, _this = this; this.progress = 0; if (window.ProgressEvent != null) { size = null; request.addEventListener('progress', function(evt) { if (evt.lengthComputable) { return _this.progress = 100 * evt.loaded / evt.total; } else { return _this.progress = _this.progress + (100 - _this.progress) / 2; } }, false); _ref2 = ['load', 'abort', 'timeout', 'error']; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { event = _ref2[_j]; request.addEventListener(event, function() { return _this.progress = 100; }, false); } } else { _onreadystatechange = request.onreadystatechange; request.onreadystatechange = function() { var _ref3; if ((_ref3 = request.readyState) === 0 || _ref3 === 4) { _this.progress = 100; } else if (request.readyState === 3) { _this.progress = 50; } return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0; }; } } return XHRRequestTracker; })(); SocketRequestTracker = (function() { function SocketRequestTracker(request) { var event, _j, _len1, _ref2, _this = this; this.progress = 0; _ref2 = ['error', 'open']; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { event = _ref2[_j]; request.addEventListener(event, function() { return _this.progress = 100; }, false); } } return SocketRequestTracker; })(); ElementMonitor = (function() { function ElementMonitor(options) { var selector, _j, _len1, _ref2; if (options == null) { options = {}; } this.elements = []; if (options.selectors == null) { options.selectors = []; } _ref2 = options.selectors; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { selector = _ref2[_j]; this.elements.push(new ElementTracker(selector)); } } return ElementMonitor; })(); ElementTracker = (function() { function ElementTracker(selector) { this.selector = selector; this.progress = 0; this.check(); } ElementTracker.prototype.check = function() { var _this = this; if (document.querySelector(this.selector)) { return this.done(); } else { return setTimeout((function() { return _this.check(); }), options.elements.checkInterval); } }; ElementTracker.prototype.done = function() { return this.progress = 100; }; return ElementTracker; })(); DocumentMonitor = (function() { DocumentMonitor.prototype.states = { loading: 0, interactive: 50, complete: 100 }; function DocumentMonitor() { var _onreadystatechange, _ref2, _this = this; this.progress = (_ref2 = this.states[document.readyState]) != null ? _ref2 : 100; _onreadystatechange = document.onreadystatechange; document.onreadystatechange = function() { if (_this.states[document.readyState] != null) { _this.progress = _this.states[document.readyState]; } return typeof _onreadystatechange === "function" ? _onreadystatechange.apply(null, arguments) : void 0; }; } return DocumentMonitor; })(); EventLagMonitor = (function() { function EventLagMonitor() { var avg, interval, last, points, samples, _this = this; this.progress = 0; avg = 0; samples = []; points = 0; last = now(); interval = setInterval(function() { var diff; diff = now() - last - 50; last = now(); samples.push(diff); if (samples.length > options.eventLag.sampleCount) { samples.shift(); } avg = avgAmplitude(samples); if (++points >= options.eventLag.minSamples && avg < options.eventLag.lagThreshold) { _this.progress = 100; return clearInterval(interval); } else { return _this.progress = 100 * (3 / (avg + 3)); } }, 50); } return EventLagMonitor; })(); Scaler = (function() { function Scaler(source) { this.source = source; this.last = this.sinceLastUpdate = 0; this.rate = options.initialRate; this.catchup = 0; this.progress = this.lastProgress = 0; if (this.source != null) { this.progress = result(this.source, 'progress'); } } Scaler.prototype.tick = function(frameTime, val) { var scaling; if (val == null) { val = result(this.source, 'progress'); } if (val >= 100) { this.done = true; } if (val === this.last) { this.sinceLastUpdate += frameTime; } else { if (this.sinceLastUpdate) { this.rate = (val - this.last) / this.sinceLastUpdate; } this.catchup = (val - this.progress) / options.catchupTime; this.sinceLastUpdate = 0; this.last = val; } if (val > this.progress) { this.progress += this.catchup * frameTime; } scaling = 1 - Math.pow(this.progress / 100, options.easeFactor); this.progress += scaling * this.rate * frameTime; this.progress = Math.min(this.lastProgress + options.maxProgressPerFrame, this.progress); this.progress = Math.max(0, this.progress); this.progress = Math.min(100, this.progress); this.lastProgress = this.progress; return this.progress; }; return Scaler; })(); sources = null; scalers = null; bar = null; uniScaler = null; animation = null; cancelAnimation = null; Pace.running = false; handlePushState = function() { if (options.restartOnPushState) { return Pace.restart(); } }; if (window.history.pushState != null) { _pushState = window.history.pushState; window.history.pushState = function() { handlePushState(); return _pushState.apply(window.history, arguments); }; } if (window.history.replaceState != null) { _replaceState = window.history.replaceState; window.history.replaceState = function() { handlePushState(); return _replaceState.apply(window.history, arguments); }; } SOURCE_KEYS = { ajax: AjaxMonitor, elements: ElementMonitor, document: DocumentMonitor, eventLag: EventLagMonitor }; (init = function() { var type, _j, _k, _len1, _len2, _ref2, _ref3, _ref4; Pace.sources = sources = []; _ref2 = ['ajax', 'elements', 'document', 'eventLag']; for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { type = _ref2[_j]; if (options[type] !== false) { sources.push(new SOURCE_KEYS[type](options[type])); } } _ref4 = (_ref3 = options.extraSources) != null ? _ref3 : []; for (_k = 0, _len2 = _ref4.length; _k < _len2; _k++) { source = _ref4[_k]; sources.push(new source(options)); } Pace.bar = bar = new Bar; scalers = []; return uniScaler = new Scaler; })(); Pace.stop = function() { Pace.trigger('stop'); Pace.running = false; bar.destroy(); cancelAnimation = true; if (animation != null) { if (typeof cancelAnimationFrame === "function") { cancelAnimationFrame(animation); } animation = null; } return init(); }; Pace.restart = function() { Pace.trigger('restart'); Pace.stop(); return Pace.start(); }; Pace.go = function() { var start; Pace.running = true; bar.render(); start = now(); cancelAnimation = false; return animation = runAnimation(function(frameTime, enqueueNextFrame) { var avg, count, done, element, elements, i, j, remaining, scaler, scalerList, sum, _j, _k, _len1, _len2, _ref2; remaining = 100 - bar.progress; count = sum = 0; done = true; for (i = _j = 0, _len1 = sources.length; _j < _len1; i = ++_j) { source = sources[i]; scalerList = scalers[i] != null ? scalers[i] : scalers[i] = []; elements = (_ref2 = source.elements) != null ? _ref2 : [source]; for (j = _k = 0, _len2 = elements.length; _k < _len2; j = ++_k) { element = elements[j]; scaler = scalerList[j] != null ? scalerList[j] : scalerList[j] = new Scaler(element); done &= scaler.done; if (scaler.done) { continue; } count++; sum += scaler.tick(frameTime); } } avg = sum / count; bar.update(uniScaler.tick(frameTime, avg)); if (bar.done() || done || cancelAnimation) { bar.update(100); Pace.trigger('done'); return setTimeout(function() { bar.finish(); Pace.running = false; return Pace.trigger('hide'); }, Math.max(options.ghostTime, Math.max(options.minTime - (now() - start), 0))); } else { return enqueueNextFrame(); } }); }; Pace.start = function(_options) { extend(options, _options); Pace.running = true; try { bar.render(); } catch (_error) { NoTargetError = _error; } if (!document.querySelector('.pace')) { return setTimeout(Pace.start, 50); } else { Pace.trigger('start'); return Pace.go(); } }; if (typeof define === 'function' && define.amd) { define(['pace'], function() { return Pace; }); } else if (typeof exports === 'object') { module.exports = Pace; } else { if (options.startOnPageLoad) { Pace.start(); } } }).call(this); AdminLTE/plugins/seiyria-bootstrap-slider/css/bootstrap-slider.css 0000644 00000024200 15002261751 0021356 0 ustar 00 /*! ======================================================= VERSION 10.6.2 ========================================================= */ /*! ========================================================= * bootstrap-slider.js * * Maintainers: * Kyle Kemp * - Twitter: @seiyria * - Github: seiyria * Rohit Kalkur * - Twitter: @Rovolutionary * - Github: rovolution * * ========================================================= * * bootstrap-slider is released under the MIT License * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * ========================================================= */ .slider { display: inline-block; vertical-align: middle; position: relative; } .slider.slider-horizontal { width: 210px; height: 20px; } .slider.slider-horizontal .slider-track { height: 10px; width: 100%; margin-top: -5px; top: 50%; left: 0; } .slider.slider-horizontal .slider-selection, .slider.slider-horizontal .slider-track-low, .slider.slider-horizontal .slider-track-high { height: 100%; top: 0; bottom: 0; } .slider.slider-horizontal .slider-tick, .slider.slider-horizontal .slider-handle { margin-left: -10px; } .slider.slider-horizontal .slider-tick.triangle, .slider.slider-horizontal .slider-handle.triangle { position: relative; top: 50%; -ms-transform: translateY(-50%); transform: translateY(-50%); border-width: 0 10px 10px 10px; width: 0; height: 0; border-bottom-color: #2e6da4; margin-top: 0; } .slider.slider-horizontal .slider-tick-container { white-space: nowrap; position: absolute; top: 0; left: 0; width: 100%; } .slider.slider-horizontal .slider-tick-label-container { white-space: nowrap; margin-top: 20px; } .slider.slider-horizontal .slider-tick-label-container .slider-tick-label { padding-top: 4px; display: inline-block; text-align: center; } .slider.slider-horizontal .tooltip { -ms-transform: translateX(-50%); transform: translateX(-50%); } .slider.slider-horizontal.slider-rtl .slider-track { left: initial; right: 0; } .slider.slider-horizontal.slider-rtl .slider-tick, .slider.slider-horizontal.slider-rtl .slider-handle { margin-left: initial; margin-right: -10px; } .slider.slider-horizontal.slider-rtl .slider-tick-container { left: initial; right: 0; } .slider.slider-horizontal.slider-rtl .tooltip { -ms-transform: translateX(50%); transform: translateX(50%); } .slider.slider-vertical { height: 210px; width: 20px; } .slider.slider-vertical .slider-track { width: 10px; height: 100%; left: 25%; top: 0; } .slider.slider-vertical .slider-selection { width: 100%; left: 0; top: 0; bottom: 0; } .slider.slider-vertical .slider-track-low, .slider.slider-vertical .slider-track-high { width: 100%; left: 0; right: 0; } .slider.slider-vertical .slider-tick, .slider.slider-vertical .slider-handle { margin-top: -10px; } .slider.slider-vertical .slider-tick.triangle, .slider.slider-vertical .slider-handle.triangle { border-width: 10px 0 10px 10px; width: 1px; height: 1px; border-left-color: #2e6da4; border-right-color: #2e6da4; margin-left: 0; margin-right: 0; } .slider.slider-vertical .slider-tick-label-container { white-space: nowrap; } .slider.slider-vertical .slider-tick-label-container .slider-tick-label { padding-left: 4px; } .slider.slider-vertical .tooltip { -ms-transform: translateY(-50%); transform: translateY(-50%); } .slider.slider-vertical.slider-rtl .slider-track { left: initial; right: 25%; } .slider.slider-vertical.slider-rtl .slider-selection { left: initial; right: 0; } .slider.slider-vertical.slider-rtl .slider-tick.triangle, .slider.slider-vertical.slider-rtl .slider-handle.triangle { border-width: 10px 10px 10px 0; } .slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label { padding-left: initial; padding-right: 4px; } .slider.slider-disabled .slider-handle { background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0); background-repeat: repeat-x; } .slider.slider-disabled .slider-track { background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0); background-repeat: repeat-x; cursor: not-allowed; } .slider input { display: none; } .slider .tooltip { pointer-events: none; } .slider .tooltip.top { margin-top: -36px; } .slider .tooltip-inner { white-space: nowrap; max-width: none; } .slider .hide { display: none; } .slider-track { position: absolute; cursor: pointer; background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%); background-image: -o-linear-gradient(top, #f5f5f5 0%, #f9f9f9 100%); background-image: linear-gradient(to bottom, #f5f5f5 0%, #f9f9f9 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); background-repeat: repeat-x; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); border-radius: 4px; } .slider-selection { position: absolute; background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); background-repeat: repeat-x; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 4px; } .slider-selection.tick-slider-selection { background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0); background-repeat: repeat-x; } .slider-track-low, .slider-track-high { position: absolute; background: transparent; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 4px; } .slider-handle { position: absolute; top: 0; width: 20px; height: 20px; background-color: #337ab7; background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); background-repeat: repeat-x; filter: none; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); border: 0px solid transparent; } .slider-handle:hover { cursor: pointer; } .slider-handle.round { border-radius: 50%; } .slider-handle.triangle { background: transparent none; } .slider-handle.custom { background: transparent none; } .slider-handle.custom::before { line-height: 20px; font-size: 20px; content: '\2605'; color: #726204; } .slider-tick { position: absolute; cursor: pointer; width: 20px; height: 20px; background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); background-repeat: repeat-x; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; filter: none; opacity: 0.8; border: 0px solid transparent; } .slider-tick.round { border-radius: 50%; } .slider-tick.triangle { background: transparent none; } .slider-tick.custom { background: transparent none; } .slider-tick.custom::before { line-height: 20px; font-size: 20px; content: '\2605'; color: #726204; } .slider-tick.in-selection { background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%); background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0); background-repeat: repeat-x; opacity: 1; } AdminLTE/plugins/seiyria-bootstrap-slider/css/bootstrap-slider.min.css 0000644 00000022170 15002261751 0022144 0 ustar 00 /*! ======================================================= VERSION 10.6.2 ========================================================= */ /*! ========================================================= * bootstrap-slider.js * * Maintainers: * Kyle Kemp * - Twitter: @seiyria * - Github: seiyria * Rohit Kalkur * - Twitter: @Rovolutionary * - Github: rovolution * * ========================================================= * * bootstrap-slider is released under the MIT License * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * ========================================================= */.slider{display:inline-block;vertical-align:middle;position:relative}.slider.slider-horizontal{width:210px;height:20px}.slider.slider-horizontal .slider-track{height:10px;width:100%;margin-top:-5px;top:50%;left:0}.slider.slider-horizontal .slider-selection,.slider.slider-horizontal .slider-track-low,.slider.slider-horizontal .slider-track-high{height:100%;top:0;bottom:0}.slider.slider-horizontal .slider-tick,.slider.slider-horizontal .slider-handle{margin-left:-10px}.slider.slider-horizontal .slider-tick.triangle,.slider.slider-horizontal .slider-handle.triangle{position:relative;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);border-width:0 10px 10px 10px;width:0;height:0;border-bottom-color:#2e6da4;margin-top:0}.slider.slider-horizontal .slider-tick-container{white-space:nowrap;position:absolute;top:0;left:0;width:100%}.slider.slider-horizontal .slider-tick-label-container{white-space:nowrap;margin-top:20px}.slider.slider-horizontal .slider-tick-label-container .slider-tick-label{padding-top:4px;display:inline-block;text-align:center}.slider.slider-horizontal .tooltip{-ms-transform:translateX(-50%);transform:translateX(-50%)}.slider.slider-horizontal.slider-rtl .slider-track{left:initial;right:0}.slider.slider-horizontal.slider-rtl .slider-tick,.slider.slider-horizontal.slider-rtl .slider-handle{margin-left:initial;margin-right:-10px}.slider.slider-horizontal.slider-rtl .slider-tick-container{left:initial;right:0}.slider.slider-horizontal.slider-rtl .tooltip{-ms-transform:translateX(50%);transform:translateX(50%)}.slider.slider-vertical{height:210px;width:20px}.slider.slider-vertical .slider-track{width:10px;height:100%;left:25%;top:0}.slider.slider-vertical .slider-selection{width:100%;left:0;top:0;bottom:0}.slider.slider-vertical .slider-track-low,.slider.slider-vertical .slider-track-high{width:100%;left:0;right:0}.slider.slider-vertical .slider-tick,.slider.slider-vertical .slider-handle{margin-top:-10px}.slider.slider-vertical .slider-tick.triangle,.slider.slider-vertical .slider-handle.triangle{border-width:10px 0 10px 10px;width:1px;height:1px;border-left-color:#2e6da4;border-right-color:#2e6da4;margin-left:0;margin-right:0}.slider.slider-vertical .slider-tick-label-container{white-space:nowrap}.slider.slider-vertical .slider-tick-label-container .slider-tick-label{padding-left:4px}.slider.slider-vertical .tooltip{-ms-transform:translateY(-50%);transform:translateY(-50%)}.slider.slider-vertical.slider-rtl .slider-track{left:initial;right:25%}.slider.slider-vertical.slider-rtl .slider-selection{left:initial;right:0}.slider.slider-vertical.slider-rtl .slider-tick.triangle,.slider.slider-vertical.slider-rtl .slider-handle.triangle{border-width:10px 10px 10px 0}.slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label{padding-left:initial;padding-right:4px}.slider.slider-disabled .slider-handle{background-image:-webkit-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:-o-linear-gradient(top,#dfdfdf 0,#bebebe 100%);background-image:linear-gradient(to bottom,#dfdfdf 0,#bebebe 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf',endColorstr='#ffbebebe',GradientType=0);background-repeat:repeat-x}.slider.slider-disabled .slider-track{background-image:-webkit-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:-o-linear-gradient(top,#e5e5e5 0,#e9e9e9 100%);background-image:linear-gradient(to bottom,#e5e5e5 0,#e9e9e9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5',endColorstr='#ffe9e9e9',GradientType=0);background-repeat:repeat-x;cursor:not-allowed}.slider input{display:none}.slider .tooltip{pointer-events:none}.slider .tooltip.top{margin-top:-36px}.slider .tooltip-inner{white-space:nowrap;max-width:none}.slider .hide{display:none}.slider-track{position:absolute;cursor:pointer;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);border-radius:4px}.slider-selection{position:absolute;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-selection.tick-slider-selection{background-image:-webkit-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:-o-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:linear-gradient(to bottom,#8ac1ef 0,#82b3de 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef',endColorstr='#ff82b3de',GradientType=0);background-repeat:repeat-x}.slider-track-low,.slider-track-high{position:absolute;background:transparent;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:4px}.slider-handle{position:absolute;top:0;width:20px;height:20px;background-color:#337ab7;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff2e6da4',GradientType=0);background-repeat:repeat-x;filter:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);border:0 solid transparent}.slider-handle:hover{cursor:pointer}.slider-handle.round{border-radius:50%}.slider-handle.triangle{background:transparent none}.slider-handle.custom{background:transparent none}.slider-handle.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick{position:absolute;cursor:pointer;width:20px;height:20px;background-image:-webkit-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f9f9f9 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#f9f9f9 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;filter:none;opacity:.8;border:0 solid transparent}.slider-tick.round{border-radius:50%}.slider-tick.triangle{background:transparent none}.slider-tick.custom{background:transparent none}.slider-tick.custom::before{line-height:20px;font-size:20px;content:'\2605';color:#726204}.slider-tick.in-selection{background-image:-webkit-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:-o-linear-gradient(top,#8ac1ef 0,#82b3de 100%);background-image:linear-gradient(to bottom,#8ac1ef 0,#82b3de 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef',endColorstr='#ff82b3de',GradientType=0);background-repeat:repeat-x;opacity:1} AdminLTE/plugins/seiyria-bootstrap-slider/bootstrap-slider.js 0000644 00000213331 15002261751 0020417 0 ustar 00 /*! ======================================================= VERSION 10.6.2 ========================================================= */ "use strict"; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /*! ========================================================= * bootstrap-slider.js * * Maintainers: * Kyle Kemp * - Twitter: @seiyria * - Github: seiyria * Rohit Kalkur * - Twitter: @Rovolutionary * - Github: rovolution * * ========================================================= * * bootstrap-slider is released under the MIT License * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * ========================================================= */ /** * Bridget makes jQuery widgets * v1.0.1 * MIT license */ var windowIsDefined = (typeof window === "undefined" ? "undefined" : _typeof(window)) === "object"; (function (factory) { if (typeof define === "function" && define.amd) { define(["jquery"], factory); } else if ((typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" && module.exports) { var jQuery; try { jQuery = require("jquery"); } catch (err) { jQuery = null; } module.exports = factory(jQuery); } else if (window) { window.Slider = factory(window.jQuery); } })(function ($) { // Constants var NAMESPACE_MAIN = 'slider'; var NAMESPACE_ALTERNATE = 'bootstrapSlider'; // Polyfill console methods if (windowIsDefined && !window.console) { window.console = {}; } if (windowIsDefined && !window.console.log) { window.console.log = function () {}; } if (windowIsDefined && !window.console.warn) { window.console.warn = function () {}; } // Reference to Slider constructor var Slider; (function ($) { 'use strict'; // -------------------------- utils -------------------------- // var slice = Array.prototype.slice; function noop() {} // -------------------------- definition -------------------------- // function defineBridget($) { // bail if no jQuery if (!$) { return; } // -------------------------- addOptionMethod -------------------------- // /** * adds option method -> $().plugin('option', {...}) * @param {Function} PluginClass - constructor class */ function addOptionMethod(PluginClass) { // don't overwrite original option method if (PluginClass.prototype.option) { return; } // option setter PluginClass.prototype.option = function (opts) { // bail out if not an object if (!$.isPlainObject(opts)) { return; } this.options = $.extend(true, this.options, opts); }; } // -------------------------- plugin bridge -------------------------- // // helper function for logging errors // $.error breaks jQuery chaining var logError = typeof console === 'undefined' ? noop : function (message) { console.error(message); }; /** * jQuery plugin bridge, access methods like $elem.plugin('method') * @param {String} namespace - plugin name * @param {Function} PluginClass - constructor class */ function bridge(namespace, PluginClass) { // add to jQuery fn namespace $.fn[namespace] = function (options) { if (typeof options === 'string') { // call plugin method when first argument is a string // get arguments for method var args = slice.call(arguments, 1); for (var i = 0, len = this.length; i < len; i++) { var elem = this[i]; var instance = $.data(elem, namespace); if (!instance) { logError("cannot call methods on " + namespace + " prior to initialization; " + "attempted to call '" + options + "'"); continue; } if (!$.isFunction(instance[options]) || options.charAt(0) === '_') { logError("no such method '" + options + "' for " + namespace + " instance"); continue; } // trigger method with arguments var returnValue = instance[options].apply(instance, args); // break look and return first value if provided if (returnValue !== undefined && returnValue !== instance) { return returnValue; } } // return this if no return value return this; } else { var objects = this.map(function () { var instance = $.data(this, namespace); if (instance) { // apply options & init instance.option(options); instance._init(); } else { // initialize new instance instance = new PluginClass(this, options); $.data(this, namespace, instance); } return $(this); }); if (objects.length === 1) { return objects[0]; } return objects; } }; } // -------------------------- bridget -------------------------- // /** * converts a Prototypical class into a proper jQuery plugin * the class must have a ._init method * @param {String} namespace - plugin name, used in $().pluginName * @param {Function} PluginClass - constructor class */ $.bridget = function (namespace, PluginClass) { addOptionMethod(PluginClass); bridge(namespace, PluginClass); }; return $.bridget; } // get jquery from browser global defineBridget($); })($); /************************************************* BOOTSTRAP-SLIDER SOURCE CODE **************************************************/ (function ($) { var autoRegisterNamespace = void 0; var ErrorMsgs = { formatInvalidInputErrorMsg: function formatInvalidInputErrorMsg(input) { return "Invalid input value '" + input + "' passed in"; }, callingContextNotSliderInstance: "Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method" }; var SliderScale = { linear: { getValue: function getValue(value, options) { if (value < options.min) { return options.min; } else if (value > options.max) { return options.max; } else { return value; } }, toValue: function toValue(percentage) { var rawValue = percentage / 100 * (this.options.max - this.options.min); var shouldAdjustWithBase = true; if (this.options.ticks_positions.length > 0) { var minv, maxv, minp, maxp = 0; for (var i = 1; i < this.options.ticks_positions.length; i++) { if (percentage <= this.options.ticks_positions[i]) { minv = this.options.ticks[i - 1]; minp = this.options.ticks_positions[i - 1]; maxv = this.options.ticks[i]; maxp = this.options.ticks_positions[i]; break; } } var partialPercentage = (percentage - minp) / (maxp - minp); rawValue = minv + partialPercentage * (maxv - minv); shouldAdjustWithBase = false; } var adjustment = shouldAdjustWithBase ? this.options.min : 0; var value = adjustment + Math.round(rawValue / this.options.step) * this.options.step; return SliderScale.linear.getValue(value, this.options); }, toPercentage: function toPercentage(value) { if (this.options.max === this.options.min) { return 0; } if (this.options.ticks_positions.length > 0) { var minv, maxv, minp, maxp = 0; for (var i = 0; i < this.options.ticks.length; i++) { if (value <= this.options.ticks[i]) { minv = i > 0 ? this.options.ticks[i - 1] : 0; minp = i > 0 ? this.options.ticks_positions[i - 1] : 0; maxv = this.options.ticks[i]; maxp = this.options.ticks_positions[i]; break; } } if (i > 0) { var partialPercentage = (value - minv) / (maxv - minv); return minp + partialPercentage * (maxp - minp); } } return 100 * (value - this.options.min) / (this.options.max - this.options.min); } }, logarithmic: { /* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */ toValue: function toValue(percentage) { var offset = 1 - this.options.min; var min = Math.log(this.options.min + offset); var max = Math.log(this.options.max + offset); var value = Math.exp(min + (max - min) * percentage / 100) - offset; if (Math.round(value) === max) { return max; } value = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step; /* Rounding to the nearest step could exceed the min or * max, so clip to those values. */ return SliderScale.linear.getValue(value, this.options); }, toPercentage: function toPercentage(value) { if (this.options.max === this.options.min) { return 0; } else { var offset = 1 - this.options.min; var max = Math.log(this.options.max + offset); var min = Math.log(this.options.min + offset); var v = Math.log(value + offset); return 100 * (v - min) / (max - min); } } } }; /************************************************* CONSTRUCTOR **************************************************/ Slider = function Slider(element, options) { createNewSlider.call(this, element, options); return this; }; function createNewSlider(element, options) { /* The internal state object is used to store data about the current 'state' of slider. This includes values such as the `value`, `enabled`, etc... */ this._state = { value: null, enabled: null, offset: null, size: null, percentage: null, inDrag: false, over: false, tickIndex: null }; // The objects used to store the reference to the tick methods if ticks_tooltip is on this.ticksCallbackMap = {}; this.handleCallbackMap = {}; if (typeof element === "string") { this.element = document.querySelector(element); } else if (element instanceof HTMLElement) { this.element = element; } /************************************************* Process Options **************************************************/ options = options ? options : {}; var optionTypes = Object.keys(this.defaultOptions); var isMinSet = options.hasOwnProperty('min'); var isMaxSet = options.hasOwnProperty('max'); for (var i = 0; i < optionTypes.length; i++) { var optName = optionTypes[i]; // First check if an option was passed in via the constructor var val = options[optName]; // If no data attrib, then check data atrributes val = typeof val !== 'undefined' ? val : getDataAttrib(this.element, optName); // Finally, if nothing was specified, use the defaults val = val !== null ? val : this.defaultOptions[optName]; // Set all options on the instance of the Slider if (!this.options) { this.options = {}; } this.options[optName] = val; } this.ticksAreValid = Array.isArray(this.options.ticks) && this.options.ticks.length > 0; // Lock to ticks only when ticks[] is defined and set if (!this.ticksAreValid) { this.options.lock_to_ticks = false; } // Check options.rtl if (this.options.rtl === 'auto') { var computedStyle = window.getComputedStyle(this.element); if (computedStyle != null) { this.options.rtl = computedStyle.direction === 'rtl'; } else { // Fix for Firefox bug in versions less than 62: // https://bugzilla.mozilla.org/show_bug.cgi?id=548397 // https://bugzilla.mozilla.org/show_bug.cgi?id=1467722 this.options.rtl = this.element.style.direction === 'rtl'; } } /* Validate `tooltip_position` against 'orientation` - if `tooltip_position` is incompatible with orientation, swith it to a default compatible with specified `orientation` -- default for "vertical" -> "right", "left" if rtl -- default for "horizontal" -> "top" */ if (this.options.orientation === "vertical" && (this.options.tooltip_position === "top" || this.options.tooltip_position === "bottom")) { if (this.options.rtl) { this.options.tooltip_position = "left"; } else { this.options.tooltip_position = "right"; } } else if (this.options.orientation === "horizontal" && (this.options.tooltip_position === "left" || this.options.tooltip_position === "right")) { this.options.tooltip_position = "top"; } function getDataAttrib(element, optName) { var dataName = "data-slider-" + optName.replace(/_/g, '-'); var dataValString = element.getAttribute(dataName); try { return JSON.parse(dataValString); } catch (err) { return dataValString; } } /************************************************* Create Markup **************************************************/ var origWidth = this.element.style.width; var updateSlider = false; var parent = this.element.parentNode; var sliderTrackSelection; var sliderTrackLow, sliderTrackHigh; var sliderMinHandle; var sliderMaxHandle; if (this.sliderElem) { updateSlider = true; } else { /* Create elements needed for slider */ this.sliderElem = document.createElement("div"); this.sliderElem.className = "slider"; /* Create slider track elements */ var sliderTrack = document.createElement("div"); sliderTrack.className = "slider-track"; sliderTrackLow = document.createElement("div"); sliderTrackLow.className = "slider-track-low"; sliderTrackSelection = document.createElement("div"); sliderTrackSelection.className = "slider-selection"; sliderTrackHigh = document.createElement("div"); sliderTrackHigh.className = "slider-track-high"; sliderMinHandle = document.createElement("div"); sliderMinHandle.className = "slider-handle min-slider-handle"; sliderMinHandle.setAttribute('role', 'slider'); sliderMinHandle.setAttribute('aria-valuemin', this.options.min); sliderMinHandle.setAttribute('aria-valuemax', this.options.max); sliderMaxHandle = document.createElement("div"); sliderMaxHandle.className = "slider-handle max-slider-handle"; sliderMaxHandle.setAttribute('role', 'slider'); sliderMaxHandle.setAttribute('aria-valuemin', this.options.min); sliderMaxHandle.setAttribute('aria-valuemax', this.options.max); sliderTrack.appendChild(sliderTrackLow); sliderTrack.appendChild(sliderTrackSelection); sliderTrack.appendChild(sliderTrackHigh); /* Create highlight range elements */ this.rangeHighlightElements = []; var rangeHighlightsOpts = this.options.rangeHighlights; if (Array.isArray(rangeHighlightsOpts) && rangeHighlightsOpts.length > 0) { for (var j = 0; j < rangeHighlightsOpts.length; j++) { var rangeHighlightElement = document.createElement("div"); var customClassString = rangeHighlightsOpts[j].class || ""; rangeHighlightElement.className = "slider-rangeHighlight slider-selection " + customClassString; this.rangeHighlightElements.push(rangeHighlightElement); sliderTrack.appendChild(rangeHighlightElement); } } /* Add aria-labelledby to handle's */ var isLabelledbyArray = Array.isArray(this.options.labelledby); if (isLabelledbyArray && this.options.labelledby[0]) { sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby[0]); } if (isLabelledbyArray && this.options.labelledby[1]) { sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby[1]); } if (!isLabelledbyArray && this.options.labelledby) { sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby); sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby); } /* Create ticks */ this.ticks = []; if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { this.ticksContainer = document.createElement('div'); this.ticksContainer.className = 'slider-tick-container'; for (i = 0; i < this.options.ticks.length; i++) { var tick = document.createElement('div'); tick.className = 'slider-tick'; if (this.options.ticks_tooltip) { var tickListenerReference = this._addTickListener(); var enterCallback = tickListenerReference.addMouseEnter(this, tick, i); var leaveCallback = tickListenerReference.addMouseLeave(this, tick); this.ticksCallbackMap[i] = { mouseEnter: enterCallback, mouseLeave: leaveCallback }; } this.ticks.push(tick); this.ticksContainer.appendChild(tick); } sliderTrackSelection.className += " tick-slider-selection"; } this.tickLabels = []; if (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) { this.tickLabelContainer = document.createElement('div'); this.tickLabelContainer.className = 'slider-tick-label-container'; for (i = 0; i < this.options.ticks_labels.length; i++) { var label = document.createElement('div'); var noTickPositionsSpecified = this.options.ticks_positions.length === 0; var tickLabelsIndex = this.options.reversed && noTickPositionsSpecified ? this.options.ticks_labels.length - (i + 1) : i; label.className = 'slider-tick-label'; label.innerHTML = this.options.ticks_labels[tickLabelsIndex]; this.tickLabels.push(label); this.tickLabelContainer.appendChild(label); } } var createAndAppendTooltipSubElements = function createAndAppendTooltipSubElements(tooltipElem) { var arrow = document.createElement("div"); arrow.className = "tooltip-arrow"; var inner = document.createElement("div"); inner.className = "tooltip-inner"; tooltipElem.appendChild(arrow); tooltipElem.appendChild(inner); }; /* Create tooltip elements */ var sliderTooltip = document.createElement("div"); sliderTooltip.className = "tooltip tooltip-main"; sliderTooltip.setAttribute('role', 'presentation'); createAndAppendTooltipSubElements(sliderTooltip); var sliderTooltipMin = document.createElement("div"); sliderTooltipMin.className = "tooltip tooltip-min"; sliderTooltipMin.setAttribute('role', 'presentation'); createAndAppendTooltipSubElements(sliderTooltipMin); var sliderTooltipMax = document.createElement("div"); sliderTooltipMax.className = "tooltip tooltip-max"; sliderTooltipMax.setAttribute('role', 'presentation'); createAndAppendTooltipSubElements(sliderTooltipMax); /* Append components to sliderElem */ this.sliderElem.appendChild(sliderTrack); this.sliderElem.appendChild(sliderTooltip); this.sliderElem.appendChild(sliderTooltipMin); this.sliderElem.appendChild(sliderTooltipMax); if (this.tickLabelContainer) { this.sliderElem.appendChild(this.tickLabelContainer); } if (this.ticksContainer) { this.sliderElem.appendChild(this.ticksContainer); } this.sliderElem.appendChild(sliderMinHandle); this.sliderElem.appendChild(sliderMaxHandle); /* Append slider element to parent container, right before the original <input> element */ parent.insertBefore(this.sliderElem, this.element); /* Hide original <input> element */ this.element.style.display = "none"; } /* If JQuery exists, cache JQ references */ if ($) { this.$element = $(this.element); this.$sliderElem = $(this.sliderElem); } /************************************************* Setup **************************************************/ this.eventToCallbackMap = {}; this.sliderElem.id = this.options.id; this.touchCapable = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch; this.touchX = 0; this.touchY = 0; this.tooltip = this.sliderElem.querySelector('.tooltip-main'); this.tooltipInner = this.tooltip.querySelector('.tooltip-inner'); this.tooltip_min = this.sliderElem.querySelector('.tooltip-min'); this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner'); this.tooltip_max = this.sliderElem.querySelector('.tooltip-max'); this.tooltipInner_max = this.tooltip_max.querySelector('.tooltip-inner'); if (SliderScale[this.options.scale]) { this.options.scale = SliderScale[this.options.scale]; } if (updateSlider === true) { // Reset classes this._removeClass(this.sliderElem, 'slider-horizontal'); this._removeClass(this.sliderElem, 'slider-vertical'); this._removeClass(this.sliderElem, 'slider-rtl'); this._removeClass(this.tooltip, 'hide'); this._removeClass(this.tooltip_min, 'hide'); this._removeClass(this.tooltip_max, 'hide'); // Undo existing inline styles for track ["left", "right", "top", "width", "height"].forEach(function (prop) { this._removeProperty(this.trackLow, prop); this._removeProperty(this.trackSelection, prop); this._removeProperty(this.trackHigh, prop); }, this); // Undo inline styles on handles [this.handle1, this.handle2].forEach(function (handle) { this._removeProperty(handle, 'left'); this._removeProperty(handle, 'right'); this._removeProperty(handle, 'top'); }, this); // Undo inline styles and classes on tooltips [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function (tooltip) { this._removeProperty(tooltip, 'left'); this._removeProperty(tooltip, 'right'); this._removeProperty(tooltip, 'top'); this._removeClass(tooltip, 'right'); this._removeClass(tooltip, 'left'); this._removeClass(tooltip, 'top'); }, this); } if (this.options.orientation === 'vertical') { this._addClass(this.sliderElem, 'slider-vertical'); this.stylePos = 'top'; this.mousePos = 'pageY'; this.sizePos = 'offsetHeight'; } else { this._addClass(this.sliderElem, 'slider-horizontal'); this.sliderElem.style.width = origWidth; this.options.orientation = 'horizontal'; if (this.options.rtl) { this.stylePos = 'right'; } else { this.stylePos = 'left'; } this.mousePos = 'clientX'; this.sizePos = 'offsetWidth'; } // specific rtl class if (this.options.rtl) { this._addClass(this.sliderElem, 'slider-rtl'); } this._setTooltipPosition(); /* In case ticks are specified, overwrite the min and max bounds */ if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { if (!isMaxSet) { this.options.max = Math.max.apply(Math, this.options.ticks); } if (!isMinSet) { this.options.min = Math.min.apply(Math, this.options.ticks); } } if (Array.isArray(this.options.value)) { this.options.range = true; this._state.value = this.options.value; } else if (this.options.range) { // User wants a range, but value is not an array this._state.value = [this.options.value, this.options.max]; } else { this._state.value = this.options.value; } this.trackLow = sliderTrackLow || this.trackLow; this.trackSelection = sliderTrackSelection || this.trackSelection; this.trackHigh = sliderTrackHigh || this.trackHigh; if (this.options.selection === 'none') { this._addClass(this.trackLow, 'hide'); this._addClass(this.trackSelection, 'hide'); this._addClass(this.trackHigh, 'hide'); } else if (this.options.selection === 'after' || this.options.selection === 'before') { this._removeClass(this.trackLow, 'hide'); this._removeClass(this.trackSelection, 'hide'); this._removeClass(this.trackHigh, 'hide'); } this.handle1 = sliderMinHandle || this.handle1; this.handle2 = sliderMaxHandle || this.handle2; if (updateSlider === true) { // Reset classes this._removeClass(this.handle1, 'round triangle'); this._removeClass(this.handle2, 'round triangle hide'); for (i = 0; i < this.ticks.length; i++) { this._removeClass(this.ticks[i], 'round triangle hide'); } } var availableHandleModifiers = ['round', 'triangle', 'custom']; var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1; if (isValidHandleType) { this._addClass(this.handle1, this.options.handle); this._addClass(this.handle2, this.options.handle); for (i = 0; i < this.ticks.length; i++) { this._addClass(this.ticks[i], this.options.handle); } } this._state.offset = this._offset(this.sliderElem); this._state.size = this.sliderElem[this.sizePos]; this.setValue(this._state.value); /****************************************** Bind Event Listeners ******************************************/ // Bind keyboard handlers this.handle1Keydown = this._keydown.bind(this, 0); this.handle1.addEventListener("keydown", this.handle1Keydown, false); this.handle2Keydown = this._keydown.bind(this, 1); this.handle2.addEventListener("keydown", this.handle2Keydown, false); this.mousedown = this._mousedown.bind(this); this.touchstart = this._touchstart.bind(this); this.touchmove = this._touchmove.bind(this); if (this.touchCapable) { this.sliderElem.addEventListener("touchstart", this.touchstart, false); this.sliderElem.addEventListener("touchmove", this.touchmove, false); } this.sliderElem.addEventListener("mousedown", this.mousedown, false); // Bind window handlers this.resize = this._resize.bind(this); window.addEventListener("resize", this.resize, false); // Bind tooltip-related handlers if (this.options.tooltip === 'hide') { this._addClass(this.tooltip, 'hide'); this._addClass(this.tooltip_min, 'hide'); this._addClass(this.tooltip_max, 'hide'); } else if (this.options.tooltip === 'always') { this._showTooltip(); this._alwaysShowTooltip = true; } else { this.showTooltip = this._showTooltip.bind(this); this.hideTooltip = this._hideTooltip.bind(this); if (this.options.ticks_tooltip) { var callbackHandle = this._addTickListener(); //create handle1 listeners and store references in map var mouseEnter = callbackHandle.addMouseEnter(this, this.handle1); var mouseLeave = callbackHandle.addMouseLeave(this, this.handle1); this.handleCallbackMap.handle1 = { mouseEnter: mouseEnter, mouseLeave: mouseLeave }; //create handle2 listeners and store references in map mouseEnter = callbackHandle.addMouseEnter(this, this.handle2); mouseLeave = callbackHandle.addMouseLeave(this, this.handle2); this.handleCallbackMap.handle2 = { mouseEnter: mouseEnter, mouseLeave: mouseLeave }; } else { this.sliderElem.addEventListener("mouseenter", this.showTooltip, false); this.sliderElem.addEventListener("mouseleave", this.hideTooltip, false); if (this.touchCapable) { this.sliderElem.addEventListener("touchstart", this.showTooltip, false); this.sliderElem.addEventListener("touchmove", this.showTooltip, false); this.sliderElem.addEventListener("touchend", this.hideTooltip, false); } } this.handle1.addEventListener("focus", this.showTooltip, false); this.handle1.addEventListener("blur", this.hideTooltip, false); this.handle2.addEventListener("focus", this.showTooltip, false); this.handle2.addEventListener("blur", this.hideTooltip, false); if (this.touchCapable) { this.handle1.addEventListener("touchstart", this.showTooltip, false); this.handle1.addEventListener("touchmove", this.showTooltip, false); this.handle1.addEventListener("touchend", this.hideTooltip, false); this.handle2.addEventListener("touchstart", this.showTooltip, false); this.handle2.addEventListener("touchmove", this.showTooltip, false); this.handle2.addEventListener("touchend", this.hideTooltip, false); } } if (this.options.enabled) { this.enable(); } else { this.disable(); } } /************************************************* INSTANCE PROPERTIES/METHODS - Any methods bound to the prototype are considered part of the plugin's `public` interface **************************************************/ Slider.prototype = { _init: function _init() {}, // NOTE: Must exist to support bridget constructor: Slider, defaultOptions: { id: "", min: 0, max: 10, step: 1, precision: 0, orientation: 'horizontal', value: 5, range: false, selection: 'before', tooltip: 'show', tooltip_split: false, lock_to_ticks: false, handle: 'round', reversed: false, rtl: 'auto', enabled: true, formatter: function formatter(val) { if (Array.isArray(val)) { return val[0] + " : " + val[1]; } else { return val; } }, natural_arrow_keys: false, ticks: [], ticks_positions: [], ticks_labels: [], ticks_snap_bounds: 0, ticks_tooltip: false, scale: 'linear', focus: false, tooltip_position: null, labelledby: null, rangeHighlights: [] }, getElement: function getElement() { return this.sliderElem; }, getValue: function getValue() { if (this.options.range) { return this._state.value; } else { return this._state.value[0]; } }, setValue: function setValue(val, triggerSlideEvent, triggerChangeEvent) { if (!val) { val = 0; } var oldValue = this.getValue(); this._state.value = this._validateInputValue(val); var applyPrecision = this._applyPrecision.bind(this); if (this.options.range) { this._state.value[0] = applyPrecision(this._state.value[0]); this._state.value[1] = applyPrecision(this._state.value[1]); if (this.ticksAreValid && this.options.lock_to_ticks) { this._state.value[0] = this.options.ticks[this._getClosestTickIndex(this._state.value[0])]; this._state.value[1] = this.options.ticks[this._getClosestTickIndex(this._state.value[1])]; } this._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0])); this._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1])); } else { this._state.value = applyPrecision(this._state.value); if (this.ticksAreValid && this.options.lock_to_ticks) { this._state.value = this.options.ticks[this._getClosestTickIndex(this._state.value)]; } this._state.value = [Math.max(this.options.min, Math.min(this.options.max, this._state.value))]; this._addClass(this.handle2, 'hide'); if (this.options.selection === 'after') { this._state.value[1] = this.options.max; } else { this._state.value[1] = this.options.min; } } // Determine which ticks the handle(s) are set at (if applicable) this._setTickIndex(); if (this.options.max > this.options.min) { this._state.percentage = [this._toPercentage(this._state.value[0]), this._toPercentage(this._state.value[1]), this.options.step * 100 / (this.options.max - this.options.min)]; } else { this._state.percentage = [0, 0, 100]; } this._layout(); var newValue = this.options.range ? this._state.value : this._state.value[0]; this._setDataVal(newValue); if (triggerSlideEvent === true) { this._trigger('slide', newValue); } var hasChanged = false; if (Array.isArray(newValue)) { hasChanged = oldValue[0] !== newValue[0] || oldValue[1] !== newValue[1]; } else { hasChanged = oldValue !== newValue; } if (hasChanged && triggerChangeEvent === true) { this._trigger('change', { oldValue: oldValue, newValue: newValue }); } return this; }, destroy: function destroy() { // Remove event handlers on slider elements this._removeSliderEventHandlers(); // Remove the slider from the DOM this.sliderElem.parentNode.removeChild(this.sliderElem); /* Show original <input> element */ this.element.style.display = ""; // Clear out custom event bindings this._cleanUpEventCallbacksMap(); // Remove data values this.element.removeAttribute("data"); // Remove JQuery handlers/data if ($) { this._unbindJQueryEventHandlers(); if (autoRegisterNamespace === NAMESPACE_MAIN) { this.$element.removeData(autoRegisterNamespace); } this.$element.removeData(NAMESPACE_ALTERNATE); } }, disable: function disable() { this._state.enabled = false; this.handle1.removeAttribute("tabindex"); this.handle2.removeAttribute("tabindex"); this._addClass(this.sliderElem, 'slider-disabled'); this._trigger('slideDisabled'); return this; }, enable: function enable() { this._state.enabled = true; this.handle1.setAttribute("tabindex", 0); this.handle2.setAttribute("tabindex", 0); this._removeClass(this.sliderElem, 'slider-disabled'); this._trigger('slideEnabled'); return this; }, toggle: function toggle() { if (this._state.enabled) { this.disable(); } else { this.enable(); } return this; }, isEnabled: function isEnabled() { return this._state.enabled; }, on: function on(evt, callback) { this._bindNonQueryEventHandler(evt, callback); return this; }, off: function off(evt, callback) { if ($) { this.$element.off(evt, callback); this.$sliderElem.off(evt, callback); } else { this._unbindNonQueryEventHandler(evt, callback); } }, getAttribute: function getAttribute(attribute) { if (attribute) { return this.options[attribute]; } else { return this.options; } }, setAttribute: function setAttribute(attribute, value) { this.options[attribute] = value; return this; }, refresh: function refresh(options) { var currentValue = this.getValue(); this._removeSliderEventHandlers(); createNewSlider.call(this, this.element, this.options); // Don't reset slider's value on refresh if `useCurrentValue` is true if (options && options.useCurrentValue === true) { this.setValue(currentValue); } if ($) { // Bind new instance of slider to the element if (autoRegisterNamespace === NAMESPACE_MAIN) { $.data(this.element, NAMESPACE_MAIN, this); $.data(this.element, NAMESPACE_ALTERNATE, this); } else { $.data(this.element, NAMESPACE_ALTERNATE, this); } } return this; }, relayout: function relayout() { this._resize(); return this; }, /******************************+ HELPERS - Any method that is not part of the public interface. - Place it underneath this comment block and write its signature like so: _fnName : function() {...} ********************************/ _removeTooltipListener: function _removeTooltipListener(event, handler) { this.handle1.removeEventListener(event, handler, false); this.handle2.removeEventListener(event, handler, false); }, _removeSliderEventHandlers: function _removeSliderEventHandlers() { // Remove keydown event listeners this.handle1.removeEventListener("keydown", this.handle1Keydown, false); this.handle2.removeEventListener("keydown", this.handle2Keydown, false); //remove the listeners from the ticks and handles if they had their own listeners if (this.options.ticks_tooltip) { var ticks = this.ticksContainer.getElementsByClassName('slider-tick'); for (var i = 0; i < ticks.length; i++) { ticks[i].removeEventListener('mouseenter', this.ticksCallbackMap[i].mouseEnter, false); ticks[i].removeEventListener('mouseleave', this.ticksCallbackMap[i].mouseLeave, false); } if (this.handleCallbackMap.handle1 && this.handleCallbackMap.handle2) { this.handle1.removeEventListener('mouseenter', this.handleCallbackMap.handle1.mouseEnter, false); this.handle2.removeEventListener('mouseenter', this.handleCallbackMap.handle2.mouseEnter, false); this.handle1.removeEventListener('mouseleave', this.handleCallbackMap.handle1.mouseLeave, false); this.handle2.removeEventListener('mouseleave', this.handleCallbackMap.handle2.mouseLeave, false); } } this.handleCallbackMap = null; this.ticksCallbackMap = null; if (this.showTooltip) { this._removeTooltipListener("focus", this.showTooltip); } if (this.hideTooltip) { this._removeTooltipListener("blur", this.hideTooltip); } // Remove event listeners from sliderElem if (this.showTooltip) { this.sliderElem.removeEventListener("mouseenter", this.showTooltip, false); } if (this.hideTooltip) { this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, false); } this.sliderElem.removeEventListener("mousedown", this.mousedown, false); if (this.touchCapable) { // Remove touch event listeners from handles if (this.showTooltip) { this.handle1.removeEventListener("touchstart", this.showTooltip, false); this.handle1.removeEventListener("touchmove", this.showTooltip, false); this.handle2.removeEventListener("touchstart", this.showTooltip, false); this.handle2.removeEventListener("touchmove", this.showTooltip, false); } if (this.hideTooltip) { this.handle1.removeEventListener("touchend", this.hideTooltip, false); this.handle2.removeEventListener("touchend", this.hideTooltip, false); } // Remove event listeners from sliderElem if (this.showTooltip) { this.sliderElem.removeEventListener("touchstart", this.showTooltip, false); this.sliderElem.removeEventListener("touchmove", this.showTooltip, false); } if (this.hideTooltip) { this.sliderElem.removeEventListener("touchend", this.hideTooltip, false); } this.sliderElem.removeEventListener("touchstart", this.touchstart, false); this.sliderElem.removeEventListener("touchmove", this.touchmove, false); } // Remove window event listener window.removeEventListener("resize", this.resize, false); }, _bindNonQueryEventHandler: function _bindNonQueryEventHandler(evt, callback) { if (this.eventToCallbackMap[evt] === undefined) { this.eventToCallbackMap[evt] = []; } this.eventToCallbackMap[evt].push(callback); }, _unbindNonQueryEventHandler: function _unbindNonQueryEventHandler(evt, callback) { var callbacks = this.eventToCallbackMap[evt]; if (callbacks !== undefined) { for (var i = 0; i < callbacks.length; i++) { if (callbacks[i] === callback) { callbacks.splice(i, 1); break; } } } }, _cleanUpEventCallbacksMap: function _cleanUpEventCallbacksMap() { var eventNames = Object.keys(this.eventToCallbackMap); for (var i = 0; i < eventNames.length; i++) { var eventName = eventNames[i]; delete this.eventToCallbackMap[eventName]; } }, _showTooltip: function _showTooltip() { if (this.options.tooltip_split === false) { this._addClass(this.tooltip, 'in'); this.tooltip_min.style.display = 'none'; this.tooltip_max.style.display = 'none'; } else { this._addClass(this.tooltip_min, 'in'); this._addClass(this.tooltip_max, 'in'); this.tooltip.style.display = 'none'; } this._state.over = true; }, _hideTooltip: function _hideTooltip() { if (this._state.inDrag === false && this._alwaysShowTooltip !== true) { this._removeClass(this.tooltip, 'in'); this._removeClass(this.tooltip_min, 'in'); this._removeClass(this.tooltip_max, 'in'); } this._state.over = false; }, _setToolTipOnMouseOver: function _setToolTipOnMouseOver(tempState) { var self = this; var formattedTooltipVal = this.options.formatter(!tempState ? this._state.value[0] : tempState.value[0]); var positionPercentages = !tempState ? getPositionPercentages(this._state, this.options.reversed) : getPositionPercentages(tempState, this.options.reversed); this._setText(this.tooltipInner, formattedTooltipVal); this.tooltip.style[this.stylePos] = positionPercentages[0] + "%"; function getPositionPercentages(state, reversed) { if (reversed) { return [100 - state.percentage[0], self.options.range ? 100 - state.percentage[1] : state.percentage[1]]; } return [state.percentage[0], state.percentage[1]]; } }, _copyState: function _copyState() { return { value: [this._state.value[0], this._state.value[1]], enabled: this._state.enabled, offset: this._state.offset, size: this._state.size, percentage: [this._state.percentage[0], this._state.percentage[1], this._state.percentage[2]], inDrag: this._state.inDrag, over: this._state.over, // deleted or null'd keys dragged: this._state.dragged, keyCtrl: this._state.keyCtrl }; }, _addTickListener: function _addTickListener() { return { addMouseEnter: function addMouseEnter(reference, element, index) { var enter = function enter() { var tempState = reference._copyState(); // Which handle is being hovered over? var val = element === reference.handle1 ? tempState.value[0] : tempState.value[1]; var per = void 0; // Setup value and percentage for tick's 'mouseenter' if (index !== undefined) { val = reference.options.ticks[index]; per = reference.options.ticks_positions.length > 0 && reference.options.ticks_positions[index] || reference._toPercentage(reference.options.ticks[index]); } else { per = reference._toPercentage(val); } tempState.value[0] = val; tempState.percentage[0] = per; reference._setToolTipOnMouseOver(tempState); reference._showTooltip(); }; element.addEventListener("mouseenter", enter, false); return enter; }, addMouseLeave: function addMouseLeave(reference, element) { var leave = function leave() { reference._hideTooltip(); }; element.addEventListener("mouseleave", leave, false); return leave; } }; }, _layout: function _layout() { var positionPercentages; var formattedValue; if (this.options.reversed) { positionPercentages = [100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]]; } else { positionPercentages = [this._state.percentage[0], this._state.percentage[1]]; } this.handle1.style[this.stylePos] = positionPercentages[0] + "%"; this.handle1.setAttribute('aria-valuenow', this._state.value[0]); formattedValue = this.options.formatter(this._state.value[0]); if (isNaN(formattedValue)) { this.handle1.setAttribute('aria-valuetext', formattedValue); } else { this.handle1.removeAttribute('aria-valuetext'); } this.handle2.style[this.stylePos] = positionPercentages[1] + "%"; this.handle2.setAttribute('aria-valuenow', this._state.value[1]); formattedValue = this.options.formatter(this._state.value[1]); if (isNaN(formattedValue)) { this.handle2.setAttribute('aria-valuetext', formattedValue); } else { this.handle2.removeAttribute('aria-valuetext'); } /* Position highlight range elements */ if (this.rangeHighlightElements.length > 0 && Array.isArray(this.options.rangeHighlights) && this.options.rangeHighlights.length > 0) { for (var _i = 0; _i < this.options.rangeHighlights.length; _i++) { var startPercent = this._toPercentage(this.options.rangeHighlights[_i].start); var endPercent = this._toPercentage(this.options.rangeHighlights[_i].end); if (this.options.reversed) { var sp = 100 - endPercent; endPercent = 100 - startPercent; startPercent = sp; } var currentRange = this._createHighlightRange(startPercent, endPercent); if (currentRange) { if (this.options.orientation === 'vertical') { this.rangeHighlightElements[_i].style.top = currentRange.start + "%"; this.rangeHighlightElements[_i].style.height = currentRange.size + "%"; } else { if (this.options.rtl) { this.rangeHighlightElements[_i].style.right = currentRange.start + "%"; } else { this.rangeHighlightElements[_i].style.left = currentRange.start + "%"; } this.rangeHighlightElements[_i].style.width = currentRange.size + "%"; } } else { this.rangeHighlightElements[_i].style.display = "none"; } } } /* Position ticks and labels */ if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { var styleSize = this.options.orientation === 'vertical' ? 'height' : 'width'; var styleMargin; if (this.options.orientation === 'vertical') { styleMargin = 'marginTop'; } else { if (this.options.rtl) { styleMargin = 'marginRight'; } else { styleMargin = 'marginLeft'; } } var labelSize = this._state.size / (this.options.ticks.length - 1); if (this.tickLabelContainer) { var extraMargin = 0; if (this.options.ticks_positions.length === 0) { if (this.options.orientation !== 'vertical') { this.tickLabelContainer.style[styleMargin] = -labelSize / 2 + "px"; } extraMargin = this.tickLabelContainer.offsetHeight; } else { /* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */ for (i = 0; i < this.tickLabelContainer.childNodes.length; i++) { if (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) { extraMargin = this.tickLabelContainer.childNodes[i].offsetHeight; } } } if (this.options.orientation === 'horizontal') { this.sliderElem.style.marginBottom = extraMargin + "px"; } } for (var i = 0; i < this.options.ticks.length; i++) { var percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]); if (this.options.reversed) { percentage = 100 - percentage; } this.ticks[i].style[this.stylePos] = percentage + "%"; /* Set class labels to denote whether ticks are in the selection */ this._removeClass(this.ticks[i], 'in-selection'); if (!this.options.range) { if (this.options.selection === 'after' && percentage >= positionPercentages[0]) { this._addClass(this.ticks[i], 'in-selection'); } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) { this._addClass(this.ticks[i], 'in-selection'); } } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) { this._addClass(this.ticks[i], 'in-selection'); } if (this.tickLabels[i]) { this.tickLabels[i].style[styleSize] = labelSize + "px"; if (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) { this.tickLabels[i].style.position = 'absolute'; this.tickLabels[i].style[this.stylePos] = percentage + "%"; this.tickLabels[i].style[styleMargin] = -labelSize / 2 + 'px'; } else if (this.options.orientation === 'vertical') { if (this.options.rtl) { this.tickLabels[i].style['marginRight'] = this.sliderElem.offsetWidth + "px"; } else { this.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + "px"; } this.tickLabelContainer.style[styleMargin] = this.sliderElem.offsetWidth / 2 * -1 + 'px'; } /* Set class labels to indicate tick labels are in the selection or selected */ this._removeClass(this.tickLabels[i], 'label-in-selection label-is-selection'); if (!this.options.range) { if (this.options.selection === 'after' && percentage >= positionPercentages[0]) { this._addClass(this.tickLabels[i], 'label-in-selection'); } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) { this._addClass(this.tickLabels[i], 'label-in-selection'); } if (percentage === positionPercentages[0]) { this._addClass(this.tickLabels[i], 'label-is-selection'); } } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) { this._addClass(this.tickLabels[i], 'label-in-selection'); if (percentage === positionPercentages[0] || positionPercentages[1]) { this._addClass(this.tickLabels[i], 'label-is-selection'); } } } } } var formattedTooltipVal; if (this.options.range) { formattedTooltipVal = this.options.formatter(this._state.value); this._setText(this.tooltipInner, formattedTooltipVal); this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0]) / 2 + "%"; var innerTooltipMinText = this.options.formatter(this._state.value[0]); this._setText(this.tooltipInner_min, innerTooltipMinText); var innerTooltipMaxText = this.options.formatter(this._state.value[1]); this._setText(this.tooltipInner_max, innerTooltipMaxText); this.tooltip_min.style[this.stylePos] = positionPercentages[0] + "%"; this.tooltip_max.style[this.stylePos] = positionPercentages[1] + "%"; } else { formattedTooltipVal = this.options.formatter(this._state.value[0]); this._setText(this.tooltipInner, formattedTooltipVal); this.tooltip.style[this.stylePos] = positionPercentages[0] + "%"; } if (this.options.orientation === 'vertical') { this.trackLow.style.top = '0'; this.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; this.trackHigh.style.bottom = '0'; this.trackHigh.style.height = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; } else { if (this.stylePos === 'right') { this.trackLow.style.right = '0'; } else { this.trackLow.style.left = '0'; } this.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; if (this.stylePos === 'right') { this.trackSelection.style.right = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; } else { this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) + '%'; } this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; if (this.stylePos === 'right') { this.trackHigh.style.left = '0'; } else { this.trackHigh.style.right = '0'; } this.trackHigh.style.width = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%'; var offset_min = this.tooltip_min.getBoundingClientRect(); var offset_max = this.tooltip_max.getBoundingClientRect(); if (this.options.tooltip_position === 'bottom') { if (offset_min.right > offset_max.left) { this._removeClass(this.tooltip_max, 'bottom'); this._addClass(this.tooltip_max, 'top'); this.tooltip_max.style.top = ''; this.tooltip_max.style.bottom = 22 + 'px'; } else { this._removeClass(this.tooltip_max, 'top'); this._addClass(this.tooltip_max, 'bottom'); this.tooltip_max.style.top = this.tooltip_min.style.top; this.tooltip_max.style.bottom = ''; } } else { if (offset_min.right > offset_max.left) { this._removeClass(this.tooltip_max, 'top'); this._addClass(this.tooltip_max, 'bottom'); this.tooltip_max.style.top = 18 + 'px'; } else { this._removeClass(this.tooltip_max, 'bottom'); this._addClass(this.tooltip_max, 'top'); this.tooltip_max.style.top = this.tooltip_min.style.top; } } } }, _createHighlightRange: function _createHighlightRange(start, end) { if (this._isHighlightRange(start, end)) { if (start > end) { return { 'start': end, 'size': start - end }; } return { 'start': start, 'size': end - start }; } return null; }, _isHighlightRange: function _isHighlightRange(start, end) { if (0 <= start && start <= 100 && 0 <= end && end <= 100) { return true; } else { return false; } }, _resize: function _resize(ev) { /*jshint unused:false*/ this._state.offset = this._offset(this.sliderElem); this._state.size = this.sliderElem[this.sizePos]; this._layout(); }, _removeProperty: function _removeProperty(element, prop) { if (element.style.removeProperty) { element.style.removeProperty(prop); } else { element.style.removeAttribute(prop); } }, _mousedown: function _mousedown(ev) { if (!this._state.enabled) { return false; } if (ev.preventDefault) { ev.preventDefault(); } this._state.offset = this._offset(this.sliderElem); this._state.size = this.sliderElem[this.sizePos]; var percentage = this._getPercentage(ev); if (this.options.range) { var diff1 = Math.abs(this._state.percentage[0] - percentage); var diff2 = Math.abs(this._state.percentage[1] - percentage); this._state.dragged = diff1 < diff2 ? 0 : 1; this._adjustPercentageForRangeSliders(percentage); } else { this._state.dragged = 0; } this._state.percentage[this._state.dragged] = percentage; if (this.touchCapable) { document.removeEventListener("touchmove", this.mousemove, false); document.removeEventListener("touchend", this.mouseup, false); } if (this.mousemove) { document.removeEventListener("mousemove", this.mousemove, false); } if (this.mouseup) { document.removeEventListener("mouseup", this.mouseup, false); } this.mousemove = this._mousemove.bind(this); this.mouseup = this._mouseup.bind(this); if (this.touchCapable) { // Touch: Bind touch events: document.addEventListener("touchmove", this.mousemove, false); document.addEventListener("touchend", this.mouseup, false); } // Bind mouse events: document.addEventListener("mousemove", this.mousemove, false); document.addEventListener("mouseup", this.mouseup, false); this._state.inDrag = true; var newValue = this._calculateValue(); this._trigger('slideStart', newValue); this.setValue(newValue, false, true); ev.returnValue = false; if (this.options.focus) { this._triggerFocusOnHandle(this._state.dragged); } return true; }, _touchstart: function _touchstart(ev) { this._mousedown(ev); }, _triggerFocusOnHandle: function _triggerFocusOnHandle(handleIdx) { if (handleIdx === 0) { this.handle1.focus(); } if (handleIdx === 1) { this.handle2.focus(); } }, _keydown: function _keydown(handleIdx, ev) { if (!this._state.enabled) { return false; } var dir; switch (ev.keyCode) { case 37: // left case 40: // down dir = -1; break; case 39: // right case 38: // up dir = 1; break; } if (!dir) { return; } // use natural arrow keys instead of from min to max if (this.options.natural_arrow_keys) { var isHorizontal = this.options.orientation === 'horizontal'; var isVertical = this.options.orientation === 'vertical'; var isRTL = this.options.rtl; var isReversed = this.options.reversed; if (isHorizontal) { if (isRTL) { if (!isReversed) { dir = -dir; } } else { if (isReversed) { dir = -dir; } } } else if (isVertical) { if (!isReversed) { dir = -dir; } } } var val; if (this.ticksAreValid && this.options.lock_to_ticks) { var index = void 0; // Find tick index that handle 1/2 is currently on index = this.options.ticks.indexOf(this._state.value[handleIdx]); if (index === -1) { // Set default to first tick index = 0; window.console.warn('(lock_to_ticks) _keydown: index should not be -1'); } index += dir; index = Math.max(0, Math.min(this.options.ticks.length - 1, index)); val = this.options.ticks[index]; } else { val = this._state.value[handleIdx] + dir * this.options.step; } var percentage = this._toPercentage(val); this._state.keyCtrl = handleIdx; if (this.options.range) { this._adjustPercentageForRangeSliders(percentage); var val1 = !this._state.keyCtrl ? val : this._state.value[0]; var val2 = this._state.keyCtrl ? val : this._state.value[1]; // Restrict values within limits val = [Math.max(this.options.min, Math.min(this.options.max, val1)), Math.max(this.options.min, Math.min(this.options.max, val2))]; } else { val = Math.max(this.options.min, Math.min(this.options.max, val)); } this._trigger('slideStart', val); this.setValue(val, true, true); this._trigger('slideStop', val); this._pauseEvent(ev); delete this._state.keyCtrl; return false; }, _pauseEvent: function _pauseEvent(ev) { if (ev.stopPropagation) { ev.stopPropagation(); } if (ev.preventDefault) { ev.preventDefault(); } ev.cancelBubble = true; ev.returnValue = false; }, _mousemove: function _mousemove(ev) { if (!this._state.enabled) { return false; } var percentage = this._getPercentage(ev); this._adjustPercentageForRangeSliders(percentage); this._state.percentage[this._state.dragged] = percentage; var val = this._calculateValue(true); this.setValue(val, true, true); return false; }, _touchmove: function _touchmove(ev) { if (ev.changedTouches === undefined) { return; } // Prevent page from scrolling and only drag the slider if (ev.preventDefault) { ev.preventDefault(); } }, _adjustPercentageForRangeSliders: function _adjustPercentageForRangeSliders(percentage) { if (this.options.range) { var precision = this._getNumDigitsAfterDecimalPlace(percentage); precision = precision ? precision - 1 : 0; var percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision); if (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) { this._state.percentage[0] = this._state.percentage[1]; this._state.dragged = 1; } else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) { this._state.percentage[1] = this._state.percentage[0]; this._state.dragged = 0; } else if (this._state.keyCtrl === 0 && this._toPercentage(this._state.value[1]) < percentage) { this._state.percentage[0] = this._state.percentage[1]; this._state.keyCtrl = 1; this.handle2.focus(); } else if (this._state.keyCtrl === 1 && this._toPercentage(this._state.value[0]) > percentage) { this._state.percentage[1] = this._state.percentage[0]; this._state.keyCtrl = 0; this.handle1.focus(); } } }, _mouseup: function _mouseup(ev) { if (!this._state.enabled) { return false; } var percentage = this._getPercentage(ev); this._adjustPercentageForRangeSliders(percentage); this._state.percentage[this._state.dragged] = percentage; if (this.touchCapable) { // Touch: Unbind touch event handlers: document.removeEventListener("touchmove", this.mousemove, false); document.removeEventListener("touchend", this.mouseup, false); } // Unbind mouse event handlers: document.removeEventListener("mousemove", this.mousemove, false); document.removeEventListener("mouseup", this.mouseup, false); this._state.inDrag = false; if (this._state.over === false) { this._hideTooltip(); } var val = this._calculateValue(true); this.setValue(val, false, true); this._trigger('slideStop', val); // No longer need 'dragged' after mouse up this._state.dragged = null; return false; }, _setValues: function _setValues(index, val) { var comp = 0 === index ? 0 : 100; if (this._state.percentage[index] !== comp) { val.data[index] = this._toValue(this._state.percentage[index]); val.data[index] = this._applyPrecision(val.data[index]); } }, _calculateValue: function _calculateValue(snapToClosestTick) { var val = {}; if (this.options.range) { val.data = [this.options.min, this.options.max]; this._setValues(0, val); this._setValues(1, val); if (snapToClosestTick) { val.data[0] = this._snapToClosestTick(val.data[0]); val.data[1] = this._snapToClosestTick(val.data[1]); } } else { val.data = this._toValue(this._state.percentage[0]); val.data = parseFloat(val.data); val.data = this._applyPrecision(val.data); if (snapToClosestTick) { val.data = this._snapToClosestTick(val.data); } } return val.data; }, _snapToClosestTick: function _snapToClosestTick(val) { var min = [val, Infinity]; for (var i = 0; i < this.options.ticks.length; i++) { var diff = Math.abs(this.options.ticks[i] - val); if (diff <= min[1]) { min = [this.options.ticks[i], diff]; } } if (min[1] <= this.options.ticks_snap_bounds) { return min[0]; } return val; }, _applyPrecision: function _applyPrecision(val) { var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step); return this._applyToFixedAndParseFloat(val, precision); }, _getNumDigitsAfterDecimalPlace: function _getNumDigitsAfterDecimalPlace(num) { var match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); if (!match) { return 0; } return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); }, _applyToFixedAndParseFloat: function _applyToFixedAndParseFloat(num, toFixedInput) { var truncatedNum = num.toFixed(toFixedInput); return parseFloat(truncatedNum); }, /* Credits to Mike Samuel for the following method! Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number */ _getPercentage: function _getPercentage(ev) { if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove' || ev.type === 'touchend')) { ev = ev.changedTouches[0]; } var eventPosition = ev[this.mousePos]; var sliderOffset = this._state.offset[this.stylePos]; var distanceToSlide = eventPosition - sliderOffset; if (this.stylePos === 'right') { distanceToSlide = -distanceToSlide; } // Calculate what percent of the length the slider handle has slid var percentage = distanceToSlide / this._state.size * 100; percentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2]; if (this.options.reversed) { percentage = 100 - percentage; } // Make sure the percent is within the bounds of the slider. // 0% corresponds to the 'min' value of the slide // 100% corresponds to the 'max' value of the slide return Math.max(0, Math.min(100, percentage)); }, _validateInputValue: function _validateInputValue(val) { if (!isNaN(+val)) { return +val; } else if (Array.isArray(val)) { this._validateArray(val); return val; } else { throw new Error(ErrorMsgs.formatInvalidInputErrorMsg(val)); } }, _validateArray: function _validateArray(val) { for (var i = 0; i < val.length; i++) { var input = val[i]; if (typeof input !== 'number') { throw new Error(ErrorMsgs.formatInvalidInputErrorMsg(input)); } } }, _setDataVal: function _setDataVal(val) { this.element.setAttribute('data-value', val); this.element.setAttribute('value', val); this.element.value = val; }, _trigger: function _trigger(evt, val) { val = val || val === 0 ? val : undefined; var callbackFnArray = this.eventToCallbackMap[evt]; if (callbackFnArray && callbackFnArray.length) { for (var i = 0; i < callbackFnArray.length; i++) { var callbackFn = callbackFnArray[i]; callbackFn(val); } } /* If JQuery exists, trigger JQuery events */ if ($) { this._triggerJQueryEvent(evt, val); } }, _triggerJQueryEvent: function _triggerJQueryEvent(evt, val) { var eventData = { type: evt, value: val }; this.$element.trigger(eventData); this.$sliderElem.trigger(eventData); }, _unbindJQueryEventHandlers: function _unbindJQueryEventHandlers() { this.$element.off(); this.$sliderElem.off(); }, _setText: function _setText(element, text) { if (typeof element.textContent !== "undefined") { element.textContent = text; } else if (typeof element.innerText !== "undefined") { element.innerText = text; } }, _removeClass: function _removeClass(element, classString) { var classes = classString.split(" "); var newClasses = element.className; for (var i = 0; i < classes.length; i++) { var classTag = classes[i]; var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); newClasses = newClasses.replace(regex, " "); } element.className = newClasses.trim(); }, _addClass: function _addClass(element, classString) { var classes = classString.split(" "); var newClasses = element.className; for (var i = 0; i < classes.length; i++) { var classTag = classes[i]; var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); var ifClassExists = regex.test(newClasses); if (!ifClassExists) { newClasses += " " + classTag; } } element.className = newClasses.trim(); }, _offsetLeft: function _offsetLeft(obj) { return obj.getBoundingClientRect().left; }, _offsetRight: function _offsetRight(obj) { return obj.getBoundingClientRect().right; }, _offsetTop: function _offsetTop(obj) { var offsetTop = obj.offsetTop; while ((obj = obj.offsetParent) && !isNaN(obj.offsetTop)) { offsetTop += obj.offsetTop; if (obj.tagName !== 'BODY') { offsetTop -= obj.scrollTop; } } return offsetTop; }, _offset: function _offset(obj) { return { left: this._offsetLeft(obj), right: this._offsetRight(obj), top: this._offsetTop(obj) }; }, _css: function _css(elementRef, styleName, value) { if ($) { $.style(elementRef, styleName, value); } else { var style = styleName.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function (all, letter) { return letter.toUpperCase(); }); elementRef.style[style] = value; } }, _toValue: function _toValue(percentage) { return this.options.scale.toValue.apply(this, [percentage]); }, _toPercentage: function _toPercentage(value) { return this.options.scale.toPercentage.apply(this, [value]); }, _setTooltipPosition: function _setTooltipPosition() { var tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max]; if (this.options.orientation === 'vertical') { var tooltipPos; if (this.options.tooltip_position) { tooltipPos = this.options.tooltip_position; } else { if (this.options.rtl) { tooltipPos = 'left'; } else { tooltipPos = 'right'; } } var oppositeSide = tooltipPos === 'left' ? 'right' : 'left'; tooltips.forEach(function (tooltip) { this._addClass(tooltip, tooltipPos); tooltip.style[oppositeSide] = '100%'; }.bind(this)); } else if (this.options.tooltip_position === 'bottom') { tooltips.forEach(function (tooltip) { this._addClass(tooltip, 'bottom'); tooltip.style.top = 22 + 'px'; }.bind(this)); } else { tooltips.forEach(function (tooltip) { this._addClass(tooltip, 'top'); tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px'; }.bind(this)); } }, _getClosestTickIndex: function _getClosestTickIndex(val) { var difference = Math.abs(val - this.options.ticks[0]); var index = 0; for (var i = 0; i < this.options.ticks.length; ++i) { var d = Math.abs(val - this.options.ticks[i]); if (d < difference) { difference = d; index = i; } } return index; }, /** * Attempts to find the index in `ticks[]` the slider values are set at. * The indexes can be -1 to indicate the slider value is not set at a value in `ticks[]`. */ _setTickIndex: function _setTickIndex() { if (this.ticksAreValid) { this._state.tickIndex = [this.options.ticks.indexOf(this._state.value[0]), this.options.ticks.indexOf(this._state.value[1])]; } } }; /********************************* Attach to global namespace *********************************/ if ($ && $.fn) { if (!$.fn.slider) { $.bridget(NAMESPACE_MAIN, Slider); autoRegisterNamespace = NAMESPACE_MAIN; } else { if (windowIsDefined) { window.console.warn("bootstrap-slider.js - WARNING: $.fn.slider namespace is already bound. Use the $.fn.bootstrapSlider namespace instead."); } autoRegisterNamespace = NAMESPACE_ALTERNATE; } $.bridget(NAMESPACE_ALTERNATE, Slider); // Auto-Register data-provide="slider" Elements $(function () { $("input[data-provide=slider]")[autoRegisterNamespace](); }); } })($); return Slider; }); AdminLTE/plugins/seiyria-bootstrap-slider/bootstrap-slider.min.js 0000644 00000113353 15002261751 0021204 0 ustar 00 /*! ======================================================= VERSION 10.6.2 ========================================================= */ "use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},windowIsDefined="object"===("undefined"==typeof window?"undefined":_typeof(window));!function(a){if("function"==typeof define&&define.amd)define(["jquery"],a);else if("object"===("undefined"==typeof module?"undefined":_typeof(module))&&module.exports){var b;try{b=require("jquery")}catch(c){b=null}module.exports=a(b)}else window&&(window.Slider=a(window.jQuery))}(function(a){var b="slider",c="bootstrapSlider";windowIsDefined&&!window.console&&(window.console={}),windowIsDefined&&!window.console.log&&(window.console.log=function(){}),windowIsDefined&&!window.console.warn&&(window.console.warn=function(){});var d;return function(a){function b(){}function c(a){function c(b){b.prototype.option||(b.prototype.option=function(b){a.isPlainObject(b)&&(this.options=a.extend(!0,this.options,b))})}function e(b,c){a.fn[b]=function(e){if("string"==typeof e){for(var g=d.call(arguments,1),h=0,i=this.length;i>h;h++){var j=this[h],k=a.data(j,b);if(k)if(a.isFunction(k[e])&&"_"!==e.charAt(0)){var l=k[e].apply(k,g);if(void 0!==l&&l!==k)return l}else f("no such method '"+e+"' for "+b+" instance");else f("cannot call methods on "+b+" prior to initialization; attempted to call '"+e+"'")}return this}var m=this.map(function(){var d=a.data(this,b);return d?(d.option(e),d._init()):(d=new c(this,e),a.data(this,b,d)),a(this)});return 1===m.length?m[0]:m}}if(a){var f="undefined"==typeof console?b:function(a){console.error(a)};return a.bridget=function(a,b){c(b),e(a,b)},a.bridget}}var d=Array.prototype.slice;c(a)}(a),function(a){function e(b,c){function d(a,b){var c="data-slider-"+b.replace(/_/g,"-"),d=a.getAttribute(c);try{return JSON.parse(d)}catch(e){return d}}this._state={value:null,enabled:null,offset:null,size:null,percentage:null,inDrag:!1,over:!1,tickIndex:null},this.ticksCallbackMap={},this.handleCallbackMap={},"string"==typeof b?this.element=document.querySelector(b):b instanceof HTMLElement&&(this.element=b),c=c?c:{};for(var e=Object.keys(this.defaultOptions),f=c.hasOwnProperty("min"),g=c.hasOwnProperty("max"),i=0;i<e.length;i++){var j=e[i],k=c[j];k="undefined"!=typeof k?k:d(this.element,j),k=null!==k?k:this.defaultOptions[j],this.options||(this.options={}),this.options[j]=k}if(this.ticksAreValid=Array.isArray(this.options.ticks)&&this.options.ticks.length>0,this.ticksAreValid||(this.options.lock_to_ticks=!1),"auto"===this.options.rtl){var l=window.getComputedStyle(this.element);null!=l?this.options.rtl="rtl"===l.direction:this.options.rtl="rtl"===this.element.style.direction}"vertical"!==this.options.orientation||"top"!==this.options.tooltip_position&&"bottom"!==this.options.tooltip_position?"horizontal"!==this.options.orientation||"left"!==this.options.tooltip_position&&"right"!==this.options.tooltip_position||(this.options.tooltip_position="top"):this.options.rtl?this.options.tooltip_position="left":this.options.tooltip_position="right";var m,n,o,p,q,r=this.element.style.width,s=!1,t=this.element.parentNode;if(this.sliderElem)s=!0;else{this.sliderElem=document.createElement("div"),this.sliderElem.className="slider";var u=document.createElement("div");u.className="slider-track",n=document.createElement("div"),n.className="slider-track-low",m=document.createElement("div"),m.className="slider-selection",o=document.createElement("div"),o.className="slider-track-high",p=document.createElement("div"),p.className="slider-handle min-slider-handle",p.setAttribute("role","slider"),p.setAttribute("aria-valuemin",this.options.min),p.setAttribute("aria-valuemax",this.options.max),q=document.createElement("div"),q.className="slider-handle max-slider-handle",q.setAttribute("role","slider"),q.setAttribute("aria-valuemin",this.options.min),q.setAttribute("aria-valuemax",this.options.max),u.appendChild(n),u.appendChild(m),u.appendChild(o),this.rangeHighlightElements=[];var v=this.options.rangeHighlights;if(Array.isArray(v)&&v.length>0)for(var w=0;w<v.length;w++){var x=document.createElement("div"),y=v[w]["class"]||"";x.className="slider-rangeHighlight slider-selection "+y,this.rangeHighlightElements.push(x),u.appendChild(x)}var z=Array.isArray(this.options.labelledby);if(z&&this.options.labelledby[0]&&p.setAttribute("aria-labelledby",this.options.labelledby[0]),z&&this.options.labelledby[1]&&q.setAttribute("aria-labelledby",this.options.labelledby[1]),!z&&this.options.labelledby&&(p.setAttribute("aria-labelledby",this.options.labelledby),q.setAttribute("aria-labelledby",this.options.labelledby)),this.ticks=[],Array.isArray(this.options.ticks)&&this.options.ticks.length>0){for(this.ticksContainer=document.createElement("div"),this.ticksContainer.className="slider-tick-container",i=0;i<this.options.ticks.length;i++){var A=document.createElement("div");if(A.className="slider-tick",this.options.ticks_tooltip){var B=this._addTickListener(),C=B.addMouseEnter(this,A,i),D=B.addMouseLeave(this,A);this.ticksCallbackMap[i]={mouseEnter:C,mouseLeave:D}}this.ticks.push(A),this.ticksContainer.appendChild(A)}m.className+=" tick-slider-selection"}if(this.tickLabels=[],Array.isArray(this.options.ticks_labels)&&this.options.ticks_labels.length>0)for(this.tickLabelContainer=document.createElement("div"),this.tickLabelContainer.className="slider-tick-label-container",i=0;i<this.options.ticks_labels.length;i++){var E=document.createElement("div"),F=0===this.options.ticks_positions.length,G=this.options.reversed&&F?this.options.ticks_labels.length-(i+1):i;E.className="slider-tick-label",E.innerHTML=this.options.ticks_labels[G],this.tickLabels.push(E),this.tickLabelContainer.appendChild(E)}var H=function(a){var b=document.createElement("div");b.className="tooltip-arrow";var c=document.createElement("div");c.className="tooltip-inner",a.appendChild(b),a.appendChild(c)},I=document.createElement("div");I.className="tooltip tooltip-main",I.setAttribute("role","presentation"),H(I);var J=document.createElement("div");J.className="tooltip tooltip-min",J.setAttribute("role","presentation"),H(J);var K=document.createElement("div");K.className="tooltip tooltip-max",K.setAttribute("role","presentation"),H(K),this.sliderElem.appendChild(u),this.sliderElem.appendChild(I),this.sliderElem.appendChild(J),this.sliderElem.appendChild(K),this.tickLabelContainer&&this.sliderElem.appendChild(this.tickLabelContainer),this.ticksContainer&&this.sliderElem.appendChild(this.ticksContainer),this.sliderElem.appendChild(p),this.sliderElem.appendChild(q),t.insertBefore(this.sliderElem,this.element),this.element.style.display="none"}if(a&&(this.$element=a(this.element),this.$sliderElem=a(this.sliderElem)),this.eventToCallbackMap={},this.sliderElem.id=this.options.id,this.touchCapable="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,this.touchX=0,this.touchY=0,this.tooltip=this.sliderElem.querySelector(".tooltip-main"),this.tooltipInner=this.tooltip.querySelector(".tooltip-inner"),this.tooltip_min=this.sliderElem.querySelector(".tooltip-min"),this.tooltipInner_min=this.tooltip_min.querySelector(".tooltip-inner"),this.tooltip_max=this.sliderElem.querySelector(".tooltip-max"),this.tooltipInner_max=this.tooltip_max.querySelector(".tooltip-inner"),h[this.options.scale]&&(this.options.scale=h[this.options.scale]),s===!0&&(this._removeClass(this.sliderElem,"slider-horizontal"),this._removeClass(this.sliderElem,"slider-vertical"),this._removeClass(this.sliderElem,"slider-rtl"),this._removeClass(this.tooltip,"hide"),this._removeClass(this.tooltip_min,"hide"),this._removeClass(this.tooltip_max,"hide"),["left","right","top","width","height"].forEach(function(a){this._removeProperty(this.trackLow,a),this._removeProperty(this.trackSelection,a),this._removeProperty(this.trackHigh,a)},this),[this.handle1,this.handle2].forEach(function(a){this._removeProperty(a,"left"),this._removeProperty(a,"right"),this._removeProperty(a,"top")},this),[this.tooltip,this.tooltip_min,this.tooltip_max].forEach(function(a){this._removeProperty(a,"left"),this._removeProperty(a,"right"),this._removeProperty(a,"top"),this._removeClass(a,"right"),this._removeClass(a,"left"),this._removeClass(a,"top")},this)),"vertical"===this.options.orientation?(this._addClass(this.sliderElem,"slider-vertical"),this.stylePos="top",this.mousePos="pageY",this.sizePos="offsetHeight"):(this._addClass(this.sliderElem,"slider-horizontal"),this.sliderElem.style.width=r,this.options.orientation="horizontal",this.options.rtl?this.stylePos="right":this.stylePos="left",this.mousePos="clientX",this.sizePos="offsetWidth"),this.options.rtl&&this._addClass(this.sliderElem,"slider-rtl"),this._setTooltipPosition(),Array.isArray(this.options.ticks)&&this.options.ticks.length>0&&(g||(this.options.max=Math.max.apply(Math,this.options.ticks)),f||(this.options.min=Math.min.apply(Math,this.options.ticks))),Array.isArray(this.options.value)?(this.options.range=!0,this._state.value=this.options.value):this.options.range?this._state.value=[this.options.value,this.options.max]:this._state.value=this.options.value,this.trackLow=n||this.trackLow,this.trackSelection=m||this.trackSelection,this.trackHigh=o||this.trackHigh,"none"===this.options.selection?(this._addClass(this.trackLow,"hide"),this._addClass(this.trackSelection,"hide"),this._addClass(this.trackHigh,"hide")):("after"===this.options.selection||"before"===this.options.selection)&&(this._removeClass(this.trackLow,"hide"),this._removeClass(this.trackSelection,"hide"),this._removeClass(this.trackHigh,"hide")),this.handle1=p||this.handle1,this.handle2=q||this.handle2,s===!0)for(this._removeClass(this.handle1,"round triangle"),this._removeClass(this.handle2,"round triangle hide"),i=0;i<this.ticks.length;i++)this._removeClass(this.ticks[i],"round triangle hide");var L=["round","triangle","custom"],M=-1!==L.indexOf(this.options.handle);if(M)for(this._addClass(this.handle1,this.options.handle),this._addClass(this.handle2,this.options.handle),i=0;i<this.ticks.length;i++)this._addClass(this.ticks[i],this.options.handle);if(this._state.offset=this._offset(this.sliderElem),this._state.size=this.sliderElem[this.sizePos],this.setValue(this._state.value),this.handle1Keydown=this._keydown.bind(this,0),this.handle1.addEventListener("keydown",this.handle1Keydown,!1),this.handle2Keydown=this._keydown.bind(this,1),this.handle2.addEventListener("keydown",this.handle2Keydown,!1),this.mousedown=this._mousedown.bind(this),this.touchstart=this._touchstart.bind(this),this.touchmove=this._touchmove.bind(this),this.touchCapable&&(this.sliderElem.addEventListener("touchstart",this.touchstart,!1),this.sliderElem.addEventListener("touchmove",this.touchmove,!1)),this.sliderElem.addEventListener("mousedown",this.mousedown,!1),this.resize=this._resize.bind(this),window.addEventListener("resize",this.resize,!1),"hide"===this.options.tooltip)this._addClass(this.tooltip,"hide"),this._addClass(this.tooltip_min,"hide"),this._addClass(this.tooltip_max,"hide");else if("always"===this.options.tooltip)this._showTooltip(),this._alwaysShowTooltip=!0;else{if(this.showTooltip=this._showTooltip.bind(this),this.hideTooltip=this._hideTooltip.bind(this),this.options.ticks_tooltip){var N=this._addTickListener(),O=N.addMouseEnter(this,this.handle1),P=N.addMouseLeave(this,this.handle1);this.handleCallbackMap.handle1={mouseEnter:O,mouseLeave:P},O=N.addMouseEnter(this,this.handle2),P=N.addMouseLeave(this,this.handle2),this.handleCallbackMap.handle2={mouseEnter:O,mouseLeave:P}}else this.sliderElem.addEventListener("mouseenter",this.showTooltip,!1),this.sliderElem.addEventListener("mouseleave",this.hideTooltip,!1),this.touchCapable&&(this.sliderElem.addEventListener("touchstart",this.showTooltip,!1),this.sliderElem.addEventListener("touchmove",this.showTooltip,!1),this.sliderElem.addEventListener("touchend",this.hideTooltip,!1));this.handle1.addEventListener("focus",this.showTooltip,!1),this.handle1.addEventListener("blur",this.hideTooltip,!1),this.handle2.addEventListener("focus",this.showTooltip,!1),this.handle2.addEventListener("blur",this.hideTooltip,!1),this.touchCapable&&(this.handle1.addEventListener("touchstart",this.showTooltip,!1),this.handle1.addEventListener("touchmove",this.showTooltip,!1),this.handle1.addEventListener("touchend",this.hideTooltip,!1),this.handle2.addEventListener("touchstart",this.showTooltip,!1),this.handle2.addEventListener("touchmove",this.showTooltip,!1),this.handle2.addEventListener("touchend",this.hideTooltip,!1))}this.options.enabled?this.enable():this.disable()}var f=void 0,g={formatInvalidInputErrorMsg:function(a){return"Invalid input value '"+a+"' passed in"},callingContextNotSliderInstance:"Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method"},h={linear:{getValue:function(a,b){return a<b.min?b.min:a>b.max?b.max:a},toValue:function(a){var b=a/100*(this.options.max-this.options.min),c=!0;if(this.options.ticks_positions.length>0){for(var d,e,f,g=0,i=1;i<this.options.ticks_positions.length;i++)if(a<=this.options.ticks_positions[i]){d=this.options.ticks[i-1],f=this.options.ticks_positions[i-1],e=this.options.ticks[i],g=this.options.ticks_positions[i];break}var j=(a-f)/(g-f);b=d+j*(e-d),c=!1}var k=c?this.options.min:0,l=k+Math.round(b/this.options.step)*this.options.step;return h.linear.getValue(l,this.options)},toPercentage:function(a){if(this.options.max===this.options.min)return 0;if(this.options.ticks_positions.length>0){for(var b,c,d,e=0,f=0;f<this.options.ticks.length;f++)if(a<=this.options.ticks[f]){b=f>0?this.options.ticks[f-1]:0,d=f>0?this.options.ticks_positions[f-1]:0,c=this.options.ticks[f],e=this.options.ticks_positions[f];break}if(f>0){var g=(a-b)/(c-b);return d+g*(e-d)}}return 100*(a-this.options.min)/(this.options.max-this.options.min)}},logarithmic:{toValue:function(a){var b=1-this.options.min,c=Math.log(this.options.min+b),d=Math.log(this.options.max+b),e=Math.exp(c+(d-c)*a/100)-b;return Math.round(e)===d?d:(e=this.options.min+Math.round((e-this.options.min)/this.options.step)*this.options.step,h.linear.getValue(e,this.options))},toPercentage:function(a){if(this.options.max===this.options.min)return 0;var b=1-this.options.min,c=Math.log(this.options.max+b),d=Math.log(this.options.min+b),e=Math.log(a+b);return 100*(e-d)/(c-d)}}};d=function(a,b){return e.call(this,a,b),this},d.prototype={_init:function(){},constructor:d,defaultOptions:{id:"",min:0,max:10,step:1,precision:0,orientation:"horizontal",value:5,range:!1,selection:"before",tooltip:"show",tooltip_split:!1,lock_to_ticks:!1,handle:"round",reversed:!1,rtl:"auto",enabled:!0,formatter:function(a){return Array.isArray(a)?a[0]+" : "+a[1]:a},natural_arrow_keys:!1,ticks:[],ticks_positions:[],ticks_labels:[],ticks_snap_bounds:0,ticks_tooltip:!1,scale:"linear",focus:!1,tooltip_position:null,labelledby:null,rangeHighlights:[]},getElement:function(){return this.sliderElem},getValue:function(){return this.options.range?this._state.value:this._state.value[0]},setValue:function(a,b,c){a||(a=0);var d=this.getValue();this._state.value=this._validateInputValue(a);var e=this._applyPrecision.bind(this);this.options.range?(this._state.value[0]=e(this._state.value[0]),this._state.value[1]=e(this._state.value[1]),this.ticksAreValid&&this.options.lock_to_ticks&&(this._state.value[0]=this.options.ticks[this._getClosestTickIndex(this._state.value[0])],this._state.value[1]=this.options.ticks[this._getClosestTickIndex(this._state.value[1])]),this._state.value[0]=Math.max(this.options.min,Math.min(this.options.max,this._state.value[0])),this._state.value[1]=Math.max(this.options.min,Math.min(this.options.max,this._state.value[1]))):(this._state.value=e(this._state.value),this.ticksAreValid&&this.options.lock_to_ticks&&(this._state.value=this.options.ticks[this._getClosestTickIndex(this._state.value)]),this._state.value=[Math.max(this.options.min,Math.min(this.options.max,this._state.value))],this._addClass(this.handle2,"hide"),"after"===this.options.selection?this._state.value[1]=this.options.max:this._state.value[1]=this.options.min),this._setTickIndex(),this.options.max>this.options.min?this._state.percentage=[this._toPercentage(this._state.value[0]),this._toPercentage(this._state.value[1]),100*this.options.step/(this.options.max-this.options.min)]:this._state.percentage=[0,0,100],this._layout();var f=this.options.range?this._state.value:this._state.value[0];this._setDataVal(f),b===!0&&this._trigger("slide",f);var g=!1;return g=Array.isArray(f)?d[0]!==f[0]||d[1]!==f[1]:d!==f,g&&c===!0&&this._trigger("change",{oldValue:d,newValue:f}),this},destroy:function(){this._removeSliderEventHandlers(),this.sliderElem.parentNode.removeChild(this.sliderElem),this.element.style.display="",this._cleanUpEventCallbacksMap(),this.element.removeAttribute("data"),a&&(this._unbindJQueryEventHandlers(),f===b&&this.$element.removeData(f),this.$element.removeData(c))},disable:function(){return this._state.enabled=!1,this.handle1.removeAttribute("tabindex"),this.handle2.removeAttribute("tabindex"),this._addClass(this.sliderElem,"slider-disabled"),this._trigger("slideDisabled"),this},enable:function(){return this._state.enabled=!0,this.handle1.setAttribute("tabindex",0),this.handle2.setAttribute("tabindex",0),this._removeClass(this.sliderElem,"slider-disabled"),this._trigger("slideEnabled"),this},toggle:function(){return this._state.enabled?this.disable():this.enable(),this},isEnabled:function(){return this._state.enabled},on:function(a,b){return this._bindNonQueryEventHandler(a,b),this},off:function(b,c){a?(this.$element.off(b,c),this.$sliderElem.off(b,c)):this._unbindNonQueryEventHandler(b,c)},getAttribute:function(a){return a?this.options[a]:this.options},setAttribute:function(a,b){return this.options[a]=b,this},refresh:function(d){var g=this.getValue();return this._removeSliderEventHandlers(),e.call(this,this.element,this.options),d&&d.useCurrentValue===!0&&this.setValue(g),a&&(f===b?(a.data(this.element,b,this),a.data(this.element,c,this)):a.data(this.element,c,this)),this},relayout:function(){return this._resize(),this},_removeTooltipListener:function(a,b){this.handle1.removeEventListener(a,b,!1),this.handle2.removeEventListener(a,b,!1)},_removeSliderEventHandlers:function(){if(this.handle1.removeEventListener("keydown",this.handle1Keydown,!1),this.handle2.removeEventListener("keydown",this.handle2Keydown,!1),this.options.ticks_tooltip){for(var a=this.ticksContainer.getElementsByClassName("slider-tick"),b=0;b<a.length;b++)a[b].removeEventListener("mouseenter",this.ticksCallbackMap[b].mouseEnter,!1),a[b].removeEventListener("mouseleave",this.ticksCallbackMap[b].mouseLeave,!1);this.handleCallbackMap.handle1&&this.handleCallbackMap.handle2&&(this.handle1.removeEventListener("mouseenter",this.handleCallbackMap.handle1.mouseEnter,!1),this.handle2.removeEventListener("mouseenter",this.handleCallbackMap.handle2.mouseEnter,!1),this.handle1.removeEventListener("mouseleave",this.handleCallbackMap.handle1.mouseLeave,!1),this.handle2.removeEventListener("mouseleave",this.handleCallbackMap.handle2.mouseLeave,!1))}this.handleCallbackMap=null,this.ticksCallbackMap=null,this.showTooltip&&this._removeTooltipListener("focus",this.showTooltip),this.hideTooltip&&this._removeTooltipListener("blur",this.hideTooltip),this.showTooltip&&this.sliderElem.removeEventListener("mouseenter",this.showTooltip,!1),this.hideTooltip&&this.sliderElem.removeEventListener("mouseleave",this.hideTooltip,!1),this.sliderElem.removeEventListener("mousedown",this.mousedown,!1),this.touchCapable&&(this.showTooltip&&(this.handle1.removeEventListener("touchstart",this.showTooltip,!1),this.handle1.removeEventListener("touchmove",this.showTooltip,!1),this.handle2.removeEventListener("touchstart",this.showTooltip,!1),this.handle2.removeEventListener("touchmove",this.showTooltip,!1)),this.hideTooltip&&(this.handle1.removeEventListener("touchend",this.hideTooltip,!1),this.handle2.removeEventListener("touchend",this.hideTooltip,!1)),this.showTooltip&&(this.sliderElem.removeEventListener("touchstart",this.showTooltip,!1),this.sliderElem.removeEventListener("touchmove",this.showTooltip,!1)),this.hideTooltip&&this.sliderElem.removeEventListener("touchend",this.hideTooltip,!1),this.sliderElem.removeEventListener("touchstart",this.touchstart,!1),this.sliderElem.removeEventListener("touchmove",this.touchmove,!1)),window.removeEventListener("resize",this.resize,!1)},_bindNonQueryEventHandler:function(a,b){void 0===this.eventToCallbackMap[a]&&(this.eventToCallbackMap[a]=[]),this.eventToCallbackMap[a].push(b)},_unbindNonQueryEventHandler:function(a,b){var c=this.eventToCallbackMap[a];if(void 0!==c)for(var d=0;d<c.length;d++)if(c[d]===b){c.splice(d,1);break}},_cleanUpEventCallbacksMap:function(){for(var a=Object.keys(this.eventToCallbackMap),b=0;b<a.length;b++){var c=a[b];delete this.eventToCallbackMap[c]}},_showTooltip:function(){this.options.tooltip_split===!1?(this._addClass(this.tooltip,"in"),this.tooltip_min.style.display="none",this.tooltip_max.style.display="none"):(this._addClass(this.tooltip_min,"in"),this._addClass(this.tooltip_max,"in"),this.tooltip.style.display="none"),this._state.over=!0},_hideTooltip:function(){this._state.inDrag===!1&&this._alwaysShowTooltip!==!0&&(this._removeClass(this.tooltip,"in"),this._removeClass(this.tooltip_min,"in"),this._removeClass(this.tooltip_max,"in")),this._state.over=!1},_setToolTipOnMouseOver:function(a){function b(a,b){return b?[100-a.percentage[0],c.options.range?100-a.percentage[1]:a.percentage[1]]:[a.percentage[0],a.percentage[1]]}var c=this,d=this.options.formatter(a?a.value[0]:this._state.value[0]),e=a?b(a,this.options.reversed):b(this._state,this.options.reversed);this._setText(this.tooltipInner,d),this.tooltip.style[this.stylePos]=e[0]+"%"},_copyState:function(){return{value:[this._state.value[0],this._state.value[1]],enabled:this._state.enabled,offset:this._state.offset,size:this._state.size,percentage:[this._state.percentage[0],this._state.percentage[1],this._state.percentage[2]],inDrag:this._state.inDrag,over:this._state.over,dragged:this._state.dragged,keyCtrl:this._state.keyCtrl}},_addTickListener:function(){return{addMouseEnter:function(a,b,c){var d=function(){var d=a._copyState(),e=b===a.handle1?d.value[0]:d.value[1],f=void 0;void 0!==c?(e=a.options.ticks[c],f=a.options.ticks_positions.length>0&&a.options.ticks_positions[c]||a._toPercentage(a.options.ticks[c])):f=a._toPercentage(e),d.value[0]=e,d.percentage[0]=f,a._setToolTipOnMouseOver(d),a._showTooltip()};return b.addEventListener("mouseenter",d,!1),d},addMouseLeave:function(a,b){var c=function(){a._hideTooltip()};return b.addEventListener("mouseleave",c,!1),c}}},_layout:function(){var a,b;if(a=this.options.reversed?[100-this._state.percentage[0],this.options.range?100-this._state.percentage[1]:this._state.percentage[1]]:[this._state.percentage[0],this._state.percentage[1]],this.handle1.style[this.stylePos]=a[0]+"%",this.handle1.setAttribute("aria-valuenow",this._state.value[0]),b=this.options.formatter(this._state.value[0]),isNaN(b)?this.handle1.setAttribute("aria-valuetext",b):this.handle1.removeAttribute("aria-valuetext"),this.handle2.style[this.stylePos]=a[1]+"%",this.handle2.setAttribute("aria-valuenow",this._state.value[1]),b=this.options.formatter(this._state.value[1]),isNaN(b)?this.handle2.setAttribute("aria-valuetext",b):this.handle2.removeAttribute("aria-valuetext"),this.rangeHighlightElements.length>0&&Array.isArray(this.options.rangeHighlights)&&this.options.rangeHighlights.length>0)for(var c=0;c<this.options.rangeHighlights.length;c++){var d=this._toPercentage(this.options.rangeHighlights[c].start),e=this._toPercentage(this.options.rangeHighlights[c].end);if(this.options.reversed){var f=100-e;e=100-d,d=f}var g=this._createHighlightRange(d,e);g?"vertical"===this.options.orientation?(this.rangeHighlightElements[c].style.top=g.start+"%",this.rangeHighlightElements[c].style.height=g.size+"%"):(this.options.rtl?this.rangeHighlightElements[c].style.right=g.start+"%":this.rangeHighlightElements[c].style.left=g.start+"%",this.rangeHighlightElements[c].style.width=g.size+"%"):this.rangeHighlightElements[c].style.display="none"}if(Array.isArray(this.options.ticks)&&this.options.ticks.length>0){var h,i="vertical"===this.options.orientation?"height":"width";h="vertical"===this.options.orientation?"marginTop":this.options.rtl?"marginRight":"marginLeft";var j=this._state.size/(this.options.ticks.length-1);if(this.tickLabelContainer){var k=0;if(0===this.options.ticks_positions.length)"vertical"!==this.options.orientation&&(this.tickLabelContainer.style[h]=-j/2+"px"),k=this.tickLabelContainer.offsetHeight;else for(l=0;l<this.tickLabelContainer.childNodes.length;l++)this.tickLabelContainer.childNodes[l].offsetHeight>k&&(k=this.tickLabelContainer.childNodes[l].offsetHeight);"horizontal"===this.options.orientation&&(this.sliderElem.style.marginBottom=k+"px")}for(var l=0;l<this.options.ticks.length;l++){var m=this.options.ticks_positions[l]||this._toPercentage(this.options.ticks[l]);this.options.reversed&&(m=100-m),this.ticks[l].style[this.stylePos]=m+"%",this._removeClass(this.ticks[l],"in-selection"),this.options.range?m>=a[0]&&m<=a[1]&&this._addClass(this.ticks[l],"in-selection"):"after"===this.options.selection&&m>=a[0]?this._addClass(this.ticks[l],"in-selection"):"before"===this.options.selection&&m<=a[0]&&this._addClass(this.ticks[l],"in-selection"),this.tickLabels[l]&&(this.tickLabels[l].style[i]=j+"px","vertical"!==this.options.orientation&&void 0!==this.options.ticks_positions[l]?(this.tickLabels[l].style.position="absolute",this.tickLabels[l].style[this.stylePos]=m+"%",this.tickLabels[l].style[h]=-j/2+"px"):"vertical"===this.options.orientation&&(this.options.rtl?this.tickLabels[l].style.marginRight=this.sliderElem.offsetWidth+"px":this.tickLabels[l].style.marginLeft=this.sliderElem.offsetWidth+"px",this.tickLabelContainer.style[h]=this.sliderElem.offsetWidth/2*-1+"px"),this._removeClass(this.tickLabels[l],"label-in-selection label-is-selection"),this.options.range?m>=a[0]&&m<=a[1]&&(this._addClass(this.tickLabels[l],"label-in-selection"),(m===a[0]||a[1])&&this._addClass(this.tickLabels[l],"label-is-selection")):("after"===this.options.selection&&m>=a[0]?this._addClass(this.tickLabels[l],"label-in-selection"):"before"===this.options.selection&&m<=a[0]&&this._addClass(this.tickLabels[l],"label-in-selection"),m===a[0]&&this._addClass(this.tickLabels[l],"label-is-selection")))}}var n;if(this.options.range){n=this.options.formatter(this._state.value),this._setText(this.tooltipInner,n),this.tooltip.style[this.stylePos]=(a[1]+a[0])/2+"%";var o=this.options.formatter(this._state.value[0]);this._setText(this.tooltipInner_min,o);var p=this.options.formatter(this._state.value[1]);this._setText(this.tooltipInner_max,p),this.tooltip_min.style[this.stylePos]=a[0]+"%",this.tooltip_max.style[this.stylePos]=a[1]+"%"}else n=this.options.formatter(this._state.value[0]),this._setText(this.tooltipInner,n),this.tooltip.style[this.stylePos]=a[0]+"%";if("vertical"===this.options.orientation)this.trackLow.style.top="0",this.trackLow.style.height=Math.min(a[0],a[1])+"%",this.trackSelection.style.top=Math.min(a[0],a[1])+"%",this.trackSelection.style.height=Math.abs(a[0]-a[1])+"%",this.trackHigh.style.bottom="0",this.trackHigh.style.height=100-Math.min(a[0],a[1])-Math.abs(a[0]-a[1])+"%";else{"right"===this.stylePos?this.trackLow.style.right="0":this.trackLow.style.left="0",this.trackLow.style.width=Math.min(a[0],a[1])+"%","right"===this.stylePos?this.trackSelection.style.right=Math.min(a[0],a[1])+"%":this.trackSelection.style.left=Math.min(a[0],a[1])+"%",this.trackSelection.style.width=Math.abs(a[0]-a[1])+"%","right"===this.stylePos?this.trackHigh.style.left="0":this.trackHigh.style.right="0",this.trackHigh.style.width=100-Math.min(a[0],a[1])-Math.abs(a[0]-a[1])+"%";var q=this.tooltip_min.getBoundingClientRect(),r=this.tooltip_max.getBoundingClientRect();"bottom"===this.options.tooltip_position?q.right>r.left?(this._removeClass(this.tooltip_max,"bottom"),this._addClass(this.tooltip_max,"top"),this.tooltip_max.style.top="",this.tooltip_max.style.bottom="22px"):(this._removeClass(this.tooltip_max,"top"),this._addClass(this.tooltip_max,"bottom"),this.tooltip_max.style.top=this.tooltip_min.style.top,this.tooltip_max.style.bottom=""):q.right>r.left?(this._removeClass(this.tooltip_max,"top"),this._addClass(this.tooltip_max,"bottom"),this.tooltip_max.style.top="18px"):(this._removeClass(this.tooltip_max,"bottom"),this._addClass(this.tooltip_max,"top"),this.tooltip_max.style.top=this.tooltip_min.style.top)}},_createHighlightRange:function(a,b){return this._isHighlightRange(a,b)?a>b?{start:b,size:a-b}:{start:a,size:b-a}:null},_isHighlightRange:function(a,b){return a>=0&&100>=a&&b>=0&&100>=b?!0:!1},_resize:function(a){this._state.offset=this._offset(this.sliderElem),this._state.size=this.sliderElem[this.sizePos],this._layout()},_removeProperty:function(a,b){a.style.removeProperty?a.style.removeProperty(b):a.style.removeAttribute(b)},_mousedown:function(a){if(!this._state.enabled)return!1;a.preventDefault&&a.preventDefault(),this._state.offset=this._offset(this.sliderElem),this._state.size=this.sliderElem[this.sizePos];var b=this._getPercentage(a);if(this.options.range){var c=Math.abs(this._state.percentage[0]-b),d=Math.abs(this._state.percentage[1]-b);this._state.dragged=d>c?0:1,this._adjustPercentageForRangeSliders(b)}else this._state.dragged=0;this._state.percentage[this._state.dragged]=b,this.touchCapable&&(document.removeEventListener("touchmove",this.mousemove,!1),document.removeEventListener("touchend",this.mouseup,!1)),this.mousemove&&document.removeEventListener("mousemove",this.mousemove,!1),this.mouseup&&document.removeEventListener("mouseup",this.mouseup,!1),this.mousemove=this._mousemove.bind(this),this.mouseup=this._mouseup.bind(this),this.touchCapable&&(document.addEventListener("touchmove",this.mousemove,!1),document.addEventListener("touchend",this.mouseup,!1)),document.addEventListener("mousemove",this.mousemove,!1),document.addEventListener("mouseup",this.mouseup,!1),this._state.inDrag=!0;var e=this._calculateValue();return this._trigger("slideStart",e),this.setValue(e,!1,!0),a.returnValue=!1,this.options.focus&&this._triggerFocusOnHandle(this._state.dragged),!0},_touchstart:function(a){this._mousedown(a)},_triggerFocusOnHandle:function(a){0===a&&this.handle1.focus(),1===a&&this.handle2.focus()},_keydown:function(a,b){if(!this._state.enabled)return!1;var c;switch(b.keyCode){case 37:case 40:c=-1;break;case 39:case 38:c=1}if(c){if(this.options.natural_arrow_keys){var d="horizontal"===this.options.orientation,e="vertical"===this.options.orientation,f=this.options.rtl,g=this.options.reversed;d?f?g||(c=-c):g&&(c=-c):e&&(g||(c=-c))}var h;if(this.ticksAreValid&&this.options.lock_to_ticks){var i=void 0;i=this.options.ticks.indexOf(this._state.value[a]),-1===i&&(i=0,window.console.warn("(lock_to_ticks) _keydown: index should not be -1")),i+=c,i=Math.max(0,Math.min(this.options.ticks.length-1,i)),h=this.options.ticks[i]}else h=this._state.value[a]+c*this.options.step;var j=this._toPercentage(h);if(this._state.keyCtrl=a,this.options.range){this._adjustPercentageForRangeSliders(j);var k=this._state.keyCtrl?this._state.value[0]:h,l=this._state.keyCtrl?h:this._state.value[1];h=[Math.max(this.options.min,Math.min(this.options.max,k)),Math.max(this.options.min,Math.min(this.options.max,l))]}else h=Math.max(this.options.min,Math.min(this.options.max,h));return this._trigger("slideStart",h),this.setValue(h,!0,!0),this._trigger("slideStop",h),this._pauseEvent(b),delete this._state.keyCtrl,!1}},_pauseEvent:function(a){a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a.cancelBubble=!0,a.returnValue=!1},_mousemove:function(a){if(!this._state.enabled)return!1; var b=this._getPercentage(a);this._adjustPercentageForRangeSliders(b),this._state.percentage[this._state.dragged]=b;var c=this._calculateValue(!0);return this.setValue(c,!0,!0),!1},_touchmove:function(a){void 0!==a.changedTouches&&a.preventDefault&&a.preventDefault()},_adjustPercentageForRangeSliders:function(a){if(this.options.range){var b=this._getNumDigitsAfterDecimalPlace(a);b=b?b-1:0;var c=this._applyToFixedAndParseFloat(a,b);0===this._state.dragged&&this._applyToFixedAndParseFloat(this._state.percentage[1],b)<c?(this._state.percentage[0]=this._state.percentage[1],this._state.dragged=1):1===this._state.dragged&&this._applyToFixedAndParseFloat(this._state.percentage[0],b)>c?(this._state.percentage[1]=this._state.percentage[0],this._state.dragged=0):0===this._state.keyCtrl&&this._toPercentage(this._state.value[1])<a?(this._state.percentage[0]=this._state.percentage[1],this._state.keyCtrl=1,this.handle2.focus()):1===this._state.keyCtrl&&this._toPercentage(this._state.value[0])>a&&(this._state.percentage[1]=this._state.percentage[0],this._state.keyCtrl=0,this.handle1.focus())}},_mouseup:function(a){if(!this._state.enabled)return!1;var b=this._getPercentage(a);this._adjustPercentageForRangeSliders(b),this._state.percentage[this._state.dragged]=b,this.touchCapable&&(document.removeEventListener("touchmove",this.mousemove,!1),document.removeEventListener("touchend",this.mouseup,!1)),document.removeEventListener("mousemove",this.mousemove,!1),document.removeEventListener("mouseup",this.mouseup,!1),this._state.inDrag=!1,this._state.over===!1&&this._hideTooltip();var c=this._calculateValue(!0);return this.setValue(c,!1,!0),this._trigger("slideStop",c),this._state.dragged=null,!1},_setValues:function(a,b){var c=0===a?0:100;this._state.percentage[a]!==c&&(b.data[a]=this._toValue(this._state.percentage[a]),b.data[a]=this._applyPrecision(b.data[a]))},_calculateValue:function(a){var b={};return this.options.range?(b.data=[this.options.min,this.options.max],this._setValues(0,b),this._setValues(1,b),a&&(b.data[0]=this._snapToClosestTick(b.data[0]),b.data[1]=this._snapToClosestTick(b.data[1]))):(b.data=this._toValue(this._state.percentage[0]),b.data=parseFloat(b.data),b.data=this._applyPrecision(b.data),a&&(b.data=this._snapToClosestTick(b.data))),b.data},_snapToClosestTick:function(a){for(var b=[a,1/0],c=0;c<this.options.ticks.length;c++){var d=Math.abs(this.options.ticks[c]-a);d<=b[1]&&(b=[this.options.ticks[c],d])}return b[1]<=this.options.ticks_snap_bounds?b[0]:a},_applyPrecision:function(a){var b=this.options.precision||this._getNumDigitsAfterDecimalPlace(this.options.step);return this._applyToFixedAndParseFloat(a,b)},_getNumDigitsAfterDecimalPlace:function(a){var b=(""+a).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return b?Math.max(0,(b[1]?b[1].length:0)-(b[2]?+b[2]:0)):0},_applyToFixedAndParseFloat:function(a,b){var c=a.toFixed(b);return parseFloat(c)},_getPercentage:function(a){!this.touchCapable||"touchstart"!==a.type&&"touchmove"!==a.type&&"touchend"!==a.type||(a=a.changedTouches[0]);var b=a[this.mousePos],c=this._state.offset[this.stylePos],d=b-c;"right"===this.stylePos&&(d=-d);var e=d/this._state.size*100;return e=Math.round(e/this._state.percentage[2])*this._state.percentage[2],this.options.reversed&&(e=100-e),Math.max(0,Math.min(100,e))},_validateInputValue:function(a){if(isNaN(+a)){if(Array.isArray(a))return this._validateArray(a),a;throw new Error(g.formatInvalidInputErrorMsg(a))}return+a},_validateArray:function(a){for(var b=0;b<a.length;b++){var c=a[b];if("number"!=typeof c)throw new Error(g.formatInvalidInputErrorMsg(c))}},_setDataVal:function(a){this.element.setAttribute("data-value",a),this.element.setAttribute("value",a),this.element.value=a},_trigger:function(b,c){c=c||0===c?c:void 0;var d=this.eventToCallbackMap[b];if(d&&d.length)for(var e=0;e<d.length;e++){var f=d[e];f(c)}a&&this._triggerJQueryEvent(b,c)},_triggerJQueryEvent:function(a,b){var c={type:a,value:b};this.$element.trigger(c),this.$sliderElem.trigger(c)},_unbindJQueryEventHandlers:function(){this.$element.off(),this.$sliderElem.off()},_setText:function(a,b){"undefined"!=typeof a.textContent?a.textContent=b:"undefined"!=typeof a.innerText&&(a.innerText=b)},_removeClass:function(a,b){for(var c=b.split(" "),d=a.className,e=0;e<c.length;e++){var f=c[e],g=new RegExp("(?:\\s|^)"+f+"(?:\\s|$)");d=d.replace(g," ")}a.className=d.trim()},_addClass:function(a,b){for(var c=b.split(" "),d=a.className,e=0;e<c.length;e++){var f=c[e],g=new RegExp("(?:\\s|^)"+f+"(?:\\s|$)"),h=g.test(d);h||(d+=" "+f)}a.className=d.trim()},_offsetLeft:function(a){return a.getBoundingClientRect().left},_offsetRight:function(a){return a.getBoundingClientRect().right},_offsetTop:function(a){for(var b=a.offsetTop;(a=a.offsetParent)&&!isNaN(a.offsetTop);)b+=a.offsetTop,"BODY"!==a.tagName&&(b-=a.scrollTop);return b},_offset:function(a){return{left:this._offsetLeft(a),right:this._offsetRight(a),top:this._offsetTop(a)}},_css:function(b,c,d){if(a)a.style(b,c,d);else{var e=c.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(a,b){return b.toUpperCase()});b.style[e]=d}},_toValue:function(a){return this.options.scale.toValue.apply(this,[a])},_toPercentage:function(a){return this.options.scale.toPercentage.apply(this,[a])},_setTooltipPosition:function(){var a=[this.tooltip,this.tooltip_min,this.tooltip_max];if("vertical"===this.options.orientation){var b;b=this.options.tooltip_position?this.options.tooltip_position:this.options.rtl?"left":"right";var c="left"===b?"right":"left";a.forEach(function(a){this._addClass(a,b),a.style[c]="100%"}.bind(this))}else"bottom"===this.options.tooltip_position?a.forEach(function(a){this._addClass(a,"bottom"),a.style.top="22px"}.bind(this)):a.forEach(function(a){this._addClass(a,"top"),a.style.top=-this.tooltip.outerHeight-14+"px"}.bind(this))},_getClosestTickIndex:function(a){for(var b=Math.abs(a-this.options.ticks[0]),c=0,d=0;d<this.options.ticks.length;++d){var e=Math.abs(a-this.options.ticks[d]);b>e&&(b=e,c=d)}return c},_setTickIndex:function(){this.ticksAreValid&&(this._state.tickIndex=[this.options.ticks.indexOf(this._state.value[0]),this.options.ticks.indexOf(this._state.value[1])])}},a&&a.fn&&(a.fn.slider?(windowIsDefined&&window.console.warn("bootstrap-slider.js - WARNING: $.fn.slider namespace is already bound. Use the $.fn.bootstrapSlider namespace instead."),f=c):(a.bridget(b,d),f=b),a.bridget(c,d),a(function(){a("input[data-provide=slider]")[f]()}))}(a),d}); AdminLTE/plugins/select2/select2.full.js 0000644 00000474050 15002261751 0014034 0 ustar 00 /*! * Select2 4.0.3 * https://select2.github.io * * Released under the MIT license * https://github.com/select2/select2/blob/master/LICENSE.md */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], factory); } else if (typeof exports === 'object') { // Node/CommonJS factory(require('jquery')); } else { // Browser globals factory(jQuery); } }(function (jQuery) { // This is needed so we can catch the AMD loader configuration and use it // The inner file should be wrapped (by `banner.start.js`) in a function that // returns the AMD loader references. var S2 = (function () { // Restore the Select2 AMD loader so it can be used // Needed mostly in the language files, where the loader is not inserted if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { var S2 = jQuery.fn.select2.amd; } var S2;(function () { if (!S2 || !S2.requirejs) { if (!S2) { S2 = {}; } else { require = S2; } /** * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. * Available via the MIT or new BSD license. * see: http://github.com/jrburke/almond for details */ //Going sloppy to avoid 'use strict' string cost, but strict practices should //be followed. /*jslint sloppy: true */ /*global setTimeout: false */ var requirejs, require, define; (function (undef) { var main, req, makeMap, handlers, defined = {}, waiting = {}, config = {}, defining = {}, hasOwn = Object.prototype.hasOwnProperty, aps = [].slice, jsSuffixRegExp = /\.js$/; function hasProp(obj, prop) { return hasOwn.call(obj, prop); } /** * Given a relative module name, like ./something, normalize it to * a real name that can be mapped to a path. * @param {String} name the relative name * @param {String} baseName a real name that the name arg is relative * to. * @returns {String} normalized name */ function normalize(name, baseName) { var nameParts, nameSegment, mapValue, foundMap, lastIndex, foundI, foundStarMap, starI, i, j, part, baseParts = baseName && baseName.split("/"), map = config.map, starMap = (map && map['*']) || {}; //Adjust any relative paths. if (name && name.charAt(0) === ".") { //If have a base name, try to normalize against it, //otherwise, assume it is a top-level require that will //be relative to baseUrl in the end. if (baseName) { name = name.split('/'); lastIndex = name.length - 1; // Node .js allowance: if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); } //Lop off the last part of baseParts, so that . matches the //"directory" and not name of the baseName's module. For instance, //baseName of "one/two/three", maps to "one/two/three.js", but we //want the directory, "one/two" for this normalization. name = baseParts.slice(0, baseParts.length - 1).concat(name); //start trimDots for (i = 0; i < name.length; i += 1) { part = name[i]; if (part === ".") { name.splice(i, 1); i -= 1; } else if (part === "..") { if (i === 1 && (name[2] === '..' || name[0] === '..')) { //End of the line. Keep at least one non-dot //path segment at the front so it can be mapped //correctly to disk. Otherwise, there is likely //no path mapping for a path starting with '..'. //This can still fail, but catches the most reasonable //uses of .. break; } else if (i > 0) { name.splice(i - 1, 2); i -= 2; } } } //end trimDots name = name.join("/"); } else if (name.indexOf('./') === 0) { // No baseName, so this is ID is resolved relative // to baseUrl, pull off the leading dot. name = name.substring(2); } } //Apply map config if available. if ((baseParts || starMap) && map) { nameParts = name.split('/'); for (i = nameParts.length; i > 0; i -= 1) { nameSegment = nameParts.slice(0, i).join("/"); if (baseParts) { //Find the longest baseName segment match in the config. //So, do joins on the biggest to smallest lengths of baseParts. for (j = baseParts.length; j > 0; j -= 1) { mapValue = map[baseParts.slice(0, j).join('/')]; //baseName segment has config, find if it has one for //this name. if (mapValue) { mapValue = mapValue[nameSegment]; if (mapValue) { //Match, update name to the new value. foundMap = mapValue; foundI = i; break; } } } } if (foundMap) { break; } //Check for a star map match, but just hold on to it, //if there is a shorter segment match later in a matching //config, then favor over this star map. if (!foundStarMap && starMap && starMap[nameSegment]) { foundStarMap = starMap[nameSegment]; starI = i; } } if (!foundMap && foundStarMap) { foundMap = foundStarMap; foundI = starI; } if (foundMap) { nameParts.splice(0, foundI, foundMap); name = nameParts.join('/'); } } return name; } function makeRequire(relName, forceSync) { return function () { //A version of a require function that passes a moduleName //value for items that may need to //look up paths relative to the moduleName var args = aps.call(arguments, 0); //If first arg is not require('string'), and there is only //one arg, it is the array form without a callback. Insert //a null so that the following concat is correct. if (typeof args[0] !== 'string' && args.length === 1) { args.push(null); } return req.apply(undef, args.concat([relName, forceSync])); }; } function makeNormalize(relName) { return function (name) { return normalize(name, relName); }; } function makeLoad(depName) { return function (value) { defined[depName] = value; }; } function callDep(name) { if (hasProp(waiting, name)) { var args = waiting[name]; delete waiting[name]; defining[name] = true; main.apply(undef, args); } if (!hasProp(defined, name) && !hasProp(defining, name)) { throw new Error('No ' + name); } return defined[name]; } //Turns a plugin!resource to [plugin, resource] //with the plugin being undefined if the name //did not have a plugin prefix. function splitPrefix(name) { var prefix, index = name ? name.indexOf('!') : -1; if (index > -1) { prefix = name.substring(0, index); name = name.substring(index + 1, name.length); } return [prefix, name]; } /** * Makes a name map, normalizing the name, and using a plugin * for normalization if necessary. Grabs a ref to plugin * too, as an optimization. */ makeMap = function (name, relName) { var plugin, parts = splitPrefix(name), prefix = parts[0]; name = parts[1]; if (prefix) { prefix = normalize(prefix, relName); plugin = callDep(prefix); } //Normalize according if (prefix) { if (plugin && plugin.normalize) { name = plugin.normalize(name, makeNormalize(relName)); } else { name = normalize(name, relName); } } else { name = normalize(name, relName); parts = splitPrefix(name); prefix = parts[0]; name = parts[1]; if (prefix) { plugin = callDep(prefix); } } //Using ridiculous property names for space reasons return { f: prefix ? prefix + '!' + name : name, //fullName n: name, pr: prefix, p: plugin }; }; function makeConfig(name) { return function () { return (config && config.config && config.config[name]) || {}; }; } handlers = { require: function (name) { return makeRequire(name); }, exports: function (name) { var e = defined[name]; if (typeof e !== 'undefined') { return e; } else { return (defined[name] = {}); } }, module: function (name) { return { id: name, uri: '', exports: defined[name], config: makeConfig(name) }; } }; main = function (name, deps, callback, relName) { var cjsModule, depName, ret, map, i, args = [], callbackType = typeof callback, usingExports; //Use name if no relName relName = relName || name; //Call the callback to define the module, if necessary. if (callbackType === 'undefined' || callbackType === 'function') { //Pull out the defined dependencies and pass the ordered //values to the callback. //Default to [require, exports, module] if no deps deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; for (i = 0; i < deps.length; i += 1) { map = makeMap(deps[i], relName); depName = map.f; //Fast path CommonJS standard dependencies. if (depName === "require") { args[i] = handlers.require(name); } else if (depName === "exports") { //CommonJS module spec 1.1 args[i] = handlers.exports(name); usingExports = true; } else if (depName === "module") { //CommonJS module spec 1.1 cjsModule = args[i] = handlers.module(name); } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) { args[i] = callDep(depName); } else if (map.p) { map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); args[i] = defined[depName]; } else { throw new Error(name + ' missing ' + depName); } } ret = callback ? callback.apply(defined[name], args) : undefined; if (name) { //If setting exports via "module" is in play, //favor that over return value and exports. After that, //favor a non-undefined return value over exports use. if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) { defined[name] = cjsModule.exports; } else if (ret !== undef || !usingExports) { //Use the return value from the function. defined[name] = ret; } } } else if (name) { //May just be an object definition for the module. Only //worry about defining if have a module name. defined[name] = callback; } }; requirejs = require = req = function (deps, callback, relName, forceSync, alt) { if (typeof deps === "string") { if (handlers[deps]) { //callback in this case is really relName return handlers[deps](callback); } //Just return the module wanted. In this scenario, the //deps arg is the module name, and second arg (if passed) //is just the relName. //Normalize module name, if it contains . or .. return callDep(makeMap(deps, callback).f); } else if (!deps.splice) { //deps is a config object, not an array. config = deps; if (config.deps) { req(config.deps, config.callback); } if (!callback) { return; } if (callback.splice) { //callback is an array, which means it is a dependency list. //Adjust args if there are dependencies deps = callback; callback = relName; relName = null; } else { deps = undef; } } //Support require(['a']) callback = callback || function () {}; //If relName is a function, it is an errback handler, //so remove it. if (typeof relName === 'function') { relName = forceSync; forceSync = alt; } //Simulate async callback; if (forceSync) { main(undef, deps, callback, relName); } else { //Using a non-zero value because of concern for what old browsers //do, and latest browsers "upgrade" to 4 if lower value is used: //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: //If want a value immediately, use require('id') instead -- something //that works in almond on the global level, but not guaranteed and //unlikely to work in other AMD implementations. setTimeout(function () { main(undef, deps, callback, relName); }, 4); } return req; }; /** * Just drops the config on the floor, but returns req in case * the config return value is used. */ req.config = function (cfg) { return req(cfg); }; /** * Expose module registry for debugging and tooling */ requirejs._defined = defined; define = function (name, deps, callback) { if (typeof name !== 'string') { throw new Error('See almond README: incorrect module build, no module name'); } //This module may not have dependencies if (!deps.splice) { //deps is not an array, so probably means //an object literal or factory function for //the value. Adjust args. callback = deps; deps = []; } if (!hasProp(defined, name) && !hasProp(waiting, name)) { waiting[name] = [name, deps, callback]; } }; define.amd = { jQuery: true }; }()); S2.requirejs = requirejs;S2.require = require;S2.define = define; } }()); S2.define("almond", function(){}); /* global jQuery:false, $:false */ S2.define('jquery',[],function () { var _$ = jQuery || $; if (_$ == null && console && console.error) { console.error( 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.' ); } return _$; }); S2.define('select2/utils',[ 'jquery' ], function ($) { var Utils = {}; Utils.Extend = function (ChildClass, SuperClass) { var __hasProp = {}.hasOwnProperty; function BaseConstructor () { this.constructor = ChildClass; } for (var key in SuperClass) { if (__hasProp.call(SuperClass, key)) { ChildClass[key] = SuperClass[key]; } } BaseConstructor.prototype = SuperClass.prototype; ChildClass.prototype = new BaseConstructor(); ChildClass.__super__ = SuperClass.prototype; return ChildClass; }; function getMethods (theClass) { var proto = theClass.prototype; var methods = []; for (var methodName in proto) { var m = proto[methodName]; if (typeof m !== 'function') { continue; } if (methodName === 'constructor') { continue; } methods.push(methodName); } return methods; } Utils.Decorate = function (SuperClass, DecoratorClass) { var decoratedMethods = getMethods(DecoratorClass); var superMethods = getMethods(SuperClass); function DecoratedClass () { var unshift = Array.prototype.unshift; var argCount = DecoratorClass.prototype.constructor.length; var calledConstructor = SuperClass.prototype.constructor; if (argCount > 0) { unshift.call(arguments, SuperClass.prototype.constructor); calledConstructor = DecoratorClass.prototype.constructor; } calledConstructor.apply(this, arguments); } DecoratorClass.displayName = SuperClass.displayName; function ctr () { this.constructor = DecoratedClass; } DecoratedClass.prototype = new ctr(); for (var m = 0; m < superMethods.length; m++) { var superMethod = superMethods[m]; DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod]; } var calledMethod = function (methodName) { // Stub out the original method if it's not decorating an actual method var originalMethod = function () {}; if (methodName in DecoratedClass.prototype) { originalMethod = DecoratedClass.prototype[methodName]; } var decoratedMethod = DecoratorClass.prototype[methodName]; return function () { var unshift = Array.prototype.unshift; unshift.call(arguments, originalMethod); return decoratedMethod.apply(this, arguments); }; }; for (var d = 0; d < decoratedMethods.length; d++) { var decoratedMethod = decoratedMethods[d]; DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); } return DecoratedClass; }; var Observable = function () { this.listeners = {}; }; Observable.prototype.on = function (event, callback) { this.listeners = this.listeners || {}; if (event in this.listeners) { this.listeners[event].push(callback); } else { this.listeners[event] = [callback]; } }; Observable.prototype.trigger = function (event) { var slice = Array.prototype.slice; var params = slice.call(arguments, 1); this.listeners = this.listeners || {}; // Params should always come in as an array if (params == null) { params = []; } // If there are no arguments to the event, use a temporary object if (params.length === 0) { params.push({}); } // Set the `_type` of the first object to the event params[0]._type = event; if (event in this.listeners) { this.invoke(this.listeners[event], slice.call(arguments, 1)); } if ('*' in this.listeners) { this.invoke(this.listeners['*'], arguments); } }; Observable.prototype.invoke = function (listeners, params) { for (var i = 0, len = listeners.length; i < len; i++) { listeners[i].apply(this, params); } }; Utils.Observable = Observable; Utils.generateChars = function (length) { var chars = ''; for (var i = 0; i < length; i++) { var randomChar = Math.floor(Math.random() * 36); chars += randomChar.toString(36); } return chars; }; Utils.bind = function (func, context) { return function () { func.apply(context, arguments); }; }; Utils._convertData = function (data) { for (var originalKey in data) { var keys = originalKey.split('-'); var dataLevel = data; if (keys.length === 1) { continue; } for (var k = 0; k < keys.length; k++) { var key = keys[k]; // Lowercase the first letter // By default, dash-separated becomes camelCase key = key.substring(0, 1).toLowerCase() + key.substring(1); if (!(key in dataLevel)) { dataLevel[key] = {}; } if (k == keys.length - 1) { dataLevel[key] = data[originalKey]; } dataLevel = dataLevel[key]; } delete data[originalKey]; } return data; }; Utils.hasScroll = function (index, el) { // Adapted from the function created by @ShadowScripter // and adapted by @BillBarry on the Stack Exchange Code Review website. // The original code can be found at // http://codereview.stackexchange.com/q/13338 // and was designed to be used with the Sizzle selector engine. var $el = $(el); var overflowX = el.style.overflowX; var overflowY = el.style.overflowY; //Check both x and y declarations if (overflowX === overflowY && (overflowY === 'hidden' || overflowY === 'visible')) { return false; } if (overflowX === 'scroll' || overflowY === 'scroll') { return true; } return ($el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth); }; Utils.escapeMarkup = function (markup) { var replaceMap = { '\\': '\', '&': '&', '<': '<', '>': '>', '"': '"', '\'': ''', '/': '/' }; // Do not try to escape the markup if it's not a string if (typeof markup !== 'string') { return markup; } return String(markup).replace(/[&<>"'\/\\]/g, function (match) { return replaceMap[match]; }); }; // Append an array of jQuery nodes to a given element. Utils.appendMany = function ($element, $nodes) { // jQuery 1.7.x does not support $.fn.append() with an array // Fall back to a jQuery object collection using $.fn.add() if ($.fn.jquery.substr(0, 3) === '1.7') { var $jqNodes = $(); $.map($nodes, function (node) { $jqNodes = $jqNodes.add(node); }); $nodes = $jqNodes; } $element.append($nodes); }; return Utils; }); S2.define('select2/results',[ 'jquery', './utils' ], function ($, Utils) { function Results ($element, options, dataAdapter) { this.$element = $element; this.data = dataAdapter; this.options = options; Results.__super__.constructor.call(this); } Utils.Extend(Results, Utils.Observable); Results.prototype.render = function () { var $results = $( '<ul class="select2-results__options" role="tree"></ul>' ); if (this.options.get('multiple')) { $results.attr('aria-multiselectable', 'true'); } this.$results = $results; return $results; }; Results.prototype.clear = function () { this.$results.empty(); }; Results.prototype.displayMessage = function (params) { var escapeMarkup = this.options.get('escapeMarkup'); this.clear(); this.hideLoading(); var $message = $( '<li role="treeitem" aria-live="assertive"' + ' class="select2-results__option"></li>' ); var message = this.options.get('translations').get(params.message); $message.append( escapeMarkup( message(params.args) ) ); $message[0].className += ' select2-results__message'; this.$results.append($message); }; Results.prototype.hideMessages = function () { this.$results.find('.select2-results__message').remove(); }; Results.prototype.append = function (data) { this.hideLoading(); var $options = []; if (data.results == null || data.results.length === 0) { if (this.$results.children().length === 0) { this.trigger('results:message', { message: 'noResults' }); } return; } data.results = this.sort(data.results); for (var d = 0; d < data.results.length; d++) { var item = data.results[d]; var $option = this.option(item); $options.push($option); } this.$results.append($options); }; Results.prototype.position = function ($results, $dropdown) { var $resultsContainer = $dropdown.find('.select2-results'); $resultsContainer.append($results); }; Results.prototype.sort = function (data) { var sorter = this.options.get('sorter'); return sorter(data); }; Results.prototype.highlightFirstItem = function () { var $options = this.$results .find('.select2-results__option[aria-selected]'); var $selected = $options.filter('[aria-selected=true]'); // Check if there are any selected options if ($selected.length > 0) { // If there are selected options, highlight the first $selected.first().trigger('mouseenter'); } else { // If there are no selected options, highlight the first option // in the dropdown $options.first().trigger('mouseenter'); } this.ensureHighlightVisible(); }; Results.prototype.setClasses = function () { var self = this; this.data.current(function (selected) { var selectedIds = $.map(selected, function (s) { return s.id.toString(); }); var $options = self.$results .find('.select2-results__option[aria-selected]'); $options.each(function () { var $option = $(this); var item = $.data(this, 'data'); // id needs to be converted to a string when comparing var id = '' + item.id; if ((item.element != null && item.element.selected) || (item.element == null && $.inArray(id, selectedIds) > -1)) { $option.attr('aria-selected', 'true'); } else { $option.attr('aria-selected', 'false'); } }); }); }; Results.prototype.showLoading = function (params) { this.hideLoading(); var loadingMore = this.options.get('translations').get('searching'); var loading = { disabled: true, loading: true, text: loadingMore(params) }; var $loading = this.option(loading); $loading.className += ' loading-results'; this.$results.prepend($loading); }; Results.prototype.hideLoading = function () { this.$results.find('.loading-results').remove(); }; Results.prototype.option = function (data) { var option = document.createElement('li'); option.className = 'select2-results__option'; var attrs = { 'role': 'treeitem', 'aria-selected': 'false' }; if (data.disabled) { delete attrs['aria-selected']; attrs['aria-disabled'] = 'true'; } if (data.id == null) { delete attrs['aria-selected']; } if (data._resultId != null) { option.id = data._resultId; } if (data.title) { option.title = data.title; } if (data.children) { attrs.role = 'group'; attrs['aria-label'] = data.text; delete attrs['aria-selected']; } for (var attr in attrs) { var val = attrs[attr]; option.setAttribute(attr, val); } if (data.children) { var $option = $(option); var label = document.createElement('strong'); label.className = 'select2-results__group'; var $label = $(label); this.template(data, label); var $children = []; for (var c = 0; c < data.children.length; c++) { var child = data.children[c]; var $child = this.option(child); $children.push($child); } var $childrenContainer = $('<ul></ul>', { 'class': 'select2-results__options select2-results__options--nested' }); $childrenContainer.append($children); $option.append(label); $option.append($childrenContainer); } else { this.template(data, option); } $.data(option, 'data', data); return option; }; Results.prototype.bind = function (container, $container) { var self = this; var id = container.id + '-results'; this.$results.attr('id', id); container.on('results:all', function (params) { self.clear(); self.append(params.data); if (container.isOpen()) { self.setClasses(); self.highlightFirstItem(); } }); container.on('results:append', function (params) { self.append(params.data); if (container.isOpen()) { self.setClasses(); } }); container.on('query', function (params) { self.hideMessages(); self.showLoading(params); }); container.on('select', function () { if (!container.isOpen()) { return; } self.setClasses(); self.highlightFirstItem(); }); container.on('unselect', function () { if (!container.isOpen()) { return; } self.setClasses(); self.highlightFirstItem(); }); container.on('open', function () { // When the dropdown is open, aria-expended="true" self.$results.attr('aria-expanded', 'true'); self.$results.attr('aria-hidden', 'false'); self.setClasses(); self.ensureHighlightVisible(); }); container.on('close', function () { // When the dropdown is closed, aria-expended="false" self.$results.attr('aria-expanded', 'false'); self.$results.attr('aria-hidden', 'true'); self.$results.removeAttr('aria-activedescendant'); }); container.on('results:toggle', function () { var $highlighted = self.getHighlightedResults(); if ($highlighted.length === 0) { return; } $highlighted.trigger('mouseup'); }); container.on('results:select', function () { var $highlighted = self.getHighlightedResults(); if ($highlighted.length === 0) { return; } var data = $highlighted.data('data'); if ($highlighted.attr('aria-selected') == 'true') { self.trigger('close', {}); } else { self.trigger('select', { data: data }); } }); container.on('results:previous', function () { var $highlighted = self.getHighlightedResults(); var $options = self.$results.find('[aria-selected]'); var currentIndex = $options.index($highlighted); // If we are already at te top, don't move further if (currentIndex === 0) { return; } var nextIndex = currentIndex - 1; // If none are highlighted, highlight the first if ($highlighted.length === 0) { nextIndex = 0; } var $next = $options.eq(nextIndex); $next.trigger('mouseenter'); var currentOffset = self.$results.offset().top; var nextTop = $next.offset().top; var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); if (nextIndex === 0) { self.$results.scrollTop(0); } else if (nextTop - currentOffset < 0) { self.$results.scrollTop(nextOffset); } }); container.on('results:next', function () { var $highlighted = self.getHighlightedResults(); var $options = self.$results.find('[aria-selected]'); var currentIndex = $options.index($highlighted); var nextIndex = currentIndex + 1; // If we are at the last option, stay there if (nextIndex >= $options.length) { return; } var $next = $options.eq(nextIndex); $next.trigger('mouseenter'); var currentOffset = self.$results.offset().top + self.$results.outerHeight(false); var nextBottom = $next.offset().top + $next.outerHeight(false); var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; if (nextIndex === 0) { self.$results.scrollTop(0); } else if (nextBottom > currentOffset) { self.$results.scrollTop(nextOffset); } }); container.on('results:focus', function (params) { params.element.addClass('select2-results__option--highlighted'); }); container.on('results:message', function (params) { self.displayMessage(params); }); if ($.fn.mousewheel) { this.$results.on('mousewheel', function (e) { var top = self.$results.scrollTop(); var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); if (isAtTop) { self.$results.scrollTop(0); e.preventDefault(); e.stopPropagation(); } else if (isAtBottom) { self.$results.scrollTop( self.$results.get(0).scrollHeight - self.$results.height() ); e.preventDefault(); e.stopPropagation(); } }); } this.$results.on('mouseup', '.select2-results__option[aria-selected]', function (evt) { var $this = $(this); var data = $this.data('data'); if ($this.attr('aria-selected') === 'true') { if (self.options.get('multiple')) { self.trigger('unselect', { originalEvent: evt, data: data }); } else { self.trigger('close', {}); } return; } self.trigger('select', { originalEvent: evt, data: data }); }); this.$results.on('mouseenter', '.select2-results__option[aria-selected]', function (evt) { var data = $(this).data('data'); self.getHighlightedResults() .removeClass('select2-results__option--highlighted'); self.trigger('results:focus', { data: data, element: $(this) }); }); }; Results.prototype.getHighlightedResults = function () { var $highlighted = this.$results .find('.select2-results__option--highlighted'); return $highlighted; }; Results.prototype.destroy = function () { this.$results.remove(); }; Results.prototype.ensureHighlightVisible = function () { var $highlighted = this.getHighlightedResults(); if ($highlighted.length === 0) { return; } var $options = this.$results.find('[aria-selected]'); var currentIndex = $options.index($highlighted); var currentOffset = this.$results.offset().top; var nextTop = $highlighted.offset().top; var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); var offsetDelta = nextTop - currentOffset; nextOffset -= $highlighted.outerHeight(false) * 2; if (currentIndex <= 2) { this.$results.scrollTop(0); } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { this.$results.scrollTop(nextOffset); } }; Results.prototype.template = function (result, container) { var template = this.options.get('templateResult'); var escapeMarkup = this.options.get('escapeMarkup'); var content = template(result, container); if (content == null) { container.style.display = 'none'; } else if (typeof content === 'string') { container.innerHTML = escapeMarkup(content); } else { $(container).append(content); } }; return Results; }); S2.define('select2/keys',[ ], function () { var KEYS = { BACKSPACE: 8, TAB: 9, ENTER: 13, SHIFT: 16, CTRL: 17, ALT: 18, ESC: 27, SPACE: 32, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, DELETE: 46 }; return KEYS; }); S2.define('select2/selection/base',[ 'jquery', '../utils', '../keys' ], function ($, Utils, KEYS) { function BaseSelection ($element, options) { this.$element = $element; this.options = options; BaseSelection.__super__.constructor.call(this); } Utils.Extend(BaseSelection, Utils.Observable); BaseSelection.prototype.render = function () { var $selection = $( '<span class="select2-selection" role="combobox" ' + ' aria-haspopup="true" aria-expanded="false">' + '</span>' ); this._tabindex = 0; if (this.$element.data('old-tabindex') != null) { this._tabindex = this.$element.data('old-tabindex'); } else if (this.$element.attr('tabindex') != null) { this._tabindex = this.$element.attr('tabindex'); } $selection.attr('title', this.$element.attr('title')); $selection.attr('tabindex', this._tabindex); this.$selection = $selection; return $selection; }; BaseSelection.prototype.bind = function (container, $container) { var self = this; var id = container.id + '-container'; var resultsId = container.id + '-results'; this.container = container; this.$selection.on('focus', function (evt) { self.trigger('focus', evt); }); this.$selection.on('blur', function (evt) { self._handleBlur(evt); }); this.$selection.on('keydown', function (evt) { self.trigger('keypress', evt); if (evt.which === KEYS.SPACE) { evt.preventDefault(); } }); container.on('results:focus', function (params) { self.$selection.attr('aria-activedescendant', params.data._resultId); }); container.on('selection:update', function (params) { self.update(params.data); }); container.on('open', function () { // When the dropdown is open, aria-expanded="true" self.$selection.attr('aria-expanded', 'true'); self.$selection.attr('aria-owns', resultsId); self._attachCloseHandler(container); }); container.on('close', function () { // When the dropdown is closed, aria-expanded="false" self.$selection.attr('aria-expanded', 'false'); self.$selection.removeAttr('aria-activedescendant'); self.$selection.removeAttr('aria-owns'); self.$selection.focus(); self._detachCloseHandler(container); }); container.on('enable', function () { self.$selection.attr('tabindex', self._tabindex); }); container.on('disable', function () { self.$selection.attr('tabindex', '-1'); }); }; BaseSelection.prototype._handleBlur = function (evt) { var self = this; // This needs to be delayed as the active element is the body when the tab // key is pressed, possibly along with others. window.setTimeout(function () { // Don't trigger `blur` if the focus is still in the selection if ( (document.activeElement == self.$selection[0]) || ($.contains(self.$selection[0], document.activeElement)) ) { return; } self.trigger('blur', evt); }, 1); }; BaseSelection.prototype._attachCloseHandler = function (container) { var self = this; $(document.body).on('mousedown.select2.' + container.id, function (e) { var $target = $(e.target); var $select = $target.closest('.select2'); var $all = $('.select2.select2-container--open'); $all.each(function () { var $this = $(this); if (this == $select[0]) { return; } var $element = $this.data('element'); $element.select2('close'); }); }); }; BaseSelection.prototype._detachCloseHandler = function (container) { $(document.body).off('mousedown.select2.' + container.id); }; BaseSelection.prototype.position = function ($selection, $container) { var $selectionContainer = $container.find('.selection'); $selectionContainer.append($selection); }; BaseSelection.prototype.destroy = function () { this._detachCloseHandler(this.container); }; BaseSelection.prototype.update = function (data) { throw new Error('The `update` method must be defined in child classes.'); }; return BaseSelection; }); S2.define('select2/selection/single',[ 'jquery', './base', '../utils', '../keys' ], function ($, BaseSelection, Utils, KEYS) { function SingleSelection () { SingleSelection.__super__.constructor.apply(this, arguments); } Utils.Extend(SingleSelection, BaseSelection); SingleSelection.prototype.render = function () { var $selection = SingleSelection.__super__.render.call(this); $selection.addClass('select2-selection--single'); $selection.html( '<span class="select2-selection__rendered"></span>' + '<span class="select2-selection__arrow" role="presentation">' + '<b role="presentation"></b>' + '</span>' ); return $selection; }; SingleSelection.prototype.bind = function (container, $container) { var self = this; SingleSelection.__super__.bind.apply(this, arguments); var id = container.id + '-container'; this.$selection.find('.select2-selection__rendered').attr('id', id); this.$selection.attr('aria-labelledby', id); this.$selection.on('mousedown', function (evt) { // Only respond to left clicks if (evt.which !== 1) { return; } self.trigger('toggle', { originalEvent: evt }); }); this.$selection.on('focus', function (evt) { // User focuses on the container }); this.$selection.on('blur', function (evt) { // User exits the container }); container.on('focus', function (evt) { if (!container.isOpen()) { self.$selection.focus(); } }); container.on('selection:update', function (params) { self.update(params.data); }); }; SingleSelection.prototype.clear = function () { this.$selection.find('.select2-selection__rendered').empty(); }; SingleSelection.prototype.display = function (data, container) { var template = this.options.get('templateSelection'); var escapeMarkup = this.options.get('escapeMarkup'); return escapeMarkup(template(data, container)); }; SingleSelection.prototype.selectionContainer = function () { return $('<span></span>'); }; SingleSelection.prototype.update = function (data) { if (data.length === 0) { this.clear(); return; } var selection = data[0]; var $rendered = this.$selection.find('.select2-selection__rendered'); var formatted = this.display(selection, $rendered); $rendered.empty().append(formatted); $rendered.prop('title', selection.title || selection.text); }; return SingleSelection; }); S2.define('select2/selection/multiple',[ 'jquery', './base', '../utils' ], function ($, BaseSelection, Utils) { function MultipleSelection ($element, options) { MultipleSelection.__super__.constructor.apply(this, arguments); } Utils.Extend(MultipleSelection, BaseSelection); MultipleSelection.prototype.render = function () { var $selection = MultipleSelection.__super__.render.call(this); $selection.addClass('select2-selection--multiple'); $selection.html( '<ul class="select2-selection__rendered"></ul>' ); return $selection; }; MultipleSelection.prototype.bind = function (container, $container) { var self = this; MultipleSelection.__super__.bind.apply(this, arguments); this.$selection.on('click', function (evt) { self.trigger('toggle', { originalEvent: evt }); }); this.$selection.on( 'click', '.select2-selection__choice__remove', function (evt) { // Ignore the event if it is disabled if (self.options.get('disabled')) { return; } var $remove = $(this); var $selection = $remove.parent(); var data = $selection.data('data'); self.trigger('unselect', { originalEvent: evt, data: data }); } ); }; MultipleSelection.prototype.clear = function () { this.$selection.find('.select2-selection__rendered').empty(); }; MultipleSelection.prototype.display = function (data, container) { var template = this.options.get('templateSelection'); var escapeMarkup = this.options.get('escapeMarkup'); return escapeMarkup(template(data, container)); }; MultipleSelection.prototype.selectionContainer = function () { var $container = $( '<li class="select2-selection__choice">' + '<span class="select2-selection__choice__remove" role="presentation">' + '×' + '</span>' + '</li>' ); return $container; }; MultipleSelection.prototype.update = function (data) { this.clear(); if (data.length === 0) { return; } var $selections = []; for (var d = 0; d < data.length; d++) { var selection = data[d]; var $selection = this.selectionContainer(); var formatted = this.display(selection, $selection); $selection.append(formatted); $selection.prop('title', selection.title || selection.text); $selection.data('data', selection); $selections.push($selection); } var $rendered = this.$selection.find('.select2-selection__rendered'); Utils.appendMany($rendered, $selections); }; return MultipleSelection; }); S2.define('select2/selection/placeholder',[ '../utils' ], function (Utils) { function Placeholder (decorated, $element, options) { this.placeholder = this.normalizePlaceholder(options.get('placeholder')); decorated.call(this, $element, options); } Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { if (typeof placeholder === 'string') { placeholder = { id: '', text: placeholder }; } return placeholder; }; Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { var $placeholder = this.selectionContainer(); $placeholder.html(this.display(placeholder)); $placeholder.addClass('select2-selection__placeholder') .removeClass('select2-selection__choice'); return $placeholder; }; Placeholder.prototype.update = function (decorated, data) { var singlePlaceholder = ( data.length == 1 && data[0].id != this.placeholder.id ); var multipleSelections = data.length > 1; if (multipleSelections || singlePlaceholder) { return decorated.call(this, data); } this.clear(); var $placeholder = this.createPlaceholder(this.placeholder); this.$selection.find('.select2-selection__rendered').append($placeholder); }; return Placeholder; }); S2.define('select2/selection/allowClear',[ 'jquery', '../keys' ], function ($, KEYS) { function AllowClear () { } AllowClear.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); if (this.placeholder == null) { if (this.options.get('debug') && window.console && console.error) { console.error( 'Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.' ); } } this.$selection.on('mousedown', '.select2-selection__clear', function (evt) { self._handleClear(evt); }); container.on('keypress', function (evt) { self._handleKeyboardClear(evt, container); }); }; AllowClear.prototype._handleClear = function (_, evt) { // Ignore the event if it is disabled if (this.options.get('disabled')) { return; } var $clear = this.$selection.find('.select2-selection__clear'); // Ignore the event if nothing has been selected if ($clear.length === 0) { return; } evt.stopPropagation(); var data = $clear.data('data'); for (var d = 0; d < data.length; d++) { var unselectData = { data: data[d] }; // Trigger the `unselect` event, so people can prevent it from being // cleared. this.trigger('unselect', unselectData); // If the event was prevented, don't clear it out. if (unselectData.prevented) { return; } } this.$element.val(this.placeholder.id).trigger('change'); this.trigger('toggle', {}); }; AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { if (container.isOpen()) { return; } if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { this._handleClear(evt); } }; AllowClear.prototype.update = function (decorated, data) { decorated.call(this, data); if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) { return; } var $remove = $( '<span class="select2-selection__clear">' + '×' + '</span>' ); $remove.data('data', data); this.$selection.find('.select2-selection__rendered').prepend($remove); }; return AllowClear; }); S2.define('select2/selection/search',[ 'jquery', '../utils', '../keys' ], function ($, Utils, KEYS) { function Search (decorated, $element, options) { decorated.call(this, $element, options); } Search.prototype.render = function (decorated) { var $search = $( '<li class="select2-search select2-search--inline">' + '<input class="select2-search__field" type="search" tabindex="-1"' + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + ' spellcheck="false" role="textbox" aria-autocomplete="list" />' + '</li>' ); this.$searchContainer = $search; this.$search = $search.find('input'); var $rendered = decorated.call(this); this._transferTabIndex(); return $rendered; }; Search.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('open', function () { self.$search.trigger('focus'); }); container.on('close', function () { self.$search.val(''); self.$search.removeAttr('aria-activedescendant'); self.$search.trigger('focus'); }); container.on('enable', function () { self.$search.prop('disabled', false); self._transferTabIndex(); }); container.on('disable', function () { self.$search.prop('disabled', true); }); container.on('focus', function (evt) { self.$search.trigger('focus'); }); container.on('results:focus', function (params) { self.$search.attr('aria-activedescendant', params.id); }); this.$selection.on('focusin', '.select2-search--inline', function (evt) { self.trigger('focus', evt); }); this.$selection.on('focusout', '.select2-search--inline', function (evt) { self._handleBlur(evt); }); this.$selection.on('keydown', '.select2-search--inline', function (evt) { evt.stopPropagation(); self.trigger('keypress', evt); self._keyUpPrevented = evt.isDefaultPrevented(); var key = evt.which; if (key === KEYS.BACKSPACE && self.$search.val() === '') { var $previousChoice = self.$searchContainer .prev('.select2-selection__choice'); if ($previousChoice.length > 0) { var item = $previousChoice.data('data'); self.searchRemoveChoice(item); evt.preventDefault(); } } }); // Try to detect the IE version should the `documentMode` property that // is stored on the document. This is only implemented in IE and is // slightly cleaner than doing a user agent check. // This property is not available in Edge, but Edge also doesn't have // this bug. var msie = document.documentMode; var disableInputEvents = msie && msie <= 11; // Workaround for browsers which do not support the `input` event // This will prevent double-triggering of events for browsers which support // both the `keyup` and `input` events. this.$selection.on( 'input.searchcheck', '.select2-search--inline', function (evt) { // IE will trigger the `input` event when a placeholder is used on a // search box. To get around this issue, we are forced to ignore all // `input` events in IE and keep using `keyup`. if (disableInputEvents) { self.$selection.off('input.search input.searchcheck'); return; } // Unbind the duplicated `keyup` event self.$selection.off('keyup.search'); } ); this.$selection.on( 'keyup.search input.search', '.select2-search--inline', function (evt) { // IE will trigger the `input` event when a placeholder is used on a // search box. To get around this issue, we are forced to ignore all // `input` events in IE and keep using `keyup`. if (disableInputEvents && evt.type === 'input') { self.$selection.off('input.search input.searchcheck'); return; } var key = evt.which; // We can freely ignore events from modifier keys if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { return; } // Tabbing will be handled during the `keydown` phase if (key == KEYS.TAB) { return; } self.handleSearch(evt); } ); }; /** * This method will transfer the tabindex attribute from the rendered * selection to the search box. This allows for the search box to be used as * the primary focus instead of the selection container. * * @private */ Search.prototype._transferTabIndex = function (decorated) { this.$search.attr('tabindex', this.$selection.attr('tabindex')); this.$selection.attr('tabindex', '-1'); }; Search.prototype.createPlaceholder = function (decorated, placeholder) { this.$search.attr('placeholder', placeholder.text); }; Search.prototype.update = function (decorated, data) { var searchHadFocus = this.$search[0] == document.activeElement; this.$search.attr('placeholder', ''); decorated.call(this, data); this.$selection.find('.select2-selection__rendered') .append(this.$searchContainer); this.resizeSearch(); if (searchHadFocus) { this.$search.focus(); } }; Search.prototype.handleSearch = function () { this.resizeSearch(); if (!this._keyUpPrevented) { var input = this.$search.val(); this.trigger('query', { term: input }); } this._keyUpPrevented = false; }; Search.prototype.searchRemoveChoice = function (decorated, item) { this.trigger('unselect', { data: item }); this.$search.val(item.text); this.handleSearch(); }; Search.prototype.resizeSearch = function () { this.$search.css('width', '25px'); var width = ''; if (this.$search.attr('placeholder') !== '') { width = this.$selection.find('.select2-selection__rendered').innerWidth(); } else { var minimumWidth = this.$search.val().length + 1; width = (minimumWidth * 0.75) + 'em'; } this.$search.css('width', width); }; return Search; }); S2.define('select2/selection/eventRelay',[ 'jquery' ], function ($) { function EventRelay () { } EventRelay.prototype.bind = function (decorated, container, $container) { var self = this; var relayEvents = [ 'open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting' ]; var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; decorated.call(this, container, $container); container.on('*', function (name, params) { // Ignore events that should not be relayed if ($.inArray(name, relayEvents) === -1) { return; } // The parameters should always be an object params = params || {}; // Generate the jQuery event for the Select2 event var evt = $.Event('select2:' + name, { params: params }); self.$element.trigger(evt); // Only handle preventable events if it was one if ($.inArray(name, preventableEvents) === -1) { return; } params.prevented = evt.isDefaultPrevented(); }); }; return EventRelay; }); S2.define('select2/translation',[ 'jquery', 'require' ], function ($, require) { function Translation (dict) { this.dict = dict || {}; } Translation.prototype.all = function () { return this.dict; }; Translation.prototype.get = function (key) { return this.dict[key]; }; Translation.prototype.extend = function (translation) { this.dict = $.extend({}, translation.all(), this.dict); }; // Static functions Translation._cache = {}; Translation.loadPath = function (path) { if (!(path in Translation._cache)) { var translations = require(path); Translation._cache[path] = translations; } return new Translation(Translation._cache[path]); }; return Translation; }); S2.define('select2/diacritics',[ ], function () { var diacritics = { '\u24B6': 'A', '\uFF21': 'A', '\u00C0': 'A', '\u00C1': 'A', '\u00C2': 'A', '\u1EA6': 'A', '\u1EA4': 'A', '\u1EAA': 'A', '\u1EA8': 'A', '\u00C3': 'A', '\u0100': 'A', '\u0102': 'A', '\u1EB0': 'A', '\u1EAE': 'A', '\u1EB4': 'A', '\u1EB2': 'A', '\u0226': 'A', '\u01E0': 'A', '\u00C4': 'A', '\u01DE': 'A', '\u1EA2': 'A', '\u00C5': 'A', '\u01FA': 'A', '\u01CD': 'A', '\u0200': 'A', '\u0202': 'A', '\u1EA0': 'A', '\u1EAC': 'A', '\u1EB6': 'A', '\u1E00': 'A', '\u0104': 'A', '\u023A': 'A', '\u2C6F': 'A', '\uA732': 'AA', '\u00C6': 'AE', '\u01FC': 'AE', '\u01E2': 'AE', '\uA734': 'AO', '\uA736': 'AU', '\uA738': 'AV', '\uA73A': 'AV', '\uA73C': 'AY', '\u24B7': 'B', '\uFF22': 'B', '\u1E02': 'B', '\u1E04': 'B', '\u1E06': 'B', '\u0243': 'B', '\u0182': 'B', '\u0181': 'B', '\u24B8': 'C', '\uFF23': 'C', '\u0106': 'C', '\u0108': 'C', '\u010A': 'C', '\u010C': 'C', '\u00C7': 'C', '\u1E08': 'C', '\u0187': 'C', '\u023B': 'C', '\uA73E': 'C', '\u24B9': 'D', '\uFF24': 'D', '\u1E0A': 'D', '\u010E': 'D', '\u1E0C': 'D', '\u1E10': 'D', '\u1E12': 'D', '\u1E0E': 'D', '\u0110': 'D', '\u018B': 'D', '\u018A': 'D', '\u0189': 'D', '\uA779': 'D', '\u01F1': 'DZ', '\u01C4': 'DZ', '\u01F2': 'Dz', '\u01C5': 'Dz', '\u24BA': 'E', '\uFF25': 'E', '\u00C8': 'E', '\u00C9': 'E', '\u00CA': 'E', '\u1EC0': 'E', '\u1EBE': 'E', '\u1EC4': 'E', '\u1EC2': 'E', '\u1EBC': 'E', '\u0112': 'E', '\u1E14': 'E', '\u1E16': 'E', '\u0114': 'E', '\u0116': 'E', '\u00CB': 'E', '\u1EBA': 'E', '\u011A': 'E', '\u0204': 'E', '\u0206': 'E', '\u1EB8': 'E', '\u1EC6': 'E', '\u0228': 'E', '\u1E1C': 'E', '\u0118': 'E', '\u1E18': 'E', '\u1E1A': 'E', '\u0190': 'E', '\u018E': 'E', '\u24BB': 'F', '\uFF26': 'F', '\u1E1E': 'F', '\u0191': 'F', '\uA77B': 'F', '\u24BC': 'G', '\uFF27': 'G', '\u01F4': 'G', '\u011C': 'G', '\u1E20': 'G', '\u011E': 'G', '\u0120': 'G', '\u01E6': 'G', '\u0122': 'G', '\u01E4': 'G', '\u0193': 'G', '\uA7A0': 'G', '\uA77D': 'G', '\uA77E': 'G', '\u24BD': 'H', '\uFF28': 'H', '\u0124': 'H', '\u1E22': 'H', '\u1E26': 'H', '\u021E': 'H', '\u1E24': 'H', '\u1E28': 'H', '\u1E2A': 'H', '\u0126': 'H', '\u2C67': 'H', '\u2C75': 'H', '\uA78D': 'H', '\u24BE': 'I', '\uFF29': 'I', '\u00CC': 'I', '\u00CD': 'I', '\u00CE': 'I', '\u0128': 'I', '\u012A': 'I', '\u012C': 'I', '\u0130': 'I', '\u00CF': 'I', '\u1E2E': 'I', '\u1EC8': 'I', '\u01CF': 'I', '\u0208': 'I', '\u020A': 'I', '\u1ECA': 'I', '\u012E': 'I', '\u1E2C': 'I', '\u0197': 'I', '\u24BF': 'J', '\uFF2A': 'J', '\u0134': 'J', '\u0248': 'J', '\u24C0': 'K', '\uFF2B': 'K', '\u1E30': 'K', '\u01E8': 'K', '\u1E32': 'K', '\u0136': 'K', '\u1E34': 'K', '\u0198': 'K', '\u2C69': 'K', '\uA740': 'K', '\uA742': 'K', '\uA744': 'K', '\uA7A2': 'K', '\u24C1': 'L', '\uFF2C': 'L', '\u013F': 'L', '\u0139': 'L', '\u013D': 'L', '\u1E36': 'L', '\u1E38': 'L', '\u013B': 'L', '\u1E3C': 'L', '\u1E3A': 'L', '\u0141': 'L', '\u023D': 'L', '\u2C62': 'L', '\u2C60': 'L', '\uA748': 'L', '\uA746': 'L', '\uA780': 'L', '\u01C7': 'LJ', '\u01C8': 'Lj', '\u24C2': 'M', '\uFF2D': 'M', '\u1E3E': 'M', '\u1E40': 'M', '\u1E42': 'M', '\u2C6E': 'M', '\u019C': 'M', '\u24C3': 'N', '\uFF2E': 'N', '\u01F8': 'N', '\u0143': 'N', '\u00D1': 'N', '\u1E44': 'N', '\u0147': 'N', '\u1E46': 'N', '\u0145': 'N', '\u1E4A': 'N', '\u1E48': 'N', '\u0220': 'N', '\u019D': 'N', '\uA790': 'N', '\uA7A4': 'N', '\u01CA': 'NJ', '\u01CB': 'Nj', '\u24C4': 'O', '\uFF2F': 'O', '\u00D2': 'O', '\u00D3': 'O', '\u00D4': 'O', '\u1ED2': 'O', '\u1ED0': 'O', '\u1ED6': 'O', '\u1ED4': 'O', '\u00D5': 'O', '\u1E4C': 'O', '\u022C': 'O', '\u1E4E': 'O', '\u014C': 'O', '\u1E50': 'O', '\u1E52': 'O', '\u014E': 'O', '\u022E': 'O', '\u0230': 'O', '\u00D6': 'O', '\u022A': 'O', '\u1ECE': 'O', '\u0150': 'O', '\u01D1': 'O', '\u020C': 'O', '\u020E': 'O', '\u01A0': 'O', '\u1EDC': 'O', '\u1EDA': 'O', '\u1EE0': 'O', '\u1EDE': 'O', '\u1EE2': 'O', '\u1ECC': 'O', '\u1ED8': 'O', '\u01EA': 'O', '\u01EC': 'O', '\u00D8': 'O', '\u01FE': 'O', '\u0186': 'O', '\u019F': 'O', '\uA74A': 'O', '\uA74C': 'O', '\u01A2': 'OI', '\uA74E': 'OO', '\u0222': 'OU', '\u24C5': 'P', '\uFF30': 'P', '\u1E54': 'P', '\u1E56': 'P', '\u01A4': 'P', '\u2C63': 'P', '\uA750': 'P', '\uA752': 'P', '\uA754': 'P', '\u24C6': 'Q', '\uFF31': 'Q', '\uA756': 'Q', '\uA758': 'Q', '\u024A': 'Q', '\u24C7': 'R', '\uFF32': 'R', '\u0154': 'R', '\u1E58': 'R', '\u0158': 'R', '\u0210': 'R', '\u0212': 'R', '\u1E5A': 'R', '\u1E5C': 'R', '\u0156': 'R', '\u1E5E': 'R', '\u024C': 'R', '\u2C64': 'R', '\uA75A': 'R', '\uA7A6': 'R', '\uA782': 'R', '\u24C8': 'S', '\uFF33': 'S', '\u1E9E': 'S', '\u015A': 'S', '\u1E64': 'S', '\u015C': 'S', '\u1E60': 'S', '\u0160': 'S', '\u1E66': 'S', '\u1E62': 'S', '\u1E68': 'S', '\u0218': 'S', '\u015E': 'S', '\u2C7E': 'S', '\uA7A8': 'S', '\uA784': 'S', '\u24C9': 'T', '\uFF34': 'T', '\u1E6A': 'T', '\u0164': 'T', '\u1E6C': 'T', '\u021A': 'T', '\u0162': 'T', '\u1E70': 'T', '\u1E6E': 'T', '\u0166': 'T', '\u01AC': 'T', '\u01AE': 'T', '\u023E': 'T', '\uA786': 'T', '\uA728': 'TZ', '\u24CA': 'U', '\uFF35': 'U', '\u00D9': 'U', '\u00DA': 'U', '\u00DB': 'U', '\u0168': 'U', '\u1E78': 'U', '\u016A': 'U', '\u1E7A': 'U', '\u016C': 'U', '\u00DC': 'U', '\u01DB': 'U', '\u01D7': 'U', '\u01D5': 'U', '\u01D9': 'U', '\u1EE6': 'U', '\u016E': 'U', '\u0170': 'U', '\u01D3': 'U', '\u0214': 'U', '\u0216': 'U', '\u01AF': 'U', '\u1EEA': 'U', '\u1EE8': 'U', '\u1EEE': 'U', '\u1EEC': 'U', '\u1EF0': 'U', '\u1EE4': 'U', '\u1E72': 'U', '\u0172': 'U', '\u1E76': 'U', '\u1E74': 'U', '\u0244': 'U', '\u24CB': 'V', '\uFF36': 'V', '\u1E7C': 'V', '\u1E7E': 'V', '\u01B2': 'V', '\uA75E': 'V', '\u0245': 'V', '\uA760': 'VY', '\u24CC': 'W', '\uFF37': 'W', '\u1E80': 'W', '\u1E82': 'W', '\u0174': 'W', '\u1E86': 'W', '\u1E84': 'W', '\u1E88': 'W', '\u2C72': 'W', '\u24CD': 'X', '\uFF38': 'X', '\u1E8A': 'X', '\u1E8C': 'X', '\u24CE': 'Y', '\uFF39': 'Y', '\u1EF2': 'Y', '\u00DD': 'Y', '\u0176': 'Y', '\u1EF8': 'Y', '\u0232': 'Y', '\u1E8E': 'Y', '\u0178': 'Y', '\u1EF6': 'Y', '\u1EF4': 'Y', '\u01B3': 'Y', '\u024E': 'Y', '\u1EFE': 'Y', '\u24CF': 'Z', '\uFF3A': 'Z', '\u0179': 'Z', '\u1E90': 'Z', '\u017B': 'Z', '\u017D': 'Z', '\u1E92': 'Z', '\u1E94': 'Z', '\u01B5': 'Z', '\u0224': 'Z', '\u2C7F': 'Z', '\u2C6B': 'Z', '\uA762': 'Z', '\u24D0': 'a', '\uFF41': 'a', '\u1E9A': 'a', '\u00E0': 'a', '\u00E1': 'a', '\u00E2': 'a', '\u1EA7': 'a', '\u1EA5': 'a', '\u1EAB': 'a', '\u1EA9': 'a', '\u00E3': 'a', '\u0101': 'a', '\u0103': 'a', '\u1EB1': 'a', '\u1EAF': 'a', '\u1EB5': 'a', '\u1EB3': 'a', '\u0227': 'a', '\u01E1': 'a', '\u00E4': 'a', '\u01DF': 'a', '\u1EA3': 'a', '\u00E5': 'a', '\u01FB': 'a', '\u01CE': 'a', '\u0201': 'a', '\u0203': 'a', '\u1EA1': 'a', '\u1EAD': 'a', '\u1EB7': 'a', '\u1E01': 'a', '\u0105': 'a', '\u2C65': 'a', '\u0250': 'a', '\uA733': 'aa', '\u00E6': 'ae', '\u01FD': 'ae', '\u01E3': 'ae', '\uA735': 'ao', '\uA737': 'au', '\uA739': 'av', '\uA73B': 'av', '\uA73D': 'ay', '\u24D1': 'b', '\uFF42': 'b', '\u1E03': 'b', '\u1E05': 'b', '\u1E07': 'b', '\u0180': 'b', '\u0183': 'b', '\u0253': 'b', '\u24D2': 'c', '\uFF43': 'c', '\u0107': 'c', '\u0109': 'c', '\u010B': 'c', '\u010D': 'c', '\u00E7': 'c', '\u1E09': 'c', '\u0188': 'c', '\u023C': 'c', '\uA73F': 'c', '\u2184': 'c', '\u24D3': 'd', '\uFF44': 'd', '\u1E0B': 'd', '\u010F': 'd', '\u1E0D': 'd', '\u1E11': 'd', '\u1E13': 'd', '\u1E0F': 'd', '\u0111': 'd', '\u018C': 'd', '\u0256': 'd', '\u0257': 'd', '\uA77A': 'd', '\u01F3': 'dz', '\u01C6': 'dz', '\u24D4': 'e', '\uFF45': 'e', '\u00E8': 'e', '\u00E9': 'e', '\u00EA': 'e', '\u1EC1': 'e', '\u1EBF': 'e', '\u1EC5': 'e', '\u1EC3': 'e', '\u1EBD': 'e', '\u0113': 'e', '\u1E15': 'e', '\u1E17': 'e', '\u0115': 'e', '\u0117': 'e', '\u00EB': 'e', '\u1EBB': 'e', '\u011B': 'e', '\u0205': 'e', '\u0207': 'e', '\u1EB9': 'e', '\u1EC7': 'e', '\u0229': 'e', '\u1E1D': 'e', '\u0119': 'e', '\u1E19': 'e', '\u1E1B': 'e', '\u0247': 'e', '\u025B': 'e', '\u01DD': 'e', '\u24D5': 'f', '\uFF46': 'f', '\u1E1F': 'f', '\u0192': 'f', '\uA77C': 'f', '\u24D6': 'g', '\uFF47': 'g', '\u01F5': 'g', '\u011D': 'g', '\u1E21': 'g', '\u011F': 'g', '\u0121': 'g', '\u01E7': 'g', '\u0123': 'g', '\u01E5': 'g', '\u0260': 'g', '\uA7A1': 'g', '\u1D79': 'g', '\uA77F': 'g', '\u24D7': 'h', '\uFF48': 'h', '\u0125': 'h', '\u1E23': 'h', '\u1E27': 'h', '\u021F': 'h', '\u1E25': 'h', '\u1E29': 'h', '\u1E2B': 'h', '\u1E96': 'h', '\u0127': 'h', '\u2C68': 'h', '\u2C76': 'h', '\u0265': 'h', '\u0195': 'hv', '\u24D8': 'i', '\uFF49': 'i', '\u00EC': 'i', '\u00ED': 'i', '\u00EE': 'i', '\u0129': 'i', '\u012B': 'i', '\u012D': 'i', '\u00EF': 'i', '\u1E2F': 'i', '\u1EC9': 'i', '\u01D0': 'i', '\u0209': 'i', '\u020B': 'i', '\u1ECB': 'i', '\u012F': 'i', '\u1E2D': 'i', '\u0268': 'i', '\u0131': 'i', '\u24D9': 'j', '\uFF4A': 'j', '\u0135': 'j', '\u01F0': 'j', '\u0249': 'j', '\u24DA': 'k', '\uFF4B': 'k', '\u1E31': 'k', '\u01E9': 'k', '\u1E33': 'k', '\u0137': 'k', '\u1E35': 'k', '\u0199': 'k', '\u2C6A': 'k', '\uA741': 'k', '\uA743': 'k', '\uA745': 'k', '\uA7A3': 'k', '\u24DB': 'l', '\uFF4C': 'l', '\u0140': 'l', '\u013A': 'l', '\u013E': 'l', '\u1E37': 'l', '\u1E39': 'l', '\u013C': 'l', '\u1E3D': 'l', '\u1E3B': 'l', '\u017F': 'l', '\u0142': 'l', '\u019A': 'l', '\u026B': 'l', '\u2C61': 'l', '\uA749': 'l', '\uA781': 'l', '\uA747': 'l', '\u01C9': 'lj', '\u24DC': 'm', '\uFF4D': 'm', '\u1E3F': 'm', '\u1E41': 'm', '\u1E43': 'm', '\u0271': 'm', '\u026F': 'm', '\u24DD': 'n', '\uFF4E': 'n', '\u01F9': 'n', '\u0144': 'n', '\u00F1': 'n', '\u1E45': 'n', '\u0148': 'n', '\u1E47': 'n', '\u0146': 'n', '\u1E4B': 'n', '\u1E49': 'n', '\u019E': 'n', '\u0272': 'n', '\u0149': 'n', '\uA791': 'n', '\uA7A5': 'n', '\u01CC': 'nj', '\u24DE': 'o', '\uFF4F': 'o', '\u00F2': 'o', '\u00F3': 'o', '\u00F4': 'o', '\u1ED3': 'o', '\u1ED1': 'o', '\u1ED7': 'o', '\u1ED5': 'o', '\u00F5': 'o', '\u1E4D': 'o', '\u022D': 'o', '\u1E4F': 'o', '\u014D': 'o', '\u1E51': 'o', '\u1E53': 'o', '\u014F': 'o', '\u022F': 'o', '\u0231': 'o', '\u00F6': 'o', '\u022B': 'o', '\u1ECF': 'o', '\u0151': 'o', '\u01D2': 'o', '\u020D': 'o', '\u020F': 'o', '\u01A1': 'o', '\u1EDD': 'o', '\u1EDB': 'o', '\u1EE1': 'o', '\u1EDF': 'o', '\u1EE3': 'o', '\u1ECD': 'o', '\u1ED9': 'o', '\u01EB': 'o', '\u01ED': 'o', '\u00F8': 'o', '\u01FF': 'o', '\u0254': 'o', '\uA74B': 'o', '\uA74D': 'o', '\u0275': 'o', '\u01A3': 'oi', '\u0223': 'ou', '\uA74F': 'oo', '\u24DF': 'p', '\uFF50': 'p', '\u1E55': 'p', '\u1E57': 'p', '\u01A5': 'p', '\u1D7D': 'p', '\uA751': 'p', '\uA753': 'p', '\uA755': 'p', '\u24E0': 'q', '\uFF51': 'q', '\u024B': 'q', '\uA757': 'q', '\uA759': 'q', '\u24E1': 'r', '\uFF52': 'r', '\u0155': 'r', '\u1E59': 'r', '\u0159': 'r', '\u0211': 'r', '\u0213': 'r', '\u1E5B': 'r', '\u1E5D': 'r', '\u0157': 'r', '\u1E5F': 'r', '\u024D': 'r', '\u027D': 'r', '\uA75B': 'r', '\uA7A7': 'r', '\uA783': 'r', '\u24E2': 's', '\uFF53': 's', '\u00DF': 's', '\u015B': 's', '\u1E65': 's', '\u015D': 's', '\u1E61': 's', '\u0161': 's', '\u1E67': 's', '\u1E63': 's', '\u1E69': 's', '\u0219': 's', '\u015F': 's', '\u023F': 's', '\uA7A9': 's', '\uA785': 's', '\u1E9B': 's', '\u24E3': 't', '\uFF54': 't', '\u1E6B': 't', '\u1E97': 't', '\u0165': 't', '\u1E6D': 't', '\u021B': 't', '\u0163': 't', '\u1E71': 't', '\u1E6F': 't', '\u0167': 't', '\u01AD': 't', '\u0288': 't', '\u2C66': 't', '\uA787': 't', '\uA729': 'tz', '\u24E4': 'u', '\uFF55': 'u', '\u00F9': 'u', '\u00FA': 'u', '\u00FB': 'u', '\u0169': 'u', '\u1E79': 'u', '\u016B': 'u', '\u1E7B': 'u', '\u016D': 'u', '\u00FC': 'u', '\u01DC': 'u', '\u01D8': 'u', '\u01D6': 'u', '\u01DA': 'u', '\u1EE7': 'u', '\u016F': 'u', '\u0171': 'u', '\u01D4': 'u', '\u0215': 'u', '\u0217': 'u', '\u01B0': 'u', '\u1EEB': 'u', '\u1EE9': 'u', '\u1EEF': 'u', '\u1EED': 'u', '\u1EF1': 'u', '\u1EE5': 'u', '\u1E73': 'u', '\u0173': 'u', '\u1E77': 'u', '\u1E75': 'u', '\u0289': 'u', '\u24E5': 'v', '\uFF56': 'v', '\u1E7D': 'v', '\u1E7F': 'v', '\u028B': 'v', '\uA75F': 'v', '\u028C': 'v', '\uA761': 'vy', '\u24E6': 'w', '\uFF57': 'w', '\u1E81': 'w', '\u1E83': 'w', '\u0175': 'w', '\u1E87': 'w', '\u1E85': 'w', '\u1E98': 'w', '\u1E89': 'w', '\u2C73': 'w', '\u24E7': 'x', '\uFF58': 'x', '\u1E8B': 'x', '\u1E8D': 'x', '\u24E8': 'y', '\uFF59': 'y', '\u1EF3': 'y', '\u00FD': 'y', '\u0177': 'y', '\u1EF9': 'y', '\u0233': 'y', '\u1E8F': 'y', '\u00FF': 'y', '\u1EF7': 'y', '\u1E99': 'y', '\u1EF5': 'y', '\u01B4': 'y', '\u024F': 'y', '\u1EFF': 'y', '\u24E9': 'z', '\uFF5A': 'z', '\u017A': 'z', '\u1E91': 'z', '\u017C': 'z', '\u017E': 'z', '\u1E93': 'z', '\u1E95': 'z', '\u01B6': 'z', '\u0225': 'z', '\u0240': 'z', '\u2C6C': 'z', '\uA763': 'z', '\u0386': '\u0391', '\u0388': '\u0395', '\u0389': '\u0397', '\u038A': '\u0399', '\u03AA': '\u0399', '\u038C': '\u039F', '\u038E': '\u03A5', '\u03AB': '\u03A5', '\u038F': '\u03A9', '\u03AC': '\u03B1', '\u03AD': '\u03B5', '\u03AE': '\u03B7', '\u03AF': '\u03B9', '\u03CA': '\u03B9', '\u0390': '\u03B9', '\u03CC': '\u03BF', '\u03CD': '\u03C5', '\u03CB': '\u03C5', '\u03B0': '\u03C5', '\u03C9': '\u03C9', '\u03C2': '\u03C3' }; return diacritics; }); S2.define('select2/data/base',[ '../utils' ], function (Utils) { function BaseAdapter ($element, options) { BaseAdapter.__super__.constructor.call(this); } Utils.Extend(BaseAdapter, Utils.Observable); BaseAdapter.prototype.current = function (callback) { throw new Error('The `current` method must be defined in child classes.'); }; BaseAdapter.prototype.query = function (params, callback) { throw new Error('The `query` method must be defined in child classes.'); }; BaseAdapter.prototype.bind = function (container, $container) { // Can be implemented in subclasses }; BaseAdapter.prototype.destroy = function () { // Can be implemented in subclasses }; BaseAdapter.prototype.generateResultId = function (container, data) { var id = container.id + '-result-'; id += Utils.generateChars(4); if (data.id != null) { id += '-' + data.id.toString(); } else { id += '-' + Utils.generateChars(4); } return id; }; return BaseAdapter; }); S2.define('select2/data/select',[ './base', '../utils', 'jquery' ], function (BaseAdapter, Utils, $) { function SelectAdapter ($element, options) { this.$element = $element; this.options = options; SelectAdapter.__super__.constructor.call(this); } Utils.Extend(SelectAdapter, BaseAdapter); SelectAdapter.prototype.current = function (callback) { var data = []; var self = this; this.$element.find(':selected').each(function () { var $option = $(this); var option = self.item($option); data.push(option); }); callback(data); }; SelectAdapter.prototype.select = function (data) { var self = this; data.selected = true; // If data.element is a DOM node, use it instead if ($(data.element).is('option')) { data.element.selected = true; this.$element.trigger('change'); return; } if (this.$element.prop('multiple')) { this.current(function (currentData) { var val = []; data = [data]; data.push.apply(data, currentData); for (var d = 0; d < data.length; d++) { var id = data[d].id; if ($.inArray(id, val) === -1) { val.push(id); } } self.$element.val(val); self.$element.trigger('change'); }); } else { var val = data.id; this.$element.val(val); this.$element.trigger('change'); } }; SelectAdapter.prototype.unselect = function (data) { var self = this; if (!this.$element.prop('multiple')) { return; } data.selected = false; if ($(data.element).is('option')) { data.element.selected = false; this.$element.trigger('change'); return; } this.current(function (currentData) { var val = []; for (var d = 0; d < currentData.length; d++) { var id = currentData[d].id; if (id !== data.id && $.inArray(id, val) === -1) { val.push(id); } } self.$element.val(val); self.$element.trigger('change'); }); }; SelectAdapter.prototype.bind = function (container, $container) { var self = this; this.container = container; container.on('select', function (params) { self.select(params.data); }); container.on('unselect', function (params) { self.unselect(params.data); }); }; SelectAdapter.prototype.destroy = function () { // Remove anything added to child elements this.$element.find('*').each(function () { // Remove any custom data set by Select2 $.removeData(this, 'data'); }); }; SelectAdapter.prototype.query = function (params, callback) { var data = []; var self = this; var $options = this.$element.children(); $options.each(function () { var $option = $(this); if (!$option.is('option') && !$option.is('optgroup')) { return; } var option = self.item($option); var matches = self.matches(params, option); if (matches !== null) { data.push(matches); } }); callback({ results: data }); }; SelectAdapter.prototype.addOptions = function ($options) { Utils.appendMany(this.$element, $options); }; SelectAdapter.prototype.option = function (data) { var option; if (data.children) { option = document.createElement('optgroup'); option.label = data.text; } else { option = document.createElement('option'); if (option.textContent !== undefined) { option.textContent = data.text; } else { option.innerText = data.text; } } if (data.id) { option.value = data.id; } if (data.disabled) { option.disabled = true; } if (data.selected) { option.selected = true; } if (data.title) { option.title = data.title; } var $option = $(option); var normalizedData = this._normalizeItem(data); normalizedData.element = option; // Override the option's data with the combined data $.data(option, 'data', normalizedData); return $option; }; SelectAdapter.prototype.item = function ($option) { var data = {}; data = $.data($option[0], 'data'); if (data != null) { return data; } if ($option.is('option')) { data = { id: $option.val(), text: $option.text(), disabled: $option.prop('disabled'), selected: $option.prop('selected'), title: $option.prop('title') }; } else if ($option.is('optgroup')) { data = { text: $option.prop('label'), children: [], title: $option.prop('title') }; var $children = $option.children('option'); var children = []; for (var c = 0; c < $children.length; c++) { var $child = $($children[c]); var child = this.item($child); children.push(child); } data.children = children; } data = this._normalizeItem(data); data.element = $option[0]; $.data($option[0], 'data', data); return data; }; SelectAdapter.prototype._normalizeItem = function (item) { if (!$.isPlainObject(item)) { item = { id: item, text: item }; } item = $.extend({}, { text: '' }, item); var defaults = { selected: false, disabled: false }; if (item.id != null) { item.id = item.id.toString(); } if (item.text != null) { item.text = item.text.toString(); } if (item._resultId == null && item.id && this.container != null) { item._resultId = this.generateResultId(this.container, item); } return $.extend({}, defaults, item); }; SelectAdapter.prototype.matches = function (params, data) { var matcher = this.options.get('matcher'); return matcher(params, data); }; return SelectAdapter; }); S2.define('select2/data/array',[ './select', '../utils', 'jquery' ], function (SelectAdapter, Utils, $) { function ArrayAdapter ($element, options) { var data = options.get('data') || []; ArrayAdapter.__super__.constructor.call(this, $element, options); this.addOptions(this.convertToOptions(data)); } Utils.Extend(ArrayAdapter, SelectAdapter); ArrayAdapter.prototype.select = function (data) { var $option = this.$element.find('option').filter(function (i, elm) { return elm.value == data.id.toString(); }); if ($option.length === 0) { $option = this.option(data); this.addOptions($option); } ArrayAdapter.__super__.select.call(this, data); }; ArrayAdapter.prototype.convertToOptions = function (data) { var self = this; var $existing = this.$element.find('option'); var existingIds = $existing.map(function () { return self.item($(this)).id; }).get(); var $options = []; // Filter out all items except for the one passed in the argument function onlyItem (item) { return function () { return $(this).val() == item.id; }; } for (var d = 0; d < data.length; d++) { var item = this._normalizeItem(data[d]); // Skip items which were pre-loaded, only merge the data if ($.inArray(item.id, existingIds) >= 0) { var $existingOption = $existing.filter(onlyItem(item)); var existingData = this.item($existingOption); var newData = $.extend(true, {}, item, existingData); var $newOption = this.option(newData); $existingOption.replaceWith($newOption); continue; } var $option = this.option(item); if (item.children) { var $children = this.convertToOptions(item.children); Utils.appendMany($option, $children); } $options.push($option); } return $options; }; return ArrayAdapter; }); S2.define('select2/data/ajax',[ './array', '../utils', 'jquery' ], function (ArrayAdapter, Utils, $) { function AjaxAdapter ($element, options) { this.ajaxOptions = this._applyDefaults(options.get('ajax')); if (this.ajaxOptions.processResults != null) { this.processResults = this.ajaxOptions.processResults; } AjaxAdapter.__super__.constructor.call(this, $element, options); } Utils.Extend(AjaxAdapter, ArrayAdapter); AjaxAdapter.prototype._applyDefaults = function (options) { var defaults = { data: function (params) { return $.extend({}, params, { q: params.term }); }, transport: function (params, success, failure) { var $request = $.ajax(params); $request.then(success); $request.fail(failure); return $request; } }; return $.extend({}, defaults, options, true); }; AjaxAdapter.prototype.processResults = function (results) { return results; }; AjaxAdapter.prototype.query = function (params, callback) { var matches = []; var self = this; if (this._request != null) { // JSONP requests cannot always be aborted if ($.isFunction(this._request.abort)) { this._request.abort(); } this._request = null; } var options = $.extend({ type: 'GET' }, this.ajaxOptions); if (typeof options.url === 'function') { options.url = options.url.call(this.$element, params); } if (typeof options.data === 'function') { options.data = options.data.call(this.$element, params); } function request () { var $request = options.transport(options, function (data) { var results = self.processResults(data, params); if (self.options.get('debug') && window.console && console.error) { // Check to make sure that the response included a `results` key. if (!results || !results.results || !$.isArray(results.results)) { console.error( 'Select2: The AJAX results did not return an array in the ' + '`results` key of the response.' ); } } callback(results); }, function () { // Attempt to detect if a request was aborted // Only works if the transport exposes a status property if ($request.status && $request.status === '0') { return; } self.trigger('results:message', { message: 'errorLoading' }); }); self._request = $request; } if (this.ajaxOptions.delay && params.term != null) { if (this._queryTimeout) { window.clearTimeout(this._queryTimeout); } this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); } else { request(); } }; return AjaxAdapter; }); S2.define('select2/data/tags',[ 'jquery' ], function ($) { function Tags (decorated, $element, options) { var tags = options.get('tags'); var createTag = options.get('createTag'); if (createTag !== undefined) { this.createTag = createTag; } var insertTag = options.get('insertTag'); if (insertTag !== undefined) { this.insertTag = insertTag; } decorated.call(this, $element, options); if ($.isArray(tags)) { for (var t = 0; t < tags.length; t++) { var tag = tags[t]; var item = this._normalizeItem(tag); var $option = this.option(item); this.$element.append($option); } } } Tags.prototype.query = function (decorated, params, callback) { var self = this; this._removeOldTags(); if (params.term == null || params.page != null) { decorated.call(this, params, callback); return; } function wrapper (obj, child) { var data = obj.results; for (var i = 0; i < data.length; i++) { var option = data[i]; var checkChildren = ( option.children != null && !wrapper({ results: option.children }, true) ); var checkText = option.text === params.term; if (checkText || checkChildren) { if (child) { return false; } obj.data = data; callback(obj); return; } } if (child) { return true; } var tag = self.createTag(params); if (tag != null) { var $option = self.option(tag); $option.attr('data-select2-tag', true); self.addOptions([$option]); self.insertTag(data, tag); } obj.results = data; callback(obj); } decorated.call(this, params, wrapper); }; Tags.prototype.createTag = function (decorated, params) { var term = $.trim(params.term); if (term === '') { return null; } return { id: term, text: term }; }; Tags.prototype.insertTag = function (_, data, tag) { data.unshift(tag); }; Tags.prototype._removeOldTags = function (_) { var tag = this._lastTag; var $options = this.$element.find('option[data-select2-tag]'); $options.each(function () { if (this.selected) { return; } $(this).remove(); }); }; return Tags; }); S2.define('select2/data/tokenizer',[ 'jquery' ], function ($) { function Tokenizer (decorated, $element, options) { var tokenizer = options.get('tokenizer'); if (tokenizer !== undefined) { this.tokenizer = tokenizer; } decorated.call(this, $element, options); } Tokenizer.prototype.bind = function (decorated, container, $container) { decorated.call(this, container, $container); this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field'); }; Tokenizer.prototype.query = function (decorated, params, callback) { var self = this; function createAndSelect (data) { // Normalize the data object so we can use it for checks var item = self._normalizeItem(data); // Check if the data object already exists as a tag // Select it if it doesn't var $existingOptions = self.$element.find('option').filter(function () { return $(this).val() === item.id; }); // If an existing option wasn't found for it, create the option if (!$existingOptions.length) { var $option = self.option(item); $option.attr('data-select2-tag', true); self._removeOldTags(); self.addOptions([$option]); } // Select the item, now that we know there is an option for it select(item); } function select (data) { self.trigger('select', { data: data }); } params.term = params.term || ''; var tokenData = this.tokenizer(params, this.options, createAndSelect); if (tokenData.term !== params.term) { // Replace the search term if we have the search box if (this.$search.length) { this.$search.val(tokenData.term); this.$search.focus(); } params.term = tokenData.term; } decorated.call(this, params, callback); }; Tokenizer.prototype.tokenizer = function (_, params, options, callback) { var separators = options.get('tokenSeparators') || []; var term = params.term; var i = 0; var createTag = this.createTag || function (params) { return { id: params.term, text: params.term }; }; while (i < term.length) { var termChar = term[i]; if ($.inArray(termChar, separators) === -1) { i++; continue; } var part = term.substr(0, i); var partParams = $.extend({}, params, { term: part }); var data = createTag(partParams); if (data == null) { i++; continue; } callback(data); // Reset the term to not include the tokenized portion term = term.substr(i + 1) || ''; i = 0; } return { term: term }; }; return Tokenizer; }); S2.define('select2/data/minimumInputLength',[ ], function () { function MinimumInputLength (decorated, $e, options) { this.minimumInputLength = options.get('minimumInputLength'); decorated.call(this, $e, options); } MinimumInputLength.prototype.query = function (decorated, params, callback) { params.term = params.term || ''; if (params.term.length < this.minimumInputLength) { this.trigger('results:message', { message: 'inputTooShort', args: { minimum: this.minimumInputLength, input: params.term, params: params } }); return; } decorated.call(this, params, callback); }; return MinimumInputLength; }); S2.define('select2/data/maximumInputLength',[ ], function () { function MaximumInputLength (decorated, $e, options) { this.maximumInputLength = options.get('maximumInputLength'); decorated.call(this, $e, options); } MaximumInputLength.prototype.query = function (decorated, params, callback) { params.term = params.term || ''; if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) { this.trigger('results:message', { message: 'inputTooLong', args: { maximum: this.maximumInputLength, input: params.term, params: params } }); return; } decorated.call(this, params, callback); }; return MaximumInputLength; }); S2.define('select2/data/maximumSelectionLength',[ ], function (){ function MaximumSelectionLength (decorated, $e, options) { this.maximumSelectionLength = options.get('maximumSelectionLength'); decorated.call(this, $e, options); } MaximumSelectionLength.prototype.query = function (decorated, params, callback) { var self = this; this.current(function (currentData) { var count = currentData != null ? currentData.length : 0; if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) { self.trigger('results:message', { message: 'maximumSelected', args: { maximum: self.maximumSelectionLength } }); return; } decorated.call(self, params, callback); }); }; return MaximumSelectionLength; }); S2.define('select2/dropdown',[ 'jquery', './utils' ], function ($, Utils) { function Dropdown ($element, options) { this.$element = $element; this.options = options; Dropdown.__super__.constructor.call(this); } Utils.Extend(Dropdown, Utils.Observable); Dropdown.prototype.render = function () { var $dropdown = $( '<span class="select2-dropdown">' + '<span class="select2-results"></span>' + '</span>' ); $dropdown.attr('dir', this.options.get('dir')); this.$dropdown = $dropdown; return $dropdown; }; Dropdown.prototype.bind = function () { // Should be implemented in subclasses }; Dropdown.prototype.position = function ($dropdown, $container) { // Should be implmented in subclasses }; Dropdown.prototype.destroy = function () { // Remove the dropdown from the DOM this.$dropdown.remove(); }; return Dropdown; }); S2.define('select2/dropdown/search',[ 'jquery', '../utils' ], function ($, Utils) { function Search () { } Search.prototype.render = function (decorated) { var $rendered = decorated.call(this); var $search = $( '<span class="select2-search select2-search--dropdown">' + '<input class="select2-search__field" type="search" tabindex="-1"' + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + ' spellcheck="false" role="textbox" />' + '</span>' ); this.$searchContainer = $search; this.$search = $search.find('input'); $rendered.prepend($search); return $rendered; }; Search.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); this.$search.on('keydown', function (evt) { self.trigger('keypress', evt); self._keyUpPrevented = evt.isDefaultPrevented(); }); // Workaround for browsers which do not support the `input` event // This will prevent double-triggering of events for browsers which support // both the `keyup` and `input` events. this.$search.on('input', function (evt) { // Unbind the duplicated `keyup` event $(this).off('keyup'); }); this.$search.on('keyup input', function (evt) { self.handleSearch(evt); }); container.on('open', function () { self.$search.attr('tabindex', 0); self.$search.focus(); window.setTimeout(function () { self.$search.focus(); }, 0); }); container.on('close', function () { self.$search.attr('tabindex', -1); self.$search.val(''); }); container.on('focus', function () { if (container.isOpen()) { self.$search.focus(); } }); container.on('results:all', function (params) { if (params.query.term == null || params.query.term === '') { var showSearch = self.showSearch(params); if (showSearch) { self.$searchContainer.removeClass('select2-search--hide'); } else { self.$searchContainer.addClass('select2-search--hide'); } } }); }; Search.prototype.handleSearch = function (evt) { if (!this._keyUpPrevented) { var input = this.$search.val(); this.trigger('query', { term: input }); } this._keyUpPrevented = false; }; Search.prototype.showSearch = function (_, params) { return true; }; return Search; }); S2.define('select2/dropdown/hidePlaceholder',[ ], function () { function HidePlaceholder (decorated, $element, options, dataAdapter) { this.placeholder = this.normalizePlaceholder(options.get('placeholder')); decorated.call(this, $element, options, dataAdapter); } HidePlaceholder.prototype.append = function (decorated, data) { data.results = this.removePlaceholder(data.results); decorated.call(this, data); }; HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { if (typeof placeholder === 'string') { placeholder = { id: '', text: placeholder }; } return placeholder; }; HidePlaceholder.prototype.removePlaceholder = function (_, data) { var modifiedData = data.slice(0); for (var d = data.length - 1; d >= 0; d--) { var item = data[d]; if (this.placeholder.id === item.id) { modifiedData.splice(d, 1); } } return modifiedData; }; return HidePlaceholder; }); S2.define('select2/dropdown/infiniteScroll',[ 'jquery' ], function ($) { function InfiniteScroll (decorated, $element, options, dataAdapter) { this.lastParams = {}; decorated.call(this, $element, options, dataAdapter); this.$loadingMore = this.createLoadingMore(); this.loading = false; } InfiniteScroll.prototype.append = function (decorated, data) { this.$loadingMore.remove(); this.loading = false; decorated.call(this, data); if (this.showLoadingMore(data)) { this.$results.append(this.$loadingMore); } }; InfiniteScroll.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('query', function (params) { self.lastParams = params; self.loading = true; }); container.on('query:append', function (params) { self.lastParams = params; self.loading = true; }); this.$results.on('scroll', function () { var isLoadMoreVisible = $.contains( document.documentElement, self.$loadingMore[0] ); if (self.loading || !isLoadMoreVisible) { return; } var currentOffset = self.$results.offset().top + self.$results.outerHeight(false); var loadingMoreOffset = self.$loadingMore.offset().top + self.$loadingMore.outerHeight(false); if (currentOffset + 50 >= loadingMoreOffset) { self.loadMore(); } }); }; InfiniteScroll.prototype.loadMore = function () { this.loading = true; var params = $.extend({}, {page: 1}, this.lastParams); params.page++; this.trigger('query:append', params); }; InfiniteScroll.prototype.showLoadingMore = function (_, data) { return data.pagination && data.pagination.more; }; InfiniteScroll.prototype.createLoadingMore = function () { var $option = $( '<li ' + 'class="select2-results__option select2-results__option--load-more"' + 'role="treeitem" aria-disabled="true"></li>' ); var message = this.options.get('translations').get('loadingMore'); $option.html(message(this.lastParams)); return $option; }; return InfiniteScroll; }); S2.define('select2/dropdown/attachBody',[ 'jquery', '../utils' ], function ($, Utils) { function AttachBody (decorated, $element, options) { this.$dropdownParent = options.get('dropdownParent') || $(document.body); decorated.call(this, $element, options); } AttachBody.prototype.bind = function (decorated, container, $container) { var self = this; var setupResultsEvents = false; decorated.call(this, container, $container); container.on('open', function () { self._showDropdown(); self._attachPositioningHandler(container); if (!setupResultsEvents) { setupResultsEvents = true; container.on('results:all', function () { self._positionDropdown(); self._resizeDropdown(); }); container.on('results:append', function () { self._positionDropdown(); self._resizeDropdown(); }); } }); container.on('close', function () { self._hideDropdown(); self._detachPositioningHandler(container); }); this.$dropdownContainer.on('mousedown', function (evt) { evt.stopPropagation(); }); }; AttachBody.prototype.destroy = function (decorated) { decorated.call(this); this.$dropdownContainer.remove(); }; AttachBody.prototype.position = function (decorated, $dropdown, $container) { // Clone all of the container classes $dropdown.attr('class', $container.attr('class')); $dropdown.removeClass('select2'); $dropdown.addClass('select2-container--open'); $dropdown.css({ position: 'absolute', top: -999999 }); this.$container = $container; }; AttachBody.prototype.render = function (decorated) { var $container = $('<span></span>'); var $dropdown = decorated.call(this); $container.append($dropdown); this.$dropdownContainer = $container; return $container; }; AttachBody.prototype._hideDropdown = function (decorated) { this.$dropdownContainer.detach(); }; AttachBody.prototype._attachPositioningHandler = function (decorated, container) { var self = this; var scrollEvent = 'scroll.select2.' + container.id; var resizeEvent = 'resize.select2.' + container.id; var orientationEvent = 'orientationchange.select2.' + container.id; var $watchers = this.$container.parents().filter(Utils.hasScroll); $watchers.each(function () { $(this).data('select2-scroll-position', { x: $(this).scrollLeft(), y: $(this).scrollTop() }); }); $watchers.on(scrollEvent, function (ev) { var position = $(this).data('select2-scroll-position'); $(this).scrollTop(position.y); }); $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) { self._positionDropdown(); self._resizeDropdown(); }); }; AttachBody.prototype._detachPositioningHandler = function (decorated, container) { var scrollEvent = 'scroll.select2.' + container.id; var resizeEvent = 'resize.select2.' + container.id; var orientationEvent = 'orientationchange.select2.' + container.id; var $watchers = this.$container.parents().filter(Utils.hasScroll); $watchers.off(scrollEvent); $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); }; AttachBody.prototype._positionDropdown = function () { var $window = $(window); var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); var newDirection = null; var offset = this.$container.offset(); offset.bottom = offset.top + this.$container.outerHeight(false); var container = { height: this.$container.outerHeight(false) }; container.top = offset.top; container.bottom = offset.top + container.height; var dropdown = { height: this.$dropdown.outerHeight(false) }; var viewport = { top: $window.scrollTop(), bottom: $window.scrollTop() + $window.height() }; var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); var css = { left: offset.left, top: container.bottom }; // Determine what the parent element is to use for calciulating the offset var $offsetParent = this.$dropdownParent; // For statically positoned elements, we need to get the element // that is determining the offset if ($offsetParent.css('position') === 'static') { $offsetParent = $offsetParent.offsetParent(); } var parentOffset = $offsetParent.offset(); css.top -= parentOffset.top; css.left -= parentOffset.left; if (!isCurrentlyAbove && !isCurrentlyBelow) { newDirection = 'below'; } if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { newDirection = 'above'; } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { newDirection = 'below'; } if (newDirection == 'above' || (isCurrentlyAbove && newDirection !== 'below')) { css.top = container.top - parentOffset.top - dropdown.height; } if (newDirection != null) { this.$dropdown .removeClass('select2-dropdown--below select2-dropdown--above') .addClass('select2-dropdown--' + newDirection); this.$container .removeClass('select2-container--below select2-container--above') .addClass('select2-container--' + newDirection); } this.$dropdownContainer.css(css); }; AttachBody.prototype._resizeDropdown = function () { var css = { width: this.$container.outerWidth(false) + 'px' }; if (this.options.get('dropdownAutoWidth')) { css.minWidth = css.width; css.position = 'relative'; css.width = 'auto'; } this.$dropdown.css(css); }; AttachBody.prototype._showDropdown = function (decorated) { this.$dropdownContainer.appendTo(this.$dropdownParent); this._positionDropdown(); this._resizeDropdown(); }; return AttachBody; }); S2.define('select2/dropdown/minimumResultsForSearch',[ ], function () { function countResults (data) { var count = 0; for (var d = 0; d < data.length; d++) { var item = data[d]; if (item.children) { count += countResults(item.children); } else { count++; } } return count; } function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { this.minimumResultsForSearch = options.get('minimumResultsForSearch'); if (this.minimumResultsForSearch < 0) { this.minimumResultsForSearch = Infinity; } decorated.call(this, $element, options, dataAdapter); } MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { if (countResults(params.data.results) < this.minimumResultsForSearch) { return false; } return decorated.call(this, params); }; return MinimumResultsForSearch; }); S2.define('select2/dropdown/selectOnClose',[ ], function () { function SelectOnClose () { } SelectOnClose.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('close', function (params) { self._handleSelectOnClose(params); }); }; SelectOnClose.prototype._handleSelectOnClose = function (_, params) { if (params && params.originalSelect2Event != null) { var event = params.originalSelect2Event; // Don't select an item if the close event was triggered from a select or // unselect event if (event._type === 'select' || event._type === 'unselect') { return; } } var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results if ($highlightedResults.length < 1) { return; } var data = $highlightedResults.data('data'); // Don't re-select already selected resulte if ( (data.element != null && data.element.selected) || (data.element == null && data.selected) ) { return; } this.trigger('select', { data: data }); }; return SelectOnClose; }); S2.define('select2/dropdown/closeOnSelect',[ ], function () { function CloseOnSelect () { } CloseOnSelect.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('select', function (evt) { self._selectTriggered(evt); }); container.on('unselect', function (evt) { self._selectTriggered(evt); }); }; CloseOnSelect.prototype._selectTriggered = function (_, evt) { var originalEvent = evt.originalEvent; // Don't close if the control key is being held if (originalEvent && originalEvent.ctrlKey) { return; } this.trigger('close', { originalEvent: originalEvent, originalSelect2Event: evt }); }; return CloseOnSelect; }); S2.define('select2/i18n/en',[],function () { // English return { errorLoading: function () { return 'The results could not be loaded.'; }, inputTooLong: function (args) { var overChars = args.input.length - args.maximum; var message = 'Please delete ' + overChars + ' character'; if (overChars != 1) { message += 's'; } return message; }, inputTooShort: function (args) { var remainingChars = args.minimum - args.input.length; var message = 'Please enter ' + remainingChars + ' or more characters'; return message; }, loadingMore: function () { return 'Loading more results…'; }, maximumSelected: function (args) { var message = 'You can only select ' + args.maximum + ' item'; if (args.maximum != 1) { message += 's'; } return message; }, noResults: function () { return 'No results found'; }, searching: function () { return 'Searching…'; } }; }); S2.define('select2/defaults',[ 'jquery', 'require', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './i18n/en' ], function ($, require, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, EnglishTranslation) { function Defaults () { this.reset(); } Defaults.prototype.apply = function (options) { options = $.extend(true, {}, this.defaults, options); if (options.dataAdapter == null) { if (options.ajax != null) { options.dataAdapter = AjaxData; } else if (options.data != null) { options.dataAdapter = ArrayData; } else { options.dataAdapter = SelectData; } if (options.minimumInputLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MinimumInputLength ); } if (options.maximumInputLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MaximumInputLength ); } if (options.maximumSelectionLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MaximumSelectionLength ); } if (options.tags) { options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); } if (options.tokenSeparators != null || options.tokenizer != null) { options.dataAdapter = Utils.Decorate( options.dataAdapter, Tokenizer ); } if (options.query != null) { var Query = require(options.amdBase + 'compat/query'); options.dataAdapter = Utils.Decorate( options.dataAdapter, Query ); } if (options.initSelection != null) { var InitSelection = require(options.amdBase + 'compat/initSelection'); options.dataAdapter = Utils.Decorate( options.dataAdapter, InitSelection ); } } if (options.resultsAdapter == null) { options.resultsAdapter = ResultsList; if (options.ajax != null) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, InfiniteScroll ); } if (options.placeholder != null) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, HidePlaceholder ); } if (options.selectOnClose) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, SelectOnClose ); } } if (options.dropdownAdapter == null) { if (options.multiple) { options.dropdownAdapter = Dropdown; } else { var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); options.dropdownAdapter = SearchableDropdown; } if (options.minimumResultsForSearch !== 0) { options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, MinimumResultsForSearch ); } if (options.closeOnSelect) { options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, CloseOnSelect ); } if ( options.dropdownCssClass != null || options.dropdownCss != null || options.adaptDropdownCssClass != null ) { var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, DropdownCSS ); } options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, AttachBody ); } if (options.selectionAdapter == null) { if (options.multiple) { options.selectionAdapter = MultipleSelection; } else { options.selectionAdapter = SingleSelection; } // Add the placeholder mixin if a placeholder was specified if (options.placeholder != null) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, Placeholder ); } if (options.allowClear) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, AllowClear ); } if (options.multiple) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, SelectionSearch ); } if ( options.containerCssClass != null || options.containerCss != null || options.adaptContainerCssClass != null ) { var ContainerCSS = require(options.amdBase + 'compat/containerCss'); options.selectionAdapter = Utils.Decorate( options.selectionAdapter, ContainerCSS ); } options.selectionAdapter = Utils.Decorate( options.selectionAdapter, EventRelay ); } if (typeof options.language === 'string') { // Check if the language is specified with a region if (options.language.indexOf('-') > 0) { // Extract the region information if it is included var languageParts = options.language.split('-'); var baseLanguage = languageParts[0]; options.language = [options.language, baseLanguage]; } else { options.language = [options.language]; } } if ($.isArray(options.language)) { var languages = new Translation(); options.language.push('en'); var languageNames = options.language; for (var l = 0; l < languageNames.length; l++) { var name = languageNames[l]; var language = {}; try { // Try to load it with the original name language = Translation.loadPath(name); } catch (e) { try { // If we couldn't load it, check if it wasn't the full path name = this.defaults.amdLanguageBase + name; language = Translation.loadPath(name); } catch (ex) { // The translation could not be loaded at all. Sometimes this is // because of a configuration problem, other times this can be // because of how Select2 helps load all possible translation files. if (options.debug && window.console && console.warn) { console.warn( 'Select2: The language file for "' + name + '" could not be ' + 'automatically loaded. A fallback will be used instead.' ); } continue; } } languages.extend(language); } options.translations = languages; } else { var baseTranslation = Translation.loadPath( this.defaults.amdLanguageBase + 'en' ); var customTranslation = new Translation(options.language); customTranslation.extend(baseTranslation); options.translations = customTranslation; } return options; }; Defaults.prototype.reset = function () { function stripDiacritics (text) { // Used 'uni range + named function' from http://jsperf.com/diacritics/18 function match(a) { return DIACRITICS[a] || a; } return text.replace(/[^\u0000-\u007E]/g, match); } function matcher (params, data) { // Always return the object if there is nothing to compare if ($.trim(params.term) === '') { return data; } // Do a recursive check for options with children if (data.children && data.children.length > 0) { // Clone the data object if there are children // This is required as we modify the object to remove any non-matches var match = $.extend(true, {}, data); // Check each child of the option for (var c = data.children.length - 1; c >= 0; c--) { var child = data.children[c]; var matches = matcher(params, child); // If there wasn't a match, remove the object in the array if (matches == null) { match.children.splice(c, 1); } } // If any children matched, return the new object if (match.children.length > 0) { return match; } // If there were no matching children, check just the plain object return matcher(params, match); } var original = stripDiacritics(data.text).toUpperCase(); var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term if (original.indexOf(term) > -1) { return data; } // If it doesn't contain the term, don't return anything return null; } this.defaults = { amdBase: './', amdLanguageBase: './i18n/', closeOnSelect: true, debug: false, dropdownAutoWidth: false, escapeMarkup: Utils.escapeMarkup, language: EnglishTranslation, matcher: matcher, minimumInputLength: 0, maximumInputLength: 0, maximumSelectionLength: 0, minimumResultsForSearch: 0, selectOnClose: false, sorter: function (data) { return data; }, templateResult: function (result) { return result.text; }, templateSelection: function (selection) { return selection.text; }, theme: 'default', width: 'resolve' }; }; Defaults.prototype.set = function (key, value) { var camelKey = $.camelCase(key); var data = {}; data[camelKey] = value; var convertedData = Utils._convertData(data); $.extend(this.defaults, convertedData); }; var defaults = new Defaults(); return defaults; }); S2.define('select2/options',[ 'require', 'jquery', './defaults', './utils' ], function (require, $, Defaults, Utils) { function Options (options, $element) { this.options = options; if ($element != null) { this.fromElement($element); } this.options = Defaults.apply(this.options); if ($element && $element.is('input')) { var InputCompat = require(this.get('amdBase') + 'compat/inputData'); this.options.dataAdapter = Utils.Decorate( this.options.dataAdapter, InputCompat ); } } Options.prototype.fromElement = function ($e) { var excludedData = ['select2']; if (this.options.multiple == null) { this.options.multiple = $e.prop('multiple'); } if (this.options.disabled == null) { this.options.disabled = $e.prop('disabled'); } if (this.options.language == null) { if ($e.prop('lang')) { this.options.language = $e.prop('lang').toLowerCase(); } else if ($e.closest('[lang]').prop('lang')) { this.options.language = $e.closest('[lang]').prop('lang'); } } if (this.options.dir == null) { if ($e.prop('dir')) { this.options.dir = $e.prop('dir'); } else if ($e.closest('[dir]').prop('dir')) { this.options.dir = $e.closest('[dir]').prop('dir'); } else { this.options.dir = 'ltr'; } } $e.prop('disabled', this.options.disabled); $e.prop('multiple', this.options.multiple); if ($e.data('select2Tags')) { if (this.options.debug && window.console && console.warn) { console.warn( 'Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags="true"` attributes and will be ' + 'removed in future versions of Select2.' ); } $e.data('data', $e.data('select2Tags')); $e.data('tags', true); } if ($e.data('ajaxUrl')) { if (this.options.debug && window.console && console.warn) { console.warn( 'Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.' ); } $e.attr('ajax--url', $e.data('ajaxUrl')); $e.data('ajax--url', $e.data('ajaxUrl')); } var dataset = {}; // Prefer the element's `dataset` attribute if it exists // jQuery 1.x does not correctly handle data attributes with multiple dashes if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { dataset = $.extend(true, {}, $e[0].dataset, $e.data()); } else { dataset = $e.data(); } var data = $.extend(true, {}, dataset); data = Utils._convertData(data); for (var key in data) { if ($.inArray(key, excludedData) > -1) { continue; } if ($.isPlainObject(this.options[key])) { $.extend(this.options[key], data[key]); } else { this.options[key] = data[key]; } } return this; }; Options.prototype.get = function (key) { return this.options[key]; }; Options.prototype.set = function (key, val) { this.options[key] = val; }; return Options; }); S2.define('select2/core',[ 'jquery', './options', './utils', './keys' ], function ($, Options, Utils, KEYS) { var Select2 = function ($element, options) { if ($element.data('select2') != null) { $element.data('select2').destroy(); } this.$element = $element; this.id = this._generateId($element); options = options || {}; this.options = new Options(options, $element); Select2.__super__.constructor.call(this); // Set up the tabindex var tabindex = $element.attr('tabindex') || 0; $element.data('old-tabindex', tabindex); $element.attr('tabindex', '-1'); // Set up containers and adapters var DataAdapter = this.options.get('dataAdapter'); this.dataAdapter = new DataAdapter($element, this.options); var $container = this.render(); this._placeContainer($container); var SelectionAdapter = this.options.get('selectionAdapter'); this.selection = new SelectionAdapter($element, this.options); this.$selection = this.selection.render(); this.selection.position(this.$selection, $container); var DropdownAdapter = this.options.get('dropdownAdapter'); this.dropdown = new DropdownAdapter($element, this.options); this.$dropdown = this.dropdown.render(); this.dropdown.position(this.$dropdown, $container); var ResultsAdapter = this.options.get('resultsAdapter'); this.results = new ResultsAdapter($element, this.options, this.dataAdapter); this.$results = this.results.render(); this.results.position(this.$results, this.$dropdown); // Bind events var self = this; // Bind the container to all of the adapters this._bindAdapters(); // Register any DOM event handlers this._registerDomEvents(); // Register any internal event handlers this._registerDataEvents(); this._registerSelectionEvents(); this._registerDropdownEvents(); this._registerResultsEvents(); this._registerEvents(); // Set the initial state this.dataAdapter.current(function (initialData) { self.trigger('selection:update', { data: initialData }); }); // Hide the original select $element.addClass('select2-hidden-accessible'); $element.attr('aria-hidden', 'true'); // Synchronize any monitored attributes this._syncAttributes(); $element.data('select2', this); }; Utils.Extend(Select2, Utils.Observable); Select2.prototype._generateId = function ($element) { var id = ''; if ($element.attr('id') != null) { id = $element.attr('id'); } else if ($element.attr('name') != null) { id = $element.attr('name') + '-' + Utils.generateChars(2); } else { id = Utils.generateChars(4); } id = id.replace(/(:|\.|\[|\]|,)/g, ''); id = 'select2-' + id; return id; }; Select2.prototype._placeContainer = function ($container) { $container.insertAfter(this.$element); var width = this._resolveWidth(this.$element, this.options.get('width')); if (width != null) { $container.css('width', width); } }; Select2.prototype._resolveWidth = function ($element, method) { var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; if (method == 'resolve') { var styleWidth = this._resolveWidth($element, 'style'); if (styleWidth != null) { return styleWidth; } return this._resolveWidth($element, 'element'); } if (method == 'element') { var elementWidth = $element.outerWidth(false); if (elementWidth <= 0) { return 'auto'; } return elementWidth + 'px'; } if (method == 'style') { var style = $element.attr('style'); if (typeof(style) !== 'string') { return null; } var attrs = style.split(';'); for (var i = 0, l = attrs.length; i < l; i = i + 1) { var attr = attrs[i].replace(/\s/g, ''); var matches = attr.match(WIDTH); if (matches !== null && matches.length >= 1) { return matches[1]; } } return null; } return method; }; Select2.prototype._bindAdapters = function () { this.dataAdapter.bind(this, this.$container); this.selection.bind(this, this.$container); this.dropdown.bind(this, this.$container); this.results.bind(this, this.$container); }; Select2.prototype._registerDomEvents = function () { var self = this; this.$element.on('change.select2', function () { self.dataAdapter.current(function (data) { self.trigger('selection:update', { data: data }); }); }); this.$element.on('focus.select2', function (evt) { self.trigger('focus', evt); }); this._syncA = Utils.bind(this._syncAttributes, this); this._syncS = Utils.bind(this._syncSubtree, this); if (this.$element[0].attachEvent) { this.$element[0].attachEvent('onpropertychange', this._syncA); } var observer = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver ; if (observer != null) { this._observer = new observer(function (mutations) { $.each(mutations, self._syncA); $.each(mutations, self._syncS); }); this._observer.observe(this.$element[0], { attributes: true, childList: true, subtree: false }); } else if (this.$element[0].addEventListener) { this.$element[0].addEventListener( 'DOMAttrModified', self._syncA, false ); this.$element[0].addEventListener( 'DOMNodeInserted', self._syncS, false ); this.$element[0].addEventListener( 'DOMNodeRemoved', self._syncS, false ); } }; Select2.prototype._registerDataEvents = function () { var self = this; this.dataAdapter.on('*', function (name, params) { self.trigger(name, params); }); }; Select2.prototype._registerSelectionEvents = function () { var self = this; var nonRelayEvents = ['toggle', 'focus']; this.selection.on('toggle', function () { self.toggleDropdown(); }); this.selection.on('focus', function (params) { self.focus(params); }); this.selection.on('*', function (name, params) { if ($.inArray(name, nonRelayEvents) !== -1) { return; } self.trigger(name, params); }); }; Select2.prototype._registerDropdownEvents = function () { var self = this; this.dropdown.on('*', function (name, params) { self.trigger(name, params); }); }; Select2.prototype._registerResultsEvents = function () { var self = this; this.results.on('*', function (name, params) { self.trigger(name, params); }); }; Select2.prototype._registerEvents = function () { var self = this; this.on('open', function () { self.$container.addClass('select2-container--open'); }); this.on('close', function () { self.$container.removeClass('select2-container--open'); }); this.on('enable', function () { self.$container.removeClass('select2-container--disabled'); }); this.on('disable', function () { self.$container.addClass('select2-container--disabled'); }); this.on('blur', function () { self.$container.removeClass('select2-container--focus'); }); this.on('query', function (params) { if (!self.isOpen()) { self.trigger('open', {}); } this.dataAdapter.query(params, function (data) { self.trigger('results:all', { data: data, query: params }); }); }); this.on('query:append', function (params) { this.dataAdapter.query(params, function (data) { self.trigger('results:append', { data: data, query: params }); }); }); this.on('keypress', function (evt) { var key = evt.which; if (self.isOpen()) { if (key === KEYS.ESC || key === KEYS.TAB || (key === KEYS.UP && evt.altKey)) { self.close(); evt.preventDefault(); } else if (key === KEYS.ENTER) { self.trigger('results:select', {}); evt.preventDefault(); } else if ((key === KEYS.SPACE && evt.ctrlKey)) { self.trigger('results:toggle', {}); evt.preventDefault(); } else if (key === KEYS.UP) { self.trigger('results:previous', {}); evt.preventDefault(); } else if (key === KEYS.DOWN) { self.trigger('results:next', {}); evt.preventDefault(); } } else { if (key === KEYS.ENTER || key === KEYS.SPACE || (key === KEYS.DOWN && evt.altKey)) { self.open(); evt.preventDefault(); } } }); }; Select2.prototype._syncAttributes = function () { this.options.set('disabled', this.$element.prop('disabled')); if (this.options.get('disabled')) { if (this.isOpen()) { this.close(); } this.trigger('disable', {}); } else { this.trigger('enable', {}); } }; Select2.prototype._syncSubtree = function (evt, mutations) { var changed = false; var self = this; // Ignore any mutation events raised for elements that aren't options or // optgroups. This handles the case when the select element is destroyed if ( evt && evt.target && ( evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' ) ) { return; } if (!mutations) { // If mutation events aren't supported, then we can only assume that the // change affected the selections changed = true; } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { for (var n = 0; n < mutations.addedNodes.length; n++) { var node = mutations.addedNodes[n]; if (node.selected) { changed = true; } } } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { changed = true; } // Only re-pull the data if we think there is a change if (changed) { this.dataAdapter.current(function (currentData) { self.trigger('selection:update', { data: currentData }); }); } }; /** * Override the trigger method to automatically trigger pre-events when * there are events that can be prevented. */ Select2.prototype.trigger = function (name, args) { var actualTrigger = Select2.__super__.trigger; var preTriggerMap = { 'open': 'opening', 'close': 'closing', 'select': 'selecting', 'unselect': 'unselecting' }; if (args === undefined) { args = {}; } if (name in preTriggerMap) { var preTriggerName = preTriggerMap[name]; var preTriggerArgs = { prevented: false, name: name, args: args }; actualTrigger.call(this, preTriggerName, preTriggerArgs); if (preTriggerArgs.prevented) { args.prevented = true; return; } } actualTrigger.call(this, name, args); }; Select2.prototype.toggleDropdown = function () { if (this.options.get('disabled')) { return; } if (this.isOpen()) { this.close(); } else { this.open(); } }; Select2.prototype.open = function () { if (this.isOpen()) { return; } this.trigger('query', {}); }; Select2.prototype.close = function () { if (!this.isOpen()) { return; } this.trigger('close', {}); }; Select2.prototype.isOpen = function () { return this.$container.hasClass('select2-container--open'); }; Select2.prototype.hasFocus = function () { return this.$container.hasClass('select2-container--focus'); }; Select2.prototype.focus = function (data) { // No need to re-trigger focus events if we are already focused if (this.hasFocus()) { return; } this.$container.addClass('select2-container--focus'); this.trigger('focus', {}); }; Select2.prototype.enable = function (args) { if (this.options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `select2("enable")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop("disabled")' + ' instead.' ); } if (args == null || args.length === 0) { args = [true]; } var disabled = !args[0]; this.$element.prop('disabled', disabled); }; Select2.prototype.data = function () { if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) { console.warn( 'Select2: Data can no longer be set using `select2("data")`. You ' + 'should consider setting the value instead using `$element.val()`.' ); } var data = []; this.dataAdapter.current(function (currentData) { data = currentData; }); return data; }; Select2.prototype.val = function (args) { if (this.options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `select2("val")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.' ); } if (args == null || args.length === 0) { return this.$element.val(); } var newVal = args[0]; if ($.isArray(newVal)) { newVal = $.map(newVal, function (obj) { return obj.toString(); }); } this.$element.val(newVal).trigger('change'); }; Select2.prototype.destroy = function () { this.$container.remove(); if (this.$element[0].detachEvent) { this.$element[0].detachEvent('onpropertychange', this._syncA); } if (this._observer != null) { this._observer.disconnect(); this._observer = null; } else if (this.$element[0].removeEventListener) { this.$element[0] .removeEventListener('DOMAttrModified', this._syncA, false); this.$element[0] .removeEventListener('DOMNodeInserted', this._syncS, false); this.$element[0] .removeEventListener('DOMNodeRemoved', this._syncS, false); } this._syncA = null; this._syncS = null; this.$element.off('.select2'); this.$element.attr('tabindex', this.$element.data('old-tabindex')); this.$element.removeClass('select2-hidden-accessible'); this.$element.attr('aria-hidden', 'false'); this.$element.removeData('select2'); this.dataAdapter.destroy(); this.selection.destroy(); this.dropdown.destroy(); this.results.destroy(); this.dataAdapter = null; this.selection = null; this.dropdown = null; this.results = null; }; Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container.addClass('select2-container--' + this.options.get('theme')); $container.data('element', this.$element); return $container; }; return Select2; }); S2.define('select2/compat/utils',[ 'jquery' ], function ($) { function syncCssClasses ($dest, $src, adapter) { var classes, replacements = [], adapted; classes = $.trim($dest.attr('class')); if (classes) { classes = '' + classes; // for IE which returns object $(classes.split(/\s+/)).each(function () { // Save all Select2 classes if (this.indexOf('select2-') === 0) { replacements.push(this); } }); } classes = $.trim($src.attr('class')); if (classes) { classes = '' + classes; // for IE which returns object $(classes.split(/\s+/)).each(function () { // Only adapt non-Select2 classes if (this.indexOf('select2-') !== 0) { adapted = adapter(this); if (adapted != null) { replacements.push(adapted); } } }); } $dest.attr('class', replacements.join(' ')); } return { syncCssClasses: syncCssClasses }; }); S2.define('select2/compat/containerCss',[ 'jquery', './utils' ], function ($, CompatUtils) { // No-op CSS adapter that discards all classes by default function _containerAdapter (clazz) { return null; } function ContainerCSS () { } ContainerCSS.prototype.render = function (decorated) { var $container = decorated.call(this); var containerCssClass = this.options.get('containerCssClass') || ''; if ($.isFunction(containerCssClass)) { containerCssClass = containerCssClass(this.$element); } var containerCssAdapter = this.options.get('adaptContainerCssClass'); containerCssAdapter = containerCssAdapter || _containerAdapter; if (containerCssClass.indexOf(':all:') !== -1) { containerCssClass = containerCssClass.replace(':all:', ''); var _cssAdapter = containerCssAdapter; containerCssAdapter = function (clazz) { var adapted = _cssAdapter(clazz); if (adapted != null) { // Append the old one along with the adapted one return adapted + ' ' + clazz; } return clazz; }; } var containerCss = this.options.get('containerCss') || {}; if ($.isFunction(containerCss)) { containerCss = containerCss(this.$element); } CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); $container.css(containerCss); $container.addClass(containerCssClass); return $container; }; return ContainerCSS; }); S2.define('select2/compat/dropdownCss',[ 'jquery', './utils' ], function ($, CompatUtils) { // No-op CSS adapter that discards all classes by default function _dropdownAdapter (clazz) { return null; } function DropdownCSS () { } DropdownCSS.prototype.render = function (decorated) { var $dropdown = decorated.call(this); var dropdownCssClass = this.options.get('dropdownCssClass') || ''; if ($.isFunction(dropdownCssClass)) { dropdownCssClass = dropdownCssClass(this.$element); } var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; if (dropdownCssClass.indexOf(':all:') !== -1) { dropdownCssClass = dropdownCssClass.replace(':all:', ''); var _cssAdapter = dropdownCssAdapter; dropdownCssAdapter = function (clazz) { var adapted = _cssAdapter(clazz); if (adapted != null) { // Append the old one along with the adapted one return adapted + ' ' + clazz; } return clazz; }; } var dropdownCss = this.options.get('dropdownCss') || {}; if ($.isFunction(dropdownCss)) { dropdownCss = dropdownCss(this.$element); } CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); $dropdown.css(dropdownCss); $dropdown.addClass(dropdownCssClass); return $dropdown; }; return DropdownCSS; }); S2.define('select2/compat/initSelection',[ 'jquery' ], function ($) { function InitSelection (decorated, $element, options) { if (options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `initSelection` option has been deprecated in favor' + ' of a custom data adapter that overrides the `current` method. ' + 'This method is now called multiple times instead of a single ' + 'time when the instance is initialized. Support will be removed ' + 'for the `initSelection` option in future versions of Select2' ); } this.initSelection = options.get('initSelection'); this._isInitialized = false; decorated.call(this, $element, options); } InitSelection.prototype.current = function (decorated, callback) { var self = this; if (this._isInitialized) { decorated.call(this, callback); return; } this.initSelection.call(null, this.$element, function (data) { self._isInitialized = true; if (!$.isArray(data)) { data = [data]; } callback(data); }); }; return InitSelection; }); S2.define('select2/compat/inputData',[ 'jquery' ], function ($) { function InputData (decorated, $element, options) { this._currentData = []; this._valueSeparator = options.get('valueSeparator') || ','; if ($element.prop('type') === 'hidden') { if (options.get('debug') && console && console.warn) { console.warn( 'Select2: Using a hidden input with Select2 is no longer ' + 'supported and may stop working in the future. It is recommended ' + 'to use a `<select>` element instead.' ); } } decorated.call(this, $element, options); } InputData.prototype.current = function (_, callback) { function getSelected (data, selectedIds) { var selected = []; if (data.selected || $.inArray(data.id, selectedIds) !== -1) { data.selected = true; selected.push(data); } else { data.selected = false; } if (data.children) { selected.push.apply(selected, getSelected(data.children, selectedIds)); } return selected; } var selected = []; for (var d = 0; d < this._currentData.length; d++) { var data = this._currentData[d]; selected.push.apply( selected, getSelected( data, this.$element.val().split( this._valueSeparator ) ) ); } callback(selected); }; InputData.prototype.select = function (_, data) { if (!this.options.get('multiple')) { this.current(function (allData) { $.map(allData, function (data) { data.selected = false; }); }); this.$element.val(data.id); this.$element.trigger('change'); } else { var value = this.$element.val(); value += this._valueSeparator + data.id; this.$element.val(value); this.$element.trigger('change'); } }; InputData.prototype.unselect = function (_, data) { var self = this; data.selected = false; this.current(function (allData) { var values = []; for (var d = 0; d < allData.length; d++) { var item = allData[d]; if (data.id == item.id) { continue; } values.push(item.id); } self.$element.val(values.join(self._valueSeparator)); self.$element.trigger('change'); }); }; InputData.prototype.query = function (_, params, callback) { var results = []; for (var d = 0; d < this._currentData.length; d++) { var data = this._currentData[d]; var matches = this.matches(params, data); if (matches !== null) { results.push(matches); } } callback({ results: results }); }; InputData.prototype.addOptions = function (_, $options) { var options = $.map($options, function ($option) { return $.data($option[0], 'data'); }); this._currentData.push.apply(this._currentData, options); }; return InputData; }); S2.define('select2/compat/matcher',[ 'jquery' ], function ($) { function oldMatcher (matcher) { function wrappedMatcher (params, data) { var match = $.extend(true, {}, data); if (params.term == null || $.trim(params.term) === '') { return match; } if (data.children) { for (var c = data.children.length - 1; c >= 0; c--) { var child = data.children[c]; // Check if the child object matches // The old matcher returned a boolean true or false var doesMatch = matcher(params.term, child.text, child); // If the child didn't match, pop it off if (!doesMatch) { match.children.splice(c, 1); } } if (match.children.length > 0) { return match; } } if (matcher(params.term, data.text, data)) { return match; } return null; } return wrappedMatcher; } return oldMatcher; }); S2.define('select2/compat/query',[ ], function () { function Query (decorated, $element, options) { if (options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `query` option has been deprecated in favor of a ' + 'custom data adapter that overrides the `query` method. Support ' + 'will be removed for the `query` option in future versions of ' + 'Select2.' ); } decorated.call(this, $element, options); } Query.prototype.query = function (_, params, callback) { params.callback = callback; var query = this.options.get('query'); query.call(null, params); }; return Query; }); S2.define('select2/dropdown/attachContainer',[ ], function () { function AttachContainer (decorated, $element, options) { decorated.call(this, $element, options); } AttachContainer.prototype.position = function (decorated, $dropdown, $container) { var $dropdownContainer = $container.find('.dropdown-wrapper'); $dropdownContainer.append($dropdown); $dropdown.addClass('select2-dropdown--below'); $container.addClass('select2-container--below'); }; return AttachContainer; }); S2.define('select2/dropdown/stopPropagation',[ ], function () { function StopPropagation () { } StopPropagation.prototype.bind = function (decorated, container, $container) { decorated.call(this, container, $container); var stoppedEvents = [ 'blur', 'change', 'click', 'dblclick', 'focus', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'keypress', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseover', 'mouseup', 'search', 'touchend', 'touchstart' ]; this.$dropdown.on(stoppedEvents.join(' '), function (evt) { evt.stopPropagation(); }); }; return StopPropagation; }); S2.define('select2/selection/stopPropagation',[ ], function () { function StopPropagation () { } StopPropagation.prototype.bind = function (decorated, container, $container) { decorated.call(this, container, $container); var stoppedEvents = [ 'blur', 'change', 'click', 'dblclick', 'focus', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'keypress', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseover', 'mouseup', 'search', 'touchend', 'touchstart' ]; this.$selection.on(stoppedEvents.join(' '), function (evt) { evt.stopPropagation(); }); }; return StopPropagation; }); /*! * jQuery Mousewheel 3.1.13 * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license */ (function (factory) { if ( typeof S2.define === 'function' && S2.define.amd ) { // AMD. Register as an anonymous module. S2.define('jquery-mousewheel',['jquery'], factory); } else if (typeof exports === 'object') { // Node/CommonJS style for Browserify module.exports = factory; } else { // Browser globals factory(jQuery); } }(function ($) { var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], slice = Array.prototype.slice, nullLowestDeltaTimeout, lowestDelta; if ( $.event.fixHooks ) { for ( var i = toFix.length; i; ) { $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; } } var special = $.event.special.mousewheel = { version: '3.1.12', setup: function() { if ( this.addEventListener ) { for ( var i = toBind.length; i; ) { this.addEventListener( toBind[--i], handler, false ); } } else { this.onmousewheel = handler; } // Store the line height and page height for this particular element $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); }, teardown: function() { if ( this.removeEventListener ) { for ( var i = toBind.length; i; ) { this.removeEventListener( toBind[--i], handler, false ); } } else { this.onmousewheel = null; } // Clean up the data we added to the element $.removeData(this, 'mousewheel-line-height'); $.removeData(this, 'mousewheel-page-height'); }, getLineHeight: function(elem) { var $elem = $(elem), $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); if (!$parent.length) { $parent = $('body'); } return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; }, getPageHeight: function(elem) { return $(elem).height(); }, settings: { adjustOldDeltas: true, // see shouldAdjustOldDeltas() below normalizeOffset: true // calls getBoundingClientRect for each event } }; $.fn.extend({ mousewheel: function(fn) { return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); }, unmousewheel: function(fn) { return this.unbind('mousewheel', fn); } }); function handler(event) { var orgEvent = event || window.event, args = slice.call(arguments, 1), delta = 0, deltaX = 0, deltaY = 0, absDelta = 0, offsetX = 0, offsetY = 0; event = $.event.fix(orgEvent); event.type = 'mousewheel'; // Old school scrollwheel delta if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } // Firefox < 17 horizontal scrolling related to DOMMouseScroll event if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { deltaX = deltaY * -1; deltaY = 0; } // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy delta = deltaY === 0 ? deltaX : deltaY; // New school wheel delta (wheel event) if ( 'deltaY' in orgEvent ) { deltaY = orgEvent.deltaY * -1; delta = deltaY; } if ( 'deltaX' in orgEvent ) { deltaX = orgEvent.deltaX; if ( deltaY === 0 ) { delta = deltaX * -1; } } // No change actually happened, no reason to go any further if ( deltaY === 0 && deltaX === 0 ) { return; } // Need to convert lines and pages to pixels if we aren't already in pixels // There are three delta modes: // * deltaMode 0 is by pixels, nothing to do // * deltaMode 1 is by lines // * deltaMode 2 is by pages if ( orgEvent.deltaMode === 1 ) { var lineHeight = $.data(this, 'mousewheel-line-height'); delta *= lineHeight; deltaY *= lineHeight; deltaX *= lineHeight; } else if ( orgEvent.deltaMode === 2 ) { var pageHeight = $.data(this, 'mousewheel-page-height'); delta *= pageHeight; deltaY *= pageHeight; deltaX *= pageHeight; } // Store lowest absolute delta to normalize the delta values absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); if ( !lowestDelta || absDelta < lowestDelta ) { lowestDelta = absDelta; // Adjust older deltas if necessary if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { lowestDelta /= 40; } } // Adjust older deltas if necessary if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { // Divide all the things by 40! delta /= 40; deltaX /= 40; deltaY /= 40; } // Get a whole, normalized value for the deltas delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); // Normalise offsetX and offsetY properties if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { var boundingRect = this.getBoundingClientRect(); offsetX = event.clientX - boundingRect.left; offsetY = event.clientY - boundingRect.top; } // Add information to the event object event.deltaX = deltaX; event.deltaY = deltaY; event.deltaFactor = lowestDelta; event.offsetX = offsetX; event.offsetY = offsetY; // Go ahead and set deltaMode to 0 since we converted to pixels // Although this is a little odd since we overwrite the deltaX/Y // properties with normalized deltas. event.deltaMode = 0; // Add event and delta to the front of the arguments args.unshift(event, delta, deltaX, deltaY); // Clearout lowestDelta after sometime to better // handle multiple device types that give different // a different lowestDelta // Ex: trackpad = 3 and mouse wheel = 120 if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); return ($.event.dispatch || $.event.handle).apply(this, args); } function nullLowestDelta() { lowestDelta = null; } function shouldAdjustOldDeltas(orgEvent, absDelta) { // If this is an older event and the delta is divisable by 120, // then we are assuming that the browser is treating this as an // older mouse wheel event and that we should divide the deltas // by 40 to try and get a more usable deltaFactor. // Side note, this actually impacts the reported scroll distance // in older browsers and can cause scrolling to be slower than native. // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; } })); S2.define('jquery.select2',[ 'jquery', 'jquery-mousewheel', './select2/core', './select2/defaults' ], function ($, _, Select2, Defaults) { if ($.fn.select2 == null) { // All methods that should return the element var thisMethods = ['open', 'close', 'destroy']; $.fn.select2 = function (options) { options = options || {}; if (typeof options === 'object') { this.each(function () { var instanceOptions = $.extend(true, {}, options); var instance = new Select2($(this), instanceOptions); }); return this; } else if (typeof options === 'string') { var ret; var args = Array.prototype.slice.call(arguments, 1); this.each(function () { var instance = $(this).data('select2'); if (instance == null && window.console && console.error) { console.error( 'The select2(\'' + options + '\') method was called on an ' + 'element that is not using Select2.' ); } ret = instance[options].apply(instance, args); }); // Check if we should be returning `this` if ($.inArray(options, thisMethods) > -1) { return this; } return ret; } else { throw new Error('Invalid arguments for Select2: ' + options); } }; } if ($.fn.select2.defaults == null) { $.fn.select2.defaults = Defaults; } return Select2; }); // Return the AMD loader configuration so it can be used outside of this file return { define: S2.define, require: S2.require }; }()); // Autoload the jQuery bindings // We know that all of the modules exist above this, so we're safe var select2 = S2.require('jquery.select2'); // Hold the AMD module references on the jQuery function that was just loaded // This allows Select2 to use the internal loader outside of this file, such // as in the language files. jQuery.fn.select2.amd = S2; // Return the Select2 instance for anyone who is importing it. return select2; })); AdminLTE/plugins/select2/select2.min.js 0000644 00000202150 15002261751 0013643 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">×</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; },e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); AdminLTE/plugins/select2/select2.js 0000644 00000425156 15002261751 0013076 0 ustar 00 /*! * Select2 4.0.3 * https://select2.github.io * * Released under the MIT license * https://github.com/select2/select2/blob/master/LICENSE.md */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], factory); } else if (typeof exports === 'object') { // Node/CommonJS factory(require('jquery')); } else { // Browser globals factory(jQuery); } }(function (jQuery) { // This is needed so we can catch the AMD loader configuration and use it // The inner file should be wrapped (by `banner.start.js`) in a function that // returns the AMD loader references. var S2 = (function () { // Restore the Select2 AMD loader so it can be used // Needed mostly in the language files, where the loader is not inserted if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { var S2 = jQuery.fn.select2.amd; } var S2;(function () { if (!S2 || !S2.requirejs) { if (!S2) { S2 = {}; } else { require = S2; } /** * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. * Available via the MIT or new BSD license. * see: http://github.com/jrburke/almond for details */ //Going sloppy to avoid 'use strict' string cost, but strict practices should //be followed. /*jslint sloppy: true */ /*global setTimeout: false */ var requirejs, require, define; (function (undef) { var main, req, makeMap, handlers, defined = {}, waiting = {}, config = {}, defining = {}, hasOwn = Object.prototype.hasOwnProperty, aps = [].slice, jsSuffixRegExp = /\.js$/; function hasProp(obj, prop) { return hasOwn.call(obj, prop); } /** * Given a relative module name, like ./something, normalize it to * a real name that can be mapped to a path. * @param {String} name the relative name * @param {String} baseName a real name that the name arg is relative * to. * @returns {String} normalized name */ function normalize(name, baseName) { var nameParts, nameSegment, mapValue, foundMap, lastIndex, foundI, foundStarMap, starI, i, j, part, baseParts = baseName && baseName.split("/"), map = config.map, starMap = (map && map['*']) || {}; //Adjust any relative paths. if (name && name.charAt(0) === ".") { //If have a base name, try to normalize against it, //otherwise, assume it is a top-level require that will //be relative to baseUrl in the end. if (baseName) { name = name.split('/'); lastIndex = name.length - 1; // Node .js allowance: if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); } //Lop off the last part of baseParts, so that . matches the //"directory" and not name of the baseName's module. For instance, //baseName of "one/two/three", maps to "one/two/three.js", but we //want the directory, "one/two" for this normalization. name = baseParts.slice(0, baseParts.length - 1).concat(name); //start trimDots for (i = 0; i < name.length; i += 1) { part = name[i]; if (part === ".") { name.splice(i, 1); i -= 1; } else if (part === "..") { if (i === 1 && (name[2] === '..' || name[0] === '..')) { //End of the line. Keep at least one non-dot //path segment at the front so it can be mapped //correctly to disk. Otherwise, there is likely //no path mapping for a path starting with '..'. //This can still fail, but catches the most reasonable //uses of .. break; } else if (i > 0) { name.splice(i - 1, 2); i -= 2; } } } //end trimDots name = name.join("/"); } else if (name.indexOf('./') === 0) { // No baseName, so this is ID is resolved relative // to baseUrl, pull off the leading dot. name = name.substring(2); } } //Apply map config if available. if ((baseParts || starMap) && map) { nameParts = name.split('/'); for (i = nameParts.length; i > 0; i -= 1) { nameSegment = nameParts.slice(0, i).join("/"); if (baseParts) { //Find the longest baseName segment match in the config. //So, do joins on the biggest to smallest lengths of baseParts. for (j = baseParts.length; j > 0; j -= 1) { mapValue = map[baseParts.slice(0, j).join('/')]; //baseName segment has config, find if it has one for //this name. if (mapValue) { mapValue = mapValue[nameSegment]; if (mapValue) { //Match, update name to the new value. foundMap = mapValue; foundI = i; break; } } } } if (foundMap) { break; } //Check for a star map match, but just hold on to it, //if there is a shorter segment match later in a matching //config, then favor over this star map. if (!foundStarMap && starMap && starMap[nameSegment]) { foundStarMap = starMap[nameSegment]; starI = i; } } if (!foundMap && foundStarMap) { foundMap = foundStarMap; foundI = starI; } if (foundMap) { nameParts.splice(0, foundI, foundMap); name = nameParts.join('/'); } } return name; } function makeRequire(relName, forceSync) { return function () { //A version of a require function that passes a moduleName //value for items that may need to //look up paths relative to the moduleName var args = aps.call(arguments, 0); //If first arg is not require('string'), and there is only //one arg, it is the array form without a callback. Insert //a null so that the following concat is correct. if (typeof args[0] !== 'string' && args.length === 1) { args.push(null); } return req.apply(undef, args.concat([relName, forceSync])); }; } function makeNormalize(relName) { return function (name) { return normalize(name, relName); }; } function makeLoad(depName) { return function (value) { defined[depName] = value; }; } function callDep(name) { if (hasProp(waiting, name)) { var args = waiting[name]; delete waiting[name]; defining[name] = true; main.apply(undef, args); } if (!hasProp(defined, name) && !hasProp(defining, name)) { throw new Error('No ' + name); } return defined[name]; } //Turns a plugin!resource to [plugin, resource] //with the plugin being undefined if the name //did not have a plugin prefix. function splitPrefix(name) { var prefix, index = name ? name.indexOf('!') : -1; if (index > -1) { prefix = name.substring(0, index); name = name.substring(index + 1, name.length); } return [prefix, name]; } /** * Makes a name map, normalizing the name, and using a plugin * for normalization if necessary. Grabs a ref to plugin * too, as an optimization. */ makeMap = function (name, relName) { var plugin, parts = splitPrefix(name), prefix = parts[0]; name = parts[1]; if (prefix) { prefix = normalize(prefix, relName); plugin = callDep(prefix); } //Normalize according if (prefix) { if (plugin && plugin.normalize) { name = plugin.normalize(name, makeNormalize(relName)); } else { name = normalize(name, relName); } } else { name = normalize(name, relName); parts = splitPrefix(name); prefix = parts[0]; name = parts[1]; if (prefix) { plugin = callDep(prefix); } } //Using ridiculous property names for space reasons return { f: prefix ? prefix + '!' + name : name, //fullName n: name, pr: prefix, p: plugin }; }; function makeConfig(name) { return function () { return (config && config.config && config.config[name]) || {}; }; } handlers = { require: function (name) { return makeRequire(name); }, exports: function (name) { var e = defined[name]; if (typeof e !== 'undefined') { return e; } else { return (defined[name] = {}); } }, module: function (name) { return { id: name, uri: '', exports: defined[name], config: makeConfig(name) }; } }; main = function (name, deps, callback, relName) { var cjsModule, depName, ret, map, i, args = [], callbackType = typeof callback, usingExports; //Use name if no relName relName = relName || name; //Call the callback to define the module, if necessary. if (callbackType === 'undefined' || callbackType === 'function') { //Pull out the defined dependencies and pass the ordered //values to the callback. //Default to [require, exports, module] if no deps deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; for (i = 0; i < deps.length; i += 1) { map = makeMap(deps[i], relName); depName = map.f; //Fast path CommonJS standard dependencies. if (depName === "require") { args[i] = handlers.require(name); } else if (depName === "exports") { //CommonJS module spec 1.1 args[i] = handlers.exports(name); usingExports = true; } else if (depName === "module") { //CommonJS module spec 1.1 cjsModule = args[i] = handlers.module(name); } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) { args[i] = callDep(depName); } else if (map.p) { map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); args[i] = defined[depName]; } else { throw new Error(name + ' missing ' + depName); } } ret = callback ? callback.apply(defined[name], args) : undefined; if (name) { //If setting exports via "module" is in play, //favor that over return value and exports. After that, //favor a non-undefined return value over exports use. if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) { defined[name] = cjsModule.exports; } else if (ret !== undef || !usingExports) { //Use the return value from the function. defined[name] = ret; } } } else if (name) { //May just be an object definition for the module. Only //worry about defining if have a module name. defined[name] = callback; } }; requirejs = require = req = function (deps, callback, relName, forceSync, alt) { if (typeof deps === "string") { if (handlers[deps]) { //callback in this case is really relName return handlers[deps](callback); } //Just return the module wanted. In this scenario, the //deps arg is the module name, and second arg (if passed) //is just the relName. //Normalize module name, if it contains . or .. return callDep(makeMap(deps, callback).f); } else if (!deps.splice) { //deps is a config object, not an array. config = deps; if (config.deps) { req(config.deps, config.callback); } if (!callback) { return; } if (callback.splice) { //callback is an array, which means it is a dependency list. //Adjust args if there are dependencies deps = callback; callback = relName; relName = null; } else { deps = undef; } } //Support require(['a']) callback = callback || function () {}; //If relName is a function, it is an errback handler, //so remove it. if (typeof relName === 'function') { relName = forceSync; forceSync = alt; } //Simulate async callback; if (forceSync) { main(undef, deps, callback, relName); } else { //Using a non-zero value because of concern for what old browsers //do, and latest browsers "upgrade" to 4 if lower value is used: //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: //If want a value immediately, use require('id') instead -- something //that works in almond on the global level, but not guaranteed and //unlikely to work in other AMD implementations. setTimeout(function () { main(undef, deps, callback, relName); }, 4); } return req; }; /** * Just drops the config on the floor, but returns req in case * the config return value is used. */ req.config = function (cfg) { return req(cfg); }; /** * Expose module registry for debugging and tooling */ requirejs._defined = defined; define = function (name, deps, callback) { if (typeof name !== 'string') { throw new Error('See almond README: incorrect module build, no module name'); } //This module may not have dependencies if (!deps.splice) { //deps is not an array, so probably means //an object literal or factory function for //the value. Adjust args. callback = deps; deps = []; } if (!hasProp(defined, name) && !hasProp(waiting, name)) { waiting[name] = [name, deps, callback]; } }; define.amd = { jQuery: true }; }()); S2.requirejs = requirejs;S2.require = require;S2.define = define; } }()); S2.define("almond", function(){}); /* global jQuery:false, $:false */ S2.define('jquery',[],function () { var _$ = jQuery || $; if (_$ == null && console && console.error) { console.error( 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.' ); } return _$; }); S2.define('select2/utils',[ 'jquery' ], function ($) { var Utils = {}; Utils.Extend = function (ChildClass, SuperClass) { var __hasProp = {}.hasOwnProperty; function BaseConstructor () { this.constructor = ChildClass; } for (var key in SuperClass) { if (__hasProp.call(SuperClass, key)) { ChildClass[key] = SuperClass[key]; } } BaseConstructor.prototype = SuperClass.prototype; ChildClass.prototype = new BaseConstructor(); ChildClass.__super__ = SuperClass.prototype; return ChildClass; }; function getMethods (theClass) { var proto = theClass.prototype; var methods = []; for (var methodName in proto) { var m = proto[methodName]; if (typeof m !== 'function') { continue; } if (methodName === 'constructor') { continue; } methods.push(methodName); } return methods; } Utils.Decorate = function (SuperClass, DecoratorClass) { var decoratedMethods = getMethods(DecoratorClass); var superMethods = getMethods(SuperClass); function DecoratedClass () { var unshift = Array.prototype.unshift; var argCount = DecoratorClass.prototype.constructor.length; var calledConstructor = SuperClass.prototype.constructor; if (argCount > 0) { unshift.call(arguments, SuperClass.prototype.constructor); calledConstructor = DecoratorClass.prototype.constructor; } calledConstructor.apply(this, arguments); } DecoratorClass.displayName = SuperClass.displayName; function ctr () { this.constructor = DecoratedClass; } DecoratedClass.prototype = new ctr(); for (var m = 0; m < superMethods.length; m++) { var superMethod = superMethods[m]; DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod]; } var calledMethod = function (methodName) { // Stub out the original method if it's not decorating an actual method var originalMethod = function () {}; if (methodName in DecoratedClass.prototype) { originalMethod = DecoratedClass.prototype[methodName]; } var decoratedMethod = DecoratorClass.prototype[methodName]; return function () { var unshift = Array.prototype.unshift; unshift.call(arguments, originalMethod); return decoratedMethod.apply(this, arguments); }; }; for (var d = 0; d < decoratedMethods.length; d++) { var decoratedMethod = decoratedMethods[d]; DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); } return DecoratedClass; }; var Observable = function () { this.listeners = {}; }; Observable.prototype.on = function (event, callback) { this.listeners = this.listeners || {}; if (event in this.listeners) { this.listeners[event].push(callback); } else { this.listeners[event] = [callback]; } }; Observable.prototype.trigger = function (event) { var slice = Array.prototype.slice; var params = slice.call(arguments, 1); this.listeners = this.listeners || {}; // Params should always come in as an array if (params == null) { params = []; } // If there are no arguments to the event, use a temporary object if (params.length === 0) { params.push({}); } // Set the `_type` of the first object to the event params[0]._type = event; if (event in this.listeners) { this.invoke(this.listeners[event], slice.call(arguments, 1)); } if ('*' in this.listeners) { this.invoke(this.listeners['*'], arguments); } }; Observable.prototype.invoke = function (listeners, params) { for (var i = 0, len = listeners.length; i < len; i++) { listeners[i].apply(this, params); } }; Utils.Observable = Observable; Utils.generateChars = function (length) { var chars = ''; for (var i = 0; i < length; i++) { var randomChar = Math.floor(Math.random() * 36); chars += randomChar.toString(36); } return chars; }; Utils.bind = function (func, context) { return function () { func.apply(context, arguments); }; }; Utils._convertData = function (data) { for (var originalKey in data) { var keys = originalKey.split('-'); var dataLevel = data; if (keys.length === 1) { continue; } for (var k = 0; k < keys.length; k++) { var key = keys[k]; // Lowercase the first letter // By default, dash-separated becomes camelCase key = key.substring(0, 1).toLowerCase() + key.substring(1); if (!(key in dataLevel)) { dataLevel[key] = {}; } if (k == keys.length - 1) { dataLevel[key] = data[originalKey]; } dataLevel = dataLevel[key]; } delete data[originalKey]; } return data; }; Utils.hasScroll = function (index, el) { // Adapted from the function created by @ShadowScripter // and adapted by @BillBarry on the Stack Exchange Code Review website. // The original code can be found at // http://codereview.stackexchange.com/q/13338 // and was designed to be used with the Sizzle selector engine. var $el = $(el); var overflowX = el.style.overflowX; var overflowY = el.style.overflowY; //Check both x and y declarations if (overflowX === overflowY && (overflowY === 'hidden' || overflowY === 'visible')) { return false; } if (overflowX === 'scroll' || overflowY === 'scroll') { return true; } return ($el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth); }; Utils.escapeMarkup = function (markup) { var replaceMap = { '\\': '\', '&': '&', '<': '<', '>': '>', '"': '"', '\'': ''', '/': '/' }; // Do not try to escape the markup if it's not a string if (typeof markup !== 'string') { return markup; } return String(markup).replace(/[&<>"'\/\\]/g, function (match) { return replaceMap[match]; }); }; // Append an array of jQuery nodes to a given element. Utils.appendMany = function ($element, $nodes) { // jQuery 1.7.x does not support $.fn.append() with an array // Fall back to a jQuery object collection using $.fn.add() if ($.fn.jquery.substr(0, 3) === '1.7') { var $jqNodes = $(); $.map($nodes, function (node) { $jqNodes = $jqNodes.add(node); }); $nodes = $jqNodes; } $element.append($nodes); }; return Utils; }); S2.define('select2/results',[ 'jquery', './utils' ], function ($, Utils) { function Results ($element, options, dataAdapter) { this.$element = $element; this.data = dataAdapter; this.options = options; Results.__super__.constructor.call(this); } Utils.Extend(Results, Utils.Observable); Results.prototype.render = function () { var $results = $( '<ul class="select2-results__options" role="tree"></ul>' ); if (this.options.get('multiple')) { $results.attr('aria-multiselectable', 'true'); } this.$results = $results; return $results; }; Results.prototype.clear = function () { this.$results.empty(); }; Results.prototype.displayMessage = function (params) { var escapeMarkup = this.options.get('escapeMarkup'); this.clear(); this.hideLoading(); var $message = $( '<li role="treeitem" aria-live="assertive"' + ' class="select2-results__option"></li>' ); var message = this.options.get('translations').get(params.message); $message.append( escapeMarkup( message(params.args) ) ); $message[0].className += ' select2-results__message'; this.$results.append($message); }; Results.prototype.hideMessages = function () { this.$results.find('.select2-results__message').remove(); }; Results.prototype.append = function (data) { this.hideLoading(); var $options = []; if (data.results == null || data.results.length === 0) { if (this.$results.children().length === 0) { this.trigger('results:message', { message: 'noResults' }); } return; } data.results = this.sort(data.results); for (var d = 0; d < data.results.length; d++) { var item = data.results[d]; var $option = this.option(item); $options.push($option); } this.$results.append($options); }; Results.prototype.position = function ($results, $dropdown) { var $resultsContainer = $dropdown.find('.select2-results'); $resultsContainer.append($results); }; Results.prototype.sort = function (data) { var sorter = this.options.get('sorter'); return sorter(data); }; Results.prototype.highlightFirstItem = function () { var $options = this.$results .find('.select2-results__option[aria-selected]'); var $selected = $options.filter('[aria-selected=true]'); // Check if there are any selected options if ($selected.length > 0) { // If there are selected options, highlight the first $selected.first().trigger('mouseenter'); } else { // If there are no selected options, highlight the first option // in the dropdown $options.first().trigger('mouseenter'); } this.ensureHighlightVisible(); }; Results.prototype.setClasses = function () { var self = this; this.data.current(function (selected) { var selectedIds = $.map(selected, function (s) { return s.id.toString(); }); var $options = self.$results .find('.select2-results__option[aria-selected]'); $options.each(function () { var $option = $(this); var item = $.data(this, 'data'); // id needs to be converted to a string when comparing var id = '' + item.id; if ((item.element != null && item.element.selected) || (item.element == null && $.inArray(id, selectedIds) > -1)) { $option.attr('aria-selected', 'true'); } else { $option.attr('aria-selected', 'false'); } }); }); }; Results.prototype.showLoading = function (params) { this.hideLoading(); var loadingMore = this.options.get('translations').get('searching'); var loading = { disabled: true, loading: true, text: loadingMore(params) }; var $loading = this.option(loading); $loading.className += ' loading-results'; this.$results.prepend($loading); }; Results.prototype.hideLoading = function () { this.$results.find('.loading-results').remove(); }; Results.prototype.option = function (data) { var option = document.createElement('li'); option.className = 'select2-results__option'; var attrs = { 'role': 'treeitem', 'aria-selected': 'false' }; if (data.disabled) { delete attrs['aria-selected']; attrs['aria-disabled'] = 'true'; } if (data.id == null) { delete attrs['aria-selected']; } if (data._resultId != null) { option.id = data._resultId; } if (data.title) { option.title = data.title; } if (data.children) { attrs.role = 'group'; attrs['aria-label'] = data.text; delete attrs['aria-selected']; } for (var attr in attrs) { var val = attrs[attr]; option.setAttribute(attr, val); } if (data.children) { var $option = $(option); var label = document.createElement('strong'); label.className = 'select2-results__group'; var $label = $(label); this.template(data, label); var $children = []; for (var c = 0; c < data.children.length; c++) { var child = data.children[c]; var $child = this.option(child); $children.push($child); } var $childrenContainer = $('<ul></ul>', { 'class': 'select2-results__options select2-results__options--nested' }); $childrenContainer.append($children); $option.append(label); $option.append($childrenContainer); } else { this.template(data, option); } $.data(option, 'data', data); return option; }; Results.prototype.bind = function (container, $container) { var self = this; var id = container.id + '-results'; this.$results.attr('id', id); container.on('results:all', function (params) { self.clear(); self.append(params.data); if (container.isOpen()) { self.setClasses(); self.highlightFirstItem(); } }); container.on('results:append', function (params) { self.append(params.data); if (container.isOpen()) { self.setClasses(); } }); container.on('query', function (params) { self.hideMessages(); self.showLoading(params); }); container.on('select', function () { if (!container.isOpen()) { return; } self.setClasses(); self.highlightFirstItem(); }); container.on('unselect', function () { if (!container.isOpen()) { return; } self.setClasses(); self.highlightFirstItem(); }); container.on('open', function () { // When the dropdown is open, aria-expended="true" self.$results.attr('aria-expanded', 'true'); self.$results.attr('aria-hidden', 'false'); self.setClasses(); self.ensureHighlightVisible(); }); container.on('close', function () { // When the dropdown is closed, aria-expended="false" self.$results.attr('aria-expanded', 'false'); self.$results.attr('aria-hidden', 'true'); self.$results.removeAttr('aria-activedescendant'); }); container.on('results:toggle', function () { var $highlighted = self.getHighlightedResults(); if ($highlighted.length === 0) { return; } $highlighted.trigger('mouseup'); }); container.on('results:select', function () { var $highlighted = self.getHighlightedResults(); if ($highlighted.length === 0) { return; } var data = $highlighted.data('data'); if ($highlighted.attr('aria-selected') == 'true') { self.trigger('close', {}); } else { self.trigger('select', { data: data }); } }); container.on('results:previous', function () { var $highlighted = self.getHighlightedResults(); var $options = self.$results.find('[aria-selected]'); var currentIndex = $options.index($highlighted); // If we are already at te top, don't move further if (currentIndex === 0) { return; } var nextIndex = currentIndex - 1; // If none are highlighted, highlight the first if ($highlighted.length === 0) { nextIndex = 0; } var $next = $options.eq(nextIndex); $next.trigger('mouseenter'); var currentOffset = self.$results.offset().top; var nextTop = $next.offset().top; var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); if (nextIndex === 0) { self.$results.scrollTop(0); } else if (nextTop - currentOffset < 0) { self.$results.scrollTop(nextOffset); } }); container.on('results:next', function () { var $highlighted = self.getHighlightedResults(); var $options = self.$results.find('[aria-selected]'); var currentIndex = $options.index($highlighted); var nextIndex = currentIndex + 1; // If we are at the last option, stay there if (nextIndex >= $options.length) { return; } var $next = $options.eq(nextIndex); $next.trigger('mouseenter'); var currentOffset = self.$results.offset().top + self.$results.outerHeight(false); var nextBottom = $next.offset().top + $next.outerHeight(false); var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; if (nextIndex === 0) { self.$results.scrollTop(0); } else if (nextBottom > currentOffset) { self.$results.scrollTop(nextOffset); } }); container.on('results:focus', function (params) { params.element.addClass('select2-results__option--highlighted'); }); container.on('results:message', function (params) { self.displayMessage(params); }); if ($.fn.mousewheel) { this.$results.on('mousewheel', function (e) { var top = self.$results.scrollTop(); var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); if (isAtTop) { self.$results.scrollTop(0); e.preventDefault(); e.stopPropagation(); } else if (isAtBottom) { self.$results.scrollTop( self.$results.get(0).scrollHeight - self.$results.height() ); e.preventDefault(); e.stopPropagation(); } }); } this.$results.on('mouseup', '.select2-results__option[aria-selected]', function (evt) { var $this = $(this); var data = $this.data('data'); if ($this.attr('aria-selected') === 'true') { if (self.options.get('multiple')) { self.trigger('unselect', { originalEvent: evt, data: data }); } else { self.trigger('close', {}); } return; } self.trigger('select', { originalEvent: evt, data: data }); }); this.$results.on('mouseenter', '.select2-results__option[aria-selected]', function (evt) { var data = $(this).data('data'); self.getHighlightedResults() .removeClass('select2-results__option--highlighted'); self.trigger('results:focus', { data: data, element: $(this) }); }); }; Results.prototype.getHighlightedResults = function () { var $highlighted = this.$results .find('.select2-results__option--highlighted'); return $highlighted; }; Results.prototype.destroy = function () { this.$results.remove(); }; Results.prototype.ensureHighlightVisible = function () { var $highlighted = this.getHighlightedResults(); if ($highlighted.length === 0) { return; } var $options = this.$results.find('[aria-selected]'); var currentIndex = $options.index($highlighted); var currentOffset = this.$results.offset().top; var nextTop = $highlighted.offset().top; var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); var offsetDelta = nextTop - currentOffset; nextOffset -= $highlighted.outerHeight(false) * 2; if (currentIndex <= 2) { this.$results.scrollTop(0); } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { this.$results.scrollTop(nextOffset); } }; Results.prototype.template = function (result, container) { var template = this.options.get('templateResult'); var escapeMarkup = this.options.get('escapeMarkup'); var content = template(result, container); if (content == null) { container.style.display = 'none'; } else if (typeof content === 'string') { container.innerHTML = escapeMarkup(content); } else { $(container).append(content); } }; return Results; }); S2.define('select2/keys',[ ], function () { var KEYS = { BACKSPACE: 8, TAB: 9, ENTER: 13, SHIFT: 16, CTRL: 17, ALT: 18, ESC: 27, SPACE: 32, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, DELETE: 46 }; return KEYS; }); S2.define('select2/selection/base',[ 'jquery', '../utils', '../keys' ], function ($, Utils, KEYS) { function BaseSelection ($element, options) { this.$element = $element; this.options = options; BaseSelection.__super__.constructor.call(this); } Utils.Extend(BaseSelection, Utils.Observable); BaseSelection.prototype.render = function () { var $selection = $( '<span class="select2-selection" role="combobox" ' + ' aria-haspopup="true" aria-expanded="false">' + '</span>' ); this._tabindex = 0; if (this.$element.data('old-tabindex') != null) { this._tabindex = this.$element.data('old-tabindex'); } else if (this.$element.attr('tabindex') != null) { this._tabindex = this.$element.attr('tabindex'); } $selection.attr('title', this.$element.attr('title')); $selection.attr('tabindex', this._tabindex); this.$selection = $selection; return $selection; }; BaseSelection.prototype.bind = function (container, $container) { var self = this; var id = container.id + '-container'; var resultsId = container.id + '-results'; this.container = container; this.$selection.on('focus', function (evt) { self.trigger('focus', evt); }); this.$selection.on('blur', function (evt) { self._handleBlur(evt); }); this.$selection.on('keydown', function (evt) { self.trigger('keypress', evt); if (evt.which === KEYS.SPACE) { evt.preventDefault(); } }); container.on('results:focus', function (params) { self.$selection.attr('aria-activedescendant', params.data._resultId); }); container.on('selection:update', function (params) { self.update(params.data); }); container.on('open', function () { // When the dropdown is open, aria-expanded="true" self.$selection.attr('aria-expanded', 'true'); self.$selection.attr('aria-owns', resultsId); self._attachCloseHandler(container); }); container.on('close', function () { // When the dropdown is closed, aria-expanded="false" self.$selection.attr('aria-expanded', 'false'); self.$selection.removeAttr('aria-activedescendant'); self.$selection.removeAttr('aria-owns'); self.$selection.focus(); self._detachCloseHandler(container); }); container.on('enable', function () { self.$selection.attr('tabindex', self._tabindex); }); container.on('disable', function () { self.$selection.attr('tabindex', '-1'); }); }; BaseSelection.prototype._handleBlur = function (evt) { var self = this; // This needs to be delayed as the active element is the body when the tab // key is pressed, possibly along with others. window.setTimeout(function () { // Don't trigger `blur` if the focus is still in the selection if ( (document.activeElement == self.$selection[0]) || ($.contains(self.$selection[0], document.activeElement)) ) { return; } self.trigger('blur', evt); }, 1); }; BaseSelection.prototype._attachCloseHandler = function (container) { var self = this; $(document.body).on('mousedown.select2.' + container.id, function (e) { var $target = $(e.target); var $select = $target.closest('.select2'); var $all = $('.select2.select2-container--open'); $all.each(function () { var $this = $(this); if (this == $select[0]) { return; } var $element = $this.data('element'); $element.select2('close'); }); }); }; BaseSelection.prototype._detachCloseHandler = function (container) { $(document.body).off('mousedown.select2.' + container.id); }; BaseSelection.prototype.position = function ($selection, $container) { var $selectionContainer = $container.find('.selection'); $selectionContainer.append($selection); }; BaseSelection.prototype.destroy = function () { this._detachCloseHandler(this.container); }; BaseSelection.prototype.update = function (data) { throw new Error('The `update` method must be defined in child classes.'); }; return BaseSelection; }); S2.define('select2/selection/single',[ 'jquery', './base', '../utils', '../keys' ], function ($, BaseSelection, Utils, KEYS) { function SingleSelection () { SingleSelection.__super__.constructor.apply(this, arguments); } Utils.Extend(SingleSelection, BaseSelection); SingleSelection.prototype.render = function () { var $selection = SingleSelection.__super__.render.call(this); $selection.addClass('select2-selection--single'); $selection.html( '<span class="select2-selection__rendered"></span>' + '<span class="select2-selection__arrow" role="presentation">' + '<b role="presentation"></b>' + '</span>' ); return $selection; }; SingleSelection.prototype.bind = function (container, $container) { var self = this; SingleSelection.__super__.bind.apply(this, arguments); var id = container.id + '-container'; this.$selection.find('.select2-selection__rendered').attr('id', id); this.$selection.attr('aria-labelledby', id); this.$selection.on('mousedown', function (evt) { // Only respond to left clicks if (evt.which !== 1) { return; } self.trigger('toggle', { originalEvent: evt }); }); this.$selection.on('focus', function (evt) { // User focuses on the container }); this.$selection.on('blur', function (evt) { // User exits the container }); container.on('focus', function (evt) { if (!container.isOpen()) { self.$selection.focus(); } }); container.on('selection:update', function (params) { self.update(params.data); }); }; SingleSelection.prototype.clear = function () { this.$selection.find('.select2-selection__rendered').empty(); }; SingleSelection.prototype.display = function (data, container) { var template = this.options.get('templateSelection'); var escapeMarkup = this.options.get('escapeMarkup'); return escapeMarkup(template(data, container)); }; SingleSelection.prototype.selectionContainer = function () { return $('<span></span>'); }; SingleSelection.prototype.update = function (data) { if (data.length === 0) { this.clear(); return; } var selection = data[0]; var $rendered = this.$selection.find('.select2-selection__rendered'); var formatted = this.display(selection, $rendered); $rendered.empty().append(formatted); $rendered.prop('title', selection.title || selection.text); }; return SingleSelection; }); S2.define('select2/selection/multiple',[ 'jquery', './base', '../utils' ], function ($, BaseSelection, Utils) { function MultipleSelection ($element, options) { MultipleSelection.__super__.constructor.apply(this, arguments); } Utils.Extend(MultipleSelection, BaseSelection); MultipleSelection.prototype.render = function () { var $selection = MultipleSelection.__super__.render.call(this); $selection.addClass('select2-selection--multiple'); $selection.html( '<ul class="select2-selection__rendered"></ul>' ); return $selection; }; MultipleSelection.prototype.bind = function (container, $container) { var self = this; MultipleSelection.__super__.bind.apply(this, arguments); this.$selection.on('click', function (evt) { self.trigger('toggle', { originalEvent: evt }); }); this.$selection.on( 'click', '.select2-selection__choice__remove', function (evt) { // Ignore the event if it is disabled if (self.options.get('disabled')) { return; } var $remove = $(this); var $selection = $remove.parent(); var data = $selection.data('data'); self.trigger('unselect', { originalEvent: evt, data: data }); } ); }; MultipleSelection.prototype.clear = function () { this.$selection.find('.select2-selection__rendered').empty(); }; MultipleSelection.prototype.display = function (data, container) { var template = this.options.get('templateSelection'); var escapeMarkup = this.options.get('escapeMarkup'); return escapeMarkup(template(data, container)); }; MultipleSelection.prototype.selectionContainer = function () { var $container = $( '<li class="select2-selection__choice">' + '<span class="select2-selection__choice__remove" role="presentation">' + '×' + '</span>' + '</li>' ); return $container; }; MultipleSelection.prototype.update = function (data) { this.clear(); if (data.length === 0) { return; } var $selections = []; for (var d = 0; d < data.length; d++) { var selection = data[d]; var $selection = this.selectionContainer(); var formatted = this.display(selection, $selection); $selection.append(formatted); $selection.prop('title', selection.title || selection.text); $selection.data('data', selection); $selections.push($selection); } var $rendered = this.$selection.find('.select2-selection__rendered'); Utils.appendMany($rendered, $selections); }; return MultipleSelection; }); S2.define('select2/selection/placeholder',[ '../utils' ], function (Utils) { function Placeholder (decorated, $element, options) { this.placeholder = this.normalizePlaceholder(options.get('placeholder')); decorated.call(this, $element, options); } Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { if (typeof placeholder === 'string') { placeholder = { id: '', text: placeholder }; } return placeholder; }; Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { var $placeholder = this.selectionContainer(); $placeholder.html(this.display(placeholder)); $placeholder.addClass('select2-selection__placeholder') .removeClass('select2-selection__choice'); return $placeholder; }; Placeholder.prototype.update = function (decorated, data) { var singlePlaceholder = ( data.length == 1 && data[0].id != this.placeholder.id ); var multipleSelections = data.length > 1; if (multipleSelections || singlePlaceholder) { return decorated.call(this, data); } this.clear(); var $placeholder = this.createPlaceholder(this.placeholder); this.$selection.find('.select2-selection__rendered').append($placeholder); }; return Placeholder; }); S2.define('select2/selection/allowClear',[ 'jquery', '../keys' ], function ($, KEYS) { function AllowClear () { } AllowClear.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); if (this.placeholder == null) { if (this.options.get('debug') && window.console && console.error) { console.error( 'Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.' ); } } this.$selection.on('mousedown', '.select2-selection__clear', function (evt) { self._handleClear(evt); }); container.on('keypress', function (evt) { self._handleKeyboardClear(evt, container); }); }; AllowClear.prototype._handleClear = function (_, evt) { // Ignore the event if it is disabled if (this.options.get('disabled')) { return; } var $clear = this.$selection.find('.select2-selection__clear'); // Ignore the event if nothing has been selected if ($clear.length === 0) { return; } evt.stopPropagation(); var data = $clear.data('data'); for (var d = 0; d < data.length; d++) { var unselectData = { data: data[d] }; // Trigger the `unselect` event, so people can prevent it from being // cleared. this.trigger('unselect', unselectData); // If the event was prevented, don't clear it out. if (unselectData.prevented) { return; } } this.$element.val(this.placeholder.id).trigger('change'); this.trigger('toggle', {}); }; AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { if (container.isOpen()) { return; } if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { this._handleClear(evt); } }; AllowClear.prototype.update = function (decorated, data) { decorated.call(this, data); if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) { return; } var $remove = $( '<span class="select2-selection__clear">' + '×' + '</span>' ); $remove.data('data', data); this.$selection.find('.select2-selection__rendered').prepend($remove); }; return AllowClear; }); S2.define('select2/selection/search',[ 'jquery', '../utils', '../keys' ], function ($, Utils, KEYS) { function Search (decorated, $element, options) { decorated.call(this, $element, options); } Search.prototype.render = function (decorated) { var $search = $( '<li class="select2-search select2-search--inline">' + '<input class="select2-search__field" type="search" tabindex="-1"' + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + ' spellcheck="false" role="textbox" aria-autocomplete="list" />' + '</li>' ); this.$searchContainer = $search; this.$search = $search.find('input'); var $rendered = decorated.call(this); this._transferTabIndex(); return $rendered; }; Search.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('open', function () { self.$search.trigger('focus'); }); container.on('close', function () { self.$search.val(''); self.$search.removeAttr('aria-activedescendant'); self.$search.trigger('focus'); }); container.on('enable', function () { self.$search.prop('disabled', false); self._transferTabIndex(); }); container.on('disable', function () { self.$search.prop('disabled', true); }); container.on('focus', function (evt) { self.$search.trigger('focus'); }); container.on('results:focus', function (params) { self.$search.attr('aria-activedescendant', params.id); }); this.$selection.on('focusin', '.select2-search--inline', function (evt) { self.trigger('focus', evt); }); this.$selection.on('focusout', '.select2-search--inline', function (evt) { self._handleBlur(evt); }); this.$selection.on('keydown', '.select2-search--inline', function (evt) { evt.stopPropagation(); self.trigger('keypress', evt); self._keyUpPrevented = evt.isDefaultPrevented(); var key = evt.which; if (key === KEYS.BACKSPACE && self.$search.val() === '') { var $previousChoice = self.$searchContainer .prev('.select2-selection__choice'); if ($previousChoice.length > 0) { var item = $previousChoice.data('data'); self.searchRemoveChoice(item); evt.preventDefault(); } } }); // Try to detect the IE version should the `documentMode` property that // is stored on the document. This is only implemented in IE and is // slightly cleaner than doing a user agent check. // This property is not available in Edge, but Edge also doesn't have // this bug. var msie = document.documentMode; var disableInputEvents = msie && msie <= 11; // Workaround for browsers which do not support the `input` event // This will prevent double-triggering of events for browsers which support // both the `keyup` and `input` events. this.$selection.on( 'input.searchcheck', '.select2-search--inline', function (evt) { // IE will trigger the `input` event when a placeholder is used on a // search box. To get around this issue, we are forced to ignore all // `input` events in IE and keep using `keyup`. if (disableInputEvents) { self.$selection.off('input.search input.searchcheck'); return; } // Unbind the duplicated `keyup` event self.$selection.off('keyup.search'); } ); this.$selection.on( 'keyup.search input.search', '.select2-search--inline', function (evt) { // IE will trigger the `input` event when a placeholder is used on a // search box. To get around this issue, we are forced to ignore all // `input` events in IE and keep using `keyup`. if (disableInputEvents && evt.type === 'input') { self.$selection.off('input.search input.searchcheck'); return; } var key = evt.which; // We can freely ignore events from modifier keys if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { return; } // Tabbing will be handled during the `keydown` phase if (key == KEYS.TAB) { return; } self.handleSearch(evt); } ); }; /** * This method will transfer the tabindex attribute from the rendered * selection to the search box. This allows for the search box to be used as * the primary focus instead of the selection container. * * @private */ Search.prototype._transferTabIndex = function (decorated) { this.$search.attr('tabindex', this.$selection.attr('tabindex')); this.$selection.attr('tabindex', '-1'); }; Search.prototype.createPlaceholder = function (decorated, placeholder) { this.$search.attr('placeholder', placeholder.text); }; Search.prototype.update = function (decorated, data) { var searchHadFocus = this.$search[0] == document.activeElement; this.$search.attr('placeholder', ''); decorated.call(this, data); this.$selection.find('.select2-selection__rendered') .append(this.$searchContainer); this.resizeSearch(); if (searchHadFocus) { this.$search.focus(); } }; Search.prototype.handleSearch = function () { this.resizeSearch(); if (!this._keyUpPrevented) { var input = this.$search.val(); this.trigger('query', { term: input }); } this._keyUpPrevented = false; }; Search.prototype.searchRemoveChoice = function (decorated, item) { this.trigger('unselect', { data: item }); this.$search.val(item.text); this.handleSearch(); }; Search.prototype.resizeSearch = function () { this.$search.css('width', '25px'); var width = ''; if (this.$search.attr('placeholder') !== '') { width = this.$selection.find('.select2-selection__rendered').innerWidth(); } else { var minimumWidth = this.$search.val().length + 1; width = (minimumWidth * 0.75) + 'em'; } this.$search.css('width', width); }; return Search; }); S2.define('select2/selection/eventRelay',[ 'jquery' ], function ($) { function EventRelay () { } EventRelay.prototype.bind = function (decorated, container, $container) { var self = this; var relayEvents = [ 'open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting' ]; var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting']; decorated.call(this, container, $container); container.on('*', function (name, params) { // Ignore events that should not be relayed if ($.inArray(name, relayEvents) === -1) { return; } // The parameters should always be an object params = params || {}; // Generate the jQuery event for the Select2 event var evt = $.Event('select2:' + name, { params: params }); self.$element.trigger(evt); // Only handle preventable events if it was one if ($.inArray(name, preventableEvents) === -1) { return; } params.prevented = evt.isDefaultPrevented(); }); }; return EventRelay; }); S2.define('select2/translation',[ 'jquery', 'require' ], function ($, require) { function Translation (dict) { this.dict = dict || {}; } Translation.prototype.all = function () { return this.dict; }; Translation.prototype.get = function (key) { return this.dict[key]; }; Translation.prototype.extend = function (translation) { this.dict = $.extend({}, translation.all(), this.dict); }; // Static functions Translation._cache = {}; Translation.loadPath = function (path) { if (!(path in Translation._cache)) { var translations = require(path); Translation._cache[path] = translations; } return new Translation(Translation._cache[path]); }; return Translation; }); S2.define('select2/diacritics',[ ], function () { var diacritics = { '\u24B6': 'A', '\uFF21': 'A', '\u00C0': 'A', '\u00C1': 'A', '\u00C2': 'A', '\u1EA6': 'A', '\u1EA4': 'A', '\u1EAA': 'A', '\u1EA8': 'A', '\u00C3': 'A', '\u0100': 'A', '\u0102': 'A', '\u1EB0': 'A', '\u1EAE': 'A', '\u1EB4': 'A', '\u1EB2': 'A', '\u0226': 'A', '\u01E0': 'A', '\u00C4': 'A', '\u01DE': 'A', '\u1EA2': 'A', '\u00C5': 'A', '\u01FA': 'A', '\u01CD': 'A', '\u0200': 'A', '\u0202': 'A', '\u1EA0': 'A', '\u1EAC': 'A', '\u1EB6': 'A', '\u1E00': 'A', '\u0104': 'A', '\u023A': 'A', '\u2C6F': 'A', '\uA732': 'AA', '\u00C6': 'AE', '\u01FC': 'AE', '\u01E2': 'AE', '\uA734': 'AO', '\uA736': 'AU', '\uA738': 'AV', '\uA73A': 'AV', '\uA73C': 'AY', '\u24B7': 'B', '\uFF22': 'B', '\u1E02': 'B', '\u1E04': 'B', '\u1E06': 'B', '\u0243': 'B', '\u0182': 'B', '\u0181': 'B', '\u24B8': 'C', '\uFF23': 'C', '\u0106': 'C', '\u0108': 'C', '\u010A': 'C', '\u010C': 'C', '\u00C7': 'C', '\u1E08': 'C', '\u0187': 'C', '\u023B': 'C', '\uA73E': 'C', '\u24B9': 'D', '\uFF24': 'D', '\u1E0A': 'D', '\u010E': 'D', '\u1E0C': 'D', '\u1E10': 'D', '\u1E12': 'D', '\u1E0E': 'D', '\u0110': 'D', '\u018B': 'D', '\u018A': 'D', '\u0189': 'D', '\uA779': 'D', '\u01F1': 'DZ', '\u01C4': 'DZ', '\u01F2': 'Dz', '\u01C5': 'Dz', '\u24BA': 'E', '\uFF25': 'E', '\u00C8': 'E', '\u00C9': 'E', '\u00CA': 'E', '\u1EC0': 'E', '\u1EBE': 'E', '\u1EC4': 'E', '\u1EC2': 'E', '\u1EBC': 'E', '\u0112': 'E', '\u1E14': 'E', '\u1E16': 'E', '\u0114': 'E', '\u0116': 'E', '\u00CB': 'E', '\u1EBA': 'E', '\u011A': 'E', '\u0204': 'E', '\u0206': 'E', '\u1EB8': 'E', '\u1EC6': 'E', '\u0228': 'E', '\u1E1C': 'E', '\u0118': 'E', '\u1E18': 'E', '\u1E1A': 'E', '\u0190': 'E', '\u018E': 'E', '\u24BB': 'F', '\uFF26': 'F', '\u1E1E': 'F', '\u0191': 'F', '\uA77B': 'F', '\u24BC': 'G', '\uFF27': 'G', '\u01F4': 'G', '\u011C': 'G', '\u1E20': 'G', '\u011E': 'G', '\u0120': 'G', '\u01E6': 'G', '\u0122': 'G', '\u01E4': 'G', '\u0193': 'G', '\uA7A0': 'G', '\uA77D': 'G', '\uA77E': 'G', '\u24BD': 'H', '\uFF28': 'H', '\u0124': 'H', '\u1E22': 'H', '\u1E26': 'H', '\u021E': 'H', '\u1E24': 'H', '\u1E28': 'H', '\u1E2A': 'H', '\u0126': 'H', '\u2C67': 'H', '\u2C75': 'H', '\uA78D': 'H', '\u24BE': 'I', '\uFF29': 'I', '\u00CC': 'I', '\u00CD': 'I', '\u00CE': 'I', '\u0128': 'I', '\u012A': 'I', '\u012C': 'I', '\u0130': 'I', '\u00CF': 'I', '\u1E2E': 'I', '\u1EC8': 'I', '\u01CF': 'I', '\u0208': 'I', '\u020A': 'I', '\u1ECA': 'I', '\u012E': 'I', '\u1E2C': 'I', '\u0197': 'I', '\u24BF': 'J', '\uFF2A': 'J', '\u0134': 'J', '\u0248': 'J', '\u24C0': 'K', '\uFF2B': 'K', '\u1E30': 'K', '\u01E8': 'K', '\u1E32': 'K', '\u0136': 'K', '\u1E34': 'K', '\u0198': 'K', '\u2C69': 'K', '\uA740': 'K', '\uA742': 'K', '\uA744': 'K', '\uA7A2': 'K', '\u24C1': 'L', '\uFF2C': 'L', '\u013F': 'L', '\u0139': 'L', '\u013D': 'L', '\u1E36': 'L', '\u1E38': 'L', '\u013B': 'L', '\u1E3C': 'L', '\u1E3A': 'L', '\u0141': 'L', '\u023D': 'L', '\u2C62': 'L', '\u2C60': 'L', '\uA748': 'L', '\uA746': 'L', '\uA780': 'L', '\u01C7': 'LJ', '\u01C8': 'Lj', '\u24C2': 'M', '\uFF2D': 'M', '\u1E3E': 'M', '\u1E40': 'M', '\u1E42': 'M', '\u2C6E': 'M', '\u019C': 'M', '\u24C3': 'N', '\uFF2E': 'N', '\u01F8': 'N', '\u0143': 'N', '\u00D1': 'N', '\u1E44': 'N', '\u0147': 'N', '\u1E46': 'N', '\u0145': 'N', '\u1E4A': 'N', '\u1E48': 'N', '\u0220': 'N', '\u019D': 'N', '\uA790': 'N', '\uA7A4': 'N', '\u01CA': 'NJ', '\u01CB': 'Nj', '\u24C4': 'O', '\uFF2F': 'O', '\u00D2': 'O', '\u00D3': 'O', '\u00D4': 'O', '\u1ED2': 'O', '\u1ED0': 'O', '\u1ED6': 'O', '\u1ED4': 'O', '\u00D5': 'O', '\u1E4C': 'O', '\u022C': 'O', '\u1E4E': 'O', '\u014C': 'O', '\u1E50': 'O', '\u1E52': 'O', '\u014E': 'O', '\u022E': 'O', '\u0230': 'O', '\u00D6': 'O', '\u022A': 'O', '\u1ECE': 'O', '\u0150': 'O', '\u01D1': 'O', '\u020C': 'O', '\u020E': 'O', '\u01A0': 'O', '\u1EDC': 'O', '\u1EDA': 'O', '\u1EE0': 'O', '\u1EDE': 'O', '\u1EE2': 'O', '\u1ECC': 'O', '\u1ED8': 'O', '\u01EA': 'O', '\u01EC': 'O', '\u00D8': 'O', '\u01FE': 'O', '\u0186': 'O', '\u019F': 'O', '\uA74A': 'O', '\uA74C': 'O', '\u01A2': 'OI', '\uA74E': 'OO', '\u0222': 'OU', '\u24C5': 'P', '\uFF30': 'P', '\u1E54': 'P', '\u1E56': 'P', '\u01A4': 'P', '\u2C63': 'P', '\uA750': 'P', '\uA752': 'P', '\uA754': 'P', '\u24C6': 'Q', '\uFF31': 'Q', '\uA756': 'Q', '\uA758': 'Q', '\u024A': 'Q', '\u24C7': 'R', '\uFF32': 'R', '\u0154': 'R', '\u1E58': 'R', '\u0158': 'R', '\u0210': 'R', '\u0212': 'R', '\u1E5A': 'R', '\u1E5C': 'R', '\u0156': 'R', '\u1E5E': 'R', '\u024C': 'R', '\u2C64': 'R', '\uA75A': 'R', '\uA7A6': 'R', '\uA782': 'R', '\u24C8': 'S', '\uFF33': 'S', '\u1E9E': 'S', '\u015A': 'S', '\u1E64': 'S', '\u015C': 'S', '\u1E60': 'S', '\u0160': 'S', '\u1E66': 'S', '\u1E62': 'S', '\u1E68': 'S', '\u0218': 'S', '\u015E': 'S', '\u2C7E': 'S', '\uA7A8': 'S', '\uA784': 'S', '\u24C9': 'T', '\uFF34': 'T', '\u1E6A': 'T', '\u0164': 'T', '\u1E6C': 'T', '\u021A': 'T', '\u0162': 'T', '\u1E70': 'T', '\u1E6E': 'T', '\u0166': 'T', '\u01AC': 'T', '\u01AE': 'T', '\u023E': 'T', '\uA786': 'T', '\uA728': 'TZ', '\u24CA': 'U', '\uFF35': 'U', '\u00D9': 'U', '\u00DA': 'U', '\u00DB': 'U', '\u0168': 'U', '\u1E78': 'U', '\u016A': 'U', '\u1E7A': 'U', '\u016C': 'U', '\u00DC': 'U', '\u01DB': 'U', '\u01D7': 'U', '\u01D5': 'U', '\u01D9': 'U', '\u1EE6': 'U', '\u016E': 'U', '\u0170': 'U', '\u01D3': 'U', '\u0214': 'U', '\u0216': 'U', '\u01AF': 'U', '\u1EEA': 'U', '\u1EE8': 'U', '\u1EEE': 'U', '\u1EEC': 'U', '\u1EF0': 'U', '\u1EE4': 'U', '\u1E72': 'U', '\u0172': 'U', '\u1E76': 'U', '\u1E74': 'U', '\u0244': 'U', '\u24CB': 'V', '\uFF36': 'V', '\u1E7C': 'V', '\u1E7E': 'V', '\u01B2': 'V', '\uA75E': 'V', '\u0245': 'V', '\uA760': 'VY', '\u24CC': 'W', '\uFF37': 'W', '\u1E80': 'W', '\u1E82': 'W', '\u0174': 'W', '\u1E86': 'W', '\u1E84': 'W', '\u1E88': 'W', '\u2C72': 'W', '\u24CD': 'X', '\uFF38': 'X', '\u1E8A': 'X', '\u1E8C': 'X', '\u24CE': 'Y', '\uFF39': 'Y', '\u1EF2': 'Y', '\u00DD': 'Y', '\u0176': 'Y', '\u1EF8': 'Y', '\u0232': 'Y', '\u1E8E': 'Y', '\u0178': 'Y', '\u1EF6': 'Y', '\u1EF4': 'Y', '\u01B3': 'Y', '\u024E': 'Y', '\u1EFE': 'Y', '\u24CF': 'Z', '\uFF3A': 'Z', '\u0179': 'Z', '\u1E90': 'Z', '\u017B': 'Z', '\u017D': 'Z', '\u1E92': 'Z', '\u1E94': 'Z', '\u01B5': 'Z', '\u0224': 'Z', '\u2C7F': 'Z', '\u2C6B': 'Z', '\uA762': 'Z', '\u24D0': 'a', '\uFF41': 'a', '\u1E9A': 'a', '\u00E0': 'a', '\u00E1': 'a', '\u00E2': 'a', '\u1EA7': 'a', '\u1EA5': 'a', '\u1EAB': 'a', '\u1EA9': 'a', '\u00E3': 'a', '\u0101': 'a', '\u0103': 'a', '\u1EB1': 'a', '\u1EAF': 'a', '\u1EB5': 'a', '\u1EB3': 'a', '\u0227': 'a', '\u01E1': 'a', '\u00E4': 'a', '\u01DF': 'a', '\u1EA3': 'a', '\u00E5': 'a', '\u01FB': 'a', '\u01CE': 'a', '\u0201': 'a', '\u0203': 'a', '\u1EA1': 'a', '\u1EAD': 'a', '\u1EB7': 'a', '\u1E01': 'a', '\u0105': 'a', '\u2C65': 'a', '\u0250': 'a', '\uA733': 'aa', '\u00E6': 'ae', '\u01FD': 'ae', '\u01E3': 'ae', '\uA735': 'ao', '\uA737': 'au', '\uA739': 'av', '\uA73B': 'av', '\uA73D': 'ay', '\u24D1': 'b', '\uFF42': 'b', '\u1E03': 'b', '\u1E05': 'b', '\u1E07': 'b', '\u0180': 'b', '\u0183': 'b', '\u0253': 'b', '\u24D2': 'c', '\uFF43': 'c', '\u0107': 'c', '\u0109': 'c', '\u010B': 'c', '\u010D': 'c', '\u00E7': 'c', '\u1E09': 'c', '\u0188': 'c', '\u023C': 'c', '\uA73F': 'c', '\u2184': 'c', '\u24D3': 'd', '\uFF44': 'd', '\u1E0B': 'd', '\u010F': 'd', '\u1E0D': 'd', '\u1E11': 'd', '\u1E13': 'd', '\u1E0F': 'd', '\u0111': 'd', '\u018C': 'd', '\u0256': 'd', '\u0257': 'd', '\uA77A': 'd', '\u01F3': 'dz', '\u01C6': 'dz', '\u24D4': 'e', '\uFF45': 'e', '\u00E8': 'e', '\u00E9': 'e', '\u00EA': 'e', '\u1EC1': 'e', '\u1EBF': 'e', '\u1EC5': 'e', '\u1EC3': 'e', '\u1EBD': 'e', '\u0113': 'e', '\u1E15': 'e', '\u1E17': 'e', '\u0115': 'e', '\u0117': 'e', '\u00EB': 'e', '\u1EBB': 'e', '\u011B': 'e', '\u0205': 'e', '\u0207': 'e', '\u1EB9': 'e', '\u1EC7': 'e', '\u0229': 'e', '\u1E1D': 'e', '\u0119': 'e', '\u1E19': 'e', '\u1E1B': 'e', '\u0247': 'e', '\u025B': 'e', '\u01DD': 'e', '\u24D5': 'f', '\uFF46': 'f', '\u1E1F': 'f', '\u0192': 'f', '\uA77C': 'f', '\u24D6': 'g', '\uFF47': 'g', '\u01F5': 'g', '\u011D': 'g', '\u1E21': 'g', '\u011F': 'g', '\u0121': 'g', '\u01E7': 'g', '\u0123': 'g', '\u01E5': 'g', '\u0260': 'g', '\uA7A1': 'g', '\u1D79': 'g', '\uA77F': 'g', '\u24D7': 'h', '\uFF48': 'h', '\u0125': 'h', '\u1E23': 'h', '\u1E27': 'h', '\u021F': 'h', '\u1E25': 'h', '\u1E29': 'h', '\u1E2B': 'h', '\u1E96': 'h', '\u0127': 'h', '\u2C68': 'h', '\u2C76': 'h', '\u0265': 'h', '\u0195': 'hv', '\u24D8': 'i', '\uFF49': 'i', '\u00EC': 'i', '\u00ED': 'i', '\u00EE': 'i', '\u0129': 'i', '\u012B': 'i', '\u012D': 'i', '\u00EF': 'i', '\u1E2F': 'i', '\u1EC9': 'i', '\u01D0': 'i', '\u0209': 'i', '\u020B': 'i', '\u1ECB': 'i', '\u012F': 'i', '\u1E2D': 'i', '\u0268': 'i', '\u0131': 'i', '\u24D9': 'j', '\uFF4A': 'j', '\u0135': 'j', '\u01F0': 'j', '\u0249': 'j', '\u24DA': 'k', '\uFF4B': 'k', '\u1E31': 'k', '\u01E9': 'k', '\u1E33': 'k', '\u0137': 'k', '\u1E35': 'k', '\u0199': 'k', '\u2C6A': 'k', '\uA741': 'k', '\uA743': 'k', '\uA745': 'k', '\uA7A3': 'k', '\u24DB': 'l', '\uFF4C': 'l', '\u0140': 'l', '\u013A': 'l', '\u013E': 'l', '\u1E37': 'l', '\u1E39': 'l', '\u013C': 'l', '\u1E3D': 'l', '\u1E3B': 'l', '\u017F': 'l', '\u0142': 'l', '\u019A': 'l', '\u026B': 'l', '\u2C61': 'l', '\uA749': 'l', '\uA781': 'l', '\uA747': 'l', '\u01C9': 'lj', '\u24DC': 'm', '\uFF4D': 'm', '\u1E3F': 'm', '\u1E41': 'm', '\u1E43': 'm', '\u0271': 'm', '\u026F': 'm', '\u24DD': 'n', '\uFF4E': 'n', '\u01F9': 'n', '\u0144': 'n', '\u00F1': 'n', '\u1E45': 'n', '\u0148': 'n', '\u1E47': 'n', '\u0146': 'n', '\u1E4B': 'n', '\u1E49': 'n', '\u019E': 'n', '\u0272': 'n', '\u0149': 'n', '\uA791': 'n', '\uA7A5': 'n', '\u01CC': 'nj', '\u24DE': 'o', '\uFF4F': 'o', '\u00F2': 'o', '\u00F3': 'o', '\u00F4': 'o', '\u1ED3': 'o', '\u1ED1': 'o', '\u1ED7': 'o', '\u1ED5': 'o', '\u00F5': 'o', '\u1E4D': 'o', '\u022D': 'o', '\u1E4F': 'o', '\u014D': 'o', '\u1E51': 'o', '\u1E53': 'o', '\u014F': 'o', '\u022F': 'o', '\u0231': 'o', '\u00F6': 'o', '\u022B': 'o', '\u1ECF': 'o', '\u0151': 'o', '\u01D2': 'o', '\u020D': 'o', '\u020F': 'o', '\u01A1': 'o', '\u1EDD': 'o', '\u1EDB': 'o', '\u1EE1': 'o', '\u1EDF': 'o', '\u1EE3': 'o', '\u1ECD': 'o', '\u1ED9': 'o', '\u01EB': 'o', '\u01ED': 'o', '\u00F8': 'o', '\u01FF': 'o', '\u0254': 'o', '\uA74B': 'o', '\uA74D': 'o', '\u0275': 'o', '\u01A3': 'oi', '\u0223': 'ou', '\uA74F': 'oo', '\u24DF': 'p', '\uFF50': 'p', '\u1E55': 'p', '\u1E57': 'p', '\u01A5': 'p', '\u1D7D': 'p', '\uA751': 'p', '\uA753': 'p', '\uA755': 'p', '\u24E0': 'q', '\uFF51': 'q', '\u024B': 'q', '\uA757': 'q', '\uA759': 'q', '\u24E1': 'r', '\uFF52': 'r', '\u0155': 'r', '\u1E59': 'r', '\u0159': 'r', '\u0211': 'r', '\u0213': 'r', '\u1E5B': 'r', '\u1E5D': 'r', '\u0157': 'r', '\u1E5F': 'r', '\u024D': 'r', '\u027D': 'r', '\uA75B': 'r', '\uA7A7': 'r', '\uA783': 'r', '\u24E2': 's', '\uFF53': 's', '\u00DF': 's', '\u015B': 's', '\u1E65': 's', '\u015D': 's', '\u1E61': 's', '\u0161': 's', '\u1E67': 's', '\u1E63': 's', '\u1E69': 's', '\u0219': 's', '\u015F': 's', '\u023F': 's', '\uA7A9': 's', '\uA785': 's', '\u1E9B': 's', '\u24E3': 't', '\uFF54': 't', '\u1E6B': 't', '\u1E97': 't', '\u0165': 't', '\u1E6D': 't', '\u021B': 't', '\u0163': 't', '\u1E71': 't', '\u1E6F': 't', '\u0167': 't', '\u01AD': 't', '\u0288': 't', '\u2C66': 't', '\uA787': 't', '\uA729': 'tz', '\u24E4': 'u', '\uFF55': 'u', '\u00F9': 'u', '\u00FA': 'u', '\u00FB': 'u', '\u0169': 'u', '\u1E79': 'u', '\u016B': 'u', '\u1E7B': 'u', '\u016D': 'u', '\u00FC': 'u', '\u01DC': 'u', '\u01D8': 'u', '\u01D6': 'u', '\u01DA': 'u', '\u1EE7': 'u', '\u016F': 'u', '\u0171': 'u', '\u01D4': 'u', '\u0215': 'u', '\u0217': 'u', '\u01B0': 'u', '\u1EEB': 'u', '\u1EE9': 'u', '\u1EEF': 'u', '\u1EED': 'u', '\u1EF1': 'u', '\u1EE5': 'u', '\u1E73': 'u', '\u0173': 'u', '\u1E77': 'u', '\u1E75': 'u', '\u0289': 'u', '\u24E5': 'v', '\uFF56': 'v', '\u1E7D': 'v', '\u1E7F': 'v', '\u028B': 'v', '\uA75F': 'v', '\u028C': 'v', '\uA761': 'vy', '\u24E6': 'w', '\uFF57': 'w', '\u1E81': 'w', '\u1E83': 'w', '\u0175': 'w', '\u1E87': 'w', '\u1E85': 'w', '\u1E98': 'w', '\u1E89': 'w', '\u2C73': 'w', '\u24E7': 'x', '\uFF58': 'x', '\u1E8B': 'x', '\u1E8D': 'x', '\u24E8': 'y', '\uFF59': 'y', '\u1EF3': 'y', '\u00FD': 'y', '\u0177': 'y', '\u1EF9': 'y', '\u0233': 'y', '\u1E8F': 'y', '\u00FF': 'y', '\u1EF7': 'y', '\u1E99': 'y', '\u1EF5': 'y', '\u01B4': 'y', '\u024F': 'y', '\u1EFF': 'y', '\u24E9': 'z', '\uFF5A': 'z', '\u017A': 'z', '\u1E91': 'z', '\u017C': 'z', '\u017E': 'z', '\u1E93': 'z', '\u1E95': 'z', '\u01B6': 'z', '\u0225': 'z', '\u0240': 'z', '\u2C6C': 'z', '\uA763': 'z', '\u0386': '\u0391', '\u0388': '\u0395', '\u0389': '\u0397', '\u038A': '\u0399', '\u03AA': '\u0399', '\u038C': '\u039F', '\u038E': '\u03A5', '\u03AB': '\u03A5', '\u038F': '\u03A9', '\u03AC': '\u03B1', '\u03AD': '\u03B5', '\u03AE': '\u03B7', '\u03AF': '\u03B9', '\u03CA': '\u03B9', '\u0390': '\u03B9', '\u03CC': '\u03BF', '\u03CD': '\u03C5', '\u03CB': '\u03C5', '\u03B0': '\u03C5', '\u03C9': '\u03C9', '\u03C2': '\u03C3' }; return diacritics; }); S2.define('select2/data/base',[ '../utils' ], function (Utils) { function BaseAdapter ($element, options) { BaseAdapter.__super__.constructor.call(this); } Utils.Extend(BaseAdapter, Utils.Observable); BaseAdapter.prototype.current = function (callback) { throw new Error('The `current` method must be defined in child classes.'); }; BaseAdapter.prototype.query = function (params, callback) { throw new Error('The `query` method must be defined in child classes.'); }; BaseAdapter.prototype.bind = function (container, $container) { // Can be implemented in subclasses }; BaseAdapter.prototype.destroy = function () { // Can be implemented in subclasses }; BaseAdapter.prototype.generateResultId = function (container, data) { var id = container.id + '-result-'; id += Utils.generateChars(4); if (data.id != null) { id += '-' + data.id.toString(); } else { id += '-' + Utils.generateChars(4); } return id; }; return BaseAdapter; }); S2.define('select2/data/select',[ './base', '../utils', 'jquery' ], function (BaseAdapter, Utils, $) { function SelectAdapter ($element, options) { this.$element = $element; this.options = options; SelectAdapter.__super__.constructor.call(this); } Utils.Extend(SelectAdapter, BaseAdapter); SelectAdapter.prototype.current = function (callback) { var data = []; var self = this; this.$element.find(':selected').each(function () { var $option = $(this); var option = self.item($option); data.push(option); }); callback(data); }; SelectAdapter.prototype.select = function (data) { var self = this; data.selected = true; // If data.element is a DOM node, use it instead if ($(data.element).is('option')) { data.element.selected = true; this.$element.trigger('change'); return; } if (this.$element.prop('multiple')) { this.current(function (currentData) { var val = []; data = [data]; data.push.apply(data, currentData); for (var d = 0; d < data.length; d++) { var id = data[d].id; if ($.inArray(id, val) === -1) { val.push(id); } } self.$element.val(val); self.$element.trigger('change'); }); } else { var val = data.id; this.$element.val(val); this.$element.trigger('change'); } }; SelectAdapter.prototype.unselect = function (data) { var self = this; if (!this.$element.prop('multiple')) { return; } data.selected = false; if ($(data.element).is('option')) { data.element.selected = false; this.$element.trigger('change'); return; } this.current(function (currentData) { var val = []; for (var d = 0; d < currentData.length; d++) { var id = currentData[d].id; if (id !== data.id && $.inArray(id, val) === -1) { val.push(id); } } self.$element.val(val); self.$element.trigger('change'); }); }; SelectAdapter.prototype.bind = function (container, $container) { var self = this; this.container = container; container.on('select', function (params) { self.select(params.data); }); container.on('unselect', function (params) { self.unselect(params.data); }); }; SelectAdapter.prototype.destroy = function () { // Remove anything added to child elements this.$element.find('*').each(function () { // Remove any custom data set by Select2 $.removeData(this, 'data'); }); }; SelectAdapter.prototype.query = function (params, callback) { var data = []; var self = this; var $options = this.$element.children(); $options.each(function () { var $option = $(this); if (!$option.is('option') && !$option.is('optgroup')) { return; } var option = self.item($option); var matches = self.matches(params, option); if (matches !== null) { data.push(matches); } }); callback({ results: data }); }; SelectAdapter.prototype.addOptions = function ($options) { Utils.appendMany(this.$element, $options); }; SelectAdapter.prototype.option = function (data) { var option; if (data.children) { option = document.createElement('optgroup'); option.label = data.text; } else { option = document.createElement('option'); if (option.textContent !== undefined) { option.textContent = data.text; } else { option.innerText = data.text; } } if (data.id) { option.value = data.id; } if (data.disabled) { option.disabled = true; } if (data.selected) { option.selected = true; } if (data.title) { option.title = data.title; } var $option = $(option); var normalizedData = this._normalizeItem(data); normalizedData.element = option; // Override the option's data with the combined data $.data(option, 'data', normalizedData); return $option; }; SelectAdapter.prototype.item = function ($option) { var data = {}; data = $.data($option[0], 'data'); if (data != null) { return data; } if ($option.is('option')) { data = { id: $option.val(), text: $option.text(), disabled: $option.prop('disabled'), selected: $option.prop('selected'), title: $option.prop('title') }; } else if ($option.is('optgroup')) { data = { text: $option.prop('label'), children: [], title: $option.prop('title') }; var $children = $option.children('option'); var children = []; for (var c = 0; c < $children.length; c++) { var $child = $($children[c]); var child = this.item($child); children.push(child); } data.children = children; } data = this._normalizeItem(data); data.element = $option[0]; $.data($option[0], 'data', data); return data; }; SelectAdapter.prototype._normalizeItem = function (item) { if (!$.isPlainObject(item)) { item = { id: item, text: item }; } item = $.extend({}, { text: '' }, item); var defaults = { selected: false, disabled: false }; if (item.id != null) { item.id = item.id.toString(); } if (item.text != null) { item.text = item.text.toString(); } if (item._resultId == null && item.id && this.container != null) { item._resultId = this.generateResultId(this.container, item); } return $.extend({}, defaults, item); }; SelectAdapter.prototype.matches = function (params, data) { var matcher = this.options.get('matcher'); return matcher(params, data); }; return SelectAdapter; }); S2.define('select2/data/array',[ './select', '../utils', 'jquery' ], function (SelectAdapter, Utils, $) { function ArrayAdapter ($element, options) { var data = options.get('data') || []; ArrayAdapter.__super__.constructor.call(this, $element, options); this.addOptions(this.convertToOptions(data)); } Utils.Extend(ArrayAdapter, SelectAdapter); ArrayAdapter.prototype.select = function (data) { var $option = this.$element.find('option').filter(function (i, elm) { return elm.value == data.id.toString(); }); if ($option.length === 0) { $option = this.option(data); this.addOptions($option); } ArrayAdapter.__super__.select.call(this, data); }; ArrayAdapter.prototype.convertToOptions = function (data) { var self = this; var $existing = this.$element.find('option'); var existingIds = $existing.map(function () { return self.item($(this)).id; }).get(); var $options = []; // Filter out all items except for the one passed in the argument function onlyItem (item) { return function () { return $(this).val() == item.id; }; } for (var d = 0; d < data.length; d++) { var item = this._normalizeItem(data[d]); // Skip items which were pre-loaded, only merge the data if ($.inArray(item.id, existingIds) >= 0) { var $existingOption = $existing.filter(onlyItem(item)); var existingData = this.item($existingOption); var newData = $.extend(true, {}, item, existingData); var $newOption = this.option(newData); $existingOption.replaceWith($newOption); continue; } var $option = this.option(item); if (item.children) { var $children = this.convertToOptions(item.children); Utils.appendMany($option, $children); } $options.push($option); } return $options; }; return ArrayAdapter; }); S2.define('select2/data/ajax',[ './array', '../utils', 'jquery' ], function (ArrayAdapter, Utils, $) { function AjaxAdapter ($element, options) { this.ajaxOptions = this._applyDefaults(options.get('ajax')); if (this.ajaxOptions.processResults != null) { this.processResults = this.ajaxOptions.processResults; } AjaxAdapter.__super__.constructor.call(this, $element, options); } Utils.Extend(AjaxAdapter, ArrayAdapter); AjaxAdapter.prototype._applyDefaults = function (options) { var defaults = { data: function (params) { return $.extend({}, params, { q: params.term }); }, transport: function (params, success, failure) { var $request = $.ajax(params); $request.then(success); $request.fail(failure); return $request; } }; return $.extend({}, defaults, options, true); }; AjaxAdapter.prototype.processResults = function (results) { return results; }; AjaxAdapter.prototype.query = function (params, callback) { var matches = []; var self = this; if (this._request != null) { // JSONP requests cannot always be aborted if ($.isFunction(this._request.abort)) { this._request.abort(); } this._request = null; } var options = $.extend({ type: 'GET' }, this.ajaxOptions); if (typeof options.url === 'function') { options.url = options.url.call(this.$element, params); } if (typeof options.data === 'function') { options.data = options.data.call(this.$element, params); } function request () { var $request = options.transport(options, function (data) { var results = self.processResults(data, params); if (self.options.get('debug') && window.console && console.error) { // Check to make sure that the response included a `results` key. if (!results || !results.results || !$.isArray(results.results)) { console.error( 'Select2: The AJAX results did not return an array in the ' + '`results` key of the response.' ); } } callback(results); }, function () { // Attempt to detect if a request was aborted // Only works if the transport exposes a status property if ($request.status && $request.status === '0') { return; } self.trigger('results:message', { message: 'errorLoading' }); }); self._request = $request; } if (this.ajaxOptions.delay && params.term != null) { if (this._queryTimeout) { window.clearTimeout(this._queryTimeout); } this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); } else { request(); } }; return AjaxAdapter; }); S2.define('select2/data/tags',[ 'jquery' ], function ($) { function Tags (decorated, $element, options) { var tags = options.get('tags'); var createTag = options.get('createTag'); if (createTag !== undefined) { this.createTag = createTag; } var insertTag = options.get('insertTag'); if (insertTag !== undefined) { this.insertTag = insertTag; } decorated.call(this, $element, options); if ($.isArray(tags)) { for (var t = 0; t < tags.length; t++) { var tag = tags[t]; var item = this._normalizeItem(tag); var $option = this.option(item); this.$element.append($option); } } } Tags.prototype.query = function (decorated, params, callback) { var self = this; this._removeOldTags(); if (params.term == null || params.page != null) { decorated.call(this, params, callback); return; } function wrapper (obj, child) { var data = obj.results; for (var i = 0; i < data.length; i++) { var option = data[i]; var checkChildren = ( option.children != null && !wrapper({ results: option.children }, true) ); var checkText = option.text === params.term; if (checkText || checkChildren) { if (child) { return false; } obj.data = data; callback(obj); return; } } if (child) { return true; } var tag = self.createTag(params); if (tag != null) { var $option = self.option(tag); $option.attr('data-select2-tag', true); self.addOptions([$option]); self.insertTag(data, tag); } obj.results = data; callback(obj); } decorated.call(this, params, wrapper); }; Tags.prototype.createTag = function (decorated, params) { var term = $.trim(params.term); if (term === '') { return null; } return { id: term, text: term }; }; Tags.prototype.insertTag = function (_, data, tag) { data.unshift(tag); }; Tags.prototype._removeOldTags = function (_) { var tag = this._lastTag; var $options = this.$element.find('option[data-select2-tag]'); $options.each(function () { if (this.selected) { return; } $(this).remove(); }); }; return Tags; }); S2.define('select2/data/tokenizer',[ 'jquery' ], function ($) { function Tokenizer (decorated, $element, options) { var tokenizer = options.get('tokenizer'); if (tokenizer !== undefined) { this.tokenizer = tokenizer; } decorated.call(this, $element, options); } Tokenizer.prototype.bind = function (decorated, container, $container) { decorated.call(this, container, $container); this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field'); }; Tokenizer.prototype.query = function (decorated, params, callback) { var self = this; function createAndSelect (data) { // Normalize the data object so we can use it for checks var item = self._normalizeItem(data); // Check if the data object already exists as a tag // Select it if it doesn't var $existingOptions = self.$element.find('option').filter(function () { return $(this).val() === item.id; }); // If an existing option wasn't found for it, create the option if (!$existingOptions.length) { var $option = self.option(item); $option.attr('data-select2-tag', true); self._removeOldTags(); self.addOptions([$option]); } // Select the item, now that we know there is an option for it select(item); } function select (data) { self.trigger('select', { data: data }); } params.term = params.term || ''; var tokenData = this.tokenizer(params, this.options, createAndSelect); if (tokenData.term !== params.term) { // Replace the search term if we have the search box if (this.$search.length) { this.$search.val(tokenData.term); this.$search.focus(); } params.term = tokenData.term; } decorated.call(this, params, callback); }; Tokenizer.prototype.tokenizer = function (_, params, options, callback) { var separators = options.get('tokenSeparators') || []; var term = params.term; var i = 0; var createTag = this.createTag || function (params) { return { id: params.term, text: params.term }; }; while (i < term.length) { var termChar = term[i]; if ($.inArray(termChar, separators) === -1) { i++; continue; } var part = term.substr(0, i); var partParams = $.extend({}, params, { term: part }); var data = createTag(partParams); if (data == null) { i++; continue; } callback(data); // Reset the term to not include the tokenized portion term = term.substr(i + 1) || ''; i = 0; } return { term: term }; }; return Tokenizer; }); S2.define('select2/data/minimumInputLength',[ ], function () { function MinimumInputLength (decorated, $e, options) { this.minimumInputLength = options.get('minimumInputLength'); decorated.call(this, $e, options); } MinimumInputLength.prototype.query = function (decorated, params, callback) { params.term = params.term || ''; if (params.term.length < this.minimumInputLength) { this.trigger('results:message', { message: 'inputTooShort', args: { minimum: this.minimumInputLength, input: params.term, params: params } }); return; } decorated.call(this, params, callback); }; return MinimumInputLength; }); S2.define('select2/data/maximumInputLength',[ ], function () { function MaximumInputLength (decorated, $e, options) { this.maximumInputLength = options.get('maximumInputLength'); decorated.call(this, $e, options); } MaximumInputLength.prototype.query = function (decorated, params, callback) { params.term = params.term || ''; if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) { this.trigger('results:message', { message: 'inputTooLong', args: { maximum: this.maximumInputLength, input: params.term, params: params } }); return; } decorated.call(this, params, callback); }; return MaximumInputLength; }); S2.define('select2/data/maximumSelectionLength',[ ], function (){ function MaximumSelectionLength (decorated, $e, options) { this.maximumSelectionLength = options.get('maximumSelectionLength'); decorated.call(this, $e, options); } MaximumSelectionLength.prototype.query = function (decorated, params, callback) { var self = this; this.current(function (currentData) { var count = currentData != null ? currentData.length : 0; if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) { self.trigger('results:message', { message: 'maximumSelected', args: { maximum: self.maximumSelectionLength } }); return; } decorated.call(self, params, callback); }); }; return MaximumSelectionLength; }); S2.define('select2/dropdown',[ 'jquery', './utils' ], function ($, Utils) { function Dropdown ($element, options) { this.$element = $element; this.options = options; Dropdown.__super__.constructor.call(this); } Utils.Extend(Dropdown, Utils.Observable); Dropdown.prototype.render = function () { var $dropdown = $( '<span class="select2-dropdown">' + '<span class="select2-results"></span>' + '</span>' ); $dropdown.attr('dir', this.options.get('dir')); this.$dropdown = $dropdown; return $dropdown; }; Dropdown.prototype.bind = function () { // Should be implemented in subclasses }; Dropdown.prototype.position = function ($dropdown, $container) { // Should be implmented in subclasses }; Dropdown.prototype.destroy = function () { // Remove the dropdown from the DOM this.$dropdown.remove(); }; return Dropdown; }); S2.define('select2/dropdown/search',[ 'jquery', '../utils' ], function ($, Utils) { function Search () { } Search.prototype.render = function (decorated) { var $rendered = decorated.call(this); var $search = $( '<span class="select2-search select2-search--dropdown">' + '<input class="select2-search__field" type="search" tabindex="-1"' + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + ' spellcheck="false" role="textbox" />' + '</span>' ); this.$searchContainer = $search; this.$search = $search.find('input'); $rendered.prepend($search); return $rendered; }; Search.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); this.$search.on('keydown', function (evt) { self.trigger('keypress', evt); self._keyUpPrevented = evt.isDefaultPrevented(); }); // Workaround for browsers which do not support the `input` event // This will prevent double-triggering of events for browsers which support // both the `keyup` and `input` events. this.$search.on('input', function (evt) { // Unbind the duplicated `keyup` event $(this).off('keyup'); }); this.$search.on('keyup input', function (evt) { self.handleSearch(evt); }); container.on('open', function () { self.$search.attr('tabindex', 0); self.$search.focus(); window.setTimeout(function () { self.$search.focus(); }, 0); }); container.on('close', function () { self.$search.attr('tabindex', -1); self.$search.val(''); }); container.on('focus', function () { if (container.isOpen()) { self.$search.focus(); } }); container.on('results:all', function (params) { if (params.query.term == null || params.query.term === '') { var showSearch = self.showSearch(params); if (showSearch) { self.$searchContainer.removeClass('select2-search--hide'); } else { self.$searchContainer.addClass('select2-search--hide'); } } }); }; Search.prototype.handleSearch = function (evt) { if (!this._keyUpPrevented) { var input = this.$search.val(); this.trigger('query', { term: input }); } this._keyUpPrevented = false; }; Search.prototype.showSearch = function (_, params) { return true; }; return Search; }); S2.define('select2/dropdown/hidePlaceholder',[ ], function () { function HidePlaceholder (decorated, $element, options, dataAdapter) { this.placeholder = this.normalizePlaceholder(options.get('placeholder')); decorated.call(this, $element, options, dataAdapter); } HidePlaceholder.prototype.append = function (decorated, data) { data.results = this.removePlaceholder(data.results); decorated.call(this, data); }; HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { if (typeof placeholder === 'string') { placeholder = { id: '', text: placeholder }; } return placeholder; }; HidePlaceholder.prototype.removePlaceholder = function (_, data) { var modifiedData = data.slice(0); for (var d = data.length - 1; d >= 0; d--) { var item = data[d]; if (this.placeholder.id === item.id) { modifiedData.splice(d, 1); } } return modifiedData; }; return HidePlaceholder; }); S2.define('select2/dropdown/infiniteScroll',[ 'jquery' ], function ($) { function InfiniteScroll (decorated, $element, options, dataAdapter) { this.lastParams = {}; decorated.call(this, $element, options, dataAdapter); this.$loadingMore = this.createLoadingMore(); this.loading = false; } InfiniteScroll.prototype.append = function (decorated, data) { this.$loadingMore.remove(); this.loading = false; decorated.call(this, data); if (this.showLoadingMore(data)) { this.$results.append(this.$loadingMore); } }; InfiniteScroll.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('query', function (params) { self.lastParams = params; self.loading = true; }); container.on('query:append', function (params) { self.lastParams = params; self.loading = true; }); this.$results.on('scroll', function () { var isLoadMoreVisible = $.contains( document.documentElement, self.$loadingMore[0] ); if (self.loading || !isLoadMoreVisible) { return; } var currentOffset = self.$results.offset().top + self.$results.outerHeight(false); var loadingMoreOffset = self.$loadingMore.offset().top + self.$loadingMore.outerHeight(false); if (currentOffset + 50 >= loadingMoreOffset) { self.loadMore(); } }); }; InfiniteScroll.prototype.loadMore = function () { this.loading = true; var params = $.extend({}, {page: 1}, this.lastParams); params.page++; this.trigger('query:append', params); }; InfiniteScroll.prototype.showLoadingMore = function (_, data) { return data.pagination && data.pagination.more; }; InfiniteScroll.prototype.createLoadingMore = function () { var $option = $( '<li ' + 'class="select2-results__option select2-results__option--load-more"' + 'role="treeitem" aria-disabled="true"></li>' ); var message = this.options.get('translations').get('loadingMore'); $option.html(message(this.lastParams)); return $option; }; return InfiniteScroll; }); S2.define('select2/dropdown/attachBody',[ 'jquery', '../utils' ], function ($, Utils) { function AttachBody (decorated, $element, options) { this.$dropdownParent = options.get('dropdownParent') || $(document.body); decorated.call(this, $element, options); } AttachBody.prototype.bind = function (decorated, container, $container) { var self = this; var setupResultsEvents = false; decorated.call(this, container, $container); container.on('open', function () { self._showDropdown(); self._attachPositioningHandler(container); if (!setupResultsEvents) { setupResultsEvents = true; container.on('results:all', function () { self._positionDropdown(); self._resizeDropdown(); }); container.on('results:append', function () { self._positionDropdown(); self._resizeDropdown(); }); } }); container.on('close', function () { self._hideDropdown(); self._detachPositioningHandler(container); }); this.$dropdownContainer.on('mousedown', function (evt) { evt.stopPropagation(); }); }; AttachBody.prototype.destroy = function (decorated) { decorated.call(this); this.$dropdownContainer.remove(); }; AttachBody.prototype.position = function (decorated, $dropdown, $container) { // Clone all of the container classes $dropdown.attr('class', $container.attr('class')); $dropdown.removeClass('select2'); $dropdown.addClass('select2-container--open'); $dropdown.css({ position: 'absolute', top: -999999 }); this.$container = $container; }; AttachBody.prototype.render = function (decorated) { var $container = $('<span></span>'); var $dropdown = decorated.call(this); $container.append($dropdown); this.$dropdownContainer = $container; return $container; }; AttachBody.prototype._hideDropdown = function (decorated) { this.$dropdownContainer.detach(); }; AttachBody.prototype._attachPositioningHandler = function (decorated, container) { var self = this; var scrollEvent = 'scroll.select2.' + container.id; var resizeEvent = 'resize.select2.' + container.id; var orientationEvent = 'orientationchange.select2.' + container.id; var $watchers = this.$container.parents().filter(Utils.hasScroll); $watchers.each(function () { $(this).data('select2-scroll-position', { x: $(this).scrollLeft(), y: $(this).scrollTop() }); }); $watchers.on(scrollEvent, function (ev) { var position = $(this).data('select2-scroll-position'); $(this).scrollTop(position.y); }); $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) { self._positionDropdown(); self._resizeDropdown(); }); }; AttachBody.prototype._detachPositioningHandler = function (decorated, container) { var scrollEvent = 'scroll.select2.' + container.id; var resizeEvent = 'resize.select2.' + container.id; var orientationEvent = 'orientationchange.select2.' + container.id; var $watchers = this.$container.parents().filter(Utils.hasScroll); $watchers.off(scrollEvent); $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); }; AttachBody.prototype._positionDropdown = function () { var $window = $(window); var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above'); var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below'); var newDirection = null; var offset = this.$container.offset(); offset.bottom = offset.top + this.$container.outerHeight(false); var container = { height: this.$container.outerHeight(false) }; container.top = offset.top; container.bottom = offset.top + container.height; var dropdown = { height: this.$dropdown.outerHeight(false) }; var viewport = { top: $window.scrollTop(), bottom: $window.scrollTop() + $window.height() }; var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); var css = { left: offset.left, top: container.bottom }; // Determine what the parent element is to use for calciulating the offset var $offsetParent = this.$dropdownParent; // For statically positoned elements, we need to get the element // that is determining the offset if ($offsetParent.css('position') === 'static') { $offsetParent = $offsetParent.offsetParent(); } var parentOffset = $offsetParent.offset(); css.top -= parentOffset.top; css.left -= parentOffset.left; if (!isCurrentlyAbove && !isCurrentlyBelow) { newDirection = 'below'; } if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { newDirection = 'above'; } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { newDirection = 'below'; } if (newDirection == 'above' || (isCurrentlyAbove && newDirection !== 'below')) { css.top = container.top - parentOffset.top - dropdown.height; } if (newDirection != null) { this.$dropdown .removeClass('select2-dropdown--below select2-dropdown--above') .addClass('select2-dropdown--' + newDirection); this.$container .removeClass('select2-container--below select2-container--above') .addClass('select2-container--' + newDirection); } this.$dropdownContainer.css(css); }; AttachBody.prototype._resizeDropdown = function () { var css = { width: this.$container.outerWidth(false) + 'px' }; if (this.options.get('dropdownAutoWidth')) { css.minWidth = css.width; css.position = 'relative'; css.width = 'auto'; } this.$dropdown.css(css); }; AttachBody.prototype._showDropdown = function (decorated) { this.$dropdownContainer.appendTo(this.$dropdownParent); this._positionDropdown(); this._resizeDropdown(); }; return AttachBody; }); S2.define('select2/dropdown/minimumResultsForSearch',[ ], function () { function countResults (data) { var count = 0; for (var d = 0; d < data.length; d++) { var item = data[d]; if (item.children) { count += countResults(item.children); } else { count++; } } return count; } function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { this.minimumResultsForSearch = options.get('minimumResultsForSearch'); if (this.minimumResultsForSearch < 0) { this.minimumResultsForSearch = Infinity; } decorated.call(this, $element, options, dataAdapter); } MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { if (countResults(params.data.results) < this.minimumResultsForSearch) { return false; } return decorated.call(this, params); }; return MinimumResultsForSearch; }); S2.define('select2/dropdown/selectOnClose',[ ], function () { function SelectOnClose () { } SelectOnClose.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('close', function (params) { self._handleSelectOnClose(params); }); }; SelectOnClose.prototype._handleSelectOnClose = function (_, params) { if (params && params.originalSelect2Event != null) { var event = params.originalSelect2Event; // Don't select an item if the close event was triggered from a select or // unselect event if (event._type === 'select' || event._type === 'unselect') { return; } } var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results if ($highlightedResults.length < 1) { return; } var data = $highlightedResults.data('data'); // Don't re-select already selected resulte if ( (data.element != null && data.element.selected) || (data.element == null && data.selected) ) { return; } this.trigger('select', { data: data }); }; return SelectOnClose; }); S2.define('select2/dropdown/closeOnSelect',[ ], function () { function CloseOnSelect () { } CloseOnSelect.prototype.bind = function (decorated, container, $container) { var self = this; decorated.call(this, container, $container); container.on('select', function (evt) { self._selectTriggered(evt); }); container.on('unselect', function (evt) { self._selectTriggered(evt); }); }; CloseOnSelect.prototype._selectTriggered = function (_, evt) { var originalEvent = evt.originalEvent; // Don't close if the control key is being held if (originalEvent && originalEvent.ctrlKey) { return; } this.trigger('close', { originalEvent: originalEvent, originalSelect2Event: evt }); }; return CloseOnSelect; }); S2.define('select2/i18n/en',[],function () { // English return { errorLoading: function () { return 'The results could not be loaded.'; }, inputTooLong: function (args) { var overChars = args.input.length - args.maximum; var message = 'Please delete ' + overChars + ' character'; if (overChars != 1) { message += 's'; } return message; }, inputTooShort: function (args) { var remainingChars = args.minimum - args.input.length; var message = 'Please enter ' + remainingChars + ' or more characters'; return message; }, loadingMore: function () { return 'Loading more results…'; }, maximumSelected: function (args) { var message = 'You can only select ' + args.maximum + ' item'; if (args.maximum != 1) { message += 's'; } return message; }, noResults: function () { return 'No results found'; }, searching: function () { return 'Searching…'; } }; }); S2.define('select2/defaults',[ 'jquery', 'require', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './i18n/en' ], function ($, require, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, EnglishTranslation) { function Defaults () { this.reset(); } Defaults.prototype.apply = function (options) { options = $.extend(true, {}, this.defaults, options); if (options.dataAdapter == null) { if (options.ajax != null) { options.dataAdapter = AjaxData; } else if (options.data != null) { options.dataAdapter = ArrayData; } else { options.dataAdapter = SelectData; } if (options.minimumInputLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MinimumInputLength ); } if (options.maximumInputLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MaximumInputLength ); } if (options.maximumSelectionLength > 0) { options.dataAdapter = Utils.Decorate( options.dataAdapter, MaximumSelectionLength ); } if (options.tags) { options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); } if (options.tokenSeparators != null || options.tokenizer != null) { options.dataAdapter = Utils.Decorate( options.dataAdapter, Tokenizer ); } if (options.query != null) { var Query = require(options.amdBase + 'compat/query'); options.dataAdapter = Utils.Decorate( options.dataAdapter, Query ); } if (options.initSelection != null) { var InitSelection = require(options.amdBase + 'compat/initSelection'); options.dataAdapter = Utils.Decorate( options.dataAdapter, InitSelection ); } } if (options.resultsAdapter == null) { options.resultsAdapter = ResultsList; if (options.ajax != null) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, InfiniteScroll ); } if (options.placeholder != null) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, HidePlaceholder ); } if (options.selectOnClose) { options.resultsAdapter = Utils.Decorate( options.resultsAdapter, SelectOnClose ); } } if (options.dropdownAdapter == null) { if (options.multiple) { options.dropdownAdapter = Dropdown; } else { var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); options.dropdownAdapter = SearchableDropdown; } if (options.minimumResultsForSearch !== 0) { options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, MinimumResultsForSearch ); } if (options.closeOnSelect) { options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, CloseOnSelect ); } if ( options.dropdownCssClass != null || options.dropdownCss != null || options.adaptDropdownCssClass != null ) { var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, DropdownCSS ); } options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, AttachBody ); } if (options.selectionAdapter == null) { if (options.multiple) { options.selectionAdapter = MultipleSelection; } else { options.selectionAdapter = SingleSelection; } // Add the placeholder mixin if a placeholder was specified if (options.placeholder != null) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, Placeholder ); } if (options.allowClear) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, AllowClear ); } if (options.multiple) { options.selectionAdapter = Utils.Decorate( options.selectionAdapter, SelectionSearch ); } if ( options.containerCssClass != null || options.containerCss != null || options.adaptContainerCssClass != null ) { var ContainerCSS = require(options.amdBase + 'compat/containerCss'); options.selectionAdapter = Utils.Decorate( options.selectionAdapter, ContainerCSS ); } options.selectionAdapter = Utils.Decorate( options.selectionAdapter, EventRelay ); } if (typeof options.language === 'string') { // Check if the language is specified with a region if (options.language.indexOf('-') > 0) { // Extract the region information if it is included var languageParts = options.language.split('-'); var baseLanguage = languageParts[0]; options.language = [options.language, baseLanguage]; } else { options.language = [options.language]; } } if ($.isArray(options.language)) { var languages = new Translation(); options.language.push('en'); var languageNames = options.language; for (var l = 0; l < languageNames.length; l++) { var name = languageNames[l]; var language = {}; try { // Try to load it with the original name language = Translation.loadPath(name); } catch (e) { try { // If we couldn't load it, check if it wasn't the full path name = this.defaults.amdLanguageBase + name; language = Translation.loadPath(name); } catch (ex) { // The translation could not be loaded at all. Sometimes this is // because of a configuration problem, other times this can be // because of how Select2 helps load all possible translation files. if (options.debug && window.console && console.warn) { console.warn( 'Select2: The language file for "' + name + '" could not be ' + 'automatically loaded. A fallback will be used instead.' ); } continue; } } languages.extend(language); } options.translations = languages; } else { var baseTranslation = Translation.loadPath( this.defaults.amdLanguageBase + 'en' ); var customTranslation = new Translation(options.language); customTranslation.extend(baseTranslation); options.translations = customTranslation; } return options; }; Defaults.prototype.reset = function () { function stripDiacritics (text) { // Used 'uni range + named function' from http://jsperf.com/diacritics/18 function match(a) { return DIACRITICS[a] || a; } return text.replace(/[^\u0000-\u007E]/g, match); } function matcher (params, data) { // Always return the object if there is nothing to compare if ($.trim(params.term) === '') { return data; } // Do a recursive check for options with children if (data.children && data.children.length > 0) { // Clone the data object if there are children // This is required as we modify the object to remove any non-matches var match = $.extend(true, {}, data); // Check each child of the option for (var c = data.children.length - 1; c >= 0; c--) { var child = data.children[c]; var matches = matcher(params, child); // If there wasn't a match, remove the object in the array if (matches == null) { match.children.splice(c, 1); } } // If any children matched, return the new object if (match.children.length > 0) { return match; } // If there were no matching children, check just the plain object return matcher(params, match); } var original = stripDiacritics(data.text).toUpperCase(); var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term if (original.indexOf(term) > -1) { return data; } // If it doesn't contain the term, don't return anything return null; } this.defaults = { amdBase: './', amdLanguageBase: './i18n/', closeOnSelect: true, debug: false, dropdownAutoWidth: false, escapeMarkup: Utils.escapeMarkup, language: EnglishTranslation, matcher: matcher, minimumInputLength: 0, maximumInputLength: 0, maximumSelectionLength: 0, minimumResultsForSearch: 0, selectOnClose: false, sorter: function (data) { return data; }, templateResult: function (result) { return result.text; }, templateSelection: function (selection) { return selection.text; }, theme: 'default', width: 'resolve' }; }; Defaults.prototype.set = function (key, value) { var camelKey = $.camelCase(key); var data = {}; data[camelKey] = value; var convertedData = Utils._convertData(data); $.extend(this.defaults, convertedData); }; var defaults = new Defaults(); return defaults; }); S2.define('select2/options',[ 'require', 'jquery', './defaults', './utils' ], function (require, $, Defaults, Utils) { function Options (options, $element) { this.options = options; if ($element != null) { this.fromElement($element); } this.options = Defaults.apply(this.options); if ($element && $element.is('input')) { var InputCompat = require(this.get('amdBase') + 'compat/inputData'); this.options.dataAdapter = Utils.Decorate( this.options.dataAdapter, InputCompat ); } } Options.prototype.fromElement = function ($e) { var excludedData = ['select2']; if (this.options.multiple == null) { this.options.multiple = $e.prop('multiple'); } if (this.options.disabled == null) { this.options.disabled = $e.prop('disabled'); } if (this.options.language == null) { if ($e.prop('lang')) { this.options.language = $e.prop('lang').toLowerCase(); } else if ($e.closest('[lang]').prop('lang')) { this.options.language = $e.closest('[lang]').prop('lang'); } } if (this.options.dir == null) { if ($e.prop('dir')) { this.options.dir = $e.prop('dir'); } else if ($e.closest('[dir]').prop('dir')) { this.options.dir = $e.closest('[dir]').prop('dir'); } else { this.options.dir = 'ltr'; } } $e.prop('disabled', this.options.disabled); $e.prop('multiple', this.options.multiple); if ($e.data('select2Tags')) { if (this.options.debug && window.console && console.warn) { console.warn( 'Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags="true"` attributes and will be ' + 'removed in future versions of Select2.' ); } $e.data('data', $e.data('select2Tags')); $e.data('tags', true); } if ($e.data('ajaxUrl')) { if (this.options.debug && window.console && console.warn) { console.warn( 'Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.' ); } $e.attr('ajax--url', $e.data('ajaxUrl')); $e.data('ajax--url', $e.data('ajaxUrl')); } var dataset = {}; // Prefer the element's `dataset` attribute if it exists // jQuery 1.x does not correctly handle data attributes with multiple dashes if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { dataset = $.extend(true, {}, $e[0].dataset, $e.data()); } else { dataset = $e.data(); } var data = $.extend(true, {}, dataset); data = Utils._convertData(data); for (var key in data) { if ($.inArray(key, excludedData) > -1) { continue; } if ($.isPlainObject(this.options[key])) { $.extend(this.options[key], data[key]); } else { this.options[key] = data[key]; } } return this; }; Options.prototype.get = function (key) { return this.options[key]; }; Options.prototype.set = function (key, val) { this.options[key] = val; }; return Options; }); S2.define('select2/core',[ 'jquery', './options', './utils', './keys' ], function ($, Options, Utils, KEYS) { var Select2 = function ($element, options) { if ($element.data('select2') != null) { $element.data('select2').destroy(); } this.$element = $element; this.id = this._generateId($element); options = options || {}; this.options = new Options(options, $element); Select2.__super__.constructor.call(this); // Set up the tabindex var tabindex = $element.attr('tabindex') || 0; $element.data('old-tabindex', tabindex); $element.attr('tabindex', '-1'); // Set up containers and adapters var DataAdapter = this.options.get('dataAdapter'); this.dataAdapter = new DataAdapter($element, this.options); var $container = this.render(); this._placeContainer($container); var SelectionAdapter = this.options.get('selectionAdapter'); this.selection = new SelectionAdapter($element, this.options); this.$selection = this.selection.render(); this.selection.position(this.$selection, $container); var DropdownAdapter = this.options.get('dropdownAdapter'); this.dropdown = new DropdownAdapter($element, this.options); this.$dropdown = this.dropdown.render(); this.dropdown.position(this.$dropdown, $container); var ResultsAdapter = this.options.get('resultsAdapter'); this.results = new ResultsAdapter($element, this.options, this.dataAdapter); this.$results = this.results.render(); this.results.position(this.$results, this.$dropdown); // Bind events var self = this; // Bind the container to all of the adapters this._bindAdapters(); // Register any DOM event handlers this._registerDomEvents(); // Register any internal event handlers this._registerDataEvents(); this._registerSelectionEvents(); this._registerDropdownEvents(); this._registerResultsEvents(); this._registerEvents(); // Set the initial state this.dataAdapter.current(function (initialData) { self.trigger('selection:update', { data: initialData }); }); // Hide the original select $element.addClass('select2-hidden-accessible'); $element.attr('aria-hidden', 'true'); // Synchronize any monitored attributes this._syncAttributes(); $element.data('select2', this); }; Utils.Extend(Select2, Utils.Observable); Select2.prototype._generateId = function ($element) { var id = ''; if ($element.attr('id') != null) { id = $element.attr('id'); } else if ($element.attr('name') != null) { id = $element.attr('name') + '-' + Utils.generateChars(2); } else { id = Utils.generateChars(4); } id = id.replace(/(:|\.|\[|\]|,)/g, ''); id = 'select2-' + id; return id; }; Select2.prototype._placeContainer = function ($container) { $container.insertAfter(this.$element); var width = this._resolveWidth(this.$element, this.options.get('width')); if (width != null) { $container.css('width', width); } }; Select2.prototype._resolveWidth = function ($element, method) { var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; if (method == 'resolve') { var styleWidth = this._resolveWidth($element, 'style'); if (styleWidth != null) { return styleWidth; } return this._resolveWidth($element, 'element'); } if (method == 'element') { var elementWidth = $element.outerWidth(false); if (elementWidth <= 0) { return 'auto'; } return elementWidth + 'px'; } if (method == 'style') { var style = $element.attr('style'); if (typeof(style) !== 'string') { return null; } var attrs = style.split(';'); for (var i = 0, l = attrs.length; i < l; i = i + 1) { var attr = attrs[i].replace(/\s/g, ''); var matches = attr.match(WIDTH); if (matches !== null && matches.length >= 1) { return matches[1]; } } return null; } return method; }; Select2.prototype._bindAdapters = function () { this.dataAdapter.bind(this, this.$container); this.selection.bind(this, this.$container); this.dropdown.bind(this, this.$container); this.results.bind(this, this.$container); }; Select2.prototype._registerDomEvents = function () { var self = this; this.$element.on('change.select2', function () { self.dataAdapter.current(function (data) { self.trigger('selection:update', { data: data }); }); }); this.$element.on('focus.select2', function (evt) { self.trigger('focus', evt); }); this._syncA = Utils.bind(this._syncAttributes, this); this._syncS = Utils.bind(this._syncSubtree, this); if (this.$element[0].attachEvent) { this.$element[0].attachEvent('onpropertychange', this._syncA); } var observer = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver ; if (observer != null) { this._observer = new observer(function (mutations) { $.each(mutations, self._syncA); $.each(mutations, self._syncS); }); this._observer.observe(this.$element[0], { attributes: true, childList: true, subtree: false }); } else if (this.$element[0].addEventListener) { this.$element[0].addEventListener( 'DOMAttrModified', self._syncA, false ); this.$element[0].addEventListener( 'DOMNodeInserted', self._syncS, false ); this.$element[0].addEventListener( 'DOMNodeRemoved', self._syncS, false ); } }; Select2.prototype._registerDataEvents = function () { var self = this; this.dataAdapter.on('*', function (name, params) { self.trigger(name, params); }); }; Select2.prototype._registerSelectionEvents = function () { var self = this; var nonRelayEvents = ['toggle', 'focus']; this.selection.on('toggle', function () { self.toggleDropdown(); }); this.selection.on('focus', function (params) { self.focus(params); }); this.selection.on('*', function (name, params) { if ($.inArray(name, nonRelayEvents) !== -1) { return; } self.trigger(name, params); }); }; Select2.prototype._registerDropdownEvents = function () { var self = this; this.dropdown.on('*', function (name, params) { self.trigger(name, params); }); }; Select2.prototype._registerResultsEvents = function () { var self = this; this.results.on('*', function (name, params) { self.trigger(name, params); }); }; Select2.prototype._registerEvents = function () { var self = this; this.on('open', function () { self.$container.addClass('select2-container--open'); }); this.on('close', function () { self.$container.removeClass('select2-container--open'); }); this.on('enable', function () { self.$container.removeClass('select2-container--disabled'); }); this.on('disable', function () { self.$container.addClass('select2-container--disabled'); }); this.on('blur', function () { self.$container.removeClass('select2-container--focus'); }); this.on('query', function (params) { if (!self.isOpen()) { self.trigger('open', {}); } this.dataAdapter.query(params, function (data) { self.trigger('results:all', { data: data, query: params }); }); }); this.on('query:append', function (params) { this.dataAdapter.query(params, function (data) { self.trigger('results:append', { data: data, query: params }); }); }); this.on('keypress', function (evt) { var key = evt.which; if (self.isOpen()) { if (key === KEYS.ESC || key === KEYS.TAB || (key === KEYS.UP && evt.altKey)) { self.close(); evt.preventDefault(); } else if (key === KEYS.ENTER) { self.trigger('results:select', {}); evt.preventDefault(); } else if ((key === KEYS.SPACE && evt.ctrlKey)) { self.trigger('results:toggle', {}); evt.preventDefault(); } else if (key === KEYS.UP) { self.trigger('results:previous', {}); evt.preventDefault(); } else if (key === KEYS.DOWN) { self.trigger('results:next', {}); evt.preventDefault(); } } else { if (key === KEYS.ENTER || key === KEYS.SPACE || (key === KEYS.DOWN && evt.altKey)) { self.open(); evt.preventDefault(); } } }); }; Select2.prototype._syncAttributes = function () { this.options.set('disabled', this.$element.prop('disabled')); if (this.options.get('disabled')) { if (this.isOpen()) { this.close(); } this.trigger('disable', {}); } else { this.trigger('enable', {}); } }; Select2.prototype._syncSubtree = function (evt, mutations) { var changed = false; var self = this; // Ignore any mutation events raised for elements that aren't options or // optgroups. This handles the case when the select element is destroyed if ( evt && evt.target && ( evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP' ) ) { return; } if (!mutations) { // If mutation events aren't supported, then we can only assume that the // change affected the selections changed = true; } else if (mutations.addedNodes && mutations.addedNodes.length > 0) { for (var n = 0; n < mutations.addedNodes.length; n++) { var node = mutations.addedNodes[n]; if (node.selected) { changed = true; } } } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { changed = true; } // Only re-pull the data if we think there is a change if (changed) { this.dataAdapter.current(function (currentData) { self.trigger('selection:update', { data: currentData }); }); } }; /** * Override the trigger method to automatically trigger pre-events when * there are events that can be prevented. */ Select2.prototype.trigger = function (name, args) { var actualTrigger = Select2.__super__.trigger; var preTriggerMap = { 'open': 'opening', 'close': 'closing', 'select': 'selecting', 'unselect': 'unselecting' }; if (args === undefined) { args = {}; } if (name in preTriggerMap) { var preTriggerName = preTriggerMap[name]; var preTriggerArgs = { prevented: false, name: name, args: args }; actualTrigger.call(this, preTriggerName, preTriggerArgs); if (preTriggerArgs.prevented) { args.prevented = true; return; } } actualTrigger.call(this, name, args); }; Select2.prototype.toggleDropdown = function () { if (this.options.get('disabled')) { return; } if (this.isOpen()) { this.close(); } else { this.open(); } }; Select2.prototype.open = function () { if (this.isOpen()) { return; } this.trigger('query', {}); }; Select2.prototype.close = function () { if (!this.isOpen()) { return; } this.trigger('close', {}); }; Select2.prototype.isOpen = function () { return this.$container.hasClass('select2-container--open'); }; Select2.prototype.hasFocus = function () { return this.$container.hasClass('select2-container--focus'); }; Select2.prototype.focus = function (data) { // No need to re-trigger focus events if we are already focused if (this.hasFocus()) { return; } this.$container.addClass('select2-container--focus'); this.trigger('focus', {}); }; Select2.prototype.enable = function (args) { if (this.options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `select2("enable")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop("disabled")' + ' instead.' ); } if (args == null || args.length === 0) { args = [true]; } var disabled = !args[0]; this.$element.prop('disabled', disabled); }; Select2.prototype.data = function () { if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) { console.warn( 'Select2: Data can no longer be set using `select2("data")`. You ' + 'should consider setting the value instead using `$element.val()`.' ); } var data = []; this.dataAdapter.current(function (currentData) { data = currentData; }); return data; }; Select2.prototype.val = function (args) { if (this.options.get('debug') && window.console && console.warn) { console.warn( 'Select2: The `select2("val")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.' ); } if (args == null || args.length === 0) { return this.$element.val(); } var newVal = args[0]; if ($.isArray(newVal)) { newVal = $.map(newVal, function (obj) { return obj.toString(); }); } this.$element.val(newVal).trigger('change'); }; Select2.prototype.destroy = function () { this.$container.remove(); if (this.$element[0].detachEvent) { this.$element[0].detachEvent('onpropertychange', this._syncA); } if (this._observer != null) { this._observer.disconnect(); this._observer = null; } else if (this.$element[0].removeEventListener) { this.$element[0] .removeEventListener('DOMAttrModified', this._syncA, false); this.$element[0] .removeEventListener('DOMNodeInserted', this._syncS, false); this.$element[0] .removeEventListener('DOMNodeRemoved', this._syncS, false); } this._syncA = null; this._syncS = null; this.$element.off('.select2'); this.$element.attr('tabindex', this.$element.data('old-tabindex')); this.$element.removeClass('select2-hidden-accessible'); this.$element.attr('aria-hidden', 'false'); this.$element.removeData('select2'); this.dataAdapter.destroy(); this.selection.destroy(); this.dropdown.destroy(); this.results.destroy(); this.dataAdapter = null; this.selection = null; this.dropdown = null; this.results = null; }; Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container.addClass('select2-container--' + this.options.get('theme')); $container.data('element', this.$element); return $container; }; return Select2; }); S2.define('jquery-mousewheel',[ 'jquery' ], function ($) { // Used to shim jQuery.mousewheel for non-full builds. return $; }); S2.define('jquery.select2',[ 'jquery', 'jquery-mousewheel', './select2/core', './select2/defaults' ], function ($, _, Select2, Defaults) { if ($.fn.select2 == null) { // All methods that should return the element var thisMethods = ['open', 'close', 'destroy']; $.fn.select2 = function (options) { options = options || {}; if (typeof options === 'object') { this.each(function () { var instanceOptions = $.extend(true, {}, options); var instance = new Select2($(this), instanceOptions); }); return this; } else if (typeof options === 'string') { var ret; var args = Array.prototype.slice.call(arguments, 1); this.each(function () { var instance = $(this).data('select2'); if (instance == null && window.console && console.error) { console.error( 'The select2(\'' + options + '\') method was called on an ' + 'element that is not using Select2.' ); } ret = instance[options].apply(instance, args); }); // Check if we should be returning `this` if ($.inArray(options, thisMethods) > -1) { return this; } return ret; } else { throw new Error('Invalid arguments for Select2: ' + options); } }; } if ($.fn.select2.defaults == null) { $.fn.select2.defaults = Defaults; } return Select2; }); // Return the AMD loader configuration so it can be used outside of this file return { define: S2.define, require: S2.require }; }()); // Autoload the jQuery bindings // We know that all of the modules exist above this, so we're safe var select2 = S2.require('jquery.select2'); // Hold the AMD module references on the jQuery function that was just loaded // This allows Select2 to use the internal loader outside of this file, such // as in the language files. jQuery.fn.select2.amd = S2; // Return the Select2 instance for anyone who is importing it. return select2; })); AdminLTE/plugins/select2/lang/en.js 0000644 00000001473 15002261751 0013050 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/hu.js 0000644 00000001327 15002261751 0013060 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/bg.js 0000644 00000001612 15002261751 0013031 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/ms.js 0000644 00000001427 15002261751 0013064 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/az.js 0000644 00000001275 15002261751 0013060 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/ko.js 0000644 00000001526 15002261751 0013056 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/de.js 0000644 00000001407 15002261751 0013033 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/tr.js 0000644 00000001320 15002261751 0013062 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/he.js 0000644 00000001667 15002261751 0013047 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/pt.js 0000644 00000001533 15002261751 0013066 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/sk.js 0000644 00000002240 15002261751 0013054 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/uk.js 0000644 00000002135 15002261751 0013061 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/gl.js 0000644 00000001440 15002261751 0013042 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/lt.js 0000644 00000001621 15002261751 0013060 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/zh-TW.js 0000644 00000001304 15002261751 0013410 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/sr.js 0000644 00000001652 15002261751 0013071 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/eu.js 0000644 00000001514 15002261751 0013053 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/ro.js 0000644 00000001615 15002261751 0013064 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/ar.js 0000644 00000001567 15002261751 0013054 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/zh-CN.js 0000644 00000001401 15002261751 0013354 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/lv.js 0000644 00000001550 15002261751 0013063 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/fa.js 0000644 00000001754 15002261751 0013036 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها میتوانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجهای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/et.js 0000644 00000001407 15002261751 0013053 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/da.js 0000644 00000001462 15002261751 0013030 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/hi.js 0000644 00000002145 15002261751 0013043 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/th.js 0000644 00000001667 15002261751 0013066 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/fr.js 0000644 00000001606 15002261751 0013053 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/cs.js 0000644 00000002324 15002261751 0013047 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/mk.js 0000644 00000001723 15002261751 0013053 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/el.js 0000644 00000002154 15002261751 0013043 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/is.js 0000644 00000001405 15002261751 0013054 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/it.js 0000644 00000001554 15002261751 0013062 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/km.js 0000644 00000002051 15002261751 0013046 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/sv.js 0000644 00000001422 15002261751 0013070 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/sr-Cyrl.js 0000644 00000002053 15002261751 0013774 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/ru.js 0000644 00000002147 15002261751 0013073 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/fi.js 0000644 00000001277 15002261751 0013046 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/pl.js 0000644 00000001635 15002261751 0013061 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/nb.js 0000644 00000001421 15002261751 0013036 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/es.js 0000644 00000001547 15002261751 0013057 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/ja.js 0000644 00000001520 15002261751 0013031 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/pt-BR.js 0000644 00000001525 15002261751 0013370 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/nl.js 0000644 00000001600 15002261751 0013047 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/id.js 0000644 00000001360 15002261751 0013035 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/vi.js 0000644 00000001441 15002261751 0013057 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/hr.js 0000644 00000001507 15002261751 0013055 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/lang/ca.js 0000644 00000001554 15002261751 0013031 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); AdminLTE/plugins/select2/select2.min.css 0000644 00000035534 15002261751 0014031 0 ustar 00 .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} AdminLTE/plugins/select2/select2.full.min.js 0000644 00000222375 15002261751 0014617 0 ustar 00 /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">×</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">×</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; },e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f],h=b(c.term,g.text,g);h||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c;var d=this.options.get("query");d.call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){var d=c.find(".dropdown-wrapper");d.append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); AdminLTE/plugins/select2/select2.css 0000644 00000042304 15002261751 0013240 0 ustar 00 .select2-container { box-sizing: border-box; display: inline-block; margin: 0; position: relative; vertical-align: middle; } .select2-container .select2-selection--single { box-sizing: border-box; cursor: pointer; display: block; height: 28px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--single .select2-selection__rendered { display: block; padding-left: 8px; padding-right: 20px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .select2-container .select2-selection--single .select2-selection__clear { position: relative; } .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 8px; padding-left: 20px; } .select2-container .select2-selection--multiple { box-sizing: border-box; cursor: pointer; display: block; min-height: 32px; user-select: none; -webkit-user-select: none; } .select2-container .select2-selection--multiple .select2-selection__rendered { display: inline-block; overflow: hidden; padding-left: 8px; text-overflow: ellipsis; white-space: nowrap; } .select2-container .select2-search--inline { float: left; } .select2-container .select2-search--inline .select2-search__field { box-sizing: border-box; border: none; font-size: 100%; margin-top: 5px; padding: 0; } .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; } .select2-dropdown { background-color: white; border: 1px solid #aaa; border-radius: 4px; box-sizing: border-box; display: block; position: absolute; left: -100000px; width: 100%; z-index: 1051; } .select2-results { display: block; } .select2-results__options { list-style: none; margin: 0; padding: 0; } .select2-results__option { padding: 6px; user-select: none; -webkit-user-select: none; } .select2-results__option[aria-selected] { cursor: pointer; } .select2-container--open .select2-dropdown { left: 0; } .select2-container--open .select2-dropdown--above { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--open .select2-dropdown--below { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; } .select2-search--dropdown { display: block; padding: 4px; } .select2-search--dropdown .select2-search__field { padding: 4px; width: 100%; box-sizing: border-box; } .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { -webkit-appearance: none; } .select2-search--dropdown.select2-search--hide { display: none; } .select2-close-mask { border: 0; margin: 0; padding: 0; display: block; position: fixed; left: 0; top: 0; min-height: 100%; min-width: 100%; height: auto; width: auto; opacity: 0; z-index: 99; background-color: #fff; filter: alpha(opacity=0); } .select2-hidden-accessible { border: 0 !important; clip: rect(0 0 0 0) !important; height: 1px !important; margin: -1px !important; overflow: hidden !important; padding: 0 !important; position: absolute !important; width: 1px !important; } .select2-container--default .select2-selection--single { background-color: #fff; border: 1px solid #aaa; border-radius: 4px; } .select2-container--default .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; } .select2-container--default .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; } .select2-container--default .select2-selection--single .select2-selection__placeholder { color: #999; } .select2-container--default .select2-selection--single .select2-selection__arrow { height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; } .select2-container--default .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; } .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; } .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { left: 1px; right: auto; } .select2-container--default.select2-container--disabled .select2-selection--single { background-color: #eee; cursor: default; } .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { display: none; } .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; } .select2-container--default .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 4px; cursor: text; } .select2-container--default .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; list-style: none; margin: 0; padding: 0 5px; width: 100%; } .select2-container--default .select2-selection--multiple .select2-selection__rendered li { list-style: none; } .select2-container--default .select2-selection--multiple .select2-selection__placeholder { color: #999; margin-top: 5px; float: left; } .select2-container--default .select2-selection--multiple .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-top: 5px; margin-right: 10px; } .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 4px; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: #999; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; } .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { color: #333; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { float: right; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } .select2-container--default.select2-container--focus .select2-selection--multiple { border: solid black 1px; outline: 0; } .select2-container--default.select2-container--disabled .select2-selection--multiple { background-color: #eee; cursor: default; } .select2-container--default.select2-container--disabled .select2-selection__choice__remove { display: none; } .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { border-top-left-radius: 0; border-top-right-radius: 0; } .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--default .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; } .select2-container--default .select2-search--inline .select2-search__field { background: transparent; border: none; outline: 0; box-shadow: none; -webkit-appearance: textfield; } .select2-container--default .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; } .select2-container--default .select2-results__option[role=group] { padding: 0; } .select2-container--default .select2-results__option[aria-disabled=true] { color: #999; } .select2-container--default .select2-results__option[aria-selected=true] { background-color: #ddd; } .select2-container--default .select2-results__option .select2-results__option { padding-left: 1em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__group { padding-left: 0; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option { margin-left: -1em; padding-left: 2em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -2em; padding-left: 3em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -3em; padding-left: 4em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -4em; padding-left: 5em; } .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { margin-left: -5em; padding-left: 6em; } .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #5897fb; color: white; } .select2-container--default .select2-results__group { cursor: default; display: block; padding: 6px; } .select2-container--classic .select2-selection--single { background-color: #f7f7f7; border: 1px solid #aaa; border-radius: 4px; outline: 0; background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } .select2-container--classic .select2-selection--single:focus { border: 1px solid #5897fb; } .select2-container--classic .select2-selection--single .select2-selection__rendered { color: #444; line-height: 28px; } .select2-container--classic .select2-selection--single .select2-selection__clear { cursor: pointer; float: right; font-weight: bold; margin-right: 10px; } .select2-container--classic .select2-selection--single .select2-selection__placeholder { color: #999; } .select2-container--classic .select2-selection--single .select2-selection__arrow { background-color: #ddd; border: none; border-left: 1px solid #aaa; border-top-right-radius: 4px; border-bottom-right-radius: 4px; height: 26px; position: absolute; top: 1px; right: 1px; width: 20px; background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } .select2-container--classic .select2-selection--single .select2-selection__arrow b { border-color: #888 transparent transparent transparent; border-style: solid; border-width: 5px 4px 0 4px; height: 0; left: 50%; margin-left: -4px; margin-top: -2px; position: absolute; top: 50%; width: 0; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { float: left; } .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { border: none; border-right: 1px solid #aaa; border-radius: 0; border-top-left-radius: 4px; border-bottom-left-radius: 4px; left: 1px; right: auto; } .select2-container--classic.select2-container--open .select2-selection--single { border: 1px solid #5897fb; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { background: transparent; border: none; } .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { border-color: transparent transparent #888 transparent; border-width: 0 4px 5px 4px; } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } .select2-container--classic .select2-selection--multiple { background-color: white; border: 1px solid #aaa; border-radius: 4px; cursor: text; outline: 0; } .select2-container--classic .select2-selection--multiple:focus { border: 1px solid #5897fb; } .select2-container--classic .select2-selection--multiple .select2-selection__rendered { list-style: none; margin: 0; padding: 0 5px; } .select2-container--classic .select2-selection--multiple .select2-selection__clear { display: none; } .select2-container--classic .select2-selection--multiple .select2-selection__choice { background-color: #e4e4e4; border: 1px solid #aaa; border-radius: 4px; cursor: default; float: left; margin-right: 5px; margin-top: 5px; padding: 0 5px; } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { color: #888; cursor: pointer; display: inline-block; font-weight: bold; margin-right: 2px; } .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { color: #555; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { float: right; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { margin-left: 5px; margin-right: auto; } .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { margin-left: 2px; margin-right: auto; } .select2-container--classic.select2-container--open .select2-selection--multiple { border: 1px solid #5897fb; } .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { border-top: none; border-top-left-radius: 0; border-top-right-radius: 0; } .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { border-bottom: none; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .select2-container--classic .select2-search--dropdown .select2-search__field { border: 1px solid #aaa; outline: 0; } .select2-container--classic .select2-search--inline .select2-search__field { outline: 0; box-shadow: none; } .select2-container--classic .select2-dropdown { background-color: white; border: 1px solid transparent; } .select2-container--classic .select2-dropdown--above { border-bottom: none; } .select2-container--classic .select2-dropdown--below { border-top: none; } .select2-container--classic .select2-results > .select2-results__options { max-height: 200px; overflow-y: auto; } .select2-container--classic .select2-results__option[role=group] { padding: 0; } .select2-container--classic .select2-results__option[aria-disabled=true] { color: grey; } .select2-container--classic .select2-results__option--highlighted[aria-selected] { background-color: #3875d7; color: white; } .select2-container--classic .select2-results__group { cursor: default; display: block; padding: 6px; } .select2-container--classic.select2-container--open .select2-dropdown { border-color: #5897fb; } AdminLTE/plugins/jQueryUI/jquery-ui.min.js 0000644 00000725453 15002261751 0014430 0 ustar 00 /*! jQuery UI - v1.11.4 - 2015-03-11 * http://jqueryui.com * Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js * Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ (function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(i=parseInt(e.css("zIndex"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",o)}function o(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}function h(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var l=0,u=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var a="string"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(r=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):(o.length&&(n=e.widget.extend.apply(null,[n].concat(o))),this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))})),r}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,M=e.extend({},y),C=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?M.left-=d:"center"===n.my[0]&&(M.left-=d/2),"bottom"===n.my[1]?M.top-=c:"center"===n.my[1]&&(M.top-=c/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](M,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-M.left,i=t+m-d,s=v.top-M.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)),void 0)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,s=this.headers.length,n=this.headers.index(t.target),a=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(e(t.target).attr("tabIndex",-1),e(a).attr("tabIndex",0),a.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),i=t.uniqueId().attr("id"),s=t.next(),n=s.uniqueId().attr("id");t.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(t=n.height(),this.element.siblings(":visible").each(function(){var i=e(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(t-=i.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?e():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?e():n,newPanel:r};t.preventDefault(),a&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?e():n,this._toggle(l),s.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&n.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,s=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,t):(s.hide(),i.show(),this._toggleComplete(t)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,i){var s,n,a,o=this,r=0,h=e.css("box-sizing"),l=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=l&&u.down||u,c=function(){o._toggleComplete(i)};return"number"==typeof d&&(a=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,a=a||d.duration||u.duration,t.length?e.length?(s=e.show().outerHeight(),t.animate(this.hideProps,{duration:a,easing:n,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(this.showProps,{duration:a,easing:n,complete:c,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==o.options.heightStyle&&(i.now=Math.round(s-t.outerHeight()-r),r=0)}}),void 0):t.animate(this.hideProps,a,n,c):e.animate(this.showProps,a,n,c)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var i=e(t.target);!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var i=e(t.currentTarget); i.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var i,s,n,a,o=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,s=this.previousFilter||"",n=String.fromCharCode(t.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(t.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(t,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),a.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),i=t.parent(),s=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);i.attr("aria-haspopup","true").prepend(s),t.attr("aria-labelledby",i.attr("id"))}),t=a.add(this.element),i=t.find(this.options.items),i.not(".ui-menu-item").each(function(){var t=e(this);s._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),i.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&e&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=t.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[t]()),this.focus(i,s)},nextPage:function(t){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-n}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(t),void 0)},previousPage:function(t){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+n>0}),this.focus(t,i)):this.focus(t,this.activeMenu.find(this.options.items).first())),void 0):(this.next(t),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)},_filterMenuItems:function(t){var i=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,void 0;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),void 0):(this._searchTimeout(e),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(e),this._change(e),void 0)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&e.trim(s).length&&(this.liveRegion.children().hide(),e("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),i=this.menu.element.is(":visible"),s=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!i&&!s)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").text(i.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[e](t),void 0):(this.search(null,t),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))}}),e.ui.autocomplete;var c,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var i=t.name,s=t.form,n=e([]);return i&&(i=i.replace(/'/g,"\\'"),n=s?e(s).find("[name='"+i+"'][type=radio]"):e("[name='"+i+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,i=this.options,s="checkbox"===this.type||"radio"===this.type,n=s?"":"ui-state-active";null===i.label&&(i.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){i.disabled||this===c&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){i.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){i.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),s&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return i.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(i.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var s=t.element[0];g(s).not(s).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return i.disabled?!1:(e(this).addClass("ui-state-active"),c=this,t.document.one("mouseup",function(){c=null}),void 0)}).bind("mouseup"+this.eventNamespace,function(){return i.disabled?!1:(e(this).removeClass("ui-state-active"),void 0)}).bind("keydown"+this.eventNamespace,function(t){return i.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),void 0)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",i.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")),void 0):(this._resetButton(),void 0)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var t=this.buttonElement.removeClass(f),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push("ui-button-text-icon"+(n?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(a.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):a.push("ui-button-text-only"),t.addClass(a.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),i=this.element.find(this.options.items),s=i.filter(":ui-button");i.not(":ui-button").button(),s.button("refresh"),this.buttons=i.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n="div"===s||"span"===s,t.id||(this.uuid+=1,t.id="dp"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),"input"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,"datepicker",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),o&&(i.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[r?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&t.focus(this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),a=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(a?e("<img/>").attr({src:a,alt:n,title:n}):n)),t[r?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),a.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())),e.input.attr("size",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+o+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],"datepicker",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,"datepicker");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,a.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,a.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&"string"==typeof i?"defaults"===i?e.extend({},e.datepicker._defaults):l?"all"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(".ui-datepicker-rtl");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,"onSelect"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,"stepBigMonths"):-e.datepicker._get(a,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,"stepBigMonths"):+e.datepicker._get(a,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target); return e.datepicker._get(n,"constrainInput")?(i=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,"beforeShow"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|="fixed"===e(this).css("position"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":o?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),i.inline||(l=e.datepicker._get(i,"showAnim"),u=e.datepicker._get(i,"duration"),i.dpDiv.css("z-index",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,"showOptions"),u):i.dpDiv[l||"show"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),t.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,"datepicker")||this._datepickerShowing&&(i=this._get(o,"showAnim"),s=this._get(o,"duration"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),s,n):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,"onClose"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+("M"===s?this._get(a,"showCurrentAtPos"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a["selected"+("M"===s?"Month":"Year")]=a["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e("a",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,"onSelect"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,"altField");a&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?s:1,a=RegExp("^\\d{"+n+","+s+"}"),o=i.substring(h).match(a);if(!o)throw"Missing number at position "+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw"Unknown name at position "+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;t.length>n;n++)if(b)"'"!==t.charAt(n)||_("'")?k():b=!1;else switch(t.charAt(n)){case"d":v=x("d");break;case"D":w("D",d,c);break;case"o":y=x("o");break;case"m":g=x("m");break;case"M":g=w("M",p,f);break;case"y":m=x("y");break;case"@":r=new Date(x("@")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"!":r=new Date((x("!")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case"'":_("'")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=""+t;if(h(e))for(;i>s.length;)s="0"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d="",c=!1;if(t)for(s=0;e.length>s;s++)if(c)"'"!==e.charAt(s)||h("'")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case"d":d+=l("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,a);break;case"o":d+=l("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=l("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),o,r);break;case"y":d+=h("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":h("'")?d+="'":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i="",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)"'"!==e.charAt(t)||n("'")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?"":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case"y":case"Y":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||""===i?s:"string"==typeof i?a(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&"Invalid Date"==""+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),s="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,"M")},next:function(){e.datepicker._adjustDate(s,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,M,C,N,A,P,I,H,z,F,E,O,j,W,L=new Date,R=this._daylightSavingAdjust(new Date(L.getFullYear(),L.getMonth(),L.getDate())),Y=this._get(e,"isRTL"),B=this._get(e,"showButtonPanel"),J=this._get(e,"hideIfNoPrevNext"),q=this._get(e,"navigationAsDateFormat"),K=this._getNumberOfMonths(e),V=this._get(e,"showCurrentAtPos"),U=this._get(e,"stepMonths"),Q=1!==K[0]||1!==K[1],G=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),X=this._getMinMaxDate(e,"min"),$=this._getMinMaxDate(e,"max"),Z=e.drawMonth-V,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-K[0]*K[1]+1,$.getDate())),t=X&&X>t?X:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=q?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-U,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":J?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(e,"nextText"),n=q?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+U,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":J?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",o=this._get(e,"currentText"),r=this._get(e,"gotoCurrent")&&e.currentDay?G:R,o=q?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",l=B?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(e,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(Y?"":h)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),c=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),_="",w=0;K[0]>w;w++){for(k="",this.maxRows=4,T=0;K[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=" ui-corner-all",M="",Q){if(M+="<div class='ui-datepicker-group",K[1]>1)switch(T){case 0:M+=" ui-datepicker-group-first",S=" ui-corner-"+(Y?"right":"left");break;case K[1]-1:M+=" ui-datepicker-group-last",S=" ui-corner-"+(Y?"left":"right");break;default:M+=" ui-datepicker-group-middle",S=""}M+="'>"}for(M+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+S+"'>"+(/all|left/.test(S)&&0===w?Y?a:s:"")+(/all|right/.test(S)&&0===w?Y?s:a:"")+this._generateMonthYearHeader(e,Z,et,X,$,w>0||T>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",C=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",x=0;7>x;x++)N=(x+u)%7,C+="<th scope='col'"+((x+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+c[N]+"'>"+p[N]+"</span></th>";for(M+=C+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),P=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((P+A)/7),H=Q?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-P)),F=0;H>F;F++){for(M+="<tr>",E=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(z)+"</td>":"",x=0;7>x;x++)O=g?g.apply(e.input?e.input[0]:null,[z]):[!0,""],j=z.getMonth()!==Z,W=j&&!y||!O[0]||X&&X>z||$&&z>$,E+="<td class='"+((x+u+6)%7>=5?" ui-datepicker-week-end":"")+(j?" ui-datepicker-other-month":"")+(z.getTime()===D.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===z.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(W?" "+this._unselectableClass+" ui-state-disabled":"")+(j&&!v?"":" "+O[1]+(z.getTime()===G.getTime()?" "+this._currentClass:"")+(z.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+(j&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(W?"":" data-handler='selectDay' data-event='click' data-month='"+z.getMonth()+"' data-year='"+z.getFullYear()+"'")+">"+(j&&!v?" ":W?"<span class='ui-state-default'>"+z.getDate()+"</span>":"<a class='ui-state-default"+(z.getTime()===R.getTime()?" ui-state-highlight":"")+(z.getTime()===G.getTime()?" ui-state-active":"")+(j?" ui-priority-secondary":"")+"' href='#'>"+z.getDate()+"</a>")+"</td>",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+"</tr>"}Z++,Z>11&&(Z=0,et++),M+="</tbody></table>"+(Q?"</div>"+(K[0]>0&&T===K[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),k+=M}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",_="";if(a||!g)_+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(_+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+r[u]+"</option>");_+="</select>"}if(y||(b+=_+(!a&&g&&v?"":" ")),!e.yearshtml)if(e.yearshtml="",a||!v)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(d=this._get(e,"yearRange").split(":"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),y&&(b+=(!a&&g&&v?"":" ")+_),b+="</div>"},_adjustInstDate:function(e,t,i){var s=e.drawYear+("Y"===i?t:0),n=e.drawMonth+("M"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+("D"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),o=null,r=null,h=this._get(e,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(o+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0) },_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,s=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",a+1),s=!0),s&&!i&&this._trigger("focus",t),s},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),void 0; if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==s[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){s.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),void 0):(e.each(i,function(i,s){var n,a;s=e.isFunction(s)?{click:s,text:i}:s,s=e.extend({type:"button"},s),n=s.click,s.click=function(){n.apply(t.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,e("<button></button>",s).button(a).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,t(n))},drag:function(e,s){i._trigger("drag",e,t(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(o>=0?"+":"")+o+" "+"top"+(r>=0?"+":"")+r,of:i.window},e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,t(a))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css("position"),o="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,t(n))},resize:function(e,s){i._trigger("resize",e,t(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,t(a))}}).css("position",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),i=e.inArray(this,t);-1!==i&&t.splice(i,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};e.each(t,function(e,t){i._setOption(e,t),e in i.sizeRelatedOptions&&(s=!0),e in i.resizableRelatedOptions&&(n[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var i,s,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=n.is(":data(ui-draggable)"),i&&!t&&n.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(s=n.is(":data(ui-resizable)"),s&&!t&&n.resizable("destroy"),s&&"string"==typeof t&&n.resizable("option","handles",t),s||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),e=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),t=Math.max(0,s.minHeight-e),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-e):"none","auto"===s.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable;var y="ui-effects-",b=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(b),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(b.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(y+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(y+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()}; f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})},e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),this._refreshValue(),void 0)},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,i){e.preventDefault(),t._setSelection(),t._select(i.item.data("ui-selectmenu-item"),e)},focus:function(e,i){var s=i.item.data("ui-selectmenu-item");null!=t.focusIndex&&s.index!==t.focusIndex&&(t._trigger("focus",e,{item:s}),t.isOpen||t._select(s,e)),t.focusIndex=s.index,t.button.attr("aria-activedescendant",t.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,i){var s=this,n="";e.each(i,function(i,a){a.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(a.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:a.optgroup}).appendTo(t),n=a.optgroup),s._renderItemData(t,a)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,i){var s=e("<li>");return i.disabled&&s.addClass("ui-state-disabled"),this._setText(s,i.label),s.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html(" ")},_move:function(e,t){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),s="first"===e||"last"===e?i["first"===e?"prevAll":"nextAll"](n).eq(-1):i[e+"All"](n).eq(0),s.length&&this.menuInstance.focus(t,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var i=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),i=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),i=!1}i&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==i&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var i=[];t.each(function(t,s){var n=e(s),a=n.parent("optgroup");i.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:a.attr("label")||"",disabled:a.prop("disabled")||n.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),t=n.length;i>t;t++)o.push(a);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,a,o,r,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(n>i||n===i&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=i,a=e(this),o=t)}),r=this._start(t,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),h=a.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-a.width()/2,top:t.pageY-h.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,n,a;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(n=this.values(),n[t]=i,a=this._trigger("slide",e,{handle:this.handles[t],value:i,values:n}),s=this.values(t?0:1),a!==!1&&this.values(t,i))):i!==this.value()&&(a=this._trigger("slide",e,{handle:this.handles[t],value:i}),a!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(t,i){var s,n,a;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),void 0;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(t,i){var s,n=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!i),this._super(t,i),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),i=this.options.step,s=Math.floor(+(e-t).toFixed(this._precision())/i)*i;e=s+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:r.animate}))),t=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(t){var i,s,n,a,o=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),i=this._start(t,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(t,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this)); return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td> </td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var n=i.attr(s);void 0!==n&&n.length&&(t[s]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:h(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:h(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:h(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:h(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(h(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var i,s;t=t.cloneNode(!1),i=t.href.replace(e,""),s=location.href.replace(e,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return t.hash.length>1&&i===s}}(),_create:function(){var t=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible),this._processTabs(),i.active=this._initialActive(),e.isArray(i.disabled)&&(i.disabled=e.unique(i.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):e(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var t=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===t&&(s&&this.tabs.each(function(i,n){return e(n).attr("aria-controls")===s?(t=i,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=i?!1:0)),!i&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var i=e(this.document[0].activeElement).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:s++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,s--;break;case e.ui.keyCode.END:s=this.anchors.length-1;break;case e.ui.keyCode.HOME:s=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}t.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),t.ctrlKey||t.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,i){function s(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?(this._activate(t),void 0):"disabled"===e?(this._setupDisabled(t),void 0):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),"heightStyle"===e&&this._setupHeightStyle(t),void 0)},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,i=this.tabs,s=this.anchors,n=this.panels; this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,s){var n,a,o,r=e(s).uniqueId().attr("id"),h=e(s).closest("li"),l=h.attr("aria-controls");t._isLocal(s)?(n=s.hash,o=n.substring(1),a=t.element.find(t._sanitizeSelector(n))):(o=h.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+o,a=t.element.find(n),a.length||(a=t._createPanel(o),a.insertAfter(t.panels[i-1]||t.tablist)),a.attr("aria-live","polite")),a.length&&(t.panels=t.panels.add(a)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":o,"aria-labelledby":r}),a.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s=this.element.parent();"fill"===t?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,n=e(t.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?e():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:r?e():a,newPanel:h};t.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?e():a,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),t),this._toggle(t,u))},_toggle:function(t,i){function s(){a.running=!1,a._trigger("activate",t,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var i=this.options.disabled;i!==!1&&(void 0===t?i=!1:(t=this._getIndex(t),i=e.isArray(i)?e.map(i,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,i){return i!==t?i:null})),this._setupDisabled(i))},disable:function(t){var i=this.options.disabled;if(i!==!0){if(void 0===t)i=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,i))return;i=e.isArray(i)?e.merge([t],i).sort():[t]}this._setupDisabled(i)}},load:function(t,i){t=this._getIndex(t);var s=this,n=this.tabs.eq(t),a=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(e,t){"abort"===t&&s.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=e.ajax(this._ajaxSettings(a,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){o.html(e),s._trigger("load",i,r),h(n,t)},1)}).fail(function(e,t){setTimeout(function(){h(e,t)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,a){return n._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:a},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))},_removeDescribedBy:function(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(i,s);-1!==n&&s.splice(n,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t.element)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur");n.target=n.currentTarget=s.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(t,s),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,n=this,a=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=a),this._open(t,e,i))})}),i&&this._open(t,e,i),void 0)},_open:function(t,i,s){function n(e){l.of=e,o.is(":hidden")||o.position(l)}var a,o,r,h,l=e.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(t&&"mouseover"===t.type?i.attr("title",""):i.removeAttr("title")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr("id").find("[id]").removeAttr("id")):h=s,e("<div>").html(h).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):o.position(e.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(n(l.of),clearInterval(r))},e.fx.interval)),this._trigger("open",t,{tooltip:o})}},_registerCloseHandlers:function(t,i){var s={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var s=e.Event(t);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(s.mouseleave="close"),t&&"focusin"!==t.type||(s.focusout="close"),this._on(!0,i,s)},close:function(t){var i,s=this,n=e(t?t.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),a.closing=!0,this._trigger("close",t,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(t){var i=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),s=i.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:t,tooltip:i}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var n=e.Event("blur"),a=s.element;n.target=n.currentTarget=a[0],t.close(n,!0),e("#"+i).remove(),a.data("ui-tooltip-title")&&(a.attr("title")||a.attr("title",a.data("ui-tooltip-title")),a.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})}); AdminLTE/plugins/jQueryUI/jquery-ui.js 0000644 00001627104 15002261751 0013641 0 ustar 00 /*! jQuery UI - v1.11.4 - 2015-03-11 * http://jqueryui.com * Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js * Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ (function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define([ "jquery" ], factory ); } else { // Browser globals factory( jQuery ); } }(function( $ ) { /*! * jQuery UI Core 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/ui-core/ */ // $.ui might exist from components with no dependencies, e.g., $.ui.position $.ui = $.ui || {}; $.extend( $.ui, { version: "1.11.4", keyCode: { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 } }); // plugins $.fn.extend({ scrollParent: function( includeHidden ) { var position = this.css( "position" ), excludeStaticParent = position === "absolute", overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, scrollParent = this.parents().filter( function() { var parent = $( this ); if ( excludeStaticParent && parent.css( "position" ) === "static" ) { return false; } return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) ); }).eq( 0 ); return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent; }, uniqueId: (function() { var uuid = 0; return function() { return this.each(function() { if ( !this.id ) { this.id = "ui-id-" + ( ++uuid ); } }); }; })(), removeUniqueId: function() { return this.each(function() { if ( /^ui-id-\d+$/.test( this.id ) ) { $( this ).removeAttr( "id" ); } }); } }); // selectors function focusable( element, isTabIndexNotNaN ) { var map, mapName, img, nodeName = element.nodeName.toLowerCase(); if ( "area" === nodeName ) { map = element.parentNode; mapName = map.name; if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { return false; } img = $( "img[usemap='#" + mapName + "']" )[ 0 ]; return !!img && visible( img ); } return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ? !element.disabled : "a" === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && // the element and all of its ancestors must be visible visible( element ); } function visible( element ) { return $.expr.filters.visible( element ) && !$( element ).parents().addBack().filter(function() { return $.css( this, "visibility" ) === "hidden"; }).length; } $.extend( $.expr[ ":" ], { data: $.expr.createPseudo ? $.expr.createPseudo(function( dataName ) { return function( elem ) { return !!$.data( elem, dataName ); }; }) : // support: jQuery <1.8 function( elem, i, match ) { return !!$.data( elem, match[ 3 ] ); }, focusable: function( element ) { return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); }, tabbable: function( element ) { var tabIndex = $.attr( element, "tabindex" ), isTabIndexNaN = isNaN( tabIndex ); return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); } }); // support: jQuery <1.8 if ( !$( "<a>" ).outerWidth( 1 ).jquery ) { $.each( [ "Width", "Height" ], function( i, name ) { var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], type = name.toLowerCase(), orig = { innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce( elem, size, border, margin ) { $.each( side, function() { size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; if ( border ) { size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; } if ( margin ) { size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; } }); return size; } $.fn[ "inner" + name ] = function( size ) { if ( size === undefined ) { return orig[ "inner" + name ].call( this ); } return this.each(function() { $( this ).css( type, reduce( this, size ) + "px" ); }); }; $.fn[ "outer" + name] = function( size, margin ) { if ( typeof size !== "number" ) { return orig[ "outer" + name ].call( this, size ); } return this.each(function() { $( this).css( type, reduce( this, size, true, margin ) + "px" ); }); }; }); } // support: jQuery <1.8 if ( !$.fn.addBack ) { $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } // support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { $.fn.removeData = (function( removeData ) { return function( key ) { if ( arguments.length ) { return removeData.call( this, $.camelCase( key ) ); } else { return removeData.call( this ); } }; })( $.fn.removeData ); } // deprecated $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); $.fn.extend({ focus: (function( orig ) { return function( delay, fn ) { return typeof delay === "number" ? this.each(function() { var elem = this; setTimeout(function() { $( elem ).focus(); if ( fn ) { fn.call( elem ); } }, delay ); }) : orig.apply( this, arguments ); }; })( $.fn.focus ), disableSelection: (function() { var eventType = "onselectstart" in document.createElement( "div" ) ? "selectstart" : "mousedown"; return function() { return this.bind( eventType + ".ui-disableSelection", function( event ) { event.preventDefault(); }); }; })(), enableSelection: function() { return this.unbind( ".ui-disableSelection" ); }, zIndex: function( zIndex ) { if ( zIndex !== undefined ) { return this.css( "zIndex", zIndex ); } if ( this.length ) { var elem = $( this[ 0 ] ), position, value; while ( elem.length && elem[ 0 ] !== document ) { // Ignore z-index if position is set to a value where z-index is ignored by the browser // This makes behavior of this function consistent across browsers // WebKit always returns auto if the element is positioned position = elem.css( "position" ); if ( position === "absolute" || position === "relative" || position === "fixed" ) { // IE returns 0 when zIndex is not specified // other browsers return a string // we ignore the case of nested elements with an explicit value of 0 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div> value = parseInt( elem.css( "zIndex" ), 10 ); if ( !isNaN( value ) && value !== 0 ) { return value; } } elem = elem.parent(); } } return 0; } }); // $.ui.plugin is deprecated. Use $.widget() extensions instead. $.ui.plugin = { add: function( module, option, set ) { var i, proto = $.ui[ module ].prototype; for ( i in set ) { proto.plugins[ i ] = proto.plugins[ i ] || []; proto.plugins[ i ].push( [ option, set[ i ] ] ); } }, call: function( instance, name, args, allowDisconnected ) { var i, set = instance.plugins[ name ]; if ( !set ) { return; } if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) { return; } for ( i = 0; i < set.length; i++ ) { if ( instance.options[ set[ i ][ 0 ] ] ) { set[ i ][ 1 ].apply( instance.element, args ); } } } }; /*! * jQuery UI Widget 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/jQuery.widget/ */ var widget_uuid = 0, widget_slice = Array.prototype.slice; $.cleanData = (function( orig ) { return function( elems ) { var events, elem, i; for ( i = 0; (elem = elems[i]) != null; i++ ) { try { // Only trigger remove when necessary to save time events = $._data( elem, "events" ); if ( events && events.remove ) { $( elem ).triggerHandler( "remove" ); } // http://bugs.jquery.com/ticket/8235 } catch ( e ) {} } orig( elems ); }; })( $.cleanData ); $.widget = function( name, base, prototype ) { var fullName, existingConstructor, constructor, basePrototype, // proxiedPrototype allows the provided prototype to remain unmodified // so that it can be used as a mixin for multiple widgets (#8876) proxiedPrototype = {}, namespace = name.split( "." )[ 0 ]; name = name.split( "." )[ 1 ]; fullName = namespace + "-" + name; if ( !prototype ) { prototype = base; base = $.Widget; } // create selector for plugin $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { return !!$.data( elem, fullName ); }; $[ namespace ] = $[ namespace ] || {}; existingConstructor = $[ namespace ][ name ]; constructor = $[ namespace ][ name ] = function( options, element ) { // allow instantiation without "new" keyword if ( !this._createWidget ) { return new constructor( options, element ); } // allow instantiation without initializing for simple inheritance // must use "new" keyword (the code above always passes args) if ( arguments.length ) { this._createWidget( options, element ); } }; // extend with the existing constructor to carry over any static properties $.extend( constructor, existingConstructor, { version: prototype.version, // copy the object used to create the prototype in case we need to // redefine the widget later _proto: $.extend( {}, prototype ), // track widgets that inherit from this widget in case this widget is // redefined after a widget inherits from it _childConstructors: [] }); basePrototype = new base(); // we need to make the options hash a property directly on the new instance // otherwise we'll modify the options hash on the prototype that we're // inheriting from basePrototype.options = $.widget.extend( {}, basePrototype.options ); $.each( prototype, function( prop, value ) { if ( !$.isFunction( value ) ) { proxiedPrototype[ prop ] = value; return; } proxiedPrototype[ prop ] = (function() { var _super = function() { return base.prototype[ prop ].apply( this, arguments ); }, _superApply = function( args ) { return base.prototype[ prop ].apply( this, args ); }; return function() { var __super = this._super, __superApply = this._superApply, returnValue; this._super = _super; this._superApply = _superApply; returnValue = value.apply( this, arguments ); this._super = __super; this._superApply = __superApply; return returnValue; }; })(); }); constructor.prototype = $.widget.extend( basePrototype, { // TODO: remove support for widgetEventPrefix // always use the name + a colon as the prefix, e.g., draggable:start // don't prefix for widgets that aren't DOM-based widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName }); // If this widget is being redefined then we need to find all widgets that // are inheriting from it and redefine all of them so that they inherit from // the new version of this widget. We're essentially trying to replace one // level in the prototype chain. if ( existingConstructor ) { $.each( existingConstructor._childConstructors, function( i, child ) { var childPrototype = child.prototype; // redefine the child widget using the same prototype that was // originally used, but inherit from the new version of the base $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); }); // remove the list of existing child constructors from the old constructor // so the old child constructors can be garbage collected delete existingConstructor._childConstructors; } else { base._childConstructors.push( constructor ); } $.widget.bridge( name, constructor ); return constructor; }; $.widget.extend = function( target ) { var input = widget_slice.call( arguments, 1 ), inputIndex = 0, inputLength = input.length, key, value; for ( ; inputIndex < inputLength; inputIndex++ ) { for ( key in input[ inputIndex ] ) { value = input[ inputIndex ][ key ]; if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { // Clone objects if ( $.isPlainObject( value ) ) { target[ key ] = $.isPlainObject( target[ key ] ) ? $.widget.extend( {}, target[ key ], value ) : // Don't extend strings, arrays, etc. with objects $.widget.extend( {}, value ); // Copy everything else by reference } else { target[ key ] = value; } } } } return target; }; $.widget.bridge = function( name, object ) { var fullName = object.prototype.widgetFullName || name; $.fn[ name ] = function( options ) { var isMethodCall = typeof options === "string", args = widget_slice.call( arguments, 1 ), returnValue = this; if ( isMethodCall ) { this.each(function() { var methodValue, instance = $.data( this, fullName ); if ( options === "instance" ) { returnValue = instance; return false; } if ( !instance ) { return $.error( "cannot call methods on " + name + " prior to initialization; " + "attempted to call method '" + options + "'" ); } if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { return $.error( "no such method '" + options + "' for " + name + " widget instance" ); } methodValue = instance[ options ].apply( instance, args ); if ( methodValue !== instance && methodValue !== undefined ) { returnValue = methodValue && methodValue.jquery ? returnValue.pushStack( methodValue.get() ) : methodValue; return false; } }); } else { // Allow multiple hashes to be passed on init if ( args.length ) { options = $.widget.extend.apply( null, [ options ].concat(args) ); } this.each(function() { var instance = $.data( this, fullName ); if ( instance ) { instance.option( options || {} ); if ( instance._init ) { instance._init(); } } else { $.data( this, fullName, new object( options, this ) ); } }); } return returnValue; }; }; $.Widget = function( /* options, element */ ) {}; $.Widget._childConstructors = []; $.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", defaultElement: "<div>", options: { disabled: false, // callbacks create: null }, _createWidget: function( options, element ) { element = $( element || this.defaultElement || this )[ 0 ]; this.element = $( element ); this.uuid = widget_uuid++; this.eventNamespace = "." + this.widgetName + this.uuid; this.bindings = $(); this.hoverable = $(); this.focusable = $(); if ( element !== this ) { $.data( element, this.widgetFullName, this ); this._on( true, this.element, { remove: function( event ) { if ( event.target === element ) { this.destroy(); } } }); this.document = $( element.style ? // element within the document element.ownerDocument : // element is window or document element.document || element ); this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); } this.options = $.widget.extend( {}, this.options, this._getCreateOptions(), options ); this._create(); this._trigger( "create", null, this._getCreateEventData() ); this._init(); }, _getCreateOptions: $.noop, _getCreateEventData: $.noop, _create: $.noop, _init: $.noop, destroy: function() { this._destroy(); // we can probably remove the unbind calls in 2.0 // all event bindings should go through this._on() this.element .unbind( this.eventNamespace ) .removeData( this.widgetFullName ) // support: jquery <1.6.3 // http://bugs.jquery.com/ticket/9413 .removeData( $.camelCase( this.widgetFullName ) ); this.widget() .unbind( this.eventNamespace ) .removeAttr( "aria-disabled" ) .removeClass( this.widgetFullName + "-disabled " + "ui-state-disabled" ); // clean up events and states this.bindings.unbind( this.eventNamespace ); this.hoverable.removeClass( "ui-state-hover" ); this.focusable.removeClass( "ui-state-focus" ); }, _destroy: $.noop, widget: function() { return this.element; }, option: function( key, value ) { var options = key, parts, curOption, i; if ( arguments.length === 0 ) { // don't return a reference to the internal hash return $.widget.extend( {}, this.options ); } if ( typeof key === "string" ) { // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } options = {}; parts = key.split( "." ); key = parts.shift(); if ( parts.length ) { curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); for ( i = 0; i < parts.length - 1; i++ ) { curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; curOption = curOption[ parts[ i ] ]; } key = parts.pop(); if ( arguments.length === 1 ) { return curOption[ key ] === undefined ? null : curOption[ key ]; } curOption[ key ] = value; } else { if ( arguments.length === 1 ) { return this.options[ key ] === undefined ? null : this.options[ key ]; } options[ key ] = value; } } this._setOptions( options ); return this; }, _setOptions: function( options ) { var key; for ( key in options ) { this._setOption( key, options[ key ] ); } return this; }, _setOption: function( key, value ) { this.options[ key ] = value; if ( key === "disabled" ) { this.widget() .toggleClass( this.widgetFullName + "-disabled", !!value ); // If the widget is becoming disabled, then nothing is interactive if ( value ) { this.hoverable.removeClass( "ui-state-hover" ); this.focusable.removeClass( "ui-state-focus" ); } } return this; }, enable: function() { return this._setOptions({ disabled: false }); }, disable: function() { return this._setOptions({ disabled: true }); }, _on: function( suppressDisabledCheck, element, handlers ) { var delegateElement, instance = this; // no suppressDisabledCheck flag, shuffle arguments if ( typeof suppressDisabledCheck !== "boolean" ) { handlers = element; element = suppressDisabledCheck; suppressDisabledCheck = false; } // no element argument, shuffle and use this.element if ( !handlers ) { handlers = element; element = this.element; delegateElement = this.widget(); } else { element = delegateElement = $( element ); this.bindings = this.bindings.add( element ); } $.each( handlers, function( event, handler ) { function handlerProxy() { // allow widgets to customize the disabled handling // - disabled as an array instead of boolean // - disabled class as method for disabling individual parts if ( !suppressDisabledCheck && ( instance.options.disabled === true || $( this ).hasClass( "ui-state-disabled" ) ) ) { return; } return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } // copy the guid so direct unbinding works if ( typeof handler !== "string" ) { handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; } var match = event.match( /^([\w:-]*)\s*(.*)$/ ), eventName = match[1] + instance.eventNamespace, selector = match[2]; if ( selector ) { delegateElement.delegate( selector, eventName, handlerProxy ); } else { element.bind( eventName, handlerProxy ); } }); }, _off: function( element, eventName ) { eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; element.unbind( eventName ).undelegate( eventName ); // Clear the stack to avoid memory leaks (#10056) this.bindings = $( this.bindings.not( element ).get() ); this.focusable = $( this.focusable.not( element ).get() ); this.hoverable = $( this.hoverable.not( element ).get() ); }, _delay: function( handler, delay ) { function handlerProxy() { return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } var instance = this; return setTimeout( handlerProxy, delay || 0 ); }, _hoverable: function( element ) { this.hoverable = this.hoverable.add( element ); this._on( element, { mouseenter: function( event ) { $( event.currentTarget ).addClass( "ui-state-hover" ); }, mouseleave: function( event ) { $( event.currentTarget ).removeClass( "ui-state-hover" ); } }); }, _focusable: function( element ) { this.focusable = this.focusable.add( element ); this._on( element, { focusin: function( event ) { $( event.currentTarget ).addClass( "ui-state-focus" ); }, focusout: function( event ) { $( event.currentTarget ).removeClass( "ui-state-focus" ); } }); }, _trigger: function( type, event, data ) { var prop, orig, callback = this.options[ type ]; data = data || {}; event = $.Event( event ); event.type = ( type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type ).toLowerCase(); // the original event may come from any element // so we need to reset the target on the new event event.target = this.element[ 0 ]; // copy original event properties over to the new event orig = event.originalEvent; if ( orig ) { for ( prop in orig ) { if ( !( prop in event ) ) { event[ prop ] = orig[ prop ]; } } } this.element.trigger( event, data ); return !( $.isFunction( callback ) && callback.apply( this.element[0], [ event ].concat( data ) ) === false || event.isDefaultPrevented() ); } }; $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { if ( typeof options === "string" ) { options = { effect: options }; } var hasOptions, effectName = !options ? method : options === true || typeof options === "number" ? defaultEffect : options.effect || defaultEffect; options = options || {}; if ( typeof options === "number" ) { options = { duration: options }; } hasOptions = !$.isEmptyObject( options ); options.complete = callback; if ( options.delay ) { element.delay( options.delay ); } if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { element[ method ]( options ); } else if ( effectName !== method && element[ effectName ] ) { element[ effectName ]( options.duration, options.easing, callback ); } else { element.queue(function( next ) { $( this )[ method ](); if ( callback ) { callback.call( element[ 0 ] ); } next(); }); } }; }); var widget = $.widget; /*! * jQuery UI Mouse 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/mouse/ */ var mouseHandled = false; $( document ).mouseup( function() { mouseHandled = false; }); var mouse = $.widget("ui.mouse", { version: "1.11.4", options: { cancel: "input,textarea,button,select,option", distance: 1, delay: 0 }, _mouseInit: function() { var that = this; this.element .bind("mousedown." + this.widgetName, function(event) { return that._mouseDown(event); }) .bind("click." + this.widgetName, function(event) { if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { $.removeData(event.target, that.widgetName + ".preventClickEvent"); event.stopImmediatePropagation(); return false; } }); this.started = false; }, // TODO: make sure destroying one instance of mouse doesn't mess with // other instances of mouse _mouseDestroy: function() { this.element.unbind("." + this.widgetName); if ( this._mouseMoveDelegate ) { this.document .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate) .unbind("mouseup." + this.widgetName, this._mouseUpDelegate); } }, _mouseDown: function(event) { // don't let more than one widget handle mouseStart if ( mouseHandled ) { return; } this._mouseMoved = false; // we may have missed mouseup (out of window) (this._mouseStarted && this._mouseUp(event)); this._mouseDownEvent = event; var that = this, btnIsLeft = (event.which === 1), // event.target.nodeName works around a bug in IE 8 with // disabled inputs (#7620) elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { return true; } this.mouseDelayMet = !this.options.delay; if (!this.mouseDelayMet) { this._mouseDelayTimer = setTimeout(function() { that.mouseDelayMet = true; }, this.options.delay); } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(event) !== false); if (!this._mouseStarted) { event.preventDefault(); return true; } } // Click event may never have fired (Gecko & Opera) if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { $.removeData(event.target, this.widgetName + ".preventClickEvent"); } // these delegates are required to keep context this._mouseMoveDelegate = function(event) { return that._mouseMove(event); }; this._mouseUpDelegate = function(event) { return that._mouseUp(event); }; this.document .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) .bind( "mouseup." + this.widgetName, this._mouseUpDelegate ); event.preventDefault(); mouseHandled = true; return true; }, _mouseMove: function(event) { // Only check for mouseups outside the document if you've moved inside the document // at least once. This prevents the firing of mouseup in the case of IE<9, which will // fire a mousemove event if content is placed under the cursor. See #7778 // Support: IE <9 if ( this._mouseMoved ) { // IE mouseup check - mouseup happened when mouse was out of window if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { return this._mouseUp(event); // Iframe mouseup check - mouseup occurred in another document } else if ( !event.which ) { return this._mouseUp( event ); } } if ( event.which || event.button ) { this._mouseMoved = true; } if (this._mouseStarted) { this._mouseDrag(event); return event.preventDefault(); } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event) !== false); (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); } return !this._mouseStarted; }, _mouseUp: function(event) { this.document .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) .unbind( "mouseup." + this.widgetName, this._mouseUpDelegate ); if (this._mouseStarted) { this._mouseStarted = false; if (event.target === this._mouseDownEvent.target) { $.data(event.target, this.widgetName + ".preventClickEvent", true); } this._mouseStop(event); } mouseHandled = false; return false; }, _mouseDistanceMet: function(event) { return (Math.max( Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY) ) >= this.options.distance ); }, _mouseDelayMet: function(/* event */) { return this.mouseDelayMet; }, // These are placeholder methods, to be overriden by extending plugin _mouseStart: function(/* event */) {}, _mouseDrag: function(/* event */) {}, _mouseStop: function(/* event */) {}, _mouseCapture: function(/* event */) { return true; } }); /*! * jQuery UI Position 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/position/ */ (function() { $.ui = $.ui || {}; var cachedScrollbarWidth, supportsOffsetFractions, max = Math.max, abs = Math.abs, round = Math.round, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.position; function getOffsets( offsets, width, height ) { return [ parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) ]; } function parseCss( element, property ) { return parseInt( $.css( element, property ), 10 ) || 0; } function getDimensions( elem ) { var raw = elem[0]; if ( raw.nodeType === 9 ) { return { width: elem.width(), height: elem.height(), offset: { top: 0, left: 0 } }; } if ( $.isWindow( raw ) ) { return { width: elem.width(), height: elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() } }; } if ( raw.preventDefault ) { return { width: 0, height: 0, offset: { top: raw.pageY, left: raw.pageX } }; } return { width: elem.outerWidth(), height: elem.outerHeight(), offset: elem.offset() }; } $.position = { scrollbarWidth: function() { if ( cachedScrollbarWidth !== undefined ) { return cachedScrollbarWidth; } var w1, w2, div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ), innerDiv = div.children()[0]; $( "body" ).append( div ); w1 = innerDiv.offsetWidth; div.css( "overflow", "scroll" ); w2 = innerDiv.offsetWidth; if ( w1 === w2 ) { w2 = div[0].clientWidth; } div.remove(); return (cachedScrollbarWidth = w1 - w2); }, getScrollInfo: function( within ) { var overflowX = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-x" ), overflowY = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-y" ), hasOverflowX = overflowX === "scroll" || ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), hasOverflowY = overflowY === "scroll" || ( overflowY === "auto" && within.height < within.element[0].scrollHeight ); return { width: hasOverflowY ? $.position.scrollbarWidth() : 0, height: hasOverflowX ? $.position.scrollbarWidth() : 0 }; }, getWithinInfo: function( element ) { var withinElement = $( element || window ), isWindow = $.isWindow( withinElement[0] ), isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9; return { element: withinElement, isWindow: isWindow, isDocument: isDocument, offset: withinElement.offset() || { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), // support: jQuery 1.6.x // jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(), height: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight() }; } }; $.fn.position = function( options ) { if ( !options || !options.of ) { return _position.apply( this, arguments ); } // make a copy, we don't want to modify arguments options = $.extend( {}, options ); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target = $( options.of ), within = $.position.getWithinInfo( options.within ), scrollInfo = $.position.getScrollInfo( within ), collision = ( options.collision || "flip" ).split( " " ), offsets = {}; dimensions = getDimensions( target ); if ( target[0].preventDefault ) { // force left top to allow flipping options.at = "left top"; } targetWidth = dimensions.width; targetHeight = dimensions.height; targetOffset = dimensions.offset; // clone to reuse original targetOffset later basePosition = $.extend( {}, targetOffset ); // force my and at to have valid horizontal and vertical positions // if a value is missing or invalid, it will be converted to center $.each( [ "my", "at" ], function() { var pos = ( options[ this ] || "" ).split( " " ), horizontalOffset, verticalOffset; if ( pos.length === 1) { pos = rhorizontal.test( pos[ 0 ] ) ? pos.concat( [ "center" ] ) : rvertical.test( pos[ 0 ] ) ? [ "center" ].concat( pos ) : [ "center", "center" ]; } pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; // calculate offsets horizontalOffset = roffset.exec( pos[ 0 ] ); verticalOffset = roffset.exec( pos[ 1 ] ); offsets[ this ] = [ horizontalOffset ? horizontalOffset[ 0 ] : 0, verticalOffset ? verticalOffset[ 0 ] : 0 ]; // reduce to just the positions without the offsets options[ this ] = [ rposition.exec( pos[ 0 ] )[ 0 ], rposition.exec( pos[ 1 ] )[ 0 ] ]; }); // normalize collision option if ( collision.length === 1 ) { collision[ 1 ] = collision[ 0 ]; } if ( options.at[ 0 ] === "right" ) { basePosition.left += targetWidth; } else if ( options.at[ 0 ] === "center" ) { basePosition.left += targetWidth / 2; } if ( options.at[ 1 ] === "bottom" ) { basePosition.top += targetHeight; } else if ( options.at[ 1 ] === "center" ) { basePosition.top += targetHeight / 2; } atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); basePosition.left += atOffset[ 0 ]; basePosition.top += atOffset[ 1 ]; return this.each(function() { var collisionPosition, using, elem = $( this ), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss( this, "marginLeft" ), marginTop = parseCss( this, "marginTop" ), collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, position = $.extend( {}, basePosition ), myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); if ( options.my[ 0 ] === "right" ) { position.left -= elemWidth; } else if ( options.my[ 0 ] === "center" ) { position.left -= elemWidth / 2; } if ( options.my[ 1 ] === "bottom" ) { position.top -= elemHeight; } else if ( options.my[ 1 ] === "center" ) { position.top -= elemHeight / 2; } position.left += myOffset[ 0 ]; position.top += myOffset[ 1 ]; // if the browser doesn't support fractions, then round for consistent results if ( !supportsOffsetFractions ) { position.left = round( position.left ); position.top = round( position.top ); } collisionPosition = { marginLeft: marginLeft, marginTop: marginTop }; $.each( [ "left", "top" ], function( i, dir ) { if ( $.ui.position[ collision[ i ] ] ) { $.ui.position[ collision[ i ] ][ dir ]( position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], my: options.my, at: options.at, within: within, elem: elem }); } }); if ( options.using ) { // adds feedback as second argument to using callback, if present using = function( props ) { var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = { target: { element: target, left: targetOffset.left, top: targetOffset.top, width: targetWidth, height: targetHeight }, element: { element: elem, left: position.left, top: position.top, width: elemWidth, height: elemHeight }, horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" }; if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { feedback.horizontal = "center"; } if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { feedback.vertical = "middle"; } if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { feedback.important = "horizontal"; } else { feedback.important = "vertical"; } options.using.call( this, props, feedback ); }; } elem.offset( $.extend( position, { using: using } ) ); }); }; $.ui.position = { fit: { left: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; // element is wider than within if ( data.collisionWidth > outerWidth ) { // element is initially over the left side of within if ( overLeft > 0 && overRight <= 0 ) { newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; position.left += overLeft - newOverRight; // element is initially over right side of within } else if ( overRight > 0 && overLeft <= 0 ) { position.left = withinOffset; // element is initially over both left and right sides of within } else { if ( overLeft > overRight ) { position.left = withinOffset + outerWidth - data.collisionWidth; } else { position.left = withinOffset; } } // too far left -> align with left edge } else if ( overLeft > 0 ) { position.left += overLeft; // too far right -> align with right edge } else if ( overRight > 0 ) { position.left -= overRight; // adjust based on position and margin } else { position.left = max( position.left - collisionPosLeft, position.left ); } }, top: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; // element is taller than within if ( data.collisionHeight > outerHeight ) { // element is initially over the top of within if ( overTop > 0 && overBottom <= 0 ) { newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; position.top += overTop - newOverBottom; // element is initially over bottom of within } else if ( overBottom > 0 && overTop <= 0 ) { position.top = withinOffset; // element is initially over both top and bottom of within } else { if ( overTop > overBottom ) { position.top = withinOffset + outerHeight - data.collisionHeight; } else { position.top = withinOffset; } } // too far up -> align with top } else if ( overTop > 0 ) { position.top += overTop; // too far down -> align with bottom edge } else if ( overBottom > 0 ) { position.top -= overBottom; // adjust based on position and margin } else { position.top = max( position.top - collisionPosTop, position.top ); } } }, flip: { left: function( position, data ) { var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[ 0 ] === "left" ? -data.elemWidth : data.my[ 0 ] === "right" ? data.elemWidth : 0, atOffset = data.at[ 0 ] === "left" ? data.targetWidth : data.at[ 0 ] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[ 0 ], newOverRight, newOverLeft; if ( overLeft < 0 ) { newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { position.left += myOffset + atOffset + offset; } } else if ( overRight > 0 ) { newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { position.left += myOffset + atOffset + offset; } } }, top: function( position, data ) { var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[ 1 ] === "top", myOffset = top ? -data.elemHeight : data.my[ 1 ] === "bottom" ? data.elemHeight : 0, atOffset = data.at[ 1 ] === "top" ? data.targetHeight : data.at[ 1 ] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[ 1 ], newOverTop, newOverBottom; if ( overTop < 0 ) { newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { position.top += myOffset + atOffset + offset; } } else if ( overBottom > 0 ) { newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { position.top += myOffset + atOffset + offset; } } } }, flipfit: { left: function() { $.ui.position.flip.left.apply( this, arguments ); $.ui.position.fit.left.apply( this, arguments ); }, top: function() { $.ui.position.flip.top.apply( this, arguments ); $.ui.position.fit.top.apply( this, arguments ); } } }; // fraction support test (function() { var testElement, testElementParent, testElementStyle, offsetLeft, i, body = document.getElementsByTagName( "body" )[ 0 ], div = document.createElement( "div" ); //Create a "fake body" for testing based on method used in jQuery.support testElement = document.createElement( body ? "div" : "body" ); testElementStyle = { visibility: "hidden", width: 0, height: 0, border: 0, margin: 0, background: "none" }; if ( body ) { $.extend( testElementStyle, { position: "absolute", left: "-1000px", top: "-1000px" }); } for ( i in testElementStyle ) { testElement.style[ i ] = testElementStyle[ i ]; } testElement.appendChild( div ); testElementParent = body || document.documentElement; testElementParent.insertBefore( testElement, testElementParent.firstChild ); div.style.cssText = "position: absolute; left: 10.7432222px;"; offsetLeft = $( div ).offset().left; supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11; testElement.innerHTML = ""; testElementParent.removeChild( testElement ); })(); })(); var position = $.ui.position; /*! * jQuery UI Accordion 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/accordion/ */ var accordion = $.widget( "ui.accordion", { version: "1.11.4", options: { active: 0, animate: {}, collapsible: false, event: "click", header: "> li > :first-child,> :not(li):even", heightStyle: "auto", icons: { activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e" }, // callbacks activate: null, beforeActivate: null }, hideProps: { borderTopWidth: "hide", borderBottomWidth: "hide", paddingTop: "hide", paddingBottom: "hide", height: "hide" }, showProps: { borderTopWidth: "show", borderBottomWidth: "show", paddingTop: "show", paddingBottom: "show", height: "show" }, _create: function() { var options = this.options; this.prevShow = this.prevHide = $(); this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) // ARIA .attr( "role", "tablist" ); // don't allow collapsible: false and active: false / null if ( !options.collapsible && (options.active === false || options.active == null) ) { options.active = 0; } this._processPanels(); // handle negative values if ( options.active < 0 ) { options.active += this.headers.length; } this._refresh(); }, _getCreateEventData: function() { return { header: this.active, panel: !this.active.length ? $() : this.active.next() }; }, _createIcons: function() { var icons = this.options.icons; if ( icons ) { $( "<span>" ) .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) .prependTo( this.headers ); this.active.children( ".ui-accordion-header-icon" ) .removeClass( icons.header ) .addClass( icons.activeHeader ); this.headers.addClass( "ui-accordion-icons" ); } }, _destroyIcons: function() { this.headers .removeClass( "ui-accordion-icons" ) .children( ".ui-accordion-header-icon" ) .remove(); }, _destroy: function() { var contents; // clean up main element this.element .removeClass( "ui-accordion ui-widget ui-helper-reset" ) .removeAttr( "role" ); // clean up headers this.headers .removeClass( "ui-accordion-header ui-accordion-header-active ui-state-default " + "ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) .removeAttr( "role" ) .removeAttr( "aria-expanded" ) .removeAttr( "aria-selected" ) .removeAttr( "aria-controls" ) .removeAttr( "tabIndex" ) .removeUniqueId(); this._destroyIcons(); // clean up content panels contents = this.headers.next() .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom " + "ui-accordion-content ui-accordion-content-active ui-state-disabled" ) .css( "display", "" ) .removeAttr( "role" ) .removeAttr( "aria-hidden" ) .removeAttr( "aria-labelledby" ) .removeUniqueId(); if ( this.options.heightStyle !== "content" ) { contents.css( "height", "" ); } }, _setOption: function( key, value ) { if ( key === "active" ) { // _activate() will handle invalid values and update this.options this._activate( value ); return; } if ( key === "event" ) { if ( this.options.event ) { this._off( this.headers, this.options.event ); } this._setupEvents( value ); } this._super( key, value ); // setting collapsible: false while collapsed; open first panel if ( key === "collapsible" && !value && this.options.active === false ) { this._activate( 0 ); } if ( key === "icons" ) { this._destroyIcons(); if ( value ) { this._createIcons(); } } // #5332 - opacity doesn't cascade to positioned elements in IE // so we need to add the disabled class to the headers and panels if ( key === "disabled" ) { this.element .toggleClass( "ui-state-disabled", !!value ) .attr( "aria-disabled", value ); this.headers.add( this.headers.next() ) .toggleClass( "ui-state-disabled", !!value ); } }, _keydown: function( event ) { if ( event.altKey || event.ctrlKey ) { return; } var keyCode = $.ui.keyCode, length = this.headers.length, currentIndex = this.headers.index( event.target ), toFocus = false; switch ( event.keyCode ) { case keyCode.RIGHT: case keyCode.DOWN: toFocus = this.headers[ ( currentIndex + 1 ) % length ]; break; case keyCode.LEFT: case keyCode.UP: toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; break; case keyCode.SPACE: case keyCode.ENTER: this._eventHandler( event ); break; case keyCode.HOME: toFocus = this.headers[ 0 ]; break; case keyCode.END: toFocus = this.headers[ length - 1 ]; break; } if ( toFocus ) { $( event.target ).attr( "tabIndex", -1 ); $( toFocus ).attr( "tabIndex", 0 ); toFocus.focus(); event.preventDefault(); } }, _panelKeyDown: function( event ) { if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { $( event.currentTarget ).prev().focus(); } }, refresh: function() { var options = this.options; this._processPanels(); // was collapsed or no panel if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { options.active = false; this.active = $(); // active false only when collapsible is true } else if ( options.active === false ) { this._activate( 0 ); // was active, but active panel is gone } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { // all remaining panel are disabled if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { options.active = false; this.active = $(); // activate previous panel } else { this._activate( Math.max( 0, options.active - 1 ) ); } // was active, active panel still exists } else { // make sure active index is correct options.active = this.headers.index( this.active ); } this._destroyIcons(); this._refresh(); }, _processPanels: function() { var prevHeaders = this.headers, prevPanels = this.panels; this.headers = this.element.find( this.options.header ) .addClass( "ui-accordion-header ui-state-default ui-corner-all" ); this.panels = this.headers.next() .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) .filter( ":not(.ui-accordion-content-active)" ) .hide(); // Avoid memory leaks (#10056) if ( prevPanels ) { this._off( prevHeaders.not( this.headers ) ); this._off( prevPanels.not( this.panels ) ); } }, _refresh: function() { var maxHeight, options = this.options, heightStyle = options.heightStyle, parent = this.element.parent(); this.active = this._findActive( options.active ) .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) .removeClass( "ui-corner-all" ); this.active.next() .addClass( "ui-accordion-content-active" ) .show(); this.headers .attr( "role", "tab" ) .each(function() { var header = $( this ), headerId = header.uniqueId().attr( "id" ), panel = header.next(), panelId = panel.uniqueId().attr( "id" ); header.attr( "aria-controls", panelId ); panel.attr( "aria-labelledby", headerId ); }) .next() .attr( "role", "tabpanel" ); this.headers .not( this.active ) .attr({ "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 }) .next() .attr({ "aria-hidden": "true" }) .hide(); // make sure at least one header is in the tab order if ( !this.active.length ) { this.headers.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active.attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }) .next() .attr({ "aria-hidden": "false" }); } this._createIcons(); this._setupEvents( options.event ); if ( heightStyle === "fill" ) { maxHeight = parent.height(); this.element.siblings( ":visible" ).each(function() { var elem = $( this ), position = elem.css( "position" ); if ( position === "absolute" || position === "fixed" ) { return; } maxHeight -= elem.outerHeight( true ); }); this.headers.each(function() { maxHeight -= $( this ).outerHeight( true ); }); this.headers.next() .each(function() { $( this ).height( Math.max( 0, maxHeight - $( this ).innerHeight() + $( this ).height() ) ); }) .css( "overflow", "auto" ); } else if ( heightStyle === "auto" ) { maxHeight = 0; this.headers.next() .each(function() { maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); }) .height( maxHeight ); } }, _activate: function( index ) { var active = this._findActive( index )[ 0 ]; // trying to activate the already active panel if ( active === this.active[ 0 ] ) { return; } // trying to collapse, simulate a click on the currently active header active = active || this.active[ 0 ]; this._eventHandler({ target: active, currentTarget: active, preventDefault: $.noop }); }, _findActive: function( selector ) { return typeof selector === "number" ? this.headers.eq( selector ) : $(); }, _setupEvents: function( event ) { var events = { keydown: "_keydown" }; if ( event ) { $.each( event.split( " " ), function( index, eventName ) { events[ eventName ] = "_eventHandler"; }); } this._off( this.headers.add( this.headers.next() ) ); this._on( this.headers, events ); this._on( this.headers.next(), { keydown: "_panelKeyDown" }); this._hoverable( this.headers ); this._focusable( this.headers ); }, _eventHandler: function( event ) { var options = this.options, active = this.active, clicked = $( event.currentTarget ), clickedIsActive = clicked[ 0 ] === active[ 0 ], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : clicked.next(), toHide = active.next(), eventData = { oldHeader: active, oldPanel: toHide, newHeader: collapsing ? $() : clicked, newPanel: toShow }; event.preventDefault(); if ( // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { return; } options.active = collapsing ? false : this.headers.index( clicked ); // when the call to ._toggle() comes after the class changes // it causes a very odd bug in IE 8 (see #6720) this.active = clickedIsActive ? $() : clicked; this._toggle( eventData ); // switch classes // corner classes on the previously active header stay after the animation active.removeClass( "ui-accordion-header-active ui-state-active" ); if ( options.icons ) { active.children( ".ui-accordion-header-icon" ) .removeClass( options.icons.activeHeader ) .addClass( options.icons.header ); } if ( !clickedIsActive ) { clicked .removeClass( "ui-corner-all" ) .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); if ( options.icons ) { clicked.children( ".ui-accordion-header-icon" ) .removeClass( options.icons.header ) .addClass( options.icons.activeHeader ); } clicked .next() .addClass( "ui-accordion-content-active" ); } }, _toggle: function( data ) { var toShow = data.newPanel, toHide = this.prevShow.length ? this.prevShow : data.oldPanel; // handle activating a panel during the animation for another activation this.prevShow.add( this.prevHide ).stop( true, true ); this.prevShow = toShow; this.prevHide = toHide; if ( this.options.animate ) { this._animate( toShow, toHide, data ); } else { toHide.hide(); toShow.show(); this._toggleComplete( data ); } toHide.attr({ "aria-hidden": "true" }); toHide.prev().attr({ "aria-selected": "false", "aria-expanded": "false" }); // if we're switching panels, remove the old header from the tab order // if we're opening from collapsed state, remove the previous header from the tab order // if we're collapsing, then keep the collapsing header in the tab order if ( toShow.length && toHide.length ) { toHide.prev().attr({ "tabIndex": -1, "aria-expanded": "false" }); } else if ( toShow.length ) { this.headers.filter(function() { return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; }) .attr( "tabIndex", -1 ); } toShow .attr( "aria-hidden", "false" ) .prev() .attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }); }, _animate: function( toShow, toHide, data ) { var total, easing, duration, that = this, adjust = 0, boxSizing = toShow.css( "box-sizing" ), down = toShow.length && ( !toHide.length || ( toShow.index() < toHide.index() ) ), animate = this.options.animate || {}, options = down && animate.down || animate, complete = function() { that._toggleComplete( data ); }; if ( typeof options === "number" ) { duration = options; } if ( typeof options === "string" ) { easing = options; } // fall back from options to animation in case of partial down settings easing = easing || options.easing || animate.easing; duration = duration || options.duration || animate.duration; if ( !toHide.length ) { return toShow.animate( this.showProps, duration, easing, complete ); } if ( !toShow.length ) { return toHide.animate( this.hideProps, duration, easing, complete ); } total = toShow.show().outerHeight(); toHide.animate( this.hideProps, { duration: duration, easing: easing, step: function( now, fx ) { fx.now = Math.round( now ); } }); toShow .hide() .animate( this.showProps, { duration: duration, easing: easing, complete: complete, step: function( now, fx ) { fx.now = Math.round( now ); if ( fx.prop !== "height" ) { if ( boxSizing === "content-box" ) { adjust += fx.now; } } else if ( that.options.heightStyle !== "content" ) { fx.now = Math.round( total - toHide.outerHeight() - adjust ); adjust = 0; } } }); }, _toggleComplete: function( data ) { var toHide = data.oldPanel; toHide .removeClass( "ui-accordion-content-active" ) .prev() .removeClass( "ui-corner-top" ) .addClass( "ui-corner-all" ); // Work around for rendering bug in IE (#5421) if ( toHide.length ) { toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; } this._trigger( "activate", null, data ); } }); /*! * jQuery UI Menu 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/menu/ */ var menu = $.widget( "ui.menu", { version: "1.11.4", defaultElement: "<ul>", delay: 300, options: { icons: { submenu: "ui-icon-carat-1-e" }, items: "> *", menus: "ul", position: { my: "left-1 top", at: "right top" }, role: "menu", // callbacks blur: null, focus: null, select: null }, _create: function() { this.activeMenu = this.element; // Flag used to prevent firing of the click handler // as the event bubbles up through nested menus this.mouseHandled = false; this.element .uniqueId() .addClass( "ui-menu ui-widget ui-widget-content" ) .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) .attr({ role: this.options.role, tabIndex: 0 }); if ( this.options.disabled ) { this.element .addClass( "ui-state-disabled" ) .attr( "aria-disabled", "true" ); } this._on({ // Prevent focus from sticking to links inside menu after clicking // them (focus should always stay on UL during navigation). "mousedown .ui-menu-item": function( event ) { event.preventDefault(); }, "click .ui-menu-item": function( event ) { var target = $( event.target ); if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { this.select( event ); // Only set the mouseHandled flag if the event will bubble, see #9469. if ( !event.isPropagationStopped() ) { this.mouseHandled = true; } // Open submenu on click if ( target.has( ".ui-menu" ).length ) { this.expand( event ); } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) { // Redirect focus to the menu this.element.trigger( "focus", [ true ] ); // If the active item is on the top level, let it stay active. // Otherwise, blur the active item since it is no longer visible. if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { clearTimeout( this.timer ); } } } }, "mouseenter .ui-menu-item": function( event ) { // Ignore mouse events while typeahead is active, see #10458. // Prevents focusing the wrong item when typeahead causes a scroll while the mouse // is over an item in the menu if ( this.previousFilter ) { return; } var target = $( event.currentTarget ); // Remove ui-state-active class from siblings of the newly focused menu item // to avoid a jump caused by adjacent elements both having a class with a border target.siblings( ".ui-state-active" ).removeClass( "ui-state-active" ); this.focus( event, target ); }, mouseleave: "collapseAll", "mouseleave .ui-menu": "collapseAll", focus: function( event, keepActiveItem ) { // If there's already an active item, keep it active // If not, activate the first item var item = this.active || this.element.find( this.options.items ).eq( 0 ); if ( !keepActiveItem ) { this.focus( event, item ); } }, blur: function( event ) { this._delay(function() { if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { this.collapseAll( event ); } }); }, keydown: "_keydown" }); this.refresh(); // Clicks outside of a menu collapse any open menus this._on( this.document, { click: function( event ) { if ( this._closeOnDocumentClick( event ) ) { this.collapseAll( event ); } // Reset the mouseHandled flag this.mouseHandled = false; } }); }, _destroy: function() { // Destroy (sub)menus this.element .removeAttr( "aria-activedescendant" ) .find( ".ui-menu" ).addBack() .removeClass( "ui-menu ui-widget ui-widget-content ui-menu-icons ui-front" ) .removeAttr( "role" ) .removeAttr( "tabIndex" ) .removeAttr( "aria-labelledby" ) .removeAttr( "aria-expanded" ) .removeAttr( "aria-hidden" ) .removeAttr( "aria-disabled" ) .removeUniqueId() .show(); // Destroy menu items this.element.find( ".ui-menu-item" ) .removeClass( "ui-menu-item" ) .removeAttr( "role" ) .removeAttr( "aria-disabled" ) .removeUniqueId() .removeClass( "ui-state-hover" ) .removeAttr( "tabIndex" ) .removeAttr( "role" ) .removeAttr( "aria-haspopup" ) .children().each( function() { var elem = $( this ); if ( elem.data( "ui-menu-submenu-carat" ) ) { elem.remove(); } }); // Destroy menu dividers this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); }, _keydown: function( event ) { var match, prev, character, skip, preventDefault = true; switch ( event.keyCode ) { case $.ui.keyCode.PAGE_UP: this.previousPage( event ); break; case $.ui.keyCode.PAGE_DOWN: this.nextPage( event ); break; case $.ui.keyCode.HOME: this._move( "first", "first", event ); break; case $.ui.keyCode.END: this._move( "last", "last", event ); break; case $.ui.keyCode.UP: this.previous( event ); break; case $.ui.keyCode.DOWN: this.next( event ); break; case $.ui.keyCode.LEFT: this.collapse( event ); break; case $.ui.keyCode.RIGHT: if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { this.expand( event ); } break; case $.ui.keyCode.ENTER: case $.ui.keyCode.SPACE: this._activate( event ); break; case $.ui.keyCode.ESCAPE: this.collapse( event ); break; default: preventDefault = false; prev = this.previousFilter || ""; character = String.fromCharCode( event.keyCode ); skip = false; clearTimeout( this.filterTimer ); if ( character === prev ) { skip = true; } else { character = prev + character; } match = this._filterMenuItems( character ); match = skip && match.index( this.active.next() ) !== -1 ? this.active.nextAll( ".ui-menu-item" ) : match; // If no matches on the current filter, reset to the last character pressed // to move down the menu to the first item that starts with that character if ( !match.length ) { character = String.fromCharCode( event.keyCode ); match = this._filterMenuItems( character ); } if ( match.length ) { this.focus( event, match ); this.previousFilter = character; this.filterTimer = this._delay(function() { delete this.previousFilter; }, 1000 ); } else { delete this.previousFilter; } } if ( preventDefault ) { event.preventDefault(); } }, _activate: function( event ) { if ( !this.active.is( ".ui-state-disabled" ) ) { if ( this.active.is( "[aria-haspopup='true']" ) ) { this.expand( event ); } else { this.select( event ); } } }, refresh: function() { var menus, items, that = this, icon = this.options.icons.submenu, submenus = this.element.find( this.options.menus ); this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ); // Initialize nested menus submenus.filter( ":not(.ui-menu)" ) .addClass( "ui-menu ui-widget ui-widget-content ui-front" ) .hide() .attr({ role: this.options.role, "aria-hidden": "true", "aria-expanded": "false" }) .each(function() { var menu = $( this ), item = menu.parent(), submenuCarat = $( "<span>" ) .addClass( "ui-menu-icon ui-icon " + icon ) .data( "ui-menu-submenu-carat", true ); item .attr( "aria-haspopup", "true" ) .prepend( submenuCarat ); menu.attr( "aria-labelledby", item.attr( "id" ) ); }); menus = submenus.add( this.element ); items = menus.find( this.options.items ); // Initialize menu-items containing spaces and/or dashes only as dividers items.not( ".ui-menu-item" ).each(function() { var item = $( this ); if ( that._isDivider( item ) ) { item.addClass( "ui-widget-content ui-menu-divider" ); } }); // Don't refresh list items that are already adapted items.not( ".ui-menu-item, .ui-menu-divider" ) .addClass( "ui-menu-item" ) .uniqueId() .attr({ tabIndex: -1, role: this._itemRole() }); // Add aria-disabled attribute to any disabled menu item items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); // If the active item has been removed, blur the menu if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { this.blur(); } }, _itemRole: function() { return { menu: "menuitem", listbox: "option" }[ this.options.role ]; }, _setOption: function( key, value ) { if ( key === "icons" ) { this.element.find( ".ui-menu-icon" ) .removeClass( this.options.icons.submenu ) .addClass( value.submenu ); } if ( key === "disabled" ) { this.element .toggleClass( "ui-state-disabled", !!value ) .attr( "aria-disabled", value ); } this._super( key, value ); }, focus: function( event, item ) { var nested, focused; this.blur( event, event && event.type === "focus" ); this._scrollIntoView( item ); this.active = item.first(); focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" ); // Only update aria-activedescendant if there's a role // otherwise we assume focus is managed elsewhere if ( this.options.role ) { this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); } // Highlight active parent menu item, if any this.active .parent() .closest( ".ui-menu-item" ) .addClass( "ui-state-active" ); if ( event && event.type === "keydown" ) { this._close(); } else { this.timer = this._delay(function() { this._close(); }, this.delay ); } nested = item.children( ".ui-menu" ); if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) { this._startOpening(nested); } this.activeMenu = item.parent(); this._trigger( "focus", event, { item: item } ); }, _scrollIntoView: function( item ) { var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; if ( this._hasScroll() ) { borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; scroll = this.activeMenu.scrollTop(); elementHeight = this.activeMenu.height(); itemHeight = item.outerHeight(); if ( offset < 0 ) { this.activeMenu.scrollTop( scroll + offset ); } else if ( offset + itemHeight > elementHeight ) { this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); } } }, blur: function( event, fromFocus ) { if ( !fromFocus ) { clearTimeout( this.timer ); } if ( !this.active ) { return; } this.active.removeClass( "ui-state-focus" ); this.active = null; this._trigger( "blur", event, { item: this.active } ); }, _startOpening: function( submenu ) { clearTimeout( this.timer ); // Don't open if already open fixes a Firefox bug that caused a .5 pixel // shift in the submenu position when mousing over the carat icon if ( submenu.attr( "aria-hidden" ) !== "true" ) { return; } this.timer = this._delay(function() { this._close(); this._open( submenu ); }, this.delay ); }, _open: function( submenu ) { var position = $.extend({ of: this.active }, this.options.position ); clearTimeout( this.timer ); this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) .hide() .attr( "aria-hidden", "true" ); submenu .show() .removeAttr( "aria-hidden" ) .attr( "aria-expanded", "true" ) .position( position ); }, collapseAll: function( event, all ) { clearTimeout( this.timer ); this.timer = this._delay(function() { // If we were passed an event, look for the submenu that contains the event var currentMenu = all ? this.element : $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway if ( !currentMenu.length ) { currentMenu = this.element; } this._close( currentMenu ); this.blur( event ); this.activeMenu = currentMenu; }, this.delay ); }, // With no arguments, closes the currently active menu - if nothing is active // it closes all menus. If passed an argument, it will search for menus BELOW _close: function( startMenu ) { if ( !startMenu ) { startMenu = this.active ? this.active.parent() : this.element; } startMenu .find( ".ui-menu" ) .hide() .attr( "aria-hidden", "true" ) .attr( "aria-expanded", "false" ) .end() .find( ".ui-state-active" ).not( ".ui-state-focus" ) .removeClass( "ui-state-active" ); }, _closeOnDocumentClick: function( event ) { return !$( event.target ).closest( ".ui-menu" ).length; }, _isDivider: function( item ) { // Match hyphen, em dash, en dash return !/[^\-\u2014\u2013\s]/.test( item.text() ); }, collapse: function( event ) { var newItem = this.active && this.active.parent().closest( ".ui-menu-item", this.element ); if ( newItem && newItem.length ) { this._close(); this.focus( event, newItem ); } }, expand: function( event ) { var newItem = this.active && this.active .children( ".ui-menu " ) .find( this.options.items ) .first(); if ( newItem && newItem.length ) { this._open( newItem.parent() ); // Delay so Firefox will not hide activedescendant change in expanding submenu from AT this._delay(function() { this.focus( event, newItem ); }); } }, next: function( event ) { this._move( "next", "first", event ); }, previous: function( event ) { this._move( "prev", "last", event ); }, isFirstItem: function() { return this.active && !this.active.prevAll( ".ui-menu-item" ).length; }, isLastItem: function() { return this.active && !this.active.nextAll( ".ui-menu-item" ).length; }, _move: function( direction, filter, event ) { var next; if ( this.active ) { if ( direction === "first" || direction === "last" ) { next = this.active [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) .eq( -1 ); } else { next = this.active [ direction + "All" ]( ".ui-menu-item" ) .eq( 0 ); } } if ( !next || !next.length || !this.active ) { next = this.activeMenu.find( this.options.items )[ filter ](); } this.focus( event, next ); }, nextPage: function( event ) { var item, base, height; if ( !this.active ) { this.next( event ); return; } if ( this.isLastItem() ) { return; } if ( this._hasScroll() ) { base = this.active.offset().top; height = this.element.height(); this.active.nextAll( ".ui-menu-item" ).each(function() { item = $( this ); return item.offset().top - base - height < 0; }); this.focus( event, item ); } else { this.focus( event, this.activeMenu.find( this.options.items ) [ !this.active ? "first" : "last" ]() ); } }, previousPage: function( event ) { var item, base, height; if ( !this.active ) { this.next( event ); return; } if ( this.isFirstItem() ) { return; } if ( this._hasScroll() ) { base = this.active.offset().top; height = this.element.height(); this.active.prevAll( ".ui-menu-item" ).each(function() { item = $( this ); return item.offset().top - base + height > 0; }); this.focus( event, item ); } else { this.focus( event, this.activeMenu.find( this.options.items ).first() ); } }, _hasScroll: function() { return this.element.outerHeight() < this.element.prop( "scrollHeight" ); }, select: function( event ) { // TODO: It should never be possible to not have an active item at this // point, but the tests don't trigger mouseenter before click. this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); var ui = { item: this.active }; if ( !this.active.has( ".ui-menu" ).length ) { this.collapseAll( event, true ); } this._trigger( "select", event, ui ); }, _filterMenuItems: function(character) { var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ), regex = new RegExp( "^" + escapedCharacter, "i" ); return this.activeMenu .find( this.options.items ) // Only match on items, not dividers or other content (#10571) .filter( ".ui-menu-item" ) .filter(function() { return regex.test( $.trim( $( this ).text() ) ); }); } }); /*! * jQuery UI Autocomplete 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/autocomplete/ */ $.widget( "ui.autocomplete", { version: "1.11.4", defaultElement: "<input>", options: { appendTo: null, autoFocus: false, delay: 300, minLength: 1, position: { my: "left top", at: "left bottom", collision: "none" }, source: null, // callbacks change: null, close: null, focus: null, open: null, response: null, search: null, select: null }, requestIndex: 0, pending: 0, _create: function() { // Some browsers only repeat keydown events, not keypress events, // so we use the suppressKeyPress flag to determine if we've already // handled the keydown event. #7269 // Unfortunately the code for & in keypress is the same as the up arrow, // so we use the suppressKeyPressRepeat flag to avoid handling keypress // events when we know the keydown event was used to modify the // search term. #7799 var suppressKeyPress, suppressKeyPressRepeat, suppressInput, nodeName = this.element[ 0 ].nodeName.toLowerCase(), isTextarea = nodeName === "textarea", isInput = nodeName === "input"; this.isMultiLine = // Textareas are always multi-line isTextarea ? true : // Inputs are always single-line, even if inside a contentEditable element // IE also treats inputs as contentEditable isInput ? false : // All other element types are determined by whether or not they're contentEditable this.element.prop( "isContentEditable" ); this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; this.isNewMenu = true; this.element .addClass( "ui-autocomplete-input" ) .attr( "autocomplete", "off" ); this._on( this.element, { keydown: function( event ) { if ( this.element.prop( "readOnly" ) ) { suppressKeyPress = true; suppressInput = true; suppressKeyPressRepeat = true; return; } suppressKeyPress = false; suppressInput = false; suppressKeyPressRepeat = false; var keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.PAGE_UP: suppressKeyPress = true; this._move( "previousPage", event ); break; case keyCode.PAGE_DOWN: suppressKeyPress = true; this._move( "nextPage", event ); break; case keyCode.UP: suppressKeyPress = true; this._keyEvent( "previous", event ); break; case keyCode.DOWN: suppressKeyPress = true; this._keyEvent( "next", event ); break; case keyCode.ENTER: // when menu is open and has focus if ( this.menu.active ) { // #6055 - Opera still allows the keypress to occur // which causes forms to submit suppressKeyPress = true; event.preventDefault(); this.menu.select( event ); } break; case keyCode.TAB: if ( this.menu.active ) { this.menu.select( event ); } break; case keyCode.ESCAPE: if ( this.menu.element.is( ":visible" ) ) { if ( !this.isMultiLine ) { this._value( this.term ); } this.close( event ); // Different browsers have different default behavior for escape // Single press can mean undo or clear // Double press in IE means clear the whole form event.preventDefault(); } break; default: suppressKeyPressRepeat = true; // search timeout should be triggered before the input value is changed this._searchTimeout( event ); break; } }, keypress: function( event ) { if ( suppressKeyPress ) { suppressKeyPress = false; if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { event.preventDefault(); } return; } if ( suppressKeyPressRepeat ) { return; } // replicate some key handlers to allow them to repeat in Firefox and Opera var keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.PAGE_UP: this._move( "previousPage", event ); break; case keyCode.PAGE_DOWN: this._move( "nextPage", event ); break; case keyCode.UP: this._keyEvent( "previous", event ); break; case keyCode.DOWN: this._keyEvent( "next", event ); break; } }, input: function( event ) { if ( suppressInput ) { suppressInput = false; event.preventDefault(); return; } this._searchTimeout( event ); }, focus: function() { this.selectedItem = null; this.previous = this._value(); }, blur: function( event ) { if ( this.cancelBlur ) { delete this.cancelBlur; return; } clearTimeout( this.searching ); this.close( event ); this._change( event ); } }); this._initSource(); this.menu = $( "<ul>" ) .addClass( "ui-autocomplete ui-front" ) .appendTo( this._appendTo() ) .menu({ // disable ARIA support, the live region takes care of that role: null }) .hide() .menu( "instance" ); this._on( this.menu.element, { mousedown: function( event ) { // prevent moving focus out of the text field event.preventDefault(); // IE doesn't prevent moving focus even with event.preventDefault() // so we set a flag to know when we should ignore the blur event this.cancelBlur = true; this._delay(function() { delete this.cancelBlur; }); // clicking on the scrollbar causes focus to shift to the body // but we can't detect a mouseup or a click immediately afterward // so we have to track the next mousedown and close the menu if // the user clicks somewhere outside of the autocomplete var menuElement = this.menu.element[ 0 ]; if ( !$( event.target ).closest( ".ui-menu-item" ).length ) { this._delay(function() { var that = this; this.document.one( "mousedown", function( event ) { if ( event.target !== that.element[ 0 ] && event.target !== menuElement && !$.contains( menuElement, event.target ) ) { that.close(); } }); }); } }, menufocus: function( event, ui ) { var label, item; // support: Firefox // Prevent accidental activation of menu items in Firefox (#7024 #9118) if ( this.isNewMenu ) { this.isNewMenu = false; if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { this.menu.blur(); this.document.one( "mousemove", function() { $( event.target ).trigger( event.originalEvent ); }); return; } } item = ui.item.data( "ui-autocomplete-item" ); if ( false !== this._trigger( "focus", event, { item: item } ) ) { // use value to match what will end up in the input, if it was a key event if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { this._value( item.value ); } } // Announce the value in the liveRegion label = ui.item.attr( "aria-label" ) || item.value; if ( label && $.trim( label ).length ) { this.liveRegion.children().hide(); $( "<div>" ).text( label ).appendTo( this.liveRegion ); } }, menuselect: function( event, ui ) { var item = ui.item.data( "ui-autocomplete-item" ), previous = this.previous; // only trigger when focus was lost (click on menu) if ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) { this.element.focus(); this.previous = previous; // #6109 - IE triggers two focus events and the second // is asynchronous, so we need to reset the previous // term synchronously and asynchronously :-( this._delay(function() { this.previous = previous; this.selectedItem = item; }); } if ( false !== this._trigger( "select", event, { item: item } ) ) { this._value( item.value ); } // reset the term after the select event // this allows custom select handling to work properly this.term = this._value(); this.close( event ); this.selectedItem = item; } }); this.liveRegion = $( "<span>", { role: "status", "aria-live": "assertive", "aria-relevant": "additions" }) .addClass( "ui-helper-hidden-accessible" ) .appendTo( this.document[ 0 ].body ); // turning off autocomplete prevents the browser from remembering the // value when navigating through history, so we re-enable autocomplete // if the page is unloaded before the widget is destroyed. #7790 this._on( this.window, { beforeunload: function() { this.element.removeAttr( "autocomplete" ); } }); }, _destroy: function() { clearTimeout( this.searching ); this.element .removeClass( "ui-autocomplete-input" ) .removeAttr( "autocomplete" ); this.menu.element.remove(); this.liveRegion.remove(); }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "source" ) { this._initSource(); } if ( key === "appendTo" ) { this.menu.element.appendTo( this._appendTo() ); } if ( key === "disabled" && value && this.xhr ) { this.xhr.abort(); } }, _appendTo: function() { var element = this.options.appendTo; if ( element ) { element = element.jquery || element.nodeType ? $( element ) : this.document.find( element ).eq( 0 ); } if ( !element || !element[ 0 ] ) { element = this.element.closest( ".ui-front" ); } if ( !element.length ) { element = this.document[ 0 ].body; } return element; }, _initSource: function() { var array, url, that = this; if ( $.isArray( this.options.source ) ) { array = this.options.source; this.source = function( request, response ) { response( $.ui.autocomplete.filter( array, request.term ) ); }; } else if ( typeof this.options.source === "string" ) { url = this.options.source; this.source = function( request, response ) { if ( that.xhr ) { that.xhr.abort(); } that.xhr = $.ajax({ url: url, data: request, dataType: "json", success: function( data ) { response( data ); }, error: function() { response([]); } }); }; } else { this.source = this.options.source; } }, _searchTimeout: function( event ) { clearTimeout( this.searching ); this.searching = this._delay(function() { // Search if the value has changed, or if the user retypes the same value (see #7434) var equalValues = this.term === this._value(), menuVisible = this.menu.element.is( ":visible" ), modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey; if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) { this.selectedItem = null; this.search( null, event ); } }, this.options.delay ); }, search: function( value, event ) { value = value != null ? value : this._value(); // always save the actual value, not the one passed as an argument this.term = this._value(); if ( value.length < this.options.minLength ) { return this.close( event ); } if ( this._trigger( "search", event ) === false ) { return; } return this._search( value ); }, _search: function( value ) { this.pending++; this.element.addClass( "ui-autocomplete-loading" ); this.cancelSearch = false; this.source( { term: value }, this._response() ); }, _response: function() { var index = ++this.requestIndex; return $.proxy(function( content ) { if ( index === this.requestIndex ) { this.__response( content ); } this.pending--; if ( !this.pending ) { this.element.removeClass( "ui-autocomplete-loading" ); } }, this ); }, __response: function( content ) { if ( content ) { content = this._normalize( content ); } this._trigger( "response", null, { content: content } ); if ( !this.options.disabled && content && content.length && !this.cancelSearch ) { this._suggest( content ); this._trigger( "open" ); } else { // use ._close() instead of .close() so we don't cancel future searches this._close(); } }, close: function( event ) { this.cancelSearch = true; this._close( event ); }, _close: function( event ) { if ( this.menu.element.is( ":visible" ) ) { this.menu.element.hide(); this.menu.blur(); this.isNewMenu = true; this._trigger( "close", event ); } }, _change: function( event ) { if ( this.previous !== this._value() ) { this._trigger( "change", event, { item: this.selectedItem } ); } }, _normalize: function( items ) { // assume all items have the right format when the first item is complete if ( items.length && items[ 0 ].label && items[ 0 ].value ) { return items; } return $.map( items, function( item ) { if ( typeof item === "string" ) { return { label: item, value: item }; } return $.extend( {}, item, { label: item.label || item.value, value: item.value || item.label }); }); }, _suggest: function( items ) { var ul = this.menu.element.empty(); this._renderMenu( ul, items ); this.isNewMenu = true; this.menu.refresh(); // size and position menu ul.show(); this._resizeMenu(); ul.position( $.extend({ of: this.element }, this.options.position ) ); if ( this.options.autoFocus ) { this.menu.next(); } }, _resizeMenu: function() { var ul = this.menu.element; ul.outerWidth( Math.max( // Firefox wraps long text (possibly a rounding bug) // so we add 1px to avoid the wrapping (#7513) ul.width( "" ).outerWidth() + 1, this.element.outerWidth() ) ); }, _renderMenu: function( ul, items ) { var that = this; $.each( items, function( index, item ) { that._renderItemData( ul, item ); }); }, _renderItemData: function( ul, item ) { return this._renderItem( ul, item ).data( "ui-autocomplete-item", item ); }, _renderItem: function( ul, item ) { return $( "<li>" ).text( item.label ).appendTo( ul ); }, _move: function( direction, event ) { if ( !this.menu.element.is( ":visible" ) ) { this.search( null, event ); return; } if ( this.menu.isFirstItem() && /^previous/.test( direction ) || this.menu.isLastItem() && /^next/.test( direction ) ) { if ( !this.isMultiLine ) { this._value( this.term ); } this.menu.blur(); return; } this.menu[ direction ]( event ); }, widget: function() { return this.menu.element; }, _value: function() { return this.valueMethod.apply( this.element, arguments ); }, _keyEvent: function( keyEvent, event ) { if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { this._move( keyEvent, event ); // prevents moving cursor to beginning/end of the text field in some browsers event.preventDefault(); } } }); $.extend( $.ui.autocomplete, { escapeRegex: function( value ) { return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); }, filter: function( array, term ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" ); return $.grep( array, function( value ) { return matcher.test( value.label || value.value || value ); }); } }); // live region extension, adding a `messages` option // NOTE: This is an experimental API. We are still investigating // a full solution for string manipulation and internationalization. $.widget( "ui.autocomplete", $.ui.autocomplete, { options: { messages: { noResults: "No search results.", results: function( amount ) { return amount + ( amount > 1 ? " results are" : " result is" ) + " available, use up and down arrow keys to navigate."; } } }, __response: function( content ) { var message; this._superApply( arguments ); if ( this.options.disabled || this.cancelSearch ) { return; } if ( content && content.length ) { message = this.options.messages.results( content.length ); } else { message = this.options.messages.noResults; } this.liveRegion.children().hide(); $( "<div>" ).text( message ).appendTo( this.liveRegion ); } }); var autocomplete = $.ui.autocomplete; /*! * jQuery UI Button 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/button/ */ var lastActive, baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only", formResetHandler = function() { var form = $( this ); setTimeout(function() { form.find( ":ui-button" ).button( "refresh" ); }, 1 ); }, radioGroup = function( radio ) { var name = radio.name, form = radio.form, radios = $( [] ); if ( name ) { name = name.replace( /'/g, "\\'" ); if ( form ) { radios = $( form ).find( "[name='" + name + "'][type=radio]" ); } else { radios = $( "[name='" + name + "'][type=radio]", radio.ownerDocument ) .filter(function() { return !this.form; }); } } return radios; }; $.widget( "ui.button", { version: "1.11.4", defaultElement: "<button>", options: { disabled: null, text: true, label: null, icons: { primary: null, secondary: null } }, _create: function() { this.element.closest( "form" ) .unbind( "reset" + this.eventNamespace ) .bind( "reset" + this.eventNamespace, formResetHandler ); if ( typeof this.options.disabled !== "boolean" ) { this.options.disabled = !!this.element.prop( "disabled" ); } else { this.element.prop( "disabled", this.options.disabled ); } this._determineButtonType(); this.hasTitle = !!this.buttonElement.attr( "title" ); var that = this, options = this.options, toggleButton = this.type === "checkbox" || this.type === "radio", activeClass = !toggleButton ? "ui-state-active" : ""; if ( options.label === null ) { options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html()); } this._hoverable( this.buttonElement ); this.buttonElement .addClass( baseClasses ) .attr( "role", "button" ) .bind( "mouseenter" + this.eventNamespace, function() { if ( options.disabled ) { return; } if ( this === lastActive ) { $( this ).addClass( "ui-state-active" ); } }) .bind( "mouseleave" + this.eventNamespace, function() { if ( options.disabled ) { return; } $( this ).removeClass( activeClass ); }) .bind( "click" + this.eventNamespace, function( event ) { if ( options.disabled ) { event.preventDefault(); event.stopImmediatePropagation(); } }); // Can't use _focusable() because the element that receives focus // and the element that gets the ui-state-focus class are different this._on({ focus: function() { this.buttonElement.addClass( "ui-state-focus" ); }, blur: function() { this.buttonElement.removeClass( "ui-state-focus" ); } }); if ( toggleButton ) { this.element.bind( "change" + this.eventNamespace, function() { that.refresh(); }); } if ( this.type === "checkbox" ) { this.buttonElement.bind( "click" + this.eventNamespace, function() { if ( options.disabled ) { return false; } }); } else if ( this.type === "radio" ) { this.buttonElement.bind( "click" + this.eventNamespace, function() { if ( options.disabled ) { return false; } $( this ).addClass( "ui-state-active" ); that.buttonElement.attr( "aria-pressed", "true" ); var radio = that.element[ 0 ]; radioGroup( radio ) .not( radio ) .map(function() { return $( this ).button( "widget" )[ 0 ]; }) .removeClass( "ui-state-active" ) .attr( "aria-pressed", "false" ); }); } else { this.buttonElement .bind( "mousedown" + this.eventNamespace, function() { if ( options.disabled ) { return false; } $( this ).addClass( "ui-state-active" ); lastActive = this; that.document.one( "mouseup", function() { lastActive = null; }); }) .bind( "mouseup" + this.eventNamespace, function() { if ( options.disabled ) { return false; } $( this ).removeClass( "ui-state-active" ); }) .bind( "keydown" + this.eventNamespace, function(event) { if ( options.disabled ) { return false; } if ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) { $( this ).addClass( "ui-state-active" ); } }) // see #8559, we bind to blur here in case the button element loses // focus between keydown and keyup, it would be left in an "active" state .bind( "keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() { $( this ).removeClass( "ui-state-active" ); }); if ( this.buttonElement.is("a") ) { this.buttonElement.keyup(function(event) { if ( event.keyCode === $.ui.keyCode.SPACE ) { // TODO pass through original event correctly (just as 2nd argument doesn't work) $( this ).click(); } }); } } this._setOption( "disabled", options.disabled ); this._resetButton(); }, _determineButtonType: function() { var ancestor, labelSelector, checked; if ( this.element.is("[type=checkbox]") ) { this.type = "checkbox"; } else if ( this.element.is("[type=radio]") ) { this.type = "radio"; } else if ( this.element.is("input") ) { this.type = "input"; } else { this.type = "button"; } if ( this.type === "checkbox" || this.type === "radio" ) { // we don't search against the document in case the element // is disconnected from the DOM ancestor = this.element.parents().last(); labelSelector = "label[for='" + this.element.attr("id") + "']"; this.buttonElement = ancestor.find( labelSelector ); if ( !this.buttonElement.length ) { ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(); this.buttonElement = ancestor.filter( labelSelector ); if ( !this.buttonElement.length ) { this.buttonElement = ancestor.find( labelSelector ); } } this.element.addClass( "ui-helper-hidden-accessible" ); checked = this.element.is( ":checked" ); if ( checked ) { this.buttonElement.addClass( "ui-state-active" ); } this.buttonElement.prop( "aria-pressed", checked ); } else { this.buttonElement = this.element; } }, widget: function() { return this.buttonElement; }, _destroy: function() { this.element .removeClass( "ui-helper-hidden-accessible" ); this.buttonElement .removeClass( baseClasses + " ui-state-active " + typeClasses ) .removeAttr( "role" ) .removeAttr( "aria-pressed" ) .html( this.buttonElement.find(".ui-button-text").html() ); if ( !this.hasTitle ) { this.buttonElement.removeAttr( "title" ); } }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "disabled" ) { this.widget().toggleClass( "ui-state-disabled", !!value ); this.element.prop( "disabled", !!value ); if ( value ) { if ( this.type === "checkbox" || this.type === "radio" ) { this.buttonElement.removeClass( "ui-state-focus" ); } else { this.buttonElement.removeClass( "ui-state-focus ui-state-active" ); } } return; } this._resetButton(); }, refresh: function() { //See #8237 & #8828 var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" ); if ( isDisabled !== this.options.disabled ) { this._setOption( "disabled", isDisabled ); } if ( this.type === "radio" ) { radioGroup( this.element[0] ).each(function() { if ( $( this ).is( ":checked" ) ) { $( this ).button( "widget" ) .addClass( "ui-state-active" ) .attr( "aria-pressed", "true" ); } else { $( this ).button( "widget" ) .removeClass( "ui-state-active" ) .attr( "aria-pressed", "false" ); } }); } else if ( this.type === "checkbox" ) { if ( this.element.is( ":checked" ) ) { this.buttonElement .addClass( "ui-state-active" ) .attr( "aria-pressed", "true" ); } else { this.buttonElement .removeClass( "ui-state-active" ) .attr( "aria-pressed", "false" ); } } }, _resetButton: function() { if ( this.type === "input" ) { if ( this.options.label ) { this.element.val( this.options.label ); } return; } var buttonElement = this.buttonElement.removeClass( typeClasses ), buttonText = $( "<span></span>", this.document[0] ) .addClass( "ui-button-text" ) .html( this.options.label ) .appendTo( buttonElement.empty() ) .text(), icons = this.options.icons, multipleIcons = icons.primary && icons.secondary, buttonClasses = []; if ( icons.primary || icons.secondary ) { if ( this.options.text ) { buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) ); } if ( icons.primary ) { buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" ); } if ( icons.secondary ) { buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" ); } if ( !this.options.text ) { buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" ); if ( !this.hasTitle ) { buttonElement.attr( "title", $.trim( buttonText ) ); } } } else { buttonClasses.push( "ui-button-text-only" ); } buttonElement.addClass( buttonClasses.join( " " ) ); } }); $.widget( "ui.buttonset", { version: "1.11.4", options: { items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)" }, _create: function() { this.element.addClass( "ui-buttonset" ); }, _init: function() { this.refresh(); }, _setOption: function( key, value ) { if ( key === "disabled" ) { this.buttons.button( "option", key, value ); } this._super( key, value ); }, refresh: function() { var rtl = this.element.css( "direction" ) === "rtl", allButtons = this.element.find( this.options.items ), existingButtons = allButtons.filter( ":ui-button" ); // Initialize new buttons allButtons.not( ":ui-button" ).button(); // Refresh existing buttons existingButtons.button( "refresh" ); this.buttons = allButtons .map(function() { return $( this ).button( "widget" )[ 0 ]; }) .removeClass( "ui-corner-all ui-corner-left ui-corner-right" ) .filter( ":first" ) .addClass( rtl ? "ui-corner-right" : "ui-corner-left" ) .end() .filter( ":last" ) .addClass( rtl ? "ui-corner-left" : "ui-corner-right" ) .end() .end(); }, _destroy: function() { this.element.removeClass( "ui-buttonset" ); this.buttons .map(function() { return $( this ).button( "widget" )[ 0 ]; }) .removeClass( "ui-corner-left ui-corner-right" ) .end() .button( "destroy" ); } }); var button = $.ui.button; /*! * jQuery UI Datepicker 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/datepicker/ */ $.extend($.ui, { datepicker: { version: "1.11.4" } }); var datepicker_instActive; function datepicker_getZindex( elem ) { var position, value; while ( elem.length && elem[ 0 ] !== document ) { // Ignore z-index if position is set to a value where z-index is ignored by the browser // This makes behavior of this function consistent across browsers // WebKit always returns auto if the element is positioned position = elem.css( "position" ); if ( position === "absolute" || position === "relative" || position === "fixed" ) { // IE returns 0 when zIndex is not specified // other browsers return a string // we ignore the case of nested elements with an explicit value of 0 // <div style="z-index: -10;"><div style="z-index: 0;"></div></div> value = parseInt( elem.css( "zIndex" ), 10 ); if ( !isNaN( value ) && value !== 0 ) { return value; } } elem = elem.parent(); } return 0; } /* Date picker manager. Use the singleton instance of this class, $.datepicker, to interact with the date picker. Settings for (groups of) date pickers are maintained in an instance object, allowing multiple different settings on the same page. */ function Datepicker() { this._curInst = null; // The current instance in use this._keyEvent = false; // If the last event was a key event this._disabledInputs = []; // List of date picker inputs that have been disabled this._datepickerShowing = false; // True if the popup picker is showing , false if not this._inDialog = false; // True if showing within a "dialog", false if not this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class this._appendClass = "ui-datepicker-append"; // The name of the append marker class this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class this.regional = []; // Available regional settings, indexed by language code this.regional[""] = { // Default regional settings closeText: "Done", // Display text for close link prevText: "Prev", // Display text for previous month link nextText: "Next", // Display text for next month link currentText: "Today", // Display text for current month link monthNames: ["January","February","March","April","May","June", "July","August","September","October","November","December"], // Names of months for drop-down and formatting monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday weekHeader: "Wk", // Column header for week of the year dateFormat: "mm/dd/yy", // See format options on parseDate firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... isRTL: false, // True if right-to-left language, false if left-to-right showMonthAfterYear: false, // True if the year select precedes month, false for month then year yearSuffix: "" // Additional text to append to the year in the month headers }; this._defaults = { // Global defaults for all the date picker instances showOn: "focus", // "focus" for popup on focus, // "button" for trigger button, or "both" for either showAnim: "fadeIn", // Name of jQuery animation for popup showOptions: {}, // Options for enhanced animations defaultDate: null, // Used when field is blank: actual date, // +/-number for offset from today, null for today appendText: "", // Display text following the input box, e.g. showing the format buttonText: "...", // Text for trigger button buttonImage: "", // URL for trigger button image buttonImageOnly: false, // True if the image appears alone, false if it appears on a button hideIfNoPrevNext: false, // True to hide next/previous month links // if not applicable, false to just disable them navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links gotoCurrent: false, // True if today link goes back to current selection instead changeMonth: false, // True if month can be selected directly, false if only prev/next changeYear: false, // True if year can be selected directly, false if only prev/next yearRange: "c-10:c+10", // Range of years to display in drop-down, // either relative to today's year (-nn:+nn), relative to currently displayed year // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) showOtherMonths: false, // True to show dates in other months, false to leave blank selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable showWeek: false, // True to show week of the year, false to not show it calculateWeek: this.iso8601Week, // How to calculate the week of the year, // takes a Date and returns the number of the week for it shortYearCutoff: "+10", // Short year values < this are in the current century, // > this are in the previous century, // string value starting with "+" for current year + value minDate: null, // The earliest selectable date, or null for no limit maxDate: null, // The latest selectable date, or null for no limit duration: "fast", // Duration of display/closure beforeShowDay: null, // Function that takes a date and returns an array with // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", // [2] = cell title (optional), e.g. $.datepicker.noWeekends beforeShow: null, // Function that takes an input field and // returns a set of custom settings for the date picker onSelect: null, // Define a callback function when a date is selected onChangeMonthYear: null, // Define a callback function when the month or year is changed onClose: null, // Define a callback function when the datepicker is closed numberOfMonths: 1, // Number of months to show at a time showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) stepMonths: 1, // Number of months to step back/forward stepBigMonths: 12, // Number of months to step back/forward for the big links altField: "", // Selector for an alternate field to store selected dates into altFormat: "", // The date format to use for the alternate field constrainInput: true, // The input is constrained by the current date format showButtonPanel: false, // True to show button panel, false to not show it autoSize: false, // True to size the input for the date format, false to leave as is disabled: false // The initial disabled state }; $.extend(this._defaults, this.regional[""]); this.regional.en = $.extend( true, {}, this.regional[ "" ]); this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en ); this.dpDiv = datepicker_bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")); } $.extend(Datepicker.prototype, { /* Class name added to elements to indicate already configured with a date picker. */ markerClassName: "hasDatepicker", //Keep track of the maximum number of rows displayed (see #7043) maxRows: 4, // TODO rename to "widget" when switching to widget factory _widgetDatepicker: function() { return this.dpDiv; }, /* Override the default settings for all instances of the date picker. * @param settings object - the new settings to use as defaults (anonymous object) * @return the manager object */ setDefaults: function(settings) { datepicker_extendRemove(this._defaults, settings || {}); return this; }, /* Attach the date picker to a jQuery selection. * @param target element - the target input field or division or span * @param settings object - the new settings to use for this date picker instance (anonymous) */ _attachDatepicker: function(target, settings) { var nodeName, inline, inst; nodeName = target.nodeName.toLowerCase(); inline = (nodeName === "div" || nodeName === "span"); if (!target.id) { this.uuid += 1; target.id = "dp" + this.uuid; } inst = this._newInst($(target), inline); inst.settings = $.extend({}, settings || {}); if (nodeName === "input") { this._connectDatepicker(target, inst); } else if (inline) { this._inlineDatepicker(target, inst); } }, /* Create a new instance object. */ _newInst: function(target, inline) { var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars return {id: id, input: target, // associated target selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection drawMonth: 0, drawYear: 0, // month being drawn inline: inline, // is datepicker inline or not dpDiv: (!inline ? this.dpDiv : // presentation div datepicker_bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")))}; }, /* Attach the date picker to an input field. */ _connectDatepicker: function(target, inst) { var input = $(target); inst.append = $([]); inst.trigger = $([]); if (input.hasClass(this.markerClassName)) { return; } this._attachments(input, inst); input.addClass(this.markerClassName).keydown(this._doKeyDown). keypress(this._doKeyPress).keyup(this._doKeyUp); this._autoSize(inst); $.data(target, "datepicker", inst); //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) if( inst.settings.disabled ) { this._disableDatepicker( target ); } }, /* Make attachments based on settings. */ _attachments: function(input, inst) { var showOn, buttonText, buttonImage, appendText = this._get(inst, "appendText"), isRTL = this._get(inst, "isRTL"); if (inst.append) { inst.append.remove(); } if (appendText) { inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>"); input[isRTL ? "before" : "after"](inst.append); } input.unbind("focus", this._showDatepicker); if (inst.trigger) { inst.trigger.remove(); } showOn = this._get(inst, "showOn"); if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field input.focus(this._showDatepicker); } if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked buttonText = this._get(inst, "buttonText"); buttonImage = this._get(inst, "buttonImage"); inst.trigger = $(this._get(inst, "buttonImageOnly") ? $("<img/>").addClass(this._triggerClass). attr({ src: buttonImage, alt: buttonText, title: buttonText }) : $("<button type='button'></button>").addClass(this._triggerClass). html(!buttonImage ? buttonText : $("<img/>").attr( { src:buttonImage, alt:buttonText, title:buttonText }))); input[isRTL ? "before" : "after"](inst.trigger); inst.trigger.click(function() { if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) { $.datepicker._hideDatepicker(); } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) { $.datepicker._hideDatepicker(); $.datepicker._showDatepicker(input[0]); } else { $.datepicker._showDatepicker(input[0]); } return false; }); } }, /* Apply the maximum length for the date format. */ _autoSize: function(inst) { if (this._get(inst, "autoSize") && !inst.inline) { var findMax, max, maxI, i, date = new Date(2009, 12 - 1, 20), // Ensure double digits dateFormat = this._get(inst, "dateFormat"); if (dateFormat.match(/[DM]/)) { findMax = function(names) { max = 0; maxI = 0; for (i = 0; i < names.length; i++) { if (names[i].length > max) { max = names[i].length; maxI = i; } } return maxI; }; date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? "monthNames" : "monthNamesShort")))); date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? "dayNames" : "dayNamesShort"))) + 20 - date.getDay()); } inst.input.attr("size", this._formatDate(inst, date).length); } }, /* Attach an inline date picker to a div. */ _inlineDatepicker: function(target, inst) { var divSpan = $(target); if (divSpan.hasClass(this.markerClassName)) { return; } divSpan.addClass(this.markerClassName).append(inst.dpDiv); $.data(target, "datepicker", inst); this._setDate(inst, this._getDefaultDate(inst), true); this._updateDatepicker(inst); this._updateAlternate(inst); //If disabled option is true, disable the datepicker before showing it (see ticket #5665) if( inst.settings.disabled ) { this._disableDatepicker( target ); } // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height inst.dpDiv.css( "display", "block" ); }, /* Pop-up the date picker in a "dialog" box. * @param input element - ignored * @param date string or Date - the initial date to display * @param onSelect function - the function to call when a date is selected * @param settings object - update the dialog date picker instance's settings (anonymous object) * @param pos int[2] - coordinates for the dialog's position within the screen or * event - with x/y coordinates or * leave empty for default (screen centre) * @return the manager object */ _dialogDatepicker: function(input, date, onSelect, settings, pos) { var id, browserWidth, browserHeight, scrollX, scrollY, inst = this._dialogInst; // internal instance if (!inst) { this.uuid += 1; id = "dp" + this.uuid; this._dialogInput = $("<input type='text' id='" + id + "' style='position: absolute; top: -100px; width: 0px;'/>"); this._dialogInput.keydown(this._doKeyDown); $("body").append(this._dialogInput); inst = this._dialogInst = this._newInst(this._dialogInput, false); inst.settings = {}; $.data(this._dialogInput[0], "datepicker", inst); } datepicker_extendRemove(inst.settings, settings || {}); date = (date && date.constructor === Date ? this._formatDate(inst, date) : date); this._dialogInput.val(date); this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); if (!this._pos) { browserWidth = document.documentElement.clientWidth; browserHeight = document.documentElement.clientHeight; scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; scrollY = document.documentElement.scrollTop || document.body.scrollTop; this._pos = // should use actual width/height below [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; } // move input on screen for focus, but hidden behind dialog this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px"); inst.settings.onSelect = onSelect; this._inDialog = true; this.dpDiv.addClass(this._dialogClass); this._showDatepicker(this._dialogInput[0]); if ($.blockUI) { $.blockUI(this.dpDiv); } $.data(this._dialogInput[0], "datepicker", inst); return this; }, /* Detach a datepicker from its control. * @param target element - the target input field or division or span */ _destroyDatepicker: function(target) { var nodeName, $target = $(target), inst = $.data(target, "datepicker"); if (!$target.hasClass(this.markerClassName)) { return; } nodeName = target.nodeName.toLowerCase(); $.removeData(target, "datepicker"); if (nodeName === "input") { inst.append.remove(); inst.trigger.remove(); $target.removeClass(this.markerClassName). unbind("focus", this._showDatepicker). unbind("keydown", this._doKeyDown). unbind("keypress", this._doKeyPress). unbind("keyup", this._doKeyUp); } else if (nodeName === "div" || nodeName === "span") { $target.removeClass(this.markerClassName).empty(); } if ( datepicker_instActive === inst ) { datepicker_instActive = null; } }, /* Enable the date picker to a jQuery selection. * @param target element - the target input field or division or span */ _enableDatepicker: function(target) { var nodeName, inline, $target = $(target), inst = $.data(target, "datepicker"); if (!$target.hasClass(this.markerClassName)) { return; } nodeName = target.nodeName.toLowerCase(); if (nodeName === "input") { target.disabled = false; inst.trigger.filter("button"). each(function() { this.disabled = false; }).end(). filter("img").css({opacity: "1.0", cursor: ""}); } else if (nodeName === "div" || nodeName === "span") { inline = $target.children("." + this._inlineClass); inline.children().removeClass("ui-state-disabled"); inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). prop("disabled", false); } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value === target ? null : value); }); // delete entry }, /* Disable the date picker to a jQuery selection. * @param target element - the target input field or division or span */ _disableDatepicker: function(target) { var nodeName, inline, $target = $(target), inst = $.data(target, "datepicker"); if (!$target.hasClass(this.markerClassName)) { return; } nodeName = target.nodeName.toLowerCase(); if (nodeName === "input") { target.disabled = true; inst.trigger.filter("button"). each(function() { this.disabled = true; }).end(). filter("img").css({opacity: "0.5", cursor: "default"}); } else if (nodeName === "div" || nodeName === "span") { inline = $target.children("." + this._inlineClass); inline.children().addClass("ui-state-disabled"); inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). prop("disabled", true); } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value === target ? null : value); }); // delete entry this._disabledInputs[this._disabledInputs.length] = target; }, /* Is the first field in a jQuery collection disabled as a datepicker? * @param target element - the target input field or division or span * @return boolean - true if disabled, false if enabled */ _isDisabledDatepicker: function(target) { if (!target) { return false; } for (var i = 0; i < this._disabledInputs.length; i++) { if (this._disabledInputs[i] === target) { return true; } } return false; }, /* Retrieve the instance data for the target control. * @param target element - the target input field or division or span * @return object - the associated instance data * @throws error if a jQuery problem getting data */ _getInst: function(target) { try { return $.data(target, "datepicker"); } catch (err) { throw "Missing instance data for this datepicker"; } }, /* Update or retrieve the settings for a date picker attached to an input field or division. * @param target element - the target input field or division or span * @param name object - the new settings to update or * string - the name of the setting to change or retrieve, * when retrieving also "all" for all instance settings or * "defaults" for all global defaults * @param value any - the new value for the setting * (omit if above is an object or to retrieve a value) */ _optionDatepicker: function(target, name, value) { var settings, date, minDate, maxDate, inst = this._getInst(target); if (arguments.length === 2 && typeof name === "string") { return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : (inst ? (name === "all" ? $.extend({}, inst.settings) : this._get(inst, name)) : null)); } settings = name || {}; if (typeof name === "string") { settings = {}; settings[name] = value; } if (inst) { if (this._curInst === inst) { this._hideDatepicker(); } date = this._getDateDatepicker(target, true); minDate = this._getMinMaxDate(inst, "min"); maxDate = this._getMinMaxDate(inst, "max"); datepicker_extendRemove(inst.settings, settings); // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) { inst.settings.minDate = this._formatDate(inst, minDate); } if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) { inst.settings.maxDate = this._formatDate(inst, maxDate); } if ( "disabled" in settings ) { if ( settings.disabled ) { this._disableDatepicker(target); } else { this._enableDatepicker(target); } } this._attachments($(target), inst); this._autoSize(inst); this._setDate(inst, date); this._updateAlternate(inst); this._updateDatepicker(inst); } }, // change method deprecated _changeDatepicker: function(target, name, value) { this._optionDatepicker(target, name, value); }, /* Redraw the date picker attached to an input field or division. * @param target element - the target input field or division or span */ _refreshDatepicker: function(target) { var inst = this._getInst(target); if (inst) { this._updateDatepicker(inst); } }, /* Set the dates for a jQuery selection. * @param target element - the target input field or division or span * @param date Date - the new date */ _setDateDatepicker: function(target, date) { var inst = this._getInst(target); if (inst) { this._setDate(inst, date); this._updateDatepicker(inst); this._updateAlternate(inst); } }, /* Get the date(s) for the first entry in a jQuery selection. * @param target element - the target input field or division or span * @param noDefault boolean - true if no default date is to be used * @return Date - the current date */ _getDateDatepicker: function(target, noDefault) { var inst = this._getInst(target); if (inst && !inst.inline) { this._setDateFromField(inst, noDefault); } return (inst ? this._getDate(inst) : null); }, /* Handle keystrokes. */ _doKeyDown: function(event) { var onSelect, dateStr, sel, inst = $.datepicker._getInst(event.target), handled = true, isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); inst._keyEvent = true; if ($.datepicker._datepickerShowing) { switch (event.keyCode) { case 9: $.datepicker._hideDatepicker(); handled = false; break; // hide on tab out case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + $.datepicker._currentClass + ")", inst.dpDiv); if (sel[0]) { $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); } onSelect = $.datepicker._get(inst, "onSelect"); if (onSelect) { dateStr = $.datepicker._formatDate(inst); // trigger custom callback onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); } else { $.datepicker._hideDatepicker(); } return false; // don't submit the form case 27: $.datepicker._hideDatepicker(); break; // hide on escape case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, "stepBigMonths") : -$.datepicker._get(inst, "stepMonths")), "M"); break; // previous month/year on page up/+ ctrl case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, "stepBigMonths") : +$.datepicker._get(inst, "stepMonths")), "M"); break; // next month/year on page down/+ ctrl case 35: if (event.ctrlKey || event.metaKey) { $.datepicker._clearDate(event.target); } handled = event.ctrlKey || event.metaKey; break; // clear on ctrl or command +end case 36: if (event.ctrlKey || event.metaKey) { $.datepicker._gotoToday(event.target); } handled = event.ctrlKey || event.metaKey; break; // current on ctrl or command +home case 37: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); } handled = event.ctrlKey || event.metaKey; // -1 day on ctrl or command +left if (event.originalEvent.altKey) { $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, "stepBigMonths") : -$.datepicker._get(inst, "stepMonths")), "M"); } // next month/year on alt +left on Mac break; case 38: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, -7, "D"); } handled = event.ctrlKey || event.metaKey; break; // -1 week on ctrl or command +up case 39: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); } handled = event.ctrlKey || event.metaKey; // +1 day on ctrl or command +right if (event.originalEvent.altKey) { $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, "stepBigMonths") : +$.datepicker._get(inst, "stepMonths")), "M"); } // next month/year on alt +right break; case 40: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, +7, "D"); } handled = event.ctrlKey || event.metaKey; break; // +1 week on ctrl or command +down default: handled = false; } } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home $.datepicker._showDatepicker(this); } else { handled = false; } if (handled) { event.preventDefault(); event.stopPropagation(); } }, /* Filter entered characters - based on date format. */ _doKeyPress: function(event) { var chars, chr, inst = $.datepicker._getInst(event.target); if ($.datepicker._get(inst, "constrainInput")) { chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1); } }, /* Synchronise manual entry and field/alternate field. */ _doKeyUp: function(event) { var date, inst = $.datepicker._getInst(event.target); if (inst.input.val() !== inst.lastVal) { try { date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), (inst.input ? inst.input.val() : null), $.datepicker._getFormatConfig(inst)); if (date) { // only if valid $.datepicker._setDateFromField(inst); $.datepicker._updateAlternate(inst); $.datepicker._updateDatepicker(inst); } } catch (err) { } } return true; }, /* Pop-up the date picker for a given input field. * If false returned from beforeShow event handler do not show. * @param input element - the input field attached to the date picker or * event - if triggered by focus */ _showDatepicker: function(input) { input = input.target || input; if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger input = $("input", input.parentNode)[0]; } if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here return; } var inst, beforeShow, beforeShowSettings, isFixed, offset, showAnim, duration; inst = $.datepicker._getInst(input); if ($.datepicker._curInst && $.datepicker._curInst !== inst) { $.datepicker._curInst.dpDiv.stop(true, true); if ( inst && $.datepicker._datepickerShowing ) { $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] ); } } beforeShow = $.datepicker._get(inst, "beforeShow"); beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; if(beforeShowSettings === false){ return; } datepicker_extendRemove(inst.settings, beforeShowSettings); inst.lastVal = null; $.datepicker._lastInput = input; $.datepicker._setDateFromField(inst); if ($.datepicker._inDialog) { // hide cursor input.value = ""; } if (!$.datepicker._pos) { // position below input $.datepicker._pos = $.datepicker._findPos(input); $.datepicker._pos[1] += input.offsetHeight; // add the height } isFixed = false; $(input).parents().each(function() { isFixed |= $(this).css("position") === "fixed"; return !isFixed; }); offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; $.datepicker._pos = null; //to avoid flashes on Firefox inst.dpDiv.empty(); // determine sizing offscreen inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"}); $.datepicker._updateDatepicker(inst); // fix width for dynamic number of date pickers // and adjust position before showing offset = $.datepicker._checkOffset(inst, offset, isFixed); inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? "static" : (isFixed ? "fixed" : "absolute")), display: "none", left: offset.left + "px", top: offset.top + "px"}); if (!inst.inline) { showAnim = $.datepicker._get(inst, "showAnim"); duration = $.datepicker._get(inst, "duration"); inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 ); $.datepicker._datepickerShowing = true; if ( $.effects && $.effects.effect[ showAnim ] ) { inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); } else { inst.dpDiv[showAnim || "show"](showAnim ? duration : null); } if ( $.datepicker._shouldFocusInput( inst ) ) { inst.input.focus(); } $.datepicker._curInst = inst; } }, /* Generate the date picker content. */ _updateDatepicker: function(inst) { this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) datepicker_instActive = inst; // for delegate hover events inst.dpDiv.empty().append(this._generateHTML(inst)); this._attachHandlers(inst); var origyearshtml, numMonths = this._getNumberOfMonths(inst), cols = numMonths[1], width = 17, activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ); if ( activeCell.length > 0 ) { datepicker_handleMouseover.apply( activeCell.get( 0 ) ); } inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); if (cols > 1) { inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em"); } inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + "Class"]("ui-datepicker-multi"); inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl"); if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) { inst.input.focus(); } // deffered render of the years select (to avoid flashes on Firefox) if( inst.yearshtml ){ origyearshtml = inst.yearshtml; setTimeout(function(){ //assure that inst.yearshtml didn't change. if( origyearshtml === inst.yearshtml && inst.yearshtml ){ inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml); } origyearshtml = inst.yearshtml = null; }, 0); } }, // #6694 - don't focus the input if it's already focused // this breaks the change event in IE // Support: IE and jQuery <1.9 _shouldFocusInput: function( inst ) { return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" ); }, /* Check positioning to remain on screen. */ _checkOffset: function(inst, offset, isFixed) { var dpWidth = inst.dpDiv.outerWidth(), dpHeight = inst.dpDiv.outerHeight(), inputWidth = inst.input ? inst.input.outerWidth() : 0, inputHeight = inst.input ? inst.input.outerHeight() : 0, viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; // now check if datepicker is showing outside window viewport - move to a better place if so. offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0); offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(dpHeight + inputHeight) : 0); return offset; }, /* Find an object's position on the screen. */ _findPos: function(obj) { var position, inst = this._getInst(obj), isRTL = this._get(inst, "isRTL"); while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { obj = obj[isRTL ? "previousSibling" : "nextSibling"]; } position = $(obj).offset(); return [position.left, position.top]; }, /* Hide the date picker from view. * @param input element - the input field attached to the date picker */ _hideDatepicker: function(input) { var showAnim, duration, postProcess, onClose, inst = this._curInst; if (!inst || (input && inst !== $.data(input, "datepicker"))) { return; } if (this._datepickerShowing) { showAnim = this._get(inst, "showAnim"); duration = this._get(inst, "duration"); postProcess = function() { $.datepicker._tidyDialog(inst); }; // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); } else { inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); } if (!showAnim) { postProcess(); } this._datepickerShowing = false; onClose = this._get(inst, "onClose"); if (onClose) { onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); } this._lastInput = null; if (this._inDialog) { this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); if ($.blockUI) { $.unblockUI(); $("body").append(this.dpDiv); } } this._inDialog = false; } }, /* Tidy up after a dialog display. */ _tidyDialog: function(inst) { inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar"); }, /* Close date picker if clicked elsewhere. */ _checkExternalClick: function(event) { if (!$.datepicker._curInst) { return; } var $target = $(event.target), inst = $.datepicker._getInst($target[0]); if ( ( ( $target[0].id !== $.datepicker._mainDivId && $target.parents("#" + $.datepicker._mainDivId).length === 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.closest("." + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { $.datepicker._hideDatepicker(); } }, /* Adjust one of the date sub-fields. */ _adjustDate: function(id, offset, period) { var target = $(id), inst = this._getInst(target[0]); if (this._isDisabledDatepicker(target[0])) { return; } this._adjustInstDate(inst, offset + (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning period); this._updateDatepicker(inst); }, /* Action for current link. */ _gotoToday: function(id) { var date, target = $(id), inst = this._getInst(target[0]); if (this._get(inst, "gotoCurrent") && inst.currentDay) { inst.selectedDay = inst.currentDay; inst.drawMonth = inst.selectedMonth = inst.currentMonth; inst.drawYear = inst.selectedYear = inst.currentYear; } else { date = new Date(); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); } this._notifyChange(inst); this._adjustDate(target); }, /* Action for selecting a new month/year. */ _selectMonthYear: function(id, select, period) { var target = $(id), inst = this._getInst(target[0]); inst["selected" + (period === "M" ? "Month" : "Year")] = inst["draw" + (period === "M" ? "Month" : "Year")] = parseInt(select.options[select.selectedIndex].value,10); this._notifyChange(inst); this._adjustDate(target); }, /* Action for selecting a day. */ _selectDay: function(id, month, year, td) { var inst, target = $(id); if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { return; } inst = this._getInst(target[0]); inst.selectedDay = inst.currentDay = $("a", td).html(); inst.selectedMonth = inst.currentMonth = month; inst.selectedYear = inst.currentYear = year; this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear)); }, /* Erase the input field and hide the date picker. */ _clearDate: function(id) { var target = $(id); this._selectDate(target, ""); }, /* Update the input field with the selected date. */ _selectDate: function(id, dateStr) { var onSelect, target = $(id), inst = this._getInst(target[0]); dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); if (inst.input) { inst.input.val(dateStr); } this._updateAlternate(inst); onSelect = this._get(inst, "onSelect"); if (onSelect) { onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback } else if (inst.input) { inst.input.trigger("change"); // fire the change event } if (inst.inline){ this._updateDatepicker(inst); } else { this._hideDatepicker(); this._lastInput = inst.input[0]; if (typeof(inst.input[0]) !== "object") { inst.input.focus(); // restore focus } this._lastInput = null; } }, /* Update any alternate field to synchronise with the main field. */ _updateAlternate: function(inst) { var altFormat, date, dateStr, altField = this._get(inst, "altField"); if (altField) { // update alternate field too altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); date = this._getDate(inst); dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); $(altField).each(function() { $(this).val(dateStr); }); } }, /* Set as beforeShowDay function to prevent selection of weekends. * @param date Date - the date to customise * @return [boolean, string] - is this date selectable?, what is its CSS class? */ noWeekends: function(date) { var day = date.getDay(); return [(day > 0 && day < 6), ""]; }, /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. * @param date Date - the date to get the week for * @return number - the number of the week within the year that contains this date */ iso8601Week: function(date) { var time, checkDate = new Date(date.getTime()); // Find Thursday of this week starting on Monday checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); time = checkDate.getTime(); checkDate.setMonth(0); // Compare with Jan 1 checkDate.setDate(1); return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; }, /* Parse a string value into a date object. * See formatDate below for the possible formats. * * @param format string - the expected format of the date * @param value string - the date in the above format * @param settings Object - attributes include: * shortYearCutoff number - the cutoff year for determining the century (optional) * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) * dayNames string[7] - names of the days from Sunday (optional) * monthNamesShort string[12] - abbreviated names of the months (optional) * monthNames string[12] - names of the months (optional) * @return Date - the extracted date value or null if value is blank */ parseDate: function (format, value, settings) { if (format == null || value == null) { throw "Invalid arguments"; } value = (typeof value === "object" ? value.toString() : value + ""); if (value === "") { return null; } var iFormat, dim, extra, iValue = 0, shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, year = -1, month = -1, day = -1, doy = -1, literal = false, date, // Check whether a format character is doubled lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); if (matches) { iFormat++; } return matches; }, // Extract a number from the string value getNumber = function(match) { var isDoubled = lookAhead(match), size = (match === "@" ? 14 : (match === "!" ? 20 : (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), minSize = (match === "y" ? size : 1), digits = new RegExp("^\\d{" + minSize + "," + size + "}"), num = value.substring(iValue).match(digits); if (!num) { throw "Missing number at position " + iValue; } iValue += num[0].length; return parseInt(num[0], 10); }, // Extract a name from the string value and convert to an index getName = function(match, shortNames, longNames) { var index = -1, names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { return [ [k, v] ]; }).sort(function (a, b) { return -(a[1].length - b[1].length); }); $.each(names, function (i, pair) { var name = pair[1]; if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { index = pair[0]; iValue += name.length; return false; } }); if (index !== -1) { return index + 1; } else { throw "Unknown name at position " + iValue; } }, // Confirm that a literal character matches the string value checkLiteral = function() { if (value.charAt(iValue) !== format.charAt(iFormat)) { throw "Unexpected literal at position " + iValue; } iValue++; }; for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) { literal = false; } else { checkLiteral(); } } else { switch (format.charAt(iFormat)) { case "d": day = getNumber("d"); break; case "D": getName("D", dayNamesShort, dayNames); break; case "o": doy = getNumber("o"); break; case "m": month = getNumber("m"); break; case "M": month = getName("M", monthNamesShort, monthNames); break; case "y": year = getNumber("y"); break; case "@": date = new Date(getNumber("@")); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "!": date = new Date((getNumber("!") - this._ticksTo1970) / 10000); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "'": if (lookAhead("'")){ checkLiteral(); } else { literal = true; } break; default: checkLiteral(); } } } if (iValue < value.length){ extra = value.substr(iValue); if (!/^\s+/.test(extra)) { throw "Extra/unparsed characters found in date: " + extra; } } if (year === -1) { year = new Date().getFullYear(); } else if (year < 100) { year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100); } if (doy > -1) { month = 1; day = doy; do { dim = this._getDaysInMonth(year, month - 1); if (day <= dim) { break; } month++; day -= dim; } while (true); } date = this._daylightSavingAdjust(new Date(year, month - 1, day)); if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { throw "Invalid date"; // E.g. 31/02/00 } return date; }, /* Standard date formats. */ ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) COOKIE: "D, dd M yy", ISO_8601: "yy-mm-dd", RFC_822: "D, d M y", RFC_850: "DD, dd-M-y", RFC_1036: "D, d M y", RFC_1123: "D, d M yy", RFC_2822: "D, d M yy", RSS: "D, d M y", // RFC 822 TICKS: "!", TIMESTAMP: "@", W3C: "yy-mm-dd", // ISO 8601 _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), /* Format a date object into a string value. * The format can be combinations of the following: * d - day of month (no leading zero) * dd - day of month (two digit) * o - day of year (no leading zeros) * oo - day of year (three digit) * D - day name short * DD - day name long * m - month of year (no leading zero) * mm - month of year (two digit) * M - month name short * MM - month name long * y - year (two digit) * yy - year (four digit) * @ - Unix timestamp (ms since 01/01/1970) * ! - Windows ticks (100ns since 01/01/0001) * "..." - literal text * '' - single quote * * @param format string - the desired format of the date * @param date Date - the date value to format * @param settings Object - attributes include: * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) * dayNames string[7] - names of the days from Sunday (optional) * monthNamesShort string[12] - abbreviated names of the months (optional) * monthNames string[12] - names of the months (optional) * @return string - the date in the above format */ formatDate: function (format, date, settings) { if (!date) { return ""; } var iFormat, dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, // Check whether a format character is doubled lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); if (matches) { iFormat++; } return matches; }, // Format a number, with leading zero if necessary formatNumber = function(match, value, len) { var num = "" + value; if (lookAhead(match)) { while (num.length < len) { num = "0" + num; } } return num; }, // Format a name, short or long as requested formatName = function(match, value, shortNames, longNames) { return (lookAhead(match) ? longNames[value] : shortNames[value]); }, output = "", literal = false; if (date) { for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) { literal = false; } else { output += format.charAt(iFormat); } } else { switch (format.charAt(iFormat)) { case "d": output += formatNumber("d", date.getDate(), 2); break; case "D": output += formatName("D", date.getDay(), dayNamesShort, dayNames); break; case "o": output += formatNumber("o", Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); break; case "m": output += formatNumber("m", date.getMonth() + 1, 2); break; case "M": output += formatName("M", date.getMonth(), monthNamesShort, monthNames); break; case "y": output += (lookAhead("y") ? date.getFullYear() : (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100); break; case "@": output += date.getTime(); break; case "!": output += date.getTime() * 10000 + this._ticksTo1970; break; case "'": if (lookAhead("'")) { output += "'"; } else { literal = true; } break; default: output += format.charAt(iFormat); } } } } return output; }, /* Extract all possible characters from the date format. */ _possibleChars: function (format) { var iFormat, chars = "", literal = false, // Check whether a format character is doubled lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); if (matches) { iFormat++; } return matches; }; for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) { literal = false; } else { chars += format.charAt(iFormat); } } else { switch (format.charAt(iFormat)) { case "d": case "m": case "y": case "@": chars += "0123456789"; break; case "D": case "M": return null; // Accept anything case "'": if (lookAhead("'")) { chars += "'"; } else { literal = true; } break; default: chars += format.charAt(iFormat); } } } return chars; }, /* Get a setting value, defaulting if necessary. */ _get: function(inst, name) { return inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name]; }, /* Parse existing date and initialise date picker. */ _setDateFromField: function(inst, noDefault) { if (inst.input.val() === inst.lastVal) { return; } var dateFormat = this._get(inst, "dateFormat"), dates = inst.lastVal = inst.input ? inst.input.val() : null, defaultDate = this._getDefaultDate(inst), date = defaultDate, settings = this._getFormatConfig(inst); try { date = this.parseDate(dateFormat, dates, settings) || defaultDate; } catch (event) { dates = (noDefault ? "" : dates); } inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); inst.currentDay = (dates ? date.getDate() : 0); inst.currentMonth = (dates ? date.getMonth() : 0); inst.currentYear = (dates ? date.getFullYear() : 0); this._adjustInstDate(inst); }, /* Retrieve the default date shown on opening. */ _getDefaultDate: function(inst) { return this._restrictMinMax(inst, this._determineDate(inst, this._get(inst, "defaultDate"), new Date())); }, /* A date may be specified as an exact value or a relative one. */ _determineDate: function(inst, date, defaultDate) { var offsetNumeric = function(offset) { var date = new Date(); date.setDate(date.getDate() + offset); return date; }, offsetString = function(offset) { try { return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), offset, $.datepicker._getFormatConfig(inst)); } catch (e) { // Ignore } var date = (offset.toLowerCase().match(/^c/) ? $.datepicker._getDate(inst) : null) || new Date(), year = date.getFullYear(), month = date.getMonth(), day = date.getDate(), pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, matches = pattern.exec(offset); while (matches) { switch (matches[2] || "d") { case "d" : case "D" : day += parseInt(matches[1],10); break; case "w" : case "W" : day += parseInt(matches[1],10) * 7; break; case "m" : case "M" : month += parseInt(matches[1],10); day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); break; case "y": case "Y" : year += parseInt(matches[1],10); day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); break; } matches = pattern.exec(offset); } return new Date(year, month, day); }, newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate); if (newDate) { newDate.setHours(0); newDate.setMinutes(0); newDate.setSeconds(0); newDate.setMilliseconds(0); } return this._daylightSavingAdjust(newDate); }, /* Handle switch to/from daylight saving. * Hours may be non-zero on daylight saving cut-over: * > 12 when midnight changeover, but then cannot generate * midnight datetime, so jump to 1AM, otherwise reset. * @param date (Date) the date to check * @return (Date) the corrected date */ _daylightSavingAdjust: function(date) { if (!date) { return null; } date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); return date; }, /* Set the date(s) directly. */ _setDate: function(inst, date, noChange) { var clear = !date, origMonth = inst.selectedMonth, origYear = inst.selectedYear, newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); inst.selectedDay = inst.currentDay = newDate.getDate(); inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) { this._notifyChange(inst); } this._adjustInstDate(inst); if (inst.input) { inst.input.val(clear ? "" : this._formatDate(inst)); } }, /* Retrieve the date(s) directly. */ _getDate: function(inst) { var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null : this._daylightSavingAdjust(new Date( inst.currentYear, inst.currentMonth, inst.currentDay))); return startDate; }, /* Attach the onxxx handlers. These are declared statically so * they work with static code transformers like Caja. */ _attachHandlers: function(inst) { var stepMonths = this._get(inst, "stepMonths"), id = "#" + inst.id.replace( /\\\\/g, "\\" ); inst.dpDiv.find("[data-handler]").map(function () { var handler = { prev: function () { $.datepicker._adjustDate(id, -stepMonths, "M"); }, next: function () { $.datepicker._adjustDate(id, +stepMonths, "M"); }, hide: function () { $.datepicker._hideDatepicker(); }, today: function () { $.datepicker._gotoToday(id); }, selectDay: function () { $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this); return false; }, selectMonth: function () { $.datepicker._selectMonthYear(id, this, "M"); return false; }, selectYear: function () { $.datepicker._selectMonthYear(id, this, "Y"); return false; } }; $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]); }); }, /* Generate the HTML for the current state of the date picker. */ _generateHTML: function(inst) { var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, monthNames, monthNamesShort, beforeShowDay, showOtherMonths, selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, printDate, dRow, tbody, daySettings, otherMonth, unselectable, tempDate = new Date(), today = this._daylightSavingAdjust( new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time isRTL = this._get(inst, "isRTL"), showButtonPanel = this._get(inst, "showButtonPanel"), hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), numMonths = this._getNumberOfMonths(inst), showCurrentAtPos = this._get(inst, "showCurrentAtPos"), stepMonths = this._get(inst, "stepMonths"), isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), drawMonth = inst.drawMonth - showCurrentAtPos, drawYear = inst.drawYear; if (drawMonth < 0) { drawMonth += 12; drawYear--; } if (maxDate) { maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { drawMonth--; if (drawMonth < 0) { drawMonth = 11; drawYear--; } } } inst.drawMonth = drawMonth; inst.drawYear = drawYear; prevText = this._get(inst, "prevText"); prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), this._getFormatConfig(inst))); prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" + " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" : (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+ prevText +"'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w") + "'>" + prevText + "</span></a>")); nextText = this._get(inst, "nextText"); nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), this._getFormatConfig(inst))); next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" + " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" : (hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+ nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e") + "'>" + nextText + "</span></a>")); currentText = this._get(inst, "currentText"); gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today); currentText = (!navigationAsDateFormat ? currentText : this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); controls = (!inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + this._get(inst, "closeText") + "</button>" : ""); buttonPanel = (showButtonPanel) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") + (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" + ">" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : ""; firstDay = parseInt(this._get(inst, "firstDay"),10); firstDay = (isNaN(firstDay) ? 0 : firstDay); showWeek = this._get(inst, "showWeek"); dayNames = this._get(inst, "dayNames"); dayNamesMin = this._get(inst, "dayNamesMin"); monthNames = this._get(inst, "monthNames"); monthNamesShort = this._get(inst, "monthNamesShort"); beforeShowDay = this._get(inst, "beforeShowDay"); showOtherMonths = this._get(inst, "showOtherMonths"); selectOtherMonths = this._get(inst, "selectOtherMonths"); defaultDate = this._getDefaultDate(inst); html = ""; dow; for (row = 0; row < numMonths[0]; row++) { group = ""; this.maxRows = 4; for (col = 0; col < numMonths[1]; col++) { selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); cornerClass = " ui-corner-all"; calender = ""; if (isMultiMonth) { calender += "<div class='ui-datepicker-group"; if (numMonths[1] > 1) { switch (col) { case 0: calender += " ui-datepicker-group-first"; cornerClass = " ui-corner-" + (isRTL ? "right" : "left"); break; case numMonths[1]-1: calender += " ui-datepicker-group-last"; cornerClass = " ui-corner-" + (isRTL ? "left" : "right"); break; default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break; } } calender += "'>"; } calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers "</div><table class='ui-datepicker-calendar'><thead>" + "<tr>"; thead = (showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>" : ""); for (dow = 0; dow < 7; dow++) { // days of the week day = (dow + firstDay) % 7; thead += "<th scope='col'" + ((dow + firstDay + 6) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + "<span title='" + dayNames[day] + "'>" + dayNamesMin[day] + "</span></th>"; } calender += thead + "</tr></thead><tbody>"; daysInMonth = this._getDaysInMonth(drawYear, drawMonth); if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); } leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) this.maxRows = numRows; printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows calender += "<tr>"; tbody = (!showWeek ? "" : "<td class='ui-datepicker-week-col'>" + this._get(inst, "calculateWeek")(printDate) + "</td>"); for (dow = 0; dow < 7; dow++) { // create date picker days daySettings = (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); otherMonth = (printDate.getMonth() !== drawMonth); unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || (minDate && printDate < minDate) || (maxDate && printDate > maxDate); tbody += "<td class='" + ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + // highlight weekends (otherMonth ? " ui-datepicker-other-month" : "") + // highlight days from other months ((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key (defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ? // or defaultDate is current printedDate and defaultDate is selectedDate " " + this._dayOverClass : "") + // highlight selected day (unselectable ? " " + this._unselectableClass + " ui-state-disabled": "") + // highlight unselectable days (otherMonth && !showOtherMonths ? "" : " " + daySettings[1] + // highlight custom dates (printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "") + // highlight selected day (printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "")) + "'" + // highlight today (if different) ((!otherMonth || showOtherMonths) && daySettings[2] ? " title='" + daySettings[2].replace(/'/g, "'") + "'" : "") + // cell title (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + // actions (otherMonth && !showOtherMonths ? " " : // display for other months (unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" + (printDate.getTime() === today.getTime() ? " ui-state-highlight" : "") + (printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "") + // highlight selected day (otherMonth ? " ui-priority-secondary" : "") + // distinguish dates from other months "' href='#'>" + printDate.getDate() + "</a>")) + "</td>"; // display selectable date printDate.setDate(printDate.getDate() + 1); printDate = this._daylightSavingAdjust(printDate); } calender += tbody + "</tr>"; } drawMonth++; if (drawMonth > 11) { drawMonth = 0; drawYear++; } calender += "</tbody></table>" + (isMultiMonth ? "</div>" + ((numMonths[0] > 0 && col === numMonths[1]-1) ? "<div class='ui-datepicker-row-break'></div>" : "") : ""); group += calender; } html += group; } html += buttonPanel; inst._keyEvent = false; return html; }, /* Generate the month and year header. */ _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort) { var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, changeMonth = this._get(inst, "changeMonth"), changeYear = this._get(inst, "changeYear"), showMonthAfterYear = this._get(inst, "showMonthAfterYear"), html = "<div class='ui-datepicker-title'>", monthHtml = ""; // month selection if (secondary || !changeMonth) { monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>"; } else { inMinYear = (minDate && minDate.getFullYear() === drawYear); inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>"; for ( month = 0; month < 12; month++) { if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) { monthHtml += "<option value='" + month + "'" + (month === drawMonth ? " selected='selected'" : "") + ">" + monthNamesShort[month] + "</option>"; } } monthHtml += "</select>"; } if (!showMonthAfterYear) { html += monthHtml + (secondary || !(changeMonth && changeYear) ? " " : ""); } // year selection if ( !inst.yearshtml ) { inst.yearshtml = ""; if (secondary || !changeYear) { html += "<span class='ui-datepicker-year'>" + drawYear + "</span>"; } else { // determine range of years to display years = this._get(inst, "yearRange").split(":"); thisYear = new Date().getFullYear(); determineYear = function(value) { var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : parseInt(value, 10))); return (isNaN(year) ? thisYear : year); }; year = determineYear(years[0]); endYear = Math.max(year, determineYear(years[1] || "")); year = (minDate ? Math.max(year, minDate.getFullYear()) : year); endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>"; for (; year <= endYear; year++) { inst.yearshtml += "<option value='" + year + "'" + (year === drawYear ? " selected='selected'" : "") + ">" + year + "</option>"; } inst.yearshtml += "</select>"; html += inst.yearshtml; inst.yearshtml = null; } } html += this._get(inst, "yearSuffix"); if (showMonthAfterYear) { html += (secondary || !(changeMonth && changeYear) ? " " : "") + monthHtml; } html += "</div>"; // Close datepicker_header return html; }, /* Adjust one of the date sub-fields. */ _adjustInstDate: function(inst, offset, period) { var year = inst.drawYear + (period === "Y" ? offset : 0), month = inst.drawMonth + (period === "M" ? offset : 0), day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); if (period === "M" || period === "Y") { this._notifyChange(inst); } }, /* Ensure a date is within any min/max bounds. */ _restrictMinMax: function(inst, date) { var minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), newDate = (minDate && date < minDate ? minDate : date); return (maxDate && newDate > maxDate ? maxDate : newDate); }, /* Notify change of month/year. */ _notifyChange: function(inst) { var onChange = this._get(inst, "onChangeMonthYear"); if (onChange) { onChange.apply((inst.input ? inst.input[0] : null), [inst.selectedYear, inst.selectedMonth + 1, inst]); } }, /* Determine the number of months to show. */ _getNumberOfMonths: function(inst) { var numMonths = this._get(inst, "numberOfMonths"); return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths)); }, /* Determine the current maximum date - ensure no time components are set. */ _getMinMaxDate: function(inst, minMax) { return this._determineDate(inst, this._get(inst, minMax + "Date"), null); }, /* Find the number of days in a given month. */ _getDaysInMonth: function(year, month) { return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); }, /* Find the day of the week of the first of a month. */ _getFirstDayOfMonth: function(year, month) { return new Date(year, month, 1).getDay(); }, /* Determines if we should allow a "next/prev" month display change. */ _canAdjustMonth: function(inst, offset, curYear, curMonth) { var numMonths = this._getNumberOfMonths(inst), date = this._daylightSavingAdjust(new Date(curYear, curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); if (offset < 0) { date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); } return this._isInRange(inst, date); }, /* Is the given date in the accepted range? */ _isInRange: function(inst, date) { var yearSplit, currentYear, minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), minYear = null, maxYear = null, years = this._get(inst, "yearRange"); if (years){ yearSplit = years.split(":"); currentYear = new Date().getFullYear(); minYear = parseInt(yearSplit[0], 10); maxYear = parseInt(yearSplit[1], 10); if ( yearSplit[0].match(/[+\-].*/) ) { minYear += currentYear; } if ( yearSplit[1].match(/[+\-].*/) ) { maxYear += currentYear; } } return ((!minDate || date.getTime() >= minDate.getTime()) && (!maxDate || date.getTime() <= maxDate.getTime()) && (!minYear || date.getFullYear() >= minYear) && (!maxYear || date.getFullYear() <= maxYear)); }, /* Provide the configuration settings for formatting/parsing. */ _getFormatConfig: function(inst) { var shortYearCutoff = this._get(inst, "shortYearCutoff"); shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); return {shortYearCutoff: shortYearCutoff, dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")}; }, /* Format the given date for display. */ _formatDate: function(inst, day, month, year) { if (!day) { inst.currentDay = inst.selectedDay; inst.currentMonth = inst.selectedMonth; inst.currentYear = inst.selectedYear; } var date = (day ? (typeof day === "object" ? day : this._daylightSavingAdjust(new Date(year, month, day))) : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst)); } }); /* * Bind hover events for datepicker elements. * Done via delegate so the binding only occurs once in the lifetime of the parent div. * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. */ function datepicker_bindHover(dpDiv) { var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; return dpDiv.delegate(selector, "mouseout", function() { $(this).removeClass("ui-state-hover"); if (this.className.indexOf("ui-datepicker-prev") !== -1) { $(this).removeClass("ui-datepicker-prev-hover"); } if (this.className.indexOf("ui-datepicker-next") !== -1) { $(this).removeClass("ui-datepicker-next-hover"); } }) .delegate( selector, "mouseover", datepicker_handleMouseover ); } function datepicker_handleMouseover() { if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) { $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); $(this).addClass("ui-state-hover"); if (this.className.indexOf("ui-datepicker-prev") !== -1) { $(this).addClass("ui-datepicker-prev-hover"); } if (this.className.indexOf("ui-datepicker-next") !== -1) { $(this).addClass("ui-datepicker-next-hover"); } } } /* jQuery extend now ignores nulls! */ function datepicker_extendRemove(target, props) { $.extend(target, props); for (var name in props) { if (props[name] == null) { target[name] = props[name]; } } return target; } /* Invoke the datepicker functionality. @param options string - a command, optionally followed by additional parameters or Object - settings for attaching new datepicker functionality @return jQuery object */ $.fn.datepicker = function(options){ /* Verify an empty collection wasn't passed - Fixes #6976 */ if ( !this.length ) { return this; } /* Initialise the date picker. */ if (!$.datepicker.initialized) { $(document).mousedown($.datepicker._checkExternalClick); $.datepicker.initialized = true; } /* Append datepicker main container to body if not exist. */ if ($("#"+$.datepicker._mainDivId).length === 0) { $("body").append($.datepicker.dpDiv); } var otherArgs = Array.prototype.slice.call(arguments, 1); if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { return $.datepicker["_" + options + "Datepicker"]. apply($.datepicker, [this[0]].concat(otherArgs)); } if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { return $.datepicker["_" + options + "Datepicker"]. apply($.datepicker, [this[0]].concat(otherArgs)); } return this.each(function() { typeof options === "string" ? $.datepicker["_" + options + "Datepicker"]. apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options); }); }; $.datepicker = new Datepicker(); // singleton instance $.datepicker.initialized = false; $.datepicker.uuid = new Date().getTime(); $.datepicker.version = "1.11.4"; var datepicker = $.datepicker; /*! * jQuery UI Draggable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/draggable/ */ $.widget("ui.draggable", $.ui.mouse, { version: "1.11.4", widgetEventPrefix: "drag", options: { addClasses: true, appendTo: "parent", axis: false, connectToSortable: false, containment: false, cursor: "auto", cursorAt: false, grid: false, handle: false, helper: "original", iframeFix: false, opacity: false, refreshPositions: false, revert: false, revertDuration: 500, scope: "default", scroll: true, scrollSensitivity: 20, scrollSpeed: 20, snap: false, snapMode: "both", snapTolerance: 20, stack: false, zIndex: false, // callbacks drag: null, start: null, stop: null }, _create: function() { if ( this.options.helper === "original" ) { this._setPositionRelative(); } if (this.options.addClasses){ this.element.addClass("ui-draggable"); } if (this.options.disabled){ this.element.addClass("ui-draggable-disabled"); } this._setHandleClassName(); this._mouseInit(); }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "handle" ) { this._removeHandleClassName(); this._setHandleClassName(); } }, _destroy: function() { if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) { this.destroyOnClear = true; return; } this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ); this._removeHandleClassName(); this._mouseDestroy(); }, _mouseCapture: function(event) { var o = this.options; this._blurActiveElement( event ); // among others, prevent a drag on a resizable-handle if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) { return false; } //Quit if we're not on a valid handle this.handle = this._getHandle(event); if (!this.handle) { return false; } this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix ); return true; }, _blockFrames: function( selector ) { this.iframeBlocks = this.document.find( selector ).map(function() { var iframe = $( this ); return $( "<div>" ) .css( "position", "absolute" ) .appendTo( iframe.parent() ) .outerWidth( iframe.outerWidth() ) .outerHeight( iframe.outerHeight() ) .offset( iframe.offset() )[ 0 ]; }); }, _unblockFrames: function() { if ( this.iframeBlocks ) { this.iframeBlocks.remove(); delete this.iframeBlocks; } }, _blurActiveElement: function( event ) { var document = this.document[ 0 ]; // Only need to blur if the event occurred on the draggable itself, see #10527 if ( !this.handleElement.is( event.target ) ) { return; } // support: IE9 // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> try { // Support: IE9, IE10 // If the <body> is blurred, IE will switch windows, see #9520 if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) { // Blur any element that currently has focus, see #4261 $( document.activeElement ).blur(); } } catch ( error ) {} }, _mouseStart: function(event) { var o = this.options; //Create and append the visible helper this.helper = this._createHelper(event); this.helper.addClass("ui-draggable-dragging"); //Cache the helper size this._cacheHelperProportions(); //If ddmanager is used for droppables, set the global draggable if ($.ui.ddmanager) { $.ui.ddmanager.current = this; } /* * - Position generation - * This block generates everything position related - it's the core of draggables. */ //Cache the margins of the original element this._cacheMargins(); //Store the helper's css position this.cssPosition = this.helper.css( "position" ); this.scrollParent = this.helper.scrollParent( true ); this.offsetParent = this.helper.offsetParent(); this.hasFixedAncestor = this.helper.parents().filter(function() { return $( this ).css( "position" ) === "fixed"; }).length > 0; //The element's absolute position on the page minus margins this.positionAbs = this.element.offset(); this._refreshOffsets( event ); //Generate the original position this.originalPosition = this.position = this._generatePosition( event, false ); this.originalPageX = event.pageX; this.originalPageY = event.pageY; //Adjust the mouse offset relative to the helper if "cursorAt" is supplied (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); //Set a containment if given in the options this._setContainment(); //Trigger event + callbacks if (this._trigger("start", event) === false) { this._clear(); return false; } //Recache the helper size this._cacheHelperProportions(); //Prepare the droppable offsets if ($.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(this, event); } // Reset helper's right/bottom css if they're set and set explicit width/height instead // as this prevents resizing of elements with right/bottom set (see #7772) this._normalizeRightBottom(); this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003) if ( $.ui.ddmanager ) { $.ui.ddmanager.dragStart(this, event); } return true; }, _refreshOffsets: function( event ) { this.offset = { top: this.positionAbs.top - this.margins.top, left: this.positionAbs.left - this.margins.left, scroll: false, parent: this._getParentOffset(), relative: this._getRelativeOffset() }; this.offset.click = { left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }; }, _mouseDrag: function(event, noPropagation) { // reset any necessary cached properties (see #5009) if ( this.hasFixedAncestor ) { this.offset.parent = this._getParentOffset(); } //Compute the helpers position this.position = this._generatePosition( event, true ); this.positionAbs = this._convertPositionTo("absolute"); //Call plugins and callbacks and use the resulting position if something is returned if (!noPropagation) { var ui = this._uiHash(); if (this._trigger("drag", event, ui) === false) { this._mouseUp({}); return false; } this.position = ui.position; } this.helper[ 0 ].style.left = this.position.left + "px"; this.helper[ 0 ].style.top = this.position.top + "px"; if ($.ui.ddmanager) { $.ui.ddmanager.drag(this, event); } return false; }, _mouseStop: function(event) { //If we are using droppables, inform the manager about the drop var that = this, dropped = false; if ($.ui.ddmanager && !this.options.dropBehaviour) { dropped = $.ui.ddmanager.drop(this, event); } //if a drop comes from outside (a sortable) if (this.dropped) { dropped = this.dropped; this.dropped = false; } if ((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) { $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() { if (that._trigger("stop", event) !== false) { that._clear(); } }); } else { if (this._trigger("stop", event) !== false) { this._clear(); } } return false; }, _mouseUp: function( event ) { this._unblockFrames(); //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) if ( $.ui.ddmanager ) { $.ui.ddmanager.dragStop(this, event); } // Only need to focus if the event occurred on the draggable itself, see #10527 if ( this.handleElement.is( event.target ) ) { // The interaction is over; whether or not the click resulted in a drag, focus the element this.element.focus(); } return $.ui.mouse.prototype._mouseUp.call(this, event); }, cancel: function() { if (this.helper.is(".ui-draggable-dragging")) { this._mouseUp({}); } else { this._clear(); } return this; }, _getHandle: function(event) { return this.options.handle ? !!$( event.target ).closest( this.element.find( this.options.handle ) ).length : true; }, _setHandleClassName: function() { this.handleElement = this.options.handle ? this.element.find( this.options.handle ) : this.element; this.handleElement.addClass( "ui-draggable-handle" ); }, _removeHandleClassName: function() { this.handleElement.removeClass( "ui-draggable-handle" ); }, _createHelper: function(event) { var o = this.options, helperIsFunction = $.isFunction( o.helper ), helper = helperIsFunction ? $( o.helper.apply( this.element[ 0 ], [ event ] ) ) : ( o.helper === "clone" ? this.element.clone().removeAttr( "id" ) : this.element ); if (!helper.parents("body").length) { helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo)); } // http://bugs.jqueryui.com/ticket/9446 // a helper function can return the original element // which wouldn't have been set to relative in _create if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) { this._setPositionRelative(); } if (helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) { helper.css("position", "absolute"); } return helper; }, _setPositionRelative: function() { if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) { this.element[ 0 ].style.position = "relative"; } }, _adjustOffsetFromHelper: function(obj) { if (typeof obj === "string") { obj = obj.split(" "); } if ($.isArray(obj)) { obj = { left: +obj[0], top: +obj[1] || 0 }; } if ("left" in obj) { this.offset.click.left = obj.left + this.margins.left; } if ("right" in obj) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; } if ("top" in obj) { this.offset.click.top = obj.top + this.margins.top; } if ("bottom" in obj) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; } }, _isRootNode: function( element ) { return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ]; }, _getParentOffset: function() { //Get the offsetParent and cache its position var po = this.offsetParent.offset(), document = this.document[ 0 ]; // This is a special case where we need to modify a offset calculated on start, since the following happened: // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag if (this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop(); } if ( this._isRootNode( this.offsetParent[ 0 ] ) ) { po = { top: 0, left: 0 }; } return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0) }; }, _getRelativeOffset: function() { if ( this.cssPosition !== "relative" ) { return { top: 0, left: 0 }; } var p = this.element.position(), scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ); return { top: p.top - ( parseInt(this.helper.css( "top" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ), left: p.left - ( parseInt(this.helper.css( "left" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 ) }; }, _cacheMargins: function() { this.margins = { left: (parseInt(this.element.css("marginLeft"), 10) || 0), top: (parseInt(this.element.css("marginTop"), 10) || 0), right: (parseInt(this.element.css("marginRight"), 10) || 0), bottom: (parseInt(this.element.css("marginBottom"), 10) || 0) }; }, _cacheHelperProportions: function() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function() { var isUserScrollable, c, ce, o = this.options, document = this.document[ 0 ]; this.relativeContainer = null; if ( !o.containment ) { this.containment = null; return; } if ( o.containment === "window" ) { this.containment = [ $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left, $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top, $( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left, $( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top ]; return; } if ( o.containment === "document") { this.containment = [ 0, 0, $( document ).width() - this.helperProportions.width - this.margins.left, ( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top ]; return; } if ( o.containment.constructor === Array ) { this.containment = o.containment; return; } if ( o.containment === "parent" ) { o.containment = this.helper[ 0 ].parentNode; } c = $( o.containment ); ce = c[ 0 ]; if ( !ce ) { return; } isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) ); this.containment = [ ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ), ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ), ( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) - this.helperProportions.width - this.margins.left - this.margins.right, ( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) - ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) - this.helperProportions.height - this.margins.top - this.margins.bottom ]; this.relativeContainer = c; }, _convertPositionTo: function(d, pos) { if (!pos) { pos = this.position; } var mod = d === "absolute" ? 1 : -1, scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ); return { top: ( pos.top + // The absolute mouse position this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod) ), left: ( pos.left + // The absolute mouse position this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod) ) }; }, _generatePosition: function( event, constrainPosition ) { var containment, co, top, left, o = this.options, scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ), pageX = event.pageX, pageY = event.pageY; // Cache the scroll if ( !scrollIsRootNode || !this.offset.scroll ) { this.offset.scroll = { top: this.scrollParent.scrollTop(), left: this.scrollParent.scrollLeft() }; } /* * - Position constraining - * Constrain the position to a mix of grid, containment. */ // If we are not dragging yet, we won't check for options if ( constrainPosition ) { if ( this.containment ) { if ( this.relativeContainer ){ co = this.relativeContainer.offset(); containment = [ this.containment[ 0 ] + co.left, this.containment[ 1 ] + co.top, this.containment[ 2 ] + co.left, this.containment[ 3 ] + co.top ]; } else { containment = this.containment; } if (event.pageX - this.offset.click.left < containment[0]) { pageX = containment[0] + this.offset.click.left; } if (event.pageY - this.offset.click.top < containment[1]) { pageY = containment[1] + this.offset.click.top; } if (event.pageX - this.offset.click.left > containment[2]) { pageX = containment[2] + this.offset.click.left; } if (event.pageY - this.offset.click.top > containment[3]) { pageY = containment[3] + this.offset.click.top; } } if (o.grid) { //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950) top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; } if ( o.axis === "y" ) { pageX = this.originalPageX; } if ( o.axis === "x" ) { pageY = this.originalPageY; } } return { top: ( pageY - // The absolute mouse position this.offset.click.top - // Click offset (relative to the element) this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top + // The offsetParent's offset without borders (offset + border) ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) ), left: ( pageX - // The absolute mouse position this.offset.click.left - // Click offset (relative to the element) this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left + // The offsetParent's offset without borders (offset + border) ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) ) }; }, _clear: function() { this.helper.removeClass("ui-draggable-dragging"); if (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) { this.helper.remove(); } this.helper = null; this.cancelHelperRemoval = false; if ( this.destroyOnClear ) { this.destroy(); } }, _normalizeRightBottom: function() { if ( this.options.axis !== "y" && this.helper.css( "right" ) !== "auto" ) { this.helper.width( this.helper.width() ); this.helper.css( "right", "auto" ); } if ( this.options.axis !== "x" && this.helper.css( "bottom" ) !== "auto" ) { this.helper.height( this.helper.height() ); this.helper.css( "bottom", "auto" ); } }, // From now on bulk stuff - mainly helpers _trigger: function( type, event, ui ) { ui = ui || this._uiHash(); $.ui.plugin.call( this, type, [ event, ui, this ], true ); // Absolute position and offset (see #6884 ) have to be recalculated after plugins if ( /^(drag|start|stop)/.test( type ) ) { this.positionAbs = this._convertPositionTo( "absolute" ); ui.offset = this.positionAbs; } return $.Widget.prototype._trigger.call( this, type, event, ui ); }, plugins: {}, _uiHash: function() { return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs }; } }); $.ui.plugin.add( "draggable", "connectToSortable", { start: function( event, ui, draggable ) { var uiSortable = $.extend( {}, ui, { item: draggable.element }); draggable.sortables = []; $( draggable.options.connectToSortable ).each(function() { var sortable = $( this ).sortable( "instance" ); if ( sortable && !sortable.options.disabled ) { draggable.sortables.push( sortable ); // refreshPositions is called at drag start to refresh the containerCache // which is used in drag. This ensures it's initialized and synchronized // with any changes that might have happened on the page since initialization. sortable.refreshPositions(); sortable._trigger("activate", event, uiSortable); } }); }, stop: function( event, ui, draggable ) { var uiSortable = $.extend( {}, ui, { item: draggable.element }); draggable.cancelHelperRemoval = false; $.each( draggable.sortables, function() { var sortable = this; if ( sortable.isOver ) { sortable.isOver = 0; // Allow this sortable to handle removing the helper draggable.cancelHelperRemoval = true; sortable.cancelHelperRemoval = false; // Use _storedCSS To restore properties in the sortable, // as this also handles revert (#9675) since the draggable // may have modified them in unexpected ways (#8809) sortable._storedCSS = { position: sortable.placeholder.css( "position" ), top: sortable.placeholder.css( "top" ), left: sortable.placeholder.css( "left" ) }; sortable._mouseStop(event); // Once drag has ended, the sortable should return to using // its original helper, not the shared helper from draggable sortable.options.helper = sortable.options._helper; } else { // Prevent this Sortable from removing the helper. // However, don't set the draggable to remove the helper // either as another connected Sortable may yet handle the removal. sortable.cancelHelperRemoval = true; sortable._trigger( "deactivate", event, uiSortable ); } }); }, drag: function( event, ui, draggable ) { $.each( draggable.sortables, function() { var innermostIntersecting = false, sortable = this; // Copy over variables that sortable's _intersectsWith uses sortable.positionAbs = draggable.positionAbs; sortable.helperProportions = draggable.helperProportions; sortable.offset.click = draggable.offset.click; if ( sortable._intersectsWith( sortable.containerCache ) ) { innermostIntersecting = true; $.each( draggable.sortables, function() { // Copy over variables that sortable's _intersectsWith uses this.positionAbs = draggable.positionAbs; this.helperProportions = draggable.helperProportions; this.offset.click = draggable.offset.click; if ( this !== sortable && this._intersectsWith( this.containerCache ) && $.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) { innermostIntersecting = false; } return innermostIntersecting; }); } if ( innermostIntersecting ) { // If it intersects, we use a little isOver variable and set it once, // so that the move-in stuff gets fired only once. if ( !sortable.isOver ) { sortable.isOver = 1; // Store draggable's parent in case we need to reappend to it later. draggable._parent = ui.helper.parent(); sortable.currentItem = ui.helper .appendTo( sortable.element ) .data( "ui-sortable-item", true ); // Store helper option to later restore it sortable.options._helper = sortable.options.helper; sortable.options.helper = function() { return ui.helper[ 0 ]; }; // Fire the start events of the sortable with our passed browser event, // and our own helper (so it doesn't create a new one) event.target = sortable.currentItem[ 0 ]; sortable._mouseCapture( event, true ); sortable._mouseStart( event, true, true ); // Because the browser event is way off the new appended portlet, // modify necessary variables to reflect the changes sortable.offset.click.top = draggable.offset.click.top; sortable.offset.click.left = draggable.offset.click.left; sortable.offset.parent.left -= draggable.offset.parent.left - sortable.offset.parent.left; sortable.offset.parent.top -= draggable.offset.parent.top - sortable.offset.parent.top; draggable._trigger( "toSortable", event ); // Inform draggable that the helper is in a valid drop zone, // used solely in the revert option to handle "valid/invalid". draggable.dropped = sortable.element; // Need to refreshPositions of all sortables in the case that // adding to one sortable changes the location of the other sortables (#9675) $.each( draggable.sortables, function() { this.refreshPositions(); }); // hack so receive/update callbacks work (mostly) draggable.currentItem = draggable.element; sortable.fromOutside = draggable; } if ( sortable.currentItem ) { sortable._mouseDrag( event ); // Copy the sortable's position because the draggable's can potentially reflect // a relative position, while sortable is always absolute, which the dragged // element has now become. (#8809) ui.position = sortable.position; } } else { // If it doesn't intersect with the sortable, and it intersected before, // we fake the drag stop of the sortable, but make sure it doesn't remove // the helper by using cancelHelperRemoval. if ( sortable.isOver ) { sortable.isOver = 0; sortable.cancelHelperRemoval = true; // Calling sortable's mouseStop would trigger a revert, // so revert must be temporarily false until after mouseStop is called. sortable.options._revert = sortable.options.revert; sortable.options.revert = false; sortable._trigger( "out", event, sortable._uiHash( sortable ) ); sortable._mouseStop( event, true ); // restore sortable behaviors that were modfied // when the draggable entered the sortable area (#9481) sortable.options.revert = sortable.options._revert; sortable.options.helper = sortable.options._helper; if ( sortable.placeholder ) { sortable.placeholder.remove(); } // Restore and recalculate the draggable's offset considering the sortable // may have modified them in unexpected ways. (#8809, #10669) ui.helper.appendTo( draggable._parent ); draggable._refreshOffsets( event ); ui.position = draggable._generatePosition( event, true ); draggable._trigger( "fromSortable", event ); // Inform draggable that the helper is no longer in a valid drop zone draggable.dropped = false; // Need to refreshPositions of all sortables just in case removing // from one sortable changes the location of other sortables (#9675) $.each( draggable.sortables, function() { this.refreshPositions(); }); } } }); } }); $.ui.plugin.add("draggable", "cursor", { start: function( event, ui, instance ) { var t = $( "body" ), o = instance.options; if (t.css("cursor")) { o._cursor = t.css("cursor"); } t.css("cursor", o.cursor); }, stop: function( event, ui, instance ) { var o = instance.options; if (o._cursor) { $("body").css("cursor", o._cursor); } } }); $.ui.plugin.add("draggable", "opacity", { start: function( event, ui, instance ) { var t = $( ui.helper ), o = instance.options; if (t.css("opacity")) { o._opacity = t.css("opacity"); } t.css("opacity", o.opacity); }, stop: function( event, ui, instance ) { var o = instance.options; if (o._opacity) { $(ui.helper).css("opacity", o._opacity); } } }); $.ui.plugin.add("draggable", "scroll", { start: function( event, ui, i ) { if ( !i.scrollParentNotHidden ) { i.scrollParentNotHidden = i.helper.scrollParent( false ); } if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) { i.overflowOffset = i.scrollParentNotHidden.offset(); } }, drag: function( event, ui, i ) { var o = i.options, scrolled = false, scrollParent = i.scrollParentNotHidden[ 0 ], document = i.document[ 0 ]; if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) { if ( !o.axis || o.axis !== "x" ) { if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY < o.scrollSensitivity ) { scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed; } else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) { scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed; } } if ( !o.axis || o.axis !== "y" ) { if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX < o.scrollSensitivity ) { scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed; } else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) { scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed; } } } else { if (!o.axis || o.axis !== "x") { if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) { scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); } else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) { scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); } } if (!o.axis || o.axis !== "y") { if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) { scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); } else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) { scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); } } } if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(i, event); } } }); $.ui.plugin.add("draggable", "snap", { start: function( event, ui, i ) { var o = i.options; i.snapElements = []; $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() { var $t = $(this), $o = $t.offset(); if (this !== i.element[0]) { i.snapElements.push({ item: this, width: $t.outerWidth(), height: $t.outerHeight(), top: $o.top, left: $o.left }); } }); }, drag: function( event, ui, inst ) { var ts, bs, ls, rs, l, r, t, b, i, first, o = inst.options, d = o.snapTolerance, x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height; for (i = inst.snapElements.length - 1; i >= 0; i--){ l = inst.snapElements[i].left - inst.margins.left; r = l + inst.snapElements[i].width; t = inst.snapElements[i].top - inst.margins.top; b = t + inst.snapElements[i].height; if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) { if (inst.snapElements[i].snapping) { (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); } inst.snapElements[i].snapping = false; continue; } if (o.snapMode !== "inner") { ts = Math.abs(t - y2) <= d; bs = Math.abs(b - y1) <= d; ls = Math.abs(l - x2) <= d; rs = Math.abs(r - x1) <= d; if (ts) { ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top; } if (bs) { ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top; } if (ls) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left; } if (rs) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left; } } first = (ts || bs || ls || rs); if (o.snapMode !== "outer") { ts = Math.abs(t - y1) <= d; bs = Math.abs(b - y2) <= d; ls = Math.abs(l - x1) <= d; rs = Math.abs(r - x2) <= d; if (ts) { ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top; } if (bs) { ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top; } if (ls) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left; } if (rs) { ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left; } } if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) { (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item }))); } inst.snapElements[i].snapping = (ts || bs || ls || rs || first); } } }); $.ui.plugin.add("draggable", "stack", { start: function( event, ui, instance ) { var min, o = instance.options, group = $.makeArray($(o.stack)).sort(function(a, b) { return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0); }); if (!group.length) { return; } min = parseInt($(group[0]).css("zIndex"), 10) || 0; $(group).each(function(i) { $(this).css("zIndex", min + i); }); this.css("zIndex", (min + group.length)); } }); $.ui.plugin.add("draggable", "zIndex", { start: function( event, ui, instance ) { var t = $( ui.helper ), o = instance.options; if (t.css("zIndex")) { o._zIndex = t.css("zIndex"); } t.css("zIndex", o.zIndex); }, stop: function( event, ui, instance ) { var o = instance.options; if (o._zIndex) { $(ui.helper).css("zIndex", o._zIndex); } } }); var draggable = $.ui.draggable; /*! * jQuery UI Resizable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/resizable/ */ $.widget("ui.resizable", $.ui.mouse, { version: "1.11.4", widgetEventPrefix: "resize", options: { alsoResize: false, animate: false, animateDuration: "slow", animateEasing: "swing", aspectRatio: false, autoHide: false, containment: false, ghost: false, grid: false, handles: "e,s,se", helper: false, maxHeight: null, maxWidth: null, minHeight: 10, minWidth: 10, // See #7960 zIndex: 90, // callbacks resize: null, start: null, stop: null }, _num: function( value ) { return parseInt( value, 10 ) || 0; }, _isNumber: function( value ) { return !isNaN( parseInt( value, 10 ) ); }, _hasScroll: function( el, a ) { if ( $( el ).css( "overflow" ) === "hidden") { return false; } var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop", has = false; if ( el[ scroll ] > 0 ) { return true; } // TODO: determine which cases actually cause this to happen // if the element doesn't have the scroll set, see if it's possible to // set the scroll el[ scroll ] = 1; has = ( el[ scroll ] > 0 ); el[ scroll ] = 0; return has; }, _create: function() { var n, i, handle, axis, hname, that = this, o = this.options; this.element.addClass("ui-resizable"); $.extend(this, { _aspectRatio: !!(o.aspectRatio), aspectRatio: o.aspectRatio, originalElement: this.element, _proportionallyResizeElements: [], _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null }); // Wrap the element if it cannot hold child nodes if (this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)) { this.element.wrap( $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({ position: this.element.css("position"), width: this.element.outerWidth(), height: this.element.outerHeight(), top: this.element.css("top"), left: this.element.css("left") }) ); this.element = this.element.parent().data( "ui-resizable", this.element.resizable( "instance" ) ); this.elementIsWrapper = true; this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }); this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0 }); // support: Safari // Prevent Safari textarea resize this.originalResizeStyle = this.originalElement.css("resize"); this.originalElement.css("resize", "none"); this._proportionallyResizeElements.push( this.originalElement.css({ position: "static", zoom: 1, display: "block" }) ); // support: IE9 // avoid IE jump (hard set the margin) this.originalElement.css({ margin: this.originalElement.css("margin") }); this._proportionallyResize(); } this.handles = o.handles || ( !$(".ui-resizable-handle", this.element).length ? "e,s,se" : { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" } ); this._handles = $(); if ( this.handles.constructor === String ) { if ( this.handles === "all") { this.handles = "n,e,s,w,se,sw,ne,nw"; } n = this.handles.split(","); this.handles = {}; for (i = 0; i < n.length; i++) { handle = $.trim(n[i]); hname = "ui-resizable-" + handle; axis = $("<div class='ui-resizable-handle " + hname + "'></div>"); axis.css({ zIndex: o.zIndex }); // TODO : What's going on here? if ("se" === handle) { axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"); } this.handles[handle] = ".ui-resizable-" + handle; this.element.append(axis); } } this._renderAxis = function(target) { var i, axis, padPos, padWrapper; target = target || this.element; for (i in this.handles) { if (this.handles[i].constructor === String) { this.handles[i] = this.element.children( this.handles[ i ] ).first().show(); } else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) { this.handles[ i ] = $( this.handles[ i ] ); this._on( this.handles[ i ], { "mousedown": that._mouseDown }); } if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)) { axis = $(this.handles[i], this.element); padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(); padPos = [ "padding", /ne|nw|n/.test(i) ? "Top" : /se|sw|s/.test(i) ? "Bottom" : /^e$/.test(i) ? "Right" : "Left" ].join(""); target.css(padPos, padWrapper); this._proportionallyResize(); } this._handles = this._handles.add( this.handles[ i ] ); } }; // TODO: make renderAxis a prototype function this._renderAxis(this.element); this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) ); this._handles.disableSelection(); this._handles.mouseover(function() { if (!that.resizing) { if (this.className) { axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i); } that.axis = axis && axis[1] ? axis[1] : "se"; } }); if (o.autoHide) { this._handles.hide(); $(this.element) .addClass("ui-resizable-autohide") .mouseenter(function() { if (o.disabled) { return; } $(this).removeClass("ui-resizable-autohide"); that._handles.show(); }) .mouseleave(function() { if (o.disabled) { return; } if (!that.resizing) { $(this).addClass("ui-resizable-autohide"); that._handles.hide(); } }); } this._mouseInit(); }, _destroy: function() { this._mouseDestroy(); var wrapper, _destroy = function(exp) { $(exp) .removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing") .removeData("resizable") .removeData("ui-resizable") .unbind(".resizable") .find(".ui-resizable-handle") .remove(); }; // TODO: Unwrap at same DOM position if (this.elementIsWrapper) { _destroy(this.element); wrapper = this.element; this.originalElement.css({ position: wrapper.css("position"), width: wrapper.outerWidth(), height: wrapper.outerHeight(), top: wrapper.css("top"), left: wrapper.css("left") }).insertAfter( wrapper ); wrapper.remove(); } this.originalElement.css("resize", this.originalResizeStyle); _destroy(this.originalElement); return this; }, _mouseCapture: function(event) { var i, handle, capture = false; for (i in this.handles) { handle = $(this.handles[i])[0]; if (handle === event.target || $.contains(handle, event.target)) { capture = true; } } return !this.options.disabled && capture; }, _mouseStart: function(event) { var curleft, curtop, cursor, o = this.options, el = this.element; this.resizing = true; this._renderProxy(); curleft = this._num(this.helper.css("left")); curtop = this._num(this.helper.css("top")); if (o.containment) { curleft += $(o.containment).scrollLeft() || 0; curtop += $(o.containment).scrollTop() || 0; } this.offset = this.helper.offset(); this.position = { left: curleft, top: curtop }; this.size = this._helper ? { width: this.helper.width(), height: this.helper.height() } : { width: el.width(), height: el.height() }; this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() }; this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() }; this.originalPosition = { left: curleft, top: curtop }; this.originalMousePosition = { left: event.pageX, top: event.pageY }; this.aspectRatio = (typeof o.aspectRatio === "number") ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1); cursor = $(".ui-resizable-" + this.axis).css("cursor"); $("body").css("cursor", cursor === "auto" ? this.axis + "-resize" : cursor); el.addClass("ui-resizable-resizing"); this._propagate("start", event); return true; }, _mouseDrag: function(event) { var data, props, smp = this.originalMousePosition, a = this.axis, dx = (event.pageX - smp.left) || 0, dy = (event.pageY - smp.top) || 0, trigger = this._change[a]; this._updatePrevProperties(); if (!trigger) { return false; } data = trigger.apply(this, [ event, dx, dy ]); this._updateVirtualBoundaries(event.shiftKey); if (this._aspectRatio || event.shiftKey) { data = this._updateRatio(data, event); } data = this._respectSize(data, event); this._updateCache(data); this._propagate("resize", event); props = this._applyChanges(); if ( !this._helper && this._proportionallyResizeElements.length ) { this._proportionallyResize(); } if ( !$.isEmptyObject( props ) ) { this._updatePrevProperties(); this._trigger( "resize", event, this.ui() ); this._applyChanges(); } return false; }, _mouseStop: function(event) { this.resizing = false; var pr, ista, soffseth, soffsetw, s, left, top, o = this.options, that = this; if (this._helper) { pr = this._proportionallyResizeElements; ista = pr.length && (/textarea/i).test(pr[0].nodeName); soffseth = ista && this._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height; soffsetw = ista ? 0 : that.sizeDiff.width; s = { width: (that.helper.width() - soffsetw), height: (that.helper.height() - soffseth) }; left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null; top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; if (!o.animate) { this.element.css($.extend(s, { top: top, left: left })); } that.helper.height(that.size.height); that.helper.width(that.size.width); if (this._helper && !o.animate) { this._proportionallyResize(); } } $("body").css("cursor", "auto"); this.element.removeClass("ui-resizable-resizing"); this._propagate("stop", event); if (this._helper) { this.helper.remove(); } return false; }, _updatePrevProperties: function() { this.prevPosition = { top: this.position.top, left: this.position.left }; this.prevSize = { width: this.size.width, height: this.size.height }; }, _applyChanges: function() { var props = {}; if ( this.position.top !== this.prevPosition.top ) { props.top = this.position.top + "px"; } if ( this.position.left !== this.prevPosition.left ) { props.left = this.position.left + "px"; } if ( this.size.width !== this.prevSize.width ) { props.width = this.size.width + "px"; } if ( this.size.height !== this.prevSize.height ) { props.height = this.size.height + "px"; } this.helper.css( props ); return props; }, _updateVirtualBoundaries: function(forceAspectRatio) { var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, o = this.options; b = { minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0, maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity, minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0, maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity }; if (this._aspectRatio || forceAspectRatio) { pMinWidth = b.minHeight * this.aspectRatio; pMinHeight = b.minWidth / this.aspectRatio; pMaxWidth = b.maxHeight * this.aspectRatio; pMaxHeight = b.maxWidth / this.aspectRatio; if (pMinWidth > b.minWidth) { b.minWidth = pMinWidth; } if (pMinHeight > b.minHeight) { b.minHeight = pMinHeight; } if (pMaxWidth < b.maxWidth) { b.maxWidth = pMaxWidth; } if (pMaxHeight < b.maxHeight) { b.maxHeight = pMaxHeight; } } this._vBoundaries = b; }, _updateCache: function(data) { this.offset = this.helper.offset(); if (this._isNumber(data.left)) { this.position.left = data.left; } if (this._isNumber(data.top)) { this.position.top = data.top; } if (this._isNumber(data.height)) { this.size.height = data.height; } if (this._isNumber(data.width)) { this.size.width = data.width; } }, _updateRatio: function( data ) { var cpos = this.position, csize = this.size, a = this.axis; if (this._isNumber(data.height)) { data.width = (data.height * this.aspectRatio); } else if (this._isNumber(data.width)) { data.height = (data.width / this.aspectRatio); } if (a === "sw") { data.left = cpos.left + (csize.width - data.width); data.top = null; } if (a === "nw") { data.top = cpos.top + (csize.height - data.height); data.left = cpos.left + (csize.width - data.width); } return data; }, _respectSize: function( data ) { var o = this._vBoundaries, a = this.axis, ismaxw = this._isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = this._isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), isminw = this._isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = this._isNumber(data.height) && o.minHeight && (o.minHeight > data.height), dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height, cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a); if (isminw) { data.width = o.minWidth; } if (isminh) { data.height = o.minHeight; } if (ismaxw) { data.width = o.maxWidth; } if (ismaxh) { data.height = o.maxHeight; } if (isminw && cw) { data.left = dw - o.minWidth; } if (ismaxw && cw) { data.left = dw - o.maxWidth; } if (isminh && ch) { data.top = dh - o.minHeight; } if (ismaxh && ch) { data.top = dh - o.maxHeight; } // Fixing jump error on top/left - bug #2330 if (!data.width && !data.height && !data.left && data.top) { data.top = null; } else if (!data.width && !data.height && !data.top && data.left) { data.left = null; } return data; }, _getPaddingPlusBorderDimensions: function( element ) { var i = 0, widths = [], borders = [ element.css( "borderTopWidth" ), element.css( "borderRightWidth" ), element.css( "borderBottomWidth" ), element.css( "borderLeftWidth" ) ], paddings = [ element.css( "paddingTop" ), element.css( "paddingRight" ), element.css( "paddingBottom" ), element.css( "paddingLeft" ) ]; for ( ; i < 4; i++ ) { widths[ i ] = ( parseInt( borders[ i ], 10 ) || 0 ); widths[ i ] += ( parseInt( paddings[ i ], 10 ) || 0 ); } return { height: widths[ 0 ] + widths[ 2 ], width: widths[ 1 ] + widths[ 3 ] }; }, _proportionallyResize: function() { if (!this._proportionallyResizeElements.length) { return; } var prel, i = 0, element = this.helper || this.element; for ( ; i < this._proportionallyResizeElements.length; i++) { prel = this._proportionallyResizeElements[i]; // TODO: Seems like a bug to cache this.outerDimensions // considering that we are in a loop. if (!this.outerDimensions) { this.outerDimensions = this._getPaddingPlusBorderDimensions( prel ); } prel.css({ height: (element.height() - this.outerDimensions.height) || 0, width: (element.width() - this.outerDimensions.width) || 0 }); } }, _renderProxy: function() { var el = this.element, o = this.options; this.elementOffset = el.offset(); if (this._helper) { this.helper = this.helper || $("<div style='overflow:hidden;'></div>"); this.helper.addClass(this._helper).css({ width: this.element.outerWidth() - 1, height: this.element.outerHeight() - 1, position: "absolute", left: this.elementOffset.left + "px", top: this.elementOffset.top + "px", zIndex: ++o.zIndex //TODO: Don't modify option }); this.helper .appendTo("body") .disableSelection(); } else { this.helper = this.element; } }, _change: { e: function(event, dx) { return { width: this.originalSize.width + dx }; }, w: function(event, dx) { var cs = this.originalSize, sp = this.originalPosition; return { left: sp.left + dx, width: cs.width - dx }; }, n: function(event, dx, dy) { var cs = this.originalSize, sp = this.originalPosition; return { top: sp.top + dy, height: cs.height - dy }; }, s: function(event, dx, dy) { return { height: this.originalSize.height + dy }; }, se: function(event, dx, dy) { return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [ event, dx, dy ])); }, sw: function(event, dx, dy) { return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [ event, dx, dy ])); }, ne: function(event, dx, dy) { return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [ event, dx, dy ])); }, nw: function(event, dx, dy) { return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [ event, dx, dy ])); } }, _propagate: function(n, event) { $.ui.plugin.call(this, n, [ event, this.ui() ]); (n !== "resize" && this._trigger(n, event, this.ui())); }, plugins: {}, ui: function() { return { originalElement: this.originalElement, element: this.element, helper: this.helper, position: this.position, size: this.size, originalSize: this.originalSize, originalPosition: this.originalPosition }; } }); /* * Resizable Extensions */ $.ui.plugin.add("resizable", "animate", { stop: function( event ) { var that = $(this).resizable( "instance" ), o = that.options, pr = that._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName), soffseth = ista && that._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height, soffsetw = ista ? 0 : that.sizeDiff.width, style = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) }, left = (parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left)) || null, top = (parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top)) || null; that.element.animate( $.extend(style, top && left ? { top: top, left: left } : {}), { duration: o.animateDuration, easing: o.animateEasing, step: function() { var data = { width: parseInt(that.element.css("width"), 10), height: parseInt(that.element.css("height"), 10), top: parseInt(that.element.css("top"), 10), left: parseInt(that.element.css("left"), 10) }; if (pr && pr.length) { $(pr[0]).css({ width: data.width, height: data.height }); } // propagating resize, and updating values for each animation step that._updateCache(data); that._propagate("resize", event); } } ); } }); $.ui.plugin.add( "resizable", "containment", { start: function() { var element, p, co, ch, cw, width, height, that = $( this ).resizable( "instance" ), o = that.options, el = that.element, oc = o.containment, ce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc; if ( !ce ) { return; } that.containerElement = $( ce ); if ( /document/.test( oc ) || oc === document ) { that.containerOffset = { left: 0, top: 0 }; that.containerPosition = { left: 0, top: 0 }; that.parentData = { element: $( document ), left: 0, top: 0, width: $( document ).width(), height: $( document ).height() || document.body.parentNode.scrollHeight }; } else { element = $( ce ); p = []; $([ "Top", "Right", "Left", "Bottom" ]).each(function( i, name ) { p[ i ] = that._num( element.css( "padding" + name ) ); }); that.containerOffset = element.offset(); that.containerPosition = element.position(); that.containerSize = { height: ( element.innerHeight() - p[ 3 ] ), width: ( element.innerWidth() - p[ 1 ] ) }; co = that.containerOffset; ch = that.containerSize.height; cw = that.containerSize.width; width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw ); height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ; that.parentData = { element: ce, left: co.left, top: co.top, width: width, height: height }; } }, resize: function( event ) { var woset, hoset, isParent, isOffsetRelative, that = $( this ).resizable( "instance" ), o = that.options, co = that.containerOffset, cp = that.position, pRatio = that._aspectRatio || event.shiftKey, cop = { top: 0, left: 0 }, ce = that.containerElement, continueResize = true; if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) { cop = co; } if ( cp.left < ( that._helper ? co.left : 0 ) ) { that.size.width = that.size.width + ( that._helper ? ( that.position.left - co.left ) : ( that.position.left - cop.left ) ); if ( pRatio ) { that.size.height = that.size.width / that.aspectRatio; continueResize = false; } that.position.left = o.helper ? co.left : 0; } if ( cp.top < ( that._helper ? co.top : 0 ) ) { that.size.height = that.size.height + ( that._helper ? ( that.position.top - co.top ) : that.position.top ); if ( pRatio ) { that.size.width = that.size.height * that.aspectRatio; continueResize = false; } that.position.top = that._helper ? co.top : 0; } isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 ); isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) ); if ( isParent && isOffsetRelative ) { that.offset.left = that.parentData.left + that.position.left; that.offset.top = that.parentData.top + that.position.top; } else { that.offset.left = that.element.offset().left; that.offset.top = that.element.offset().top; } woset = Math.abs( that.sizeDiff.width + (that._helper ? that.offset.left - cop.left : (that.offset.left - co.left)) ); hoset = Math.abs( that.sizeDiff.height + (that._helper ? that.offset.top - cop.top : (that.offset.top - co.top)) ); if ( woset + that.size.width >= that.parentData.width ) { that.size.width = that.parentData.width - woset; if ( pRatio ) { that.size.height = that.size.width / that.aspectRatio; continueResize = false; } } if ( hoset + that.size.height >= that.parentData.height ) { that.size.height = that.parentData.height - hoset; if ( pRatio ) { that.size.width = that.size.height * that.aspectRatio; continueResize = false; } } if ( !continueResize ) { that.position.left = that.prevPosition.left; that.position.top = that.prevPosition.top; that.size.width = that.prevSize.width; that.size.height = that.prevSize.height; } }, stop: function() { var that = $( this ).resizable( "instance" ), o = that.options, co = that.containerOffset, cop = that.containerPosition, ce = that.containerElement, helper = $( that.helper ), ho = helper.offset(), w = helper.outerWidth() - that.sizeDiff.width, h = helper.outerHeight() - that.sizeDiff.height; if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) { $( this ).css({ left: ho.left - cop.left - co.left, width: w, height: h }); } if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) { $( this ).css({ left: ho.left - cop.left - co.left, width: w, height: h }); } } }); $.ui.plugin.add("resizable", "alsoResize", { start: function() { var that = $(this).resizable( "instance" ), o = that.options; $(o.alsoResize).each(function() { var el = $(this); el.data("ui-resizable-alsoresize", { width: parseInt(el.width(), 10), height: parseInt(el.height(), 10), left: parseInt(el.css("left"), 10), top: parseInt(el.css("top"), 10) }); }); }, resize: function(event, ui) { var that = $(this).resizable( "instance" ), o = that.options, os = that.originalSize, op = that.originalPosition, delta = { height: (that.size.height - os.height) || 0, width: (that.size.width - os.width) || 0, top: (that.position.top - op.top) || 0, left: (that.position.left - op.left) || 0 }; $(o.alsoResize).each(function() { var el = $(this), start = $(this).data("ui-resizable-alsoresize"), style = {}, css = el.parents(ui.originalElement[0]).length ? [ "width", "height" ] : [ "width", "height", "top", "left" ]; $.each(css, function(i, prop) { var sum = (start[prop] || 0) + (delta[prop] || 0); if (sum && sum >= 0) { style[prop] = sum || null; } }); el.css(style); }); }, stop: function() { $(this).removeData("resizable-alsoresize"); } }); $.ui.plugin.add("resizable", "ghost", { start: function() { var that = $(this).resizable( "instance" ), o = that.options, cs = that.size; that.ghost = that.originalElement.clone(); that.ghost .css({ opacity: 0.25, display: "block", position: "relative", height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 }) .addClass("ui-resizable-ghost") .addClass(typeof o.ghost === "string" ? o.ghost : ""); that.ghost.appendTo(that.helper); }, resize: function() { var that = $(this).resizable( "instance" ); if (that.ghost) { that.ghost.css({ position: "relative", height: that.size.height, width: that.size.width }); } }, stop: function() { var that = $(this).resizable( "instance" ); if (that.ghost && that.helper) { that.helper.get(0).removeChild(that.ghost.get(0)); } } }); $.ui.plugin.add("resizable", "grid", { resize: function() { var outerDimensions, that = $(this).resizable( "instance" ), o = that.options, cs = that.size, os = that.originalSize, op = that.originalPosition, a = that.axis, grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid, gridX = (grid[0] || 1), gridY = (grid[1] || 1), ox = Math.round((cs.width - os.width) / gridX) * gridX, oy = Math.round((cs.height - os.height) / gridY) * gridY, newWidth = os.width + ox, newHeight = os.height + oy, isMaxWidth = o.maxWidth && (o.maxWidth < newWidth), isMaxHeight = o.maxHeight && (o.maxHeight < newHeight), isMinWidth = o.minWidth && (o.minWidth > newWidth), isMinHeight = o.minHeight && (o.minHeight > newHeight); o.grid = grid; if (isMinWidth) { newWidth += gridX; } if (isMinHeight) { newHeight += gridY; } if (isMaxWidth) { newWidth -= gridX; } if (isMaxHeight) { newHeight -= gridY; } if (/^(se|s|e)$/.test(a)) { that.size.width = newWidth; that.size.height = newHeight; } else if (/^(ne)$/.test(a)) { that.size.width = newWidth; that.size.height = newHeight; that.position.top = op.top - oy; } else if (/^(sw)$/.test(a)) { that.size.width = newWidth; that.size.height = newHeight; that.position.left = op.left - ox; } else { if ( newHeight - gridY <= 0 || newWidth - gridX <= 0) { outerDimensions = that._getPaddingPlusBorderDimensions( this ); } if ( newHeight - gridY > 0 ) { that.size.height = newHeight; that.position.top = op.top - oy; } else { newHeight = gridY - outerDimensions.height; that.size.height = newHeight; that.position.top = op.top + os.height - newHeight; } if ( newWidth - gridX > 0 ) { that.size.width = newWidth; that.position.left = op.left - ox; } else { newWidth = gridX - outerDimensions.width; that.size.width = newWidth; that.position.left = op.left + os.width - newWidth; } } } }); var resizable = $.ui.resizable; /*! * jQuery UI Dialog 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/dialog/ */ var dialog = $.widget( "ui.dialog", { version: "1.11.4", options: { appendTo: "body", autoOpen: true, buttons: [], closeOnEscape: true, closeText: "Close", dialogClass: "", draggable: true, hide: null, height: "auto", maxHeight: null, maxWidth: null, minHeight: 150, minWidth: 150, modal: false, position: { my: "center", at: "center", of: window, collision: "fit", // Ensure the titlebar is always visible using: function( pos ) { var topOffset = $( this ).css( pos ).offset().top; if ( topOffset < 0 ) { $( this ).css( "top", pos.top - topOffset ); } } }, resizable: true, show: null, title: null, width: 300, // callbacks beforeClose: null, close: null, drag: null, dragStart: null, dragStop: null, focus: null, open: null, resize: null, resizeStart: null, resizeStop: null }, sizeRelatedOptions: { buttons: true, height: true, maxHeight: true, maxWidth: true, minHeight: true, minWidth: true, width: true }, resizableRelatedOptions: { maxHeight: true, maxWidth: true, minHeight: true, minWidth: true }, _create: function() { this.originalCss = { display: this.element[ 0 ].style.display, width: this.element[ 0 ].style.width, minHeight: this.element[ 0 ].style.minHeight, maxHeight: this.element[ 0 ].style.maxHeight, height: this.element[ 0 ].style.height }; this.originalPosition = { parent: this.element.parent(), index: this.element.parent().children().index( this.element ) }; this.originalTitle = this.element.attr( "title" ); this.options.title = this.options.title || this.originalTitle; this._createWrapper(); this.element .show() .removeAttr( "title" ) .addClass( "ui-dialog-content ui-widget-content" ) .appendTo( this.uiDialog ); this._createTitlebar(); this._createButtonPane(); if ( this.options.draggable && $.fn.draggable ) { this._makeDraggable(); } if ( this.options.resizable && $.fn.resizable ) { this._makeResizable(); } this._isOpen = false; this._trackFocus(); }, _init: function() { if ( this.options.autoOpen ) { this.open(); } }, _appendTo: function() { var element = this.options.appendTo; if ( element && (element.jquery || element.nodeType) ) { return $( element ); } return this.document.find( element || "body" ).eq( 0 ); }, _destroy: function() { var next, originalPosition = this.originalPosition; this._untrackInstance(); this._destroyOverlay(); this.element .removeUniqueId() .removeClass( "ui-dialog-content ui-widget-content" ) .css( this.originalCss ) // Without detaching first, the following becomes really slow .detach(); this.uiDialog.stop( true, true ).remove(); if ( this.originalTitle ) { this.element.attr( "title", this.originalTitle ); } next = originalPosition.parent.children().eq( originalPosition.index ); // Don't try to place the dialog next to itself (#8613) if ( next.length && next[ 0 ] !== this.element[ 0 ] ) { next.before( this.element ); } else { originalPosition.parent.append( this.element ); } }, widget: function() { return this.uiDialog; }, disable: $.noop, enable: $.noop, close: function( event ) { var activeElement, that = this; if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) { return; } this._isOpen = false; this._focusedElement = null; this._destroyOverlay(); this._untrackInstance(); if ( !this.opener.filter( ":focusable" ).focus().length ) { // support: IE9 // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> try { activeElement = this.document[ 0 ].activeElement; // Support: IE9, IE10 // If the <body> is blurred, IE will switch windows, see #4520 if ( activeElement && activeElement.nodeName.toLowerCase() !== "body" ) { // Hiding a focused element doesn't trigger blur in WebKit // so in case we have nothing to focus on, explicitly blur the active element // https://bugs.webkit.org/show_bug.cgi?id=47182 $( activeElement ).blur(); } } catch ( error ) {} } this._hide( this.uiDialog, this.options.hide, function() { that._trigger( "close", event ); }); }, isOpen: function() { return this._isOpen; }, moveToTop: function() { this._moveToTop(); }, _moveToTop: function( event, silent ) { var moved = false, zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map(function() { return +$( this ).css( "z-index" ); }).get(), zIndexMax = Math.max.apply( null, zIndices ); if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) { this.uiDialog.css( "z-index", zIndexMax + 1 ); moved = true; } if ( moved && !silent ) { this._trigger( "focus", event ); } return moved; }, open: function() { var that = this; if ( this._isOpen ) { if ( this._moveToTop() ) { this._focusTabbable(); } return; } this._isOpen = true; this.opener = $( this.document[ 0 ].activeElement ); this._size(); this._position(); this._createOverlay(); this._moveToTop( null, true ); // Ensure the overlay is moved to the top with the dialog, but only when // opening. The overlay shouldn't move after the dialog is open so that // modeless dialogs opened after the modal dialog stack properly. if ( this.overlay ) { this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 ); } this._show( this.uiDialog, this.options.show, function() { that._focusTabbable(); that._trigger( "focus" ); }); // Track the dialog immediately upon openening in case a focus event // somehow occurs outside of the dialog before an element inside the // dialog is focused (#10152) this._makeFocusTarget(); this._trigger( "open" ); }, _focusTabbable: function() { // Set focus to the first match: // 1. An element that was focused previously // 2. First element inside the dialog matching [autofocus] // 3. Tabbable element inside the content element // 4. Tabbable element inside the buttonpane // 5. The close button // 6. The dialog itself var hasFocus = this._focusedElement; if ( !hasFocus ) { hasFocus = this.element.find( "[autofocus]" ); } if ( !hasFocus.length ) { hasFocus = this.element.find( ":tabbable" ); } if ( !hasFocus.length ) { hasFocus = this.uiDialogButtonPane.find( ":tabbable" ); } if ( !hasFocus.length ) { hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" ); } if ( !hasFocus.length ) { hasFocus = this.uiDialog; } hasFocus.eq( 0 ).focus(); }, _keepFocus: function( event ) { function checkFocus() { var activeElement = this.document[0].activeElement, isActive = this.uiDialog[0] === activeElement || $.contains( this.uiDialog[0], activeElement ); if ( !isActive ) { this._focusTabbable(); } } event.preventDefault(); checkFocus.call( this ); // support: IE // IE <= 8 doesn't prevent moving focus even with event.preventDefault() // so we check again later this._delay( checkFocus ); }, _createWrapper: function() { this.uiDialog = $("<div>") .addClass( "ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " + this.options.dialogClass ) .hide() .attr({ // Setting tabIndex makes the div focusable tabIndex: -1, role: "dialog" }) .appendTo( this._appendTo() ); this._on( this.uiDialog, { keydown: function( event ) { if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE ) { event.preventDefault(); this.close( event ); return; } // prevent tabbing out of dialogs if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) { return; } var tabbables = this.uiDialog.find( ":tabbable" ), first = tabbables.filter( ":first" ), last = tabbables.filter( ":last" ); if ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) { this._delay(function() { first.focus(); }); event.preventDefault(); } else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) { this._delay(function() { last.focus(); }); event.preventDefault(); } }, mousedown: function( event ) { if ( this._moveToTop( event ) ) { this._focusTabbable(); } } }); // We assume that any existing aria-describedby attribute means // that the dialog content is marked up properly // otherwise we brute force the content as the description if ( !this.element.find( "[aria-describedby]" ).length ) { this.uiDialog.attr({ "aria-describedby": this.element.uniqueId().attr( "id" ) }); } }, _createTitlebar: function() { var uiDialogTitle; this.uiDialogTitlebar = $( "<div>" ) .addClass( "ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix" ) .prependTo( this.uiDialog ); this._on( this.uiDialogTitlebar, { mousedown: function( event ) { // Don't prevent click on close button (#8838) // Focusing a dialog that is partially scrolled out of view // causes the browser to scroll it into view, preventing the click event if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) { // Dialog isn't getting focus when dragging (#8063) this.uiDialog.focus(); } } }); // support: IE // Use type="button" to prevent enter keypresses in textboxes from closing the // dialog in IE (#9312) this.uiDialogTitlebarClose = $( "<button type='button'></button>" ) .button({ label: this.options.closeText, icons: { primary: "ui-icon-closethick" }, text: false }) .addClass( "ui-dialog-titlebar-close" ) .appendTo( this.uiDialogTitlebar ); this._on( this.uiDialogTitlebarClose, { click: function( event ) { event.preventDefault(); this.close( event ); } }); uiDialogTitle = $( "<span>" ) .uniqueId() .addClass( "ui-dialog-title" ) .prependTo( this.uiDialogTitlebar ); this._title( uiDialogTitle ); this.uiDialog.attr({ "aria-labelledby": uiDialogTitle.attr( "id" ) }); }, _title: function( title ) { if ( !this.options.title ) { title.html( " " ); } title.text( this.options.title ); }, _createButtonPane: function() { this.uiDialogButtonPane = $( "<div>" ) .addClass( "ui-dialog-buttonpane ui-widget-content ui-helper-clearfix" ); this.uiButtonSet = $( "<div>" ) .addClass( "ui-dialog-buttonset" ) .appendTo( this.uiDialogButtonPane ); this._createButtons(); }, _createButtons: function() { var that = this, buttons = this.options.buttons; // if we already have a button pane, remove it this.uiDialogButtonPane.remove(); this.uiButtonSet.empty(); if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) { this.uiDialog.removeClass( "ui-dialog-buttons" ); return; } $.each( buttons, function( name, props ) { var click, buttonOptions; props = $.isFunction( props ) ? { click: props, text: name } : props; // Default to a non-submitting button props = $.extend( { type: "button" }, props ); // Change the context for the click callback to be the main element click = props.click; props.click = function() { click.apply( that.element[ 0 ], arguments ); }; buttonOptions = { icons: props.icons, text: props.showText }; delete props.icons; delete props.showText; $( "<button></button>", props ) .button( buttonOptions ) .appendTo( that.uiButtonSet ); }); this.uiDialog.addClass( "ui-dialog-buttons" ); this.uiDialogButtonPane.appendTo( this.uiDialog ); }, _makeDraggable: function() { var that = this, options = this.options; function filteredUi( ui ) { return { position: ui.position, offset: ui.offset }; } this.uiDialog.draggable({ cancel: ".ui-dialog-content, .ui-dialog-titlebar-close", handle: ".ui-dialog-titlebar", containment: "document", start: function( event, ui ) { $( this ).addClass( "ui-dialog-dragging" ); that._blockFrames(); that._trigger( "dragStart", event, filteredUi( ui ) ); }, drag: function( event, ui ) { that._trigger( "drag", event, filteredUi( ui ) ); }, stop: function( event, ui ) { var left = ui.offset.left - that.document.scrollLeft(), top = ui.offset.top - that.document.scrollTop(); options.position = { my: "left top", at: "left" + (left >= 0 ? "+" : "") + left + " " + "top" + (top >= 0 ? "+" : "") + top, of: that.window }; $( this ).removeClass( "ui-dialog-dragging" ); that._unblockFrames(); that._trigger( "dragStop", event, filteredUi( ui ) ); } }); }, _makeResizable: function() { var that = this, options = this.options, handles = options.resizable, // .ui-resizable has position: relative defined in the stylesheet // but dialogs have to use absolute or fixed positioning position = this.uiDialog.css("position"), resizeHandles = typeof handles === "string" ? handles : "n,e,s,w,se,sw,ne,nw"; function filteredUi( ui ) { return { originalPosition: ui.originalPosition, originalSize: ui.originalSize, position: ui.position, size: ui.size }; } this.uiDialog.resizable({ cancel: ".ui-dialog-content", containment: "document", alsoResize: this.element, maxWidth: options.maxWidth, maxHeight: options.maxHeight, minWidth: options.minWidth, minHeight: this._minHeight(), handles: resizeHandles, start: function( event, ui ) { $( this ).addClass( "ui-dialog-resizing" ); that._blockFrames(); that._trigger( "resizeStart", event, filteredUi( ui ) ); }, resize: function( event, ui ) { that._trigger( "resize", event, filteredUi( ui ) ); }, stop: function( event, ui ) { var offset = that.uiDialog.offset(), left = offset.left - that.document.scrollLeft(), top = offset.top - that.document.scrollTop(); options.height = that.uiDialog.height(); options.width = that.uiDialog.width(); options.position = { my: "left top", at: "left" + (left >= 0 ? "+" : "") + left + " " + "top" + (top >= 0 ? "+" : "") + top, of: that.window }; $( this ).removeClass( "ui-dialog-resizing" ); that._unblockFrames(); that._trigger( "resizeStop", event, filteredUi( ui ) ); } }) .css( "position", position ); }, _trackFocus: function() { this._on( this.widget(), { focusin: function( event ) { this._makeFocusTarget(); this._focusedElement = $( event.target ); } }); }, _makeFocusTarget: function() { this._untrackInstance(); this._trackingInstances().unshift( this ); }, _untrackInstance: function() { var instances = this._trackingInstances(), exists = $.inArray( this, instances ); if ( exists !== -1 ) { instances.splice( exists, 1 ); } }, _trackingInstances: function() { var instances = this.document.data( "ui-dialog-instances" ); if ( !instances ) { instances = []; this.document.data( "ui-dialog-instances", instances ); } return instances; }, _minHeight: function() { var options = this.options; return options.height === "auto" ? options.minHeight : Math.min( options.minHeight, options.height ); }, _position: function() { // Need to show the dialog to get the actual offset in the position plugin var isVisible = this.uiDialog.is( ":visible" ); if ( !isVisible ) { this.uiDialog.show(); } this.uiDialog.position( this.options.position ); if ( !isVisible ) { this.uiDialog.hide(); } }, _setOptions: function( options ) { var that = this, resize = false, resizableOptions = {}; $.each( options, function( key, value ) { that._setOption( key, value ); if ( key in that.sizeRelatedOptions ) { resize = true; } if ( key in that.resizableRelatedOptions ) { resizableOptions[ key ] = value; } }); if ( resize ) { this._size(); this._position(); } if ( this.uiDialog.is( ":data(ui-resizable)" ) ) { this.uiDialog.resizable( "option", resizableOptions ); } }, _setOption: function( key, value ) { var isDraggable, isResizable, uiDialog = this.uiDialog; if ( key === "dialogClass" ) { uiDialog .removeClass( this.options.dialogClass ) .addClass( value ); } if ( key === "disabled" ) { return; } this._super( key, value ); if ( key === "appendTo" ) { this.uiDialog.appendTo( this._appendTo() ); } if ( key === "buttons" ) { this._createButtons(); } if ( key === "closeText" ) { this.uiDialogTitlebarClose.button({ // Ensure that we always pass a string label: "" + value }); } if ( key === "draggable" ) { isDraggable = uiDialog.is( ":data(ui-draggable)" ); if ( isDraggable && !value ) { uiDialog.draggable( "destroy" ); } if ( !isDraggable && value ) { this._makeDraggable(); } } if ( key === "position" ) { this._position(); } if ( key === "resizable" ) { // currently resizable, becoming non-resizable isResizable = uiDialog.is( ":data(ui-resizable)" ); if ( isResizable && !value ) { uiDialog.resizable( "destroy" ); } // currently resizable, changing handles if ( isResizable && typeof value === "string" ) { uiDialog.resizable( "option", "handles", value ); } // currently non-resizable, becoming resizable if ( !isResizable && value !== false ) { this._makeResizable(); } } if ( key === "title" ) { this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) ); } }, _size: function() { // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content // divs will both have width and height set, so we need to reset them var nonContentHeight, minContentHeight, maxContentHeight, options = this.options; // Reset content sizing this.element.show().css({ width: "auto", minHeight: 0, maxHeight: "none", height: 0 }); if ( options.minWidth > options.width ) { options.width = options.minWidth; } // reset wrapper sizing // determine the height of all the non-content elements nonContentHeight = this.uiDialog.css({ height: "auto", width: options.width }) .outerHeight(); minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); maxContentHeight = typeof options.maxHeight === "number" ? Math.max( 0, options.maxHeight - nonContentHeight ) : "none"; if ( options.height === "auto" ) { this.element.css({ minHeight: minContentHeight, maxHeight: maxContentHeight, height: "auto" }); } else { this.element.height( Math.max( 0, options.height - nonContentHeight ) ); } if ( this.uiDialog.is( ":data(ui-resizable)" ) ) { this.uiDialog.resizable( "option", "minHeight", this._minHeight() ); } }, _blockFrames: function() { this.iframeBlocks = this.document.find( "iframe" ).map(function() { var iframe = $( this ); return $( "<div>" ) .css({ position: "absolute", width: iframe.outerWidth(), height: iframe.outerHeight() }) .appendTo( iframe.parent() ) .offset( iframe.offset() )[0]; }); }, _unblockFrames: function() { if ( this.iframeBlocks ) { this.iframeBlocks.remove(); delete this.iframeBlocks; } }, _allowInteraction: function( event ) { if ( $( event.target ).closest( ".ui-dialog" ).length ) { return true; } // TODO: Remove hack when datepicker implements // the .ui-front logic (#8989) return !!$( event.target ).closest( ".ui-datepicker" ).length; }, _createOverlay: function() { if ( !this.options.modal ) { return; } // We use a delay in case the overlay is created from an // event that we're going to be cancelling (#2804) var isOpening = true; this._delay(function() { isOpening = false; }); if ( !this.document.data( "ui-dialog-overlays" ) ) { // Prevent use of anchors and inputs // Using _on() for an event handler shared across many instances is // safe because the dialogs stack and must be closed in reverse order this._on( this.document, { focusin: function( event ) { if ( isOpening ) { return; } if ( !this._allowInteraction( event ) ) { event.preventDefault(); this._trackingInstances()[ 0 ]._focusTabbable(); } } }); } this.overlay = $( "<div>" ) .addClass( "ui-widget-overlay ui-front" ) .appendTo( this._appendTo() ); this._on( this.overlay, { mousedown: "_keepFocus" }); this.document.data( "ui-dialog-overlays", (this.document.data( "ui-dialog-overlays" ) || 0) + 1 ); }, _destroyOverlay: function() { if ( !this.options.modal ) { return; } if ( this.overlay ) { var overlays = this.document.data( "ui-dialog-overlays" ) - 1; if ( !overlays ) { this.document .unbind( "focusin" ) .removeData( "ui-dialog-overlays" ); } else { this.document.data( "ui-dialog-overlays", overlays ); } this.overlay.remove(); this.overlay = null; } } }); /*! * jQuery UI Droppable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/droppable/ */ $.widget( "ui.droppable", { version: "1.11.4", widgetEventPrefix: "drop", options: { accept: "*", activeClass: false, addClasses: true, greedy: false, hoverClass: false, scope: "default", tolerance: "intersect", // callbacks activate: null, deactivate: null, drop: null, out: null, over: null }, _create: function() { var proportions, o = this.options, accept = o.accept; this.isover = false; this.isout = true; this.accept = $.isFunction( accept ) ? accept : function( d ) { return d.is( accept ); }; this.proportions = function( /* valueToWrite */ ) { if ( arguments.length ) { // Store the droppable's proportions proportions = arguments[ 0 ]; } else { // Retrieve or derive the droppable's proportions return proportions ? proportions : proportions = { width: this.element[ 0 ].offsetWidth, height: this.element[ 0 ].offsetHeight }; } }; this._addToManager( o.scope ); o.addClasses && this.element.addClass( "ui-droppable" ); }, _addToManager: function( scope ) { // Add the reference and positions to the manager $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || []; $.ui.ddmanager.droppables[ scope ].push( this ); }, _splice: function( drop ) { var i = 0; for ( ; i < drop.length; i++ ) { if ( drop[ i ] === this ) { drop.splice( i, 1 ); } } }, _destroy: function() { var drop = $.ui.ddmanager.droppables[ this.options.scope ]; this._splice( drop ); this.element.removeClass( "ui-droppable ui-droppable-disabled" ); }, _setOption: function( key, value ) { if ( key === "accept" ) { this.accept = $.isFunction( value ) ? value : function( d ) { return d.is( value ); }; } else if ( key === "scope" ) { var drop = $.ui.ddmanager.droppables[ this.options.scope ]; this._splice( drop ); this._addToManager( value ); } this._super( key, value ); }, _activate: function( event ) { var draggable = $.ui.ddmanager.current; if ( this.options.activeClass ) { this.element.addClass( this.options.activeClass ); } if ( draggable ){ this._trigger( "activate", event, this.ui( draggable ) ); } }, _deactivate: function( event ) { var draggable = $.ui.ddmanager.current; if ( this.options.activeClass ) { this.element.removeClass( this.options.activeClass ); } if ( draggable ){ this._trigger( "deactivate", event, this.ui( draggable ) ); } }, _over: function( event ) { var draggable = $.ui.ddmanager.current; // Bail if draggable and droppable are same element if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) { return; } if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { if ( this.options.hoverClass ) { this.element.addClass( this.options.hoverClass ); } this._trigger( "over", event, this.ui( draggable ) ); } }, _out: function( event ) { var draggable = $.ui.ddmanager.current; // Bail if draggable and droppable are same element if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) { return; } if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { if ( this.options.hoverClass ) { this.element.removeClass( this.options.hoverClass ); } this._trigger( "out", event, this.ui( draggable ) ); } }, _drop: function( event, custom ) { var draggable = custom || $.ui.ddmanager.current, childrenIntersection = false; // Bail if draggable and droppable are same element if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) { return false; } this.element.find( ":data(ui-droppable)" ).not( ".ui-draggable-dragging" ).each(function() { var inst = $( this ).droppable( "instance" ); if ( inst.options.greedy && !inst.options.disabled && inst.options.scope === draggable.options.scope && inst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) && $.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance, event ) ) { childrenIntersection = true; return false; } }); if ( childrenIntersection ) { return false; } if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { if ( this.options.activeClass ) { this.element.removeClass( this.options.activeClass ); } if ( this.options.hoverClass ) { this.element.removeClass( this.options.hoverClass ); } this._trigger( "drop", event, this.ui( draggable ) ); return this.element; } return false; }, ui: function( c ) { return { draggable: ( c.currentItem || c.element ), helper: c.helper, position: c.position, offset: c.positionAbs }; } }); $.ui.intersect = (function() { function isOverAxis( x, reference, size ) { return ( x >= reference ) && ( x < ( reference + size ) ); } return function( draggable, droppable, toleranceMode, event ) { if ( !droppable.offset ) { return false; } var x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left, y1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top, x2 = x1 + draggable.helperProportions.width, y2 = y1 + draggable.helperProportions.height, l = droppable.offset.left, t = droppable.offset.top, r = l + droppable.proportions().width, b = t + droppable.proportions().height; switch ( toleranceMode ) { case "fit": return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b ); case "intersect": return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half case "pointer": return isOverAxis( event.pageY, t, droppable.proportions().height ) && isOverAxis( event.pageX, l, droppable.proportions().width ); case "touch": return ( ( y1 >= t && y1 <= b ) || // Top edge touching ( y2 >= t && y2 <= b ) || // Bottom edge touching ( y1 < t && y2 > b ) // Surrounded vertically ) && ( ( x1 >= l && x1 <= r ) || // Left edge touching ( x2 >= l && x2 <= r ) || // Right edge touching ( x1 < l && x2 > r ) // Surrounded horizontally ); default: return false; } }; })(); /* This manager tracks offsets of draggables and droppables */ $.ui.ddmanager = { current: null, droppables: { "default": [] }, prepareOffsets: function( t, event ) { var i, j, m = $.ui.ddmanager.droppables[ t.options.scope ] || [], type = event ? event.type : null, // workaround for #2317 list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack(); droppablesLoop: for ( i = 0; i < m.length; i++ ) { // No disabled and non-accepted if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) { continue; } // Filter out elements in the current dragged item for ( j = 0; j < list.length; j++ ) { if ( list[ j ] === m[ i ].element[ 0 ] ) { m[ i ].proportions().height = 0; continue droppablesLoop; } } m[ i ].visible = m[ i ].element.css( "display" ) !== "none"; if ( !m[ i ].visible ) { continue; } // Activate the droppable if used directly from draggables if ( type === "mousedown" ) { m[ i ]._activate.call( m[ i ], event ); } m[ i ].offset = m[ i ].element.offset(); m[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight }); } }, drop: function( draggable, event ) { var dropped = false; // Create a copy of the droppables in case the list changes during the drop (#9116) $.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() { if ( !this.options ) { return; } if ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance, event ) ) { dropped = this._drop.call( this, event ) || dropped; } if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) { this.isout = true; this.isover = false; this._deactivate.call( this, event ); } }); return dropped; }, dragStart: function( draggable, event ) { // Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003) draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() { if ( !draggable.options.refreshPositions ) { $.ui.ddmanager.prepareOffsets( draggable, event ); } }); }, drag: function( draggable, event ) { // If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse. if ( draggable.options.refreshPositions ) { $.ui.ddmanager.prepareOffsets( draggable, event ); } // Run through all droppables and check their positions based on specific tolerance options $.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() { if ( this.options.disabled || this.greedyChild || !this.visible ) { return; } var parentInstance, scope, parent, intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ), c = !intersects && this.isover ? "isout" : ( intersects && !this.isover ? "isover" : null ); if ( !c ) { return; } if ( this.options.greedy ) { // find droppable parents with same scope scope = this.options.scope; parent = this.element.parents( ":data(ui-droppable)" ).filter(function() { return $( this ).droppable( "instance" ).options.scope === scope; }); if ( parent.length ) { parentInstance = $( parent[ 0 ] ).droppable( "instance" ); parentInstance.greedyChild = ( c === "isover" ); } } // we just moved into a greedy child if ( parentInstance && c === "isover" ) { parentInstance.isover = false; parentInstance.isout = true; parentInstance._out.call( parentInstance, event ); } this[ c ] = true; this[c === "isout" ? "isover" : "isout"] = false; this[c === "isover" ? "_over" : "_out"].call( this, event ); // we just moved out of a greedy child if ( parentInstance && c === "isout" ) { parentInstance.isout = false; parentInstance.isover = true; parentInstance._over.call( parentInstance, event ); } }); }, dragStop: function( draggable, event ) { draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" ); // Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003) if ( !draggable.options.refreshPositions ) { $.ui.ddmanager.prepareOffsets( draggable, event ); } } }; var droppable = $.ui.droppable; /*! * jQuery UI Effects 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/effects-core/ */ var dataSpace = "ui-effects-", // Create a local jQuery because jQuery Color relies on it and the // global may not exist with AMD and a custom build (#10199) jQuery = $; $.effects = { effect: {} }; /*! * jQuery Color Animations v2.1.2 * https://github.com/jquery/jquery-color * * Copyright 2014 jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * Date: Wed Jan 16 08:47:09 2013 -0600 */ (function( jQuery, undefined ) { var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", // plusequals test for += 100 -= 100 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, // a set of RE's that can match strings and generate color tuples. stringParsers = [ { re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, parse: function( execResult ) { return [ execResult[ 1 ], execResult[ 2 ], execResult[ 3 ], execResult[ 4 ] ]; } }, { re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, parse: function( execResult ) { return [ execResult[ 1 ] * 2.55, execResult[ 2 ] * 2.55, execResult[ 3 ] * 2.55, execResult[ 4 ] ]; } }, { // this regex ignores A-F because it's compared against an already lowercased string re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, parse: function( execResult ) { return [ parseInt( execResult[ 1 ], 16 ), parseInt( execResult[ 2 ], 16 ), parseInt( execResult[ 3 ], 16 ) ]; } }, { // this regex ignores A-F because it's compared against an already lowercased string re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, parse: function( execResult ) { return [ parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) ]; } }, { re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, space: "hsla", parse: function( execResult ) { return [ execResult[ 1 ], execResult[ 2 ] / 100, execResult[ 3 ] / 100, execResult[ 4 ] ]; } } ], // jQuery.Color( ) color = jQuery.Color = function( color, green, blue, alpha ) { return new jQuery.Color.fn.parse( color, green, blue, alpha ); }, spaces = { rgba: { props: { red: { idx: 0, type: "byte" }, green: { idx: 1, type: "byte" }, blue: { idx: 2, type: "byte" } } }, hsla: { props: { hue: { idx: 0, type: "degrees" }, saturation: { idx: 1, type: "percent" }, lightness: { idx: 2, type: "percent" } } } }, propTypes = { "byte": { floor: true, max: 255 }, "percent": { max: 1 }, "degrees": { mod: 360, floor: true } }, support = color.support = {}, // element for support tests supportElem = jQuery( "<p>" )[ 0 ], // colors = jQuery.Color.names colors, // local aliases of functions called often each = jQuery.each; // determine rgba support immediately supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; // define cache name and alpha properties // for rgba and hsla spaces each( spaces, function( spaceName, space ) { space.cache = "_" + spaceName; space.props.alpha = { idx: 3, type: "percent", def: 1 }; }); function clamp( value, prop, allowEmpty ) { var type = propTypes[ prop.type ] || {}; if ( value == null ) { return (allowEmpty || !prop.def) ? null : prop.def; } // ~~ is an short way of doing floor for positive numbers value = type.floor ? ~~value : parseFloat( value ); // IE will pass in empty strings as value for alpha, // which will hit this case if ( isNaN( value ) ) { return prop.def; } if ( type.mod ) { // we add mod before modding to make sure that negatives values // get converted properly: -10 -> 350 return (value + type.mod) % type.mod; } // for now all property types without mod have min and max return 0 > value ? 0 : type.max < value ? type.max : value; } function stringParse( string ) { var inst = color(), rgba = inst._rgba = []; string = string.toLowerCase(); each( stringParsers, function( i, parser ) { var parsed, match = parser.re.exec( string ), values = match && parser.parse( match ), spaceName = parser.space || "rgba"; if ( values ) { parsed = inst[ spaceName ]( values ); // if this was an rgba parse the assignment might happen twice // oh well.... inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; rgba = inst._rgba = parsed._rgba; // exit each( stringParsers ) here because we matched return false; } }); // Found a stringParser that handled it if ( rgba.length ) { // if this came from a parsed string, force "transparent" when alpha is 0 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) if ( rgba.join() === "0,0,0,0" ) { jQuery.extend( rgba, colors.transparent ); } return inst; } // named colors return colors[ string ]; } color.fn = jQuery.extend( color.prototype, { parse: function( red, green, blue, alpha ) { if ( red === undefined ) { this._rgba = [ null, null, null, null ]; return this; } if ( red.jquery || red.nodeType ) { red = jQuery( red ).css( green ); green = undefined; } var inst = this, type = jQuery.type( red ), rgba = this._rgba = []; // more than 1 argument specified - assume ( red, green, blue, alpha ) if ( green !== undefined ) { red = [ red, green, blue, alpha ]; type = "array"; } if ( type === "string" ) { return this.parse( stringParse( red ) || colors._default ); } if ( type === "array" ) { each( spaces.rgba.props, function( key, prop ) { rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); }); return this; } if ( type === "object" ) { if ( red instanceof color ) { each( spaces, function( spaceName, space ) { if ( red[ space.cache ] ) { inst[ space.cache ] = red[ space.cache ].slice(); } }); } else { each( spaces, function( spaceName, space ) { var cache = space.cache; each( space.props, function( key, prop ) { // if the cache doesn't exist, and we know how to convert if ( !inst[ cache ] && space.to ) { // if the value was null, we don't need to copy it // if the key was alpha, we don't need to copy it either if ( key === "alpha" || red[ key ] == null ) { return; } inst[ cache ] = space.to( inst._rgba ); } // this is the only case where we allow nulls for ALL properties. // call clamp with alwaysAllowEmpty inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); }); // everything defined but alpha? if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { // use the default of 1 inst[ cache ][ 3 ] = 1; if ( space.from ) { inst._rgba = space.from( inst[ cache ] ); } } }); } return this; } }, is: function( compare ) { var is = color( compare ), same = true, inst = this; each( spaces, function( _, space ) { var localCache, isCache = is[ space.cache ]; if (isCache) { localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; each( space.props, function( _, prop ) { if ( isCache[ prop.idx ] != null ) { same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); return same; } }); } return same; }); return same; }, _space: function() { var used = [], inst = this; each( spaces, function( spaceName, space ) { if ( inst[ space.cache ] ) { used.push( spaceName ); } }); return used.pop(); }, transition: function( other, distance ) { var end = color( other ), spaceName = end._space(), space = spaces[ spaceName ], startColor = this.alpha() === 0 ? color( "transparent" ) : this, start = startColor[ space.cache ] || space.to( startColor._rgba ), result = start.slice(); end = end[ space.cache ]; each( space.props, function( key, prop ) { var index = prop.idx, startValue = start[ index ], endValue = end[ index ], type = propTypes[ prop.type ] || {}; // if null, don't override start value if ( endValue === null ) { return; } // if null - use end if ( startValue === null ) { result[ index ] = endValue; } else { if ( type.mod ) { if ( endValue - startValue > type.mod / 2 ) { startValue += type.mod; } else if ( startValue - endValue > type.mod / 2 ) { startValue -= type.mod; } } result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); } }); return this[ spaceName ]( result ); }, blend: function( opaque ) { // if we are already opaque - return ourself if ( this._rgba[ 3 ] === 1 ) { return this; } var rgb = this._rgba.slice(), a = rgb.pop(), blend = color( opaque )._rgba; return color( jQuery.map( rgb, function( v, i ) { return ( 1 - a ) * blend[ i ] + a * v; })); }, toRgbaString: function() { var prefix = "rgba(", rgba = jQuery.map( this._rgba, function( v, i ) { return v == null ? ( i > 2 ? 1 : 0 ) : v; }); if ( rgba[ 3 ] === 1 ) { rgba.pop(); prefix = "rgb("; } return prefix + rgba.join() + ")"; }, toHslaString: function() { var prefix = "hsla(", hsla = jQuery.map( this.hsla(), function( v, i ) { if ( v == null ) { v = i > 2 ? 1 : 0; } // catch 1 and 2 if ( i && i < 3 ) { v = Math.round( v * 100 ) + "%"; } return v; }); if ( hsla[ 3 ] === 1 ) { hsla.pop(); prefix = "hsl("; } return prefix + hsla.join() + ")"; }, toHexString: function( includeAlpha ) { var rgba = this._rgba.slice(), alpha = rgba.pop(); if ( includeAlpha ) { rgba.push( ~~( alpha * 255 ) ); } return "#" + jQuery.map( rgba, function( v ) { // default to 0 when nulls exist v = ( v || 0 ).toString( 16 ); return v.length === 1 ? "0" + v : v; }).join(""); }, toString: function() { return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); } }); color.fn.parse.prototype = color.fn; // hsla conversions adapted from: // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 function hue2rgb( p, q, h ) { h = ( h + 1 ) % 1; if ( h * 6 < 1 ) { return p + ( q - p ) * h * 6; } if ( h * 2 < 1) { return q; } if ( h * 3 < 2 ) { return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; } return p; } spaces.hsla.to = function( rgba ) { if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { return [ null, null, null, rgba[ 3 ] ]; } var r = rgba[ 0 ] / 255, g = rgba[ 1 ] / 255, b = rgba[ 2 ] / 255, a = rgba[ 3 ], max = Math.max( r, g, b ), min = Math.min( r, g, b ), diff = max - min, add = max + min, l = add * 0.5, h, s; if ( min === max ) { h = 0; } else if ( r === max ) { h = ( 60 * ( g - b ) / diff ) + 360; } else if ( g === max ) { h = ( 60 * ( b - r ) / diff ) + 120; } else { h = ( 60 * ( r - g ) / diff ) + 240; } // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) if ( diff === 0 ) { s = 0; } else if ( l <= 0.5 ) { s = diff / add; } else { s = diff / ( 2 - add ); } return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; }; spaces.hsla.from = function( hsla ) { if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { return [ null, null, null, hsla[ 3 ] ]; } var h = hsla[ 0 ] / 360, s = hsla[ 1 ], l = hsla[ 2 ], a = hsla[ 3 ], q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, p = 2 * l - q; return [ Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), Math.round( hue2rgb( p, q, h ) * 255 ), Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), a ]; }; each( spaces, function( spaceName, space ) { var props = space.props, cache = space.cache, to = space.to, from = space.from; // makes rgba() and hsla() color.fn[ spaceName ] = function( value ) { // generate a cache for this space if it doesn't exist if ( to && !this[ cache ] ) { this[ cache ] = to( this._rgba ); } if ( value === undefined ) { return this[ cache ].slice(); } var ret, type = jQuery.type( value ), arr = ( type === "array" || type === "object" ) ? value : arguments, local = this[ cache ].slice(); each( props, function( key, prop ) { var val = arr[ type === "object" ? key : prop.idx ]; if ( val == null ) { val = local[ prop.idx ]; } local[ prop.idx ] = clamp( val, prop ); }); if ( from ) { ret = color( from( local ) ); ret[ cache ] = local; return ret; } else { return color( local ); } }; // makes red() green() blue() alpha() hue() saturation() lightness() each( props, function( key, prop ) { // alpha is included in more than one space if ( color.fn[ key ] ) { return; } color.fn[ key ] = function( value ) { var vtype = jQuery.type( value ), fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), local = this[ fn ](), cur = local[ prop.idx ], match; if ( vtype === "undefined" ) { return cur; } if ( vtype === "function" ) { value = value.call( this, cur ); vtype = jQuery.type( value ); } if ( value == null && prop.empty ) { return this; } if ( vtype === "string" ) { match = rplusequals.exec( value ); if ( match ) { value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); } } local[ prop.idx ] = value; return this[ fn ]( local ); }; }); }); // add cssHook and .fx.step function for each named hook. // accept a space separated string of properties color.hook = function( hook ) { var hooks = hook.split( " " ); each( hooks, function( i, hook ) { jQuery.cssHooks[ hook ] = { set: function( elem, value ) { var parsed, curElem, backgroundColor = ""; if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { value = color( parsed || value ); if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { curElem = hook === "backgroundColor" ? elem.parentNode : elem; while ( (backgroundColor === "" || backgroundColor === "transparent") && curElem && curElem.style ) { try { backgroundColor = jQuery.css( curElem, "backgroundColor" ); curElem = curElem.parentNode; } catch ( e ) { } } value = value.blend( backgroundColor && backgroundColor !== "transparent" ? backgroundColor : "_default" ); } value = value.toRgbaString(); } try { elem.style[ hook ] = value; } catch ( e ) { // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' } } }; jQuery.fx.step[ hook ] = function( fx ) { if ( !fx.colorInit ) { fx.start = color( fx.elem, hook ); fx.end = color( fx.end ); fx.colorInit = true; } jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); }; }); }; color.hook( stepHooks ); jQuery.cssHooks.borderColor = { expand: function( value ) { var expanded = {}; each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { expanded[ "border" + part + "Color" ] = value; }); return expanded; } }; // Basic color names only. // Usage of any of the other color names requires adding yourself or including // jquery.color.svg-names.js. colors = jQuery.Color.names = { // 4.1. Basic color keywords aqua: "#00ffff", black: "#000000", blue: "#0000ff", fuchsia: "#ff00ff", gray: "#808080", green: "#008000", lime: "#00ff00", maroon: "#800000", navy: "#000080", olive: "#808000", purple: "#800080", red: "#ff0000", silver: "#c0c0c0", teal: "#008080", white: "#ffffff", yellow: "#ffff00", // 4.2.3. "transparent" color keyword transparent: [ null, null, null, 0 ], _default: "#ffffff" }; })( jQuery ); /******************************************************************************/ /****************************** CLASS ANIMATIONS ******************************/ /******************************************************************************/ (function() { var classAnimationActions = [ "add", "remove", "toggle" ], shorthandStyles = { border: 1, borderBottom: 1, borderColor: 1, borderLeft: 1, borderRight: 1, borderTop: 1, borderWidth: 1, margin: 1, padding: 1 }; $.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { $.fx.step[ prop ] = function( fx ) { if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { jQuery.style( fx.elem, prop, fx.end ); fx.setAttr = true; } }; }); function getElementStyles( elem ) { var key, len, style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : elem.currentStyle, styles = {}; if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { len = style.length; while ( len-- ) { key = style[ len ]; if ( typeof style[ key ] === "string" ) { styles[ $.camelCase( key ) ] = style[ key ]; } } // support: Opera, IE <9 } else { for ( key in style ) { if ( typeof style[ key ] === "string" ) { styles[ key ] = style[ key ]; } } } return styles; } function styleDifference( oldStyle, newStyle ) { var diff = {}, name, value; for ( name in newStyle ) { value = newStyle[ name ]; if ( oldStyle[ name ] !== value ) { if ( !shorthandStyles[ name ] ) { if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { diff[ name ] = value; } } } } return diff; } // support: jQuery <1.8 if ( !$.fn.addBack ) { $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } $.effects.animateClass = function( value, duration, easing, callback ) { var o = $.speed( duration, easing, callback ); return this.queue( function() { var animated = $( this ), baseClass = animated.attr( "class" ) || "", applyClassChange, allAnimations = o.children ? animated.find( "*" ).addBack() : animated; // map the animated objects to store the original styles. allAnimations = allAnimations.map(function() { var el = $( this ); return { el: el, start: getElementStyles( this ) }; }); // apply class change applyClassChange = function() { $.each( classAnimationActions, function(i, action) { if ( value[ action ] ) { animated[ action + "Class" ]( value[ action ] ); } }); }; applyClassChange(); // map all animated objects again - calculate new styles and diff allAnimations = allAnimations.map(function() { this.end = getElementStyles( this.el[ 0 ] ); this.diff = styleDifference( this.start, this.end ); return this; }); // apply original class animated.attr( "class", baseClass ); // map all animated objects again - this time collecting a promise allAnimations = allAnimations.map(function() { var styleInfo = this, dfd = $.Deferred(), opts = $.extend({}, o, { queue: false, complete: function() { dfd.resolve( styleInfo ); } }); this.el.animate( this.diff, opts ); return dfd.promise(); }); // once all animations have completed: $.when.apply( $, allAnimations.get() ).done(function() { // set the final class applyClassChange(); // for each animated element, // clear all css properties that were animated $.each( arguments, function() { var el = this.el; $.each( this.diff, function(key) { el.css( key, "" ); }); }); // this is guarnteed to be there if you use jQuery.speed() // it also handles dequeuing the next anim... o.complete.call( animated[ 0 ] ); }); }); }; $.fn.extend({ addClass: (function( orig ) { return function( classNames, speed, easing, callback ) { return speed ? $.effects.animateClass.call( this, { add: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; })( $.fn.addClass ), removeClass: (function( orig ) { return function( classNames, speed, easing, callback ) { return arguments.length > 1 ? $.effects.animateClass.call( this, { remove: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; })( $.fn.removeClass ), toggleClass: (function( orig ) { return function( classNames, force, speed, easing, callback ) { if ( typeof force === "boolean" || force === undefined ) { if ( !speed ) { // without speed parameter return orig.apply( this, arguments ); } else { return $.effects.animateClass.call( this, (force ? { add: classNames } : { remove: classNames }), speed, easing, callback ); } } else { // without force parameter return $.effects.animateClass.call( this, { toggle: classNames }, force, speed, easing ); } }; })( $.fn.toggleClass ), switchClass: function( remove, add, speed, easing, callback) { return $.effects.animateClass.call( this, { add: add, remove: remove }, speed, easing, callback ); } }); })(); /******************************************************************************/ /*********************************** EFFECTS **********************************/ /******************************************************************************/ (function() { $.extend( $.effects, { version: "1.11.4", // Saves a set of properties in a data storage save: function( element, set ) { for ( var i = 0; i < set.length; i++ ) { if ( set[ i ] !== null ) { element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); } } }, // Restores a set of previously saved properties from a data storage restore: function( element, set ) { var val, i; for ( i = 0; i < set.length; i++ ) { if ( set[ i ] !== null ) { val = element.data( dataSpace + set[ i ] ); // support: jQuery 1.6.2 // http://bugs.jquery.com/ticket/9917 // jQuery 1.6.2 incorrectly returns undefined for any falsy value. // We can't differentiate between "" and 0 here, so we just assume // empty string since it's likely to be a more common value... if ( val === undefined ) { val = ""; } element.css( set[ i ], val ); } } }, setMode: function( el, mode ) { if (mode === "toggle") { mode = el.is( ":hidden" ) ? "show" : "hide"; } return mode; }, // Translates a [top,left] array into a baseline value // this should be a little more flexible in the future to handle a string & hash getBaseline: function( origin, original ) { var y, x; switch ( origin[ 0 ] ) { case "top": y = 0; break; case "middle": y = 0.5; break; case "bottom": y = 1; break; default: y = origin[ 0 ] / original.height; } switch ( origin[ 1 ] ) { case "left": x = 0; break; case "center": x = 0.5; break; case "right": x = 1; break; default: x = origin[ 1 ] / original.width; } return { x: x, y: y }; }, // Wraps the element around a wrapper that copies position properties createWrapper: function( element ) { // if the element is already wrapped, return it if ( element.parent().is( ".ui-effects-wrapper" )) { return element.parent(); } // wrap the element var props = { width: element.outerWidth(true), height: element.outerHeight(true), "float": element.css( "float" ) }, wrapper = $( "<div></div>" ) .addClass( "ui-effects-wrapper" ) .css({ fontSize: "100%", background: "transparent", border: "none", margin: 0, padding: 0 }), // Store the size in case width/height are defined in % - Fixes #5245 size = { width: element.width(), height: element.height() }, active = document.activeElement; // support: Firefox // Firefox incorrectly exposes anonymous content // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 try { active.id; } catch ( e ) { active = document.body; } element.wrap( wrapper ); // Fixes #7595 - Elements lose focus when wrapped. if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { $( active ).focus(); } wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element // transfer positioning properties to the wrapper if ( element.css( "position" ) === "static" ) { wrapper.css({ position: "relative" }); element.css({ position: "relative" }); } else { $.extend( props, { position: element.css( "position" ), zIndex: element.css( "z-index" ) }); $.each([ "top", "left", "bottom", "right" ], function(i, pos) { props[ pos ] = element.css( pos ); if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { props[ pos ] = "auto"; } }); element.css({ position: "relative", top: 0, left: 0, right: "auto", bottom: "auto" }); } element.css(size); return wrapper.css( props ).show(); }, removeWrapper: function( element ) { var active = document.activeElement; if ( element.parent().is( ".ui-effects-wrapper" ) ) { element.parent().replaceWith( element ); // Fixes #7595 - Elements lose focus when wrapped. if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { $( active ).focus(); } } return element; }, setTransition: function( element, list, factor, value ) { value = value || {}; $.each( list, function( i, x ) { var unit = element.cssUnit( x ); if ( unit[ 0 ] > 0 ) { value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; } }); return value; } }); // return an effect options object for the given parameters: function _normalizeArguments( effect, options, speed, callback ) { // allow passing all options as the first parameter if ( $.isPlainObject( effect ) ) { options = effect; effect = effect.effect; } // convert to an object effect = { effect: effect }; // catch (effect, null, ...) if ( options == null ) { options = {}; } // catch (effect, callback) if ( $.isFunction( options ) ) { callback = options; speed = null; options = {}; } // catch (effect, speed, ?) if ( typeof options === "number" || $.fx.speeds[ options ] ) { callback = speed; speed = options; options = {}; } // catch (effect, options, callback) if ( $.isFunction( speed ) ) { callback = speed; speed = null; } // add options to effect if ( options ) { $.extend( effect, options ); } speed = speed || options.duration; effect.duration = $.fx.off ? 0 : typeof speed === "number" ? speed : speed in $.fx.speeds ? $.fx.speeds[ speed ] : $.fx.speeds._default; effect.complete = callback || options.complete; return effect; } function standardAnimationOption( option ) { // Valid standard speeds (nothing, number, named speed) if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { return true; } // Invalid strings - treat as "normal" speed if ( typeof option === "string" && !$.effects.effect[ option ] ) { return true; } // Complete callback if ( $.isFunction( option ) ) { return true; } // Options hash (but not naming an effect) if ( typeof option === "object" && !option.effect ) { return true; } // Didn't match any standard API return false; } $.fn.extend({ effect: function( /* effect, options, speed, callback */ ) { var args = _normalizeArguments.apply( this, arguments ), mode = args.mode, queue = args.queue, effectMethod = $.effects.effect[ args.effect ]; if ( $.fx.off || !effectMethod ) { // delegate to the original method (e.g., .show()) if possible if ( mode ) { return this[ mode ]( args.duration, args.complete ); } else { return this.each( function() { if ( args.complete ) { args.complete.call( this ); } }); } } function run( next ) { var elem = $( this ), complete = args.complete, mode = args.mode; function done() { if ( $.isFunction( complete ) ) { complete.call( elem[0] ); } if ( $.isFunction( next ) ) { next(); } } // If the element already has the correct final state, delegate to // the core methods so the internal tracking of "olddisplay" works. if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { elem[ mode ](); done(); } else { effectMethod.call( elem[0], args, done ); } } return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); }, show: (function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "show"; return this.effect.call( this, args ); } }; })( $.fn.show ), hide: (function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "hide"; return this.effect.call( this, args ); } }; })( $.fn.hide ), toggle: (function( orig ) { return function( option ) { if ( standardAnimationOption( option ) || typeof option === "boolean" ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "toggle"; return this.effect.call( this, args ); } }; })( $.fn.toggle ), // helper functions cssUnit: function(key) { var style = this.css( key ), val = []; $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { if ( style.indexOf( unit ) > 0 ) { val = [ parseFloat( style ), unit ]; } }); return val; } }); })(); /******************************************************************************/ /*********************************** EASING ***********************************/ /******************************************************************************/ (function() { // based on easing equations from Robert Penner (http://www.robertpenner.com/easing) var baseEasings = {}; $.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { baseEasings[ name ] = function( p ) { return Math.pow( p, i + 2 ); }; }); $.extend( baseEasings, { Sine: function( p ) { return 1 - Math.cos( p * Math.PI / 2 ); }, Circ: function( p ) { return 1 - Math.sqrt( 1 - p * p ); }, Elastic: function( p ) { return p === 0 || p === 1 ? p : -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); }, Back: function( p ) { return p * p * ( 3 * p - 2 ); }, Bounce: function( p ) { var pow2, bounce = 4; while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); } }); $.each( baseEasings, function( name, easeIn ) { $.easing[ "easeIn" + name ] = easeIn; $.easing[ "easeOut" + name ] = function( p ) { return 1 - easeIn( 1 - p ); }; $.easing[ "easeInOut" + name ] = function( p ) { return p < 0.5 ? easeIn( p * 2 ) / 2 : 1 - easeIn( p * -2 + 2 ) / 2; }; }); })(); var effect = $.effects; /*! * jQuery UI Effects Blind 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/blind-effect/ */ var effectBlind = $.effects.effect.blind = function( o, done ) { // Create element var el = $( this ), rvertical = /up|down|vertical/, rpositivemotion = /up|left|vertical|horizontal/, props = [ "position", "top", "bottom", "left", "right", "height", "width" ], mode = $.effects.setMode( el, o.mode || "hide" ), direction = o.direction || "up", vertical = rvertical.test( direction ), ref = vertical ? "height" : "width", ref2 = vertical ? "top" : "left", motion = rpositivemotion.test( direction ), animation = {}, show = mode === "show", wrapper, distance, margin; // if already wrapped, the wrapper's properties are my property. #6245 if ( el.parent().is( ".ui-effects-wrapper" ) ) { $.effects.save( el.parent(), props ); } else { $.effects.save( el, props ); } el.show(); wrapper = $.effects.createWrapper( el ).css({ overflow: "hidden" }); distance = wrapper[ ref ](); margin = parseFloat( wrapper.css( ref2 ) ) || 0; animation[ ref ] = show ? distance : 0; if ( !motion ) { el .css( vertical ? "bottom" : "right", 0 ) .css( vertical ? "top" : "left", "auto" ) .css({ position: "absolute" }); animation[ ref2 ] = show ? margin : distance + margin; } // start at 0 if we are showing if ( show ) { wrapper.css( ref, 0 ); if ( !motion ) { wrapper.css( ref2, margin + distance ); } } // Animate wrapper.animate( animation, { duration: o.duration, easing: o.easing, queue: false, complete: function() { if ( mode === "hide" ) { el.hide(); } $.effects.restore( el, props ); $.effects.removeWrapper( el ); done(); } }); }; /*! * jQuery UI Effects Bounce 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/bounce-effect/ */ var effectBounce = $.effects.effect.bounce = function( o, done ) { var el = $( this ), props = [ "position", "top", "bottom", "left", "right", "height", "width" ], // defaults: mode = $.effects.setMode( el, o.mode || "effect" ), hide = mode === "hide", show = mode === "show", direction = o.direction || "up", distance = o.distance, times = o.times || 5, // number of internal animations anims = times * 2 + ( show || hide ? 1 : 0 ), speed = o.duration / anims, easing = o.easing, // utility: ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ), i, upAnim, downAnim, // we will need to re-assemble the queue to stack our animations in place queue = el.queue(), queuelen = queue.length; // Avoid touching opacity to prevent clearType and PNG issues in IE if ( show || hide ) { props.push( "opacity" ); } $.effects.save( el, props ); el.show(); $.effects.createWrapper( el ); // Create Wrapper // default distance for the BIGGEST bounce is the outer Distance / 3 if ( !distance ) { distance = el[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; } if ( show ) { downAnim = { opacity: 1 }; downAnim[ ref ] = 0; // if we are showing, force opacity 0 and set the initial position // then do the "first" animation el.css( "opacity", 0 ) .css( ref, motion ? -distance * 2 : distance * 2 ) .animate( downAnim, speed, easing ); } // start at the smallest distance if we are hiding if ( hide ) { distance = distance / Math.pow( 2, times - 1 ); } downAnim = {}; downAnim[ ref ] = 0; // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here for ( i = 0; i < times; i++ ) { upAnim = {}; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; el.animate( upAnim, speed, easing ) .animate( downAnim, speed, easing ); distance = hide ? distance * 2 : distance / 2; } // Last Bounce when Hiding if ( hide ) { upAnim = { opacity: 0 }; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; el.animate( upAnim, speed, easing ); } el.queue(function() { if ( hide ) { el.hide(); } $.effects.restore( el, props ); $.effects.removeWrapper( el ); done(); }); // inject all the animations we just queued to be first in line (after "inprogress") if ( queuelen > 1) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } el.dequeue(); }; /*! * jQuery UI Effects Clip 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/clip-effect/ */ var effectClip = $.effects.effect.clip = function( o, done ) { // Create element var el = $( this ), props = [ "position", "top", "bottom", "left", "right", "height", "width" ], mode = $.effects.setMode( el, o.mode || "hide" ), show = mode === "show", direction = o.direction || "vertical", vert = direction === "vertical", size = vert ? "height" : "width", position = vert ? "top" : "left", animation = {}, wrapper, animate, distance; // Save & Show $.effects.save( el, props ); el.show(); // Create Wrapper wrapper = $.effects.createWrapper( el ).css({ overflow: "hidden" }); animate = ( el[0].tagName === "IMG" ) ? wrapper : el; distance = animate[ size ](); // Shift if ( show ) { animate.css( size, 0 ); animate.css( position, distance / 2 ); } // Create Animation Object: animation[ size ] = show ? distance : 0; animation[ position ] = show ? 0 : distance / 2; // Animate animate.animate( animation, { queue: false, duration: o.duration, easing: o.easing, complete: function() { if ( !show ) { el.hide(); } $.effects.restore( el, props ); $.effects.removeWrapper( el ); done(); } }); }; /*! * jQuery UI Effects Drop 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/drop-effect/ */ var effectDrop = $.effects.effect.drop = function( o, done ) { var el = $( this ), props = [ "position", "top", "bottom", "left", "right", "opacity", "height", "width" ], mode = $.effects.setMode( el, o.mode || "hide" ), show = mode === "show", direction = o.direction || "left", ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ) ? "pos" : "neg", animation = { opacity: show ? 1 : 0 }, distance; // Adjust $.effects.save( el, props ); el.show(); $.effects.createWrapper( el ); distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; if ( show ) { el .css( "opacity", 0 ) .css( ref, motion === "pos" ? -distance : distance ); } // Animation animation[ ref ] = ( show ? ( motion === "pos" ? "+=" : "-=" ) : ( motion === "pos" ? "-=" : "+=" ) ) + distance; // Animate el.animate( animation, { queue: false, duration: o.duration, easing: o.easing, complete: function() { if ( mode === "hide" ) { el.hide(); } $.effects.restore( el, props ); $.effects.removeWrapper( el ); done(); } }); }; /*! * jQuery UI Effects Explode 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/explode-effect/ */ var effectExplode = $.effects.effect.explode = function( o, done ) { var rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3, cells = rows, el = $( this ), mode = $.effects.setMode( el, o.mode || "hide" ), show = mode === "show", // show and then visibility:hidden the element before calculating offset offset = el.show().css( "visibility", "hidden" ).offset(), // width and height of a piece width = Math.ceil( el.outerWidth() / cells ), height = Math.ceil( el.outerHeight() / rows ), pieces = [], // loop i, j, left, top, mx, my; // children animate complete: function childComplete() { pieces.push( this ); if ( pieces.length === rows * cells ) { animComplete(); } } // clone the element for each row and cell. for ( i = 0; i < rows ; i++ ) { // ===> top = offset.top + i * height; my = i - ( rows - 1 ) / 2 ; for ( j = 0; j < cells ; j++ ) { // ||| left = offset.left + j * width; mx = j - ( cells - 1 ) / 2 ; // Create a clone of the now hidden main element that will be absolute positioned // within a wrapper div off the -left and -top equal to size of our pieces el .clone() .appendTo( "body" ) .wrap( "<div></div>" ) .css({ position: "absolute", visibility: "visible", left: -j * width, top: -i * height }) // select the wrapper - make it overflow: hidden and absolute positioned based on // where the original was located +left and +top equal to the size of pieces .parent() .addClass( "ui-effects-explode" ) .css({ position: "absolute", overflow: "hidden", width: width, height: height, left: left + ( show ? mx * width : 0 ), top: top + ( show ? my * height : 0 ), opacity: show ? 0 : 1 }).animate({ left: left + ( show ? 0 : mx * width ), top: top + ( show ? 0 : my * height ), opacity: show ? 1 : 0 }, o.duration || 500, o.easing, childComplete ); } } function animComplete() { el.css({ visibility: "visible" }); $( pieces ).remove(); if ( !show ) { el.hide(); } done(); } }; /*! * jQuery UI Effects Fade 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/fade-effect/ */ var effectFade = $.effects.effect.fade = function( o, done ) { var el = $( this ), mode = $.effects.setMode( el, o.mode || "toggle" ); el.animate({ opacity: mode }, { queue: false, duration: o.duration, easing: o.easing, complete: done }); }; /*! * jQuery UI Effects Fold 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/fold-effect/ */ var effectFold = $.effects.effect.fold = function( o, done ) { // Create element var el = $( this ), props = [ "position", "top", "bottom", "left", "right", "height", "width" ], mode = $.effects.setMode( el, o.mode || "hide" ), show = mode === "show", hide = mode === "hide", size = o.size || 15, percent = /([0-9]+)%/.exec( size ), horizFirst = !!o.horizFirst, widthFirst = show !== horizFirst, ref = widthFirst ? [ "width", "height" ] : [ "height", "width" ], duration = o.duration / 2, wrapper, distance, animation1 = {}, animation2 = {}; $.effects.save( el, props ); el.show(); // Create Wrapper wrapper = $.effects.createWrapper( el ).css({ overflow: "hidden" }); distance = widthFirst ? [ wrapper.width(), wrapper.height() ] : [ wrapper.height(), wrapper.width() ]; if ( percent ) { size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; } if ( show ) { wrapper.css( horizFirst ? { height: 0, width: size } : { height: size, width: 0 }); } // Animation animation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size; animation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0; // Animate wrapper .animate( animation1, duration, o.easing ) .animate( animation2, duration, o.easing, function() { if ( hide ) { el.hide(); } $.effects.restore( el, props ); $.effects.removeWrapper( el ); done(); }); }; /*! * jQuery UI Effects Highlight 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/highlight-effect/ */ var effectHighlight = $.effects.effect.highlight = function( o, done ) { var elem = $( this ), props = [ "backgroundImage", "backgroundColor", "opacity" ], mode = $.effects.setMode( elem, o.mode || "show" ), animation = { backgroundColor: elem.css( "backgroundColor" ) }; if (mode === "hide") { animation.opacity = 0; } $.effects.save( elem, props ); elem .show() .css({ backgroundImage: "none", backgroundColor: o.color || "#ffff99" }) .animate( animation, { queue: false, duration: o.duration, easing: o.easing, complete: function() { if ( mode === "hide" ) { elem.hide(); } $.effects.restore( elem, props ); done(); } }); }; /*! * jQuery UI Effects Size 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/size-effect/ */ var effectSize = $.effects.effect.size = function( o, done ) { // Create element var original, baseline, factor, el = $( this ), props0 = [ "position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity" ], // Always restore props1 = [ "position", "top", "bottom", "left", "right", "overflow", "opacity" ], // Copy for children props2 = [ "width", "height", "overflow" ], cProps = [ "fontSize" ], vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], // Set options mode = $.effects.setMode( el, o.mode || "effect" ), restore = o.restore || mode !== "effect", scale = o.scale || "both", origin = o.origin || [ "middle", "center" ], position = el.css( "position" ), props = restore ? props0 : props1, zero = { height: 0, width: 0, outerHeight: 0, outerWidth: 0 }; if ( mode === "show" ) { el.show(); } original = { height: el.height(), width: el.width(), outerHeight: el.outerHeight(), outerWidth: el.outerWidth() }; if ( o.mode === "toggle" && mode === "show" ) { el.from = o.to || zero; el.to = o.from || original; } else { el.from = o.from || ( mode === "show" ? zero : original ); el.to = o.to || ( mode === "hide" ? zero : original ); } // Set scaling factor factor = { from: { y: el.from.height / original.height, x: el.from.width / original.width }, to: { y: el.to.height / original.height, x: el.to.width / original.width } }; // Scale the css box if ( scale === "box" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { props = props.concat( vProps ); el.from = $.effects.setTransition( el, vProps, factor.from.y, el.from ); el.to = $.effects.setTransition( el, vProps, factor.to.y, el.to ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { props = props.concat( hProps ); el.from = $.effects.setTransition( el, hProps, factor.from.x, el.from ); el.to = $.effects.setTransition( el, hProps, factor.to.x, el.to ); } } // Scale the content if ( scale === "content" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { props = props.concat( cProps ).concat( props2 ); el.from = $.effects.setTransition( el, cProps, factor.from.y, el.from ); el.to = $.effects.setTransition( el, cProps, factor.to.y, el.to ); } } $.effects.save( el, props ); el.show(); $.effects.createWrapper( el ); el.css( "overflow", "hidden" ).css( el.from ); // Adjust if (origin) { // Calculate baseline shifts baseline = $.effects.getBaseline( origin, original ); el.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y; el.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x; el.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y; el.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x; } el.css( el.from ); // set top & left // Animate if ( scale === "content" || scale === "both" ) { // Scale the children // Add margins/font-size vProps = vProps.concat([ "marginTop", "marginBottom" ]).concat(cProps); hProps = hProps.concat([ "marginLeft", "marginRight" ]); props2 = props0.concat(vProps).concat(hProps); el.find( "*[width]" ).each( function() { var child = $( this ), c_original = { height: child.height(), width: child.width(), outerHeight: child.outerHeight(), outerWidth: child.outerWidth() }; if (restore) { $.effects.save(child, props2); } child.from = { height: c_original.height * factor.from.y, width: c_original.width * factor.from.x, outerHeight: c_original.outerHeight * factor.from.y, outerWidth: c_original.outerWidth * factor.from.x }; child.to = { height: c_original.height * factor.to.y, width: c_original.width * factor.to.x, outerHeight: c_original.height * factor.to.y, outerWidth: c_original.width * factor.to.x }; // Vertical props scaling if ( factor.from.y !== factor.to.y ) { child.from = $.effects.setTransition( child, vProps, factor.from.y, child.from ); child.to = $.effects.setTransition( child, vProps, factor.to.y, child.to ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { child.from = $.effects.setTransition( child, hProps, factor.from.x, child.from ); child.to = $.effects.setTransition( child, hProps, factor.to.x, child.to ); } // Animate children child.css( child.from ); child.animate( child.to, o.duration, o.easing, function() { // Restore children if ( restore ) { $.effects.restore( child, props2 ); } }); }); } // Animate el.animate( el.to, { queue: false, duration: o.duration, easing: o.easing, complete: function() { if ( el.to.opacity === 0 ) { el.css( "opacity", el.from.opacity ); } if ( mode === "hide" ) { el.hide(); } $.effects.restore( el, props ); if ( !restore ) { // we need to calculate our new positioning based on the scaling if ( position === "static" ) { el.css({ position: "relative", top: el.to.top, left: el.to.left }); } else { $.each([ "top", "left" ], function( idx, pos ) { el.css( pos, function( _, str ) { var val = parseInt( str, 10 ), toRef = idx ? el.to.left : el.to.top; // if original was "auto", recalculate the new value from wrapper if ( str === "auto" ) { return toRef + "px"; } return val + toRef + "px"; }); }); } } $.effects.removeWrapper( el ); done(); } }); }; /*! * jQuery UI Effects Scale 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/scale-effect/ */ var effectScale = $.effects.effect.scale = function( o, done ) { // Create element var el = $( this ), options = $.extend( true, {}, o ), mode = $.effects.setMode( el, o.mode || "effect" ), percent = parseInt( o.percent, 10 ) || ( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === "hide" ? 0 : 100 ) ), direction = o.direction || "both", origin = o.origin, original = { height: el.height(), width: el.width(), outerHeight: el.outerHeight(), outerWidth: el.outerWidth() }, factor = { y: direction !== "horizontal" ? (percent / 100) : 1, x: direction !== "vertical" ? (percent / 100) : 1 }; // We are going to pass this effect to the size effect: options.effect = "size"; options.queue = false; options.complete = done; // Set default origin and restore for show/hide if ( mode !== "effect" ) { options.origin = origin || [ "middle", "center" ]; options.restore = true; } options.from = o.from || ( mode === "show" ? { height: 0, width: 0, outerHeight: 0, outerWidth: 0 } : original ); options.to = { height: original.height * factor.y, width: original.width * factor.x, outerHeight: original.outerHeight * factor.y, outerWidth: original.outerWidth * factor.x }; // Fade option to support puff if ( options.fade ) { if ( mode === "show" ) { options.from.opacity = 0; options.to.opacity = 1; } if ( mode === "hide" ) { options.from.opacity = 1; options.to.opacity = 0; } } // Animate el.effect( options ); }; /*! * jQuery UI Effects Puff 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/puff-effect/ */ var effectPuff = $.effects.effect.puff = function( o, done ) { var elem = $( this ), mode = $.effects.setMode( elem, o.mode || "hide" ), hide = mode === "hide", percent = parseInt( o.percent, 10 ) || 150, factor = percent / 100, original = { height: elem.height(), width: elem.width(), outerHeight: elem.outerHeight(), outerWidth: elem.outerWidth() }; $.extend( o, { effect: "scale", queue: false, fade: true, mode: mode, complete: done, percent: hide ? percent : 100, from: hide ? original : { height: original.height * factor, width: original.width * factor, outerHeight: original.outerHeight * factor, outerWidth: original.outerWidth * factor } }); elem.effect( o ); }; /*! * jQuery UI Effects Pulsate 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/pulsate-effect/ */ var effectPulsate = $.effects.effect.pulsate = function( o, done ) { var elem = $( this ), mode = $.effects.setMode( elem, o.mode || "show" ), show = mode === "show", hide = mode === "hide", showhide = ( show || mode === "hide" ), // showing or hiding leaves of the "last" animation anims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), duration = o.duration / anims, animateTo = 0, queue = elem.queue(), queuelen = queue.length, i; if ( show || !elem.is(":visible")) { elem.css( "opacity", 0 ).show(); animateTo = 1; } // anims - 1 opacity "toggles" for ( i = 1; i < anims; i++ ) { elem.animate({ opacity: animateTo }, duration, o.easing ); animateTo = 1 - animateTo; } elem.animate({ opacity: animateTo }, duration, o.easing); elem.queue(function() { if ( hide ) { elem.hide(); } done(); }); // We just queued up "anims" animations, we need to put them next in the queue if ( queuelen > 1 ) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } elem.dequeue(); }; /*! * jQuery UI Effects Shake 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/shake-effect/ */ var effectShake = $.effects.effect.shake = function( o, done ) { var el = $( this ), props = [ "position", "top", "bottom", "left", "right", "height", "width" ], mode = $.effects.setMode( el, o.mode || "effect" ), direction = o.direction || "left", distance = o.distance || 20, times = o.times || 3, anims = times * 2 + 1, speed = Math.round( o.duration / anims ), ref = (direction === "up" || direction === "down") ? "top" : "left", positiveMotion = (direction === "up" || direction === "left"), animation = {}, animation1 = {}, animation2 = {}, i, // we will need to re-assemble the queue to stack our animations in place queue = el.queue(), queuelen = queue.length; $.effects.save( el, props ); el.show(); $.effects.createWrapper( el ); // Animation animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; // Animate el.animate( animation, speed, o.easing ); // Shakes for ( i = 1; i < times; i++ ) { el.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing ); } el .animate( animation1, speed, o.easing ) .animate( animation, speed / 2, o.easing ) .queue(function() { if ( mode === "hide" ) { el.hide(); } $.effects.restore( el, props ); $.effects.removeWrapper( el ); done(); }); // inject all the animations we just queued to be first in line (after "inprogress") if ( queuelen > 1) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) ); } el.dequeue(); }; /*! * jQuery UI Effects Slide 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/slide-effect/ */ var effectSlide = $.effects.effect.slide = function( o, done ) { // Create element var el = $( this ), props = [ "position", "top", "bottom", "left", "right", "width", "height" ], mode = $.effects.setMode( el, o.mode || "show" ), show = mode === "show", direction = o.direction || "left", ref = (direction === "up" || direction === "down") ? "top" : "left", positiveMotion = (direction === "up" || direction === "left"), distance, animation = {}; // Adjust $.effects.save( el, props ); el.show(); distance = o.distance || el[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ); $.effects.createWrapper( el ).css({ overflow: "hidden" }); if ( show ) { el.css( ref, positiveMotion ? (isNaN(distance) ? "-" + distance : -distance) : distance ); } // Animation animation[ ref ] = ( show ? ( positiveMotion ? "+=" : "-=") : ( positiveMotion ? "-=" : "+=")) + distance; // Animate el.animate( animation, { queue: false, duration: o.duration, easing: o.easing, complete: function() { if ( mode === "hide" ) { el.hide(); } $.effects.restore( el, props ); $.effects.removeWrapper( el ); done(); } }); }; /*! * jQuery UI Effects Transfer 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/transfer-effect/ */ var effectTransfer = $.effects.effect.transfer = function( o, done ) { var elem = $( this ), target = $( o.to ), targetFixed = target.css( "position" ) === "fixed", body = $("body"), fixTop = targetFixed ? body.scrollTop() : 0, fixLeft = targetFixed ? body.scrollLeft() : 0, endPosition = target.offset(), animation = { top: endPosition.top - fixTop, left: endPosition.left - fixLeft, height: target.innerHeight(), width: target.innerWidth() }, startPosition = elem.offset(), transfer = $( "<div class='ui-effects-transfer'></div>" ) .appendTo( document.body ) .addClass( o.className ) .css({ top: startPosition.top - fixTop, left: startPosition.left - fixLeft, height: elem.innerHeight(), width: elem.innerWidth(), position: targetFixed ? "fixed" : "absolute" }) .animate( animation, o.duration, o.easing, function() { transfer.remove(); done(); }); }; /*! * jQuery UI Progressbar 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/progressbar/ */ var progressbar = $.widget( "ui.progressbar", { version: "1.11.4", options: { max: 100, value: 0, change: null, complete: null }, min: 0, _create: function() { // Constrain initial value this.oldValue = this.options.value = this._constrainedValue(); this.element .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) .attr({ // Only set static values, aria-valuenow and aria-valuemax are // set inside _refreshValue() role: "progressbar", "aria-valuemin": this.min }); this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" ) .appendTo( this.element ); this._refreshValue(); }, _destroy: function() { this.element .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) .removeAttr( "role" ) .removeAttr( "aria-valuemin" ) .removeAttr( "aria-valuemax" ) .removeAttr( "aria-valuenow" ); this.valueDiv.remove(); }, value: function( newValue ) { if ( newValue === undefined ) { return this.options.value; } this.options.value = this._constrainedValue( newValue ); this._refreshValue(); }, _constrainedValue: function( newValue ) { if ( newValue === undefined ) { newValue = this.options.value; } this.indeterminate = newValue === false; // sanitize value if ( typeof newValue !== "number" ) { newValue = 0; } return this.indeterminate ? false : Math.min( this.options.max, Math.max( this.min, newValue ) ); }, _setOptions: function( options ) { // Ensure "value" option is set after other values (like max) var value = options.value; delete options.value; this._super( options ); this.options.value = this._constrainedValue( value ); this._refreshValue(); }, _setOption: function( key, value ) { if ( key === "max" ) { // Don't allow a max less than min value = Math.max( this.min, value ); } if ( key === "disabled" ) { this.element .toggleClass( "ui-state-disabled", !!value ) .attr( "aria-disabled", value ); } this._super( key, value ); }, _percentage: function() { return this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min ); }, _refreshValue: function() { var value = this.options.value, percentage = this._percentage(); this.valueDiv .toggle( this.indeterminate || value > this.min ) .toggleClass( "ui-corner-right", value === this.options.max ) .width( percentage.toFixed(0) + "%" ); this.element.toggleClass( "ui-progressbar-indeterminate", this.indeterminate ); if ( this.indeterminate ) { this.element.removeAttr( "aria-valuenow" ); if ( !this.overlayDiv ) { this.overlayDiv = $( "<div class='ui-progressbar-overlay'></div>" ).appendTo( this.valueDiv ); } } else { this.element.attr({ "aria-valuemax": this.options.max, "aria-valuenow": value }); if ( this.overlayDiv ) { this.overlayDiv.remove(); this.overlayDiv = null; } } if ( this.oldValue !== value ) { this.oldValue = value; this._trigger( "change" ); } if ( value === this.options.max ) { this._trigger( "complete" ); } } }); /*! * jQuery UI Selectable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/selectable/ */ var selectable = $.widget("ui.selectable", $.ui.mouse, { version: "1.11.4", options: { appendTo: "body", autoRefresh: true, distance: 0, filter: "*", tolerance: "touch", // callbacks selected: null, selecting: null, start: null, stop: null, unselected: null, unselecting: null }, _create: function() { var selectees, that = this; this.element.addClass("ui-selectable"); this.dragged = false; // cache selectee children based on filter this.refresh = function() { selectees = $(that.options.filter, that.element[0]); selectees.addClass("ui-selectee"); selectees.each(function() { var $this = $(this), pos = $this.offset(); $.data(this, "selectable-item", { element: this, $element: $this, left: pos.left, top: pos.top, right: pos.left + $this.outerWidth(), bottom: pos.top + $this.outerHeight(), startselected: false, selected: $this.hasClass("ui-selected"), selecting: $this.hasClass("ui-selecting"), unselecting: $this.hasClass("ui-unselecting") }); }); }; this.refresh(); this.selectees = selectees.addClass("ui-selectee"); this._mouseInit(); this.helper = $("<div class='ui-selectable-helper'></div>"); }, _destroy: function() { this.selectees .removeClass("ui-selectee") .removeData("selectable-item"); this.element .removeClass("ui-selectable ui-selectable-disabled"); this._mouseDestroy(); }, _mouseStart: function(event) { var that = this, options = this.options; this.opos = [ event.pageX, event.pageY ]; if (this.options.disabled) { return; } this.selectees = $(options.filter, this.element[0]); this._trigger("start", event); $(options.appendTo).append(this.helper); // position helper (lasso) this.helper.css({ "left": event.pageX, "top": event.pageY, "width": 0, "height": 0 }); if (options.autoRefresh) { this.refresh(); } this.selectees.filter(".ui-selected").each(function() { var selectee = $.data(this, "selectable-item"); selectee.startselected = true; if (!event.metaKey && !event.ctrlKey) { selectee.$element.removeClass("ui-selected"); selectee.selected = false; selectee.$element.addClass("ui-unselecting"); selectee.unselecting = true; // selectable UNSELECTING callback that._trigger("unselecting", event, { unselecting: selectee.element }); } }); $(event.target).parents().addBack().each(function() { var doSelect, selectee = $.data(this, "selectable-item"); if (selectee) { doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass("ui-selected"); selectee.$element .removeClass(doSelect ? "ui-unselecting" : "ui-selected") .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); selectee.unselecting = !doSelect; selectee.selecting = doSelect; selectee.selected = doSelect; // selectable (UN)SELECTING callback if (doSelect) { that._trigger("selecting", event, { selecting: selectee.element }); } else { that._trigger("unselecting", event, { unselecting: selectee.element }); } return false; } }); }, _mouseDrag: function(event) { this.dragged = true; if (this.options.disabled) { return; } var tmp, that = this, options = this.options, x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY; if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; } if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; } this.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 }); this.selectees.each(function() { var selectee = $.data(this, "selectable-item"), hit = false; //prevent helper from being selected if appendTo: selectable if (!selectee || selectee.element === that.element[0]) { return; } if (options.tolerance === "touch") { hit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) ); } else if (options.tolerance === "fit") { hit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2); } if (hit) { // SELECT if (selectee.selected) { selectee.$element.removeClass("ui-selected"); selectee.selected = false; } if (selectee.unselecting) { selectee.$element.removeClass("ui-unselecting"); selectee.unselecting = false; } if (!selectee.selecting) { selectee.$element.addClass("ui-selecting"); selectee.selecting = true; // selectable SELECTING callback that._trigger("selecting", event, { selecting: selectee.element }); } } else { // UNSELECT if (selectee.selecting) { if ((event.metaKey || event.ctrlKey) && selectee.startselected) { selectee.$element.removeClass("ui-selecting"); selectee.selecting = false; selectee.$element.addClass("ui-selected"); selectee.selected = true; } else { selectee.$element.removeClass("ui-selecting"); selectee.selecting = false; if (selectee.startselected) { selectee.$element.addClass("ui-unselecting"); selectee.unselecting = true; } // selectable UNSELECTING callback that._trigger("unselecting", event, { unselecting: selectee.element }); } } if (selectee.selected) { if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { selectee.$element.removeClass("ui-selected"); selectee.selected = false; selectee.$element.addClass("ui-unselecting"); selectee.unselecting = true; // selectable UNSELECTING callback that._trigger("unselecting", event, { unselecting: selectee.element }); } } } }); return false; }, _mouseStop: function(event) { var that = this; this.dragged = false; $(".ui-unselecting", this.element[0]).each(function() { var selectee = $.data(this, "selectable-item"); selectee.$element.removeClass("ui-unselecting"); selectee.unselecting = false; selectee.startselected = false; that._trigger("unselected", event, { unselected: selectee.element }); }); $(".ui-selecting", this.element[0]).each(function() { var selectee = $.data(this, "selectable-item"); selectee.$element.removeClass("ui-selecting").addClass("ui-selected"); selectee.selecting = false; selectee.selected = true; selectee.startselected = true; that._trigger("selected", event, { selected: selectee.element }); }); this._trigger("stop", event); this.helper.remove(); return false; } }); /*! * jQuery UI Selectmenu 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/selectmenu */ var selectmenu = $.widget( "ui.selectmenu", { version: "1.11.4", defaultElement: "<select>", options: { appendTo: null, disabled: null, icons: { button: "ui-icon-triangle-1-s" }, position: { my: "left top", at: "left bottom", collision: "none" }, width: null, // callbacks change: null, close: null, focus: null, open: null, select: null }, _create: function() { var selectmenuId = this.element.uniqueId().attr( "id" ); this.ids = { element: selectmenuId, button: selectmenuId + "-button", menu: selectmenuId + "-menu" }; this._drawButton(); this._drawMenu(); if ( this.options.disabled ) { this.disable(); } }, _drawButton: function() { var that = this; // Associate existing label with the new button this.label = $( "label[for='" + this.ids.element + "']" ).attr( "for", this.ids.button ); this._on( this.label, { click: function( event ) { this.button.focus(); event.preventDefault(); } }); // Hide original select element this.element.hide(); // Create button this.button = $( "<span>", { "class": "ui-selectmenu-button ui-widget ui-state-default ui-corner-all", tabindex: this.options.disabled ? -1 : 0, id: this.ids.button, role: "combobox", "aria-expanded": "false", "aria-autocomplete": "list", "aria-owns": this.ids.menu, "aria-haspopup": "true" }) .insertAfter( this.element ); $( "<span>", { "class": "ui-icon " + this.options.icons.button }) .prependTo( this.button ); this.buttonText = $( "<span>", { "class": "ui-selectmenu-text" }) .appendTo( this.button ); this._setText( this.buttonText, this.element.find( "option:selected" ).text() ); this._resizeButton(); this._on( this.button, this._buttonEvents ); this.button.one( "focusin", function() { // Delay rendering the menu items until the button receives focus. // The menu may have already been rendered via a programmatic open. if ( !that.menuItems ) { that._refreshMenu(); } }); this._hoverable( this.button ); this._focusable( this.button ); }, _drawMenu: function() { var that = this; // Create menu this.menu = $( "<ul>", { "aria-hidden": "true", "aria-labelledby": this.ids.button, id: this.ids.menu }); // Wrap menu this.menuWrap = $( "<div>", { "class": "ui-selectmenu-menu ui-front" }) .append( this.menu ) .appendTo( this._appendTo() ); // Initialize menu widget this.menuInstance = this.menu .menu({ role: "listbox", select: function( event, ui ) { event.preventDefault(); // support: IE8 // If the item was selected via a click, the text selection // will be destroyed in IE that._setSelection(); that._select( ui.item.data( "ui-selectmenu-item" ), event ); }, focus: function( event, ui ) { var item = ui.item.data( "ui-selectmenu-item" ); // Prevent inital focus from firing and check if its a newly focused item if ( that.focusIndex != null && item.index !== that.focusIndex ) { that._trigger( "focus", event, { item: item } ); if ( !that.isOpen ) { that._select( item, event ); } } that.focusIndex = item.index; that.button.attr( "aria-activedescendant", that.menuItems.eq( item.index ).attr( "id" ) ); } }) .menu( "instance" ); // Adjust menu styles to dropdown this.menu .addClass( "ui-corner-bottom" ) .removeClass( "ui-corner-all" ); // Don't close the menu on mouseleave this.menuInstance._off( this.menu, "mouseleave" ); // Cancel the menu's collapseAll on document click this.menuInstance._closeOnDocumentClick = function() { return false; }; // Selects often contain empty items, but never contain dividers this.menuInstance._isDivider = function() { return false; }; }, refresh: function() { this._refreshMenu(); this._setText( this.buttonText, this._getSelectedItem().text() ); if ( !this.options.width ) { this._resizeButton(); } }, _refreshMenu: function() { this.menu.empty(); var item, options = this.element.find( "option" ); if ( !options.length ) { return; } this._parseOptions( options ); this._renderMenu( this.menu, this.items ); this.menuInstance.refresh(); this.menuItems = this.menu.find( "li" ).not( ".ui-selectmenu-optgroup" ); item = this._getSelectedItem(); // Update the menu to have the correct item focused this.menuInstance.focus( null, item ); this._setAria( item.data( "ui-selectmenu-item" ) ); // Set disabled state this._setOption( "disabled", this.element.prop( "disabled" ) ); }, open: function( event ) { if ( this.options.disabled ) { return; } // If this is the first time the menu is being opened, render the items if ( !this.menuItems ) { this._refreshMenu(); } else { // Menu clears focus on close, reset focus to selected item this.menu.find( ".ui-state-focus" ).removeClass( "ui-state-focus" ); this.menuInstance.focus( null, this._getSelectedItem() ); } this.isOpen = true; this._toggleAttr(); this._resizeMenu(); this._position(); this._on( this.document, this._documentClick ); this._trigger( "open", event ); }, _position: function() { this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) ); }, close: function( event ) { if ( !this.isOpen ) { return; } this.isOpen = false; this._toggleAttr(); this.range = null; this._off( this.document ); this._trigger( "close", event ); }, widget: function() { return this.button; }, menuWidget: function() { return this.menu; }, _renderMenu: function( ul, items ) { var that = this, currentOptgroup = ""; $.each( items, function( index, item ) { if ( item.optgroup !== currentOptgroup ) { $( "<li>", { "class": "ui-selectmenu-optgroup ui-menu-divider" + ( item.element.parent( "optgroup" ).prop( "disabled" ) ? " ui-state-disabled" : "" ), text: item.optgroup }) .appendTo( ul ); currentOptgroup = item.optgroup; } that._renderItemData( ul, item ); }); }, _renderItemData: function( ul, item ) { return this._renderItem( ul, item ).data( "ui-selectmenu-item", item ); }, _renderItem: function( ul, item ) { var li = $( "<li>" ); if ( item.disabled ) { li.addClass( "ui-state-disabled" ); } this._setText( li, item.label ); return li.appendTo( ul ); }, _setText: function( element, value ) { if ( value ) { element.text( value ); } else { element.html( " " ); } }, _move: function( direction, event ) { var item, next, filter = ".ui-menu-item"; if ( this.isOpen ) { item = this.menuItems.eq( this.focusIndex ); } else { item = this.menuItems.eq( this.element[ 0 ].selectedIndex ); filter += ":not(.ui-state-disabled)"; } if ( direction === "first" || direction === "last" ) { next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 ); } else { next = item[ direction + "All" ]( filter ).eq( 0 ); } if ( next.length ) { this.menuInstance.focus( event, next ); } }, _getSelectedItem: function() { return this.menuItems.eq( this.element[ 0 ].selectedIndex ); }, _toggle: function( event ) { this[ this.isOpen ? "close" : "open" ]( event ); }, _setSelection: function() { var selection; if ( !this.range ) { return; } if ( window.getSelection ) { selection = window.getSelection(); selection.removeAllRanges(); selection.addRange( this.range ); // support: IE8 } else { this.range.select(); } // support: IE // Setting the text selection kills the button focus in IE, but // restoring the focus doesn't kill the selection. this.button.focus(); }, _documentClick: { mousedown: function( event ) { if ( !this.isOpen ) { return; } if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" + this.ids.button ).length ) { this.close( event ); } } }, _buttonEvents: { // Prevent text selection from being reset when interacting with the selectmenu (#10144) mousedown: function() { var selection; if ( window.getSelection ) { selection = window.getSelection(); if ( selection.rangeCount ) { this.range = selection.getRangeAt( 0 ); } // support: IE8 } else { this.range = document.selection.createRange(); } }, click: function( event ) { this._setSelection(); this._toggle( event ); }, keydown: function( event ) { var preventDefault = true; switch ( event.keyCode ) { case $.ui.keyCode.TAB: case $.ui.keyCode.ESCAPE: this.close( event ); preventDefault = false; break; case $.ui.keyCode.ENTER: if ( this.isOpen ) { this._selectFocusedItem( event ); } break; case $.ui.keyCode.UP: if ( event.altKey ) { this._toggle( event ); } else { this._move( "prev", event ); } break; case $.ui.keyCode.DOWN: if ( event.altKey ) { this._toggle( event ); } else { this._move( "next", event ); } break; case $.ui.keyCode.SPACE: if ( this.isOpen ) { this._selectFocusedItem( event ); } else { this._toggle( event ); } break; case $.ui.keyCode.LEFT: this._move( "prev", event ); break; case $.ui.keyCode.RIGHT: this._move( "next", event ); break; case $.ui.keyCode.HOME: case $.ui.keyCode.PAGE_UP: this._move( "first", event ); break; case $.ui.keyCode.END: case $.ui.keyCode.PAGE_DOWN: this._move( "last", event ); break; default: this.menu.trigger( event ); preventDefault = false; } if ( preventDefault ) { event.preventDefault(); } } }, _selectFocusedItem: function( event ) { var item = this.menuItems.eq( this.focusIndex ); if ( !item.hasClass( "ui-state-disabled" ) ) { this._select( item.data( "ui-selectmenu-item" ), event ); } }, _select: function( item, event ) { var oldIndex = this.element[ 0 ].selectedIndex; // Change native select element this.element[ 0 ].selectedIndex = item.index; this._setText( this.buttonText, item.label ); this._setAria( item ); this._trigger( "select", event, { item: item } ); if ( item.index !== oldIndex ) { this._trigger( "change", event, { item: item } ); } this.close( event ); }, _setAria: function( item ) { var id = this.menuItems.eq( item.index ).attr( "id" ); this.button.attr({ "aria-labelledby": id, "aria-activedescendant": id }); this.menu.attr( "aria-activedescendant", id ); }, _setOption: function( key, value ) { if ( key === "icons" ) { this.button.find( "span.ui-icon" ) .removeClass( this.options.icons.button ) .addClass( value.button ); } this._super( key, value ); if ( key === "appendTo" ) { this.menuWrap.appendTo( this._appendTo() ); } if ( key === "disabled" ) { this.menuInstance.option( "disabled", value ); this.button .toggleClass( "ui-state-disabled", value ) .attr( "aria-disabled", value ); this.element.prop( "disabled", value ); if ( value ) { this.button.attr( "tabindex", -1 ); this.close(); } else { this.button.attr( "tabindex", 0 ); } } if ( key === "width" ) { this._resizeButton(); } }, _appendTo: function() { var element = this.options.appendTo; if ( element ) { element = element.jquery || element.nodeType ? $( element ) : this.document.find( element ).eq( 0 ); } if ( !element || !element[ 0 ] ) { element = this.element.closest( ".ui-front" ); } if ( !element.length ) { element = this.document[ 0 ].body; } return element; }, _toggleAttr: function() { this.button .toggleClass( "ui-corner-top", this.isOpen ) .toggleClass( "ui-corner-all", !this.isOpen ) .attr( "aria-expanded", this.isOpen ); this.menuWrap.toggleClass( "ui-selectmenu-open", this.isOpen ); this.menu.attr( "aria-hidden", !this.isOpen ); }, _resizeButton: function() { var width = this.options.width; if ( !width ) { width = this.element.show().outerWidth(); this.element.hide(); } this.button.outerWidth( width ); }, _resizeMenu: function() { this.menu.outerWidth( Math.max( this.button.outerWidth(), // support: IE10 // IE10 wraps long text (possibly a rounding bug) // so we add 1px to avoid the wrapping this.menu.width( "" ).outerWidth() + 1 ) ); }, _getCreateOptions: function() { return { disabled: this.element.prop( "disabled" ) }; }, _parseOptions: function( options ) { var data = []; options.each(function( index, item ) { var option = $( item ), optgroup = option.parent( "optgroup" ); data.push({ element: option, index: index, value: option.val(), label: option.text(), optgroup: optgroup.attr( "label" ) || "", disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" ) }); }); this.items = data; }, _destroy: function() { this.menuWrap.remove(); this.button.remove(); this.element.show(); this.element.removeUniqueId(); this.label.attr( "for", this.ids.element ); } }); /*! * jQuery UI Slider 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/slider/ */ var slider = $.widget( "ui.slider", $.ui.mouse, { version: "1.11.4", widgetEventPrefix: "slide", options: { animate: false, distance: 0, max: 100, min: 0, orientation: "horizontal", range: false, step: 1, value: 0, values: null, // callbacks change: null, slide: null, start: null, stop: null }, // number of pages in a slider // (how many times can you page up/down to go through the whole range) numPages: 5, _create: function() { this._keySliding = false; this._mouseSliding = false; this._animateOff = true; this._handleIndex = null; this._detectOrientation(); this._mouseInit(); this._calculateNewMax(); this.element .addClass( "ui-slider" + " ui-slider-" + this.orientation + " ui-widget" + " ui-widget-content" + " ui-corner-all"); this._refresh(); this._setOption( "disabled", this.options.disabled ); this._animateOff = false; }, _refresh: function() { this._createRange(); this._createHandles(); this._setupEvents(); this._refreshValue(); }, _createHandles: function() { var i, handleCount, options = this.options, existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), handle = "<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>", handles = []; handleCount = ( options.values && options.values.length ) || 1; if ( existingHandles.length > handleCount ) { existingHandles.slice( handleCount ).remove(); existingHandles = existingHandles.slice( 0, handleCount ); } for ( i = existingHandles.length; i < handleCount; i++ ) { handles.push( handle ); } this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) ); this.handle = this.handles.eq( 0 ); this.handles.each(function( i ) { $( this ).data( "ui-slider-handle-index", i ); }); }, _createRange: function() { var options = this.options, classes = ""; if ( options.range ) { if ( options.range === true ) { if ( !options.values ) { options.values = [ this._valueMin(), this._valueMin() ]; } else if ( options.values.length && options.values.length !== 2 ) { options.values = [ options.values[0], options.values[0] ]; } else if ( $.isArray( options.values ) ) { options.values = options.values.slice(0); } } if ( !this.range || !this.range.length ) { this.range = $( "<div></div>" ) .appendTo( this.element ); classes = "ui-slider-range" + // note: this isn't the most fittingly semantic framework class for this element, // but worked best visually with a variety of themes " ui-widget-header ui-corner-all"; } else { this.range.removeClass( "ui-slider-range-min ui-slider-range-max" ) // Handle range switching from true to min/max .css({ "left": "", "bottom": "" }); } this.range.addClass( classes + ( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) ); } else { if ( this.range ) { this.range.remove(); } this.range = null; } }, _setupEvents: function() { this._off( this.handles ); this._on( this.handles, this._handleEvents ); this._hoverable( this.handles ); this._focusable( this.handles ); }, _destroy: function() { this.handles.remove(); if ( this.range ) { this.range.remove(); } this.element .removeClass( "ui-slider" + " ui-slider-horizontal" + " ui-slider-vertical" + " ui-widget" + " ui-widget-content" + " ui-corner-all" ); this._mouseDestroy(); }, _mouseCapture: function( event ) { var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, that = this, o = this.options; if ( o.disabled ) { return false; } this.elementSize = { width: this.element.outerWidth(), height: this.element.outerHeight() }; this.elementOffset = this.element.offset(); position = { x: event.pageX, y: event.pageY }; normValue = this._normValueFromMouse( position ); distance = this._valueMax() - this._valueMin() + 1; this.handles.each(function( i ) { var thisDistance = Math.abs( normValue - that.values(i) ); if (( distance > thisDistance ) || ( distance === thisDistance && (i === that._lastChangedValue || that.values(i) === o.min ))) { distance = thisDistance; closestHandle = $( this ); index = i; } }); allowed = this._start( event, index ); if ( allowed === false ) { return false; } this._mouseSliding = true; this._handleIndex = index; closestHandle .addClass( "ui-state-active" ) .focus(); offset = closestHandle.offset(); mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" ); this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { left: event.pageX - offset.left - ( closestHandle.width() / 2 ), top: event.pageY - offset.top - ( closestHandle.height() / 2 ) - ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) }; if ( !this.handles.hasClass( "ui-state-hover" ) ) { this._slide( event, index, normValue ); } this._animateOff = true; return true; }, _mouseStart: function() { return true; }, _mouseDrag: function( event ) { var position = { x: event.pageX, y: event.pageY }, normValue = this._normValueFromMouse( position ); this._slide( event, this._handleIndex, normValue ); return false; }, _mouseStop: function( event ) { this.handles.removeClass( "ui-state-active" ); this._mouseSliding = false; this._stop( event, this._handleIndex ); this._change( event, this._handleIndex ); this._handleIndex = null; this._clickOffset = null; this._animateOff = false; return false; }, _detectOrientation: function() { this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; }, _normValueFromMouse: function( position ) { var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse; if ( this.orientation === "horizontal" ) { pixelTotal = this.elementSize.width; pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); } else { pixelTotal = this.elementSize.height; pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); } percentMouse = ( pixelMouse / pixelTotal ); if ( percentMouse > 1 ) { percentMouse = 1; } if ( percentMouse < 0 ) { percentMouse = 0; } if ( this.orientation === "vertical" ) { percentMouse = 1 - percentMouse; } valueTotal = this._valueMax() - this._valueMin(); valueMouse = this._valueMin() + percentMouse * valueTotal; return this._trimAlignValue( valueMouse ); }, _start: function( event, index ) { var uiHash = { handle: this.handles[ index ], value: this.value() }; if ( this.options.values && this.options.values.length ) { uiHash.value = this.values( index ); uiHash.values = this.values(); } return this._trigger( "start", event, uiHash ); }, _slide: function( event, index, newVal ) { var otherVal, newValues, allowed; if ( this.options.values && this.options.values.length ) { otherVal = this.values( index ? 0 : 1 ); if ( ( this.options.values.length === 2 && this.options.range === true ) && ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) ) { newVal = otherVal; } if ( newVal !== this.values( index ) ) { newValues = this.values(); newValues[ index ] = newVal; // A slide can be canceled by returning false from the slide callback allowed = this._trigger( "slide", event, { handle: this.handles[ index ], value: newVal, values: newValues } ); otherVal = this.values( index ? 0 : 1 ); if ( allowed !== false ) { this.values( index, newVal ); } } } else { if ( newVal !== this.value() ) { // A slide can be canceled by returning false from the slide callback allowed = this._trigger( "slide", event, { handle: this.handles[ index ], value: newVal } ); if ( allowed !== false ) { this.value( newVal ); } } } }, _stop: function( event, index ) { var uiHash = { handle: this.handles[ index ], value: this.value() }; if ( this.options.values && this.options.values.length ) { uiHash.value = this.values( index ); uiHash.values = this.values(); } this._trigger( "stop", event, uiHash ); }, _change: function( event, index ) { if ( !this._keySliding && !this._mouseSliding ) { var uiHash = { handle: this.handles[ index ], value: this.value() }; if ( this.options.values && this.options.values.length ) { uiHash.value = this.values( index ); uiHash.values = this.values(); } //store the last changed value index for reference when handles overlap this._lastChangedValue = index; this._trigger( "change", event, uiHash ); } }, value: function( newValue ) { if ( arguments.length ) { this.options.value = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, 0 ); return; } return this._value(); }, values: function( index, newValue ) { var vals, newValues, i; if ( arguments.length > 1 ) { this.options.values[ index ] = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, index ); return; } if ( arguments.length ) { if ( $.isArray( arguments[ 0 ] ) ) { vals = this.options.values; newValues = arguments[ 0 ]; for ( i = 0; i < vals.length; i += 1 ) { vals[ i ] = this._trimAlignValue( newValues[ i ] ); this._change( null, i ); } this._refreshValue(); } else { if ( this.options.values && this.options.values.length ) { return this._values( index ); } else { return this.value(); } } } else { return this._values(); } }, _setOption: function( key, value ) { var i, valsLength = 0; if ( key === "range" && this.options.range === true ) { if ( value === "min" ) { this.options.value = this._values( 0 ); this.options.values = null; } else if ( value === "max" ) { this.options.value = this._values( this.options.values.length - 1 ); this.options.values = null; } } if ( $.isArray( this.options.values ) ) { valsLength = this.options.values.length; } if ( key === "disabled" ) { this.element.toggleClass( "ui-state-disabled", !!value ); } this._super( key, value ); switch ( key ) { case "orientation": this._detectOrientation(); this.element .removeClass( "ui-slider-horizontal ui-slider-vertical" ) .addClass( "ui-slider-" + this.orientation ); this._refreshValue(); // Reset positioning from previous orientation this.handles.css( value === "horizontal" ? "bottom" : "left", "" ); break; case "value": this._animateOff = true; this._refreshValue(); this._change( null, 0 ); this._animateOff = false; break; case "values": this._animateOff = true; this._refreshValue(); for ( i = 0; i < valsLength; i += 1 ) { this._change( null, i ); } this._animateOff = false; break; case "step": case "min": case "max": this._animateOff = true; this._calculateNewMax(); this._refreshValue(); this._animateOff = false; break; case "range": this._animateOff = true; this._refresh(); this._animateOff = false; break; } }, //internal value getter // _value() returns value trimmed by min and max, aligned by step _value: function() { var val = this.options.value; val = this._trimAlignValue( val ); return val; }, //internal values getter // _values() returns array of values trimmed by min and max, aligned by step // _values( index ) returns single value trimmed by min and max, aligned by step _values: function( index ) { var val, vals, i; if ( arguments.length ) { val = this.options.values[ index ]; val = this._trimAlignValue( val ); return val; } else if ( this.options.values && this.options.values.length ) { // .slice() creates a copy of the array // this copy gets trimmed by min and max and then returned vals = this.options.values.slice(); for ( i = 0; i < vals.length; i += 1) { vals[ i ] = this._trimAlignValue( vals[ i ] ); } return vals; } else { return []; } }, // returns the step-aligned value that val is closest to, between (inclusive) min and max _trimAlignValue: function( val ) { if ( val <= this._valueMin() ) { return this._valueMin(); } if ( val >= this._valueMax() ) { return this._valueMax(); } var step = ( this.options.step > 0 ) ? this.options.step : 1, valModStep = (val - this._valueMin()) % step, alignValue = val - valModStep; if ( Math.abs(valModStep) * 2 >= step ) { alignValue += ( valModStep > 0 ) ? step : ( -step ); } // Since JavaScript has problems with large floats, round // the final value to 5 digits after the decimal point (see #4124) return parseFloat( alignValue.toFixed(5) ); }, _calculateNewMax: function() { var max = this.options.max, min = this._valueMin(), step = this.options.step, aboveMin = Math.floor( ( +( max - min ).toFixed( this._precision() ) ) / step ) * step; max = aboveMin + min; this.max = parseFloat( max.toFixed( this._precision() ) ); }, _precision: function() { var precision = this._precisionOf( this.options.step ); if ( this.options.min !== null ) { precision = Math.max( precision, this._precisionOf( this.options.min ) ); } return precision; }, _precisionOf: function( num ) { var str = num.toString(), decimal = str.indexOf( "." ); return decimal === -1 ? 0 : str.length - decimal - 1; }, _valueMin: function() { return this.options.min; }, _valueMax: function() { return this.max; }, _refreshValue: function() { var lastValPercent, valPercent, value, valueMin, valueMax, oRange = this.options.range, o = this.options, that = this, animate = ( !this._animateOff ) ? o.animate : false, _set = {}; if ( this.options.values && this.options.values.length ) { this.handles.each(function( i ) { valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100; _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); if ( that.options.range === true ) { if ( that.orientation === "horizontal" ) { if ( i === 0 ) { that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); } if ( i === 1 ) { that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); } } else { if ( i === 0 ) { that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); } if ( i === 1 ) { that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); } } } lastValPercent = valPercent; }); } else { value = this.value(); valueMin = this._valueMin(); valueMax = this._valueMax(); valPercent = ( valueMax !== valueMin ) ? ( value - valueMin ) / ( valueMax - valueMin ) * 100 : 0; _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); if ( oRange === "min" && this.orientation === "horizontal" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); } if ( oRange === "max" && this.orientation === "horizontal" ) { this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); } if ( oRange === "min" && this.orientation === "vertical" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); } if ( oRange === "max" && this.orientation === "vertical" ) { this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); } } }, _handleEvents: { keydown: function( event ) { var allowed, curVal, newVal, step, index = $( event.target ).data( "ui-slider-handle-index" ); switch ( event.keyCode ) { case $.ui.keyCode.HOME: case $.ui.keyCode.END: case $.ui.keyCode.PAGE_UP: case $.ui.keyCode.PAGE_DOWN: case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: event.preventDefault(); if ( !this._keySliding ) { this._keySliding = true; $( event.target ).addClass( "ui-state-active" ); allowed = this._start( event, index ); if ( allowed === false ) { return; } } break; } step = this.options.step; if ( this.options.values && this.options.values.length ) { curVal = newVal = this.values( index ); } else { curVal = newVal = this.value(); } switch ( event.keyCode ) { case $.ui.keyCode.HOME: newVal = this._valueMin(); break; case $.ui.keyCode.END: newVal = this._valueMax(); break; case $.ui.keyCode.PAGE_UP: newVal = this._trimAlignValue( curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages ) ); break; case $.ui.keyCode.PAGE_DOWN: newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / this.numPages ) ); break; case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: if ( curVal === this._valueMax() ) { return; } newVal = this._trimAlignValue( curVal + step ); break; case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: if ( curVal === this._valueMin() ) { return; } newVal = this._trimAlignValue( curVal - step ); break; } this._slide( event, index, newVal ); }, keyup: function( event ) { var index = $( event.target ).data( "ui-slider-handle-index" ); if ( this._keySliding ) { this._keySliding = false; this._stop( event, index ); this._change( event, index ); $( event.target ).removeClass( "ui-state-active" ); } } } }); /*! * jQuery UI Sortable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/sortable/ */ var sortable = $.widget("ui.sortable", $.ui.mouse, { version: "1.11.4", widgetEventPrefix: "sort", ready: false, options: { appendTo: "parent", axis: false, connectWith: false, containment: false, cursor: "auto", cursorAt: false, dropOnEmpty: true, forcePlaceholderSize: false, forceHelperSize: false, grid: false, handle: false, helper: "original", items: "> *", opacity: false, placeholder: false, revert: false, scroll: true, scrollSensitivity: 20, scrollSpeed: 20, scope: "default", tolerance: "intersect", zIndex: 1000, // callbacks activate: null, beforeStop: null, change: null, deactivate: null, out: null, over: null, receive: null, remove: null, sort: null, start: null, stop: null, update: null }, _isOverAxis: function( x, reference, size ) { return ( x >= reference ) && ( x < ( reference + size ) ); }, _isFloating: function( item ) { return (/left|right/).test(item.css("float")) || (/inline|table-cell/).test(item.css("display")); }, _create: function() { this.containerCache = {}; this.element.addClass("ui-sortable"); //Get the items this.refresh(); //Let's determine the parent's offset this.offset = this.element.offset(); //Initialize mouse events for interaction this._mouseInit(); this._setHandleClassName(); //We're ready to go this.ready = true; }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "handle" ) { this._setHandleClassName(); } }, _setHandleClassName: function() { this.element.find( ".ui-sortable-handle" ).removeClass( "ui-sortable-handle" ); $.each( this.items, function() { ( this.instance.options.handle ? this.item.find( this.instance.options.handle ) : this.item ) .addClass( "ui-sortable-handle" ); }); }, _destroy: function() { this.element .removeClass( "ui-sortable ui-sortable-disabled" ) .find( ".ui-sortable-handle" ) .removeClass( "ui-sortable-handle" ); this._mouseDestroy(); for ( var i = this.items.length - 1; i >= 0; i-- ) { this.items[i].item.removeData(this.widgetName + "-item"); } return this; }, _mouseCapture: function(event, overrideHandle) { var currentItem = null, validHandle = false, that = this; if (this.reverting) { return false; } if(this.options.disabled || this.options.type === "static") { return false; } //We have to refresh the items data once first this._refreshItems(event); //Find out if the clicked node (or one of its parents) is a actual item in this.items $(event.target).parents().each(function() { if($.data(this, that.widgetName + "-item") === that) { currentItem = $(this); return false; } }); if($.data(event.target, that.widgetName + "-item") === that) { currentItem = $(event.target); } if(!currentItem) { return false; } if(this.options.handle && !overrideHandle) { $(this.options.handle, currentItem).find("*").addBack().each(function() { if(this === event.target) { validHandle = true; } }); if(!validHandle) { return false; } } this.currentItem = currentItem; this._removeCurrentsFromItems(); return true; }, _mouseStart: function(event, overrideHandle, noActivation) { var i, body, o = this.options; this.currentContainer = this; //We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture this.refreshPositions(); //Create and append the visible helper this.helper = this._createHelper(event); //Cache the helper size this._cacheHelperProportions(); /* * - Position generation - * This block generates everything position related - it's the core of draggables. */ //Cache the margins of the original element this._cacheMargins(); //Get the next scrolling parent this.scrollParent = this.helper.scrollParent(); //The element's absolute position on the page minus margins this.offset = this.currentItem.offset(); this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }; $.extend(this.offset, { click: { //Where the click happened, relative to the element left: event.pageX - this.offset.left, top: event.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper }); // Only after we got the offset, we can change the helper's position to absolute // TODO: Still need to figure out a way to make relative sorting possible this.helper.css("position", "absolute"); this.cssPosition = this.helper.css("position"); //Generate the original position this.originalPosition = this._generatePosition(event); this.originalPageX = event.pageX; this.originalPageY = event.pageY; //Adjust the mouse offset relative to the helper if "cursorAt" is supplied (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); //Cache the former DOM position this.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] }; //If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way if(this.helper[0] !== this.currentItem[0]) { this.currentItem.hide(); } //Create the placeholder this._createPlaceholder(); //Set a containment if given in the options if(o.containment) { this._setContainment(); } if( o.cursor && o.cursor !== "auto" ) { // cursor option body = this.document.find( "body" ); // support: IE this.storedCursor = body.css( "cursor" ); body.css( "cursor", o.cursor ); this.storedStylesheet = $( "<style>*{ cursor: "+o.cursor+" !important; }</style>" ).appendTo( body ); } if(o.opacity) { // opacity option if (this.helper.css("opacity")) { this._storedOpacity = this.helper.css("opacity"); } this.helper.css("opacity", o.opacity); } if(o.zIndex) { // zIndex option if (this.helper.css("zIndex")) { this._storedZIndex = this.helper.css("zIndex"); } this.helper.css("zIndex", o.zIndex); } //Prepare scrolling if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") { this.overflowOffset = this.scrollParent.offset(); } //Call callbacks this._trigger("start", event, this._uiHash()); //Recache the helper size if(!this._preserveHelperProportions) { this._cacheHelperProportions(); } //Post "activate" events to possible containers if( !noActivation ) { for ( i = this.containers.length - 1; i >= 0; i-- ) { this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); } } //Prepare possible droppables if($.ui.ddmanager) { $.ui.ddmanager.current = this; } if ($.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(this, event); } this.dragging = true; this.helper.addClass("ui-sortable-helper"); this._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position return true; }, _mouseDrag: function(event) { var i, item, itemElement, intersection, o = this.options, scrolled = false; //Compute the helpers position this.position = this._generatePosition(event); this.positionAbs = this._convertPositionTo("absolute"); if (!this.lastPositionAbs) { this.lastPositionAbs = this.positionAbs; } //Do scrolling if(this.options.scroll) { if(this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== "HTML") { if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) { this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; } else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) { this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; } if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) { this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; } else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) { this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; } } else { if(event.pageY - this.document.scrollTop() < o.scrollSensitivity) { scrolled = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed); } else if(this.window.height() - (event.pageY - this.document.scrollTop()) < o.scrollSensitivity) { scrolled = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed); } if(event.pageX - this.document.scrollLeft() < o.scrollSensitivity) { scrolled = this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed); } else if(this.window.width() - (event.pageX - this.document.scrollLeft()) < o.scrollSensitivity) { scrolled = this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed); } } if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) { $.ui.ddmanager.prepareOffsets(this, event); } } //Regenerate the absolute position used for position checks this.positionAbs = this._convertPositionTo("absolute"); //Set the helper position if(!this.options.axis || this.options.axis !== "y") { this.helper[0].style.left = this.position.left+"px"; } if(!this.options.axis || this.options.axis !== "x") { this.helper[0].style.top = this.position.top+"px"; } //Rearrange for (i = this.items.length - 1; i >= 0; i--) { //Cache variables and intersection, continue if no intersection item = this.items[i]; itemElement = item.item[0]; intersection = this._intersectsWithPointer(item); if (!intersection) { continue; } // Only put the placeholder inside the current Container, skip all // items from other containers. This works because when moving // an item from one container to another the // currentContainer is switched before the placeholder is moved. // // Without this, moving items in "sub-sortables" can cause // the placeholder to jitter between the outer and inner container. if (item.instance !== this.currentContainer) { continue; } // cannot intersect with itself // no useless actions that have been done before // no action if the item moved is the parent of the item checked if (itemElement !== this.currentItem[0] && this.placeholder[intersection === 1 ? "next" : "prev"]()[0] !== itemElement && !$.contains(this.placeholder[0], itemElement) && (this.options.type === "semi-dynamic" ? !$.contains(this.element[0], itemElement) : true) ) { this.direction = intersection === 1 ? "down" : "up"; if (this.options.tolerance === "pointer" || this._intersectsWithSides(item)) { this._rearrange(event, item); } else { break; } this._trigger("change", event, this._uiHash()); break; } } //Post events to containers this._contactContainers(event); //Interconnect with droppables if($.ui.ddmanager) { $.ui.ddmanager.drag(this, event); } //Call callbacks this._trigger("sort", event, this._uiHash()); this.lastPositionAbs = this.positionAbs; return false; }, _mouseStop: function(event, noPropagation) { if(!event) { return; } //If we are using droppables, inform the manager about the drop if ($.ui.ddmanager && !this.options.dropBehaviour) { $.ui.ddmanager.drop(this, event); } if(this.options.revert) { var that = this, cur = this.placeholder.offset(), axis = this.options.axis, animation = {}; if ( !axis || axis === "x" ) { animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft); } if ( !axis || axis === "y" ) { animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop); } this.reverting = true; $(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() { that._clear(event); }); } else { this._clear(event, noPropagation); } return false; }, cancel: function() { if(this.dragging) { this._mouseUp({ target: null }); if(this.options.helper === "original") { this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); } else { this.currentItem.show(); } //Post deactivating events to containers for (var i = this.containers.length - 1; i >= 0; i--){ this.containers[i]._trigger("deactivate", null, this._uiHash(this)); if(this.containers[i].containerCache.over) { this.containers[i]._trigger("out", null, this._uiHash(this)); this.containers[i].containerCache.over = 0; } } } if (this.placeholder) { //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! if(this.placeholder[0].parentNode) { this.placeholder[0].parentNode.removeChild(this.placeholder[0]); } if(this.options.helper !== "original" && this.helper && this.helper[0].parentNode) { this.helper.remove(); } $.extend(this, { helper: null, dragging: false, reverting: false, _noFinalSort: null }); if(this.domPosition.prev) { $(this.domPosition.prev).after(this.currentItem); } else { $(this.domPosition.parent).prepend(this.currentItem); } } return this; }, serialize: function(o) { var items = this._getItemsAsjQuery(o && o.connected), str = []; o = o || {}; $(items).each(function() { var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || (/(.+)[\-=_](.+)/)); if (res) { str.push((o.key || res[1]+"[]")+"="+(o.key && o.expression ? res[1] : res[2])); } }); if(!str.length && o.key) { str.push(o.key + "="); } return str.join("&"); }, toArray: function(o) { var items = this._getItemsAsjQuery(o && o.connected), ret = []; o = o || {}; items.each(function() { ret.push($(o.item || this).attr(o.attribute || "id") || ""); }); return ret; }, /* Be careful with the following core functions */ _intersectsWith: function(item) { var x1 = this.positionAbs.left, x2 = x1 + this.helperProportions.width, y1 = this.positionAbs.top, y2 = y1 + this.helperProportions.height, l = item.left, r = l + item.width, t = item.top, b = t + item.height, dyClick = this.offset.click.top, dxClick = this.offset.click.left, isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ), isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ), isOverElement = isOverElementHeight && isOverElementWidth; if ( this.options.tolerance === "pointer" || this.options.forcePointerForContainers || (this.options.tolerance !== "pointer" && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"]) ) { return isOverElement; } else { return (l < x1 + (this.helperProportions.width / 2) && // Right Half x2 - (this.helperProportions.width / 2) < r && // Left Half t < y1 + (this.helperProportions.height / 2) && // Bottom Half y2 - (this.helperProportions.height / 2) < b ); // Top Half } }, _intersectsWithPointer: function(item) { var isOverElementHeight = (this.options.axis === "x") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height), isOverElementWidth = (this.options.axis === "y") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width), isOverElement = isOverElementHeight && isOverElementWidth, verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(); if (!isOverElement) { return false; } return this.floating ? ( ((horizontalDirection && horizontalDirection === "right") || verticalDirection === "down") ? 2 : 1 ) : ( verticalDirection && (verticalDirection === "down" ? 2 : 1) ); }, _intersectsWithSides: function(item) { var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height), isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width), verticalDirection = this._getDragVerticalDirection(), horizontalDirection = this._getDragHorizontalDirection(); if (this.floating && horizontalDirection) { return ((horizontalDirection === "right" && isOverRightHalf) || (horizontalDirection === "left" && !isOverRightHalf)); } else { return verticalDirection && ((verticalDirection === "down" && isOverBottomHalf) || (verticalDirection === "up" && !isOverBottomHalf)); } }, _getDragVerticalDirection: function() { var delta = this.positionAbs.top - this.lastPositionAbs.top; return delta !== 0 && (delta > 0 ? "down" : "up"); }, _getDragHorizontalDirection: function() { var delta = this.positionAbs.left - this.lastPositionAbs.left; return delta !== 0 && (delta > 0 ? "right" : "left"); }, refresh: function(event) { this._refreshItems(event); this._setHandleClassName(); this.refreshPositions(); return this; }, _connectWith: function() { var options = this.options; return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith; }, _getItemsAsjQuery: function(connected) { var i, j, cur, inst, items = [], queries = [], connectWith = this._connectWith(); if(connectWith && connected) { for (i = connectWith.length - 1; i >= 0; i--){ cur = $(connectWith[i], this.document[0]); for ( j = cur.length - 1; j >= 0; j--){ inst = $.data(cur[j], this.widgetFullName); if(inst && inst !== this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]); } } } } queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]); function addItems() { items.push( this ); } for (i = queries.length - 1; i >= 0; i--){ queries[i][0].each( addItems ); } return $(items); }, _removeCurrentsFromItems: function() { var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); this.items = $.grep(this.items, function (item) { for (var j=0; j < list.length; j++) { if(list[j] === item.item[0]) { return false; } } return true; }); }, _refreshItems: function(event) { this.items = []; this.containers = [this]; var i, j, cur, inst, targetData, _queries, item, queriesLength, items = this.items, queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]], connectWith = this._connectWith(); if(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down for (i = connectWith.length - 1; i >= 0; i--){ cur = $(connectWith[i], this.document[0]); for (j = cur.length - 1; j >= 0; j--){ inst = $.data(cur[j], this.widgetFullName); if(inst && inst !== this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); this.containers.push(inst); } } } } for (i = queries.length - 1; i >= 0; i--) { targetData = queries[i][1]; _queries = queries[i][0]; for (j=0, queriesLength = _queries.length; j < queriesLength; j++) { item = $(_queries[j]); item.data(this.widgetName + "-item", targetData); // Data for target checking (mouse manager) items.push({ item: item, instance: targetData, width: 0, height: 0, left: 0, top: 0 }); } } }, refreshPositions: function(fast) { // Determine whether items are being displayed horizontally this.floating = this.items.length ? this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) : false; //This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change if(this.offsetParent && this.helper) { this.offset.parent = this._getParentOffset(); } var i, item, t, p; for (i = this.items.length - 1; i >= 0; i--){ item = this.items[i]; //We ignore calculating positions of all connected containers when we're not over them if(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) { continue; } t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; if (!fast) { item.width = t.outerWidth(); item.height = t.outerHeight(); } p = t.offset(); item.left = p.left; item.top = p.top; } if(this.options.custom && this.options.custom.refreshContainers) { this.options.custom.refreshContainers.call(this); } else { for (i = this.containers.length - 1; i >= 0; i--){ p = this.containers[i].element.offset(); this.containers[i].containerCache.left = p.left; this.containers[i].containerCache.top = p.top; this.containers[i].containerCache.width = this.containers[i].element.outerWidth(); this.containers[i].containerCache.height = this.containers[i].element.outerHeight(); } } return this; }, _createPlaceholder: function(that) { that = that || this; var className, o = that.options; if(!o.placeholder || o.placeholder.constructor === String) { className = o.placeholder; o.placeholder = { element: function() { var nodeName = that.currentItem[0].nodeName.toLowerCase(), element = $( "<" + nodeName + ">", that.document[0] ) .addClass(className || that.currentItem[0].className+" ui-sortable-placeholder") .removeClass("ui-sortable-helper"); if ( nodeName === "tbody" ) { that._createTrPlaceholder( that.currentItem.find( "tr" ).eq( 0 ), $( "<tr>", that.document[ 0 ] ).appendTo( element ) ); } else if ( nodeName === "tr" ) { that._createTrPlaceholder( that.currentItem, element ); } else if ( nodeName === "img" ) { element.attr( "src", that.currentItem.attr( "src" ) ); } if ( !className ) { element.css( "visibility", "hidden" ); } return element; }, update: function(container, p) { // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified if(className && !o.forcePlaceholderSize) { return; } //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } } }; } //Create the placeholder that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); //Append it after the actual current item that.currentItem.after(that.placeholder); //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) o.placeholder.update(that, that.placeholder); }, _createTrPlaceholder: function( sourceTr, targetTr ) { var that = this; sourceTr.children().each(function() { $( "<td> </td>", that.document[ 0 ] ) .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) .appendTo( targetTr ); }); }, _contactContainers: function(event) { var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis, innermostContainer = null, innermostIndex = null; // get innermost container that intersects with item for (i = this.containers.length - 1; i >= 0; i--) { // never consider a container that's located within the item itself if($.contains(this.currentItem[0], this.containers[i].element[0])) { continue; } if(this._intersectsWith(this.containers[i].containerCache)) { // if we've already found a container and it's more "inner" than this, then continue if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { continue; } innermostContainer = this.containers[i]; innermostIndex = i; } else { // container doesn't intersect. trigger "out" event if necessary if(this.containers[i].containerCache.over) { this.containers[i]._trigger("out", event, this._uiHash(this)); this.containers[i].containerCache.over = 0; } } } // if no intersecting containers found, return if(!innermostContainer) { return; } // move the item into the container if it's not there already if(this.containers.length === 1) { if (!this.containers[innermostIndex].containerCache.over) { this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1; } } else { //When entering a new container, we will find the item with the least distance and append our item near it dist = 10000; itemWithLeastDistance = null; floating = innermostContainer.floating || this._isFloating(this.currentItem); posProperty = floating ? "left" : "top"; sizeProperty = floating ? "width" : "height"; axis = floating ? "clientX" : "clientY"; for (j = this.items.length - 1; j >= 0; j--) { if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { continue; } if(this.items[j].item[0] === this.currentItem[0]) { continue; } cur = this.items[j].item.offset()[posProperty]; nearBottom = false; if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) { nearBottom = true; } if ( Math.abs( event[ axis ] - cur ) < dist ) { dist = Math.abs( event[ axis ] - cur ); itemWithLeastDistance = this.items[ j ]; this.direction = nearBottom ? "up": "down"; } } //Check if dropOnEmpty is enabled if(!itemWithLeastDistance && !this.options.dropOnEmpty) { return; } if(this.currentContainer === this.containers[innermostIndex]) { if ( !this.currentContainer.containerCache.over ) { this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() ); this.currentContainer.containerCache.over = 1; } return; } itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); this._trigger("change", event, this._uiHash()); this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); this.currentContainer = this.containers[innermostIndex]; //Update the placeholder this.options.placeholder.update(this.currentContainer, this.placeholder); this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); this.containers[innermostIndex].containerCache.over = 1; } }, _createHelper: function(event) { var o = this.options, helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); //Add the helper to the DOM if that didn't happen already if(!helper.parents("body").length) { $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); } if(helper[0] === this.currentItem[0]) { this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; } if(!helper[0].style.width || o.forceHelperSize) { helper.width(this.currentItem.width()); } if(!helper[0].style.height || o.forceHelperSize) { helper.height(this.currentItem.height()); } return helper; }, _adjustOffsetFromHelper: function(obj) { if (typeof obj === "string") { obj = obj.split(" "); } if ($.isArray(obj)) { obj = {left: +obj[0], top: +obj[1] || 0}; } if ("left" in obj) { this.offset.click.left = obj.left + this.margins.left; } if ("right" in obj) { this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; } if ("top" in obj) { this.offset.click.top = obj.top + this.margins.top; } if ("bottom" in obj) { this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; } }, _getParentOffset: function() { //Get the offsetParent and cache its position this.offsetParent = this.helper.offsetParent(); var po = this.offsetParent.offset(); // This is a special case where we need to modify a offset calculated on start, since the following happened: // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag if(this.cssPosition === "absolute" && this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) { po.left += this.scrollParent.scrollLeft(); po.top += this.scrollParent.scrollTop(); } // This needs to be actually done for all browsers, since pageX/pageY includes this information // with an ugly IE fix if( this.offsetParent[0] === this.document[0].body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { po = { top: 0, left: 0 }; } return { top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) }; }, _getRelativeOffset: function() { if(this.cssPosition === "relative") { var p = this.currentItem.position(); return { top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() }; } else { return { top: 0, left: 0 }; } }, _cacheMargins: function() { this.margins = { left: (parseInt(this.currentItem.css("marginLeft"),10) || 0), top: (parseInt(this.currentItem.css("marginTop"),10) || 0) }; }, _cacheHelperProportions: function() { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() }; }, _setContainment: function() { var ce, co, over, o = this.options; if(o.containment === "parent") { o.containment = this.helper[0].parentNode; } if(o.containment === "document" || o.containment === "window") { this.containment = [ 0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, o.containment === "document" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, (o.containment === "document" ? this.document.width() : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; } if(!(/^(document|window|parent)$/).test(o.containment)) { ce = $(o.containment)[0]; co = $(o.containment).offset(); over = ($(ce).css("overflow") !== "hidden"); this.containment = [ co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top ]; } }, _convertPositionTo: function(d, pos) { if(!pos) { pos = this.position; } var mod = d === "absolute" ? 1 : -1, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); return { top: ( pos.top + // The absolute mouse position this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) ), left: ( pos.left + // The absolute mouse position this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) ) }; }, _generatePosition: function(event) { var top, left, o = this.options, pageX = event.pageX, pageY = event.pageY, scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); // This is another very weird special case that only happens for relative elements: // 1. If the css position is relative // 2. and the scroll parent is the document or similar to the offset parent // we have to refresh the relative offset during the scroll so there are no jumps if(this.cssPosition === "relative" && !(this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0])) { this.offset.relative = this._getRelativeOffset(); } /* * - Position constraining - * Constrain the position to a mix of grid, containment. */ if(this.originalPosition) { //If we are not dragging yet, we won't check for options if(this.containment) { if(event.pageX - this.offset.click.left < this.containment[0]) { pageX = this.containment[0] + this.offset.click.left; } if(event.pageY - this.offset.click.top < this.containment[1]) { pageY = this.containment[1] + this.offset.click.top; } if(event.pageX - this.offset.click.left > this.containment[2]) { pageX = this.containment[2] + this.offset.click.left; } if(event.pageY - this.offset.click.top > this.containment[3]) { pageY = this.containment[3] + this.offset.click.top; } } if(o.grid) { top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; } } return { top: ( pageY - // The absolute mouse position this.offset.click.top - // Click offset (relative to the element) this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.top + // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) ), left: ( pageX - // The absolute mouse position this.offset.click.left - // Click offset (relative to the element) this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent this.offset.parent.left + // The offsetParent's offset without borders (offset + border) ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) ) }; }, _rearrange: function(event, i, a, hardRefresh) { a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); //Various things done here to improve the performance: // 1. we create a setTimeout, that calls refreshPositions // 2. on the instance, we have a counter variable, that get's higher after every append // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same // 4. this lets only the last addition to the timeout stack through this.counter = this.counter ? ++this.counter : 1; var counter = this.counter; this._delay(function() { if(counter === this.counter) { this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove } }); }, _clear: function(event, noPropagation) { this.reverting = false; // We delay all events that have to be triggered to after the point where the placeholder has been removed and // everything else normalized again var i, delayedTriggers = []; // We first have to update the dom position of the actual currentItem // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) if(!this._noFinalSort && this.currentItem.parent().length) { this.placeholder.before(this.currentItem); } this._noFinalSort = null; if(this.helper[0] === this.currentItem[0]) { for(i in this._storedCSS) { if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { this._storedCSS[i] = ""; } } this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); } else { this.currentItem.show(); } if(this.fromOutside && !noPropagation) { delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); } if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed } // Check if the items Container has Changed and trigger appropriate // events. if (this !== this.currentContainer) { if(!noPropagation) { delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); } } //Post events to containers function delayEvent( type, instance, container ) { return function( event ) { container._trigger( type, event, instance._uiHash( instance ) ); }; } for (i = this.containers.length - 1; i >= 0; i--){ if (!noPropagation) { delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); } if(this.containers[i].containerCache.over) { delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) ); this.containers[i].containerCache.over = 0; } } //Do what was originally in plugins if ( this.storedCursor ) { this.document.find( "body" ).css( "cursor", this.storedCursor ); this.storedStylesheet.remove(); } if(this._storedOpacity) { this.helper.css("opacity", this._storedOpacity); } if(this._storedZIndex) { this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); } this.dragging = false; if(!noPropagation) { this._trigger("beforeStop", event, this._uiHash()); } //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! this.placeholder[0].parentNode.removeChild(this.placeholder[0]); if ( !this.cancelHelperRemoval ) { if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { this.helper.remove(); } this.helper = null; } if(!noPropagation) { for (i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); } //Trigger all delayed events this._trigger("stop", event, this._uiHash()); } this.fromOutside = false; return !this.cancelHelperRemoval; }, _trigger: function() { if ($.Widget.prototype._trigger.apply(this, arguments) === false) { this.cancel(); } }, _uiHash: function(_inst) { var inst = _inst || this; return { helper: inst.helper, placeholder: inst.placeholder || $([]), position: inst.position, originalPosition: inst.originalPosition, offset: inst.positionAbs, item: inst.currentItem, sender: _inst ? _inst.element : null }; } }); /*! * jQuery UI Spinner 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/spinner/ */ function spinner_modifier( fn ) { return function() { var previous = this.element.val(); fn.apply( this, arguments ); this._refresh(); if ( previous !== this.element.val() ) { this._trigger( "change" ); } }; } var spinner = $.widget( "ui.spinner", { version: "1.11.4", defaultElement: "<input>", widgetEventPrefix: "spin", options: { culture: null, icons: { down: "ui-icon-triangle-1-s", up: "ui-icon-triangle-1-n" }, incremental: true, max: null, min: null, numberFormat: null, page: 10, step: 1, change: null, spin: null, start: null, stop: null }, _create: function() { // handle string values that need to be parsed this._setOption( "max", this.options.max ); this._setOption( "min", this.options.min ); this._setOption( "step", this.options.step ); // Only format if there is a value, prevents the field from being marked // as invalid in Firefox, see #9573. if ( this.value() !== "" ) { // Format the value, but don't constrain. this._value( this.element.val(), true ); } this._draw(); this._on( this._events ); this._refresh(); // turning off autocomplete prevents the browser from remembering the // value when navigating through history, so we re-enable autocomplete // if the page is unloaded before the widget is destroyed. #7790 this._on( this.window, { beforeunload: function() { this.element.removeAttr( "autocomplete" ); } }); }, _getCreateOptions: function() { var options = {}, element = this.element; $.each( [ "min", "max", "step" ], function( i, option ) { var value = element.attr( option ); if ( value !== undefined && value.length ) { options[ option ] = value; } }); return options; }, _events: { keydown: function( event ) { if ( this._start( event ) && this._keydown( event ) ) { event.preventDefault(); } }, keyup: "_stop", focus: function() { this.previous = this.element.val(); }, blur: function( event ) { if ( this.cancelBlur ) { delete this.cancelBlur; return; } this._stop(); this._refresh(); if ( this.previous !== this.element.val() ) { this._trigger( "change", event ); } }, mousewheel: function( event, delta ) { if ( !delta ) { return; } if ( !this.spinning && !this._start( event ) ) { return false; } this._spin( (delta > 0 ? 1 : -1) * this.options.step, event ); clearTimeout( this.mousewheelTimer ); this.mousewheelTimer = this._delay(function() { if ( this.spinning ) { this._stop( event ); } }, 100 ); event.preventDefault(); }, "mousedown .ui-spinner-button": function( event ) { var previous; // We never want the buttons to have focus; whenever the user is // interacting with the spinner, the focus should be on the input. // If the input is focused then this.previous is properly set from // when the input first received focus. If the input is not focused // then we need to set this.previous based on the value before spinning. previous = this.element[0] === this.document[0].activeElement ? this.previous : this.element.val(); function checkFocus() { var isActive = this.element[0] === this.document[0].activeElement; if ( !isActive ) { this.element.focus(); this.previous = previous; // support: IE // IE sets focus asynchronously, so we need to check if focus // moved off of the input because the user clicked on the button. this._delay(function() { this.previous = previous; }); } } // ensure focus is on (or stays on) the text field event.preventDefault(); checkFocus.call( this ); // support: IE // IE doesn't prevent moving focus even with event.preventDefault() // so we set a flag to know when we should ignore the blur event // and check (again) if focus moved off of the input. this.cancelBlur = true; this._delay(function() { delete this.cancelBlur; checkFocus.call( this ); }); if ( this._start( event ) === false ) { return; } this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); }, "mouseup .ui-spinner-button": "_stop", "mouseenter .ui-spinner-button": function( event ) { // button will add ui-state-active if mouse was down while mouseleave and kept down if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) { return; } if ( this._start( event ) === false ) { return false; } this._repeat( null, $( event.currentTarget ).hasClass( "ui-spinner-up" ) ? 1 : -1, event ); }, // TODO: do we really want to consider this a stop? // shouldn't we just stop the repeater and wait until mouseup before // we trigger the stop event? "mouseleave .ui-spinner-button": "_stop" }, _draw: function() { var uiSpinner = this.uiSpinner = this.element .addClass( "ui-spinner-input" ) .attr( "autocomplete", "off" ) .wrap( this._uiSpinnerHtml() ) .parent() // add buttons .append( this._buttonHtml() ); this.element.attr( "role", "spinbutton" ); // button bindings this.buttons = uiSpinner.find( ".ui-spinner-button" ) .attr( "tabIndex", -1 ) .button() .removeClass( "ui-corner-all" ); // IE 6 doesn't understand height: 50% for the buttons // unless the wrapper has an explicit height if ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) && uiSpinner.height() > 0 ) { uiSpinner.height( uiSpinner.height() ); } // disable spinner if element was already disabled if ( this.options.disabled ) { this.disable(); } }, _keydown: function( event ) { var options = this.options, keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.UP: this._repeat( null, 1, event ); return true; case keyCode.DOWN: this._repeat( null, -1, event ); return true; case keyCode.PAGE_UP: this._repeat( null, options.page, event ); return true; case keyCode.PAGE_DOWN: this._repeat( null, -options.page, event ); return true; } return false; }, _uiSpinnerHtml: function() { return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"; }, _buttonHtml: function() { return "" + "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>" + "<span class='ui-icon " + this.options.icons.up + "'>▲</span>" + "</a>" + "<a class='ui-spinner-button ui-spinner-down ui-corner-br'>" + "<span class='ui-icon " + this.options.icons.down + "'>▼</span>" + "</a>"; }, _start: function( event ) { if ( !this.spinning && this._trigger( "start", event ) === false ) { return false; } if ( !this.counter ) { this.counter = 1; } this.spinning = true; return true; }, _repeat: function( i, steps, event ) { i = i || 500; clearTimeout( this.timer ); this.timer = this._delay(function() { this._repeat( 40, steps, event ); }, i ); this._spin( steps * this.options.step, event ); }, _spin: function( step, event ) { var value = this.value() || 0; if ( !this.counter ) { this.counter = 1; } value = this._adjustValue( value + step * this._increment( this.counter ) ); if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false) { this._value( value ); this.counter++; } }, _increment: function( i ) { var incremental = this.options.incremental; if ( incremental ) { return $.isFunction( incremental ) ? incremental( i ) : Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 ); } return 1; }, _precision: function() { var precision = this._precisionOf( this.options.step ); if ( this.options.min !== null ) { precision = Math.max( precision, this._precisionOf( this.options.min ) ); } return precision; }, _precisionOf: function( num ) { var str = num.toString(), decimal = str.indexOf( "." ); return decimal === -1 ? 0 : str.length - decimal - 1; }, _adjustValue: function( value ) { var base, aboveMin, options = this.options; // make sure we're at a valid step // - find out where we are relative to the base (min or 0) base = options.min !== null ? options.min : 0; aboveMin = value - base; // - round to the nearest step aboveMin = Math.round(aboveMin / options.step) * options.step; // - rounding is based on 0, so adjust back to our base value = base + aboveMin; // fix precision from bad JS floating point math value = parseFloat( value.toFixed( this._precision() ) ); // clamp the value if ( options.max !== null && value > options.max) { return options.max; } if ( options.min !== null && value < options.min ) { return options.min; } return value; }, _stop: function( event ) { if ( !this.spinning ) { return; } clearTimeout( this.timer ); clearTimeout( this.mousewheelTimer ); this.counter = 0; this.spinning = false; this._trigger( "stop", event ); }, _setOption: function( key, value ) { if ( key === "culture" || key === "numberFormat" ) { var prevValue = this._parse( this.element.val() ); this.options[ key ] = value; this.element.val( this._format( prevValue ) ); return; } if ( key === "max" || key === "min" || key === "step" ) { if ( typeof value === "string" ) { value = this._parse( value ); } } if ( key === "icons" ) { this.buttons.first().find( ".ui-icon" ) .removeClass( this.options.icons.up ) .addClass( value.up ); this.buttons.last().find( ".ui-icon" ) .removeClass( this.options.icons.down ) .addClass( value.down ); } this._super( key, value ); if ( key === "disabled" ) { this.widget().toggleClass( "ui-state-disabled", !!value ); this.element.prop( "disabled", !!value ); this.buttons.button( value ? "disable" : "enable" ); } }, _setOptions: spinner_modifier(function( options ) { this._super( options ); }), _parse: function( val ) { if ( typeof val === "string" && val !== "" ) { val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat( val, 10, this.options.culture ) : +val; } return val === "" || isNaN( val ) ? null : val; }, _format: function( value ) { if ( value === "" ) { return ""; } return window.Globalize && this.options.numberFormat ? Globalize.format( value, this.options.numberFormat, this.options.culture ) : value; }, _refresh: function() { this.element.attr({ "aria-valuemin": this.options.min, "aria-valuemax": this.options.max, // TODO: what should we do with values that can't be parsed? "aria-valuenow": this._parse( this.element.val() ) }); }, isValid: function() { var value = this.value(); // null is invalid if ( value === null ) { return false; } // if value gets adjusted, it's invalid return value === this._adjustValue( value ); }, // update the value without triggering change _value: function( value, allowAny ) { var parsed; if ( value !== "" ) { parsed = this._parse( value ); if ( parsed !== null ) { if ( !allowAny ) { parsed = this._adjustValue( parsed ); } value = this._format( parsed ); } } this.element.val( value ); this._refresh(); }, _destroy: function() { this.element .removeClass( "ui-spinner-input" ) .prop( "disabled", false ) .removeAttr( "autocomplete" ) .removeAttr( "role" ) .removeAttr( "aria-valuemin" ) .removeAttr( "aria-valuemax" ) .removeAttr( "aria-valuenow" ); this.uiSpinner.replaceWith( this.element ); }, stepUp: spinner_modifier(function( steps ) { this._stepUp( steps ); }), _stepUp: function( steps ) { if ( this._start() ) { this._spin( (steps || 1) * this.options.step ); this._stop(); } }, stepDown: spinner_modifier(function( steps ) { this._stepDown( steps ); }), _stepDown: function( steps ) { if ( this._start() ) { this._spin( (steps || 1) * -this.options.step ); this._stop(); } }, pageUp: spinner_modifier(function( pages ) { this._stepUp( (pages || 1) * this.options.page ); }), pageDown: spinner_modifier(function( pages ) { this._stepDown( (pages || 1) * this.options.page ); }), value: function( newVal ) { if ( !arguments.length ) { return this._parse( this.element.val() ); } spinner_modifier( this._value ).call( this, newVal ); }, widget: function() { return this.uiSpinner; } }); /*! * jQuery UI Tabs 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/tabs/ */ var tabs = $.widget( "ui.tabs", { version: "1.11.4", delay: 300, options: { active: null, collapsible: false, event: "click", heightStyle: "content", hide: null, show: null, // callbacks activate: null, beforeActivate: null, beforeLoad: null, load: null }, _isLocal: (function() { var rhash = /#.*$/; return function( anchor ) { var anchorUrl, locationUrl; // support: IE7 // IE7 doesn't normalize the href property when set via script (#9317) anchor = anchor.cloneNode( false ); anchorUrl = anchor.href.replace( rhash, "" ); locationUrl = location.href.replace( rhash, "" ); // decoding may throw an error if the URL isn't UTF-8 (#9518) try { anchorUrl = decodeURIComponent( anchorUrl ); } catch ( error ) {} try { locationUrl = decodeURIComponent( locationUrl ); } catch ( error ) {} return anchor.hash.length > 1 && anchorUrl === locationUrl; }; })(), _create: function() { var that = this, options = this.options; this.running = false; this.element .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ) .toggleClass( "ui-tabs-collapsible", options.collapsible ); this._processTabs(); options.active = this._initialActive(); // Take disabling tabs via class attribute from HTML // into account and update option properly. if ( $.isArray( options.disabled ) ) { options.disabled = $.unique( options.disabled.concat( $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { return that.tabs.index( li ); }) ) ).sort(); } // check for length avoids error when initializing empty list if ( this.options.active !== false && this.anchors.length ) { this.active = this._findActive( options.active ); } else { this.active = $(); } this._refresh(); if ( this.active.length ) { this.load( options.active ); } }, _initialActive: function() { var active = this.options.active, collapsible = this.options.collapsible, locationHash = location.hash.substring( 1 ); if ( active === null ) { // check the fragment identifier in the URL if ( locationHash ) { this.tabs.each(function( i, tab ) { if ( $( tab ).attr( "aria-controls" ) === locationHash ) { active = i; return false; } }); } // check for a tab marked active via a class if ( active === null ) { active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) ); } // no active tab, set to false if ( active === null || active === -1 ) { active = this.tabs.length ? 0 : false; } } // handle numbers: negative, out of range if ( active !== false ) { active = this.tabs.index( this.tabs.eq( active ) ); if ( active === -1 ) { active = collapsible ? false : 0; } } // don't allow collapsible: false and active: false if ( !collapsible && active === false && this.anchors.length ) { active = 0; } return active; }, _getCreateEventData: function() { return { tab: this.active, panel: !this.active.length ? $() : this._getPanelForTab( this.active ) }; }, _tabKeydown: function( event ) { var focusedTab = $( this.document[0].activeElement ).closest( "li" ), selectedIndex = this.tabs.index( focusedTab ), goingForward = true; if ( this._handlePageNav( event ) ) { return; } switch ( event.keyCode ) { case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: selectedIndex++; break; case $.ui.keyCode.UP: case $.ui.keyCode.LEFT: goingForward = false; selectedIndex--; break; case $.ui.keyCode.END: selectedIndex = this.anchors.length - 1; break; case $.ui.keyCode.HOME: selectedIndex = 0; break; case $.ui.keyCode.SPACE: // Activate only, no collapsing event.preventDefault(); clearTimeout( this.activating ); this._activate( selectedIndex ); return; case $.ui.keyCode.ENTER: // Toggle (cancel delayed activation, allow collapsing) event.preventDefault(); clearTimeout( this.activating ); // Determine if we should collapse or activate this._activate( selectedIndex === this.options.active ? false : selectedIndex ); return; default: return; } // Focus the appropriate tab, based on which key was pressed event.preventDefault(); clearTimeout( this.activating ); selectedIndex = this._focusNextTab( selectedIndex, goingForward ); // Navigating with control/command key will prevent automatic activation if ( !event.ctrlKey && !event.metaKey ) { // Update aria-selected immediately so that AT think the tab is already selected. // Otherwise AT may confuse the user by stating that they need to activate the tab, // but the tab will already be activated by the time the announcement finishes. focusedTab.attr( "aria-selected", "false" ); this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" ); this.activating = this._delay(function() { this.option( "active", selectedIndex ); }, this.delay ); } }, _panelKeydown: function( event ) { if ( this._handlePageNav( event ) ) { return; } // Ctrl+up moves focus to the current tab if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) { event.preventDefault(); this.active.focus(); } }, // Alt+page up/down moves focus to the previous/next tab (and activates) _handlePageNav: function( event ) { if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) { this._activate( this._focusNextTab( this.options.active - 1, false ) ); return true; } if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) { this._activate( this._focusNextTab( this.options.active + 1, true ) ); return true; } }, _findNextTab: function( index, goingForward ) { var lastTabIndex = this.tabs.length - 1; function constrain() { if ( index > lastTabIndex ) { index = 0; } if ( index < 0 ) { index = lastTabIndex; } return index; } while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) { index = goingForward ? index + 1 : index - 1; } return index; }, _focusNextTab: function( index, goingForward ) { index = this._findNextTab( index, goingForward ); this.tabs.eq( index ).focus(); return index; }, _setOption: function( key, value ) { if ( key === "active" ) { // _activate() will handle invalid values and update this.options this._activate( value ); return; } if ( key === "disabled" ) { // don't use the widget factory's disabled handling this._setupDisabled( value ); return; } this._super( key, value); if ( key === "collapsible" ) { this.element.toggleClass( "ui-tabs-collapsible", value ); // Setting collapsible: false while collapsed; open first panel if ( !value && this.options.active === false ) { this._activate( 0 ); } } if ( key === "event" ) { this._setupEvents( value ); } if ( key === "heightStyle" ) { this._setupHeightStyle( value ); } }, _sanitizeSelector: function( hash ) { return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; }, refresh: function() { var options = this.options, lis = this.tablist.children( ":has(a[href])" ); // get disabled tabs from class attribute from HTML // this will get converted to a boolean if needed in _refresh() options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) { return lis.index( tab ); }); this._processTabs(); // was collapsed or no tabs if ( options.active === false || !this.anchors.length ) { options.active = false; this.active = $(); // was active, but active tab is gone } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) { // all remaining tabs are disabled if ( this.tabs.length === options.disabled.length ) { options.active = false; this.active = $(); // activate previous tab } else { this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) ); } // was active, active tab still exists } else { // make sure active index is correct options.active = this.tabs.index( this.active ); } this._refresh(); }, _refresh: function() { this._setupDisabled( this.options.disabled ); this._setupEvents( this.options.event ); this._setupHeightStyle( this.options.heightStyle ); this.tabs.not( this.active ).attr({ "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 }); this.panels.not( this._getPanelForTab( this.active ) ) .hide() .attr({ "aria-hidden": "true" }); // Make sure one tab is in the tab order if ( !this.active.length ) { this.tabs.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active .addClass( "ui-tabs-active ui-state-active" ) .attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }); this._getPanelForTab( this.active ) .show() .attr({ "aria-hidden": "false" }); } }, _processTabs: function() { var that = this, prevTabs = this.tabs, prevAnchors = this.anchors, prevPanels = this.panels; this.tablist = this._getList() .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) .attr( "role", "tablist" ) // Prevent users from focusing disabled tabs via click .delegate( "> li", "mousedown" + this.eventNamespace, function( event ) { if ( $( this ).is( ".ui-state-disabled" ) ) { event.preventDefault(); } }) // support: IE <9 // Preventing the default action in mousedown doesn't prevent IE // from focusing the element, so if the anchor gets focused, blur. // We don't have to worry about focusing the previously focused // element since clicking on a non-focusable element should focus // the body anyway. .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() { if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { this.blur(); } }); this.tabs = this.tablist.find( "> li:has(a[href])" ) .addClass( "ui-state-default ui-corner-top" ) .attr({ role: "tab", tabIndex: -1 }); this.anchors = this.tabs.map(function() { return $( "a", this )[ 0 ]; }) .addClass( "ui-tabs-anchor" ) .attr({ role: "presentation", tabIndex: -1 }); this.panels = $(); this.anchors.each(function( i, anchor ) { var selector, panel, panelId, anchorId = $( anchor ).uniqueId().attr( "id" ), tab = $( anchor ).closest( "li" ), originalAriaControls = tab.attr( "aria-controls" ); // inline tab if ( that._isLocal( anchor ) ) { selector = anchor.hash; panelId = selector.substring( 1 ); panel = that.element.find( that._sanitizeSelector( selector ) ); // remote tab } else { // If the tab doesn't already have aria-controls, // generate an id by using a throw-away element panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id; selector = "#" + panelId; panel = that.element.find( selector ); if ( !panel.length ) { panel = that._createPanel( panelId ); panel.insertAfter( that.panels[ i - 1 ] || that.tablist ); } panel.attr( "aria-live", "polite" ); } if ( panel.length) { that.panels = that.panels.add( panel ); } if ( originalAriaControls ) { tab.data( "ui-tabs-aria-controls", originalAriaControls ); } tab.attr({ "aria-controls": panelId, "aria-labelledby": anchorId }); panel.attr( "aria-labelledby", anchorId ); }); this.panels .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) .attr( "role", "tabpanel" ); // Avoid memory leaks (#10056) if ( prevTabs ) { this._off( prevTabs.not( this.tabs ) ); this._off( prevAnchors.not( this.anchors ) ); this._off( prevPanels.not( this.panels ) ); } }, // allow overriding how to find the list for rare usage scenarios (#7715) _getList: function() { return this.tablist || this.element.find( "ol,ul" ).eq( 0 ); }, _createPanel: function( id ) { return $( "<div>" ) .attr( "id", id ) .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) .data( "ui-tabs-destroy", true ); }, _setupDisabled: function( disabled ) { if ( $.isArray( disabled ) ) { if ( !disabled.length ) { disabled = false; } else if ( disabled.length === this.anchors.length ) { disabled = true; } } // disable tabs for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) { if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { $( li ) .addClass( "ui-state-disabled" ) .attr( "aria-disabled", "true" ); } else { $( li ) .removeClass( "ui-state-disabled" ) .removeAttr( "aria-disabled" ); } } this.options.disabled = disabled; }, _setupEvents: function( event ) { var events = {}; if ( event ) { $.each( event.split(" "), function( index, eventName ) { events[ eventName ] = "_eventHandler"; }); } this._off( this.anchors.add( this.tabs ).add( this.panels ) ); // Always prevent the default action, even when disabled this._on( true, this.anchors, { click: function( event ) { event.preventDefault(); } }); this._on( this.anchors, events ); this._on( this.tabs, { keydown: "_tabKeydown" } ); this._on( this.panels, { keydown: "_panelKeydown" } ); this._focusable( this.tabs ); this._hoverable( this.tabs ); }, _setupHeightStyle: function( heightStyle ) { var maxHeight, parent = this.element.parent(); if ( heightStyle === "fill" ) { maxHeight = parent.height(); maxHeight -= this.element.outerHeight() - this.element.height(); this.element.siblings( ":visible" ).each(function() { var elem = $( this ), position = elem.css( "position" ); if ( position === "absolute" || position === "fixed" ) { return; } maxHeight -= elem.outerHeight( true ); }); this.element.children().not( this.panels ).each(function() { maxHeight -= $( this ).outerHeight( true ); }); this.panels.each(function() { $( this ).height( Math.max( 0, maxHeight - $( this ).innerHeight() + $( this ).height() ) ); }) .css( "overflow", "auto" ); } else if ( heightStyle === "auto" ) { maxHeight = 0; this.panels.each(function() { maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); }).height( maxHeight ); } }, _eventHandler: function( event ) { var options = this.options, active = this.active, anchor = $( event.currentTarget ), tab = anchor.closest( "li" ), clickedIsActive = tab[ 0 ] === active[ 0 ], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : this._getPanelForTab( tab ), toHide = !active.length ? $() : this._getPanelForTab( active ), eventData = { oldTab: active, oldPanel: toHide, newTab: collapsing ? $() : tab, newPanel: toShow }; event.preventDefault(); if ( tab.hasClass( "ui-state-disabled" ) || // tab is already loading tab.hasClass( "ui-tabs-loading" ) || // can't switch durning an animation this.running || // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { return; } options.active = collapsing ? false : this.tabs.index( tab ); this.active = clickedIsActive ? $() : tab; if ( this.xhr ) { this.xhr.abort(); } if ( !toHide.length && !toShow.length ) { $.error( "jQuery UI Tabs: Mismatching fragment identifier." ); } if ( toShow.length ) { this.load( this.tabs.index( tab ), event ); } this._toggle( event, eventData ); }, // handles show/hide for selecting tabs _toggle: function( event, eventData ) { var that = this, toShow = eventData.newPanel, toHide = eventData.oldPanel; this.running = true; function complete() { that.running = false; that._trigger( "activate", event, eventData ); } function show() { eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" ); if ( toShow.length && that.options.show ) { that._show( toShow, that.options.show, complete ); } else { toShow.show(); complete(); } } // start out by hiding, then showing, then completing if ( toHide.length && this.options.hide ) { this._hide( toHide, this.options.hide, function() { eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); show(); }); } else { eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); toHide.hide(); show(); } toHide.attr( "aria-hidden", "true" ); eventData.oldTab.attr({ "aria-selected": "false", "aria-expanded": "false" }); // If we're switching tabs, remove the old tab from the tab order. // If we're opening from collapsed state, remove the previous tab from the tab order. // If we're collapsing, then keep the collapsing tab in the tab order. if ( toShow.length && toHide.length ) { eventData.oldTab.attr( "tabIndex", -1 ); } else if ( toShow.length ) { this.tabs.filter(function() { return $( this ).attr( "tabIndex" ) === 0; }) .attr( "tabIndex", -1 ); } toShow.attr( "aria-hidden", "false" ); eventData.newTab.attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }); }, _activate: function( index ) { var anchor, active = this._findActive( index ); // trying to activate the already active panel if ( active[ 0 ] === this.active[ 0 ] ) { return; } // trying to collapse, simulate a click on the current active header if ( !active.length ) { active = this.active; } anchor = active.find( ".ui-tabs-anchor" )[ 0 ]; this._eventHandler({ target: anchor, currentTarget: anchor, preventDefault: $.noop }); }, _findActive: function( index ) { return index === false ? $() : this.tabs.eq( index ); }, _getIndex: function( index ) { // meta-function to give users option to provide a href string instead of a numerical index. if ( typeof index === "string" ) { index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); } return index; }, _destroy: function() { if ( this.xhr ) { this.xhr.abort(); } this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ); this.tablist .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) .removeAttr( "role" ); this.anchors .removeClass( "ui-tabs-anchor" ) .removeAttr( "role" ) .removeAttr( "tabIndex" ) .removeUniqueId(); this.tablist.unbind( this.eventNamespace ); this.tabs.add( this.panels ).each(function() { if ( $.data( this, "ui-tabs-destroy" ) ) { $( this ).remove(); } else { $( this ) .removeClass( "ui-state-default ui-state-active ui-state-disabled " + "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" ) .removeAttr( "tabIndex" ) .removeAttr( "aria-live" ) .removeAttr( "aria-busy" ) .removeAttr( "aria-selected" ) .removeAttr( "aria-labelledby" ) .removeAttr( "aria-hidden" ) .removeAttr( "aria-expanded" ) .removeAttr( "role" ); } }); this.tabs.each(function() { var li = $( this ), prev = li.data( "ui-tabs-aria-controls" ); if ( prev ) { li .attr( "aria-controls", prev ) .removeData( "ui-tabs-aria-controls" ); } else { li.removeAttr( "aria-controls" ); } }); this.panels.show(); if ( this.options.heightStyle !== "content" ) { this.panels.css( "height", "" ); } }, enable: function( index ) { var disabled = this.options.disabled; if ( disabled === false ) { return; } if ( index === undefined ) { disabled = false; } else { index = this._getIndex( index ); if ( $.isArray( disabled ) ) { disabled = $.map( disabled, function( num ) { return num !== index ? num : null; }); } else { disabled = $.map( this.tabs, function( li, num ) { return num !== index ? num : null; }); } } this._setupDisabled( disabled ); }, disable: function( index ) { var disabled = this.options.disabled; if ( disabled === true ) { return; } if ( index === undefined ) { disabled = true; } else { index = this._getIndex( index ); if ( $.inArray( index, disabled ) !== -1 ) { return; } if ( $.isArray( disabled ) ) { disabled = $.merge( [ index ], disabled ).sort(); } else { disabled = [ index ]; } } this._setupDisabled( disabled ); }, load: function( index, event ) { index = this._getIndex( index ); var that = this, tab = this.tabs.eq( index ), anchor = tab.find( ".ui-tabs-anchor" ), panel = this._getPanelForTab( tab ), eventData = { tab: tab, panel: panel }, complete = function( jqXHR, status ) { if ( status === "abort" ) { that.panels.stop( false, true ); } tab.removeClass( "ui-tabs-loading" ); panel.removeAttr( "aria-busy" ); if ( jqXHR === that.xhr ) { delete that.xhr; } }; // not remote if ( this._isLocal( anchor[ 0 ] ) ) { return; } this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); // support: jQuery <1.8 // jQuery <1.8 returns false if the request is canceled in beforeSend, // but as of 1.8, $.ajax() always returns a jqXHR object. if ( this.xhr && this.xhr.statusText !== "canceled" ) { tab.addClass( "ui-tabs-loading" ); panel.attr( "aria-busy", "true" ); this.xhr .done(function( response, status, jqXHR ) { // support: jQuery <1.8 // http://bugs.jquery.com/ticket/11778 setTimeout(function() { panel.html( response ); that._trigger( "load", event, eventData ); complete( jqXHR, status ); }, 1 ); }) .fail(function( jqXHR, status ) { // support: jQuery <1.8 // http://bugs.jquery.com/ticket/11778 setTimeout(function() { complete( jqXHR, status ); }, 1 ); }); } }, _ajaxSettings: function( anchor, event, eventData ) { var that = this; return { url: anchor.attr( "href" ), beforeSend: function( jqXHR, settings ) { return that._trigger( "beforeLoad", event, $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) ); } }; }, _getPanelForTab: function( tab ) { var id = $( tab ).attr( "aria-controls" ); return this.element.find( this._sanitizeSelector( "#" + id ) ); } }); /*! * jQuery UI Tooltip 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/tooltip/ */ var tooltip = $.widget( "ui.tooltip", { version: "1.11.4", options: { content: function() { // support: IE<9, Opera in jQuery <1.7 // .text() can't accept undefined, so coerce to a string var title = $( this ).attr( "title" ) || ""; // Escape title, since we're going from an attribute to raw HTML return $( "<a>" ).text( title ).html(); }, hide: true, // Disabled elements have inconsistent behavior across browsers (#8661) items: "[title]:not([disabled])", position: { my: "left top+15", at: "left bottom", collision: "flipfit flip" }, show: true, tooltipClass: null, track: false, // callbacks close: null, open: null }, _addDescribedBy: function( elem, id ) { var describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ); describedby.push( id ); elem .data( "ui-tooltip-id", id ) .attr( "aria-describedby", $.trim( describedby.join( " " ) ) ); }, _removeDescribedBy: function( elem ) { var id = elem.data( "ui-tooltip-id" ), describedby = (elem.attr( "aria-describedby" ) || "").split( /\s+/ ), index = $.inArray( id, describedby ); if ( index !== -1 ) { describedby.splice( index, 1 ); } elem.removeData( "ui-tooltip-id" ); describedby = $.trim( describedby.join( " " ) ); if ( describedby ) { elem.attr( "aria-describedby", describedby ); } else { elem.removeAttr( "aria-describedby" ); } }, _create: function() { this._on({ mouseover: "open", focusin: "open" }); // IDs of generated tooltips, needed for destroy this.tooltips = {}; // IDs of parent tooltips where we removed the title attribute this.parents = {}; if ( this.options.disabled ) { this._disable(); } // Append the aria-live region so tooltips announce correctly this.liveRegion = $( "<div>" ) .attr({ role: "log", "aria-live": "assertive", "aria-relevant": "additions" }) .addClass( "ui-helper-hidden-accessible" ) .appendTo( this.document[ 0 ].body ); }, _setOption: function( key, value ) { var that = this; if ( key === "disabled" ) { this[ value ? "_disable" : "_enable" ](); this.options[ key ] = value; // disable element style changes return; } this._super( key, value ); if ( key === "content" ) { $.each( this.tooltips, function( id, tooltipData ) { that._updateContent( tooltipData.element ); }); } }, _disable: function() { var that = this; // close open tooltips $.each( this.tooltips, function( id, tooltipData ) { var event = $.Event( "blur" ); event.target = event.currentTarget = tooltipData.element[ 0 ]; that.close( event, true ); }); // remove title attributes to prevent native tooltips this.element.find( this.options.items ).addBack().each(function() { var element = $( this ); if ( element.is( "[title]" ) ) { element .data( "ui-tooltip-title", element.attr( "title" ) ) .removeAttr( "title" ); } }); }, _enable: function() { // restore title attributes this.element.find( this.options.items ).addBack().each(function() { var element = $( this ); if ( element.data( "ui-tooltip-title" ) ) { element.attr( "title", element.data( "ui-tooltip-title" ) ); } }); }, open: function( event ) { var that = this, target = $( event ? event.target : this.element ) // we need closest here due to mouseover bubbling, // but always pointing at the same event target .closest( this.options.items ); // No element to show a tooltip for or the tooltip is already open if ( !target.length || target.data( "ui-tooltip-id" ) ) { return; } if ( target.attr( "title" ) ) { target.data( "ui-tooltip-title", target.attr( "title" ) ); } target.data( "ui-tooltip-open", true ); // kill parent tooltips, custom or native, for hover if ( event && event.type === "mouseover" ) { target.parents().each(function() { var parent = $( this ), blurEvent; if ( parent.data( "ui-tooltip-open" ) ) { blurEvent = $.Event( "blur" ); blurEvent.target = blurEvent.currentTarget = this; that.close( blurEvent, true ); } if ( parent.attr( "title" ) ) { parent.uniqueId(); that.parents[ this.id ] = { element: this, title: parent.attr( "title" ) }; parent.attr( "title", "" ); } }); } this._registerCloseHandlers( event, target ); this._updateContent( target, event ); }, _updateContent: function( target, event ) { var content, contentOption = this.options.content, that = this, eventType = event ? event.type : null; if ( typeof contentOption === "string" ) { return this._open( event, target, contentOption ); } content = contentOption.call( target[0], function( response ) { // IE may instantly serve a cached response for ajax requests // delay this call to _open so the other call to _open runs first that._delay(function() { // Ignore async response if tooltip was closed already if ( !target.data( "ui-tooltip-open" ) ) { return; } // jQuery creates a special event for focusin when it doesn't // exist natively. To improve performance, the native event // object is reused and the type is changed. Therefore, we can't // rely on the type being correct after the event finished // bubbling, so we set it back to the previous value. (#8740) if ( event ) { event.type = eventType; } this._open( event, target, response ); }); }); if ( content ) { this._open( event, target, content ); } }, _open: function( event, target, content ) { var tooltipData, tooltip, delayedShow, a11yContent, positionOption = $.extend( {}, this.options.position ); if ( !content ) { return; } // Content can be updated multiple times. If the tooltip already // exists, then just update the content and bail. tooltipData = this._find( target ); if ( tooltipData ) { tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content ); return; } // if we have a title, clear it to prevent the native tooltip // we have to check first to avoid defining a title if none exists // (we don't want to cause an element to start matching [title]) // // We use removeAttr only for key events, to allow IE to export the correct // accessible attributes. For mouse events, set to empty string to avoid // native tooltip showing up (happens only when removing inside mouseover). if ( target.is( "[title]" ) ) { if ( event && event.type === "mouseover" ) { target.attr( "title", "" ); } else { target.removeAttr( "title" ); } } tooltipData = this._tooltip( target ); tooltip = tooltipData.tooltip; this._addDescribedBy( target, tooltip.attr( "id" ) ); tooltip.find( ".ui-tooltip-content" ).html( content ); // Support: Voiceover on OS X, JAWS on IE <= 9 // JAWS announces deletions even when aria-relevant="additions" // Voiceover will sometimes re-read the entire log region's contents from the beginning this.liveRegion.children().hide(); if ( content.clone ) { a11yContent = content.clone(); a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" ); } else { a11yContent = content; } $( "<div>" ).html( a11yContent ).appendTo( this.liveRegion ); function position( event ) { positionOption.of = event; if ( tooltip.is( ":hidden" ) ) { return; } tooltip.position( positionOption ); } if ( this.options.track && event && /^mouse/.test( event.type ) ) { this._on( this.document, { mousemove: position }); // trigger once to override element-relative positioning position( event ); } else { tooltip.position( $.extend({ of: target }, this.options.position ) ); } tooltip.hide(); this._show( tooltip, this.options.show ); // Handle tracking tooltips that are shown with a delay (#8644). As soon // as the tooltip is visible, position the tooltip using the most recent // event. if ( this.options.show && this.options.show.delay ) { delayedShow = this.delayedShow = setInterval(function() { if ( tooltip.is( ":visible" ) ) { position( positionOption.of ); clearInterval( delayedShow ); } }, $.fx.interval ); } this._trigger( "open", event, { tooltip: tooltip } ); }, _registerCloseHandlers: function( event, target ) { var events = { keyup: function( event ) { if ( event.keyCode === $.ui.keyCode.ESCAPE ) { var fakeEvent = $.Event(event); fakeEvent.currentTarget = target[0]; this.close( fakeEvent, true ); } } }; // Only bind remove handler for delegated targets. Non-delegated // tooltips will handle this in destroy. if ( target[ 0 ] !== this.element[ 0 ] ) { events.remove = function() { this._removeTooltip( this._find( target ).tooltip ); }; } if ( !event || event.type === "mouseover" ) { events.mouseleave = "close"; } if ( !event || event.type === "focusin" ) { events.focusout = "close"; } this._on( true, target, events ); }, close: function( event ) { var tooltip, that = this, target = $( event ? event.currentTarget : this.element ), tooltipData = this._find( target ); // The tooltip may already be closed if ( !tooltipData ) { // We set ui-tooltip-open immediately upon open (in open()), but only set the // additional data once there's actually content to show (in _open()). So even if the // tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in // the period between open() and _open(). target.removeData( "ui-tooltip-open" ); return; } tooltip = tooltipData.tooltip; // disabling closes the tooltip, so we need to track when we're closing // to avoid an infinite loop in case the tooltip becomes disabled on close if ( tooltipData.closing ) { return; } // Clear the interval for delayed tracking tooltips clearInterval( this.delayedShow ); // only set title if we had one before (see comment in _open()) // If the title attribute has changed since open(), don't restore if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) { target.attr( "title", target.data( "ui-tooltip-title" ) ); } this._removeDescribedBy( target ); tooltipData.hiding = true; tooltip.stop( true ); this._hide( tooltip, this.options.hide, function() { that._removeTooltip( $( this ) ); }); target.removeData( "ui-tooltip-open" ); this._off( target, "mouseleave focusout keyup" ); // Remove 'remove' binding only on delegated targets if ( target[ 0 ] !== this.element[ 0 ] ) { this._off( target, "remove" ); } this._off( this.document, "mousemove" ); if ( event && event.type === "mouseleave" ) { $.each( this.parents, function( id, parent ) { $( parent.element ).attr( "title", parent.title ); delete that.parents[ id ]; }); } tooltipData.closing = true; this._trigger( "close", event, { tooltip: tooltip } ); if ( !tooltipData.hiding ) { tooltipData.closing = false; } }, _tooltip: function( element ) { var tooltip = $( "<div>" ) .attr( "role", "tooltip" ) .addClass( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + ( this.options.tooltipClass || "" ) ), id = tooltip.uniqueId().attr( "id" ); $( "<div>" ) .addClass( "ui-tooltip-content" ) .appendTo( tooltip ); tooltip.appendTo( this.document[0].body ); return this.tooltips[ id ] = { element: element, tooltip: tooltip }; }, _find: function( target ) { var id = target.data( "ui-tooltip-id" ); return id ? this.tooltips[ id ] : null; }, _removeTooltip: function( tooltip ) { tooltip.remove(); delete this.tooltips[ tooltip.attr( "id" ) ]; }, _destroy: function() { var that = this; // close open tooltips $.each( this.tooltips, function( id, tooltipData ) { // Delegate to close method to handle common cleanup var event = $.Event( "blur" ), element = tooltipData.element; event.target = event.currentTarget = element[ 0 ]; that.close( event, true ); // Remove immediately; destroying an open tooltip doesn't use the // hide animation $( "#" + id ).remove(); // Restore the title if ( element.data( "ui-tooltip-title" ) ) { // If the title attribute has changed since open(), don't restore if ( !element.attr( "title" ) ) { element.attr( "title", element.data( "ui-tooltip-title" ) ); } element.removeData( "ui-tooltip-title" ); } }); this.liveRegion.remove(); } }); })); AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js 0000644 00000633764 15002261751 0021556 0 ustar 00 /*! bootstrap3-wysihtml5-bower 2014-09-26 */ var wysihtml5,Base,Handlebars;Object.defineProperty&&Object.getOwnPropertyDescriptor&&Object.getOwnPropertyDescriptor(Element.prototype,"textContent")&&!Object.getOwnPropertyDescriptor(Element.prototype,"textContent").get&&!function(){var a=Object.getOwnPropertyDescriptor(Element.prototype,"innerText");Object.defineProperty(Element.prototype,"textContent",{get:function(){return a.get.call(this)},set:function(b){return a.set.call(this,b)}})}(),Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)}),wysihtml5={version:"0.4.15",commands:{},dom:{},quirks:{},toolbar:{},lang:{},selection:{},views:{},INVISIBLE_SPACE:"",EMPTY_FUNCTION:function(){},ELEMENT_NODE:1,TEXT_NODE:3,BACKSPACE_KEY:8,ENTER_KEY:13,ESCAPE_KEY:27,SPACE_KEY:32,DELETE_KEY:46},function(a,b){"function"==typeof define&&define.amd?define(a):b.rangy=a()}(function(){function a(a,b){var c=typeof a[b];return c==x||!(c!=w||!a[b])||"unknown"==c}function b(a,b){return!(typeof a[b]!=w||!a[b])}function c(a,b){return typeof a[b]!=y}function d(a){return function(b,c){for(var d=c.length;d--;)if(!a(b,c[d]))return!1;return!0}}function e(a){return a&&D(a,C)&&F(a,B)}function f(a){return b(a,"body")?a.body:a.getElementsByTagName("body")[0]}function g(c){b(window,"console")&&a(window.console,"log")&&window.console.log(c)}function h(a,b){b?window.alert(a):g(a)}function i(a){H.initialized=!0,H.supported=!1,h("Rangy is not supported on this page in your browser. Reason: "+a,H.config.alertOnFail)}function j(a){h("Rangy warning: "+a,H.config.alertOnWarn)}function k(a){return a.message||a.description||a+""}function l(){var b,c,d,h,j,l,m,o,p;if(!H.initialized){if(c=!1,d=!1,a(document,"createRange")&&(b=document.createRange(),D(b,A)&&F(b,z)&&(c=!0)),h=f(document),!h||"body"!=h.nodeName.toLowerCase())return i("No body element found"),void 0;if(h&&a(h,"createTextRange")&&(b=h.createTextRange(),e(b)&&(d=!0)),!c&&!d)return i("Neither Range nor TextRange are available"),void 0;H.initialized=!0,H.features={implementsDomRange:c,implementsTextRange:d};for(m in G)(j=G[m])instanceof n&&j.init(j,H);for(o=0,p=s.length;p>o;++o)try{s[o](H)}catch(q){l="Rangy init listener threw an exception. Continuing. Detail: "+k(q),g(l)}}}function m(a){a=a||window,l();for(var b=0,c=t.length;c>b;++b)t[b](a)}function n(a,b,c){this.name=a,this.dependencies=b,this.initialized=!1,this.supported=!1,this.initializer=c}function o(a,b,c,d){var e=new n(b,c,function(a){if(!a.initialized){a.initialized=!0;try{d(H,a),a.supported=!0}catch(c){var e="Module '"+b+"' failed to load: "+k(c);g(e)}}});G[b]=e}function p(){}function q(){}var r,s,t,u,v,w="object",x="function",y="undefined",z=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"],A=["setStart","setStartBefore","setStartAfter","setEnd","setEndBefore","setEndAfter","collapse","selectNode","selectNodeContents","compareBoundaryPoints","deleteContents","extractContents","cloneContents","insertNode","surroundContents","cloneRange","toString","detach"],B=["boundingHeight","boundingLeft","boundingTop","boundingWidth","htmlText","text"],C=["collapse","compareEndPoints","duplicate","moveToElementText","parentElement","select","setEndPoint","getBoundingClientRect"],D=d(a),E=d(b),F=d(c),G={},H={version:"1.3alpha.20140804",initialized:!1,supported:!0,util:{isHostMethod:a,isHostObject:b,isHostProperty:c,areHostMethods:D,areHostObjects:E,areHostProperties:F,isTextRange:e,getBody:f},features:{},modules:G,config:{alertOnFail:!0,alertOnWarn:!1,preferTextRange:!1,autoInitialize:typeof rangyAutoInitialize==y?!0:rangyAutoInitialize}};return H.fail=i,H.warn=j,{}.hasOwnProperty?H.util.extend=function(a,b,c){var d,e,f;for(f in b)b.hasOwnProperty(f)&&(d=a[f],e=b[f],c&&null!==d&&"object"==typeof d&&null!==e&&"object"==typeof e&&H.util.extend(d,e,!0),a[f]=e);return b.hasOwnProperty("toString")&&(a.toString=b.toString),a}:i("hasOwnProperty not supported"),function(){var a,b,c=document.createElement("div");c.appendChild(document.createElement("span")),a=[].slice;try{1==a.call(c.childNodes,0)[0].nodeType&&(b=function(b){return a.call(b,0)})}catch(d){}b||(b=function(a){var b,c,d=[];for(b=0,c=a.length;c>b;++b)d[b]=a[b];return d}),H.util.toArray=b}(),a(document,"addEventListener")?r=function(a,b,c){a.addEventListener(b,c,!1)}:a(document,"attachEvent")?r=function(a,b,c){a.attachEvent("on"+b,c)}:i("Document does not have required addEventListener or attachEvent method"),H.util.addListener=r,s=[],H.init=l,H.addInitListener=function(a){H.initialized?a(H):s.push(a)},t=[],H.addShimListener=function(a){t.push(a)},H.shim=H.createMissingNativeApi=m,n.prototype={init:function(){var a,b,c,d,e=this.dependencies||[];for(a=0,b=e.length;b>a;++a){if(d=e[a],c=G[d],!(c&&c instanceof n))throw Error("required module '"+d+"' not found");if(c.init(),!c.supported)throw Error("required module '"+d+"' not supported")}this.initializer(this)},fail:function(a){throw this.initialized=!0,this.supported=!1,Error("Module '"+this.name+"' failed to load: "+a)},warn:function(a){H.warn("Module "+this.name+": "+a)},deprecationNotice:function(a,b){H.warn("DEPRECATED: "+a+" in module "+this.name+"is deprecated. Please use "+b+" instead")},createError:function(a){return Error("Error in Rangy "+this.name+" module: "+a)}},H.createModule=function(a){var b,c,d;2==arguments.length?(b=arguments[1],c=[]):(b=arguments[2],c=arguments[1]),d=o(!1,a,c,b),H.initialized&&d.init()},H.createCoreModule=function(a,b,c){o(!0,a,b,c)},H.RangePrototype=p,H.rangePrototype=new p,H.selectionPrototype=new q,u=!1,v=function(){u||(u=!0,!H.initialized&&H.config.autoInitialize&&l())},typeof window==y?(i("No window found"),void 0):typeof document==y?(i("No document found"),void 0):(a(document,"addEventListener")&&document.addEventListener("DOMContentLoaded",v,!1),r(window,"load",v),H.createCoreModule("DomUtil",[],function(a,b){function c(a){var b;return typeof a.namespaceURI==I||null===(b=a.namespaceURI)||"http://www.w3.org/1999/xhtml"==b}function d(a){var b=a.parentNode;return 1==b.nodeType?b:null}function e(a){for(var b=0;a=a.previousSibling;)++b;return b}function f(a){switch(a.nodeType){case 7:case 10:return 0;case 3:case 8:return a.length;default:return a.childNodes.length}}function g(a,b){var c,d=[];for(c=a;c;c=c.parentNode)d.push(c);for(c=b;c;c=c.parentNode)if(F(d,c))return c;return null}function h(a,b,c){for(var d=c?b:b.parentNode;d;){if(d===a)return!0;d=d.parentNode}return!1}function i(a,b){return h(a,b,!0)}function j(a,b,c){for(var d,e=c?a:a.parentNode;e;){if(d=e.parentNode,d===b)return e;e=d}return null}function k(a){var b=a.nodeType;return 3==b||4==b||8==b}function l(a){if(!a)return!1;var b=a.nodeType;return 3==b||8==b}function m(a,b){var c=b.nextSibling,d=b.parentNode;return c?d.insertBefore(a,c):d.appendChild(a),a}function n(a,b,c){var d,f,g=a.cloneNode(!1);if(g.deleteData(0,b),a.deleteData(b,a.length-b),m(g,a),c)for(d=0;f=c[d++];)f.node==a&&f.offset>b?(f.node=g,f.offset-=b):f.node==a.parentNode&&f.offset>e(a)&&++f.offset;return g}function o(a){if(9==a.nodeType)return a;if(typeof a.ownerDocument!=I)return a.ownerDocument;if(typeof a.document!=I)return a.document;if(a.parentNode)return o(a.parentNode);throw b.createError("getDocument: no document found for node")}function p(a){var c=o(a);if(typeof c.defaultView!=I)return c.defaultView;if(typeof c.parentWindow!=I)return c.parentWindow;throw b.createError("Cannot get a window object for node")}function q(a){if(typeof a.contentDocument!=I)return a.contentDocument;if(typeof a.contentWindow!=I)return a.contentWindow.document;throw b.createError("getIframeDocument: No Document object found for iframe element")}function r(a){if(typeof a.contentWindow!=I)return a.contentWindow;if(typeof a.contentDocument!=I)return a.contentDocument.defaultView;throw b.createError("getIframeWindow: No Window object found for iframe element")}function s(a){return a&&J.isHostMethod(a,"setTimeout")&&J.isHostObject(a,"document")}function t(a,b,c){var d;if(a?J.isHostProperty(a,"nodeType")?d=1==a.nodeType&&"iframe"==a.tagName.toLowerCase()?q(a):o(a):s(a)&&(d=a.document):d=document,!d)throw b.createError(c+"(): Parameter must be a Window object or DOM node");return d}function u(a){for(var b;b=a.parentNode;)a=b;return a}function v(a,c,d,f){var h,i,k,l,m;if(a==d)return c===f?0:f>c?-1:1;if(h=j(d,a,!0))return c<=e(h)?-1:1;if(h=j(a,d,!0))return e(h)<f?-1:1;if(i=g(a,d),!i)throw Error("comparePoints error: nodes have no common ancestor");if(k=a===i?i:j(a,i,!0),l=d===i?i:j(d,i,!0),k===l)throw b.createError("comparePoints got to case 4 and childA and childB are the same!");for(m=i.firstChild;m;){if(m===k)return-1;if(m===l)return 1;m=m.nextSibling}}function w(a){var b;try{return b=a.parentNode,!1}catch(c){return!0}}function x(a){if(!a)return"[No node]";if(G&&w(a))return"[Broken node]";if(k(a))return'"'+a.data+'"';if(1==a.nodeType){var b=a.id?' id="'+a.id+'"':"";return"<"+a.nodeName+b+">[index:"+e(a)+",length:"+a.childNodes.length+"]["+(a.innerHTML||"[innerHTML not supported]").slice(0,25)+"]"}return a.nodeName}function y(a){for(var b,c=o(a).createDocumentFragment();b=a.firstChild;)c.appendChild(b);return c}function z(a){this.root=a,this._next=a}function A(a){return new z(a)}function B(a,b){this.node=a,this.offset=b}function C(a){this.code=this[a],this.codeName=a,this.message="DOMException: "+this.codeName}var D,E,F,G,H,I="undefined",J=a.util;J.areHostMethods(document,["createDocumentFragment","createElement","createTextNode"])||b.fail("document missing a Node creation method"),J.isHostMethod(document,"getElementsByTagName")||b.fail("document missing getElementsByTagName method"),D=document.createElement("div"),J.areHostMethods(D,["insertBefore","appendChild","cloneNode"]||!J.areHostObjects(D,["previousSibling","nextSibling","childNodes","parentNode"]))||b.fail("Incomplete Element implementation"),J.isHostProperty(D,"innerHTML")||b.fail("Element is missing innerHTML property"),E=document.createTextNode("test"),J.areHostMethods(E,["splitText","deleteData","insertData","appendData","cloneNode"]||!J.areHostObjects(D,["previousSibling","nextSibling","childNodes","parentNode"])||!J.areHostProperties(E,["data"]))||b.fail("Incomplete Text Node implementation"),F=function(a,b){for(var c=a.length;c--;)if(a[c]===b)return!0;return!1},G=!1,function(){var b,c=document.createElement("b");c.innerHTML="1",b=c.firstChild,c.innerHTML="<br>",G=w(b),a.features.crashyTextNodes=G}(),typeof window.getComputedStyle!=I?H=function(a,b){return p(a).getComputedStyle(a,null)[b]}:typeof document.documentElement.currentStyle!=I?H=function(a,b){return a.currentStyle[b]}:b.fail("No means of obtaining computed style properties found"),z.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){var a,b,c=this._current=this._next;if(this._current)if(a=c.firstChild,a)this._next=a;else{for(b=null;c!==this.root&&!(b=c.nextSibling);)c=c.parentNode;this._next=b}return this._current},detach:function(){this._current=this._next=this.root=null}},B.prototype={equals:function(a){return!!a&&this.node===a.node&&this.offset==a.offset},inspect:function(){return"[DomPosition("+x(this.node)+":"+this.offset+")]"},toString:function(){return this.inspect()}},C.prototype={INDEX_SIZE_ERR:1,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INVALID_STATE_ERR:11,INVALID_NODE_TYPE_ERR:24},C.prototype.toString=function(){return this.message},a.dom={arrayContains:F,isHtmlNamespace:c,parentElement:d,getNodeIndex:e,getNodeLength:f,getCommonAncestor:g,isAncestorOf:h,isOrIsAncestorOf:i,getClosestAncestorIn:j,isCharacterDataNode:k,isTextOrCommentNode:l,insertAfter:m,splitDataNode:n,getDocument:o,getWindow:p,getIframeWindow:r,getIframeDocument:q,getBody:J.getBody,isWindow:s,getContentDocument:t,getRootContainer:u,comparePoints:v,isBrokenNode:w,inspectNode:x,getComputedStyleProperty:H,fragmentFromNodeChildren:y,createIterator:A,DomPosition:B},a.DOMException=C}),H.createCoreModule("DomRange",["DomUtil"],function(a){function b(a,b){return 3!=a.nodeType&&(gb(a,b.startContainer)||gb(a,b.endContainer))}function c(a){return a.document||hb(a.startContainer)}function d(a){return new cb(a.parentNode,fb(a))}function e(a){return new cb(a.parentNode,fb(a)+1)}function f(a,b,c){var d=11==a.nodeType?a.firstChild:a;return eb(b)?c==b.length?ab.insertAfter(a,b):b.parentNode.insertBefore(a,0==c?b:jb(b,c)):c>=b.childNodes.length?b.appendChild(a):b.insertBefore(a,b.childNodes[c]),d}function g(a,b,d){if(y(a),y(b),c(b)!=c(a))throw new db("WRONG_DOCUMENT_ERR");var e=ib(a.startContainer,a.startOffset,b.endContainer,b.endOffset),f=ib(a.endContainer,a.endOffset,b.startContainer,b.startOffset);return d?0>=e&&f>=0:0>e&&f>0}function h(a){var b,d,e,f;for(e=c(a.range).createDocumentFragment();d=a.next();){if(b=a.isPartiallySelectedSubtree(),d=d.cloneNode(!b),b&&(f=a.getSubtreeIterator(),d.appendChild(h(f)),f.detach()),10==d.nodeType)throw new db("HIERARCHY_REQUEST_ERR");e.appendChild(d)}return e}function i(a,b,c){var d,e,f,g;for(c=c||{stop:!1};f=a.next();)if(a.isPartiallySelectedSubtree()){if(b(f)===!1)return c.stop=!0,void 0;if(g=a.getSubtreeIterator(),i(g,b,c),g.detach(),c.stop)return}else for(d=ab.createIterator(f);e=d.next();)if(b(e)===!1)return c.stop=!0,void 0}function j(a){for(var b;a.next();)a.isPartiallySelectedSubtree()?(b=a.getSubtreeIterator(),j(b),b.detach()):a.remove()}function k(a){for(var b,d,e=c(a.range).createDocumentFragment();b=a.next();){if(a.isPartiallySelectedSubtree()?(b=b.cloneNode(!1),d=a.getSubtreeIterator(),b.appendChild(k(d)),d.detach()):a.remove(),10==b.nodeType)throw new db("HIERARCHY_REQUEST_ERR");e.appendChild(b)}return e}function l(a,b,c){var d,e,f=!(!b||!b.length),g=!!c;return f&&(d=RegExp("^("+b.join("|")+")$")),e=[],i(new n(a,!1),function(b){var h,i;(!f||d.test(b.nodeType))&&(!g||c(b))&&(h=a.startContainer,b==h&&eb(h)&&a.startOffset==h.length||(i=a.endContainer,b==i&&eb(i)&&0==a.endOffset||e.push(b)))}),e}function m(a){var b=void 0===a.getName?"Range":a.getName();return"["+b+"("+ab.inspectNode(a.startContainer)+":"+a.startOffset+", "+ab.inspectNode(a.endContainer)+":"+a.endOffset+")]"}function n(a,b){if(this.range=a,this.clonePartiallySelectedTextNodes=b,!a.collapsed){this.sc=a.startContainer,this.so=a.startOffset,this.ec=a.endContainer,this.eo=a.endOffset;var c=a.commonAncestorContainer;this.sc===this.ec&&eb(this.sc)?(this.isSingleCharacterDataNode=!0,this._first=this._last=this._next=this.sc):(this._first=this._next=this.sc!==c||eb(this.sc)?kb(this.sc,c,!0):this.sc.childNodes[this.so],this._last=this.ec!==c||eb(this.ec)?kb(this.ec,c,!0):this.ec.childNodes[this.eo-1])}}function o(a){return function(b,c){for(var d,e=c?b:b.parentNode;e;){if(d=e.nodeType,mb(a,d))return e;e=e.parentNode}return null}}function p(a,b){if(P(a,b))throw new db("INVALID_NODE_TYPE_ERR")}function q(a,b){if(!mb(b,a.nodeType))throw new db("INVALID_NODE_TYPE_ERR")}function r(a,b){if(0>b||b>(eb(a)?a.length:a.childNodes.length))throw new db("INDEX_SIZE_ERR")}function s(a,b){if(N(a,!0)!==N(b,!0))throw new db("WRONG_DOCUMENT_ERR")}function t(a){if(O(a,!0))throw new db("NO_MODIFICATION_ALLOWED_ERR")}function u(a,b){if(!a)throw new db(b)}function v(a){return ob&&ab.isBrokenNode(a)||!mb(J,a.nodeType)&&!N(a,!0)}function w(a,b){return b<=(eb(a)?a.length:a.childNodes.length)}function x(a){return!!a.startContainer&&!!a.endContainer&&!v(a.startContainer)&&!v(a.endContainer)&&w(a.startContainer,a.startOffset)&&w(a.endContainer,a.endOffset)}function y(a){if(!x(a))throw Error("Range error: Range is no longer valid after DOM mutation ("+a.inspect()+")")}function z(a,b){var c,d,e,f,g;y(a),c=a.startContainer,d=a.startOffset,e=a.endContainer,f=a.endOffset,g=c===e,eb(e)&&f>0&&f<e.length&&jb(e,f,b),eb(c)&&d>0&&d<c.length&&(c=jb(c,d,b),g?(f-=d,e=c):e==c.parentNode&&f>=fb(c)&&f++,d=0),a.setStartAndEnd(c,d,e,f)}function A(a){y(a);var b=a.commonAncestorContainer.parentNode.cloneNode(!1);return b.appendChild(a.cloneContents()),b.innerHTML}function B(a){a.START_TO_START=U,a.START_TO_END=V,a.END_TO_END=W,a.END_TO_START=X,a.NODE_BEFORE=Y,a.NODE_AFTER=Z,a.NODE_BEFORE_AND_AFTER=$,a.NODE_INSIDE=_}function C(a){B(a),B(a.prototype)}function D(a,b){return function(){var c,d,f,g,h,j,k;return y(this),c=this.startContainer,d=this.startOffset,f=this.commonAncestorContainer,g=new n(this,!0),c!==f&&(h=kb(c,f,!0),j=e(h),c=j.node,d=j.offset),i(g,t),g.reset(),k=a(g),g.detach(),b(this,c,d,c,d),k}}function E(c,f){function g(a,b){return function(c){q(c,I),q(nb(c),J);var f=(a?d:e)(c);(b?h:i)(this,f.node,f.offset)}}function h(a,b,c){var d=a.endContainer,e=a.endOffset;(b!==a.startContainer||c!==a.startOffset)&&((nb(b)!=nb(d)||1==ib(b,c,d,e))&&(d=b,e=c),f(a,b,c,d,e))}function i(a,b,c){var d=a.startContainer,e=a.startOffset;(b!==a.endContainer||c!==a.endOffset)&&((nb(b)!=nb(d)||-1==ib(b,c,d,e))&&(d=b,e=c),f(a,d,e,b,c))}var l=function(){};l.prototype=a.rangePrototype,c.prototype=new l,bb.extend(c.prototype,{setStart:function(a,b){p(a,!0),r(a,b),h(this,a,b)},setEnd:function(a,b){p(a,!0),r(a,b),i(this,a,b)},setStartAndEnd:function(){var a=arguments,b=a[0],c=a[1],d=b,e=c;switch(a.length){case 3:e=a[2];break;case 4:d=a[2],e=a[3]}f(this,b,c,d,e)},setBoundary:function(a,b,c){this["set"+(c?"Start":"End")](a,b)},setStartBefore:g(!0,!0),setStartAfter:g(!1,!0),setEndBefore:g(!0,!1),setEndAfter:g(!1,!1),collapse:function(a){y(this),a?f(this,this.startContainer,this.startOffset,this.startContainer,this.startOffset):f(this,this.endContainer,this.endOffset,this.endContainer,this.endOffset)},selectNodeContents:function(a){p(a,!0),f(this,a,0,a,lb(a))},selectNode:function(a){p(a,!1),q(a,I);var b=d(a),c=e(a);f(this,b.node,b.offset,c.node,c.offset)},extractContents:D(k,f),deleteContents:D(j,f),canSurroundContents:function(){var a,c;return y(this),t(this.startContainer),t(this.endContainer),a=new n(this,!0),c=a._first&&b(a._first,this)||a._last&&b(a._last,this),a.detach(),!c},splitBoundaries:function(){z(this)},splitBoundariesPreservingPositions:function(a){z(this,a)},normalizeBoundaries:function(){var a,b,c,d,e,g,h,i,j;y(this),a=this.startContainer,b=this.startOffset,c=this.endContainer,d=this.endOffset,e=function(a){var b=a.nextSibling;b&&b.nodeType==a.nodeType&&(c=a,d=a.length,a.appendData(b.data),b.parentNode.removeChild(b))},g=function(e){var f,g,h=e.previousSibling;h&&h.nodeType==e.nodeType&&(a=e,f=e.length,b=h.length,e.insertData(0,h.data),h.parentNode.removeChild(h),a==c?(d+=b,c=a):c==e.parentNode&&(g=fb(e),d==g?(c=e,d=f):d>g&&d--))},h=!0,eb(c)?c.length==d&&e(c):(d>0&&(i=c.childNodes[d-1],i&&eb(i)&&e(i)),h=!this.collapsed),h?eb(a)?0==b&&g(a):b<a.childNodes.length&&(j=a.childNodes[b],j&&eb(j)&&g(j)):(a=c,b=d),f(this,a,b,c,d)},collapseToPoint:function(a,b){p(a,!0),r(a,b),this.setStartAndEnd(a,b)}}),C(c)}function F(a){a.collapsed=a.startContainer===a.endContainer&&a.startOffset===a.endOffset,a.commonAncestorContainer=a.collapsed?a.startContainer:ab.getCommonAncestor(a.startContainer,a.endContainer)}function G(a,b,c,d,e){a.startContainer=b,a.startOffset=c,a.endContainer=d,a.endOffset=e,a.document=ab.getDocument(b),F(a)}function H(a){this.startContainer=a,this.startOffset=0,this.endContainer=a,this.endOffset=0,this.document=a,F(this)}var I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab=a.dom,bb=a.util,cb=ab.DomPosition,db=a.DOMException,eb=ab.isCharacterDataNode,fb=ab.getNodeIndex,gb=ab.isOrIsAncestorOf,hb=ab.getDocument,ib=ab.comparePoints,jb=ab.splitDataNode,kb=ab.getClosestAncestorIn,lb=ab.getNodeLength,mb=ab.arrayContains,nb=ab.getRootContainer,ob=a.features.crashyTextNodes;n.prototype={_current:null,_next:null,_first:null,_last:null,isSingleCharacterDataNode:!1,reset:function(){this._current=null,this._next=this._first},hasNext:function(){return!!this._next},next:function(){var a=this._current=this._next;return a&&(this._next=a!==this._last?a.nextSibling:null,eb(a)&&this.clonePartiallySelectedTextNodes&&(a===this.ec&&(a=a.cloneNode(!0)).deleteData(this.eo,a.length-this.eo),this._current===this.sc&&(a=a.cloneNode(!0)).deleteData(0,this.so))),a},remove:function(){var a,b,c=this._current;!eb(c)||c!==this.sc&&c!==this.ec?c.parentNode&&c.parentNode.removeChild(c):(a=c===this.sc?this.so:0,b=c===this.ec?this.eo:c.length,a!=b&&c.deleteData(a,b-a))},isPartiallySelectedSubtree:function(){var a=this._current;return b(a,this.range)},getSubtreeIterator:function(){var a,b,d,e,f,g;return this.isSingleCharacterDataNode?(a=this.range.cloneRange(),a.collapse(!1)):(a=new H(c(this.range)),b=this._current,d=b,e=0,f=b,g=lb(b),gb(b,this.sc)&&(d=this.sc,e=this.so),gb(b,this.ec)&&(f=this.ec,g=this.eo),G(a,d,e,f,g)),new n(a,this.clonePartiallySelectedTextNodes)},detach:function(){this.range=this._current=this._next=this._first=this._last=this.sc=this.so=this.ec=this.eo=null}},I=[1,3,4,5,7,8,10],J=[2,9,11],K=[5,6,10,12],L=[1,3,4,5,7,8,10,11],M=[1,3,4,5,7,8],N=o([9,11]),O=o(K),P=o([6,10,12]),Q=document.createElement("style"),R=!1;try{Q.innerHTML="<b>x</b>",R=3==Q.firstChild.nodeType}catch(pb){}a.features.htmlParsingConforms=R,S=R?function(a){var b,c=this.startContainer,d=hb(c);if(!c)throw new db("INVALID_STATE_ERR");return b=null,1==c.nodeType?b=c:eb(c)&&(b=ab.parentElement(c)),b=null===b||"HTML"==b.nodeName&&ab.isHtmlNamespace(hb(b).documentElement)&&ab.isHtmlNamespace(b)?d.createElement("body"):b.cloneNode(!1),b.innerHTML=a,ab.fragmentFromNodeChildren(b)}:function(a){var b=c(this),d=b.createElement("body");return d.innerHTML=a,ab.fragmentFromNodeChildren(d)},T=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"],U=0,V=1,W=2,X=3,Y=0,Z=1,$=2,_=3,bb.extend(a.rangePrototype,{compareBoundaryPoints:function(a,b){var c,d,e,f,g,h;return y(this),s(this.startContainer,b.startContainer),g=a==X||a==U?"start":"end",h=a==V||a==U?"start":"end",c=this[g+"Container"],d=this[g+"Offset"],e=b[h+"Container"],f=b[h+"Offset"],ib(c,d,e,f)},insertNode:function(a){if(y(this),q(a,L),t(this.startContainer),gb(a,this.startContainer))throw new db("HIERARCHY_REQUEST_ERR");var b=f(a,this.startContainer,this.startOffset);this.setStartBefore(b)},cloneContents:function(){var a,b,d;return y(this),this.collapsed?c(this).createDocumentFragment():this.startContainer===this.endContainer&&eb(this.startContainer)?(a=this.startContainer.cloneNode(!0),a.data=a.data.slice(this.startOffset,this.endOffset),b=c(this).createDocumentFragment(),b.appendChild(a),b):(d=new n(this,!0),a=h(d),d.detach(),a)},canSurroundContents:function(){var a,c;return y(this),t(this.startContainer),t(this.endContainer),a=new n(this,!0),c=a._first&&b(a._first,this)||a._last&&b(a._last,this),a.detach(),!c},surroundContents:function(a){if(q(a,M),!this.canSurroundContents())throw new db("INVALID_STATE_ERR");var b=this.extractContents();if(a.hasChildNodes())for(;a.lastChild;)a.removeChild(a.lastChild);f(a,this.startContainer,this.startOffset),a.appendChild(b),this.selectNode(a)},cloneRange:function(){var a,b,d;for(y(this),a=new H(c(this)),b=T.length;b--;)d=T[b],a[d]=this[d];return a},toString:function(){var a,b,c;return y(this),a=this.startContainer,a===this.endContainer&&eb(a)?3==a.nodeType||4==a.nodeType?a.data.slice(this.startOffset,this.endOffset):"":(b=[],c=new n(this,!0),i(c,function(a){(3==a.nodeType||4==a.nodeType)&&b.push(a.data)}),c.detach(),b.join(""))},compareNode:function(a){var b,c,d,e;if(y(this),b=a.parentNode,c=fb(a),!b)throw new db("NOT_FOUND_ERR");return d=this.comparePoint(b,c),e=this.comparePoint(b,c+1),0>d?e>0?$:Y:e>0?Z:_},comparePoint:function(a,b){return y(this),u(a,"HIERARCHY_REQUEST_ERR"),s(a,this.startContainer),ib(a,b,this.startContainer,this.startOffset)<0?-1:ib(a,b,this.endContainer,this.endOffset)>0?1:0},createContextualFragment:S,toHtml:function(){return A(this)},intersectsNode:function(a,b){var d,e,f,g;return y(this),u(a,"NOT_FOUND_ERR"),hb(a)!==c(this)?!1:(d=a.parentNode,e=fb(a),u(d,"NOT_FOUND_ERR"),f=ib(d,e,this.endContainer,this.endOffset),g=ib(d,e+1,this.startContainer,this.startOffset),b?0>=f&&g>=0:0>f&&g>0)},isPointInRange:function(a,b){return y(this),u(a,"HIERARCHY_REQUEST_ERR"),s(a,this.startContainer),ib(a,b,this.startContainer,this.startOffset)>=0&&ib(a,b,this.endContainer,this.endOffset)<=0},intersectsRange:function(a){return g(this,a,!1)},intersectsOrTouchesRange:function(a){return g(this,a,!0)},intersection:function(a){var b,c,d;return this.intersectsRange(a)?(b=ib(this.startContainer,this.startOffset,a.startContainer,a.startOffset),c=ib(this.endContainer,this.endOffset,a.endContainer,a.endOffset),d=this.cloneRange(),-1==b&&d.setStart(a.startContainer,a.startOffset),1==c&&d.setEnd(a.endContainer,a.endOffset),d):null},union:function(a){if(this.intersectsOrTouchesRange(a)){var b=this.cloneRange();return-1==ib(a.startContainer,a.startOffset,this.startContainer,this.startOffset)&&b.setStart(a.startContainer,a.startOffset),1==ib(a.endContainer,a.endOffset,this.endContainer,this.endOffset)&&b.setEnd(a.endContainer,a.endOffset),b}throw new db("Ranges do not intersect")},containsNode:function(a,b){return b?this.intersectsNode(a,!1):this.compareNode(a)==_},containsNodeContents:function(a){return this.comparePoint(a,0)>=0&&this.comparePoint(a,lb(a))<=0},containsRange:function(a){var b=this.intersection(a);return null!==b&&a.equals(b)},containsNodeText:function(a){var b,c,d=this.cloneRange();return d.selectNode(a),b=d.getNodes([3]),b.length>0?(d.setStart(b[0],0),c=b.pop(),d.setEnd(c,c.length),this.containsRange(d)):this.containsNodeContents(a)},getNodes:function(a,b){return y(this),l(this,a,b)},getDocument:function(){return c(this)},collapseBefore:function(a){this.setEndBefore(a),this.collapse(!1)},collapseAfter:function(a){this.setStartAfter(a),this.collapse(!0)},getBookmark:function(b){var d,e,f,g=c(this),h=a.createRange(g);return b=b||ab.getBody(g),h.selectNodeContents(b),d=this.intersection(h),e=0,f=0,d&&(h.setEnd(d.startContainer,d.startOffset),e=(""+h).length,f=e+(""+d).length),{start:e,end:f,containerNode:b}},moveToBookmark:function(a){var b,c,d,e,f,g,h,i=a.containerNode,j=0;for(this.setStart(i,0),this.collapse(!0),b=[i],d=!1,e=!1;!e&&(c=b.pop());)if(3==c.nodeType)f=j+c.length,!d&&a.start>=j&&a.start<=f&&(this.setStart(c,a.start-j),d=!0),d&&a.end>=j&&a.end<=f&&(this.setEnd(c,a.end-j),e=!0),j=f;else for(h=c.childNodes,g=h.length;g--;)b.push(h[g])},getName:function(){return"DomRange"},equals:function(a){return H.rangesEqual(this,a)},isValid:function(){return x(this)},inspect:function(){return m(this)},detach:function(){}}),E(H,G),bb.extend(H,{rangeProperties:T,RangeIterator:n,copyComparisonConstants:C,createPrototypeRange:E,inspect:m,toHtml:A,getRangeDocument:c,rangesEqual:function(a,b){return a.startContainer===b.startContainer&&a.startOffset===b.startOffset&&a.endContainer===b.endContainer&&a.endOffset===b.endOffset}}),a.DomRange=H}),H.createCoreModule("WrappedRange",["DomRange"],function(a,b){var c,d,e,f,g,h,i,j,k=a.dom,l=a.util,m=k.DomPosition,n=a.DomRange,o=k.getBody,p=k.getContentDocument,q=k.isCharacterDataNode;a.features.implementsDomRange&&!function(){function d(a){for(var b,c=s.length;c--;)b=s[c],a[b]=a.nativeRange[b];a.collapsed=a.startContainer===a.endContainer&&a.startOffset===a.endOffset}function e(a,b,c,d,e){var f=a.startContainer!==b||a.startOffset!=c,g=a.endContainer!==d||a.endOffset!=e,h=!a.equals(a.nativeRange);(f||g||h)&&(a.setEnd(d,e),a.setStart(b,c))}var f,g,h,i,j,m,q,r,s=n.rangeProperties;c=function(a){if(!a)throw b.createError("WrappedRange: Range must be specified");this.nativeRange=a,d(this)},n.createPrototypeRange(c,e),f=c.prototype,f.selectNode=function(a){this.nativeRange.selectNode(a),d(this)},f.cloneContents=function(){return this.nativeRange.cloneContents()},f.surroundContents=function(a){this.nativeRange.surroundContents(a),d(this)},f.collapse=function(a){this.nativeRange.collapse(a),d(this)},f.cloneRange=function(){return new c(this.nativeRange.cloneRange())},f.refresh=function(){d(this)},f.toString=function(){return""+this.nativeRange},h=document.createTextNode("test"),o(document).appendChild(h),i=document.createRange(),i.setStart(h,0),i.setEnd(h,0);try{i.setStart(h,1),f.setStart=function(a,b){this.nativeRange.setStart(a,b),d(this)},f.setEnd=function(a,b){this.nativeRange.setEnd(a,b),d(this)},g=function(a){return function(b){this.nativeRange[a](b),d(this)}}}catch(t){f.setStart=function(a,b){try{this.nativeRange.setStart(a,b)}catch(c){this.nativeRange.setEnd(a,b),this.nativeRange.setStart(a,b)}d(this)},f.setEnd=function(a,b){try{this.nativeRange.setEnd(a,b)}catch(c){this.nativeRange.setStart(a,b),this.nativeRange.setEnd(a,b)}d(this)},g=function(a,b){return function(c){try{this.nativeRange[a](c)}catch(e){this.nativeRange[b](c),this.nativeRange[a](c)}d(this)}}}f.setStartBefore=g("setStartBefore","setEndBefore"),f.setStartAfter=g("setStartAfter","setEndAfter"),f.setEndBefore=g("setEndBefore","setStartBefore"),f.setEndAfter=g("setEndAfter","setStartAfter"),f.selectNodeContents=function(a){this.setStartAndEnd(a,0,k.getNodeLength(a))},i.selectNodeContents(h),i.setEnd(h,3),j=document.createRange(),j.selectNodeContents(h),j.setEnd(h,4),j.setStart(h,2),f.compareBoundaryPoints=-1==i.compareBoundaryPoints(i.START_TO_END,j)&&1==i.compareBoundaryPoints(i.END_TO_START,j)?function(a,b){return b=b.nativeRange||b,a==b.START_TO_END?a=b.END_TO_START:a==b.END_TO_START&&(a=b.START_TO_END),this.nativeRange.compareBoundaryPoints(a,b)}:function(a,b){return this.nativeRange.compareBoundaryPoints(a,b.nativeRange||b)},m=document.createElement("div"),m.innerHTML="123",q=m.firstChild,r=o(document),r.appendChild(m),i.setStart(q,1),i.setEnd(q,2),i.deleteContents(),"13"==q.data&&(f.deleteContents=function(){this.nativeRange.deleteContents(),d(this)},f.extractContents=function(){var a=this.nativeRange.extractContents();return d(this),a}),r.removeChild(m),r=null,l.isHostMethod(i,"createContextualFragment")&&(f.createContextualFragment=function(a){return this.nativeRange.createContextualFragment(a)}),o(document).removeChild(h),f.getName=function(){return"WrappedRange"},a.WrappedRange=c,a.createNativeRange=function(a){return a=p(a,b,"createNativeRange"),a.createRange()}}(),a.features.implementsTextRange&&(e=function(a){var b,c,d,e=a.parentElement(),f=a.duplicate();return f.collapse(!0),b=f.parentElement(),f=a.duplicate(),f.collapse(!1),c=f.parentElement(),d=b==c?b:k.getCommonAncestor(b,c),d==e?d:k.getCommonAncestor(e,d)},f=function(a){return 0==a.compareEndPoints("StartToEnd",a)},g=function(a,b,c,d,e){var f,g,h,i,j,l,n,o,p,r,s,t,u,v,w,x,y=a.duplicate();if(y.collapse(c),f=y.parentElement(),k.isOrIsAncestorOf(b,f)||(f=b),!f.canHaveHTML)return g=new m(f.parentNode,k.getNodeIndex(f)),{boundaryPosition:g,nodeInfo:{nodeIndex:g.offset,containerElement:g.node}};for(h=k.getDocument(f).createElement("span"),h.parentNode&&h.parentNode.removeChild(h),j=c?"StartToStart":"StartToEnd",r=e&&e.containerElement==f?e.nodeIndex:0,s=f.childNodes.length,t=s,u=t;;){if(u==s?f.appendChild(h):f.insertBefore(h,f.childNodes[u]),y.moveToElementText(h),i=y.compareEndPoints(j,a),0==i||r==t)break;if(-1==i){if(t==r+1)break;r=u}else t=t==r+1?r:u;u=Math.floor((r+t)/2),f.removeChild(h)}if(p=h.nextSibling,-1==i&&p&&q(p)){if(y.setEndPoint(c?"EndToStart":"EndToEnd",a),/[\r\n]/.test(p.data))for(w=y.duplicate(),x=w.text.replace(/\r\n/g,"\r").length,v=w.moveStart("character",x);-1==(i=w.compareEndPoints("StartToEnd",w));)v++,w.moveStart("character",1);else v=y.text.length;o=new m(p,v)}else l=(d||!c)&&h.previousSibling,n=(d||c)&&h.nextSibling,o=n&&q(n)?new m(n,0):l&&q(l)?new m(l,l.data.length):new m(f,k.getNodeIndex(h));return h.parentNode.removeChild(h),{boundaryPosition:o,nodeInfo:{nodeIndex:u,containerElement:f}}},h=function(a,b){var c,d,e,f,g=a.offset,h=k.getDocument(a.node),i=o(h).createTextRange(),j=q(a.node);return j?(c=a.node,d=c.parentNode):(f=a.node.childNodes,c=g<f.length?f[g]:null,d=a.node),e=h.createElement("span"),e.innerHTML="&#feff;",c?d.insertBefore(e,c):d.appendChild(e),i.moveToElementText(e),i.collapse(!b),d.removeChild(e),j&&i[b?"moveStart":"moveEnd"]("character",g),i},d=function(a){this.textRange=a,this.refresh()},d.prototype=new n(document),d.prototype.refresh=function(){var a,b,c,d=e(this.textRange); f(this.textRange)?b=a=g(this.textRange,d,!0,!0).boundaryPosition:(c=g(this.textRange,d,!0,!1),a=c.boundaryPosition,b=g(this.textRange,d,!1,!1,c.nodeInfo).boundaryPosition),this.setStart(a.node,a.offset),this.setEnd(b.node,b.offset)},d.prototype.getName=function(){return"WrappedTextRange"},n.copyComparisonConstants(d),i=function(a){var b,c,d;return a.collapsed?h(new m(a.startContainer,a.startOffset),!0):(b=h(new m(a.startContainer,a.startOffset),!0),c=h(new m(a.endContainer,a.endOffset),!1),d=o(n.getRangeDocument(a)).createTextRange(),d.setEndPoint("StartToStart",b),d.setEndPoint("EndToEnd",c),d)},d.rangeToTextRange=i,d.prototype.toTextRange=function(){return i(this)},a.WrappedTextRange=d,(!a.features.implementsDomRange||a.config.preferTextRange)&&(j=function(){return this}(),void 0===j.Range&&(j.Range=d),a.createNativeRange=function(a){return a=p(a,b,"createNativeRange"),o(a).createTextRange()},a.WrappedRange=d)),a.createRange=function(c){return c=p(c,b,"createRange"),new a.WrappedRange(a.createNativeRange(c))},a.createRangyRange=function(a){return a=p(a,b,"createRangyRange"),new n(a)},a.createIframeRange=function(c){return b.deprecationNotice("createIframeRange()","createRange(iframeEl)"),a.createRange(c)},a.createIframeRangyRange=function(c){return b.deprecationNotice("createIframeRangyRange()","createRangyRange(iframeEl)"),a.createRangyRange(c)},a.addShimListener(function(b){var c=b.document;void 0===c.createRange&&(c.createRange=function(){return a.createRange(c)}),c=b=null})}),H.createCoreModule("WrappedSelection",["DomRange","WrappedRange"],function(a,b){function c(a){return"string"==typeof a?/^backward(s)?$/i.test(a):!!a}function d(a,c){if(a){if(A.isWindow(a))return a;if(a instanceof r)return a.win;var d=A.getContentDocument(a,b,c);return A.getWindow(d)}return window}function e(a){return d(a,"getWinSelection").getSelection()}function f(a){return d(a,"getDocSelection").document.selection}function g(a){var b=!1;return a.anchorNode&&(b=1==A.comparePoints(a.anchorNode,a.anchorOffset,a.focusNode,a.focusOffset)),b}function h(a,b,c){var d=c?"end":"start",e=c?"start":"end";a.anchorNode=b[d+"Container"],a.anchorOffset=b[d+"Offset"],a.focusNode=b[e+"Container"],a.focusOffset=b[e+"Offset"]}function i(a){var b=a.nativeSelection;a.anchorNode=b.anchorNode,a.anchorOffset=b.anchorOffset,a.focusNode=b.focusNode,a.focusOffset=b.focusOffset}function j(a){a.anchorNode=a.focusNode=null,a.anchorOffset=a.focusOffset=0,a.rangeCount=0,a.isCollapsed=!0,a._ranges.length=0}function k(b){var c;return b instanceof D?(c=a.createNativeRange(b.getDocument()),c.setEnd(b.endContainer,b.endOffset),c.setStart(b.startContainer,b.startOffset)):b instanceof E?c=b.nativeRange:J.implementsDomRange&&b instanceof A.getWindow(b.startContainer).Range&&(c=b),c}function l(a){if(!a.length||1!=a[0].nodeType)return!1;for(var b=1,c=a.length;c>b;++b)if(!A.isAncestorOf(a[0],a[b]))return!1;return!0}function m(a){var c=a.getNodes();if(!l(c))throw b.createError("getSingleElementFromRange: range "+a.inspect()+" did not consist of a single element");return c[0]}function n(a){return!!a&&void 0!==a.text}function o(a,b){var c=new E(b);a._ranges=[c],h(a,c,!1),a.rangeCount=1,a.isCollapsed=c.collapsed}function p(b){var c,d,e,f;if(b._ranges.length=0,"None"==b.docSelection.type)j(b);else if(c=b.docSelection.createRange(),n(c))o(b,c);else{for(b.rangeCount=c.length,e=L(c.item(0)),f=0;f<b.rangeCount;++f)d=a.createRange(e),d.selectNode(c.item(f)),b._ranges.push(d);b.isCollapsed=1==b.rangeCount&&b._ranges[0].collapsed,h(b,b._ranges[b.rangeCount-1],!1)}}function q(a,c){var d,e,f=a.docSelection.createRange(),g=m(c),h=L(f.item(0)),i=M(h).createControlRange();for(d=0,e=f.length;e>d;++d)i.add(f.item(d));try{i.add(g)}catch(j){throw b.createError("addRange(): Element within the specified Range could not be added to control selection (does it have layout?)")}i.select(),p(a)}function r(a,b,c){this.nativeSelection=a,this.docSelection=b,this._ranges=[],this.win=c,this.refresh()}function s(a){a.win=a.anchorNode=a.focusNode=a._ranges=null,a.rangeCount=a.anchorOffset=a.focusOffset=0,a.detached=!0}function t(a,b){for(var c,d,e=bb.length;e--;)if(c=bb[e],d=c.selection,"deleteAll"==b)s(d);else if(c.win==a)return"delete"==b?(bb.splice(e,1),!0):d;return"deleteAll"==b&&(bb.length=0),null}function u(a,c){var d,e,f,g=L(c[0].startContainer),h=M(g).createControlRange();for(d=0,f=c.length;f>d;++d){e=m(c[d]);try{h.add(e)}catch(i){throw b.createError("setRanges(): Element within one of the specified Ranges could not be added to control selection (does it have layout?)")}}h.select(),p(a)}function v(a,b){if(a.win.document!=L(b))throw new F("WRONG_DOCUMENT_ERR")}function w(b){return function(c,d){var e;this.rangeCount?(e=this.getRangeAt(0),e["set"+(b?"Start":"End")](c,d)):(e=a.createRange(this.win.document),e.setStartAndEnd(c,d)),this.setSingleRange(e,this.isBackward())}}function x(a){var b,c,d=[],e=new G(a.anchorNode,a.anchorOffset),f=new G(a.focusNode,a.focusOffset),g="function"==typeof a.getName?a.getName():"Selection";if(void 0!==a.rangeCount)for(b=0,c=a.rangeCount;c>b;++b)d[b]=D.inspect(a.getRangeAt(b));return"["+g+"(Ranges: "+d.join(", ")+")(anchor: "+e.inspect()+", focus: "+f.inspect()+"]"}var y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,ab,bb,cb,db,eb,fb,gb,hb;if(a.config.checkSelectionRanges=!0,y="boolean",z="number",A=a.dom,B=a.util,C=B.isHostMethod,D=a.DomRange,E=a.WrappedRange,F=a.DOMException,G=A.DomPosition,J=a.features,K="Control",L=A.getDocument,M=A.getBody,N=D.rangesEqual,O=C(window,"getSelection"),P=B.isHostObject(document,"selection"),J.implementsWinGetSelection=O,J.implementsDocSelection=P,Q=P&&(!O||a.config.preferTextRange),Q?(H=f,a.isSelectionValid=function(a){var b=d(a,"isSelectionValid").document,c=b.selection;return"None"!=c.type||L(c.createRange().parentElement())==b}):O?(H=e,a.isSelectionValid=function(){return!0}):b.fail("Neither document.selection or window.getSelection() detected."),a.getNativeSelection=H,R=H(),S=a.createNativeRange(document),T=M(document),U=B.areHostProperties(R,["anchorNode","focusNode","anchorOffset","focusOffset"]),J.selectionHasAnchorAndFocus=U,V=C(R,"extend"),J.selectionHasExtend=V,W=typeof R.rangeCount==z,J.selectionHasRangeCount=W,X=!1,Y=!0,Z=V?function(b,c){var d=D.getRangeDocument(c),e=a.createRange(d);e.collapseToPoint(c.endContainer,c.endOffset),b.addRange(k(e)),b.extend(c.startContainer,c.startOffset)}:null,B.areHostMethods(R,["addRange","getRangeAt","removeAllRanges"])&&typeof R.rangeCount==z&&J.implementsDomRange&&!function(){var b,c,d,e,f,h,i,j,k,l,m,n=window.getSelection();if(n){for(b=n.rangeCount,c=b>1,d=[],e=g(n),f=0;b>f;++f)d[f]=n.getRangeAt(f);for(h=M(document),i=h.appendChild(document.createElement("div")),i.contentEditable="false",j=i.appendChild(document.createTextNode(" ")),k=document.createRange(),k.setStart(j,1),k.collapse(!0),n.addRange(k),Y=1==n.rangeCount,n.removeAllRanges(),c||(l=window.navigator.appVersion.match(/Chrome\/(.*?) /),l&&parseInt(l[1])>=36?X=!1:(m=k.cloneRange(),k.setStart(j,0),m.setEnd(j,3),m.setStart(j,2),n.addRange(k),n.addRange(m),X=2==n.rangeCount)),h.removeChild(i),n.removeAllRanges(),f=0;b>f;++f)0==f&&e?Z?Z(n,d[f]):(a.warn("Rangy initialization: original selection was backwards but selection has been restored forwards because the browser does not support Selection.extend"),n.addRange(d[f])):n.addRange(d[f])}}(),J.selectionSupportsMultipleRanges=X,J.collapsedNonEditableSelectionsSupported=Y,$=!1,T&&C(T,"createControlRange")&&(_=T.createControlRange(),B.areHostProperties(_,["item","add"])&&($=!0)),J.implementsControlRange=$,I=U?function(a){return a.anchorNode===a.focusNode&&a.anchorOffset===a.focusOffset}:function(a){return a.rangeCount?a.getRangeAt(a.rangeCount-1).collapsed:!1},C(R,"getRangeAt")?ab=function(a,b){try{return a.getRangeAt(b)}catch(c){return null}}:U&&(ab=function(b){var c=L(b.anchorNode),d=a.createRange(c);return d.setStartAndEnd(b.anchorNode,b.anchorOffset,b.focusNode,b.focusOffset),d.collapsed!==this.isCollapsed&&d.setStartAndEnd(b.focusNode,b.focusOffset,b.anchorNode,b.anchorOffset),d}),r.prototype=a.selectionPrototype,bb=[],cb=function(a){var b,c,e;return a&&a instanceof r?(a.refresh(),a):(a=d(a,"getNativeSelection"),b=t(a),c=H(a),e=P?f(a):null,b?(b.nativeSelection=c,b.docSelection=e,b.refresh()):(b=new r(c,e,a),bb.push({win:a,selection:b})),b)},a.getSelection=cb,a.getIframeSelection=function(c){return b.deprecationNotice("getIframeSelection()","getSelection(iframeEl)"),a.getSelection(A.getIframeWindow(c))},db=r.prototype,!Q&&U&&B.areHostMethods(R,["removeAllRanges","addRange"]))db.removeAllRanges=function(){this.nativeSelection.removeAllRanges(),j(this)},eb=function(a,b){Z(a.nativeSelection,b),a.refresh()},db.addRange=W?function(b,d){var e,f;$&&P&&this.docSelection.type==K?q(this,b):c(d)&&V?eb(this,b):(X?e=this.rangeCount:(this.removeAllRanges(),e=0),this.nativeSelection.addRange(k(b).cloneRange()),this.rangeCount=this.nativeSelection.rangeCount,this.rangeCount==e+1?(a.config.checkSelectionRanges&&(f=ab(this.nativeSelection,this.rangeCount-1),f&&!N(f,b)&&(b=new E(f))),this._ranges[this.rangeCount-1]=b,h(this,b,hb(this.nativeSelection)),this.isCollapsed=I(this)):this.refresh())}:function(a,b){c(b)&&V?eb(this,a):(this.nativeSelection.addRange(k(a)),this.refresh())},db.setRanges=function(a){if($&&P&&a.length>1)u(this,a);else{this.removeAllRanges();for(var b=0,c=a.length;c>b;++b)this.addRange(a[b])}};else{if(!(C(R,"empty")&&C(S,"select")&&$&&Q))return b.fail("No means of selecting a Range or TextRange was found"),!1;db.removeAllRanges=function(){var a,b,c;try{this.docSelection.empty(),"None"!=this.docSelection.type&&(this.anchorNode?a=L(this.anchorNode):this.docSelection.type==K&&(b=this.docSelection.createRange(),b.length&&(a=L(b.item(0)))),a&&(c=M(a).createTextRange(),c.select(),this.docSelection.empty()))}catch(d){}j(this)},db.addRange=function(b){this.docSelection.type==K?q(this,b):(a.WrappedTextRange.rangeToTextRange(b).select(),this._ranges[0]=b,this.rangeCount=1,this.isCollapsed=this._ranges[0].collapsed,h(this,b,!1))},db.setRanges=function(a){this.removeAllRanges();var b=a.length;b>1?u(this,a):b&&this.addRange(a[0])}}if(db.getRangeAt=function(a){if(0>a||a>=this.rangeCount)throw new F("INDEX_SIZE_ERR");return this._ranges[a].cloneRange()},Q)fb=function(b){var c;a.isSelectionValid(b.win)?c=b.docSelection.createRange():(c=M(b.win.document).createTextRange(),c.collapse(!0)),b.docSelection.type==K?p(b):n(c)?o(b,c):j(b)};else if(C(R,"getRangeAt")&&typeof R.rangeCount==z)fb=function(b){if($&&P&&b.docSelection.type==K)p(b);else if(b._ranges.length=b.rangeCount=b.nativeSelection.rangeCount,b.rangeCount){for(var c=0,d=b.rangeCount;d>c;++c)b._ranges[c]=new a.WrappedRange(b.nativeSelection.getRangeAt(c));h(b,b._ranges[b.rangeCount-1],hb(b.nativeSelection)),b.isCollapsed=I(b)}else j(b)};else{if(!U||typeof R.isCollapsed!=y||typeof S.collapsed!=y||!J.implementsDomRange)return b.fail("No means of obtaining a Range or TextRange from the user's selection was found"),!1;fb=function(a){var b,c=a.nativeSelection;c.anchorNode?(b=ab(c,0),a._ranges=[b],a.rangeCount=1,i(a),a.isCollapsed=I(a)):j(a)}}db.refresh=function(a){var b,c=a?this._ranges.slice(0):null,d=this.anchorNode,e=this.anchorOffset;if(fb(this),a){if(b=c.length,b!=this._ranges.length)return!0;if(this.anchorNode!=d||this.anchorOffset!=e)return!0;for(;b--;)if(!N(c[b],this._ranges[b]))return!0;return!1}},gb=function(a,b){var c,d,e=a.getAllRanges();for(a.removeAllRanges(),c=0,d=e.length;d>c;++c)N(b,e[c])||a.addRange(e[c]);a.rangeCount||j(a)},db.removeRange=$&&P?function(a){var b,c,d,e,f,g,h,i;if(this.docSelection.type==K){for(b=this.docSelection.createRange(),c=m(a),d=L(b.item(0)),e=M(d).createControlRange(),g=!1,h=0,i=b.length;i>h;++h)f=b.item(h),f!==c||g?e.add(b.item(h)):g=!0;e.select(),p(this)}else gb(this,a)}:function(a){gb(this,a)},!Q&&U&&J.implementsDomRange?(hb=g,db.isBackward=function(){return hb(this)}):hb=db.isBackward=function(){return!1},db.isBackwards=db.isBackward,db.toString=function(){var a,b,c=[];for(a=0,b=this.rangeCount;b>a;++a)c[a]=""+this._ranges[a];return c.join("")},db.collapse=function(b,c){v(this,b);var d=a.createRange(b);d.collapseToPoint(b,c),this.setSingleRange(d),this.isCollapsed=!0},db.collapseToStart=function(){if(!this.rangeCount)throw new F("INVALID_STATE_ERR");var a=this._ranges[0];this.collapse(a.startContainer,a.startOffset)},db.collapseToEnd=function(){if(!this.rangeCount)throw new F("INVALID_STATE_ERR");var a=this._ranges[this.rangeCount-1];this.collapse(a.endContainer,a.endOffset)},db.selectAllChildren=function(b){v(this,b);var c=a.createRange(b);c.selectNodeContents(b),this.setSingleRange(c)},db.deleteFromDocument=function(){var a,b,c,d,e;if($&&P&&this.docSelection.type==K){for(a=this.docSelection.createRange();a.length;)b=a.item(0),a.remove(b),b.parentNode.removeChild(b);this.refresh()}else if(this.rangeCount&&(c=this.getAllRanges(),c.length)){for(this.removeAllRanges(),d=0,e=c.length;e>d;++d)c[d].deleteContents();this.addRange(c[e-1])}},db.eachRange=function(a,b){for(var c=0,d=this._ranges.length;d>c;++c)if(a(this.getRangeAt(c)))return b},db.getAllRanges=function(){var a=[];return this.eachRange(function(b){a.push(b)}),a},db.setSingleRange=function(a,b){this.removeAllRanges(),this.addRange(a,b)},db.callMethodOnEachRange=function(a,b){var c=[];return this.eachRange(function(d){c.push(d[a].apply(d,b))}),c},db.setStart=w(!0),db.setEnd=w(!1),a.rangePrototype.select=function(a){cb(this.getDocument()).setSingleRange(this,a)},db.changeEachRange=function(a){var b=[],c=this.isBackward();this.eachRange(function(c){a(c),b.push(c)}),this.removeAllRanges(),c&&1==b.length?this.addRange(b[0],"backward"):this.setRanges(b)},db.containsNode=function(a,b){return this.eachRange(function(c){return c.containsNode(a,b)},!0)||!1},db.getBookmark=function(a){return{backward:this.isBackward(),rangeBookmarks:this.callMethodOnEachRange("getBookmark",[a])}},db.moveToBookmark=function(b){var c,d,e,f=[];for(c=0;d=b.rangeBookmarks[c++];)e=a.createRange(this.win),e.moveToBookmark(d),f.push(e);b.backward?this.setSingleRange(f[0],"backward"):this.setRanges(f)},db.toHtml=function(){var a=[];return this.eachRange(function(b){a.push(D.toHtml(b))}),a.join("")},J.implementsTextRange&&(db.getNativeTextRange=function(){var c,d;if(c=this.docSelection){if(d=c.createRange(),n(d))return d;throw b.createError("getNativeTextRange: selection is a control selection")}if(this.rangeCount>0)return a.WrappedTextRange.rangeToTextRange(this.getRangeAt(0));throw b.createError("getNativeTextRange: selection contains no range")}),db.getName=function(){return"WrappedSelection"},db.inspect=function(){return x(this)},db.detach=function(){t(this.win,"delete"),s(this)},r.detachAll=function(){t(null,"deleteAll")},r.inspect=x,r.isDirectionBackward=c,a.Selection=r,a.selectionPrototype=db,a.addShimListener(function(a){void 0===a.getSelection&&(a.getSelection=function(){return cb(a)}),a=null})}),H)},this),function(a,b){"function"==typeof define&&define.amd?define(["rangy"],a):a(b.rangy)}(function(a){a.createModule("SaveRestore",["WrappedRange"],function(a,b){function c(a,b){return(b||document).getElementById(a)}function d(a,b){var c,d="selectionBoundary_"+ +new Date+"_"+(""+Math.random()).slice(2),e=o.getDocument(a.startContainer),f=a.cloneRange();return f.collapse(b),c=e.createElement("span"),c.id=d,c.style.lineHeight="0",c.style.display="none",c.className="rangySelectionBoundary",c.appendChild(e.createTextNode(p)),f.insertNode(c),c}function e(a,d,e,f){var g=c(e,a);g?(d[f?"setStartBefore":"setEndBefore"](g),g.parentNode.removeChild(g)):b.warn("Marker element has been removed. Cannot restore selection.")}function f(a,b){return b.compareBoundaryPoints(a.START_TO_START,a)}function g(b,c){var e,f,g=a.DomRange.getRangeDocument(b),h=""+b;return b.collapsed?(f=d(b,!1),{document:g,markerId:f.id,collapsed:!0}):(f=d(b,!1),e=d(b,!0),{document:g,startMarkerId:e.id,endMarkerId:f.id,collapsed:!1,backward:c,toString:function(){return"original text: '"+h+"', new text: '"+b+"'"}})}function h(d,f){var g,h,i,j=d.document;return void 0===f&&(f=!0),g=a.createRange(j),d.collapsed?(h=c(d.markerId,j),h?(h.style.display="inline",i=h.previousSibling,i&&3==i.nodeType?(h.parentNode.removeChild(h),g.collapseToPoint(i,i.length)):(g.collapseBefore(h),h.parentNode.removeChild(h))):b.warn("Marker element has been removed. Cannot restore selection.")):(e(j,g,d.startMarkerId,!0),e(j,g,d.endMarkerId,!1)),f&&g.normalizeBoundaries(),g}function i(b,d){var e,h,i,j,k=[];for(b=b.slice(0),b.sort(f),i=0,j=b.length;j>i;++i)k[i]=g(b[i],d);for(i=j-1;i>=0;--i)e=b[i],h=a.DomRange.getRangeDocument(e),e.collapsed?e.collapseAfter(c(k[i].markerId,h)):(e.setEndBefore(c(k[i].endMarkerId,h)),e.setStartAfter(c(k[i].startMarkerId,h)));return k}function j(c){var d,e,f,g;return a.isSelectionValid(c)?(d=a.getSelection(c),e=d.getAllRanges(),f=1==e.length&&d.isBackward(),g=i(e,f),f?d.setSingleRange(e[0],"backward"):d.setRanges(e),{win:c,rangeInfos:g,restored:!1}):(b.warn("Cannot save selection. This usually happens when the selection is collapsed and the selection document has lost focus."),null)}function k(a){var b,c=[],d=a.length;for(b=d-1;b>=0;b--)c[b]=h(a[b],!0);return c}function l(b,c){var d,e,f,g;b.restored||(d=b.rangeInfos,e=a.getSelection(b.win),f=k(d),g=d.length,1==g&&c&&a.features.selectionHasExtend&&d[0].backward?(e.removeAllRanges(),e.addRange(f[0],!0)):e.setRanges(f),b.restored=!0)}function m(a,b){var d=c(b,a);d&&d.parentNode.removeChild(d)}function n(a){var b,c,d,e=a.rangeInfos;for(b=0,c=e.length;c>b;++b)d=e[b],d.collapsed?m(a.doc,d.markerId):(m(a.doc,d.startMarkerId),m(a.doc,d.endMarkerId))}var o=a.dom,p="";a.util.extend(a,{saveRange:g,restoreRange:h,saveRanges:i,restoreRanges:k,saveSelection:j,restoreSelection:l,removeMarkerElement:m,removeMarkers:n})})},this),Base=function(){},Base.extend=function(a,b){var c,d,e,f=Base.prototype.extend;return Base._prototyping=!0,c=new this,f.call(c,a),c.base=function(){},delete Base._prototyping,d=c.constructor,e=c.constructor=function(){if(!Base._prototyping)if(this._constructing||this.constructor==e)this._constructing=!0,d.apply(this,arguments),delete this._constructing;else if(null!=arguments[0])return(arguments[0].extend||f).call(arguments[0],c)},e.ancestor=this,e.extend=this.extend,e.forEach=this.forEach,e.implement=this.implement,e.prototype=c,e.toString=this.toString,e.valueOf=function(a){return"object"==a?e:d.valueOf()},f.call(e,b),"function"==typeof e.init&&e.init(),e},Base.prototype={extend:function(a,b){var c,d,e,f,g,h,i;if(arguments.length>1)c=this[a],!c||"function"!=typeof b||c.valueOf&&c.valueOf()==b.valueOf()||!/\bbase\b/.test(b)||(d=b.valueOf(),b=function(){var a,b=this.base||Base.prototype.base;return this.base=c,a=d.apply(this,arguments),this.base=b,a},b.valueOf=function(a){return"object"==a?b:d},b.toString=Base.toString),this[a]=b;else if(a){for(e=Base.prototype.extend,Base._prototyping||"function"==typeof this||(e=this.extend||e),f={toSource:null},g=["constructor","toString","valueOf"],h=Base._prototyping?0:1;i=g[h++];)a[i]!=f[i]&&e.call(this,i,a[i]);for(i in a)f[i]||e.call(this,i,a[i])}return this}},Base=Base.extend({constructor:function(){this.extend(arguments[0])}},{ancestor:Object,version:"1.1",forEach:function(a,b,c){for(var d in a)void 0===this.prototype[d]&&b.call(c,a[d],d,a)},implement:function(){for(var a=0;a<arguments.length;a++)"function"==typeof arguments[a]?arguments[a](this.prototype):this.prototype.extend(arguments[a]);return this},toString:function(){return this.valueOf()+""}}),wysihtml5.browser=function(){function a(a){return+(/ipad|iphone|ipod/.test(a)&&a.match(/ os (\d+).+? like mac os x/)||[void 0,0])[1]}function b(a){return+(a.match(/android (\d+)/)||[void 0,0])[1]}function c(a,b){var c,d=-1;return"Microsoft Internet Explorer"==navigator.appName?c=RegExp("MSIE ([0-9]{1,}[.0-9]{0,})"):"Netscape"==navigator.appName&&(c=RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})")),c&&null!=c.exec(navigator.userAgent)&&(d=parseFloat(RegExp.$1)),-1===d?!1:a?b?"<"===b?d>a:">"===b?a>d:"<="===b?d>=a:">="===b?a>=d:void 0:a===d:!0}var d=navigator.userAgent,e=document.createElement("div"),f=-1!==d.indexOf("Gecko")&&-1===d.indexOf("KHTML"),g=-1!==d.indexOf("AppleWebKit/"),h=-1!==d.indexOf("Chrome/"),i=-1!==d.indexOf("Opera/");return{USER_AGENT:d,supported:function(){var c=this.USER_AGENT.toLowerCase(),d="contentEditable"in e,f=document.execCommand&&document.queryCommandSupported&&document.queryCommandState,g=document.querySelector&&document.querySelectorAll,h=this.isIos()&&a(c)<5||this.isAndroid()&&b(c)<4||-1!==c.indexOf("opera mobi")||-1!==c.indexOf("hpwos/");return d&&f&&g&&!h},isTouchDevice:function(){return this.supportsEvent("touchmove")},isIos:function(){return/ipad|iphone|ipod/i.test(this.USER_AGENT)},isAndroid:function(){return-1!==this.USER_AGENT.indexOf("Android")},supportsSandboxedIframes:function(){return c()},throwsMixedContentWarningWhenIframeSrcIsEmpty:function(){return!("querySelector"in document)},displaysCaretInEmptyContentEditableCorrectly:function(){return c()},hasCurrentStyleProperty:function(){return"currentStyle"in e},hasHistoryIssue:function(){return f&&"Mac"===navigator.platform.substr(0,3)},insertsLineBreaksOnReturn:function(){return f},supportsPlaceholderAttributeOn:function(a){return"placeholder"in a},supportsEvent:function(a){return"on"+a in e||function(){return e.setAttribute("on"+a,"return;"),"function"==typeof e["on"+a]}()},supportsEventsInIframeCorrectly:function(){return!i},supportsHTML5Tags:function(a){var b=a.createElement("div"),c="<article>foo</article>";return b.innerHTML=c,b.innerHTML.toLowerCase()===c},supportsCommand:function(){var a={formatBlock:c(10,"<="),insertUnorderedList:c(),insertOrderedList:c()},b={insertHTML:f};return function(c,d){var e=a[d];if(!e){try{return c.queryCommandSupported(d)}catch(f){}try{return c.queryCommandEnabled(d)}catch(g){return!!b[d]}}return!1}}(),doesAutoLinkingInContentEditable:function(){return c()},canDisableAutoLinking:function(){return this.supportsCommand(document,"AutoUrlDetect")},clearsContentEditableCorrectly:function(){return f||i||g},supportsGetAttributeCorrectly:function(){var a=document.createElement("td");return"1"!=a.getAttribute("rowspan")},canSelectImagesInContentEditable:function(){return f||c()||i},autoScrollsToCaret:function(){return!g},autoClosesUnclosedTags:function(){var a,b,c=e.cloneNode(!1);return c.innerHTML="<p><div></div>",b=c.innerHTML.toLowerCase(),a="<p></p><div></div>"===b||"<p><div></div></p>"===b,this.autoClosesUnclosedTags=function(){return a},a},supportsNativeGetElementsByClassName:function(){return-1!==(document.getElementsByClassName+"").indexOf("[native code]")},supportsSelectionModify:function(){return"getSelection"in window&&"modify"in window.getSelection()},needsSpaceAfterLineBreak:function(){return i},supportsSpeechApiOn:function(a){var b=d.match(/Chrome\/(\d+)/)||[void 0,0];return b[1]>=11&&("onwebkitspeechchange"in a||"speech"in a)},crashesWhenDefineProperty:function(a){return c(9)&&("XMLHttpRequest"===a||"XDomainRequest"===a)},doesAsyncFocus:function(){return c()},hasProblemsSettingCaretAfterImg:function(){return c()},hasUndoInContextMenu:function(){return f||h||i},hasInsertNodeIssue:function(){return i},hasIframeFocusIssue:function(){return c()},createsNestedInvalidMarkupAfterPaste:function(){return g},supportsMutationEvents:function(){return"MutationEvent"in window},supportsModenPaste:function(){return!("clipboardData"in window)}}}(),wysihtml5.lang.array=function(a){return{contains:function(b){if(Array.isArray(b)){for(var c=b.length;c--;)if(-1!==wysihtml5.lang.array(a).indexOf(b[c]))return!0;return!1}return-1!==wysihtml5.lang.array(a).indexOf(b)},indexOf:function(b){if(a.indexOf)return a.indexOf(b);for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},without:function(b){b=wysihtml5.lang.array(b);for(var c=[],d=0,e=a.length;e>d;d++)b.contains(a[d])||c.push(a[d]);return c},get:function(){for(var b=0,c=a.length,d=[];c>b;b++)d.push(a[b]);return d},map:function(b,c){if(Array.prototype.map)return a.map(b,c);for(var d=a.length>>>0,e=Array(d),f=0;d>f;f++)e[f]=b.call(c,a[f],f,a);return e},unique:function(){for(var b=[],c=a.length,d=0;c>d;)wysihtml5.lang.array(b).contains(a[d])||b.push(a[d]),d++;return b}}},wysihtml5.lang.Dispatcher=Base.extend({on:function(a,b){return this.events=this.events||{},this.events[a]=this.events[a]||[],this.events[a].push(b),this},off:function(a,b){this.events=this.events||{};var c,d,e=0;if(a){for(c=this.events[a]||[],d=[];e<c.length;e++)c[e]!==b&&b&&d.push(c[e]);this.events[a]=d}else this.events={};return this},fire:function(a,b){this.events=this.events||{};for(var c=this.events[a]||[],d=0;d<c.length;d++)c[d].call(this,b);return this},observe:function(){return this.on.apply(this,arguments)},stopObserving:function(){return this.off.apply(this,arguments)}}),wysihtml5.lang.object=function(a){return{merge:function(b){for(var c in b)a[c]=b[c];return this},get:function(){return a},clone:function(b){var c,d={};if(null===a||!wysihtml5.lang.object(a).isPlainObject())return a;for(c in a)a.hasOwnProperty(c)&&(d[c]=b?wysihtml5.lang.object(a[c]).clone(b):a[c]);return d},isArray:function(){return"[object Array]"===Object.prototype.toString.call(a)},isFunction:function(){return"[object Function]"===Object.prototype.toString.call(a)},isPlainObject:function(){return"[object Object]"===Object.prototype.toString.call(a)}}},function(){var a=/^\s+/,b=/\s+$/,c=/[&<>\t"]/g,d={"&":"&","<":"<",">":">",'"':"""," ":" "};wysihtml5.lang.string=function(e){return e+="",{trim:function(){return e.replace(a,"").replace(b,"")},interpolate:function(a){for(var b in a)e=this.replace("#{"+b+"}").by(a[b]);return e},replace:function(a){return{by:function(b){return e.split(a).join(b)}}},escapeHTML:function(a,b){var f=e.replace(c,function(a){return d[a]});return a&&(f=f.replace(/(?:\r\n|\r|\n)/g,"<br />")),b&&(f=f.replace(/ /gi," ")),f}}}}(),function(a){function b(a,b){return f(a,b)?a:(a===a.ownerDocument.documentElement&&(a=a.ownerDocument.body),g(a,b))}function c(a){return a.replace(i,function(a,b){var c,d,e=(b.match(j)||[])[1]||"",f=l[e];return b=b.replace(j,""),b.split(f).length>b.split(e).length&&(b+=e,e=""),c=b,d=b,b.length>k&&(d=d.substr(0,k)+"..."),"www."===c.substr(0,4)&&(c="http://"+c),'<a href="'+c+'">'+d+"</a>"+e})}function d(a){var b=a._wysihtml5_tempElement;return b||(b=a._wysihtml5_tempElement=a.createElement("div")),b}function e(b){var e=b.parentNode,f=a.lang.string(b.data).escapeHTML(),g=d(e.ownerDocument);for(g.innerHTML="<span></span>"+c(f),g.removeChild(g.firstChild);g.firstChild;)e.insertBefore(g.firstChild,b);e.removeChild(b)}function f(b,c){for(var d;b.parentNode;){if(b=b.parentNode,d=b.nodeName,b.className&&a.lang.array(b.className.split(" ")).contains(c))return!0;if(h.contains(d))return!0;if("body"===d)return!1}return!1}function g(b,c){if(!(h.contains(b.nodeName)||b.className&&a.lang.array(b.className.split(" ")).contains(c))){if(b.nodeType===a.TEXT_NODE&&b.data.match(i))return e(b),void 0;for(var d=a.lang.array(b.childNodes).get(),f=d.length,j=0;f>j;j++)g(d[j],c);return b}}var h=a.lang.array(["CODE","PRE","A","SCRIPT","HEAD","TITLE","STYLE"]),i=/((https?:\/\/|www\.)[^\s<]{3,})/gi,j=/([^\w\/\-](,?))$/i,k=100,l={")":"(","]":"[","}":"{"};a.dom.autoLink=b,a.dom.autoLink.URL_REG_EXP=i}(wysihtml5),function(a){var b=a.dom;b.addClass=function(a,c){var d=a.classList;return d?d.add(c):(b.hasClass(a,c)||(a.className+=" "+c),void 0)},b.removeClass=function(a,b){var c=a.classList;return c?c.remove(b):(a.className=a.className.replace(RegExp("(^|\\s+)"+b+"(\\s+|$)")," "),void 0)},b.hasClass=function(a,b){var c,d=a.classList;return d?d.contains(b):(c=a.className,c.length>0&&(c==b||RegExp("(^|\\s)"+b+"(\\s|$)").test(c)))}}(wysihtml5),wysihtml5.dom.contains=function(){var a=document.documentElement;return a.contains?function(a,b){return b.nodeType!==wysihtml5.ELEMENT_NODE&&(b=b.parentNode),a!==b&&a.contains(b)}:a.compareDocumentPosition?function(a,b){return!!(16&a.compareDocumentPosition(b))}:void 0}(),wysihtml5.dom.convertToList=function(){function a(a,b){var c=a.createElement("li");return b.appendChild(c),c}function b(a,b){return a.createElement(b)}function c(c,d,e){if("UL"===c.nodeName||"OL"===c.nodeName||"MENU"===c.nodeName)return c;var f,g,h,i,j,k,l,m,n,o=c.ownerDocument,p=b(o,d),q=c.querySelectorAll("br"),r=q.length;for(n=0;r>n;n++)for(i=q[n];(j=i.parentNode)&&j!==c&&j.lastChild===i;){if("block"===wysihtml5.dom.getStyle("display").from(j)){j.removeChild(i);break}wysihtml5.dom.insert(i).after(i.parentNode)}for(f=wysihtml5.lang.array(c.childNodes).get(),g=f.length,n=0;g>n;n++)m=m||a(o,p),h=f[n],k="block"===wysihtml5.dom.getStyle("display").from(h),l="BR"===h.nodeName,!k||e&&wysihtml5.dom.hasClass(h,e)?l?m=m.firstChild?null:m:m.appendChild(h):(m=m.firstChild?a(o,p):m,m.appendChild(h),m=null);return 0===f.length&&a(o,p),c.parentNode.replaceChild(p,c),p}return c}(),wysihtml5.dom.copyAttributes=function(a){return{from:function(b){return{to:function(c){for(var d,e=0,f=a.length;f>e;e++)d=a[e],void 0!==b[d]&&""!==b[d]&&(c[d]=b[d]);return{andTo:arguments.callee}}}}}},function(a){var b=["-webkit-box-sizing","-moz-box-sizing","-ms-box-sizing","box-sizing"],c=function(b){return d(b)?parseInt(a.getStyle("width").from(b),10)<b.offsetWidth:!1},d=function(c){for(var d=0,e=b.length;e>d;d++)if("border-box"===a.getStyle(b[d]).from(c))return b[d]};a.copyStyles=function(d){return{from:function(e){c(e)&&(d=wysihtml5.lang.array(d).without(b));for(var f,g="",h=d.length,i=0;h>i;i++)f=d[i],g+=f+":"+a.getStyle(f).from(e)+";";return{to:function(b){return a.setStyles(g).on(b),{andTo:arguments.callee}}}}}}}(wysihtml5.dom),function(a){a.dom.delegate=function(b,c,d,e){return a.dom.observe(b,d,function(d){for(var f=d.target,g=a.lang.array(b.querySelectorAll(c));f&&f!==b;){if(g.contains(f)){e.call(f,d);break}f=f.parentNode}})}}(wysihtml5),function(a){a.dom.domNode=function(b){var c=[a.ELEMENT_NODE,a.TEXT_NODE],d=function(b){return b.nodeType===a.TEXT_NODE&&/^\s*$/g.test(b.data)};return{prev:function(e){var f=b.previousSibling,g=e&&e.nodeTypes?e.nodeTypes:c;return f?!a.lang.array(g).contains(f.nodeType)||e&&e.ignoreBlankTexts&&d(f)?a.dom.domNode(f).prev(e):f:null},next:function(e){var f=b.nextSibling,g=e&&e.nodeTypes?e.nodeTypes:c;return f?!a.lang.array(g).contains(f.nodeType)||e&&e.ignoreBlankTexts&&d(f)?a.dom.domNode(f).next(e):f:null}}}}(wysihtml5),wysihtml5.dom.getAsDom=function(){var a=function(a,b){var c=b.createElement("div");c.style.display="none",b.body.appendChild(c);try{c.innerHTML=a}catch(d){}return b.body.removeChild(c),c},b=function(a){if(!a._wysihtml5_supportsHTML5Tags){for(var b=0,d=c.length;d>b;b++)a.createElement(c[b]);a._wysihtml5_supportsHTML5Tags=!0}},c=["abbr","article","aside","audio","bdi","canvas","command","datalist","details","figcaption","figure","footer","header","hgroup","keygen","mark","meter","nav","output","progress","rp","rt","ruby","svg","section","source","summary","time","track","video","wbr"];return function(c,d){d=d||document;var e;return"object"==typeof c&&c.nodeType?(e=d.createElement("div"),e.appendChild(c)):wysihtml5.browser.supportsHTML5Tags(d)?(e=d.createElement("div"),e.innerHTML=c):(b(d),e=a(c,d)),e}}(),wysihtml5.dom.getParentElement=function(){function a(a,b){return b&&b.length?"string"==typeof b?a===b:wysihtml5.lang.array(b).contains(a):!0}function b(a){return a.nodeType===wysihtml5.ELEMENT_NODE}function c(a,b,c){var d=(a.className||"").match(c)||[];return b?d[d.length-1]===b:!!d.length}function d(a,b,c){var d=(a.getAttribute("style")||"").match(c)||[];return b?d[d.length-1]===b:!!d.length}return function(e,f,g,h){var i=f.cssStyle||f.styleRegExp,j=f.className||f.classRegExp;for(g=g||50;g--&&e&&"BODY"!==e.nodeName&&(!h||e!==h);){if(b(e)&&a(e.nodeName,f.nodeName)&&(!i||d(e,f.cssStyle,f.styleRegExp))&&(!j||c(e,f.className,f.classRegExp)))return e;e=e.parentNode}return null}}(),wysihtml5.dom.getStyle=function(){function a(a){return a.replace(c,function(a){return a.charAt(1).toUpperCase() })}var b={"float":"styleFloat"in document.createElement("div").style?"styleFloat":"cssFloat"},c=/\-[a-z]/g;return function(c){return{from:function(d){var e,f,g,h,i,j,k,l,m;if(d.nodeType===wysihtml5.ELEMENT_NODE){if(e=d.ownerDocument,f=b[c]||a(c),g=d.style,h=d.currentStyle,i=g[f],i)return i;if(h)try{return h[f]}catch(n){}return j=e.defaultView||e.parentWindow,k=("height"===c||"width"===c)&&"TEXTAREA"===d.nodeName,j.getComputedStyle?(k&&(l=g.overflow,g.overflow="hidden"),m=j.getComputedStyle(d,null).getPropertyValue(c),k&&(g.overflow=l||""),m):void 0}}}}}(),wysihtml5.dom.getTextNodes=function(a,b){var c=[];for(a=a.firstChild;a;a=a.nextSibling)3==a.nodeType?b&&/^\s*$/.test(a.innerText||a.textContent)||c.push(a):c=c.concat(wysihtml5.dom.getTextNodes(a,b));return c},wysihtml5.dom.hasElementWithTagName=function(){function a(a){return a._wysihtml5_identifier||(a._wysihtml5_identifier=c++)}var b={},c=1;return function(c,d){var e=a(c)+":"+d,f=b[e];return f||(f=b[e]=c.getElementsByTagName(d)),f.length>0}}(),function(a){function b(a){return a._wysihtml5_identifier||(a._wysihtml5_identifier=d++)}var c={},d=1;a.dom.hasElementWithClassName=function(d,e){if(!a.browser.supportsNativeGetElementsByClassName())return!!d.querySelector("."+e);var f=b(d)+":"+e,g=c[f];return g||(g=c[f]=d.getElementsByClassName(e)),g.length>0}}(wysihtml5),wysihtml5.dom.insert=function(a){return{after:function(b){b.parentNode.insertBefore(a,b.nextSibling)},before:function(b){b.parentNode.insertBefore(a,b)},into:function(b){b.appendChild(a)}}},wysihtml5.dom.insertCSS=function(a){return a=a.join("\n"),{into:function(b){var c,d,e=b.createElement("style");return e.type="text/css",e.styleSheet?e.styleSheet.cssText=a:e.appendChild(b.createTextNode(a)),c=b.querySelector("head link"),c?(c.parentNode.insertBefore(e,c),void 0):(d=b.querySelector("head"),d&&d.appendChild(e),void 0)}}},function(a){a.dom.lineBreaks=function(b){function c(a){return"BR"===a.nodeName}function d(b){return c(b)?!0:"block"===a.dom.getStyle("display").from(b)?!0:!1}return{add:function(){var c=b.ownerDocument,e=a.dom.domNode(b).next({ignoreBlankTexts:!0}),f=a.dom.domNode(b).prev({ignoreBlankTexts:!0});e&&!d(e)&&a.dom.insert(c.createElement("br")).after(b),f&&!d(f)&&a.dom.insert(c.createElement("br")).before(b)},remove:function(){var d=a.dom.domNode(b).next({ignoreBlankTexts:!0}),e=a.dom.domNode(b).prev({ignoreBlankTexts:!0});d&&c(d)&&d.parentNode.removeChild(d),e&&c(e)&&e.parentNode.removeChild(e)}}}}(wysihtml5),wysihtml5.dom.observe=function(a,b,c){b="string"==typeof b?[b]:b;for(var d,e,f=0,g=b.length;g>f;f++)e=b[f],a.addEventListener?a.addEventListener(e,c,!1):(d=function(b){"target"in b||(b.target=b.srcElement),b.preventDefault=b.preventDefault||function(){this.returnValue=!1},b.stopPropagation=b.stopPropagation||function(){this.cancelBubble=!0},c.call(a,b)},a.attachEvent("on"+e,d));return{stop:function(){for(var e,f=0,g=b.length;g>f;f++)e=b[f],a.removeEventListener?a.removeEventListener(e,c,!1):a.detachEvent("on"+e,d)}}},wysihtml5.dom.parse=function(a,b){function c(a,b){var c,f,g,h,i,j,k,l,m;for(wysihtml5.lang.object(t).merge(s).merge(b.rules).get(),c=b.context||a.ownerDocument||document,f=c.createDocumentFragment(),g="string"==typeof a,h=!1,b.clearInternals===!0&&(h=!0),i=g?wysihtml5.dom.getAsDom(a,c):a,t.selectors&&e(i,t.selectors);i.firstChild;)k=i.firstChild,j=d(k,b.cleanUp,h,b.uneditableClass),j&&f.appendChild(j),k!==j&&i.removeChild(k);if(b.unjoinNbsps)for(l=wysihtml5.dom.getTextNodes(f),m=l.length;m--;)l[m].nodeValue=l[m].nodeValue.replace(/([\S\u00A0])\u00A0/gi,"$1 ");return i.innerHTML="",i.appendChild(f),g?wysihtml5.quirks.getCorrectInnerHTML(i):i}function d(a,b,c,e){var f,g,h,i=a.nodeType,j=a.childNodes,k=j.length,l=p[i],m=0;if(e&&1===i&&wysihtml5.dom.hasClass(a,e))return a;if(g=l&&l(a,c),!g){if(g===!1){for(f=a.ownerDocument.createDocumentFragment(),m=k;m--;)j[m]&&(h=d(j[m],b,c,e),h&&(j[m]===h&&m--,f.insertBefore(h,f.firstChild)));return"block"===wysihtml5.dom.getStyle("display").from(a)&&f.appendChild(a.ownerDocument.createElement("br")),wysihtml5.lang.array(["div","pre","p","table","td","th","ul","ol","li","dd","dl","footer","header","section","h1","h2","h3","h4","h5","h6"]).contains(a.nodeName.toLowerCase())&&a.parentNode.lastChild!==a&&(a.nextSibling&&3===a.nextSibling.nodeType&&/^\s/.test(a.nextSibling.nodeValue)||f.appendChild(a.ownerDocument.createTextNode(" "))),f.normalize&&f.normalize(),f}return null}for(m=0;k>m;m++)j[m]&&(h=d(j[m],b,c,e),h&&(j[m]===h&&m--,g.appendChild(h)));if(b&&g.nodeName.toLowerCase()===q&&(!g.childNodes.length||/^\s*$/gi.test(g.innerHTML)&&(c||"_wysihtml5-temp-placeholder"!==a.className&&"rangySelectionBoundary"!==a.className)||!g.attributes.length)){for(f=g.ownerDocument.createDocumentFragment();g.firstChild;)f.appendChild(g.firstChild);return f.normalize&&f.normalize(),f}return g.normalize&&g.normalize(),g}function e(a,b){var c,d,e,f;for(c in b)if(b.hasOwnProperty(c))for(wysihtml5.lang.object(b[c]).isFunction()?d=b[c]:"string"==typeof b[c]&&z[b[c]]&&(d=z[b[c]]),e=a.querySelectorAll(c),f=e.length;f--;)d(e[f])}function f(a,b){var c,d,e,f=t.tags,h=a.nodeName.toLowerCase(),j=a.scopeName;if(a._wysihtml5)return null;if(a._wysihtml5=1,"wysihtml5-temp"===a.className)return null;if(j&&"HTML"!=j&&(h=j+":"+h),"outerHTML"in a&&(wysihtml5.browser.autoClosesUnclosedTags()||"P"!==a.nodeName||"</p>"===a.outerHTML.slice(-4).toLowerCase()||(h="div")),h in f){if(c=f[h],!c||c.remove)return null;if(c.unwrap)return!1;c="string"==typeof c?{rename_tag:c}:c}else{if(!a.firstChild)return null;c={rename_tag:q}}if(c.one_of_type&&!g(a,t,c.one_of_type,b)){if(!c.remove_action)return null;if("unwrap"===c.remove_action)return!1;if("rename"!==c.remove_action)return null;e=c.remove_action_rename_to||q}return d=a.ownerDocument.createElement(e||c.rename_tag||h),m(a,d,c,b),i(a,d,c),a=null,d.normalize&&d.normalize(),d}function g(a,b,c,d){var e,f;if("SPAN"===a.nodeName&&!d&&("_wysihtml5-temp-placeholder"===a.className||"rangySelectionBoundary"===a.className))return!0;for(f in c)if(c.hasOwnProperty(f)&&b.type_definitions&&b.type_definitions[f]&&(e=b.type_definitions[f],h(a,e)))return!0;return!1}function h(a,b){var c,d,e,f,g,h,i,j,k=a.getAttribute("class"),l=a.getAttribute("style");if(b.methods)for(h in b.methods)if(b.methods.hasOwnProperty(h)&&y[h]&&y[h](a))return!0;if(k&&b.classes)for(k=k.replace(/^\s+/g,"").replace(/\s+$/g,"").split(r),c=k.length,i=0;c>i;i++)if(b.classes[k[i]])return!0;if(l&&b.styles){l=l.split(";");for(d in b.styles)if(b.styles.hasOwnProperty(d))for(j=l.length;j--;)if(g=l[j].split(":"),g[0].replace(/\s/g,"").toLowerCase()===d&&(b.styles[d]===!0||1===b.styles[d]||wysihtml5.lang.array(b.styles[d]).contains(g[1].replace(/\s/g,"").toLowerCase())))return!0}if(b.attrs)for(e in b.attrs)if(b.attrs.hasOwnProperty(e)&&(f=wysihtml5.dom.getAttribute(a,e),"string"==typeof f&&f.search(b.attrs[e])>-1))return!0;return!1}function i(a,b,c){var d,e;if(c&&c.keep_styles)for(d in c.keep_styles)if(c.keep_styles.hasOwnProperty(d)){if(e="float"===d?a.style.styleFloat||a.style.cssFloat:a.style[d],c.keep_styles[d]instanceof RegExp&&!c.keep_styles[d].test(e))continue;"float"===d?b.style[a.style.styleFloat?"styleFloat":"cssFloat"]=e:a.style[d]&&(b.style[d]=e)}}function j(a,b){var c,d=[];for(c in b)b.hasOwnProperty(c)&&0===c.indexOf(a)&&d.push(c);return d}function k(a,b,c,d){var e,f=v[c];return f&&(b||"alt"===a&&"IMG"==d)&&(e=f(b),"string"==typeof e)?e:!1}function l(a,b){var c,d,e,f,g,h=wysihtml5.lang.object(t.attributes||{}).clone(),i=wysihtml5.lang.object(h).merge(wysihtml5.lang.object(b||{}).clone()).get(),l={},m=wysihtml5.dom.getAttributes(a);for(c in i)if(/\*$/.test(c))for(e=j(c.slice(0,-1),m),f=0,g=e.length;g>f;f++)d=k(e[f],m[e[f]],i[c],a.nodeName),d!==!1&&(l[e[f]]=d);else d=k(c,m[c],i[c],a.nodeName),d!==!1&&(l[c]=d);return l}function m(a,b,c,d){var e,f,g,h,i,j={},k=c.set_class,m=c.add_class,n=c.add_style,o=c.set_attributes,p=t.classes,q=0,s=[],u=[],v=[],y=[];if(o&&(j=wysihtml5.lang.object(o).clone()),j=wysihtml5.lang.object(j).merge(l(a,c.check_attributes)).get(),k&&s.push(k),m)for(h in m)i=x[m[h]],i&&(g=i(wysihtml5.dom.getAttribute(a,h)),"string"==typeof g&&s.push(g));if(n)for(h in n)i=w[n[h]],i&&(newStyle=i(wysihtml5.dom.getAttribute(a,h)),"string"==typeof newStyle&&u.push(newStyle));if("string"==typeof p&&"any"===p&&a.getAttribute("class"))if(t.classes_blacklist){for(y=a.getAttribute("class"),y&&(s=s.concat(y.split(r))),e=s.length;e>q;q++)f=s[q],t.classes_blacklist[f]||v.push(f);v.length&&(j["class"]=wysihtml5.lang.array(v).unique().join(" "))}else j["class"]=a.getAttribute("class");else{for(d||(p["_wysihtml5-temp-placeholder"]=1,p._rangySelectionBoundary=1,p["wysiwyg-tmp-selected-cell"]=1),y=a.getAttribute("class"),y&&(s=s.concat(y.split(r))),e=s.length;e>q;q++)f=s[q],p[f]&&v.push(f);v.length&&(j["class"]=wysihtml5.lang.array(v).unique().join(" "))}j["class"]&&d&&(j["class"]=j["class"].replace("wysiwyg-tmp-selected-cell",""),/^\s*$/g.test(j["class"])&&delete j["class"]),u.length&&(j.style=wysihtml5.lang.array(u).unique().join(" "));for(h in j)try{b.setAttribute(h,j[h])}catch(z){}j.src&&(void 0!==j.width&&b.setAttribute("width",j.width),void 0!==j.height&&b.setAttribute("height",j.height))}function n(a){var b,c=a.nextSibling;return c&&c.nodeType===wysihtml5.TEXT_NODE?(c.data=a.data.replace(u,"")+c.data.replace(u,""),void 0):(b=a.data.replace(u,""),a.ownerDocument.createTextNode(b))}function o(a){return t.comments?a.ownerDocument.createComment(a.nodeValue):void 0}var p={1:f,3:n,8:o},q="span",r=/\s+/,s={tags:{},classes:{}},t={},u=/\uFEFF/g,v={url:function(){var a=/^https?:\/\//i;return function(b){return b&&b.match(a)?b.replace(a,function(a){return a.toLowerCase()}):null}}(),src:function(){var a=/^(\/|https?:\/\/)/i;return function(b){return b&&b.match(a)?b.replace(a,function(a){return a.toLowerCase()}):null}}(),href:function(){var a=/^(#|\/|https?:\/\/|mailto:)/i;return function(b){return b&&b.match(a)?b.replace(a,function(a){return a.toLowerCase()}):null}}(),alt:function(){var a=/[^ a-z0-9_\-]/gi;return function(b){return b?b.replace(a,""):""}}(),numbers:function(){var a=/\D/g;return function(b){return b=(b||"").replace(a,""),b||null}}(),any:function(){return function(a){return a}}()},w={align_text:function(){var a={left:"text-align: left;",right:"text-align: right;",center:"text-align: center;"};return function(b){return a[(b+"").toLowerCase()]}}()},x={align_img:function(){var a={left:"wysiwyg-float-left",right:"wysiwyg-float-right"};return function(b){return a[(b+"").toLowerCase()]}}(),align_text:function(){var a={left:"wysiwyg-text-align-left",right:"wysiwyg-text-align-right",center:"wysiwyg-text-align-center",justify:"wysiwyg-text-align-justify"};return function(b){return a[(b+"").toLowerCase()]}}(),clear_br:function(){var a={left:"wysiwyg-clear-left",right:"wysiwyg-clear-right",both:"wysiwyg-clear-both",all:"wysiwyg-clear-both"};return function(b){return a[(b+"").toLowerCase()]}}(),size_font:function(){var a={1:"wysiwyg-font-size-xx-small",2:"wysiwyg-font-size-small",3:"wysiwyg-font-size-medium",4:"wysiwyg-font-size-large",5:"wysiwyg-font-size-x-large",6:"wysiwyg-font-size-xx-large",7:"wysiwyg-font-size-xx-large","-":"wysiwyg-font-size-smaller","+":"wysiwyg-font-size-larger"};return function(b){return a[(b+"").charAt(0)]}}()},y={has_visible_contet:function(){var a,b=["img","video","picture","br","script","noscript","style","table","iframe","object","embed","audio","svg","input","button","select","textarea","canvas"];return function(c){if(a=(c.innerText||c.textContent).replace(/\s/g,""),a&&a.length>0)return!0;for(var d=b.length;d--;)if(c.querySelector(b[d]))return!0;return c.offsetWidth&&c.offsetWidth>0&&c.offsetHeight&&c.offsetHeight>0?!0:!1}}()},z={unwrap:function(a){wysihtml5.dom.unwrap(a)},remove:function(a){a.parentNode.removeChild(a)}};return c(a,b)},wysihtml5.dom.removeEmptyTextNodes=function(a){for(var b,c=wysihtml5.lang.array(a.childNodes).get(),d=c.length,e=0;d>e;e++)b=c[e],b.nodeType===wysihtml5.TEXT_NODE&&""===b.data&&b.parentNode.removeChild(b)},wysihtml5.dom.renameElement=function(a,b){for(var c,d=a.ownerDocument.createElement(b);c=a.firstChild;)d.appendChild(c);return wysihtml5.dom.copyAttributes(["align","className"]).from(a).to(d),a.parentNode.replaceChild(d,a),d},wysihtml5.dom.replaceWithChildNodes=function(a){if(a.parentNode){if(!a.firstChild)return a.parentNode.removeChild(a),void 0;for(var b=a.ownerDocument.createDocumentFragment();a.firstChild;)b.appendChild(a.firstChild);a.parentNode.replaceChild(b,a),a=b=null}},function(a){function b(b){return"block"===a.getStyle("display").from(b)}function c(a){return"BR"===a.nodeName}function d(a){var b=a.ownerDocument.createElement("br");a.appendChild(b)}function e(a,e){if(a.nodeName.match(/^(MENU|UL|OL)$/)){var f,g,h,i,j,k,l=a.ownerDocument,m=l.createDocumentFragment(),n=wysihtml5.dom.domNode(a).prev({ignoreBlankTexts:!0});if(e)for(!n||b(n)||c(n)||d(m);k=a.firstElementChild||a.firstChild;){for(g=k.lastChild;f=k.firstChild;)h=f===g,i=h&&!b(f)&&!c(f),m.appendChild(f),i&&d(m);k.parentNode.removeChild(k)}else for(;k=a.firstElementChild||a.firstChild;){if(k.querySelector&&k.querySelector("div, p, ul, ol, menu, blockquote, h1, h2, h3, h4, h5, h6"))for(;f=k.firstChild;)m.appendChild(f);else{for(j=l.createElement("p");f=k.firstChild;)j.appendChild(f);m.appendChild(j)}k.parentNode.removeChild(k)}a.parentNode.replaceChild(m,a)}}a.resolveList=e}(wysihtml5.dom),function(a){var b=document,c=["parent","top","opener","frameElement","frames","localStorage","globalStorage","sessionStorage","indexedDB"],d=["open","close","openDialog","showModalDialog","alert","confirm","prompt","openDatabase","postMessage","XMLHttpRequest","XDomainRequest"],e=["referrer","write","open","close"];a.dom.Sandbox=Base.extend({constructor:function(b,c){this.callback=b||a.EMPTY_FUNCTION,this.config=a.lang.object({}).merge(c).get(),this.editableArea=this._createIframe()},insertInto:function(a){"string"==typeof a&&(a=b.getElementById(a)),a.appendChild(this.editableArea)},getIframe:function(){return this.editableArea},getWindow:function(){this._readyError()},getDocument:function(){this._readyError()},destroy:function(){var a=this.getIframe();a.parentNode.removeChild(a)},_readyError:function(){throw Error("wysihtml5.Sandbox: Sandbox iframe isn't loaded yet")},_createIframe:function(){var c=this,d=b.createElement("iframe");return d.className="wysihtml5-sandbox",a.dom.setAttributes({security:"restricted",allowtransparency:"true",frameborder:0,width:0,height:0,marginwidth:0,marginheight:0}).on(d),a.browser.throwsMixedContentWarningWhenIframeSrcIsEmpty()&&(d.src="javascript:'<html></html>'"),d.onload=function(){d.onreadystatechange=d.onload=null,c._onLoadIframe(d)},d.onreadystatechange=function(){/loaded|complete/.test(d.readyState)&&(d.onreadystatechange=d.onload=null,c._onLoadIframe(d))},d},_onLoadIframe:function(f){var g,h,i,j,k,l,m;if(a.dom.contains(b.documentElement,f)){if(g=this,h=f.contentWindow,i=f.contentWindow.document,j=b.characterSet||b.charset||"utf-8",k=this._getHtml({charset:j,stylesheets:this.config.stylesheets}),i.open("text/html","replace"),i.write(k),i.close(),this.getWindow=function(){return f.contentWindow},this.getDocument=function(){return f.contentWindow.document},h.onerror=function(a,b,c){throw Error("wysihtml5.Sandbox: "+a,b,c)},!a.browser.supportsSandboxedIframes()){for(l=0,m=c.length;m>l;l++)this._unset(h,c[l]);for(l=0,m=d.length;m>l;l++)this._unset(h,d[l],a.EMPTY_FUNCTION);for(l=0,m=e.length;m>l;l++)this._unset(i,e[l]);this._unset(i,"cookie","",!0)}this.loaded=!0,setTimeout(function(){g.callback(g)},0)}},_getHtml:function(b){var c,d=b.stylesheets,e="",f=0;if(d="string"==typeof d?[d]:d,d)for(c=d.length;c>f;f++)e+='<link rel="stylesheet" href="'+d[f]+'">';return b.stylesheets=e,a.lang.string('<!DOCTYPE html><html><head><meta charset="#{charset}">#{stylesheets}</head><body></body></html>').interpolate(b)},_unset:function(b,c,d,e){try{b[c]=d}catch(f){}try{b.__defineGetter__(c,function(){return d})}catch(f){}if(e)try{b.__defineSetter__(c,function(){})}catch(f){}if(!a.browser.crashesWhenDefineProperty(c))try{var g={get:function(){return d}};e&&(g.set=function(){}),Object.defineProperty(b,c,g)}catch(f){}}})}(wysihtml5),function(a){var b=document;a.dom.ContentEditableArea=Base.extend({getContentEditable:function(){return this.element},getWindow:function(){return this.element.ownerDocument.defaultView},getDocument:function(){return this.element.ownerDocument},constructor:function(b,c,d){this.callback=b||a.EMPTY_FUNCTION,this.config=a.lang.object({}).merge(c).get(),this.element=d?this._bindElement(d):this._createElement()},_createElement:function(){var a=b.createElement("div");return a.className="wysihtml5-sandbox",this._loadElement(a),a},_bindElement:function(a){return a.className=a.className&&""!=a.className?a.className+" wysihtml5-sandbox":"wysihtml5-sandbox",this._loadElement(a,!0),a},_loadElement:function(a,b){var c,d=this;b||(c=this._getHtml(),a.innerHTML=c),this.getWindow=function(){return a.ownerDocument.defaultView},this.getDocument=function(){return a.ownerDocument},this.loaded=!0,setTimeout(function(){d.callback(d)},0)},_getHtml:function(){return""}})}(wysihtml5),function(){var a={className:"class"};wysihtml5.dom.setAttributes=function(b){return{on:function(c){for(var d in b)c.setAttribute(a[d]||d,b[d])}}}}(),wysihtml5.dom.setStyles=function(a){return{on:function(b){var c,d=b.style;if("string"==typeof a)return d.cssText+=";"+a,void 0;for(c in a)"float"===c?(d.cssFloat=a[c],d.styleFloat=a[c]):d[c]=a[c]}}},function(a){a.simulatePlaceholder=function(b,c,d){var e="placeholder",f=function(){var b=c.element.offsetWidth>0&&c.element.offsetHeight>0;c.hasPlaceholderSet()&&(c.clear(),c.element.focus(),b&&setTimeout(function(){var a=c.selection.getSelection();a.focusNode&&a.anchorNode||c.selection.selectNode(c.element.firstChild||c.element)},0)),c.placeholderSet=!1,a.removeClass(c.element,e)},g=function(){c.isEmpty()&&(c.placeholderSet=!0,c.setValue(d),a.addClass(c.element,e))};b.on("set_placeholder",g).on("unset_placeholder",f).on("focus:composer",f).on("paste:composer",f).on("blur:composer",g),g()}}(wysihtml5.dom),function(a){var b=document.documentElement;"textContent"in b?(a.setTextContent=function(a,b){a.textContent=b},a.getTextContent=function(a){return a.textContent}):"innerText"in b?(a.setTextContent=function(a,b){a.innerText=b},a.getTextContent=function(a){return a.innerText}):(a.setTextContent=function(a,b){a.nodeValue=b},a.getTextContent=function(a){return a.nodeValue})}(wysihtml5.dom),wysihtml5.dom.getAttribute=function(a,b){var c,d,e,f=!wysihtml5.browser.supportsGetAttributeCorrectly();return b=b.toLowerCase(),c=a.nodeName,"IMG"==c&&"src"==b&&wysihtml5.dom.isLoadedImage(a)===!0?a.src:f&&"outerHTML"in a?(d=a.outerHTML.toLowerCase(),e=-1!=d.indexOf(" "+b+"="),e?a.getAttribute(b):null):a.getAttribute(b)},wysihtml5.dom.getAttributes=function(a){var b,c=!wysihtml5.browser.supportsGetAttributeCorrectly(),d=a.nodeName,e=[];for(b in a.attributes)(a.attributes.hasOwnProperty&&a.attributes.hasOwnProperty(b)||!a.attributes.hasOwnProperty&&Object.prototype.hasOwnProperty.call(a.attributes,b))&&a.attributes[b].specified&&("IMG"==d&&"src"==a.attributes[b].name.toLowerCase()&&wysihtml5.dom.isLoadedImage(a)===!0?e.src=a.src:wysihtml5.lang.array(["rowspan","colspan"]).contains(a.attributes[b].name.toLowerCase())&&c?1!==a.attributes[b].value&&(e[a.attributes[b].name]=a.attributes[b].value):e[a.attributes[b].name]=a.attributes[b].value);return e},wysihtml5.dom.isLoadedImage=function(a){try{return a.complete&&!a.mozMatchesSelector(":-moz-broken")}catch(b){if(a.complete&&"complete"===a.readyState)return!0}},function(a){function b(a,b){var c,d,e,f,g=[];for(d=0,e=a.length;e>d;d++)if(c=a[d].querySelectorAll(b),c)for(f=c.length;f--;g.unshift(c[f]));return g}function d(a){a.parentNode.removeChild(a)}function e(a,b){a.parentNode.insertBefore(b,a.nextSibling)}function f(a,b){for(var c=a.nextSibling;1!=c.nodeType;)if(c=c.nextSibling,!b||b==c.tagName.toLowerCase())return c;return null}var g=a.dom,h=function(a){this.el=a,this.isColspan=!1,this.isRowspan=!1,this.firstCol=!0,this.lastCol=!0,this.firstRow=!0,this.lastRow=!0,this.isReal=!0,this.spanCollection=[],this.modified=!1},i=function(a,b){a?(this.cell=a,this.table=g.getParentElement(a,{nodeName:["TABLE"]})):b&&(this.table=b,this.cell=this.table.querySelectorAll("th, td")[0])};i.prototype={addSpannedCellToMap:function(a,b,c,d,e,f){var g,i,j=[],k=c+(f?parseInt(f,10)-1:0),l=d+(e?parseInt(e,10)-1:0);for(g=c;k>=g;g++)for(void 0===b[g]&&(b[g]=[]),i=d;l>=i;i++)b[g][i]=new h(a),b[g][i].isColspan=e&&parseInt(e,10)>1,b[g][i].isRowspan=f&&parseInt(f,10)>1,b[g][i].firstCol=i==d,b[g][i].lastCol=i==l,b[g][i].firstRow=g==c,b[g][i].lastRow=g==k,b[g][i].isReal=i==d&&g==c,b[g][i].spanCollection=j,j.push(b[g][i])},setCellAsModified:function(a){if(a.modified=!0,a.spanCollection.length>0)for(var b=0,c=a.spanCollection.length;c>b;b++)a.spanCollection[b].modified=!0},setTableMap:function(){var a,b,c,d,e,f,i,j,k=[],l=this.getTableRows();for(a=0;a<l.length;a++)for(b=l[a],c=this.getRowCells(b),f=0,void 0===k[a]&&(k[a]=[]),d=0;d<c.length;d++){for(e=c[d];void 0!==k[a][f];)f++;i=g.getAttribute(e,"colspan"),j=g.getAttribute(e,"rowspan"),i||j?(this.addSpannedCellToMap(e,k,a,f,i,j),f+=i?parseInt(i,10):1):(k[a][f]=new h(e),f++)}return this.map=k,k},getRowCells:function(c){var d=this.table.querySelectorAll("table"),e=d?b(d,"th, td"):[],f=c.querySelectorAll("th, td"),g=e.length>0?a.lang.array(f).without(e):f;return g},getTableRows:function(){var c=this.table.querySelectorAll("table"),d=c?b(c,"tr"):[],e=this.table.querySelectorAll("tr"),f=d.length>0?a.lang.array(e).without(d):e;return f},getMapIndex:function(a){var b,c,d=this.map.length,e=this.map&&this.map[0]?this.map[0].length:0;for(b=0;d>b;b++)for(c=0;e>c;c++)if(this.map[b][c].el===a)return{row:b,col:c};return!1},getElementAtIndex:function(a){return this.setTableMap(),this.map[a.row]&&this.map[a.row][a.col]&&this.map[a.row][a.col].el?this.map[a.row][a.col].el:null},getMapElsTo:function(a){var b,c,d,e,f,g,h=[];if(this.setTableMap(),this.idx_start=this.getMapIndex(this.cell),this.idx_end=this.getMapIndex(a),(this.idx_start.row>this.idx_end.row||this.idx_start.row==this.idx_end.row&&this.idx_start.col>this.idx_end.col)&&(b=this.idx_start,this.idx_start=this.idx_end,this.idx_end=b),this.idx_start.col>this.idx_end.col&&(c=this.idx_start.col,this.idx_start.col=this.idx_end.col,this.idx_end.col=c),null!=this.idx_start&&null!=this.idx_end)for(d=this.idx_start.row,e=this.idx_end.row;e>=d;d++)for(f=this.idx_start.col,g=this.idx_end.col;g>=f;f++)h.push(this.map[d][f].el);return h},orderSelectionEnds:function(a){var b,c;return this.setTableMap(),this.idx_start=this.getMapIndex(this.cell),this.idx_end=this.getMapIndex(a),(this.idx_start.row>this.idx_end.row||this.idx_start.row==this.idx_end.row&&this.idx_start.col>this.idx_end.col)&&(b=this.idx_start,this.idx_start=this.idx_end,this.idx_end=b),this.idx_start.col>this.idx_end.col&&(c=this.idx_start.col,this.idx_start.col=this.idx_end.col,this.idx_end.col=c),{start:this.map[this.idx_start.row][this.idx_start.col].el,end:this.map[this.idx_end.row][this.idx_end.col].el}},createCells:function(a,b,c){var d,e,f,g=this.table.ownerDocument,h=g.createDocumentFragment();for(e=0;b>e;e++){if(d=g.createElement(a),c)for(f in c)c.hasOwnProperty(f)&&d.setAttribute(f,c[f]);d.appendChild(document.createTextNode(" ")),h.appendChild(d)}return h},correctColIndexForUnreals:function(a,b){var c,d,e=this.map[b],f=-1;for(c=0,d=a;a>c;c++)e[c].isReal&&f++;return f},getLastNewCellOnRow:function(a,b){var c,d,e,f,g=this.getRowCells(a);for(e=0,f=g.length;f>e;e++)if(c=g[e],d=this.getMapIndex(c),d===!1||void 0!==b&&d.row!=b)return c;return null},removeEmptyTable:function(){var a=this.table.querySelectorAll("td, th");return a&&0!=a.length?!1:(d(this.table),!0)},splitRowToCells:function(a){var b,c,d;a.isColspan&&(b=parseInt(g.getAttribute(a.el,"colspan")||1,10),c=a.el.tagName.toLowerCase(),b>1&&(d=this.createCells(c,b-1),e(a.el,d)),a.el.removeAttribute("colspan"))},getRealRowEl:function(a,b){var c,d,e=null,f=null;for(b=b||this.idx,c=0,d=this.map[b.row].length;d>c;c++)if(f=this.map[b.row][c],f.isReal&&(e=g.getParentElement(f.el,{nodeName:["TR"]}),e))return e;return null===e&&a&&(e=g.getParentElement(this.map[b.row][b.col].el,{nodeName:["TR"]})||null),e},injectRowAt:function(a,b,c,d,f){var h,i,j=this.getRealRowEl(!1,{row:a,col:b}),k=this.createCells(d,c);j?(h=this.correctColIndexForUnreals(b,a),h>=0?e(this.getRowCells(j)[h],k):j.insertBefore(k,j.firstChild)):(i=this.table.ownerDocument.createElement("tr"),i.appendChild(k),e(g.getParentElement(f.el,{nodeName:["TR"]}),i))},canMerge:function(a){var b,c,d,e,f,g;for(this.to=a,this.setTableMap(),this.idx_start=this.getMapIndex(this.cell),this.idx_end=this.getMapIndex(this.to),(this.idx_start.row>this.idx_end.row||this.idx_start.row==this.idx_end.row&&this.idx_start.col>this.idx_end.col)&&(b=this.idx_start,this.idx_start=this.idx_end,this.idx_end=b),this.idx_start.col>this.idx_end.col&&(c=this.idx_start.col,this.idx_start.col=this.idx_end.col,this.idx_end.col=c),d=this.idx_start.row,e=this.idx_end.row;e>=d;d++)for(f=this.idx_start.col,g=this.idx_end.col;g>=f;f++)if(this.map[d][f].isColspan||this.map[d][f].isRowspan)return!1;return!0},decreaseCellSpan:function(a,b){var c=parseInt(g.getAttribute(a.el,b),10)-1;c>=1?a.el.setAttribute(b,c):(a.el.removeAttribute(b),"colspan"==b&&(a.isColspan=!1),"rowspan"==b&&(a.isRowspan=!1),a.firstCol=!0,a.lastCol=!0,a.firstRow=!0,a.lastRow=!0,a.isReal=!0)},removeSurplusLines:function(){var a,b,c,e,f,h,i,j;if(this.setTableMap(),this.map){for(c=0,e=this.map.length;e>c;c++){for(a=this.map[c],i=!0,f=0,h=a.length;h>f;f++)if(b=a[f],!(g.getAttribute(b.el,"rowspan")&&parseInt(g.getAttribute(b.el,"rowspan"),10)>1&&b.firstRow!==!0)){i=!1;break}if(i)for(f=0;h>f;f++)this.decreaseCellSpan(a[f],"rowspan")}for(j=this.getTableRows(),c=0,e=j.length;e>c;c++)a=j[c],0==a.childNodes.length&&/^\s*$/.test(a.textContent||a.innerText)&&d(a)}},fillMissingCells:function(){var a,b,c,d=0,f=0,g=null;if(this.setTableMap(),this.map){for(d=this.map.length,a=0;d>a;a++)this.map[a].length>f&&(f=this.map[a].length);for(b=0;d>b;b++)for(c=0;f>c;c++)this.map[b]&&!this.map[b][c]&&c>0&&(this.map[b][c]=new h(this.createCells("td",1)),g=this.map[b][c-1],g&&g.el&&g.el.parent&&e(this.map[b][c-1].el,this.map[b][c].el))}},rectify:function(){return this.removeEmptyTable()?!1:(this.removeSurplusLines(),this.fillMissingCells(),!0)},unmerge:function(){var a,b,c,d,e,f;if(this.rectify()&&(this.setTableMap(),this.idx=this.getMapIndex(this.cell),this.idx)){if(a=this.map[this.idx.row][this.idx.col],b=g.getAttribute(a.el,"colspan")?parseInt(g.getAttribute(a.el,"colspan"),10):1,c=a.el.tagName.toLowerCase(),a.isRowspan){if(d=parseInt(g.getAttribute(a.el,"rowspan"),10),d>1)for(e=1,f=d-1;f>=e;e++)this.injectRowAt(this.idx.row+e,this.idx.col,b,c,a);a.el.removeAttribute("rowspan")}this.splitRowToCells(a)}},merge:function(a){var b,c,e,f,g,h;if(this.rectify())if(this.canMerge(a)){for(b=this.idx_end.row-this.idx_start.row+1,c=this.idx_end.col-this.idx_start.col+1,e=this.idx_start.row,f=this.idx_end.row;f>=e;e++)for(g=this.idx_start.col,h=this.idx_end.col;h>=g;g++)e==this.idx_start.row&&g==this.idx_start.col?(b>1&&this.map[e][g].el.setAttribute("rowspan",b),c>1&&this.map[e][g].el.setAttribute("colspan",c)):(/^\s*<br\/?>\s*$/.test(this.map[e][g].el.innerHTML.toLowerCase())||(this.map[this.idx_start.row][this.idx_start.col].el.innerHTML+=" "+this.map[e][g].el.innerHTML),d(this.map[e][g].el));this.rectify()}else window.console&&void 0},collapseCellToNextRow:function(a){var b,c,d,f=this.getMapIndex(a.el),h=f.row+1,i={row:h,col:f.col};h<this.map.length&&(b=this.getRealRowEl(!1,i),null!==b&&(c=this.correctColIndexForUnreals(i.col,i.row),c>=0?e(this.getRowCells(b)[c],a.el):(d=this.getLastNewCellOnRow(b,h),null!==d?e(d,a.el):b.insertBefore(a.el,b.firstChild)),parseInt(g.getAttribute(a.el,"rowspan"),10)>2?a.el.setAttribute("rowspan",parseInt(g.getAttribute(a.el,"rowspan"),10)-1):a.el.removeAttribute("rowspan")))},removeRowCell:function(a){a.isReal?a.isRowspan?this.collapseCellToNextRow(a):d(a.el):parseInt(g.getAttribute(a.el,"rowspan"),10)>2?a.el.setAttribute("rowspan",parseInt(g.getAttribute(a.el,"rowspan"),10)-1):a.el.removeAttribute("rowspan")},getRowElementsByCell:function(){var a,b,c,d=[];if(this.setTableMap(),this.idx=this.getMapIndex(this.cell),this.idx!==!1)for(a=this.map[this.idx.row],b=0,c=a.length;c>b;b++)a[b].isReal&&d.push(a[b].el);return d},getColumnElementsByCell:function(){var a,b,c=[];if(this.setTableMap(),this.idx=this.getMapIndex(this.cell),this.idx!==!1)for(a=0,b=this.map.length;b>a;a++)this.map[a][this.idx.col]&&this.map[a][this.idx.col].isReal&&c.push(this.map[a][this.idx.col].el);return c},removeRow:function(){var a,b,c,e=g.getParentElement(this.cell,{nodeName:["TR"]});if(e){if(this.setTableMap(),this.idx=this.getMapIndex(this.cell),this.idx!==!1)for(a=this.map[this.idx.row],b=0,c=a.length;c>b;b++)a[b].modified||(this.setCellAsModified(a[b]),this.removeRowCell(a[b]));d(e)}},removeColCell:function(a){a.isColspan?parseInt(g.getAttribute(a.el,"colspan"),10)>2?a.el.setAttribute("colspan",parseInt(g.getAttribute(a.el,"colspan"),10)-1):a.el.removeAttribute("colspan"):a.isReal&&d(a.el)},removeColumn:function(){if(this.setTableMap(),this.idx=this.getMapIndex(this.cell),this.idx!==!1)for(var a=0,b=this.map.length;b>a;a++)this.map[a][this.idx.col].modified||(this.setCellAsModified(this.map[a][this.idx.col]),this.removeColCell(this.map[a][this.idx.col]))},remove:function(a){if(this.rectify()){switch(a){case"row":this.removeRow();break;case"column":this.removeColumn()}this.rectify()}},addRow:function(a){var b,c,d,f,h,i=this.table.ownerDocument;if(this.setTableMap(),this.idx=this.getMapIndex(this.cell),"below"==a&&g.getAttribute(this.cell,"rowspan")&&(this.idx.row=this.idx.row+parseInt(g.getAttribute(this.cell,"rowspan"),10)-1),this.idx!==!1){for(b=this.map[this.idx.row],c=i.createElement("tr"),d=0,f=b.length;f>d;d++)b[d].modified||(this.setCellAsModified(b[d]),this.addRowCell(b[d],c,a));switch(a){case"below":e(this.getRealRowEl(!0),c);break;case"above":h=g.getParentElement(this.map[this.idx.row][this.idx.col].el,{nodeName:["TR"]}),h&&h.parentNode.insertBefore(c,h)}}},addRowCell:function(a,b,d){var e=a.isColspan?{colspan:g.getAttribute(a.el,"colspan")}:null;a.isReal?"above"!=d&&a.isRowspan?a.el.setAttribute("rowspan",parseInt(g.getAttribute(a.el,"rowspan"),10)+1):b.appendChild(this.createCells("td",1,e)):"above"!=d&&a.isRowspan&&a.lastRow?b.appendChild(this.createCells("td",1,e)):c.isRowspan&&a.el.attr("rowspan",parseInt(g.getAttribute(a.el,"rowspan"),10)+1)},add:function(a){this.rectify()&&(("below"==a||"above"==a)&&this.addRow(a),("before"==a||"after"==a)&&this.addColumn(a))},addColCell:function(a,b,d){var f,h=a.el.tagName.toLowerCase();switch(d){case"before":f=!a.isColspan||a.firstCol;break;case"after":f=!a.isColspan||a.lastCol||a.isColspan&&c.el==this.cell}if(f){switch(d){case"before":a.el.parentNode.insertBefore(this.createCells(h,1),a.el);break;case"after":e(a.el,this.createCells(h,1))}a.isRowspan&&this.handleCellAddWithRowspan(a,b+1,d)}else a.el.setAttribute("colspan",parseInt(g.getAttribute(a.el,"colspan"),10)+1)},addColumn:function(a){var b,c,d,e;if(this.setTableMap(),this.idx=this.getMapIndex(this.cell),"after"==a&&g.getAttribute(this.cell,"colspan")&&(this.idx.col=this.idx.col+parseInt(g.getAttribute(this.cell,"colspan"),10)-1),this.idx!==!1)for(d=0,e=this.map.length;e>d;d++)b=this.map[d],b[this.idx.col]&&(c=b[this.idx.col],c.modified||(this.setCellAsModified(c),this.addColCell(c,d,a)))},handleCellAddWithRowspan:function(a,b,c){var d,h,i,j,k=parseInt(g.getAttribute(this.cell,"rowspan"),10)-1,l=g.getParentElement(a.el,{nodeName:["TR"]}),m=a.el.tagName.toLowerCase(),n=this.table.ownerDocument;for(j=0;k>j;j++)if(d=this.correctColIndexForUnreals(this.idx.col,b+j),l=f(l,"tr"),l)if(d>0)switch(c){case"before":h=this.getRowCells(l),d>0&&this.map[b+j][this.idx.col].el!=h[d]&&d==h.length-1?e(h[d],this.createCells(m,1)):h[d].parentNode.insertBefore(this.createCells(m,1),h[d]); break;case"after":e(this.getRowCells(l)[d],this.createCells(m,1))}else l.insertBefore(this.createCells(m,1),l.firstChild);else i=n.createElement("tr"),i.appendChild(this.createCells(m,1)),this.table.appendChild(i)}},g.table={getCellsBetween:function(a,b){var c=new i(a);return c.getMapElsTo(b)},addCells:function(a,b){var c=new i(a);c.add(b)},removeCells:function(a,b){var c=new i(a);c.remove(b)},mergeCellsBetween:function(a,b){var c=new i(a);c.merge(b)},unmergeCell:function(a){var b=new i(a);b.unmerge()},orderSelectionEnds:function(a,b){var c=new i(a);return c.orderSelectionEnds(b)},indexOf:function(a){var b=new i(a);return b.setTableMap(),b.getMapIndex(a)},findCell:function(a,b){var c=new i(null,a);return c.getElementAtIndex(b)},findRowByCell:function(a){var b=new i(a);return b.getRowElementsByCell()},findColumnByCell:function(a){var b=new i(a);return b.getColumnElementsByCell()},canMerge:function(a,b){var c=new i(a);return c.canMerge(b)}}}(wysihtml5),wysihtml5.dom.query=function(a,b){var c,d,e,f,g=[];for(a.nodeType&&(a=[a]),d=0,e=a.length;e>d;d++)if(c=a[d].querySelectorAll(b),c)for(f=c.length;f--;g.unshift(c[f]));return g},wysihtml5.dom.compareDocumentPosition=function(){var a=document.documentElement;return a.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)}:function(a,b){var c,d,e,f,g,h,i,j,k;if(c=9===a.nodeType?a:a.ownerDocument,d=9===b.nodeType?b:b.ownerDocument,a===b)return 0;if(a===b.ownerDocument)return 20;if(a.ownerDocument===b)return 10;if(c!==d)return 1;if(2===a.nodeType&&a.childNodes&&-1!==wysihtml5.lang.array(a.childNodes).indexOf(b))return 20;if(2===b.nodeType&&b.childNodes&&-1!==wysihtml5.lang.array(b.childNodes).indexOf(a))return 10;for(e=a,f=[],g=null;e;){if(e==b)return 10;f.push(e),e=e.parentNode}for(e=b,g=null;e;){if(e==a)return 20;if(h=wysihtml5.lang.array(f).indexOf(e),-1!==h)return i=f[h],j=wysihtml5.lang.array(i.childNodes).indexOf(f[h-1]),k=wysihtml5.lang.array(i.childNodes).indexOf(g),j>k?2:4;g=e,e=e.parentNode}return 1}}(),wysihtml5.dom.unwrap=function(a){if(a.parentNode){for(;a.lastChild;)wysihtml5.dom.insert(a.lastChild).after(a);a.parentNode.removeChild(a)}},wysihtml5.dom.getPastedHtml=function(a){var b;return a.clipboardData&&(wysihtml5.lang.array(a.clipboardData.types).contains("text/html")?b=a.clipboardData.getData("text/html"):wysihtml5.lang.array(a.clipboardData.types).contains("text/plain")&&(b=wysihtml5.lang.string(a.clipboardData.getData("text/plain")).escapeHTML(!0,!0))),b},wysihtml5.dom.getPastedHtmlWithDiv=function(a,b){var c=a.selection.getBookmark(),d=a.element.ownerDocument,e=d.createElement("DIV");d.body.appendChild(e),e.style.width="1px",e.style.height="1px",e.style.overflow="hidden",e.setAttribute("contenteditable","true"),e.focus(),setTimeout(function(){a.selection.setBookmark(c),b(e.innerHTML),e.parentNode.removeChild(e)},0)},wysihtml5.quirks.cleanPastedHTML=function(){var a=function(a){var b=wysihtml5.lang.string(a).trim(),c=b.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");return RegExp("^((?!^"+c+"$).)*$","i")},b=function(b,c){var d,e,f=wysihtml5.lang.object(b).clone(!0);for(d in f.tags)if(f.tags.hasOwnProperty(d)&&f.tags[d].keep_styles)for(e in f.tags[d].keep_styles)f.tags[d].keep_styles.hasOwnProperty(e)&&c[e]&&(f.tags[d].keep_styles[e]=a(c[e]));return f},c=function(a,b){var c,d,e;if(!a)return null;for(d=0,e=a.length;e>d;d++)if(a[d].condition||(c=a[d].set),a[d].condition&&a[d].condition.test(b))return a[d].set;return c};return function(a,d){var e,f={color:wysihtml5.dom.getStyle("color").from(d.referenceNode),fontSize:wysihtml5.dom.getStyle("font-size").from(d.referenceNode)},g=b(c(d.rules,a)||{},f);return e=wysihtml5.dom.parse(a,{rules:g,cleanUp:!0,context:d.referenceNode.ownerDocument,uneditableClass:d.uneditableClass,clearInternals:!0,unjoinNbsps:!0}),e}}(),wysihtml5.quirks.ensureProperClearing=function(){var a=function(){var a=this;setTimeout(function(){var b=a.innerHTML.toLowerCase();("<p> </p>"==b||"<p> </p><p> </p>"==b)&&(a.innerHTML="")},0)};return function(b){wysihtml5.dom.observe(b.element,["cut","keydown"],a)}}(),function(a){var b="%7E";a.quirks.getCorrectInnerHTML=function(c){var d,e,f,g,h,i=c.innerHTML;if(-1===i.indexOf(b))return i;for(d=c.querySelectorAll("[href*='~'], [src*='~']"),h=0,g=d.length;g>h;h++)e=d[h].href||d[h].src,f=a.lang.string(e).replace("~").by(b),i=a.lang.string(i).replace(f).by(e);return i}}(wysihtml5),function(a){var b="wysihtml5-quirks-redraw";a.quirks.redraw=function(c){a.dom.addClass(c,b),a.dom.removeClass(c,b);try{var d=c.ownerDocument;d.execCommand("italic",!1,null),d.execCommand("italic",!1,null)}catch(e){}}}(wysihtml5),wysihtml5.quirks.tableCellsSelection=function(a,b){function c(){return k.observe(a,"mousedown",function(a){var b=wysihtml5.dom.getParentElement(a.target,{nodeName:["TD","TH"]});b&&d(b)}),l}function d(c){l.start=c,l.end=c,l.cells=[c],l.table=k.getParentElement(l.start,{nodeName:["TABLE"]}),l.table&&(e(),k.addClass(c,m),n=k.observe(a,"mousemove",g),o=k.observe(a,"mouseup",h),b.fire("tableselectstart").fire("tableselectstart:composer"))}function e(){var b,c;if(a&&(b=a.querySelectorAll("."+m),b.length>0))for(c=0;c<b.length;c++)k.removeClass(b[c],m)}function f(a){for(var b=0;b<a.length;b++)k.addClass(a[b],m)}function g(a){var c,d=null,g=k.getParentElement(a.target,{nodeName:["TD","TH"]});g&&l.table&&l.start&&(d=k.getParentElement(g,{nodeName:["TABLE"]}),d&&d===l.table&&(e(),c=l.end,l.end=g,l.cells=k.table.getCellsBetween(l.start,g),l.cells.length>1&&b.composer.selection.deselect(),f(l.cells),l.end!==c&&b.fire("tableselectchange").fire("tableselectchange:composer")))}function h(){n.stop(),o.stop(),b.fire("tableselect").fire("tableselect:composer"),setTimeout(function(){i()},0)}function i(){var c=k.observe(a.ownerDocument,"click",function(a){c.stop(),k.getParentElement(a.target,{nodeName:["TABLE"]})!=l.table&&(e(),l.table=null,l.start=null,l.end=null,b.fire("tableunselect").fire("tableunselect:composer"))})}function j(a,c){l.start=a,l.end=c,l.table=k.getParentElement(l.start,{nodeName:["TABLE"]}),selectedCells=k.table.getCellsBetween(l.start,l.end),f(selectedCells),i(),b.fire("tableselect").fire("tableselect:composer")}var k=wysihtml5.dom,l={table:null,start:null,end:null,cells:null,select:j},m="wysiwyg-tmp-selected-cell",n=null,o=null;return c()},function(a){var b=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([\d\.]+)\s*\)/i,c=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/i,d=/^#([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])/i,e=/^#([0-9a-f])([0-9a-f])([0-9a-f])/i,f=function(a){return RegExp("(^|\\s|;)"+a+"\\s*:\\s*[^;$]+","gi")};a.quirks.styleParser={parseColor:function(g,h){var i,j,k,l=f(h),m=g.match(l),n=10;if(m){for(k=m.length;k--;)m[k]=a.lang.string(m[k].split(":")[1]).trim();if(i=m[m.length-1],b.test(i))j=i.match(b);else if(c.test(i))j=i.match(c);else if(d.test(i))j=i.match(d),n=16;else if(e.test(i))return j=i.match(e),j.shift(),j.push(1),a.lang.array(j).map(function(a,b){return 3>b?16*parseInt(a,16)+parseInt(a,16):parseFloat(a)});if(j)return j.shift(),j[3]||j.push(1),a.lang.array(j).map(function(a,b){return 3>b?parseInt(a,n):parseFloat(a)})}return!1},unparseColor:function(a,b){if(b){if("hex"==b)return a[0].toString(16).toUpperCase()+a[1].toString(16).toUpperCase()+a[2].toString(16).toUpperCase();if("hash"==b)return"#"+a[0].toString(16).toUpperCase()+a[1].toString(16).toUpperCase()+a[2].toString(16).toUpperCase();if("rgb"==b)return"rgb("+a[0]+","+a[1]+","+a[2]+")";if("rgba"==b)return"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")";if("csv"==b)return a[0]+","+a[1]+","+a[2]+","+a[3]}return a[3]&&1!==a[3]?"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")":"rgb("+a[0]+","+a[1]+","+a[2]+")"},parseFontSize:function(b){var c=b.match(f("font-size"));return c?a.lang.string(c[c.length-1].split(":")[1]).trim():!1}}}(wysihtml5),function(a){function b(a){var b=0;if(a.parentNode)do b+=a.offsetTop||0,a=a.offsetParent;while(a);return b}function c(a,b){for(var c=0;b!==a;)if(c++,b=b.parentNode,!b)throw Error("not a descendant of ancestor!");return c}function d(a){if(!a.canSurroundContents())for(var b=a.commonAncestorContainer,d=c(b,a.startContainer),e=c(b,a.endContainer);!a.canSurroundContents();)d>e?(a.setStartBefore(a.startContainer),d=c(b,a.startContainer)):(a.setEndAfter(a.endContainer),e=c(b,a.endContainer))}var e=a.dom;a.Selection=Base.extend({constructor:function(a,b,c){window.rangy.init(),this.editor=a,this.composer=a.composer,this.doc=this.composer.doc,this.contain=b,this.unselectableClass=c||!1},getBookmark:function(){var a=this.getRange();return a&&d(a),a&&a.cloneRange()},setBookmark:function(a){a&&this.setSelection(a)},setBefore:function(a){var b=rangy.createRange(this.doc);return b.setStartBefore(a),b.setEndBefore(a),this.setSelection(b)},setAfter:function(a){var b=rangy.createRange(this.doc);return b.setStartAfter(a),b.setEndAfter(a),this.setSelection(b)},selectNode:function(b,c){var d=rangy.createRange(this.doc),f=b.nodeType===a.ELEMENT_NODE,g="canHaveHTML"in b?b.canHaveHTML:"IMG"!==b.nodeName,h=f?b.innerHTML:b.data,i=""===h||h===a.INVISIBLE_SPACE,j=e.getStyle("display").from(b),k="block"===j||"list-item"===j;if(i&&f&&g&&!c)try{b.innerHTML=a.INVISIBLE_SPACE}catch(l){}g?d.selectNodeContents(b):d.selectNode(b),g&&i&&f?d.collapse(k):g&&i&&(d.setStartAfter(b),d.setEndAfter(b)),this.setSelection(d)},getSelectedNode:function(a){var b,c;return a&&this.doc.selection&&"Control"===this.doc.selection.type&&(c=this.doc.selection.createRange(),c&&c.length)?c.item(0):(b=this.getSelection(this.doc),b.focusNode===b.anchorNode?b.focusNode:(c=this.getRange(this.doc),c?c.commonAncestorContainer:this.doc.body))},fixSelBorders:function(){var a=this.getRange();d(a),this.setSelection(a)},getSelectedOwnNodes:function(){var a,b,c=this.getOwnRanges(),d=[];for(a=0,b=c.length;b>a;a++)d.push(c[a].commonAncestorContainer||this.doc.body);return d},findNodesInSelection:function(b){var c,d,e,f=this.getOwnRanges(),g=[];for(d=0,e=f.length;e>d;d++)c=f[d].getNodes([1],function(c){return a.lang.array(b).contains(c.nodeName)}),g=g.concat(c);return g},containsUneditable:function(){var a,b,c=this.getOwnUneditables(),d=this.getSelection();for(a=0,b=c.length;b>a;a++)if(d.containsNode(c[a]))return!0;return!1},deleteContents:function(){var a,b=this.getOwnRanges();for(a=b.length;a--;)b[a].deleteContents();this.setSelection(b[0])},getPreviousNode:function(b,c){var d,e,f;return b||(d=this.getSelection(),b=d.anchorNode),b===this.contain?!1:(e=b.previousSibling,e===this.contain?!1:(e&&3!==e.nodeType&&1!==e.nodeType?e=this.getPreviousNode(e,c):e&&3===e.nodeType&&/^\s*$/.test(e.textContent)?e=this.getPreviousNode(e,c):c&&e&&1===e.nodeType&&!a.lang.array(["BR","HR","IMG"]).contains(e.nodeName)&&/^[\s]*$/.test(e.innerHTML)?e=this.getPreviousNode(e,c):e||b===this.contain||(f=b.parentNode,f!==this.contain&&(e=this.getPreviousNode(f,c))),e!==this.contain?e:!1))},getSelectionParentsByTag:function(){var b,c,d,e=this.getSelectedOwnNodes(),f=[];for(c=0,d=e.length;d>c;c++)b=e[c].nodeName&&"LI"===e[c].nodeName?e[c]:a.dom.getParentElement(e[c],{nodeName:["LI"]},!1,this.contain),b&&f.push(b);return f.length?f:null},getRangeToNodeEnd:function(){if(this.isCollapsed()){var a=this.getRange(),b=a.startContainer,c=a.startOffset,d=rangy.createRange(this.doc);return d.selectNodeContents(b),d.setStart(b,c),d}},caretIsLastInSelection:function(){var a=(rangy.createRange(this.doc),this.getSelection(),this.getRangeToNodeEnd().cloneContents()),b=a.textContent;return/^\s*$/.test(b)},caretIsFirstInSelection:function(){var b=rangy.createRange(this.doc),c=this.getSelection(),d=this.getRange(),e=d.startContainer;return e.nodeType===a.TEXT_NODE?this.isCollapsed()&&e.nodeType===a.TEXT_NODE&&/^\s*$/.test(e.data.substr(0,d.startOffset)):(b.selectNodeContents(this.getRange().commonAncestorContainer),b.collapse(!0),this.isCollapsed()&&(b.startContainer===c.anchorNode||b.endContainer===c.anchorNode)&&b.startOffset===c.anchorOffset)},caretIsInTheBeginnig:function(b){var c=this.getSelection(),d=c.anchorNode,e=c.anchorOffset;return b?0===e&&(d.nodeName&&d.nodeName===b.toUpperCase()||a.dom.getParentElement(d.parentNode,{nodeName:b},1)):0===e&&!this.getPreviousNode(d,!0)},caretIsBeforeUneditable:function(){var a,b,c,d,e=this.getSelection(),f=e.anchorNode,g=e.anchorOffset;if(0===g&&(a=this.getPreviousNode(f,!0),a))for(b=this.getOwnUneditables(),c=0,d=b.length;d>c;c++)if(a===b[c])return b[c];return!1},executeAndRestoreRangy:function(a){var b=this.doc.defaultView||this.doc.parentWindow,c=rangy.saveSelection(b);if(c)try{a()}catch(d){setTimeout(function(){throw d},0)}else a();rangy.restoreSelection(c)},executeAndRestore:function(b,c){var d,f,g,h,i,j,k,l,m,n=this.doc.body,o=c&&n.scrollTop,p=c&&n.scrollLeft,q="_wysihtml5-temp-placeholder",r='<span class="'+q+'">'+a.INVISIBLE_SPACE+"</span>",s=this.getRange(!0);if(!s)return b(n,n),void 0;s.collapsed||(k=s.cloneRange(),j=k.createContextualFragment(r),k.collapse(!1),k.insertNode(j),k.detach()),i=s.createContextualFragment(r),s.insertNode(i),j&&(d=this.contain.querySelectorAll("."+q),s.setStartBefore(d[0]),s.setEndAfter(d[d.length-1])),this.setSelection(s);try{b(s.startContainer,s.endContainer)}catch(t){setTimeout(function(){throw t},0)}if(d=this.contain.querySelectorAll("."+q),d&&d.length)for(l=rangy.createRange(this.doc),g=d[0].nextSibling,d.length>1&&(h=d[d.length-1].previousSibling),h&&g?(l.setStartBefore(g),l.setEndAfter(h)):(f=this.doc.createTextNode(a.INVISIBLE_SPACE),e.insert(f).after(d[0]),l.setStartBefore(f),l.setEndAfter(f)),this.setSelection(l),m=d.length;m--;)d[m].parentNode.removeChild(d[m]);else this.contain.focus();c&&(n.scrollTop=o,n.scrollLeft=p);try{d.parentNode.removeChild(d)}catch(u){}},set:function(a,b){var c=rangy.createRange(this.doc);c.setStart(a,b||0),this.setSelection(c)},insertHTML:function(a){var b,c=(rangy.createRange(this.doc),this.doc.createElement("DIV")),d=this.doc.createDocumentFragment();for(c.innerHTML=a,b=c.lastChild;c.firstChild;)d.appendChild(c.firstChild);this.insertNode(d),b&&this.setAfter(b)},insertNode:function(a){var b=this.getRange();b&&b.insertNode(a)},surround:function(a){var b,c,d=this.getOwnRanges(),e=[];if(0==d.length)return e;for(c=d.length;c--;){b=this.doc.createElement(a.nodeName),e.push(b),a.className&&(b.className=a.className),a.cssStyle&&b.setAttribute("style",a.cssStyle);try{d[c].surroundContents(b),this.selectNode(b)}catch(f){b.appendChild(d[c].extractContents()),d[c].insertNode(b)}}return e},deblockAndSurround:function(b){var c,d,e,f=this.doc.createElement("div"),g=rangy.createRange(this.doc);if(f.className=b.className,this.composer.commands.exec("formatBlock",b.nodeName,b.className),c=this.contain.querySelectorAll("."+b.className),c[0])for(c[0].parentNode.insertBefore(f,c[0]),g.setStartBefore(c[0]),g.setEndAfter(c[c.length-1]),d=g.extractContents();d.firstChild;)if(e=d.firstChild,1==e.nodeType&&a.dom.hasClass(e,b.className)){for(;e.firstChild;)f.appendChild(e.firstChild);"BR"!==e.nodeName&&f.appendChild(this.doc.createElement("br")),d.removeChild(e)}else f.appendChild(e);else f=null;return f},scrollIntoView:function(){var c,d=this.doc,e=5,f=d.documentElement.scrollHeight>d.documentElement.offsetHeight,g=d._wysihtml5ScrollIntoViewElement=d._wysihtml5ScrollIntoViewElement||function(){var b=d.createElement("span");return b.innerHTML=a.INVISIBLE_SPACE,b}();f&&(this.insertNode(g),c=b(g),g.parentNode.removeChild(g),c>=d.body.scrollTop+d.documentElement.offsetHeight-e&&(d.body.scrollTop=c))},selectLine:function(){a.browser.supportsSelectionModify()?this._selectLine_W3C():this.doc.selection&&this._selectLine_MSIE()},_selectLine_W3C:function(){var a=this.doc.defaultView,b=a.getSelection();b.modify("move","left","lineboundary"),b.modify("extend","right","lineboundary")},_selectLine_MSIE:function(){var a,b,c,d,e,f=this.doc.selection.createRange(),g=f.boundingTop,h=this.doc.body.scrollWidth;if(f.moveToPoint){for(0===g&&(c=this.doc.createElement("span"),this.insertNode(c),g=c.offsetTop,c.parentNode.removeChild(c)),g+=1,d=-10;h>d;d+=2)try{f.moveToPoint(d,g);break}catch(i){}for(a=g,b=this.doc.selection.createRange(),e=h;e>=0;e--)try{b.moveToPoint(e,a);break}catch(j){}f.setEndPoint("EndToEnd",b),f.select()}},getText:function(){var a=this.getSelection();return a?""+a:""},getNodes:function(a,b){var c=this.getRange();return c?c.getNodes([a],b):[]},fixRangeOverflow:function(a){var b,c;this.contain&&this.contain.firstChild&&a&&(b=a.compareNode(this.contain),2!==b?(1===b&&a.setStartBefore(this.contain.firstChild),0===b&&a.setEndAfter(this.contain.lastChild),3===b&&(a.setStartBefore(this.contain.firstChild),a.setEndAfter(this.contain.lastChild))):this._detectInlineRangeProblems(a)&&(c=a.endContainer.previousElementSibling,c&&a.setEnd(c,this._endOffsetForNode(c))))},_endOffsetForNode:function(a){var b=document.createRange();return b.selectNodeContents(a),b.endOffset},_detectInlineRangeProblems:function(a){var b=e.compareDocumentPosition(a.startContainer,a.endContainer);return 0==a.endOffset&&4&b},getRange:function(a){var b=this.getSelection(),c=b&&b.rangeCount&&b.getRangeAt(0);return a!==!0&&this.fixRangeOverflow(c),c},getOwnUneditables:function(){var b=e.query(this.contain,"."+this.unselectableClass),c=e.query(b,"."+this.unselectableClass);return a.lang.array(b).without(c)},getOwnRanges:function(){var a,b,c,d,e,f,g,h=[],i=this.getRange();if(i&&h.push(i),this.unselectableClass&&this.contain&&i&&(b=this.getOwnUneditables(),b.length>0))for(d=0,e=b.length;e>d;d++)for(a=[],f=0,g=h.length;g>f;f++){if(h[f])switch(h[f].compareNode(b[d])){case 2:break;case 3:c=h[f].cloneRange(),c.setEndBefore(b[d]),a.push(c),c=h[f].cloneRange(),c.setStartAfter(b[d]),a.push(c);break;default:a.push(h[f])}h=a}return h},getSelection:function(){return rangy.getSelection(this.doc.defaultView||this.doc.parentWindow)},setSelection:function(a){var b=this.doc.defaultView||this.doc.parentWindow,c=rangy.getSelection(b);return c.setSingleRange(a)},createRange:function(){return rangy.createRange(this.doc)},isCollapsed:function(){return this.getSelection().isCollapsed},getHtml:function(){return this.getSelection().toHtml()},isEndToEndInNode:function(b){var c=this.getRange(),d=c.commonAncestorContainer,e=c.startContainer,f=c.endContainer;if(d.nodeType===a.TEXT_NODE&&(d=d.parentNode),e.nodeType===a.TEXT_NODE&&!/^\s*$/.test(e.data.substr(c.startOffset)))return!1;if(f.nodeType===a.TEXT_NODE&&!/^\s*$/.test(f.data.substr(c.endOffset)))return!1;for(;e&&e!==d;){if(e.nodeType!==a.TEXT_NODE&&!a.dom.contains(d,e))return!1;if(a.dom.domNode(e).prev({ignoreBlankTexts:!0}))return!1;e=e.parentNode}for(;f&&f!==d;){if(f.nodeType!==a.TEXT_NODE&&!a.dom.contains(d,f))return!1;if(a.dom.domNode(f).next({ignoreBlankTexts:!0}))return!1;f=f.parentNode}return a.lang.array(b).contains(d.nodeName)?d:!1},deselect:function(){var a=this.getSelection();a&&a.removeAllRanges()}})}(wysihtml5),function(a,b){function c(a,b,c){if(!a.className)return!1;var d=a.className.match(c)||[];return d[d.length-1]===b}function d(a,b){if(!a.getAttribute||!a.getAttribute("style"))return!1;a.getAttribute("style").match(b);return a.getAttribute("style").match(b)?!0:!1}function e(a,b,c){a.getAttribute("style")?(h(a,c),a.getAttribute("style")&&!/^\s*$/.test(a.getAttribute("style"))?a.setAttribute("style",b+";"+a.getAttribute("style")):a.setAttribute("style",b)):a.setAttribute("style",b)}function f(a,b,c){a.className?(g(a,c),a.className+=" "+b):a.className=b}function g(a,b){a.className&&(a.className=a.className.replace(b,""))}function h(a,b){var c,d,e=[];if(a.getAttribute("style")){for(c=a.getAttribute("style").split(";"),d=c.length;d--;)c[d].match(b)||/^\s*$/.test(c[d])||e.push(c[d]);e.length?a.setAttribute("style",e.join(";")):a.removeAttribute("style")}}function i(a,b){var c,d,e,f=[],g=b.split(";"),h=a.getAttribute("style");if(h){for(h=h.replace(/\s/gi,"").toLowerCase(),f.push(RegExp("(^|\\s|;)"+b.replace(/\s/gi,"").replace(/([\(\)])/gi,"\\$1").toLowerCase().replace(";",";?").replace(/rgb\\\((\d+),(\d+),(\d+)\\\)/gi,"\\s?rgb\\($1,\\s?$2,\\s?$3\\)"),"gi")),c=g.length;c-->0;)/^\s*$/.test(g[c])||f.push(RegExp("(^|\\s|;)"+g[c].replace(/\s/gi,"").replace(/([\(\)])/gi,"\\$1").toLowerCase().replace(";",";?").replace(/rgb\\\((\d+),(\d+),(\d+)\\\)/gi,"\\s?rgb\\($1,\\s?$2,\\s?$3\\)"),"gi"));for(d=0,e=f.length;e>d;d++)if(h.match(f[d]))return f[d]}return!1}function j(c,d,e,f){return e?i(c,e):f?a.dom.hasClass(c,f):b.dom.arrayContains(d,c.tagName.toLowerCase())}function k(a,b,c,d){for(var e=a.length;e--;)if(!j(a[e],b,c,d))return!1;return a.length?!0:!1}function l(a,b,c){var d=i(a,b);return d?(h(a,d),"remove"):(e(a,b,c),"change")}function m(a,b){return a.className.replace(u," ")==b.className.replace(u," ")}function n(a){for(var b=a.parentNode;a.firstChild;)b.insertBefore(a.firstChild,a);b.removeChild(a)}function o(a,b){if(a.attributes.length!=b.attributes.length)return!1;for(var c,d,e,f=0,g=a.attributes.length;g>f;++f)if(c=a.attributes[f],e=c.name,"class"!=e){if(d=b.attributes.getNamedItem(e),c.specified!=d.specified)return!1;if(c.specified&&c.nodeValue!==d.nodeValue)return!1}return!0}function p(a,c){return b.dom.isCharacterDataNode(a)?0==c?!!a.previousSibling:c==a.length?!!a.nextSibling:!0:c>0&&c<a.childNodes.length}function q(a,c,d,e){var f,g;if(b.dom.isCharacterDataNode(c)&&(0==d?(d=b.dom.getNodeIndex(c),c=c.parentNode):d==c.length?(d=b.dom.getNodeIndex(c)+1,c=c.parentNode):f=b.dom.splitDataNode(c,d)),!(f||e&&c===e)){for(f=c.cloneNode(!1),f.id&&f.removeAttribute("id");g=c.childNodes[d];)f.appendChild(g);b.dom.insertAfter(f,c)}return c==a?f:q(a,f.parentNode,b.dom.getNodeIndex(f),e)}function r(b){this.isElementMerge=b.nodeType==a.ELEMENT_NODE,this.firstTextNode=this.isElementMerge?b.lastChild:b,this.textNodes=[this.firstTextNode]}function s(a,b,c,d,e,f,g){this.tagNames=a||[t],this.cssClass=b||(b===!1?!1:""),this.similarClassRegExp=c,this.cssStyle=e||"",this.similarStyleRegExp=f,this.normalize=d,this.applyToAnyTagName=!1,this.container=g}var t="span",u=/\s+/g;r.prototype={doMerge:function(){var a,b,c,d,e,f=[];for(d=0,e=this.textNodes.length;e>d;++d)a=this.textNodes[d],b=a.parentNode,f[d]=a.data,d&&(b.removeChild(a),b.hasChildNodes()||b.parentNode.removeChild(b));return this.firstTextNode.data=c=f.join(""),c},getLength:function(){for(var a=this.textNodes.length,b=0;a--;)b+=this.textNodes[a].length;return b},toString:function(){var a,b,c=[];for(a=0,b=this.textNodes.length;b>a;++a)c[a]="'"+this.textNodes[a].data+"'";return"[Merge("+c.join(",")+")]"}},s.prototype={getAncestorWithClass:function(d){for(var e;d;){if(e=this.cssClass?c(d,this.cssClass,this.similarClassRegExp):""!==this.cssStyle?!1:!0,d.nodeType==a.ELEMENT_NODE&&"false"!=d.getAttribute("contenteditable")&&b.dom.arrayContains(this.tagNames,d.tagName.toLowerCase())&&e)return d;d=d.parentNode}return!1},getAncestorWithStyle:function(c){for(var e;c;){if(e=this.cssStyle?d(c,this.similarStyleRegExp):!1,c.nodeType==a.ELEMENT_NODE&&"false"!=c.getAttribute("contenteditable")&&b.dom.arrayContains(this.tagNames,c.tagName.toLowerCase())&&e)return c;c=c.parentNode}return!1},getMatchingAncestor:function(a){var b=this.getAncestorWithClass(a),c=!1;return b?this.cssStyle&&(c="class"):(b=this.getAncestorWithStyle(a),b&&(c="style")),{element:b,type:c}},postApply:function(a,b){var c,d,e,f,g,h,i=a[0],j=a[a.length-1],k=[],l=i,m=j,n=0,o=j.length;for(f=0,g=a.length;g>f;++f)d=a[f],e=null,d&&d.parentNode&&(e=this.getAdjacentMergeableTextNode(d.parentNode,!1)),e?(c||(c=new r(e),k.push(c)),c.textNodes.push(d),d===i&&(l=c.firstTextNode,n=l.length),d===j&&(m=c.firstTextNode,o=c.getLength())):c=null;if(j&&j.parentNode&&(h=this.getAdjacentMergeableTextNode(j.parentNode,!0),h&&(c||(c=new r(j),k.push(c)),c.textNodes.push(h))),k.length){for(f=0,g=k.length;g>f;++f)k[f].doMerge();b.setStart(l,n),b.setEnd(m,o)}},getAdjacentMergeableTextNode:function(b,c){var d,e=b.nodeType==a.TEXT_NODE,f=e?b.parentNode:b,g=c?"nextSibling":"previousSibling";if(e){if(d=b[g],d&&d.nodeType==a.TEXT_NODE)return d}else if(d=f[g],d&&this.areElementsMergeable(b,d))return d[c?"firstChild":"lastChild"];return null},areElementsMergeable:function(a,c){return b.dom.arrayContains(this.tagNames,(a.tagName||"").toLowerCase())&&b.dom.arrayContains(this.tagNames,(c.tagName||"").toLowerCase())&&m(a,c)&&o(a,c)},createContainer:function(a){var b=a.createElement(this.tagNames[0]);return this.cssClass&&(b.className=this.cssClass),this.cssStyle&&b.setAttribute("style",this.cssStyle),b},applyToTextNode:function(a){var c,d=a.parentNode;1==d.childNodes.length&&b.dom.arrayContains(this.tagNames,d.tagName.toLowerCase())?(this.cssClass&&f(d,this.cssClass,this.similarClassRegExp),this.cssStyle&&e(d,this.cssStyle,this.similarStyleRegExp)):(c=this.createContainer(b.dom.getDocument(a)),a.parentNode.insertBefore(c,a),c.appendChild(a))},isRemovable:function(c){return b.dom.arrayContains(this.tagNames,c.tagName.toLowerCase())&&""===a.lang.string(c.className).trim()&&(!c.getAttribute("style")||""===a.lang.string(c.getAttribute("style")).trim())},undoToTextNode:function(a,b,c,d){var e,f=c?!1:!0,h=c||d,i=!1;b.containsNode(h)||(e=b.cloneRange(),e.selectNode(h),e.isPointInRange(b.endContainer,b.endOffset)&&p(b.endContainer,b.endOffset)&&(q(h,b.endContainer,b.endOffset,this.container),b.setEndAfter(h)),e.isPointInRange(b.startContainer,b.startOffset)&&p(b.startContainer,b.startOffset)&&(h=q(h,b.startContainer,b.startOffset,this.container))),!f&&this.similarClassRegExp&&g(h,this.similarClassRegExp),f&&this.similarStyleRegExp&&(i="change"===l(h,this.cssStyle,this.similarStyleRegExp)),this.isRemovable(h)&&!i&&n(h)},applyToRange:function(b){var c,d,e,f,g,h;for(d=b.length;d--;){if(c=b[d].getNodes([a.TEXT_NODE]),!c.length)try{return e=this.createContainer(b[d].endContainer.ownerDocument),b[d].surroundContents(e),this.selectNode(b[d],e),void 0}catch(i){}if(b[d].splitBoundaries(),c=b[d].getNodes([a.TEXT_NODE]),c.length){for(g=0,h=c.length;h>g;++g)f=c[g],this.getMatchingAncestor(f).element||this.applyToTextNode(f);b[d].setStart(c[0],0),f=c[c.length-1],b[d].setEnd(f,f.length),this.normalize&&this.postApply(c,b[d])}}},undoToRange:function(b){var c,d,e,f,g,h,i,j;for(f=b.length;f--;){for(c=b[f].getNodes([a.TEXT_NODE]),c.length?(b[f].splitBoundaries(),c=b[f].getNodes([a.TEXT_NODE])):(g=b[f].endContainer.ownerDocument,h=g.createTextNode(a.INVISIBLE_SPACE),b[f].insertNode(h),b[f].selectNode(h),c=[h]),i=0,j=c.length;j>i;++i)b[f].isValid()&&(d=c[i],e=this.getMatchingAncestor(d),"style"===e.type?this.undoToTextNode(d,b[f],!1,e.element):e.element&&this.undoToTextNode(d,b[f],e.element));1==j?this.selectNode(b[f],c[0]):(b[f].setStart(c[0],0),d=c[c.length-1],b[f].setEnd(d,d.length),this.normalize&&this.postApply(c,b[f]))}},selectNode:function(b,c){var d=c.nodeType===a.ELEMENT_NODE,e="canHaveHTML"in c?c.canHaveHTML:!0,f=d?c.innerHTML:c.data,g=""===f||f===a.INVISIBLE_SPACE;if(g&&d&&e)try{c.innerHTML=a.INVISIBLE_SPACE}catch(h){}b.selectNodeContents(c),g&&d?b.collapse(!1):g&&(b.setStartAfter(c),b.setEndAfter(c))},getTextSelectedByRange:function(a,b){var c,d,e=b.cloneRange();return e.selectNodeContents(a),c=e.intersection(b),d=c?""+c:"",e.detach(),d},isAppliedToRange:function(b){var c,d,e,f,g,h,i=[],j="full";for(e=b.length;e--;){if(d=b[e].getNodes([a.TEXT_NODE]),!d.length)return c=this.getMatchingAncestor(b[e].startContainer).element,c?{elements:[c],coverage:j}:!1;for(f=0,g=d.length;g>f;++f)h=this.getTextSelectedByRange(d[f],b[e]),c=this.getMatchingAncestor(d[f]).element,c&&""!=h?(i.push(c),1===a.dom.getTextNodes(c,!0).length?j="full":"full"===j&&(j="inline")):c||(j="partial")}return i.length?{elements:i,coverage:j}:!1},toggleRange:function(a){var b,c=this.isAppliedToRange(a);c?"full"===c.coverage?this.undoToRange(a):"inline"===c.coverage?(b=k(c.elements,this.tagNames,this.cssStyle,this.cssClass),this.undoToRange(a),b||this.applyToRange(a)):(k(c.elements,this.tagNames,this.cssStyle,this.cssClass)||this.undoToRange(a),this.applyToRange(a)):this.applyToRange(a)}},a.selection.HTMLApplier=s}(wysihtml5,rangy),wysihtml5.Commands=Base.extend({constructor:function(a){this.editor=a,this.composer=a.composer,this.doc=this.composer.doc},support:function(a){return wysihtml5.browser.supportsCommand(this.doc,a)},exec:function(a,b){var c=wysihtml5.commands[a],d=wysihtml5.lang.array(arguments).get(),e=c&&c.exec,f=null;if(this.editor.fire("beforecommand:composer"),e)d.unshift(this.composer),f=e.apply(c,d);else try{f=this.doc.execCommand(a,!1,b)}catch(g){}return this.editor.fire("aftercommand:composer"),f},state:function(a){var b=wysihtml5.commands[a],c=wysihtml5.lang.array(arguments).get(),d=b&&b.state;if(d)return c.unshift(this.composer),d.apply(b,c);try{return this.doc.queryCommandState(a)}catch(e){return!1}},stateValue:function(a){var b=wysihtml5.commands[a],c=wysihtml5.lang.array(arguments).get(),d=b&&b.stateValue;return d?(c.unshift(this.composer),d.apply(b,c)):!1}}),wysihtml5.commands.bold={exec:function(a,b){wysihtml5.commands.formatInline.execWithToggle(a,b,"b")},state:function(a,b){return wysihtml5.commands.formatInline.state(a,b,"b")}},function(a){function b(b,c){var g,h,i,j,k,l,m,n,o,p=b.doc,q="_wysihtml5-temp-"+ +new Date,r=/non-matching-class/g,s=0;for(a.commands.formatInline.exec(b,d,e,q,r,d,d,!0,!0),h=p.querySelectorAll(e+"."+q),g=h.length;g>s;s++){i=h[s],i.removeAttribute("class");for(o in c)"text"!==o&&i.setAttribute(o,c[o])}l=i,1===g&&(m=f.getTextContent(i),j=!!i.querySelector("*"),k=""===m||m===a.INVISIBLE_SPACE,!j&&k&&(f.setTextContent(i,c.text||i.href),n=p.createTextNode(" "),b.selection.setAfter(i),f.insert(n).after(i),l=n)),b.selection.setAfter(l)}function c(a,b,c){var d,e,f,g;for(e=b.length;e--;){for(d=b[e].attributes,f=d.length;f--;)b[e].removeAttribute(d.item(f).name);for(g in c)c.hasOwnProperty(g)&&b[e].setAttribute(g,c[g])}}var d,e="A",f=a.dom;a.commands.createLink={exec:function(a,d,e){var f=this.state(a,d);f?a.selection.executeAndRestore(function(){c(a,f,e)}):(e="object"==typeof e?e:{href:e},b(a,e))},state:function(b,c){return a.commands.formatInline.state(b,c,"A")}}}(wysihtml5),function(a){function b(a,b){for(var d,e,f,g=b.length,h=0;g>h;h++)d=b[h],e=c.getParentElement(d,{nodeName:"code"}),f=c.getTextContent(d),f.match(c.autoLink.URL_REG_EXP)&&!e?e=c.renameElement(d,"code"):c.replaceWithChildNodes(d)}var c=a.dom;a.commands.removeLink={exec:function(a,c){var d=this.state(a,c);d&&a.selection.executeAndRestore(function(){b(a,d)})},state:function(b,c){return a.commands.formatInline.state(b,c,"A")}}}(wysihtml5),function(a){var b=/wysiwyg-font-size-[0-9a-z\-]+/g;a.commands.fontSize={exec:function(c,d,e){a.commands.formatInline.execWithToggle(c,d,"span","wysiwyg-font-size-"+e,b)},state:function(c,d,e){return a.commands.formatInline.state(c,d,"span","wysiwyg-font-size-"+e,b)}}}(wysihtml5),function(a){var b=/(\s|^)font-size\s*:\s*[^;\s]+;?/gi;a.commands.fontSizeStyle={exec:function(c,d,e){e="object"==typeof e?e.size:e,/^\s*$/.test(e)||a.commands.formatInline.execWithToggle(c,d,"span",!1,!1,"font-size:"+e,b)},state:function(c,d){return a.commands.formatInline.state(c,d,"span",!1,!1,"font-size",b)},stateValue:function(b,c){var d,e=this.state(b,c);return e&&a.lang.object(e).isArray()&&(e=e[0]),e&&(d=e.getAttribute("style"),d)?a.quirks.styleParser.parseFontSize(d):!1}}}(wysihtml5),function(a){var b=/wysiwyg-color-[0-9a-z]+/g;a.commands.foreColor={exec:function(c,d,e){a.commands.formatInline.execWithToggle(c,d,"span","wysiwyg-color-"+e,b)},state:function(c,d,e){return a.commands.formatInline.state(c,d,"span","wysiwyg-color-"+e,b)}}}(wysihtml5),function(a){var b=/(\s|^)color\s*:\s*[^;\s]+;?/gi;a.commands.foreColorStyle={exec:function(c,d,e){var f,g=a.quirks.styleParser.parseColor("object"==typeof e?"color:"+e.color:"color:"+e,"color");g&&(f="color: rgb("+g[0]+","+g[1]+","+g[2]+");",1!==g[3]&&(f+="color: rgba("+g[0]+","+g[1]+","+g[2]+","+g[3]+");"),a.commands.formatInline.execWithToggle(c,d,"span",!1,!1,f,b))},state:function(c,d){return a.commands.formatInline.state(c,d,"span",!1,!1,"color",b)},stateValue:function(b,c,d){var e,f=this.state(b,c);return f&&a.lang.object(f).isArray()&&(f=f[0]),f&&(e=f.getAttribute("style"),e&&e)?(val=a.quirks.styleParser.parseColor(e,"color"),a.quirks.styleParser.unparseColor(val,d)):!1 }}}(wysihtml5),function(a){var b=/(\s|^)background-color\s*:\s*[^;\s]+;?/gi;a.commands.bgColorStyle={exec:function(c,d,e){var f,g=a.quirks.styleParser.parseColor("object"==typeof e?"background-color:"+e.color:"background-color:"+e,"background-color");g&&(f="background-color: rgb("+g[0]+","+g[1]+","+g[2]+");",1!==g[3]&&(f+="background-color: rgba("+g[0]+","+g[1]+","+g[2]+","+g[3]+");"),a.commands.formatInline.execWithToggle(c,d,"span",!1,!1,f,b))},state:function(c,d){return a.commands.formatInline.state(c,d,"span",!1,!1,"background-color",b)},stateValue:function(b,c,d){var e,f=this.state(b,c),g=!1;return f&&a.lang.object(f).isArray()&&(f=f[0]),f&&(e=f.getAttribute("style"),e)?(g=a.quirks.styleParser.parseColor(e,"background-color"),a.quirks.styleParser.unparseColor(g,d)):!1}}}(wysihtml5),function(a){function b(b,c,e){b.className?(d(b,e),b.className=a.lang.string(b.className+" "+c).trim()):b.className=c}function c(b,c,d){e(b,d),b.getAttribute("style")?b.setAttribute("style",a.lang.string(b.getAttribute("style")+" "+c).trim()):b.setAttribute("style",c)}function d(b,c){var d=c.test(b.className);return b.className=b.className.replace(c,""),""==a.lang.string(b.className).trim()&&b.removeAttribute("class"),d}function e(b,c){var d=c.test(b.getAttribute("style"));return b.setAttribute("style",(b.getAttribute("style")||"").replace(c,"")),""==a.lang.string(b.getAttribute("style")||"").trim()&&b.removeAttribute("style"),d}function f(a){var b=a.lastChild;b&&g(b)&&b.parentNode.removeChild(b)}function g(a){return"BR"===a.nodeName}function h(b,c){var d,e,g;for(b.selection.isCollapsed()&&b.selection.selectLine(),d=b.selection.surround(c),e=0,g=d.length;g>e;e++)a.dom.lineBreaks(d[e]).remove(),f(d[e])}function i(b){return!!a.lang.string(b.className).trim()}function j(b){return!!a.lang.string(b.getAttribute("style")||"").trim()}var k=a.dom,l=["H1","H2","H3","H4","H5","H6","P","PRE","DIV"];a.commands.formatBlock={exec:function(f,g,m,n,o,p,q){var r,s,t,u,v,w=(f.doc,this.state(f,g,m,n,o,p,q)),x=f.config.useLineBreaks,y=x?"DIV":"P";return m="string"==typeof m?m.toUpperCase():m,w.length?(f.selection.executeAndRestoreRangy(function(){var b,c,f;for(b=w.length;b--;){if(o&&(s=d(w[b],o)),q&&(u=e(w[b],q)),(u||s)&&null===m&&w[b].nodeName!=y)return;c=i(w[b]),f=j(w[b]),c||f||!x&&"P"!==m?k.renameElement(w[b],"P"===m?"DIV":y):(a.dom.lineBreaks(w[b]).add(),k.replaceWithChildNodes(w[b]))}}),void 0):((null!==m&&!a.lang.array(l).contains(m)||(r=f.selection.findNodesInSelection(l).concat(f.selection.getSelectedOwnNodes()),f.selection.executeAndRestoreRangy(function(){for(var a=r.length;a--;)v=k.getParentElement(r[a],{nodeName:l}),v==f.element&&(v=null),v&&(m&&(v=k.renameElement(v,m)),n&&b(v,n,o),p&&c(v,p,q),t=!0)}),!t))&&h(f,{nodeName:m||y,className:n||null,cssStyle:p||null}),void 0)},state:function(b,c,d,e,f,g,h){var i,j,l,m=b.selection.getSelectedOwnNodes(),n=[];for(d="string"==typeof d?d.toUpperCase():d,j=0,l=m.length;l>j;j++)i=k.getParentElement(m[j],{nodeName:d,className:e,classRegExp:f,cssStyle:g,styleRegExp:h}),i&&-1==a.lang.array(n).indexOf(i)&&n.push(i);return 0==n.length?!1:n}}}(wysihtml5),wysihtml5.commands.formatCode={exec:function(a,b,c){var d,e,f,g=this.state(a);g?a.selection.executeAndRestore(function(){d=g.querySelector("code"),wysihtml5.dom.replaceWithChildNodes(g),d&&wysihtml5.dom.replaceWithChildNodes(d)}):(e=a.selection.getRange(),f=e.extractContents(),g=a.doc.createElement("pre"),d=a.doc.createElement("code"),c&&(d.className=c),g.appendChild(d),d.appendChild(f),e.insertNode(g),a.selection.selectNode(g))},state:function(a){var b=a.selection.getSelectedNode();return b&&b.nodeName&&"PRE"==b.nodeName&&b.firstChild&&b.firstChild.nodeName&&"CODE"==b.firstChild.nodeName?b:wysihtml5.dom.getParentElement(b,{nodeName:"CODE"})&&wysihtml5.dom.getParentElement(b,{nodeName:"PRE"})}},function(a){function b(a){var b=d[a];return b?[a.toLowerCase(),b.toLowerCase()]:[a.toLowerCase()]}function c(c,d,f,g,h,i){var j=c;return d&&(j+=":"+d),g&&(j+=":"+g),e[j]||(e[j]=new a.selection.HTMLApplier(b(c),d,f,!0,g,h,i)),e[j]}var d={strong:"b",em:"i",b:"strong",i:"em"},e={};a.commands.formatInline={exec:function(a,b,d,e,f,g,h,i,j){var k=a.selection.createRange(),l=a.selection.getOwnRanges();return l&&0!=l.length?(a.selection.getSelection().removeAllRanges(),c(d,e,f,g,h,a.element).toggleRange(l),i?j||a.cleanUp():(k.setStart(l[0].startContainer,l[0].startOffset),k.setEnd(l[l.length-1].endContainer,l[l.length-1].endOffset),a.selection.setSelection(k),a.selection.executeAndRestore(function(){j||a.cleanUp()},!0,!0)),void 0):!1},execWithToggle:function(b,c,d,e,f,g,h){var i,j=this;this.state(b,c,d,e,f,g,h)&&b.selection.isCollapsed()&&!b.selection.caretIsLastInSelection()&&!b.selection.caretIsFirstInSelection()?(i=j.state(b,c,d,e,f)[0],b.selection.executeAndRestoreRangy(function(){i.parentNode;b.selection.selectNode(i,!0),a.commands.formatInline.exec(b,c,d,e,f,g,h,!0,!0)})):this.state(b,c,d,e,f,g,h)&&!b.selection.isCollapsed()?b.selection.executeAndRestoreRangy(function(){a.commands.formatInline.exec(b,c,d,e,f,g,h,!0,!0)}):a.commands.formatInline.exec(b,c,d,e,f,g,h)},state:function(b,e,f,g,h,i,j){var k,l,m=b.doc,n=d[f]||f;return a.dom.hasElementWithTagName(m,f)||a.dom.hasElementWithTagName(m,n)?g&&!a.dom.hasElementWithClassName(m,g)?!1:(k=b.selection.getOwnRanges(),k&&0!==k.length?(l=c(f,g,h,i,j,b.element).isAppliedToRange(k),l&&l.elements?l.elements:!1):!1):!1}}}(wysihtml5),function(a){a.commands.insertBlockQuote={exec:function(b,c){var d=this.state(b,c),e=b.selection.isEndToEndInNode(["H1","H2","H3","H4","H5","H6","P"]);b.selection.executeAndRestore(function(){if(d)b.config.useLineBreaks&&a.dom.lineBreaks(d).add(),a.dom.unwrap(d);else if(b.selection.isCollapsed()&&b.selection.selectLine(),e){var c=e.ownerDocument.createElement("blockquote");a.dom.insert(c).after(e),c.appendChild(e)}else b.selection.surround({nodeName:"blockquote"})})},state:function(b){var c=b.selection.getSelectedNode(),d=a.dom.getParentElement(c,{nodeName:"BLOCKQUOTE"},!1,b.element);return d?d:!1}}}(wysihtml5),wysihtml5.commands.insertHTML={exec:function(a,b,c){a.commands.support(b)?a.doc.execCommand(b,!1,c):a.selection.insertHTML(c)},state:function(){return!1}},function(a){var b="IMG";a.commands.insertImage={exec:function(c,d,e){var f,g,h,i,j;if(e="object"==typeof e?e:{src:e},f=c.doc,g=this.state(c),g)return c.selection.setBefore(g),i=g.parentNode,i.removeChild(g),a.dom.removeEmptyTextNodes(i),"A"!==i.nodeName||i.firstChild||(c.selection.setAfter(i),i.parentNode.removeChild(i)),a.quirks.redraw(c.element),void 0;g=f.createElement(b);for(j in e)g.setAttribute("className"===j?"class":j,e[j]);c.selection.insertNode(g),a.browser.hasProblemsSettingCaretAfterImg()?(h=f.createTextNode(a.INVISIBLE_SPACE),c.selection.insertNode(h),c.selection.setAfter(h)):c.selection.setAfter(g)},state:function(c){var d,e,f,g=c.doc;return a.dom.hasElementWithTagName(g,b)?(d=c.selection.getSelectedNode(),d?d.nodeName===b?d:d.nodeType!==a.ELEMENT_NODE?!1:(e=c.selection.getText(),e=a.lang.string(e).trim(),e?!1:(f=c.selection.getNodes(a.ELEMENT_NODE,function(a){return"IMG"===a.nodeName}),1!==f.length?!1:f[0])):!1):!1}}}(wysihtml5),function(a){var b="<br>"+(a.browser.needsSpaceAfterLineBreak()?" ":"");a.commands.insertLineBreak={exec:function(c,d){c.commands.support(d)?(c.doc.execCommand(d,!1,null),a.browser.autoScrollsToCaret()||c.selection.scrollIntoView()):c.commands.exec("insertHTML",b)},state:function(){return!1}}}(wysihtml5),wysihtml5.commands.insertOrderedList={exec:function(a,b){wysihtml5.commands.insertList.exec(a,b,"OL")},state:function(a,b){return wysihtml5.commands.insertList.state(a,b,"OL")}},wysihtml5.commands.insertUnorderedList={exec:function(a,b){wysihtml5.commands.insertList.exec(a,b,"UL")},state:function(a,b){return wysihtml5.commands.insertList.state(a,b,"UL")}},wysihtml5.commands.insertList=function(a){var b=function(a,b){if(a&&a.nodeName){"string"==typeof b&&(b=[b]);for(var c=b.length;c--;)if(a.nodeName===b[c])return!0}return!1},c=function(c,d,e){var f,g,h={el:null,other:!1};return c&&(f=a.dom.getParentElement(c,{nodeName:"LI"}),g="UL"===d?"OL":"UL",b(c,d)?h.el=c:b(c,g)?h={el:c,other:!0}:f&&(b(f.parentNode,d)?h.el=f.parentNode:b(f.parentNode,g)&&(h={el:f.parentNode,other:!0}))),h.el&&!e.element.contains(h.el)&&(h.el=null),h},d=function(b,c,d){var e,g="UL"===c?"OL":"UL";d.selection.executeAndRestore(function(){var h,i,j=f(g,d);if(j.length)for(h=j.length;h--;)a.dom.renameElement(j[h],c.toLowerCase());else{for(e=f(["OL","UL"],d),i=e.length;i--;)a.dom.resolveList(e[i],d.config.useLineBreaks);a.dom.resolveList(b,d.config.useLineBreaks)}})},e=function(b,c,d){var e="UL"===c?"OL":"UL";d.selection.executeAndRestore(function(){var g,h=[b].concat(f(e,d));for(g=h.length;g--;)a.dom.renameElement(h[g],c.toLowerCase())})},f=function(a,c){var d,e=c.selection.getOwnRanges(),f=[];for(d=e.length;d--;)f=f.concat(e[d].getNodes([1],function(c){return b(c,a)}));return f},g=function(b,c){c.selection.executeAndRestoreRangy(function(){var d,e,f="_wysihtml5-temp-"+(new Date).getTime(),g=c.selection.deblockAndSurround({nodeName:"div",className:f}),h=/\uFEFF/g;g.innerHTML=g.innerHTML.replace(h,""),g&&(d=a.lang.array(["","<br>",a.INVISIBLE_SPACE]).contains(g.innerHTML),e=a.dom.convertToList(g,b.toLowerCase(),c.parent.config.uneditableContainerClassname),d&&c.selection.selectNode(e.querySelector("li"),!0))})};return{exec:function(a,b,f){var h=a.doc,i="OL"===f?"insertOrderedList":"insertUnorderedList",j=a.selection.getSelectedNode(),k=c(j,f,a);k.el?k.other?e(k.el,f,a):d(k.el,f,a):a.commands.support(i)?h.execCommand(i,!1,null):g(f,a)},state:function(a,b,d){var e=a.selection.getSelectedNode(),f=c(e,d,a);return f.el&&!f.other?f.el:!1}}}(wysihtml5),wysihtml5.commands.italic={exec:function(a,b){wysihtml5.commands.formatInline.execWithToggle(a,b,"i")},state:function(a,b){return wysihtml5.commands.formatInline.state(a,b,"i")}},function(a){var b="wysiwyg-text-align-center",c=/wysiwyg-text-align-[0-9a-z]+/g;a.commands.justifyCenter={exec:function(d){return a.commands.formatBlock.exec(d,"formatBlock",null,b,c)},state:function(d){return a.commands.formatBlock.state(d,"formatBlock",null,b,c)}}}(wysihtml5),function(a){var b="wysiwyg-text-align-left",c=/wysiwyg-text-align-[0-9a-z]+/g;a.commands.justifyLeft={exec:function(d){return a.commands.formatBlock.exec(d,"formatBlock",null,b,c)},state:function(d){return a.commands.formatBlock.state(d,"formatBlock",null,b,c)}}}(wysihtml5),function(a){var b="wysiwyg-text-align-right",c=/wysiwyg-text-align-[0-9a-z]+/g;a.commands.justifyRight={exec:function(d){return a.commands.formatBlock.exec(d,"formatBlock",null,b,c)},state:function(d){return a.commands.formatBlock.state(d,"formatBlock",null,b,c)}}}(wysihtml5),function(a){var b="wysiwyg-text-align-justify",c=/wysiwyg-text-align-[0-9a-z]+/g;a.commands.justifyFull={exec:function(d){return a.commands.formatBlock.exec(d,"formatBlock",null,b,c)},state:function(d){return a.commands.formatBlock.state(d,"formatBlock",null,b,c)}}}(wysihtml5),function(a){var b="text-align: right;",c=/(\s|^)text-align\s*:\s*[^;\s]+;?/gi;a.commands.alignRightStyle={exec:function(d){return a.commands.formatBlock.exec(d,"formatBlock",null,null,null,b,c)},state:function(d){return a.commands.formatBlock.state(d,"formatBlock",null,null,null,b,c)}}}(wysihtml5),function(a){var b="text-align: left;",c=/(\s|^)text-align\s*:\s*[^;\s]+;?/gi;a.commands.alignLeftStyle={exec:function(d){return a.commands.formatBlock.exec(d,"formatBlock",null,null,null,b,c)},state:function(d){return a.commands.formatBlock.state(d,"formatBlock",null,null,null,b,c)}}}(wysihtml5),function(a){var b="text-align: center;",c=/(\s|^)text-align\s*:\s*[^;\s]+;?/gi;a.commands.alignCenterStyle={exec:function(d){return a.commands.formatBlock.exec(d,"formatBlock",null,null,null,b,c)},state:function(d){return a.commands.formatBlock.state(d,"formatBlock",null,null,null,b,c)}}}(wysihtml5),wysihtml5.commands.redo={exec:function(a){return a.undoManager.redo()},state:function(){return!1}},wysihtml5.commands.underline={exec:function(a,b){wysihtml5.commands.formatInline.execWithToggle(a,b,"u")},state:function(a,b){return wysihtml5.commands.formatInline.state(a,b,"u")}},wysihtml5.commands.undo={exec:function(a){return a.undoManager.undo()},state:function(){return!1}},wysihtml5.commands.createTable={exec:function(a,b,c){var d,e,f;if(c&&c.cols&&c.rows&&parseInt(c.cols,10)>0&&parseInt(c.rows,10)>0){for(f=c.tableStyle?'<table style="'+c.tableStyle+'">':"<table>",f+="<tbody>",e=0;e<c.rows;e++){for(f+="<tr>",d=0;d<c.cols;d++)f+="<td> </td>";f+="</tr>"}f+="</tbody></table>",a.commands.exec("insertHTML",f)}},state:function(){return!1}},wysihtml5.commands.mergeTableCells={exec:function(a,b){a.tableSelection&&a.tableSelection.start&&a.tableSelection.end&&(this.state(a,b)?wysihtml5.dom.table.unmergeCell(a.tableSelection.start):wysihtml5.dom.table.mergeCellsBetween(a.tableSelection.start,a.tableSelection.end))},state:function(a){if(a.tableSelection){var b=a.tableSelection.start,c=a.tableSelection.end;if(b&&c&&b==c&&(wysihtml5.dom.getAttribute(b,"colspan")&&parseInt(wysihtml5.dom.getAttribute(b,"colspan"),10)>1||wysihtml5.dom.getAttribute(b,"rowspan")&&parseInt(wysihtml5.dom.getAttribute(b,"rowspan"),10)>1))return[b]}return!1}},wysihtml5.commands.addTableCells={exec:function(a,b,c){if(a.tableSelection&&a.tableSelection.start&&a.tableSelection.end){var d=wysihtml5.dom.table.orderSelectionEnds(a.tableSelection.start,a.tableSelection.end);"before"==c||"above"==c?wysihtml5.dom.table.addCells(d.start,c):("after"==c||"below"==c)&&wysihtml5.dom.table.addCells(d.end,c),setTimeout(function(){a.tableSelection.select(d.start,d.end)},0)}},state:function(){return!1}},wysihtml5.commands.deleteTableCells={exec:function(a,b,c){if(a.tableSelection&&a.tableSelection.start&&a.tableSelection.end){var d,e=wysihtml5.dom.table.orderSelectionEnds(a.tableSelection.start,a.tableSelection.end),f=wysihtml5.dom.table.indexOf(e.start),g=a.tableSelection.table;wysihtml5.dom.table.removeCells(e.start,c),setTimeout(function(){d=wysihtml5.dom.table.findCell(g,f),d||("row"==c&&(d=wysihtml5.dom.table.findCell(g,{row:f.row-1,col:f.col})),"column"==c&&(d=wysihtml5.dom.table.findCell(g,{row:f.row,col:f.col-1}))),d&&a.tableSelection.select(d,d)},0)}},state:function(){return!1}},wysihtml5.commands.indentList={exec:function(a){var b=a.selection.getSelectionParentsByTag("LI");return b?this.tryToPushLiLevel(b,a.selection):!1},state:function(){return!1},tryToPushLiLevel:function(a,b){var c,d,e,f,g,h=!1;return b.executeAndRestoreRangy(function(){for(var b=a.length;b--;)f=a[b],c="OL"===f.parentNode.nodeName?"OL":"UL",d=f.ownerDocument.createElement(c),e=wysihtml5.dom.domNode(f).prev({nodeTypes:[wysihtml5.ELEMENT_NODE]}),g=e?e.querySelector("ul, ol"):null,e&&(g?g.appendChild(f):(d.appendChild(f),e.appendChild(d)),h=!0)}),h}},wysihtml5.commands.outdentList={exec:function(a){var b=a.selection.getSelectionParentsByTag("LI");return b?this.tryToPullLiLevel(b,a):!1},state:function(){return!1},tryToPullLiLevel:function(a,b){var c,d,e,f,g,h=!1,i=this;return b.selection.executeAndRestoreRangy(function(){var j,k;for(j=a.length;j--;)if(f=a[j],f.parentNode&&(c=f.parentNode,"OL"===c.tagName||"UL"===c.tagName)){if(h=!0,d=wysihtml5.dom.getParentElement(c.parentNode,{nodeName:["OL","UL"]},!1,b.element),e=wysihtml5.dom.getParentElement(c.parentNode,{nodeName:["LI"]},!1,b.element),d&&e)f.nextSibling&&(g=i.getAfterList(c,f),f.appendChild(g)),d.insertBefore(f,e.nextSibling);else{for(f.nextSibling&&(g=i.getAfterList(c,f),f.appendChild(g)),k=f.childNodes.length;k--;)c.parentNode.insertBefore(f.childNodes[k],c.nextSibling);c.parentNode.insertBefore(document.createElement("br"),c.nextSibling),f.parentNode.removeChild(f)}0===c.childNodes.length&&c.parentNode.removeChild(c)}}),h},getAfterList:function(a,b){for(var c=a.nodeName,d=document.createElement(c);b.nextSibling;)d.appendChild(b.nextSibling);return d}},function(a){var b=90,c=89,d=8,e=46,f=25,g="data-wysihtml5-selection-node",h="data-wysihtml5-selection-offset",i=('<span id="_wysihtml5-undo" class="_wysihtml5-temp">'+a.INVISIBLE_SPACE+"</span>",'<span id="_wysihtml5-redo" class="_wysihtml5-temp">'+a.INVISIBLE_SPACE+"</span>",a.dom);a.UndoManager=a.lang.Dispatcher.extend({constructor:function(a){this.editor=a,this.composer=a.composer,this.element=this.composer.element,this.position=0,this.historyStr=[],this.historyDom=[],this.transact(),this._observe()},_observe:function(){{var a,f=this;this.composer.sandbox.getDocument()}i.observe(this.element,"keydown",function(a){if(!a.altKey&&(a.ctrlKey||a.metaKey)){var d=a.keyCode,e=d===b&&!a.shiftKey,g=d===b&&a.shiftKey||d===c;e?(f.undo(),a.preventDefault()):g&&(f.redo(),a.preventDefault())}}),i.observe(this.element,"keydown",function(b){var c=b.keyCode;c!==a&&(a=c,(c===d||c===e)&&f.transact())}),this.editor.on("newword:composer",function(){f.transact()}).on("beforecommand:composer",function(){f.transact()})},transact:function(){var b,c,d,e,i,j,k,l=this.historyStr[this.position-1],m=this.composer.getValue(!1,!1),n=this.element.offsetWidth>0&&this.element.offsetHeight>0;m!==l&&(j=this.historyStr.length=this.historyDom.length=this.position,j>f&&(this.historyStr.shift(),this.historyDom.shift(),this.position--),this.position++,n&&(b=this.composer.selection.getRange(),c=b&&b.startContainer?b.startContainer:this.element,d=b&&b.startOffset?b.startOffset:0,c.nodeType===a.ELEMENT_NODE?e=c:(e=c.parentNode,i=this.getChildNodeIndex(e,c)),e.setAttribute(h,d),void 0!==i&&e.setAttribute(g,i)),k=this.element.cloneNode(!!m),this.historyDom.push(k),this.historyStr.push(m),e&&(e.removeAttribute(h),e.removeAttribute(g)))},undo:function(){this.transact(),this.undoPossible()&&(this.set(this.historyDom[--this.position-1]),this.editor.fire("undo:composer"))},redo:function(){this.redoPossible()&&(this.set(this.historyDom[++this.position-1]),this.editor.fire("redo:composer"))},undoPossible:function(){return this.position>1},redoPossible:function(){return this.position<this.historyStr.length},set:function(a){var b,c,d,e,f,i;for(this.element.innerHTML="",b=0,c=a.childNodes,d=a.childNodes.length;d>b;b++)this.element.appendChild(c[b].cloneNode(!0));a.hasAttribute(h)?(e=a.getAttribute(h),i=a.getAttribute(g),f=this.element):(f=this.element.querySelector("["+h+"]")||this.element,e=f.getAttribute(h),i=f.getAttribute(g),f.removeAttribute(h),f.removeAttribute(g)),null!==i&&(f=this.getChildNodeByIndex(f,+i)),this.composer.selection.set(f,e)},getChildNodeIndex:function(a,b){for(var c=0,d=a.childNodes,e=d.length;e>c;c++)if(d[c]===b)return c},getChildNodeByIndex:function(a,b){return a.childNodes[b]}})}(wysihtml5),wysihtml5.views.View=Base.extend({constructor:function(a,b,c){this.parent=a,this.element=b,this.config=c,this.config.noTextarea||this._observeViewChange()},_observeViewChange:function(){var a=this;this.parent.on("beforeload",function(){a.parent.on("change_view",function(b){b===a.name?(a.parent.currentView=a,a.show(),setTimeout(function(){a.focus()},0)):a.hide()})})},focus:function(){if(this.element.ownerDocument.querySelector(":focus")!==this.element)try{this.element.focus()}catch(a){}},hide:function(){this.element.style.display="none"},show:function(){this.element.style.display=""},disable:function(){this.element.setAttribute("disabled","disabled")},enable:function(){this.element.removeAttribute("disabled")}}),function(a){var b=a.dom,c=a.browser;a.views.Composer=a.views.View.extend({name:"composer",CARET_HACK:"<br>",constructor:function(a,b,c){this.base(a,b,c),this.config.noTextarea?this.editableArea=b:this.textarea=this.parent.textarea,this.config.contentEditableMode?this._initContentEditableArea():this._initSandbox()},clear:function(){this.element.innerHTML=c.displaysCaretInEmptyContentEditableCorrectly()?"":this.CARET_HACK},getValue:function(b,c){var d=this.isEmpty()?"":a.quirks.getCorrectInnerHTML(this.element);return b!==!1&&(d=this.parent.parse(d,c===!1?!1:!0)),d},setValue:function(a,b){b&&(a=this.parent.parse(a));try{this.element.innerHTML=a}catch(c){this.element.innerText=a}},cleanUp:function(){this.parent.parse(this.element)},show:function(){this.editableArea.style.display=this._displayStyle||"",this.config.noTextarea||this.textarea.element.disabled||(this.disable(),this.enable())},hide:function(){this._displayStyle=b.getStyle("display").from(this.editableArea),"none"===this._displayStyle&&(this._displayStyle=null),this.editableArea.style.display="none"},disable:function(){this.parent.fire("disable:composer"),this.element.removeAttribute("contentEditable")},enable:function(){this.parent.fire("enable:composer"),this.element.setAttribute("contentEditable","true")},focus:function(b){a.browser.doesAsyncFocus()&&this.hasPlaceholderSet()&&this.clear(),this.base();var c=this.element.lastChild;b&&c&&this.selection&&("BR"===c.nodeName?this.selection.setBefore(this.element.lastChild):this.selection.setAfter(this.element.lastChild))},getTextContent:function(){return b.getTextContent(this.element)},hasPlaceholderSet:function(){return this.getTextContent()==(this.config.noTextarea?this.editableArea.getAttribute("data-placeholder"):this.textarea.element.getAttribute("placeholder"))&&this.placeholderSet},isEmpty:function(){var a=this.element.innerHTML.toLowerCase();return/^(\s|<br>|<\/br>|<p>|<\/p>)*$/i.test(a)||""===a||"<br>"===a||"<p></p>"===a||"<p><br></p>"===a||this.hasPlaceholderSet()},_initContentEditableArea:function(){var a=this;this.config.noTextarea?this.sandbox=new b.ContentEditableArea(function(){a._create()},{},this.editableArea):(this.sandbox=new b.ContentEditableArea(function(){a._create()}),this.editableArea=this.sandbox.getContentEditable(),b.insert(this.editableArea).after(this.textarea.element),this._createWysiwygFormField())},_initSandbox:function(){var a,c=this;this.sandbox=new b.Sandbox(function(){c._create()},{stylesheets:this.config.stylesheets}),this.editableArea=this.sandbox.getIframe(),a=this.textarea.element,b.insert(this.editableArea).after(a),this._createWysiwygFormField()},_createWysiwygFormField:function(){if(this.textarea.element.form){var a=document.createElement("input");a.type="hidden",a.name="_wysihtml5_mode",a.value=1,b.insert(a).after(this.textarea.element)}},_create:function(){var d,e,f=this;this.doc=this.sandbox.getDocument(),this.element=this.config.contentEditableMode?this.sandbox.getContentEditable():this.doc.body,this.config.noTextarea?this.cleanUp():(this.textarea=this.parent.textarea,this.element.innerHTML=this.textarea.getValue(!0,!1)),this.selection=new a.Selection(this.parent,this.element,this.config.uneditableContainerClassname),this.commands=new a.Commands(this.parent),this.config.noTextarea||b.copyAttributes(["className","spellcheck","title","lang","dir","accessKey"]).from(this.textarea.element).to(this.element),b.addClass(this.element,this.config.composerClassName),this.config.style&&!this.config.contentEditableMode&&this.style(),this.observe(),d=this.config.name,d&&(b.addClass(this.element,d),this.config.contentEditableMode||b.addClass(this.editableArea,d)),this.enable(),!this.config.noTextarea&&this.textarea.element.disabled&&this.disable(),e="string"==typeof this.config.placeholder?this.config.placeholder:this.config.noTextarea?this.editableArea.getAttribute("data-placeholder"):this.textarea.element.getAttribute("placeholder"),e&&b.simulatePlaceholder(this.parent,this,e),this.commands.exec("styleWithCSS",!1),this._initAutoLinking(),this._initObjectResizing(),this._initUndoManager(),this._initLineBreaking(),this.config.noTextarea||!this.textarea.element.hasAttribute("autofocus")&&document.querySelector(":focus")!=this.textarea.element||c.isIos()||setTimeout(function(){f.focus(!0)},100),c.clearsContentEditableCorrectly()||a.quirks.ensureProperClearing(this),this.initSync&&this.config.sync&&this.initSync(),this.config.noTextarea||this.textarea.hide(),this.parent.fire("beforeload").fire("load")},_initAutoLinking:function(){var d,e,f,g=this,h=c.canDisableAutoLinking(),i=c.doesAutoLinkingInContentEditable();h&&this.commands.exec("autoUrlDetect",!1),this.config.autoLink&&((!i||i&&h)&&(this.parent.on("newword:composer",function(){b.getTextContent(g.element).match(b.autoLink.URL_REG_EXP)&&g.selection.executeAndRestore(function(c,d){var e,f=g.element.querySelectorAll("."+g.config.uneditableContainerClassname),h=!1;for(e=f.length;e--;)a.dom.contains(f[e],d)&&(h=!0);h||b.autoLink(d.parentNode,[g.config.uneditableContainerClassname])})}),b.observe(this.element,"blur",function(){b.autoLink(g.element,[g.config.uneditableContainerClassname])})),d=this.sandbox.getDocument().getElementsByTagName("a"),e=b.autoLink.URL_REG_EXP,f=function(c){var d=a.lang.string(b.getTextContent(c)).trim();return"www."===d.substr(0,4)&&(d="http://"+d),d},b.observe(this.element,"keydown",function(a){if(d.length){var c,h=g.selection.getSelectedNode(a.target.ownerDocument),i=b.getParentElement(h,{nodeName:"A"},4);i&&(c=f(i),setTimeout(function(){var a=f(i);a!==c&&a.match(e)&&i.setAttribute("href",a)},0))}}))},_initObjectResizing:function(){if(this.commands.exec("enableObjectResizing",!0),c.supportsEvent("resizeend")){var d=["width","height"],e=d.length,f=this.element;b.observe(f,"resizeend",function(b){var c,g=b.target||b.srcElement,h=g.style,i=0;if("IMG"===g.nodeName){for(;e>i;i++)c=d[i],h[c]&&(g.setAttribute(c,parseInt(h[c],10)),h[c]="");a.quirks.redraw(f)}})}},_initUndoManager:function(){this.undoManager=new a.UndoManager(this.parent)},_initLineBreaking:function(){function d(a){var c=b.getParentElement(a,{nodeName:["P","DIV"]},2);c&&b.contains(e.element,c)&&e.selection.executeAndRestore(function(){e.config.useLineBreaks?b.replaceWithChildNodes(c):"P"!==c.nodeName&&b.renameElement(c,"p")})}var e=this,f=["LI","P","H1","H2","H3","H4","H5","H6"],g=["UL","OL","MENU"];this.config.useLineBreaks||b.observe(this.element,["focus","keydown"],function(){if(e.isEmpty()){var a=e.doc.createElement("P");e.element.innerHTML="",e.element.appendChild(a),c.displaysCaretInEmptyContentEditableCorrectly()?e.selection.selectNode(a,!0):(a.innerHTML="<br>",e.selection.setBefore(a.firstChild))}}),b.observe(this.element,"keydown",function(c){var h,i=c.keyCode;if(!c.shiftKey&&(i===a.ENTER_KEY||i===a.BACKSPACE_KEY))return h=b.getParentElement(e.selection.getSelectedNode(),{nodeName:f},4),h?(setTimeout(function(){var c,f=e.selection.getSelectedNode();if("LI"===h.nodeName){if(!f)return;c=b.getParentElement(f,{nodeName:g},2),c||d(f)}i===a.ENTER_KEY&&h.nodeName.match(/^H[1-6]$/)&&d(f)},0),void 0):(e.config.useLineBreaks&&i===a.ENTER_KEY&&!a.browser.insertsLineBreaksOnReturn()&&(c.preventDefault(),e.commands.exec("insertLineBreak")),void 0)})}})}(wysihtml5),function(a){var b=a.dom,c=document,d=window,e=c.createElement("div"),f=["background-color","color","cursor","font-family","font-size","font-style","font-variant","font-weight","line-height","letter-spacing","text-align","text-decoration","text-indent","text-rendering","word-break","word-wrap","word-spacing"],g=["background-color","border-collapse","border-bottom-color","border-bottom-style","border-bottom-width","border-left-color","border-left-style","border-left-width","border-right-color","border-right-style","border-right-width","border-top-color","border-top-style","border-top-width","clear","display","float","margin-bottom","margin-left","margin-right","margin-top","outline-color","outline-offset","outline-width","outline-style","padding-left","padding-right","padding-top","padding-bottom","position","top","left","right","bottom","z-index","vertical-align","text-align","-webkit-box-sizing","-moz-box-sizing","-ms-box-sizing","box-sizing","-webkit-box-shadow","-moz-box-shadow","-ms-box-shadow","box-shadow","-webkit-border-top-right-radius","-moz-border-radius-topright","border-top-right-radius","-webkit-border-bottom-right-radius","-moz-border-radius-bottomright","border-bottom-right-radius","-webkit-border-bottom-left-radius","-moz-border-radius-bottomleft","border-bottom-left-radius","-webkit-border-top-left-radius","-moz-border-radius-topleft","border-top-left-radius","width","height"],h=["html { height: 100%; }","body { height: 100%; padding: 1px 0 0 0; margin: -1px 0 0 0; }","body > p:first-child { margin-top: 0; }","._wysihtml5-temp { display: none; }",a.browser.isGecko?"body.placeholder { color: graytext !important; }":"body.placeholder { color: #a9a9a9 !important; }","img:-moz-broken { -moz-force-broken-image-icon: 1; height: 24px; width: 24px; }"],i=function(a){if(a.setActive)try{a.setActive()}catch(e){}else{var f=a.style,g=c.documentElement.scrollTop||c.body.scrollTop,h=c.documentElement.scrollLeft||c.body.scrollLeft,i={position:f.position,top:f.top,left:f.left,WebkitUserSelect:f.WebkitUserSelect};b.setStyles({position:"absolute",top:"-99999px",left:"-99999px",WebkitUserSelect:"none"}).on(a),a.focus(),b.setStyles(i).on(a),d.scrollTo&&d.scrollTo(h,g)}};a.views.Composer.prototype.style=function(){var d,j,k=this,l=c.querySelector(":focus"),m=this.textarea.element,n=m.hasAttribute("placeholder"),o=n&&m.getAttribute("placeholder"),p=m.style.display,q=m.disabled;return this.focusStylesHost=e.cloneNode(!1),this.blurStylesHost=e.cloneNode(!1),this.disabledStylesHost=e.cloneNode(!1),n&&m.removeAttribute("placeholder"),m===l&&m.blur(),m.disabled=!1,m.style.display=d="none",(m.getAttribute("rows")&&"auto"===b.getStyle("height").from(m)||m.getAttribute("cols")&&"auto"===b.getStyle("width").from(m))&&(m.style.display=d=p),b.copyStyles(g).from(m).to(this.editableArea).andTo(this.blurStylesHost),b.copyStyles(f).from(m).to(this.element).andTo(this.blurStylesHost),b.insertCSS(h).into(this.element.ownerDocument),m.disabled=!0,b.copyStyles(g).from(m).to(this.disabledStylesHost),b.copyStyles(f).from(m).to(this.disabledStylesHost),m.disabled=q,m.style.display=p,i(m),m.style.display=d,b.copyStyles(g).from(m).to(this.focusStylesHost),b.copyStyles(f).from(m).to(this.focusStylesHost),m.style.display=p,b.copyStyles(["display"]).from(m).to(this.editableArea),j=a.lang.array(g).without(["display"]),l?l.focus():m.blur(),n&&m.setAttribute("placeholder",o),this.parent.on("focus:composer",function(){b.copyStyles(j).from(k.focusStylesHost).to(k.editableArea),b.copyStyles(f).from(k.focusStylesHost).to(k.element)}),this.parent.on("blur:composer",function(){b.copyStyles(j).from(k.blurStylesHost).to(k.editableArea),b.copyStyles(f).from(k.blurStylesHost).to(k.element)}),this.parent.observe("disable:composer",function(){b.copyStyles(j).from(k.disabledStylesHost).to(k.editableArea),b.copyStyles(f).from(k.disabledStylesHost).to(k.element)}),this.parent.observe("enable:composer",function(){b.copyStyles(j).from(k.blurStylesHost).to(k.editableArea),b.copyStyles(f).from(k.blurStylesHost).to(k.element)}),this}}(wysihtml5),function(a){var b=a.dom,c=a.browser,d={66:"bold",73:"italic",85:"underline"},e=function(a,b,c){var d,e=a.getPreviousNode(b,!0),f=a.getSelectedNode();if(1!==f.nodeType&&f.parentNode!==c&&(f=f.parentNode),e)if(1==f.nodeType){if(d=f.firstChild,1==e.nodeType)for(;f.firstChild;)e.appendChild(f.firstChild);else for(;f.firstChild;)b.parentNode.insertBefore(f.firstChild,b);f.parentNode&&f.parentNode.removeChild(f),a.setBefore(d)}else 1==e.nodeType?e.appendChild(f):b.parentNode.insertBefore(f,b),a.setBefore(f)},f=function(a,b,c,d){var f,g,h;b.isCollapsed()?b.caretIsInTheBeginnig("LI")?(a.preventDefault(),d.commands.exec("outdentList")):b.caretIsInTheBeginnig()?a.preventDefault():(b.caretIsFirstInSelection()&&b.getPreviousNode()&&b.getPreviousNode().nodeName&&/^H\d$/gi.test(b.getPreviousNode().nodeName)&&(f=b.getPreviousNode(),a.preventDefault(),/^\s*$/.test(f.textContent||f.innerText)?f.parentNode.removeChild(f):(g=f.ownerDocument.createRange(),g.selectNodeContents(f),g.collapse(!1),b.setSelection(g))),h=b.caretIsBeforeUneditable(),h&&(a.preventDefault(),e(b,h,c))):b.containsUneditable()&&(a.preventDefault(),b.deleteContents())},g=function(a){if(a.selection.isCollapsed()){if(a.selection.caretIsInTheBeginnig("LI")&&a.commands.exec("indentList"))return}else a.selection.deleteContents(); a.commands.exec("insertHTML"," ")};a.views.Composer.prototype.observe=function(){var e,h,i=this,j=this.getValue(!1,!1),k=this.sandbox.getIframe?this.sandbox.getIframe():this.sandbox.getContentEditable(),l=this.element,m=c.supportsEventsInIframeCorrectly()||this.sandbox.getContentEditable?l:this.sandbox.getWindow(),n=["drop","paste","beforepaste"],o=["drop","paste","mouseup","focus","keyup"];b.observe(k,"DOMNodeRemoved",function(){clearInterval(e),i.parent.fire("destroy:composer")}),c.supportsMutationEvents()||(e=setInterval(function(){b.contains(document.documentElement,k)||(clearInterval(e),i.parent.fire("destroy:composer"))},250)),b.observe(m,o,function(){setTimeout(function(){i.parent.fire("interaction").fire("interaction:composer")},0)}),this.config.handleTables&&(!this.tableClickHandle&&this.doc.execCommand&&a.browser.supportsCommand(this.doc,"enableObjectResizing")&&a.browser.supportsCommand(this.doc,"enableInlineTableEditing")&&(this.sandbox.getIframe?this.tableClickHandle=b.observe(k,["focus","mouseup","mouseover"],function(){i.doc.execCommand("enableObjectResizing",!1,"false"),i.doc.execCommand("enableInlineTableEditing",!1,"false"),i.tableClickHandle.stop()}):setTimeout(function(){i.doc.execCommand("enableObjectResizing",!1,"false"),i.doc.execCommand("enableInlineTableEditing",!1,"false")},0)),this.tableSelection=a.quirks.tableCellsSelection(l,i.parent)),b.observe(m,"focus",function(a){i.parent.fire("focus",a).fire("focus:composer",a),setTimeout(function(){j=i.getValue(!1,!1)},0)}),b.observe(m,"blur",function(a){if(j!==i.getValue(!1,!1)){var b=a;"function"==typeof Object.create&&(b=Object.create(a,{type:{value:"change"}})),i.parent.fire("change",b).fire("change:composer",b)}i.parent.fire("blur",a).fire("blur:composer",a)}),b.observe(l,"dragenter",function(){i.parent.fire("unset_placeholder")}),b.observe(l,n,function(a){i.parent.fire(a.type,a).fire(a.type+":composer",a)}),this.config.copyedFromMarking&&b.observe(l,"copy",function(a){a.clipboardData&&(a.clipboardData.setData("text/html",i.config.copyedFromMarking+i.selection.getHtml()),a.preventDefault()),i.parent.fire(a.type,a).fire(a.type+":composer",a)}),b.observe(l,"keyup",function(b){var c=b.keyCode;(c===a.SPACE_KEY||c===a.ENTER_KEY)&&i.parent.fire("newword:composer")}),this.parent.on("paste:composer",function(){setTimeout(function(){i.parent.fire("newword:composer")},0)}),c.canSelectImagesInContentEditable()||b.observe(l,"mousedown",function(b){var c=b.target,d=l.querySelectorAll("img"),e=l.querySelectorAll("."+i.config.uneditableContainerClassname+" img"),f=a.lang.array(d).without(e);"IMG"===c.nodeName&&a.lang.array(f).contains(c)&&i.selection.selectNode(c)}),c.canSelectImagesInContentEditable()||b.observe(l,"drop",function(){setTimeout(function(){i.selection.getSelection().removeAllRanges()},0)}),c.hasHistoryIssue()&&c.supportsSelectionModify()&&b.observe(l,"keydown",function(a){if(a.metaKey||a.ctrlKey){var b=a.keyCode,c=l.ownerDocument.defaultView,d=c.getSelection();(37===b||39===b)&&(37===b&&(d.modify("extend","left","lineboundary"),a.shiftKey||d.collapseToStart()),39===b&&(d.modify("extend","right","lineboundary"),a.shiftKey||d.collapseToEnd()),a.preventDefault())}}),b.observe(l,"keydown",function(a){var b=a.keyCode,c=d[b];(a.ctrlKey||a.metaKey)&&!a.altKey&&c&&(i.commands.exec(c),a.preventDefault()),8===b?f(a,i.selection,l,i):i.config.handleTabKey&&9===b&&(a.preventDefault(),g(i,l))}),b.observe(l,"keydown",function(b){var c,d=i.selection.getSelectedNode(!0),e=b.keyCode;!d||"IMG"!==d.nodeName||e!==a.BACKSPACE_KEY&&e!==a.DELETE_KEY||(c=d.parentNode,c.removeChild(d),"A"!==c.nodeName||c.firstChild||c.parentNode.removeChild(c),setTimeout(function(){a.quirks.redraw(l)},0),b.preventDefault())}),!this.config.contentEditableMode&&c.hasIframeFocusIssue()&&(b.observe(k,"focus",function(){setTimeout(function(){i.doc.querySelector(":focus")!==i.element&&i.focus()},0)}),b.observe(this.element,"blur",function(){setTimeout(function(){i.selection.getSelection().removeAllRanges()},0)})),h={IMG:"Image: ",A:"Link: "},b.observe(l,"mouseover",function(a){var b,c,d=a.target,e=d.nodeName;("A"===e||"IMG"===e)&&(c=d.hasAttribute("title"),c||(b=h[e]+(d.getAttribute("href")||d.getAttribute("src")),d.setAttribute("title",b)))})}}(wysihtml5),function(a){var b=400;a.views.Synchronizer=Base.extend({constructor:function(a,b,c){this.editor=a,this.textarea=b,this.composer=c,this._observe()},fromComposerToTextarea:function(b){this.textarea.setValue(a.lang.string(this.composer.getValue(!1,!1)).trim(),b)},fromTextareaToComposer:function(a){var b=this.textarea.getValue(!1,!1);b?this.composer.setValue(b,a):(this.composer.clear(),this.editor.fire("set_placeholder"))},sync:function(a){"textarea"===this.editor.currentView.name?this.fromTextareaToComposer(a):this.fromComposerToTextarea(a)},_observe:function(){var c,d=this,e=this.textarea.element.form,f=function(){c=setInterval(function(){d.fromComposerToTextarea()},b)},g=function(){clearInterval(c),c=null};f(),e&&(a.dom.observe(e,"submit",function(){d.sync(!0)}),a.dom.observe(e,"reset",function(){setTimeout(function(){d.fromTextareaToComposer()},0)})),this.editor.on("change_view",function(a){"composer"!==a||c?"textarea"===a&&(d.fromComposerToTextarea(!0),g()):(d.fromTextareaToComposer(!0),f())}),this.editor.on("destroy:composer",g)}})}(wysihtml5),wysihtml5.views.Textarea=wysihtml5.views.View.extend({name:"textarea",constructor:function(a,b,c){this.base(a,b,c),this._observe()},clear:function(){this.element.value=""},getValue:function(a){var b=this.isEmpty()?"":this.element.value;return a!==!1&&(b=this.parent.parse(b)),b},setValue:function(a,b){b&&(a=this.parent.parse(a)),this.element.value=a},cleanUp:function(){var a=this.parent.parse(this.element.value);this.element.value=a},hasPlaceholderSet:function(){var a=wysihtml5.browser.supportsPlaceholderAttributeOn(this.element),b=this.element.getAttribute("placeholder")||null,c=this.element.value,d=!c;return a&&d||c===b},isEmpty:function(){return!wysihtml5.lang.string(this.element.value).trim()||this.hasPlaceholderSet()},_observe:function(){var a=this.element,b=this.parent,c={focusin:"focus",focusout:"blur"},d=wysihtml5.browser.supportsEvent("focusin")?["focusin","focusout","change"]:["focus","blur","change"];b.on("beforeload",function(){wysihtml5.dom.observe(a,d,function(a){var d=c[a.type]||a.type;b.fire(d).fire(d+":textarea")}),wysihtml5.dom.observe(a,["paste","drop"],function(){setTimeout(function(){b.fire("paste").fire("paste:textarea")},0)})})}}),function(a){var b,c={name:b,style:!0,toolbar:b,showToolbarAfterInit:!0,autoLink:!0,handleTables:!0,handleTabKey:!0,parserRules:{tags:{br:{},span:{},div:{},p:{}},classes:{}},pasteParserRulesets:null,parser:a.dom.parse,composerClassName:"wysihtml5-editor",bodyClassName:"wysihtml5-supported",useLineBreaks:!0,stylesheets:[],placeholderText:b,supportTouchDevices:!0,cleanUp:!0,contentEditableMode:!1,uneditableContainerClassname:"wysihtml5-uneditable-container",copyedFromMarking:'<meta name="copied-from" content="wysihtml5">'};a.Editor=a.lang.Dispatcher.extend({constructor:function(b,d){if(this.editableElement="string"==typeof b?document.getElementById(b):b,this.config=a.lang.object({}).merge(c).merge(d).get(),this._isCompatible=a.browser.supported(),"textarea"!=this.editableElement.nodeName.toLowerCase()&&(this.config.contentEditableMode=!0,this.config.noTextarea=!0),this.config.noTextarea||(this.textarea=new a.views.Textarea(this,this.editableElement,this.config),this.currentView=this.textarea),!this._isCompatible||!this.config.supportTouchDevices&&a.browser.isTouchDevice()){var e=this;return setTimeout(function(){e.fire("beforeload").fire("load")},0),void 0}a.dom.addClass(document.body,this.config.bodyClassName),this.composer=new a.views.Composer(this,this.editableElement,this.config),this.currentView=this.composer,"function"==typeof this.config.parser&&this._initParser(),this.on("beforeload",this.handleBeforeLoad)},handleBeforeLoad:function(){this.config.noTextarea||(this.synchronizer=new a.views.Synchronizer(this,this.textarea,this.composer)),this.config.toolbar&&(this.toolbar=new a.toolbar.Toolbar(this,this.config.toolbar,this.config.showToolbarAfterInit))},isCompatible:function(){return this._isCompatible},clear:function(){return this.currentView.clear(),this},getValue:function(a,b){return this.currentView.getValue(a,b)},setValue:function(a,b){return this.fire("unset_placeholder"),a?(this.currentView.setValue(a,b),this):this.clear()},cleanUp:function(){this.currentView.cleanUp()},focus:function(a){return this.currentView.focus(a),this},disable:function(){return this.currentView.disable(),this},enable:function(){return this.currentView.enable(),this},isEmpty:function(){return this.currentView.isEmpty()},hasPlaceholderSet:function(){return this.currentView.hasPlaceholderSet()},parse:function(b,c){var d=this.config.contentEditableMode?document:this.composer?this.composer.sandbox.getDocument():null,e=this.config.parser(b,{rules:this.config.parserRules,cleanUp:this.config.cleanUp,context:d,uneditableClass:this.config.uneditableContainerClassname,clearInternals:c});return"object"==typeof b&&a.quirks.redraw(b),e},_initParser:function(){var b,c=this;a.browser.supportsModenPaste()?this.on("paste:composer",function(d){d.preventDefault(),b=a.dom.getPastedHtml(d),b&&c._cleanAndPaste(b)}):this.on("beforepaste:composer",function(b){b.preventDefault(),a.dom.getPastedHtmlWithDiv(c.composer,function(a){a&&c._cleanAndPaste(a)})})},_cleanAndPaste:function(b){var c=a.quirks.cleanPastedHTML(b,{referenceNode:this.composer.element,rules:this.config.pasteParserRulesets||[{set:this.config.parserRules}],uneditableClass:this.config.uneditableContainerClassname});this.composer.selection.deleteContents(),this.composer.selection.insertHTML(c)}})}(wysihtml5),function(a){var b=a.dom,c="wysihtml5-command-dialog-opened",d="input, select, textarea",e="[data-wysihtml5-dialog-field]",f="data-wysihtml5-dialog-field";a.toolbar.Dialog=a.lang.Dispatcher.extend({constructor:function(a,b){this.link=a,this.container=b},_observe:function(){var e,f,g,h,i,j;if(!this._observed){for(e=this,f=function(a){var b=e._serialize();b==e.elementToChange?e.fire("edit",b):e.fire("save",b),e.hide(),a.preventDefault(),a.stopPropagation()},b.observe(e.link,"click",function(){b.hasClass(e.link,c)&&setTimeout(function(){e.hide()},0)}),b.observe(this.container,"keydown",function(b){var c=b.keyCode;c===a.ENTER_KEY&&f(b),c===a.ESCAPE_KEY&&(e.fire("cancel"),e.hide())}),b.delegate(this.container,"[data-wysihtml5-dialog-action=save]","click",f),b.delegate(this.container,"[data-wysihtml5-dialog-action=cancel]","click",function(a){e.fire("cancel"),e.hide(),a.preventDefault(),a.stopPropagation()}),g=this.container.querySelectorAll(d),h=0,i=g.length,j=function(){clearInterval(e.interval)};i>h;h++)b.observe(g[h],"change",j);this._observed=!0}},_serialize:function(){for(var a=this.elementToChange||{},b=this.container.querySelectorAll(e),c=b.length,d=0;c>d;d++)a[b[d].getAttribute(f)]=b[d].value;return a},_interpolate:function(a){for(var b,c,d,g=document.querySelector(":focus"),h=this.container.querySelectorAll(e),i=h.length,j=0;i>j;j++)b=h[j],b!==g&&(a&&"hidden"===b.type||(c=b.getAttribute(f),d=this.elementToChange&&"boolean"!=typeof this.elementToChange?this.elementToChange.getAttribute(c)||"":b.defaultValue,b.value=d))},show:function(a){if(!b.hasClass(this.link,c)){var e=this,f=this.container.querySelector(d);if(this.elementToChange=a,this._observe(),this._interpolate(),a&&(this.interval=setInterval(function(){e._interpolate(!0)},500)),b.addClass(this.link,c),this.container.style.display="",this.fire("show"),f&&!a)try{f.focus()}catch(g){}}},hide:function(){clearInterval(this.interval),this.elementToChange=null,b.removeClass(this.link,c),this.container.style.display="none",this.fire("hide")}})}(wysihtml5),function(a){var b=a.dom,c={position:"relative"},d={left:0,margin:0,opacity:0,overflow:"hidden",padding:0,position:"absolute",top:0,zIndex:1},e={cursor:"inherit",fontSize:"50px",height:"50px",marginTop:"-25px",outline:0,padding:0,position:"absolute",right:"-4px",top:"50%"},f={"x-webkit-speech":"",speech:""};a.toolbar.Speech=function(g,h){var i,j,k,l=document.createElement("input");return a.browser.supportsSpeechApiOn(l)?(i=g.editor.textarea.element.getAttribute("lang"),i&&(f.lang=i),j=document.createElement("div"),a.lang.object(d).merge({width:h.offsetWidth+"px",height:h.offsetHeight+"px"}),b.insert(l).into(j),b.insert(j).into(h),b.setStyles(e).on(l),b.setAttributes(f).on(l),b.setStyles(d).on(j),b.setStyles(c).on(h),k="onwebkitspeechchange"in l?"webkitspeechchange":"speechchange",b.observe(l,k,function(){g.execCommand("insertText",l.value),l.value=""}),b.observe(l,"click",function(a){b.hasClass(h,"wysihtml5-command-disabled")&&a.preventDefault(),a.stopPropagation()}),void 0):(h.style.display="none",void 0)}}(wysihtml5),function(a){var b="wysihtml5-command-disabled",c="wysihtml5-commands-disabled",d="wysihtml5-command-active",e="wysihtml5-action-active",f=a.dom;a.toolbar.Toolbar=Base.extend({constructor:function(f,g,h){this.editor=f,this.container="string"==typeof g?document.getElementById(g):g,this.composer=f.composer,this._getLinks("command"),this._getLinks("action"),this._observe(),h&&this.show(),null!=f.config.classNameCommandDisabled&&(b=f.config.classNameCommandDisabled),null!=f.config.classNameCommandsDisabled&&(c=f.config.classNameCommandsDisabled),null!=f.config.classNameCommandActive&&(d=f.config.classNameCommandActive),null!=f.config.classNameActionActive&&(e=f.config.classNameActionActive);for(var i=this.container.querySelectorAll("[data-wysihtml5-command=insertSpeech]"),j=i.length,k=0;j>k;k++)new a.toolbar.Speech(this,i[k])},_getLinks:function(b){for(var c,d,e,f,g,h=this[b+"Links"]=a.lang.array(this.container.querySelectorAll("[data-wysihtml5-"+b+"]")).get(),i=h.length,j=0,k=this[b+"Mapping"]={};i>j;j++)c=h[j],e=c.getAttribute("data-wysihtml5-"+b),f=c.getAttribute("data-wysihtml5-"+b+"-value"),d=this.container.querySelector("[data-wysihtml5-"+b+"-group='"+e+"']"),g=this._getDialog(c,e),k[e+":"+f]={link:c,group:d,name:e,value:f,dialog:g,state:!1}},_getDialog:function(b,c){var d,e,f=this,g=this.container.querySelector("[data-wysihtml5-dialog='"+c+"']");return g&&(d=a.toolbar["Dialog_"+c]?new a.toolbar["Dialog_"+c](b,g):new a.toolbar.Dialog(b,g),d.on("show",function(){e=f.composer.selection.getBookmark(),f.editor.fire("show:dialog",{command:c,dialogContainer:g,commandLink:b})}),d.on("save",function(a){e&&f.composer.selection.setBookmark(e),f._execCommand(c,a),f.editor.fire("save:dialog",{command:c,dialogContainer:g,commandLink:b})}),d.on("cancel",function(){f.editor.focus(!1),f.editor.fire("cancel:dialog",{command:c,dialogContainer:g,commandLink:b})})),d},execCommand:function(a,b){if(!this.commandsDisabled){var c=this.commandMapping[a+":"+b];c&&c.dialog&&!c.state?c.dialog.show():this._execCommand(a,b)}},_execCommand:function(a,b){this.editor.focus(!1),this.composer.commands.exec(a,b),this._updateLinkStates()},execAction:function(a){var b=this.editor;"change_view"===a&&b.textarea&&(b.currentView===b.textarea?b.fire("change_view","composer"):b.fire("change_view","textarea")),"showSource"==a&&b.fire("showSource")},_observe:function(){for(var a=this,b=this.editor,d=this.container,e=this.commandLinks.concat(this.actionLinks),g=e.length,h=0;g>h;h++)"A"===e[h].nodeName?f.setAttributes({href:"javascript:;",unselectable:"on"}).on(e[h]):f.setAttributes({unselectable:"on"}).on(e[h]);f.delegate(d,"[data-wysihtml5-command], [data-wysihtml5-action]","mousedown",function(a){a.preventDefault()}),f.delegate(d,"[data-wysihtml5-command]","click",function(b){var c=this,d=c.getAttribute("data-wysihtml5-command"),e=c.getAttribute("data-wysihtml5-command-value");a.execCommand(d,e),b.preventDefault()}),f.delegate(d,"[data-wysihtml5-action]","click",function(b){var c=this.getAttribute("data-wysihtml5-action");a.execAction(c),b.preventDefault()}),b.on("interaction:composer",function(){a._updateLinkStates()}),b.on("focus:composer",function(){a.bookmark=null}),this.editor.config.handleTables&&(b.on("tableselect:composer",function(){a.container.querySelectorAll('[data-wysihtml5-hiddentools="table"]')[0].style.display=""}),b.on("tableunselect:composer",function(){a.container.querySelectorAll('[data-wysihtml5-hiddentools="table"]')[0].style.display="none"})),b.on("change_view",function(e){b.textarea&&setTimeout(function(){a.commandsDisabled="composer"!==e,a._updateLinkStates(),a.commandsDisabled?f.addClass(d,c):f.removeClass(d,c)},0)})},_updateLinkStates:function(){var c,g,h,i,j=this.commandMapping,k=this.actionMapping;for(c in j)i=j[c],this.commandsDisabled?(g=!1,f.removeClass(i.link,d),i.group&&f.removeClass(i.group,d),i.dialog&&i.dialog.hide()):(g=this.composer.commands.state(i.name,i.value),f.removeClass(i.link,b),i.group&&f.removeClass(i.group,b)),i.state!==g&&(i.state=g,g?(f.addClass(i.link,d),i.group&&f.addClass(i.group,d),i.dialog&&("object"==typeof g||a.lang.object(g).isArray()?(!i.dialog.multiselect&&a.lang.object(g).isArray()&&(g=1===g.length?g[0]:!0,i.state=g),i.dialog.show(g)):i.dialog.hide())):(f.removeClass(i.link,d),i.group&&f.removeClass(i.group,d),i.dialog&&i.dialog.hide()));for(c in k)h=k[c],"change_view"===h.name&&(h.state=this.editor.currentView===this.editor.textarea,h.state?f.addClass(h.link,e):f.removeClass(h.link,e))},show:function(){this.container.style.display=""},hide:function(){this.container.style.display="none"}})}(wysihtml5),function(a){a.toolbar.Dialog_createTable=a.toolbar.Dialog.extend({show:function(a){this.base(a)}})}(wysihtml5),function(a){var b=(a.dom,"[data-wysihtml5-dialog-field]"),c="data-wysihtml5-dialog-field";a.toolbar.Dialog_foreColorStyle=a.toolbar.Dialog.extend({multiselect:!0,_serialize:function(){for(var a={},d=this.container.querySelectorAll(b),e=d.length,f=0;e>f;f++)a[d[f].getAttribute(c)]=d[f].value;return a},_interpolate:function(d){for(var e,f=document.querySelector(":focus"),g=this.container.querySelectorAll(b),h=g.length,i=0,j=this.elementToChange?a.lang.object(this.elementToChange).isArray()?this.elementToChange[0]:this.elementToChange:null,k=j?j.getAttribute("style"):null,l=k?a.quirks.styleParser.parseColor(k,"color"):null;h>i;i++)e=g[i],e!==f&&(d&&"hidden"===e.type||"color"===e.getAttribute(c)&&(e.value=l?l[3]&&1!=l[3]?"rgba("+l[0]+","+l[1]+","+l[2]+","+l[3]+");":"rgb("+l[0]+","+l[1]+","+l[2]+");":"rgb(0,0,0);"))}})}(wysihtml5),function(a){a.dom;a.toolbar.Dialog_fontSizeStyle=a.toolbar.Dialog.extend({multiselect:!0,_serialize:function(){return{size:this.container.querySelector('[data-wysihtml5-dialog-field="size"]').value}},_interpolate:function(){var b=document.querySelector(":focus"),c=this.container.querySelector("[data-wysihtml5-dialog-field='size']"),d=this.elementToChange?a.lang.object(this.elementToChange).isArray()?this.elementToChange[0]:this.elementToChange:null,e=d?d.getAttribute("style"):null,f=e?a.quirks.styleParser.parseFontSize(e):null;c&&c!==b&&f&&!/^\s*$/.test(f)&&(c.value=f)}})}(wysihtml5),Handlebars=function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return k[a]||"&"}function c(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])}function d(a){return a instanceof j?""+a:a||0===a?(a=""+a,m.test(a)?a.replace(l,b):a):""}function e(a){return a||0===a?h(a)&&0===a.length?!0:!1:!0}var f,g,h,i={},j=a,k={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},l=/[&<>"'`]/g,m=/[&<>"'`]/;return i.extend=c,f=Object.prototype.toString,i.toString=f,g=function(a){return"function"==typeof a},g(/x/)&&(g=function(a){return"function"==typeof a&&"[object Function]"===f.call(a)}),i.isFunction=g,h=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===f.call(a):!1},i.isArray=h,i.escapeExpression=d,i.isEmpty=e,i}(a),c=function(){"use strict";function a(a,b){var d,e,f;for(b&&b.firstLine&&(d=b.firstLine,a+=" - "+d+":"+b.firstColumn),e=Error.prototype.constructor.call(this,a),f=0;f<c.length;f++)this[c[f]]=e[c[f]];d&&(this.lineNumber=d,this.column=b.firstColumn)}var b,c=["description","fileName","lineNumber","message","name","number","stack"];return a.prototype=Error(),b=a}(),d=function(a,b){"use strict";function c(a,b){this.helpers=a||{},this.partials=b||{},d(this)}function d(a){a.registerHelper("helperMissing",function(a){if(2===arguments.length)return void 0;throw new p("Missing helper: '"+a+"'")}),a.registerHelper("blockHelperMissing",function(b,c){var d=c.inverse||function(){},e=c.fn;return i(b)&&(b=b.call(this)),b===!0?e(this):b===!1||null==b?d(this):h(b)?b.length>0?a.helpers.each(b,c):d(this):e(b)}),a.registerHelper("each",function(a,b){var c,d,e,f=b.fn,g=b.inverse,j=0,k="";if(i(a)&&(a=a.call(this)),b.data&&(c=m(b.data)),a&&"object"==typeof a)if(h(a))for(d=a.length;d>j;j++)c&&(c.index=j,c.first=0===j,c.last=j===a.length-1),k+=f(a[j],{data:c});else for(e in a)a.hasOwnProperty(e)&&(c&&(c.key=e,c.index=j,c.first=0===j),k+=f(a[e],{data:c}),j++);return 0===j&&(k=g(this)),k}),a.registerHelper("if",function(a,b){return i(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||o.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){return i(a)&&(a=a.call(this)),o.isEmpty(a)?void 0:b.fn(a)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)})}function e(a,b){l.log(a,b)}var f,g,h,i,j,k,l,m,n={},o=a,p=b,q="1.3.0";return n.VERSION=q,f=4,n.COMPILER_REVISION=f,g={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:">= 1.0.0"},n.REVISION_CHANGES=g,h=o.isArray,i=o.isFunction,j=o.toString,k="[object Object]",n.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:l,log:e,registerHelper:function(a,b,c){if(j.call(a)===k){if(c||b)throw new p("Arg not supported with multiple helpers");o.extend(this.helpers,a)}else c&&(b.not=c),this.helpers[a]=b},registerPartial:function(a,b){j.call(a)===k?o.extend(this.partials,a):this.partials[a]=b}},l={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(l.level<=a){var c=l.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}},n.logger=l,n.log=e,m=function(a){var b={};return o.extend(b,a),b},n.createFrame=m,n}(b,c),e=function(a,b,c){"use strict";function d(a){var b,c,d=a&&a[0]||1,e=m;if(d!==e){if(e>d)throw b=n[e],c=n[d],new l("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+b+") or downgrade your runtime to an older version ("+c+").");throw new l("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new l("No environment passed to template");var c=function(a,c,d,e,f,g){var h,i=b.VM.invokePartial.apply(this,arguments);if(null!=i)return i;if(b.compile)return h={helpers:e,partials:f,data:g},f[c]=b.compile(a,{data:void 0!==g},b),f[c](d,h);throw new l("The partial "+c+" could not be compiled when running in runtime-only mode")},d={escapeExpression:k.escapeExpression,invokePartial:c,programs:[],program:function(a,b,c){var d=this.programs[a];return c?d=g(a,b,c):d||(d=this.programs[a]=g(a,b)),d},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c={},k.extend(c,b),k.extend(c,a)),c},programWithDepth:b.VM.programWithDepth,noop:b.VM.noop,compilerInfo:null};return function(c,e){var f,g,h,i;return e=e||{},h=e.partial?e:b,e.partial||(f=e.helpers,g=e.partials),i=a.call(d,h,c,f,g,e.data),e.partial||b.VM.checkRevision(d.compilerInfo),i}}function f(a,b,c){var d=Array.prototype.slice.call(arguments,3),e=function(a,e){return e=e||{},b.apply(this,[a,e.data||c].concat(d))};return e.program=a,e.depth=d.length,e}function g(a,b,c){var d=function(a,d){return d=d||{},b(a,d.data||c)};return d.program=a,d.depth=0,d}function h(a,b,c,d,e,f){var g={partial:!0,helpers:d,partials:e,data:f};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,g):void 0}function i(){return""}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES;return j.checkRevision=d,j.template=e,j.programWithDepth=f,j.program=g,j.invokePartial=h,j.noop=i,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,f=m}(d,a,c,b,e);return f}(),this.wysihtml5=this.wysihtml5||{},this.wysihtml5.tpl=this.wysihtml5.tpl||{},this.wysihtml5.tpl.blockquote=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+l((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===k?b.apply(a):b)),c}function g(){return' \n <span class="fa fa-quote-left"></span>\n '}function h(){return'\n <span class="glyphicon glyphicon-quote"></span>\n '}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var i,j="",k="function",l=this.escapeExpression,m=this;return j+='<li>\n <a class="btn ',i=c["if"].call(b,(i=b&&b.options,i=null==i||i===!1?i:i.toolbar,null==i||i===!1?i:i.size),{hash:{},inverse:m.noop,fn:m.program(1,f,e),data:e}),(i||0===i)&&(j+=i),j+=' btn-default" data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="blockquote" data-wysihtml5-display-format-name="false" tabindex="-1">\n ',i=c["if"].call(b,(i=b&&b.options,i=null==i||i===!1?i:i.toolbar,null==i||i===!1?i:i.fa),{hash:{},inverse:m.program(5,h,e),fn:m.program(3,g,e),data:e}),(i||0===i)&&(j+=i),j+="\n </a>\n</li>\n",j}),this.wysihtml5.tpl.color=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+j((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===i?b.apply(a):b)),c}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var g,h="",i="function",j=this.escapeExpression,k=this;return h+='<li class="dropdown">\n <a class="btn btn-default dropdown-toggle ',g=c["if"].call(b,(g=b&&b.options,g=null==g||g===!1?g:g.toolbar,null==g||g===!1?g:g.size),{hash:{},inverse:k.noop,fn:k.program(1,f,e),data:e}),(g||0===g)&&(h+=g),h+='" data-toggle="dropdown" tabindex="-1">\n <span class="current-color">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.black,typeof g===i?g.apply(b):g))+'</span>\n <b class="caret"></b>\n </a>\n <ul class="dropdown-menu">\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="black"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="black">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.black,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="silver"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="silver">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.silver,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="gray"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="gray">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.gray,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="maroon"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="maroon">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.maroon,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="red"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="red">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.red,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="purple"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="purple">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.purple,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="green"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="green">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.green,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="olive"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="olive">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.olive,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="navy"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="navy">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.navy,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="blue"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="blue">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.blue,typeof g===i?g.apply(b):g))+'</a></li>\n <li><div class="wysihtml5-colors" data-wysihtml5-command-value="orange"></div><a class="wysihtml5-colors-title" data-wysihtml5-command="foreColor" data-wysihtml5-command-value="orange">'+j((g=b&&b.locale,g=null==g||g===!1?g:g.colours,g=null==g||g===!1?g:g.orange,typeof g===i?g.apply(b):g))+"</a></li>\n </ul>\n</li>\n",h}),this.wysihtml5.tpl.emphasis=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+k((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===j?b.apply(a):b)),c}function g(a,b){var d,e="";return e+='\n <a class="btn ',d=c["if"].call(a,(d=a&&a.options,d=null==d||d===!1?d:d.toolbar,null==d||d===!1?d:d.size),{hash:{},inverse:l.noop,fn:l.program(1,f,b),data:b}),(d||0===d)&&(e+=d),e+=' btn-default" data-wysihtml5-command="small" title="CTRL+S" tabindex="-1">'+k((d=a&&a.locale,d=null==d||d===!1?d:d.emphasis,d=null==d||d===!1?d:d.small,typeof d===j?d.apply(a):d))+"</a>\n ",e}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var h,i="",j="function",k=this.escapeExpression,l=this;return i+='<li>\n <div class="btn-group">\n <a class="btn ',h=c["if"].call(b,(h=b&&b.options,h=null==h||h===!1?h:h.toolbar,null==h||h===!1?h:h.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="bold" title="CTRL+B" tabindex="-1">'+k((h=b&&b.locale,h=null==h||h===!1?h:h.emphasis,h=null==h||h===!1?h:h.bold,typeof h===j?h.apply(b):h))+'</a>\n <a class="btn ',h=c["if"].call(b,(h=b&&b.options,h=null==h||h===!1?h:h.toolbar,null==h||h===!1?h:h.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="italic" title="CTRL+I" tabindex="-1">'+k((h=b&&b.locale,h=null==h||h===!1?h:h.emphasis,h=null==h||h===!1?h:h.italic,typeof h===j?h.apply(b):h))+'</a>\n <a class="btn ',h=c["if"].call(b,(h=b&&b.options,h=null==h||h===!1?h:h.toolbar,null==h||h===!1?h:h.size),{hash:{},inverse:l.noop,fn:l.program(1,f,e),data:e}),(h||0===h)&&(i+=h),i+=' btn-default" data-wysihtml5-command="underline" title="CTRL+U" tabindex="-1">'+k((h=b&&b.locale,h=null==h||h===!1?h:h.emphasis,h=null==h||h===!1?h:h.underline,typeof h===j?h.apply(b):h))+"</a>\n ",h=c["if"].call(b,(h=b&&b.options,h=null==h||h===!1?h:h.toolbar,h=null==h||h===!1?h:h.emphasis,null==h||h===!1?h:h.small),{hash:{},inverse:l.noop,fn:l.program(3,g,e),data:e}),(h||0===h)&&(i+=h),i+="\n </div>\n</li>\n",i }),this.wysihtml5.tpl["font-styles"]=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+l((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===k?b.apply(a):b)),c}function g(){return'\n <span class="fa fa-font"></span>\n '}function h(){return'\n <span class="glyphicon glyphicon-font"></span>\n '}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var i,j="",k="function",l=this.escapeExpression,m=this;return j+='<li class="dropdown">\n <a class="btn btn-default dropdown-toggle ',i=c["if"].call(b,(i=b&&b.options,i=null==i||i===!1?i:i.toolbar,null==i||i===!1?i:i.size),{hash:{},inverse:m.noop,fn:m.program(1,f,e),data:e}),(i||0===i)&&(j+=i),j+='" data-toggle="dropdown">\n ',i=c["if"].call(b,(i=b&&b.options,i=null==i||i===!1?i:i.toolbar,null==i||i===!1?i:i.fa),{hash:{},inverse:m.program(5,h,e),fn:m.program(3,g,e),data:e}),(i||0===i)&&(j+=i),j+='\n <span class="current-font">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.normal,typeof i===k?i.apply(b):i))+'</span>\n <b class="caret"></b>\n </a>\n <ul class="dropdown-menu">\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="p" tabindex="-1">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.normal,typeof i===k?i.apply(b):i))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h1" tabindex="-1">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.h1,typeof i===k?i.apply(b):i))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h2" tabindex="-1">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.h2,typeof i===k?i.apply(b):i))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h3" tabindex="-1">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.h3,typeof i===k?i.apply(b):i))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h4" tabindex="-1">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.h4,typeof i===k?i.apply(b):i))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h5" tabindex="-1">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.h5,typeof i===k?i.apply(b):i))+'</a></li>\n <li><a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h6" tabindex="-1">'+l((i=b&&b.locale,i=null==i||i===!1?i:i.font_styles,i=null==i||i===!1?i:i.h6,typeof i===k?i.apply(b):i))+"</a></li>\n </ul>\n</li>\n",j}),this.wysihtml5.tpl.html=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+l((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===k?b.apply(a):b)),c}function g(){return'\n <span class="fa fa-pencil"></span>\n '}function h(){return'\n <span class="glyphicon glyphicon-pencil"></span>\n '}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var i,j="",k="function",l=this.escapeExpression,m=this;return j+='<li>\n <div class="btn-group">\n <a class="btn ',i=c["if"].call(b,(i=b&&b.options,i=null==i||i===!1?i:i.toolbar,null==i||i===!1?i:i.size),{hash:{},inverse:m.noop,fn:m.program(1,f,e),data:e}),(i||0===i)&&(j+=i),j+=' btn-default" data-wysihtml5-action="change_view" title="'+l((i=b&&b.locale,i=null==i||i===!1?i:i.html,i=null==i||i===!1?i:i.edit,typeof i===k?i.apply(b):i))+'" tabindex="-1">\n ',i=c["if"].call(b,(i=b&&b.options,i=null==i||i===!1?i:i.toolbar,null==i||i===!1?i:i.fa),{hash:{},inverse:m.program(5,h,e),fn:m.program(3,g,e),data:e}),(i||0===i)&&(j+=i),j+="\n </a>\n </div>\n</li>\n",j}),this.wysihtml5.tpl.image=Handlebars.template(function(a,b,c,d,e){function f(){return"modal-sm"}function g(a){var b,c="";return c+="btn-"+m((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===l?b.apply(a):b)),c}function h(){return'\n <span class="fa fa-file-image-o"></span>\n '}function i(){return'\n <span class="glyphicon glyphicon-picture"></span>\n '}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var j,k="",l="function",m=this.escapeExpression,n=this;return k+='<li>\n <div class="bootstrap-wysihtml5-insert-image-modal modal fade" data-wysihtml5-dialog="insertImage">\n <div class="modal-dialog ',j=c["if"].call(b,(j=b&&b.options,j=null==j||j===!1?j:j.toolbar,null==j||j===!1?j:j.smallmodals),{hash:{},inverse:n.noop,fn:n.program(1,f,e),data:e}),(j||0===j)&&(k+=j),k+='">\n <div class="modal-content">\n <div class="modal-header">\n <a class="close" data-dismiss="modal">×</a>\n <h3>'+m((j=b&&b.locale,j=null==j||j===!1?j:j.image,j=null==j||j===!1?j:j.insert,typeof j===l?j.apply(b):j))+'</h3>\n </div>\n <div class="modal-body">\n <div class="form-group">\n <input value="http://" class="bootstrap-wysihtml5-insert-image-url form-control" data-wysihtml5-dialog-field="src">\n </div> \n </div>\n <div class="modal-footer">\n <a class="btn btn-default" data-dismiss="modal" data-wysihtml5-dialog-action="cancel" href="#">'+m((j=b&&b.locale,j=null==j||j===!1?j:j.image,j=null==j||j===!1?j:j.cancel,typeof j===l?j.apply(b):j))+'</a>\n <a class="btn btn-primary" data-dismiss="modal" data-wysihtml5-dialog-action="save" href="#">'+m((j=b&&b.locale,j=null==j||j===!1?j:j.image,j=null==j||j===!1?j:j.insert,typeof j===l?j.apply(b):j))+'</a>\n </div>\n </div>\n </div>\n </div>\n <a class="btn ',j=c["if"].call(b,(j=b&&b.options,j=null==j||j===!1?j:j.toolbar,null==j||j===!1?j:j.size),{hash:{},inverse:n.noop,fn:n.program(3,g,e),data:e}),(j||0===j)&&(k+=j),k+=' btn-default" data-wysihtml5-command="insertImage" title="'+m((j=b&&b.locale,j=null==j||j===!1?j:j.image,j=null==j||j===!1?j:j.insert,typeof j===l?j.apply(b):j))+'" tabindex="-1">\n ',j=c["if"].call(b,(j=b&&b.options,j=null==j||j===!1?j:j.toolbar,null==j||j===!1?j:j.fa),{hash:{},inverse:n.program(7,i,e),fn:n.program(5,h,e),data:e}),(j||0===j)&&(k+=j),k+="\n </a>\n</li>\n",k}),this.wysihtml5.tpl.link=Handlebars.template(function(a,b,c,d,e){function f(){return"modal-sm"}function g(a){var b,c="";return c+="btn-"+m((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===l?b.apply(a):b)),c}function h(){return'\n <span class="fa fa-share-square-o"></span>\n '}function i(){return'\n <span class="glyphicon glyphicon-share"></span>\n '}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var j,k="",l="function",m=this.escapeExpression,n=this;return k+='<li>\n <div class="bootstrap-wysihtml5-insert-link-modal modal fade" data-wysihtml5-dialog="createLink">\n <div class="modal-dialog ',j=c["if"].call(b,(j=b&&b.options,j=null==j||j===!1?j:j.toolbar,null==j||j===!1?j:j.smallmodals),{hash:{},inverse:n.noop,fn:n.program(1,f,e),data:e}),(j||0===j)&&(k+=j),k+='">\n <div class="modal-content">\n <div class="modal-header">\n <a class="close" data-dismiss="modal">×</a>\n <h3>'+m((j=b&&b.locale,j=null==j||j===!1?j:j.link,j=null==j||j===!1?j:j.insert,typeof j===l?j.apply(b):j))+'</h3>\n </div>\n <div class="modal-body">\n <div class="form-group">\n <input value="http://" class="bootstrap-wysihtml5-insert-link-url form-control" data-wysihtml5-dialog-field="href">\n </div> \n <div class="checkbox">\n <label> \n <input type="checkbox" class="bootstrap-wysihtml5-insert-link-target" checked>'+m((j=b&&b.locale,j=null==j||j===!1?j:j.link,j=null==j||j===!1?j:j.target,typeof j===l?j.apply(b):j))+'\n </label>\n </div>\n </div>\n <div class="modal-footer">\n <a class="btn btn-default" data-dismiss="modal" data-wysihtml5-dialog-action="cancel" href="#">'+m((j=b&&b.locale,j=null==j||j===!1?j:j.link,j=null==j||j===!1?j:j.cancel,typeof j===l?j.apply(b):j))+'</a>\n <a href="#" class="btn btn-primary" data-dismiss="modal" data-wysihtml5-dialog-action="save">'+m((j=b&&b.locale,j=null==j||j===!1?j:j.link,j=null==j||j===!1?j:j.insert,typeof j===l?j.apply(b):j))+'</a>\n </div>\n </div>\n </div>\n </div>\n <a class="btn ',j=c["if"].call(b,(j=b&&b.options,j=null==j||j===!1?j:j.toolbar,null==j||j===!1?j:j.size),{hash:{},inverse:n.noop,fn:n.program(3,g,e),data:e}),(j||0===j)&&(k+=j),k+=' btn-default" data-wysihtml5-command="createLink" title="'+m((j=b&&b.locale,j=null==j||j===!1?j:j.link,j=null==j||j===!1?j:j.insert,typeof j===l?j.apply(b):j))+'" tabindex="-1">\n ',j=c["if"].call(b,(j=b&&b.options,j=null==j||j===!1?j:j.toolbar,null==j||j===!1?j:j.fa),{hash:{},inverse:n.program(7,i,e),fn:n.program(5,h,e),data:e}),(j||0===j)&&(k+=j),k+="\n </a>\n</li>\n",k}),this.wysihtml5.tpl.lists=Handlebars.template(function(a,b,c,d,e){function f(a){var b,c="";return c+="btn-"+r((b=a&&a.options,b=null==b||b===!1?b:b.toolbar,b=null==b||b===!1?b:b.size,typeof b===q?b.apply(a):b)),c}function g(){return'\n <span class="fa fa-list-ul"></span>\n '}function h(){return'\n <span class="glyphicon glyphicon-list"></span>\n '}function i(){return'\n <span class="fa fa-list-ol"></span>\n '}function j(){return'\n <span class="glyphicon glyphicon-th-list"></span>\n '}function k(){return'\n <span class="fa fa-outdent"></span>\n '}function l(){return'\n <span class="glyphicon glyphicon-indent-right"></span>\n '}function m(){return'\n <span class="fa fa-indent"></span>\n '}function n(){return'\n <span class="glyphicon glyphicon-indent-left"></span>\n '}this.compilerInfo=[4,">= 1.0.0"],c=this.merge(c,a.helpers),e=e||{};var o,p="",q="function",r=this.escapeExpression,s=this;return p+='<li>\n <div class="btn-group">\n <a class="btn ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.size),{hash:{},inverse:s.noop,fn:s.program(1,f,e),data:e}),(o||0===o)&&(p+=o),p+=' btn-default" data-wysihtml5-command="insertUnorderedList" title="'+r((o=b&&b.locale,o=null==o||o===!1?o:o.lists,o=null==o||o===!1?o:o.unordered,typeof o===q?o.apply(b):o))+'" tabindex="-1">\n ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.fa),{hash:{},inverse:s.program(5,h,e),fn:s.program(3,g,e),data:e}),(o||0===o)&&(p+=o),p+='\n </a>\n <a class="btn ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.size),{hash:{},inverse:s.noop,fn:s.program(1,f,e),data:e}),(o||0===o)&&(p+=o),p+=' btn-default" data-wysihtml5-command="insertOrderedList" title="'+r((o=b&&b.locale,o=null==o||o===!1?o:o.lists,o=null==o||o===!1?o:o.ordered,typeof o===q?o.apply(b):o))+'" tabindex="-1">\n ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.fa),{hash:{},inverse:s.program(9,j,e),fn:s.program(7,i,e),data:e}),(o||0===o)&&(p+=o),p+='\n </a>\n <a class="btn ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.size),{hash:{},inverse:s.noop,fn:s.program(1,f,e),data:e}),(o||0===o)&&(p+=o),p+=' btn-default" data-wysihtml5-command="Outdent" title="'+r((o=b&&b.locale,o=null==o||o===!1?o:o.lists,o=null==o||o===!1?o:o.outdent,typeof o===q?o.apply(b):o))+'" tabindex="-1">\n ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.fa),{hash:{},inverse:s.program(13,l,e),fn:s.program(11,k,e),data:e}),(o||0===o)&&(p+=o),p+='\n </a>\n <a class="btn ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.size),{hash:{},inverse:s.noop,fn:s.program(1,f,e),data:e}),(o||0===o)&&(p+=o),p+=' btn-default" data-wysihtml5-command="Indent" title="'+r((o=b&&b.locale,o=null==o||o===!1?o:o.lists,o=null==o||o===!1?o:o.indent,typeof o===q?o.apply(b):o))+'" tabindex="-1">\n ',o=c["if"].call(b,(o=b&&b.options,o=null==o||o===!1?o:o.toolbar,null==o||o===!1?o:o.fa),{hash:{},inverse:s.program(17,n,e),fn:s.program(15,m,e),data:e}),(o||0===o)&&(p+=o),p+="\n </a>\n </div>\n</li>\n",p}),function(a){"use strict";"function"==typeof define&&define.amd?define("bootstrap.wysihtml5",["jquery","wysihtml5","bootstrap","bootstrap.wysihtml5.templates","bootstrap.wysihtml5.commands"],a):a(jQuery,wysihtml5)}(function(a,b){"use strict";var c=function(a,b){var c,d,e,f=function(a,c,d){return b.tpl[a]?b.tpl[a]({locale:c,options:d}):void 0},g=function(c,e){var f,g;this.el=c,f=a.extend(!0,{},d,e);for(g in f.customTemplates)f.customTemplates.hasOwnProperty(g)&&(b.tpl[g]=f.customTemplates[g]);this.toolbar=this.createToolbar(c,f),this.editor=this.createEditor(f)};g.prototype={constructor:g,createEditor:function(b){b=b||{},b=a.extend(!0,{},b),b.toolbar=this.toolbar[0],this.initializeEditor(this.el[0],b)},initializeEditor:function(a,c){var d,e=new b.Editor(this.el[0],c);if(e.on("beforeload",this.syncBootstrapDialogEvents),e.on("beforeload",this.loadParserRules),e.composer.editableArea.contentDocument?this.addMoreShortcuts(e,e.composer.editableArea.contentDocument.body||e.composer.editableArea.contentDocument,c.shortcuts):this.addMoreShortcuts(e,e.composer.editableArea,c.shortcuts),c&&c.events)for(d in c.events)c.events.hasOwnProperty(d)&&e.on(d,c.events[d]);return e},loadParserRules:function(){"string"===a.type(this.config.parserRules)&&a.ajax({dataType:"json",url:this.config.parserRules,context:this,error:function(a,b,c){void 0},success:function(a){this.config.parserRules=a,void 0}}),this.config.pasteParserRulesets&&"string"===a.type(this.config.pasteParserRulesets)&&a.ajax({dataType:"json",url:this.config.pasteParserRulesets,context:this,error:function(a,b,c){void 0},success:function(a){this.config.pasteParserRulesets=a}})},syncBootstrapDialogEvents:function(){var b=this;a.map(this.toolbar.commandMapping,function(a){return[a]}).filter(function(a){return a.dialog}).map(function(a){return a.dialog}).forEach(function(c){c.on("show",function(){a(this.container).modal("show")}),c.on("hide",function(){a(this.container).modal("hide"),setTimeout(b.composer.focus,0)}),a(c.container).on("shown.bs.modal",function(){a(this).find("input, select, textarea").first().focus()})}),this.on("change_view",function(){a(this.toolbar.container.children).find("a.btn").not('[data-wysihtml5-action="change_view"]').toggleClass("disabled")})},createToolbar:function(b,c){var g,h,i=this,j=a("<ul/>",{"class":"wysihtml5-toolbar",style:"display:none"}),k=c.locale||d.locale||"en";e.hasOwnProperty(k)||(void 0,k="en"),g=a.extend(!0,{},e.en,e[k]);for(h in c.toolbar)c.toolbar[h]&&j.append(f(h,g,c));return j.find('a[data-wysihtml5-command="formatBlock"]').click(function(b){var c=b.delegateTarget||b.target||b.srcElement,d=a(c),e=d.data("wysihtml5-display-format-name"),f=d.data("wysihtml5-format-name")||d.html();(void 0===e||"true"===e)&&i.toolbar.find(".current-font").text(f)}),j.find('a[data-wysihtml5-command="foreColor"]').click(function(b){var c=b.target||b.srcElement,d=a(c);i.toolbar.find(".current-color").text(d.html())}),this.el.before(j),j},addMoreShortcuts:function(a,c,d){b.dom.observe(c,"keydown",function(c){var e,f=c.keyCode,g=d[f];(c.ctrlKey||c.metaKey||c.altKey)&&g&&b.commands[g]&&(e=a.toolbar.commandMapping[g+":null"],e&&e.dialog&&!e.state?e.dialog.show():b.commands[g].exec(a.composer,g),c.preventDefault())})}},c={resetDefaults:function(){a.fn.wysihtml5.defaultOptions=a.extend(!0,{},a.fn.wysihtml5.defaultOptionsCache)},bypassDefaults:function(b){return this.each(function(){var c=a(this);c.data("wysihtml5",new g(c,b))})},shallowExtend:function(b){var d=a.extend({},a.fn.wysihtml5.defaultOptions,b||{},a(this).data()),e=this;return c.bypassDefaults.apply(e,[d])},deepExtend:function(b){var d=a.extend(!0,{},a.fn.wysihtml5.defaultOptions,b||{}),e=this;return c.bypassDefaults.apply(e,[d])},init:function(a){var b=this;return c.shallowExtend.apply(b,[a])}},a.fn.wysihtml5=function(b){return c[b]?c[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?(a.error("Method "+b+" does not exist on jQuery.wysihtml5"),void 0):c.init.apply(this,arguments)},a.fn.wysihtml5.Constructor=g,d=a.fn.wysihtml5.defaultOptions={toolbar:{"font-styles":!0,color:!1,emphasis:{small:!0},blockquote:!0,lists:!0,html:!1,link:!0,image:!0,smallmodals:!1},useLineBreaks:!1,parserRules:{classes:{"wysiwyg-color-silver":1,"wysiwyg-color-gray":1,"wysiwyg-color-white":1,"wysiwyg-color-maroon":1,"wysiwyg-color-red":1,"wysiwyg-color-purple":1,"wysiwyg-color-fuchsia":1,"wysiwyg-color-green":1,"wysiwyg-color-lime":1,"wysiwyg-color-olive":1,"wysiwyg-color-yellow":1,"wysiwyg-color-navy":1,"wysiwyg-color-blue":1,"wysiwyg-color-teal":1,"wysiwyg-color-aqua":1,"wysiwyg-color-orange":1},tags:{b:{},i:{},strong:{},em:{},p:{},br:{},ol:{},ul:{},li:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},blockquote:{},u:1,img:{check_attributes:{width:"numbers",alt:"alt",src:"url",height:"numbers"}},a:{check_attributes:{href:"url"},set_attributes:{target:"_blank",rel:"nofollow"}},span:1,div:1,small:1,code:1,pre:1}},locale:"en",shortcuts:{83:"small",75:"createLink"}},void 0===a.fn.wysihtml5.defaultOptionsCache&&(a.fn.wysihtml5.defaultOptionsCache=a.extend(!0,{},a.fn.wysihtml5.defaultOptions)),e=a.fn.wysihtml5.locale={}};c(a,b)}),function(a){a.commands.small={exec:function(b,c){return a.commands.formatInline.exec(b,c,"small")},state:function(b,c){return a.commands.formatInline.state(b,c,"small")}}}(wysihtml5),function(a){"function"==typeof define&&define.amd?define("bootstrap.wysihtml5.en-US",["jquery","bootstrap.wysihtml5"],a):a(jQuery)}(function(a){a.fn.wysihtml5.locale.en=a.fn.wysihtml5.locale["en-US"]={font_styles:{normal:"Normal text",h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6"},emphasis:{bold:"Bold",italic:"Italic",underline:"Underline",small:"Small"},lists:{unordered:"Unordered list",ordered:"Ordered list",outdent:"Outdent",indent:"Indent"},link:{insert:"Insert link",cancel:"Cancel",target:"Open link in new window"},image:{insert:"Insert image",cancel:"Cancel"},html:{edit:"Edit HTML"},colours:{black:"Black",silver:"Silver",gray:"Grey",maroon:"Maroon",red:"Red",purple:"Purple",green:"Green",olive:"Olive",navy:"Navy",blue:"Blue",orange:"Orange"}}}); AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css 0000644 00000004262 15002261751 0021144 0 ustar 00 /*! bootstrap3-wysihtml5-bower 2014-09-26 */ ul.wysihtml5-toolbar{margin:0;padding:0;display:block}ul.wysihtml5-toolbar::after{clear:both;display:table;content:""}ul.wysihtml5-toolbar>li{float:left;display:list-item;list-style:none;margin:0 5px 10px 0}ul.wysihtml5-toolbar a[data-wysihtml5-command=bold]{font-weight:700}ul.wysihtml5-toolbar a[data-wysihtml5-command=italic]{font-style:italic}ul.wysihtml5-toolbar a[data-wysihtml5-command=underline]{text-decoration:underline}ul.wysihtml5-toolbar a.btn.wysihtml5-command-active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#D9D9D9;outline:0}ul.wysihtml5-commands-disabled .dropdown-menu{display:none!important}ul.wysihtml5-toolbar div.wysihtml5-colors{display:block;width:50px;height:20px;margin-top:2px;margin-left:5px;position:absolute;pointer-events:none}ul.wysihtml5-toolbar a.wysihtml5-colors-title{padding-left:70px}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=black]{background:#000!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=silver]{background:silver!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=gray]{background:gray!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=maroon]{background:maroon!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=red]{background:red!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=purple]{background:purple!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=green]{background:green!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=olive]{background:olive!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=navy]{background:navy!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=blue]{background:#00f!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=orange]{background:orange!important}.glyphicon-quote:before{content:"\201C";font-family:Georgia,serif;font-size:50px;position:absolute;top:-4px;left:-3px;max-height:100%}.glyphicon-quote:after{content:"\0000a0"} AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.js 0000644 00002122534 15002261751 0020762 0 ustar 00 // TODO: in future try to replace most inline compability checks with polyfills for code readability // element.textContent polyfill. // Unsupporting browsers: IE8 if (Object.defineProperty && Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(Element.prototype, "textContent") && !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get) { (function() { var innerText = Object.getOwnPropertyDescriptor(Element.prototype, "innerText"); Object.defineProperty(Element.prototype, "textContent", { get: function() { return innerText.get.call(this); }, set: function(s) { return innerText.set.call(this, s); } } ); })(); } // isArray polyfill for ie8 if(!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[object Array]'; }; };/** * @license wysihtml5x v0.4.15 * https://github.com/Edicy/wysihtml5 * * Author: Christopher Blum (https://github.com/tiff) * Secondary author of extended features: Oliver Pulges (https://github.com/pulges) * * Copyright (C) 2012 XING AG * Licensed under the MIT license (MIT) * */ var wysihtml5 = { version: "0.4.15", // namespaces commands: {}, dom: {}, quirks: {}, toolbar: {}, lang: {}, selection: {}, views: {}, INVISIBLE_SPACE: "\uFEFF", EMPTY_FUNCTION: function() {}, ELEMENT_NODE: 1, TEXT_NODE: 3, BACKSPACE_KEY: 8, ENTER_KEY: 13, ESCAPE_KEY: 27, SPACE_KEY: 32, DELETE_KEY: 46 }; ;/** * Rangy, a cross-browser JavaScript range and selection library * http://code.google.com/p/rangy/ * * Copyright 2014, Tim Down * Licensed under the MIT license. * Version: 1.3alpha.20140804 * Build date: 4 August 2014 */ (function(factory, global) { if (typeof define == "function" && define.amd) { // AMD. Register as an anonymous module. define(factory); /* TODO: look into this properly. } else if (typeof exports == "object") { // Node/CommonJS style for Browserify module.exports = factory; */ } else { // No AMD or CommonJS support so we place Rangy in a global variable global.rangy = factory(); } })(function() { var OBJECT = "object", FUNCTION = "function", UNDEFINED = "undefined"; // Minimal set of properties required for DOM Level 2 Range compliance. Comparison constants such as START_TO_START // are omitted because ranges in KHTML do not have them but otherwise work perfectly well. See issue 113. var domRangeProperties = ["startContainer", "startOffset", "endContainer", "endOffset", "collapsed", "commonAncestorContainer"]; // Minimal set of methods required for DOM Level 2 Range compliance var domRangeMethods = ["setStart", "setStartBefore", "setStartAfter", "setEnd", "setEndBefore", "setEndAfter", "collapse", "selectNode", "selectNodeContents", "compareBoundaryPoints", "deleteContents", "extractContents", "cloneContents", "insertNode", "surroundContents", "cloneRange", "toString", "detach"]; var textRangeProperties = ["boundingHeight", "boundingLeft", "boundingTop", "boundingWidth", "htmlText", "text"]; // Subset of TextRange's full set of methods that we're interested in var textRangeMethods = ["collapse", "compareEndPoints", "duplicate", "moveToElementText", "parentElement", "select", "setEndPoint", "getBoundingClientRect"]; /*----------------------------------------------------------------------------------------------------------------*/ // Trio of functions taken from Peter Michaux's article: // http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting function isHostMethod(o, p) { var t = typeof o[p]; return t == FUNCTION || (!!(t == OBJECT && o[p])) || t == "unknown"; } function isHostObject(o, p) { return !!(typeof o[p] == OBJECT && o[p]); } function isHostProperty(o, p) { return typeof o[p] != UNDEFINED; } // Creates a convenience function to save verbose repeated calls to tests functions function createMultiplePropertyTest(testFunc) { return function(o, props) { var i = props.length; while (i--) { if (!testFunc(o, props[i])) { return false; } } return true; }; } // Next trio of functions are a convenience to save verbose repeated calls to previous two functions var areHostMethods = createMultiplePropertyTest(isHostMethod); var areHostObjects = createMultiplePropertyTest(isHostObject); var areHostProperties = createMultiplePropertyTest(isHostProperty); function isTextRange(range) { return range && areHostMethods(range, textRangeMethods) && areHostProperties(range, textRangeProperties); } function getBody(doc) { return isHostObject(doc, "body") ? doc.body : doc.getElementsByTagName("body")[0]; } var modules = {}; var api = { version: "1.3alpha.20140804", initialized: false, supported: true, util: { isHostMethod: isHostMethod, isHostObject: isHostObject, isHostProperty: isHostProperty, areHostMethods: areHostMethods, areHostObjects: areHostObjects, areHostProperties: areHostProperties, isTextRange: isTextRange, getBody: getBody }, features: {}, modules: modules, config: { alertOnFail: true, alertOnWarn: false, preferTextRange: false, autoInitialize: (typeof rangyAutoInitialize == UNDEFINED) ? true : rangyAutoInitialize } }; function consoleLog(msg) { if (isHostObject(window, "console") && isHostMethod(window.console, "log")) { window.console.log(msg); } } function alertOrLog(msg, shouldAlert) { if (shouldAlert) { window.alert(msg); } else { consoleLog(msg); } } function fail(reason) { api.initialized = true; api.supported = false; alertOrLog("Rangy is not supported on this page in your browser. Reason: " + reason, api.config.alertOnFail); } api.fail = fail; function warn(msg) { alertOrLog("Rangy warning: " + msg, api.config.alertOnWarn); } api.warn = warn; // Add utility extend() method if ({}.hasOwnProperty) { api.util.extend = function(obj, props, deep) { var o, p; for (var i in props) { if (props.hasOwnProperty(i)) { o = obj[i]; p = props[i]; if (deep && o !== null && typeof o == "object" && p !== null && typeof p == "object") { api.util.extend(o, p, true); } obj[i] = p; } } // Special case for toString, which does not show up in for...in loops in IE <= 8 if (props.hasOwnProperty("toString")) { obj.toString = props.toString; } return obj; }; } else { fail("hasOwnProperty not supported"); } // Test whether Array.prototype.slice can be relied on for NodeLists and use an alternative toArray() if not (function() { var el = document.createElement("div"); el.appendChild(document.createElement("span")); var slice = [].slice; var toArray; try { if (slice.call(el.childNodes, 0)[0].nodeType == 1) { toArray = function(arrayLike) { return slice.call(arrayLike, 0); }; } } catch (e) {} if (!toArray) { toArray = function(arrayLike) { var arr = []; for (var i = 0, len = arrayLike.length; i < len; ++i) { arr[i] = arrayLike[i]; } return arr; }; } api.util.toArray = toArray; })(); // Very simple event handler wrapper function that doesn't attempt to solve issues such as "this" handling or // normalization of event properties var addListener; if (isHostMethod(document, "addEventListener")) { addListener = function(obj, eventType, listener) { obj.addEventListener(eventType, listener, false); }; } else if (isHostMethod(document, "attachEvent")) { addListener = function(obj, eventType, listener) { obj.attachEvent("on" + eventType, listener); }; } else { fail("Document does not have required addEventListener or attachEvent method"); } api.util.addListener = addListener; var initListeners = []; function getErrorDesc(ex) { return ex.message || ex.description || String(ex); } // Initialization function init() { if (api.initialized) { return; } var testRange; var implementsDomRange = false, implementsTextRange = false; // First, perform basic feature tests if (isHostMethod(document, "createRange")) { testRange = document.createRange(); if (areHostMethods(testRange, domRangeMethods) && areHostProperties(testRange, domRangeProperties)) { implementsDomRange = true; } } var body = getBody(document); if (!body || body.nodeName.toLowerCase() != "body") { fail("No body element found"); return; } if (body && isHostMethod(body, "createTextRange")) { testRange = body.createTextRange(); if (isTextRange(testRange)) { implementsTextRange = true; } } if (!implementsDomRange && !implementsTextRange) { fail("Neither Range nor TextRange are available"); return; } api.initialized = true; api.features = { implementsDomRange: implementsDomRange, implementsTextRange: implementsTextRange }; // Initialize modules var module, errorMessage; for (var moduleName in modules) { if ( (module = modules[moduleName]) instanceof Module ) { module.init(module, api); } } // Call init listeners for (var i = 0, len = initListeners.length; i < len; ++i) { try { initListeners[i](api); } catch (ex) { errorMessage = "Rangy init listener threw an exception. Continuing. Detail: " + getErrorDesc(ex); consoleLog(errorMessage); } } } // Allow external scripts to initialize this library in case it's loaded after the document has loaded api.init = init; // Execute listener immediately if already initialized api.addInitListener = function(listener) { if (api.initialized) { listener(api); } else { initListeners.push(listener); } }; var shimListeners = []; api.addShimListener = function(listener) { shimListeners.push(listener); }; function shim(win) { win = win || window; init(); // Notify listeners for (var i = 0, len = shimListeners.length; i < len; ++i) { shimListeners[i](win); } } api.shim = api.createMissingNativeApi = shim; function Module(name, dependencies, initializer) { this.name = name; this.dependencies = dependencies; this.initialized = false; this.supported = false; this.initializer = initializer; } Module.prototype = { init: function() { var requiredModuleNames = this.dependencies || []; for (var i = 0, len = requiredModuleNames.length, requiredModule, moduleName; i < len; ++i) { moduleName = requiredModuleNames[i]; requiredModule = modules[moduleName]; if (!requiredModule || !(requiredModule instanceof Module)) { throw new Error("required module '" + moduleName + "' not found"); } requiredModule.init(); if (!requiredModule.supported) { throw new Error("required module '" + moduleName + "' not supported"); } } // Now run initializer this.initializer(this); }, fail: function(reason) { this.initialized = true; this.supported = false; throw new Error("Module '" + this.name + "' failed to load: " + reason); }, warn: function(msg) { api.warn("Module " + this.name + ": " + msg); }, deprecationNotice: function(deprecated, replacement) { api.warn("DEPRECATED: " + deprecated + " in module " + this.name + "is deprecated. Please use " + replacement + " instead"); }, createError: function(msg) { return new Error("Error in Rangy " + this.name + " module: " + msg); } }; function createModule(isCore, name, dependencies, initFunc) { var newModule = new Module(name, dependencies, function(module) { if (!module.initialized) { module.initialized = true; try { initFunc(api, module); module.supported = true; } catch (ex) { var errorMessage = "Module '" + name + "' failed to load: " + getErrorDesc(ex); consoleLog(errorMessage); } } }); modules[name] = newModule; } api.createModule = function(name) { // Allow 2 or 3 arguments (second argument is an optional array of dependencies) var initFunc, dependencies; if (arguments.length == 2) { initFunc = arguments[1]; dependencies = []; } else { initFunc = arguments[2]; dependencies = arguments[1]; } var module = createModule(false, name, dependencies, initFunc); // Initialize the module immediately if the core is already initialized if (api.initialized) { module.init(); } }; api.createCoreModule = function(name, dependencies, initFunc) { createModule(true, name, dependencies, initFunc); }; /*----------------------------------------------------------------------------------------------------------------*/ // Ensure rangy.rangePrototype and rangy.selectionPrototype are available immediately function RangePrototype() {} api.RangePrototype = RangePrototype; api.rangePrototype = new RangePrototype(); function SelectionPrototype() {} api.selectionPrototype = new SelectionPrototype(); /*----------------------------------------------------------------------------------------------------------------*/ // Wait for document to load before running tests var docReady = false; var loadHandler = function(e) { if (!docReady) { docReady = true; if (!api.initialized && api.config.autoInitialize) { init(); } } }; // Test whether we have window and document objects that we will need if (typeof window == UNDEFINED) { fail("No window found"); return; } if (typeof document == UNDEFINED) { fail("No document found"); return; } if (isHostMethod(document, "addEventListener")) { document.addEventListener("DOMContentLoaded", loadHandler, false); } // Add a fallback in case the DOMContentLoaded event isn't supported addListener(window, "load", loadHandler); /*----------------------------------------------------------------------------------------------------------------*/ // DOM utility methods used by Rangy api.createCoreModule("DomUtil", [], function(api, module) { var UNDEF = "undefined"; var util = api.util; // Perform feature tests if (!util.areHostMethods(document, ["createDocumentFragment", "createElement", "createTextNode"])) { module.fail("document missing a Node creation method"); } if (!util.isHostMethod(document, "getElementsByTagName")) { module.fail("document missing getElementsByTagName method"); } var el = document.createElement("div"); if (!util.areHostMethods(el, ["insertBefore", "appendChild", "cloneNode"] || !util.areHostObjects(el, ["previousSibling", "nextSibling", "childNodes", "parentNode"]))) { module.fail("Incomplete Element implementation"); } // innerHTML is required for Range's createContextualFragment method if (!util.isHostProperty(el, "innerHTML")) { module.fail("Element is missing innerHTML property"); } var textNode = document.createTextNode("test"); if (!util.areHostMethods(textNode, ["splitText", "deleteData", "insertData", "appendData", "cloneNode"] || !util.areHostObjects(el, ["previousSibling", "nextSibling", "childNodes", "parentNode"]) || !util.areHostProperties(textNode, ["data"]))) { module.fail("Incomplete Text Node implementation"); } /*----------------------------------------------------------------------------------------------------------------*/ // Removed use of indexOf because of a bizarre bug in Opera that is thrown in one of the Acid3 tests. I haven't been // able to replicate it outside of the test. The bug is that indexOf returns -1 when called on an Array that // contains just the document as a single element and the value searched for is the document. var arrayContains = /*Array.prototype.indexOf ? function(arr, val) { return arr.indexOf(val) > -1; }:*/ function(arr, val) { var i = arr.length; while (i--) { if (arr[i] === val) { return true; } } return false; }; // Opera 11 puts HTML elements in the null namespace, it seems, and IE 7 has undefined namespaceURI function isHtmlNamespace(node) { var ns; return typeof node.namespaceURI == UNDEF || ((ns = node.namespaceURI) === null || ns == "http://www.w3.org/1999/xhtml"); } function parentElement(node) { var parent = node.parentNode; return (parent.nodeType == 1) ? parent : null; } function getNodeIndex(node) { var i = 0; while( (node = node.previousSibling) ) { ++i; } return i; } function getNodeLength(node) { switch (node.nodeType) { case 7: case 10: return 0; case 3: case 8: return node.length; default: return node.childNodes.length; } } function getCommonAncestor(node1, node2) { var ancestors = [], n; for (n = node1; n; n = n.parentNode) { ancestors.push(n); } for (n = node2; n; n = n.parentNode) { if (arrayContains(ancestors, n)) { return n; } } return null; } function isAncestorOf(ancestor, descendant, selfIsAncestor) { var n = selfIsAncestor ? descendant : descendant.parentNode; while (n) { if (n === ancestor) { return true; } else { n = n.parentNode; } } return false; } function isOrIsAncestorOf(ancestor, descendant) { return isAncestorOf(ancestor, descendant, true); } function getClosestAncestorIn(node, ancestor, selfIsAncestor) { var p, n = selfIsAncestor ? node : node.parentNode; while (n) { p = n.parentNode; if (p === ancestor) { return n; } n = p; } return null; } function isCharacterDataNode(node) { var t = node.nodeType; return t == 3 || t == 4 || t == 8 ; // Text, CDataSection or Comment } function isTextOrCommentNode(node) { if (!node) { return false; } var t = node.nodeType; return t == 3 || t == 8 ; // Text or Comment } function insertAfter(node, precedingNode) { var nextNode = precedingNode.nextSibling, parent = precedingNode.parentNode; if (nextNode) { parent.insertBefore(node, nextNode); } else { parent.appendChild(node); } return node; } // Note that we cannot use splitText() because it is bugridden in IE 9. function splitDataNode(node, index, positionsToPreserve) { var newNode = node.cloneNode(false); newNode.deleteData(0, index); node.deleteData(index, node.length - index); insertAfter(newNode, node); // Preserve positions if (positionsToPreserve) { for (var i = 0, position; position = positionsToPreserve[i++]; ) { // Handle case where position was inside the portion of node after the split point if (position.node == node && position.offset > index) { position.node = newNode; position.offset -= index; } // Handle the case where the position is a node offset within node's parent else if (position.node == node.parentNode && position.offset > getNodeIndex(node)) { ++position.offset; } } } return newNode; } function getDocument(node) { if (node.nodeType == 9) { return node; } else if (typeof node.ownerDocument != UNDEF) { return node.ownerDocument; } else if (typeof node.document != UNDEF) { return node.document; } else if (node.parentNode) { return getDocument(node.parentNode); } else { throw module.createError("getDocument: no document found for node"); } } function getWindow(node) { var doc = getDocument(node); if (typeof doc.defaultView != UNDEF) { return doc.defaultView; } else if (typeof doc.parentWindow != UNDEF) { return doc.parentWindow; } else { throw module.createError("Cannot get a window object for node"); } } function getIframeDocument(iframeEl) { if (typeof iframeEl.contentDocument != UNDEF) { return iframeEl.contentDocument; } else if (typeof iframeEl.contentWindow != UNDEF) { return iframeEl.contentWindow.document; } else { throw module.createError("getIframeDocument: No Document object found for iframe element"); } } function getIframeWindow(iframeEl) { if (typeof iframeEl.contentWindow != UNDEF) { return iframeEl.contentWindow; } else if (typeof iframeEl.contentDocument != UNDEF) { return iframeEl.contentDocument.defaultView; } else { throw module.createError("getIframeWindow: No Window object found for iframe element"); } } // This looks bad. Is it worth it? function isWindow(obj) { return obj && util.isHostMethod(obj, "setTimeout") && util.isHostObject(obj, "document"); } function getContentDocument(obj, module, methodName) { var doc; if (!obj) { doc = document; } // Test if a DOM node has been passed and obtain a document object for it if so else if (util.isHostProperty(obj, "nodeType")) { doc = (obj.nodeType == 1 && obj.tagName.toLowerCase() == "iframe") ? getIframeDocument(obj) : getDocument(obj); } // Test if the doc parameter appears to be a Window object else if (isWindow(obj)) { doc = obj.document; } if (!doc) { throw module.createError(methodName + "(): Parameter must be a Window object or DOM node"); } return doc; } function getRootContainer(node) { var parent; while ( (parent = node.parentNode) ) { node = parent; } return node; } function comparePoints(nodeA, offsetA, nodeB, offsetB) { // See http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Comparing var nodeC, root, childA, childB, n; if (nodeA == nodeB) { // Case 1: nodes are the same return offsetA === offsetB ? 0 : (offsetA < offsetB) ? -1 : 1; } else if ( (nodeC = getClosestAncestorIn(nodeB, nodeA, true)) ) { // Case 2: node C (container B or an ancestor) is a child node of A return offsetA <= getNodeIndex(nodeC) ? -1 : 1; } else if ( (nodeC = getClosestAncestorIn(nodeA, nodeB, true)) ) { // Case 3: node C (container A or an ancestor) is a child node of B return getNodeIndex(nodeC) < offsetB ? -1 : 1; } else { root = getCommonAncestor(nodeA, nodeB); if (!root) { throw new Error("comparePoints error: nodes have no common ancestor"); } // Case 4: containers are siblings or descendants of siblings childA = (nodeA === root) ? root : getClosestAncestorIn(nodeA, root, true); childB = (nodeB === root) ? root : getClosestAncestorIn(nodeB, root, true); if (childA === childB) { // This shouldn't be possible throw module.createError("comparePoints got to case 4 and childA and childB are the same!"); } else { n = root.firstChild; while (n) { if (n === childA) { return -1; } else if (n === childB) { return 1; } n = n.nextSibling; } } } } /*----------------------------------------------------------------------------------------------------------------*/ // Test for IE's crash (IE 6/7) or exception (IE >= 8) when a reference to garbage-collected text node is queried var crashyTextNodes = false; function isBrokenNode(node) { var n; try { n = node.parentNode; return false; } catch (e) { return true; } } (function() { var el = document.createElement("b"); el.innerHTML = "1"; var textNode = el.firstChild; el.innerHTML = "<br>"; crashyTextNodes = isBrokenNode(textNode); api.features.crashyTextNodes = crashyTextNodes; })(); /*----------------------------------------------------------------------------------------------------------------*/ function inspectNode(node) { if (!node) { return "[No node]"; } if (crashyTextNodes && isBrokenNode(node)) { return "[Broken node]"; } if (isCharacterDataNode(node)) { return '"' + node.data + '"'; } if (node.nodeType == 1) { var idAttr = node.id ? ' id="' + node.id + '"' : ""; return "<" + node.nodeName + idAttr + ">[index:" + getNodeIndex(node) + ",length:" + node.childNodes.length + "][" + (node.innerHTML || "[innerHTML not supported]").slice(0, 25) + "]"; } return node.nodeName; } function fragmentFromNodeChildren(node) { var fragment = getDocument(node).createDocumentFragment(), child; while ( (child = node.firstChild) ) { fragment.appendChild(child); } return fragment; } var getComputedStyleProperty; if (typeof window.getComputedStyle != UNDEF) { getComputedStyleProperty = function(el, propName) { return getWindow(el).getComputedStyle(el, null)[propName]; }; } else if (typeof document.documentElement.currentStyle != UNDEF) { getComputedStyleProperty = function(el, propName) { return el.currentStyle[propName]; }; } else { module.fail("No means of obtaining computed style properties found"); } function NodeIterator(root) { this.root = root; this._next = root; } NodeIterator.prototype = { _current: null, hasNext: function() { return !!this._next; }, next: function() { var n = this._current = this._next; var child, next; if (this._current) { child = n.firstChild; if (child) { this._next = child; } else { next = null; while ((n !== this.root) && !(next = n.nextSibling)) { n = n.parentNode; } this._next = next; } } return this._current; }, detach: function() { this._current = this._next = this.root = null; } }; function createIterator(root) { return new NodeIterator(root); } function DomPosition(node, offset) { this.node = node; this.offset = offset; } DomPosition.prototype = { equals: function(pos) { return !!pos && this.node === pos.node && this.offset == pos.offset; }, inspect: function() { return "[DomPosition(" + inspectNode(this.node) + ":" + this.offset + ")]"; }, toString: function() { return this.inspect(); } }; function DOMException(codeName) { this.code = this[codeName]; this.codeName = codeName; this.message = "DOMException: " + this.codeName; } DOMException.prototype = { INDEX_SIZE_ERR: 1, HIERARCHY_REQUEST_ERR: 3, WRONG_DOCUMENT_ERR: 4, NO_MODIFICATION_ALLOWED_ERR: 7, NOT_FOUND_ERR: 8, NOT_SUPPORTED_ERR: 9, INVALID_STATE_ERR: 11, INVALID_NODE_TYPE_ERR: 24 }; DOMException.prototype.toString = function() { return this.message; }; api.dom = { arrayContains: arrayContains, isHtmlNamespace: isHtmlNamespace, parentElement: parentElement, getNodeIndex: getNodeIndex, getNodeLength: getNodeLength, getCommonAncestor: getCommonAncestor, isAncestorOf: isAncestorOf, isOrIsAncestorOf: isOrIsAncestorOf, getClosestAncestorIn: getClosestAncestorIn, isCharacterDataNode: isCharacterDataNode, isTextOrCommentNode: isTextOrCommentNode, insertAfter: insertAfter, splitDataNode: splitDataNode, getDocument: getDocument, getWindow: getWindow, getIframeWindow: getIframeWindow, getIframeDocument: getIframeDocument, getBody: util.getBody, isWindow: isWindow, getContentDocument: getContentDocument, getRootContainer: getRootContainer, comparePoints: comparePoints, isBrokenNode: isBrokenNode, inspectNode: inspectNode, getComputedStyleProperty: getComputedStyleProperty, fragmentFromNodeChildren: fragmentFromNodeChildren, createIterator: createIterator, DomPosition: DomPosition }; api.DOMException = DOMException; }); /*----------------------------------------------------------------------------------------------------------------*/ // Pure JavaScript implementation of DOM Range api.createCoreModule("DomRange", ["DomUtil"], function(api, module) { var dom = api.dom; var util = api.util; var DomPosition = dom.DomPosition; var DOMException = api.DOMException; var isCharacterDataNode = dom.isCharacterDataNode; var getNodeIndex = dom.getNodeIndex; var isOrIsAncestorOf = dom.isOrIsAncestorOf; var getDocument = dom.getDocument; var comparePoints = dom.comparePoints; var splitDataNode = dom.splitDataNode; var getClosestAncestorIn = dom.getClosestAncestorIn; var getNodeLength = dom.getNodeLength; var arrayContains = dom.arrayContains; var getRootContainer = dom.getRootContainer; var crashyTextNodes = api.features.crashyTextNodes; /*----------------------------------------------------------------------------------------------------------------*/ // Utility functions function isNonTextPartiallySelected(node, range) { return (node.nodeType != 3) && (isOrIsAncestorOf(node, range.startContainer) || isOrIsAncestorOf(node, range.endContainer)); } function getRangeDocument(range) { return range.document || getDocument(range.startContainer); } function getBoundaryBeforeNode(node) { return new DomPosition(node.parentNode, getNodeIndex(node)); } function getBoundaryAfterNode(node) { return new DomPosition(node.parentNode, getNodeIndex(node) + 1); } function insertNodeAtPosition(node, n, o) { var firstNodeInserted = node.nodeType == 11 ? node.firstChild : node; if (isCharacterDataNode(n)) { if (o == n.length) { dom.insertAfter(node, n); } else { n.parentNode.insertBefore(node, o == 0 ? n : splitDataNode(n, o)); } } else if (o >= n.childNodes.length) { n.appendChild(node); } else { n.insertBefore(node, n.childNodes[o]); } return firstNodeInserted; } function rangesIntersect(rangeA, rangeB, touchingIsIntersecting) { assertRangeValid(rangeA); assertRangeValid(rangeB); if (getRangeDocument(rangeB) != getRangeDocument(rangeA)) { throw new DOMException("WRONG_DOCUMENT_ERR"); } var startComparison = comparePoints(rangeA.startContainer, rangeA.startOffset, rangeB.endContainer, rangeB.endOffset), endComparison = comparePoints(rangeA.endContainer, rangeA.endOffset, rangeB.startContainer, rangeB.startOffset); return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0; } function cloneSubtree(iterator) { var partiallySelected; for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) { partiallySelected = iterator.isPartiallySelectedSubtree(); node = node.cloneNode(!partiallySelected); if (partiallySelected) { subIterator = iterator.getSubtreeIterator(); node.appendChild(cloneSubtree(subIterator)); subIterator.detach(); } if (node.nodeType == 10) { // DocumentType throw new DOMException("HIERARCHY_REQUEST_ERR"); } frag.appendChild(node); } return frag; } function iterateSubtree(rangeIterator, func, iteratorState) { var it, n; iteratorState = iteratorState || { stop: false }; for (var node, subRangeIterator; node = rangeIterator.next(); ) { if (rangeIterator.isPartiallySelectedSubtree()) { if (func(node) === false) { iteratorState.stop = true; return; } else { // The node is partially selected by the Range, so we can use a new RangeIterator on the portion of // the node selected by the Range. subRangeIterator = rangeIterator.getSubtreeIterator(); iterateSubtree(subRangeIterator, func, iteratorState); subRangeIterator.detach(); if (iteratorState.stop) { return; } } } else { // The whole node is selected, so we can use efficient DOM iteration to iterate over the node and its // descendants it = dom.createIterator(node); while ( (n = it.next()) ) { if (func(n) === false) { iteratorState.stop = true; return; } } } } } function deleteSubtree(iterator) { var subIterator; while (iterator.next()) { if (iterator.isPartiallySelectedSubtree()) { subIterator = iterator.getSubtreeIterator(); deleteSubtree(subIterator); subIterator.detach(); } else { iterator.remove(); } } } function extractSubtree(iterator) { for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next(); ) { if (iterator.isPartiallySelectedSubtree()) { node = node.cloneNode(false); subIterator = iterator.getSubtreeIterator(); node.appendChild(extractSubtree(subIterator)); subIterator.detach(); } else { iterator.remove(); } if (node.nodeType == 10) { // DocumentType throw new DOMException("HIERARCHY_REQUEST_ERR"); } frag.appendChild(node); } return frag; } function getNodesInRange(range, nodeTypes, filter) { var filterNodeTypes = !!(nodeTypes && nodeTypes.length), regex; var filterExists = !!filter; if (filterNodeTypes) { regex = new RegExp("^(" + nodeTypes.join("|") + ")$"); } var nodes = []; iterateSubtree(new RangeIterator(range, false), function(node) { if (filterNodeTypes && !regex.test(node.nodeType)) { return; } if (filterExists && !filter(node)) { return; } // Don't include a boundary container if it is a character data node and the range does not contain any // of its character data. See issue 190. var sc = range.startContainer; if (node == sc && isCharacterDataNode(sc) && range.startOffset == sc.length) { return; } var ec = range.endContainer; if (node == ec && isCharacterDataNode(ec) && range.endOffset == 0) { return; } nodes.push(node); }); return nodes; } function inspect(range) { var name = (typeof range.getName == "undefined") ? "Range" : range.getName(); return "[" + name + "(" + dom.inspectNode(range.startContainer) + ":" + range.startOffset + ", " + dom.inspectNode(range.endContainer) + ":" + range.endOffset + ")]"; } /*----------------------------------------------------------------------------------------------------------------*/ // RangeIterator code partially borrows from IERange by Tim Ryan (http://github.com/timcameronryan/IERange) function RangeIterator(range, clonePartiallySelectedTextNodes) { this.range = range; this.clonePartiallySelectedTextNodes = clonePartiallySelectedTextNodes; if (!range.collapsed) { this.sc = range.startContainer; this.so = range.startOffset; this.ec = range.endContainer; this.eo = range.endOffset; var root = range.commonAncestorContainer; if (this.sc === this.ec && isCharacterDataNode(this.sc)) { this.isSingleCharacterDataNode = true; this._first = this._last = this._next = this.sc; } else { this._first = this._next = (this.sc === root && !isCharacterDataNode(this.sc)) ? this.sc.childNodes[this.so] : getClosestAncestorIn(this.sc, root, true); this._last = (this.ec === root && !isCharacterDataNode(this.ec)) ? this.ec.childNodes[this.eo - 1] : getClosestAncestorIn(this.ec, root, true); } } } RangeIterator.prototype = { _current: null, _next: null, _first: null, _last: null, isSingleCharacterDataNode: false, reset: function() { this._current = null; this._next = this._first; }, hasNext: function() { return !!this._next; }, next: function() { // Move to next node var current = this._current = this._next; if (current) { this._next = (current !== this._last) ? current.nextSibling : null; // Check for partially selected text nodes if (isCharacterDataNode(current) && this.clonePartiallySelectedTextNodes) { if (current === this.ec) { (current = current.cloneNode(true)).deleteData(this.eo, current.length - this.eo); } if (this._current === this.sc) { (current = current.cloneNode(true)).deleteData(0, this.so); } } } return current; }, remove: function() { var current = this._current, start, end; if (isCharacterDataNode(current) && (current === this.sc || current === this.ec)) { start = (current === this.sc) ? this.so : 0; end = (current === this.ec) ? this.eo : current.length; if (start != end) { current.deleteData(start, end - start); } } else { if (current.parentNode) { current.parentNode.removeChild(current); } else { } } }, // Checks if the current node is partially selected isPartiallySelectedSubtree: function() { var current = this._current; return isNonTextPartiallySelected(current, this.range); }, getSubtreeIterator: function() { var subRange; if (this.isSingleCharacterDataNode) { subRange = this.range.cloneRange(); subRange.collapse(false); } else { subRange = new Range(getRangeDocument(this.range)); var current = this._current; var startContainer = current, startOffset = 0, endContainer = current, endOffset = getNodeLength(current); if (isOrIsAncestorOf(current, this.sc)) { startContainer = this.sc; startOffset = this.so; } if (isOrIsAncestorOf(current, this.ec)) { endContainer = this.ec; endOffset = this.eo; } updateBoundaries(subRange, startContainer, startOffset, endContainer, endOffset); } return new RangeIterator(subRange, this.clonePartiallySelectedTextNodes); }, detach: function() { this.range = this._current = this._next = this._first = this._last = this.sc = this.so = this.ec = this.eo = null; } }; /*----------------------------------------------------------------------------------------------------------------*/ var beforeAfterNodeTypes = [1, 3, 4, 5, 7, 8, 10]; var rootContainerNodeTypes = [2, 9, 11]; var readonlyNodeTypes = [5, 6, 10, 12]; var insertableNodeTypes = [1, 3, 4, 5, 7, 8, 10, 11]; var surroundNodeTypes = [1, 3, 4, 5, 7, 8]; function createAncestorFinder(nodeTypes) { return function(node, selfIsAncestor) { var t, n = selfIsAncestor ? node : node.parentNode; while (n) { t = n.nodeType; if (arrayContains(nodeTypes, t)) { return n; } n = n.parentNode; } return null; }; } var getDocumentOrFragmentContainer = createAncestorFinder( [9, 11] ); var getReadonlyAncestor = createAncestorFinder(readonlyNodeTypes); var getDocTypeNotationEntityAncestor = createAncestorFinder( [6, 10, 12] ); function assertNoDocTypeNotationEntityAncestor(node, allowSelf) { if (getDocTypeNotationEntityAncestor(node, allowSelf)) { throw new DOMException("INVALID_NODE_TYPE_ERR"); } } function assertValidNodeType(node, invalidTypes) { if (!arrayContains(invalidTypes, node.nodeType)) { throw new DOMException("INVALID_NODE_TYPE_ERR"); } } function assertValidOffset(node, offset) { if (offset < 0 || offset > (isCharacterDataNode(node) ? node.length : node.childNodes.length)) { throw new DOMException("INDEX_SIZE_ERR"); } } function assertSameDocumentOrFragment(node1, node2) { if (getDocumentOrFragmentContainer(node1, true) !== getDocumentOrFragmentContainer(node2, true)) { throw new DOMException("WRONG_DOCUMENT_ERR"); } } function assertNodeNotReadOnly(node) { if (getReadonlyAncestor(node, true)) { throw new DOMException("NO_MODIFICATION_ALLOWED_ERR"); } } function assertNode(node, codeName) { if (!node) { throw new DOMException(codeName); } } function isOrphan(node) { return (crashyTextNodes && dom.isBrokenNode(node)) || !arrayContains(rootContainerNodeTypes, node.nodeType) && !getDocumentOrFragmentContainer(node, true); } function isValidOffset(node, offset) { return offset <= (isCharacterDataNode(node) ? node.length : node.childNodes.length); } function isRangeValid(range) { return (!!range.startContainer && !!range.endContainer && !isOrphan(range.startContainer) && !isOrphan(range.endContainer) && isValidOffset(range.startContainer, range.startOffset) && isValidOffset(range.endContainer, range.endOffset)); } function assertRangeValid(range) { if (!isRangeValid(range)) { throw new Error("Range error: Range is no longer valid after DOM mutation (" + range.inspect() + ")"); } } /*----------------------------------------------------------------------------------------------------------------*/ // Test the browser's innerHTML support to decide how to implement createContextualFragment var styleEl = document.createElement("style"); var htmlParsingConforms = false; try { styleEl.innerHTML = "<b>x</b>"; htmlParsingConforms = (styleEl.firstChild.nodeType == 3); // Opera incorrectly creates an element node } catch (e) { // IE 6 and 7 throw } api.features.htmlParsingConforms = htmlParsingConforms; var createContextualFragment = htmlParsingConforms ? // Implementation as per HTML parsing spec, trusting in the browser's implementation of innerHTML. See // discussion and base code for this implementation at issue 67. // Spec: http://html5.org/specs/dom-parsing.html#extensions-to-the-range-interface // Thanks to Aleks Williams. function(fragmentStr) { // "Let node the context object's start's node." var node = this.startContainer; var doc = getDocument(node); // "If the context object's start's node is null, raise an INVALID_STATE_ERR // exception and abort these steps." if (!node) { throw new DOMException("INVALID_STATE_ERR"); } // "Let element be as follows, depending on node's interface:" // Document, Document Fragment: null var el = null; // "Element: node" if (node.nodeType == 1) { el = node; // "Text, Comment: node's parentElement" } else if (isCharacterDataNode(node)) { el = dom.parentElement(node); } // "If either element is null or element's ownerDocument is an HTML document // and element's local name is "html" and element's namespace is the HTML // namespace" if (el === null || ( el.nodeName == "HTML" && dom.isHtmlNamespace(getDocument(el).documentElement) && dom.isHtmlNamespace(el) )) { // "let element be a new Element with "body" as its local name and the HTML // namespace as its namespace."" el = doc.createElement("body"); } else { el = el.cloneNode(false); } // "If the node's document is an HTML document: Invoke the HTML fragment parsing algorithm." // "If the node's document is an XML document: Invoke the XML fragment parsing algorithm." // "In either case, the algorithm must be invoked with fragment as the input // and element as the context element." el.innerHTML = fragmentStr; // "If this raises an exception, then abort these steps. Otherwise, let new // children be the nodes returned." // "Let fragment be a new DocumentFragment." // "Append all new children to fragment." // "Return fragment." return dom.fragmentFromNodeChildren(el); } : // In this case, innerHTML cannot be trusted, so fall back to a simpler, non-conformant implementation that // previous versions of Rangy used (with the exception of using a body element rather than a div) function(fragmentStr) { var doc = getRangeDocument(this); var el = doc.createElement("body"); el.innerHTML = fragmentStr; return dom.fragmentFromNodeChildren(el); }; function splitRangeBoundaries(range, positionsToPreserve) { assertRangeValid(range); var sc = range.startContainer, so = range.startOffset, ec = range.endContainer, eo = range.endOffset; var startEndSame = (sc === ec); if (isCharacterDataNode(ec) && eo > 0 && eo < ec.length) { splitDataNode(ec, eo, positionsToPreserve); } if (isCharacterDataNode(sc) && so > 0 && so < sc.length) { sc = splitDataNode(sc, so, positionsToPreserve); if (startEndSame) { eo -= so; ec = sc; } else if (ec == sc.parentNode && eo >= getNodeIndex(sc)) { eo++; } so = 0; } range.setStartAndEnd(sc, so, ec, eo); } function rangeToHtml(range) { assertRangeValid(range); var container = range.commonAncestorContainer.parentNode.cloneNode(false); container.appendChild( range.cloneContents() ); return container.innerHTML; } /*----------------------------------------------------------------------------------------------------------------*/ var rangeProperties = ["startContainer", "startOffset", "endContainer", "endOffset", "collapsed", "commonAncestorContainer"]; var s2s = 0, s2e = 1, e2e = 2, e2s = 3; var n_b = 0, n_a = 1, n_b_a = 2, n_i = 3; util.extend(api.rangePrototype, { compareBoundaryPoints: function(how, range) { assertRangeValid(this); assertSameDocumentOrFragment(this.startContainer, range.startContainer); var nodeA, offsetA, nodeB, offsetB; var prefixA = (how == e2s || how == s2s) ? "start" : "end"; var prefixB = (how == s2e || how == s2s) ? "start" : "end"; nodeA = this[prefixA + "Container"]; offsetA = this[prefixA + "Offset"]; nodeB = range[prefixB + "Container"]; offsetB = range[prefixB + "Offset"]; return comparePoints(nodeA, offsetA, nodeB, offsetB); }, insertNode: function(node) { assertRangeValid(this); assertValidNodeType(node, insertableNodeTypes); assertNodeNotReadOnly(this.startContainer); if (isOrIsAncestorOf(node, this.startContainer)) { throw new DOMException("HIERARCHY_REQUEST_ERR"); } // No check for whether the container of the start of the Range is of a type that does not allow // children of the type of node: the browser's DOM implementation should do this for us when we attempt // to add the node var firstNodeInserted = insertNodeAtPosition(node, this.startContainer, this.startOffset); this.setStartBefore(firstNodeInserted); }, cloneContents: function() { assertRangeValid(this); var clone, frag; if (this.collapsed) { return getRangeDocument(this).createDocumentFragment(); } else { if (this.startContainer === this.endContainer && isCharacterDataNode(this.startContainer)) { clone = this.startContainer.cloneNode(true); clone.data = clone.data.slice(this.startOffset, this.endOffset); frag = getRangeDocument(this).createDocumentFragment(); frag.appendChild(clone); return frag; } else { var iterator = new RangeIterator(this, true); clone = cloneSubtree(iterator); iterator.detach(); } return clone; } }, canSurroundContents: function() { assertRangeValid(this); assertNodeNotReadOnly(this.startContainer); assertNodeNotReadOnly(this.endContainer); // Check if the contents can be surrounded. Specifically, this means whether the range partially selects // no non-text nodes. var iterator = new RangeIterator(this, true); var boundariesInvalid = (iterator._first && (isNonTextPartiallySelected(iterator._first, this)) || (iterator._last && isNonTextPartiallySelected(iterator._last, this))); iterator.detach(); return !boundariesInvalid; }, surroundContents: function(node) { assertValidNodeType(node, surroundNodeTypes); if (!this.canSurroundContents()) { throw new DOMException("INVALID_STATE_ERR"); } // Extract the contents var content = this.extractContents(); // Clear the children of the node if (node.hasChildNodes()) { while (node.lastChild) { node.removeChild(node.lastChild); } } // Insert the new node and add the extracted contents insertNodeAtPosition(node, this.startContainer, this.startOffset); node.appendChild(content); this.selectNode(node); }, cloneRange: function() { assertRangeValid(this); var range = new Range(getRangeDocument(this)); var i = rangeProperties.length, prop; while (i--) { prop = rangeProperties[i]; range[prop] = this[prop]; } return range; }, toString: function() { assertRangeValid(this); var sc = this.startContainer; if (sc === this.endContainer && isCharacterDataNode(sc)) { return (sc.nodeType == 3 || sc.nodeType == 4) ? sc.data.slice(this.startOffset, this.endOffset) : ""; } else { var textParts = [], iterator = new RangeIterator(this, true); iterateSubtree(iterator, function(node) { // Accept only text or CDATA nodes, not comments if (node.nodeType == 3 || node.nodeType == 4) { textParts.push(node.data); } }); iterator.detach(); return textParts.join(""); } }, // The methods below are all non-standard. The following batch were introduced by Mozilla but have since // been removed from Mozilla. compareNode: function(node) { assertRangeValid(this); var parent = node.parentNode; var nodeIndex = getNodeIndex(node); if (!parent) { throw new DOMException("NOT_FOUND_ERR"); } var startComparison = this.comparePoint(parent, nodeIndex), endComparison = this.comparePoint(parent, nodeIndex + 1); if (startComparison < 0) { // Node starts before return (endComparison > 0) ? n_b_a : n_b; } else { return (endComparison > 0) ? n_a : n_i; } }, comparePoint: function(node, offset) { assertRangeValid(this); assertNode(node, "HIERARCHY_REQUEST_ERR"); assertSameDocumentOrFragment(node, this.startContainer); if (comparePoints(node, offset, this.startContainer, this.startOffset) < 0) { return -1; } else if (comparePoints(node, offset, this.endContainer, this.endOffset) > 0) { return 1; } return 0; }, createContextualFragment: createContextualFragment, toHtml: function() { return rangeToHtml(this); }, // touchingIsIntersecting determines whether this method considers a node that borders a range intersects // with it (as in WebKit) or not (as in Gecko pre-1.9, and the default) intersectsNode: function(node, touchingIsIntersecting) { assertRangeValid(this); assertNode(node, "NOT_FOUND_ERR"); if (getDocument(node) !== getRangeDocument(this)) { return false; } var parent = node.parentNode, offset = getNodeIndex(node); assertNode(parent, "NOT_FOUND_ERR"); var startComparison = comparePoints(parent, offset, this.endContainer, this.endOffset), endComparison = comparePoints(parent, offset + 1, this.startContainer, this.startOffset); return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0; }, isPointInRange: function(node, offset) { assertRangeValid(this); assertNode(node, "HIERARCHY_REQUEST_ERR"); assertSameDocumentOrFragment(node, this.startContainer); return (comparePoints(node, offset, this.startContainer, this.startOffset) >= 0) && (comparePoints(node, offset, this.endContainer, this.endOffset) <= 0); }, // The methods below are non-standard and invented by me. // Sharing a boundary start-to-end or end-to-start does not count as intersection. intersectsRange: function(range) { return rangesIntersect(this, range, false); }, // Sharing a boundary start-to-end or end-to-start does count as intersection. intersectsOrTouchesRange: function(range) { return rangesIntersect(this, range, true); }, intersection: function(range) { if (this.intersectsRange(range)) { var startComparison = comparePoints(this.startContainer, this.startOffset, range.startContainer, range.startOffset), endComparison = comparePoints(this.endContainer, this.endOffset, range.endContainer, range.endOffset); var intersectionRange = this.cloneRange(); if (startComparison == -1) { intersectionRange.setStart(range.startContainer, range.startOffset); } if (endComparison == 1) { intersectionRange.setEnd(range.endContainer, range.endOffset); } return intersectionRange; } return null; }, union: function(range) { if (this.intersectsOrTouchesRange(range)) { var unionRange = this.cloneRange(); if (comparePoints(range.startContainer, range.startOffset, this.startContainer, this.startOffset) == -1) { unionRange.setStart(range.startContainer, range.startOffset); } if (comparePoints(range.endContainer, range.endOffset, this.endContainer, this.endOffset) == 1) { unionRange.setEnd(range.endContainer, range.endOffset); } return unionRange; } else { throw new DOMException("Ranges do not intersect"); } }, containsNode: function(node, allowPartial) { if (allowPartial) { return this.intersectsNode(node, false); } else { return this.compareNode(node) == n_i; } }, containsNodeContents: function(node) { return this.comparePoint(node, 0) >= 0 && this.comparePoint(node, getNodeLength(node)) <= 0; }, containsRange: function(range) { var intersection = this.intersection(range); return intersection !== null && range.equals(intersection); }, containsNodeText: function(node) { var nodeRange = this.cloneRange(); nodeRange.selectNode(node); var textNodes = nodeRange.getNodes([3]); if (textNodes.length > 0) { nodeRange.setStart(textNodes[0], 0); var lastTextNode = textNodes.pop(); nodeRange.setEnd(lastTextNode, lastTextNode.length); return this.containsRange(nodeRange); } else { return this.containsNodeContents(node); } }, getNodes: function(nodeTypes, filter) { assertRangeValid(this); return getNodesInRange(this, nodeTypes, filter); }, getDocument: function() { return getRangeDocument(this); }, collapseBefore: function(node) { this.setEndBefore(node); this.collapse(false); }, collapseAfter: function(node) { this.setStartAfter(node); this.collapse(true); }, getBookmark: function(containerNode) { var doc = getRangeDocument(this); var preSelectionRange = api.createRange(doc); containerNode = containerNode || dom.getBody(doc); preSelectionRange.selectNodeContents(containerNode); var range = this.intersection(preSelectionRange); var start = 0, end = 0; if (range) { preSelectionRange.setEnd(range.startContainer, range.startOffset); start = preSelectionRange.toString().length; end = start + range.toString().length; } return { start: start, end: end, containerNode: containerNode }; }, moveToBookmark: function(bookmark) { var containerNode = bookmark.containerNode; var charIndex = 0; this.setStart(containerNode, 0); this.collapse(true); var nodeStack = [containerNode], node, foundStart = false, stop = false; var nextCharIndex, i, childNodes; while (!stop && (node = nodeStack.pop())) { if (node.nodeType == 3) { nextCharIndex = charIndex + node.length; if (!foundStart && bookmark.start >= charIndex && bookmark.start <= nextCharIndex) { this.setStart(node, bookmark.start - charIndex); foundStart = true; } if (foundStart && bookmark.end >= charIndex && bookmark.end <= nextCharIndex) { this.setEnd(node, bookmark.end - charIndex); stop = true; } charIndex = nextCharIndex; } else { childNodes = node.childNodes; i = childNodes.length; while (i--) { nodeStack.push(childNodes[i]); } } } }, getName: function() { return "DomRange"; }, equals: function(range) { return Range.rangesEqual(this, range); }, isValid: function() { return isRangeValid(this); }, inspect: function() { return inspect(this); }, detach: function() { // In DOM4, detach() is now a no-op. } }); function copyComparisonConstantsToObject(obj) { obj.START_TO_START = s2s; obj.START_TO_END = s2e; obj.END_TO_END = e2e; obj.END_TO_START = e2s; obj.NODE_BEFORE = n_b; obj.NODE_AFTER = n_a; obj.NODE_BEFORE_AND_AFTER = n_b_a; obj.NODE_INSIDE = n_i; } function copyComparisonConstants(constructor) { copyComparisonConstantsToObject(constructor); copyComparisonConstantsToObject(constructor.prototype); } function createRangeContentRemover(remover, boundaryUpdater) { return function() { assertRangeValid(this); var sc = this.startContainer, so = this.startOffset, root = this.commonAncestorContainer; var iterator = new RangeIterator(this, true); // Work out where to position the range after content removal var node, boundary; if (sc !== root) { node = getClosestAncestorIn(sc, root, true); boundary = getBoundaryAfterNode(node); sc = boundary.node; so = boundary.offset; } // Check none of the range is read-only iterateSubtree(iterator, assertNodeNotReadOnly); iterator.reset(); // Remove the content var returnValue = remover(iterator); iterator.detach(); // Move to the new position boundaryUpdater(this, sc, so, sc, so); return returnValue; }; } function createPrototypeRange(constructor, boundaryUpdater) { function createBeforeAfterNodeSetter(isBefore, isStart) { return function(node) { assertValidNodeType(node, beforeAfterNodeTypes); assertValidNodeType(getRootContainer(node), rootContainerNodeTypes); var boundary = (isBefore ? getBoundaryBeforeNode : getBoundaryAfterNode)(node); (isStart ? setRangeStart : setRangeEnd)(this, boundary.node, boundary.offset); }; } function setRangeStart(range, node, offset) { var ec = range.endContainer, eo = range.endOffset; if (node !== range.startContainer || offset !== range.startOffset) { // Check the root containers of the range and the new boundary, and also check whether the new boundary // is after the current end. In either case, collapse the range to the new position if (getRootContainer(node) != getRootContainer(ec) || comparePoints(node, offset, ec, eo) == 1) { ec = node; eo = offset; } boundaryUpdater(range, node, offset, ec, eo); } } function setRangeEnd(range, node, offset) { var sc = range.startContainer, so = range.startOffset; if (node !== range.endContainer || offset !== range.endOffset) { // Check the root containers of the range and the new boundary, and also check whether the new boundary // is after the current end. In either case, collapse the range to the new position if (getRootContainer(node) != getRootContainer(sc) || comparePoints(node, offset, sc, so) == -1) { sc = node; so = offset; } boundaryUpdater(range, sc, so, node, offset); } } // Set up inheritance var F = function() {}; F.prototype = api.rangePrototype; constructor.prototype = new F(); util.extend(constructor.prototype, { setStart: function(node, offset) { assertNoDocTypeNotationEntityAncestor(node, true); assertValidOffset(node, offset); setRangeStart(this, node, offset); }, setEnd: function(node, offset) { assertNoDocTypeNotationEntityAncestor(node, true); assertValidOffset(node, offset); setRangeEnd(this, node, offset); }, /** * Convenience method to set a range's start and end boundaries. Overloaded as follows: * - Two parameters (node, offset) creates a collapsed range at that position * - Three parameters (node, startOffset, endOffset) creates a range contained with node starting at * startOffset and ending at endOffset * - Four parameters (startNode, startOffset, endNode, endOffset) creates a range starting at startOffset in * startNode and ending at endOffset in endNode */ setStartAndEnd: function() { var args = arguments; var sc = args[0], so = args[1], ec = sc, eo = so; switch (args.length) { case 3: eo = args[2]; break; case 4: ec = args[2]; eo = args[3]; break; } boundaryUpdater(this, sc, so, ec, eo); }, setBoundary: function(node, offset, isStart) { this["set" + (isStart ? "Start" : "End")](node, offset); }, setStartBefore: createBeforeAfterNodeSetter(true, true), setStartAfter: createBeforeAfterNodeSetter(false, true), setEndBefore: createBeforeAfterNodeSetter(true, false), setEndAfter: createBeforeAfterNodeSetter(false, false), collapse: function(isStart) { assertRangeValid(this); if (isStart) { boundaryUpdater(this, this.startContainer, this.startOffset, this.startContainer, this.startOffset); } else { boundaryUpdater(this, this.endContainer, this.endOffset, this.endContainer, this.endOffset); } }, selectNodeContents: function(node) { assertNoDocTypeNotationEntityAncestor(node, true); boundaryUpdater(this, node, 0, node, getNodeLength(node)); }, selectNode: function(node) { assertNoDocTypeNotationEntityAncestor(node, false); assertValidNodeType(node, beforeAfterNodeTypes); var start = getBoundaryBeforeNode(node), end = getBoundaryAfterNode(node); boundaryUpdater(this, start.node, start.offset, end.node, end.offset); }, extractContents: createRangeContentRemover(extractSubtree, boundaryUpdater), deleteContents: createRangeContentRemover(deleteSubtree, boundaryUpdater), canSurroundContents: function() { assertRangeValid(this); assertNodeNotReadOnly(this.startContainer); assertNodeNotReadOnly(this.endContainer); // Check if the contents can be surrounded. Specifically, this means whether the range partially selects // no non-text nodes. var iterator = new RangeIterator(this, true); var boundariesInvalid = (iterator._first && isNonTextPartiallySelected(iterator._first, this) || (iterator._last && isNonTextPartiallySelected(iterator._last, this))); iterator.detach(); return !boundariesInvalid; }, splitBoundaries: function() { splitRangeBoundaries(this); }, splitBoundariesPreservingPositions: function(positionsToPreserve) { splitRangeBoundaries(this, positionsToPreserve); }, normalizeBoundaries: function() { assertRangeValid(this); var sc = this.startContainer, so = this.startOffset, ec = this.endContainer, eo = this.endOffset; var mergeForward = function(node) { var sibling = node.nextSibling; if (sibling && sibling.nodeType == node.nodeType) { ec = node; eo = node.length; node.appendData(sibling.data); sibling.parentNode.removeChild(sibling); } }; var mergeBackward = function(node) { var sibling = node.previousSibling; if (sibling && sibling.nodeType == node.nodeType) { sc = node; var nodeLength = node.length; so = sibling.length; node.insertData(0, sibling.data); sibling.parentNode.removeChild(sibling); if (sc == ec) { eo += so; ec = sc; } else if (ec == node.parentNode) { var nodeIndex = getNodeIndex(node); if (eo == nodeIndex) { ec = node; eo = nodeLength; } else if (eo > nodeIndex) { eo--; } } } }; var normalizeStart = true; if (isCharacterDataNode(ec)) { if (ec.length == eo) { mergeForward(ec); } } else { if (eo > 0) { var endNode = ec.childNodes[eo - 1]; if (endNode && isCharacterDataNode(endNode)) { mergeForward(endNode); } } normalizeStart = !this.collapsed; } if (normalizeStart) { if (isCharacterDataNode(sc)) { if (so == 0) { mergeBackward(sc); } } else { if (so < sc.childNodes.length) { var startNode = sc.childNodes[so]; if (startNode && isCharacterDataNode(startNode)) { mergeBackward(startNode); } } } } else { sc = ec; so = eo; } boundaryUpdater(this, sc, so, ec, eo); }, collapseToPoint: function(node, offset) { assertNoDocTypeNotationEntityAncestor(node, true); assertValidOffset(node, offset); this.setStartAndEnd(node, offset); } }); copyComparisonConstants(constructor); } /*----------------------------------------------------------------------------------------------------------------*/ // Updates commonAncestorContainer and collapsed after boundary change function updateCollapsedAndCommonAncestor(range) { range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); range.commonAncestorContainer = range.collapsed ? range.startContainer : dom.getCommonAncestor(range.startContainer, range.endContainer); } function updateBoundaries(range, startContainer, startOffset, endContainer, endOffset) { range.startContainer = startContainer; range.startOffset = startOffset; range.endContainer = endContainer; range.endOffset = endOffset; range.document = dom.getDocument(startContainer); updateCollapsedAndCommonAncestor(range); } function Range(doc) { this.startContainer = doc; this.startOffset = 0; this.endContainer = doc; this.endOffset = 0; this.document = doc; updateCollapsedAndCommonAncestor(this); } createPrototypeRange(Range, updateBoundaries); util.extend(Range, { rangeProperties: rangeProperties, RangeIterator: RangeIterator, copyComparisonConstants: copyComparisonConstants, createPrototypeRange: createPrototypeRange, inspect: inspect, toHtml: rangeToHtml, getRangeDocument: getRangeDocument, rangesEqual: function(r1, r2) { return r1.startContainer === r2.startContainer && r1.startOffset === r2.startOffset && r1.endContainer === r2.endContainer && r1.endOffset === r2.endOffset; } }); api.DomRange = Range; }); /*----------------------------------------------------------------------------------------------------------------*/ // Wrappers for the browser's native DOM Range and/or TextRange implementation api.createCoreModule("WrappedRange", ["DomRange"], function(api, module) { var WrappedRange, WrappedTextRange; var dom = api.dom; var util = api.util; var DomPosition = dom.DomPosition; var DomRange = api.DomRange; var getBody = dom.getBody; var getContentDocument = dom.getContentDocument; var isCharacterDataNode = dom.isCharacterDataNode; /*----------------------------------------------------------------------------------------------------------------*/ if (api.features.implementsDomRange) { // This is a wrapper around the browser's native DOM Range. It has two aims: // - Provide workarounds for specific browser bugs // - provide convenient extensions, which are inherited from Rangy's DomRange (function() { var rangeProto; var rangeProperties = DomRange.rangeProperties; function updateRangeProperties(range) { var i = rangeProperties.length, prop; while (i--) { prop = rangeProperties[i]; range[prop] = range.nativeRange[prop]; } // Fix for broken collapsed property in IE 9. range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); } function updateNativeRange(range, startContainer, startOffset, endContainer, endOffset) { var startMoved = (range.startContainer !== startContainer || range.startOffset != startOffset); var endMoved = (range.endContainer !== endContainer || range.endOffset != endOffset); var nativeRangeDifferent = !range.equals(range.nativeRange); // Always set both boundaries for the benefit of IE9 (see issue 35) if (startMoved || endMoved || nativeRangeDifferent) { range.setEnd(endContainer, endOffset); range.setStart(startContainer, startOffset); } } var createBeforeAfterNodeSetter; WrappedRange = function(range) { if (!range) { throw module.createError("WrappedRange: Range must be specified"); } this.nativeRange = range; updateRangeProperties(this); }; DomRange.createPrototypeRange(WrappedRange, updateNativeRange); rangeProto = WrappedRange.prototype; rangeProto.selectNode = function(node) { this.nativeRange.selectNode(node); updateRangeProperties(this); }; rangeProto.cloneContents = function() { return this.nativeRange.cloneContents(); }; // Due to a long-standing Firefox bug that I have not been able to find a reliable way to detect, // insertNode() is never delegated to the native range. rangeProto.surroundContents = function(node) { this.nativeRange.surroundContents(node); updateRangeProperties(this); }; rangeProto.collapse = function(isStart) { this.nativeRange.collapse(isStart); updateRangeProperties(this); }; rangeProto.cloneRange = function() { return new WrappedRange(this.nativeRange.cloneRange()); }; rangeProto.refresh = function() { updateRangeProperties(this); }; rangeProto.toString = function() { return this.nativeRange.toString(); }; // Create test range and node for feature detection var testTextNode = document.createTextNode("test"); getBody(document).appendChild(testTextNode); var range = document.createRange(); /*--------------------------------------------------------------------------------------------------------*/ // Test for Firefox 2 bug that prevents moving the start of a Range to a point after its current end and // correct for it range.setStart(testTextNode, 0); range.setEnd(testTextNode, 0); try { range.setStart(testTextNode, 1); rangeProto.setStart = function(node, offset) { this.nativeRange.setStart(node, offset); updateRangeProperties(this); }; rangeProto.setEnd = function(node, offset) { this.nativeRange.setEnd(node, offset); updateRangeProperties(this); }; createBeforeAfterNodeSetter = function(name) { return function(node) { this.nativeRange[name](node); updateRangeProperties(this); }; }; } catch(ex) { rangeProto.setStart = function(node, offset) { try { this.nativeRange.setStart(node, offset); } catch (ex) { this.nativeRange.setEnd(node, offset); this.nativeRange.setStart(node, offset); } updateRangeProperties(this); }; rangeProto.setEnd = function(node, offset) { try { this.nativeRange.setEnd(node, offset); } catch (ex) { this.nativeRange.setStart(node, offset); this.nativeRange.setEnd(node, offset); } updateRangeProperties(this); }; createBeforeAfterNodeSetter = function(name, oppositeName) { return function(node) { try { this.nativeRange[name](node); } catch (ex) { this.nativeRange[oppositeName](node); this.nativeRange[name](node); } updateRangeProperties(this); }; }; } rangeProto.setStartBefore = createBeforeAfterNodeSetter("setStartBefore", "setEndBefore"); rangeProto.setStartAfter = createBeforeAfterNodeSetter("setStartAfter", "setEndAfter"); rangeProto.setEndBefore = createBeforeAfterNodeSetter("setEndBefore", "setStartBefore"); rangeProto.setEndAfter = createBeforeAfterNodeSetter("setEndAfter", "setStartAfter"); /*--------------------------------------------------------------------------------------------------------*/ // Always use DOM4-compliant selectNodeContents implementation: it's simpler and less code than testing // whether the native implementation can be trusted rangeProto.selectNodeContents = function(node) { this.setStartAndEnd(node, 0, dom.getNodeLength(node)); }; /*--------------------------------------------------------------------------------------------------------*/ // Test for and correct WebKit bug that has the behaviour of compareBoundaryPoints round the wrong way for // constants START_TO_END and END_TO_START: https://bugs.webkit.org/show_bug.cgi?id=20738 range.selectNodeContents(testTextNode); range.setEnd(testTextNode, 3); var range2 = document.createRange(); range2.selectNodeContents(testTextNode); range2.setEnd(testTextNode, 4); range2.setStart(testTextNode, 2); if (range.compareBoundaryPoints(range.START_TO_END, range2) == -1 && range.compareBoundaryPoints(range.END_TO_START, range2) == 1) { // This is the wrong way round, so correct for it rangeProto.compareBoundaryPoints = function(type, range) { range = range.nativeRange || range; if (type == range.START_TO_END) { type = range.END_TO_START; } else if (type == range.END_TO_START) { type = range.START_TO_END; } return this.nativeRange.compareBoundaryPoints(type, range); }; } else { rangeProto.compareBoundaryPoints = function(type, range) { return this.nativeRange.compareBoundaryPoints(type, range.nativeRange || range); }; } /*--------------------------------------------------------------------------------------------------------*/ // Test for IE 9 deleteContents() and extractContents() bug and correct it. See issue 107. var el = document.createElement("div"); el.innerHTML = "123"; var textNode = el.firstChild; var body = getBody(document); body.appendChild(el); range.setStart(textNode, 1); range.setEnd(textNode, 2); range.deleteContents(); if (textNode.data == "13") { // Behaviour is correct per DOM4 Range so wrap the browser's implementation of deleteContents() and // extractContents() rangeProto.deleteContents = function() { this.nativeRange.deleteContents(); updateRangeProperties(this); }; rangeProto.extractContents = function() { var frag = this.nativeRange.extractContents(); updateRangeProperties(this); return frag; }; } else { } body.removeChild(el); body = null; /*--------------------------------------------------------------------------------------------------------*/ // Test for existence of createContextualFragment and delegate to it if it exists if (util.isHostMethod(range, "createContextualFragment")) { rangeProto.createContextualFragment = function(fragmentStr) { return this.nativeRange.createContextualFragment(fragmentStr); }; } /*--------------------------------------------------------------------------------------------------------*/ // Clean up getBody(document).removeChild(testTextNode); rangeProto.getName = function() { return "WrappedRange"; }; api.WrappedRange = WrappedRange; api.createNativeRange = function(doc) { doc = getContentDocument(doc, module, "createNativeRange"); return doc.createRange(); }; })(); } if (api.features.implementsTextRange) { /* This is a workaround for a bug where IE returns the wrong container element from the TextRange's parentElement() method. For example, in the following (where pipes denote the selection boundaries): <ul id="ul"><li id="a">| a </li><li id="b"> b |</li></ul> var range = document.selection.createRange(); alert(range.parentElement().id); // Should alert "ul" but alerts "b" This method returns the common ancestor node of the following: - the parentElement() of the textRange - the parentElement() of the textRange after calling collapse(true) - the parentElement() of the textRange after calling collapse(false) */ var getTextRangeContainerElement = function(textRange) { var parentEl = textRange.parentElement(); var range = textRange.duplicate(); range.collapse(true); var startEl = range.parentElement(); range = textRange.duplicate(); range.collapse(false); var endEl = range.parentElement(); var startEndContainer = (startEl == endEl) ? startEl : dom.getCommonAncestor(startEl, endEl); return startEndContainer == parentEl ? startEndContainer : dom.getCommonAncestor(parentEl, startEndContainer); }; var textRangeIsCollapsed = function(textRange) { return textRange.compareEndPoints("StartToEnd", textRange) == 0; }; // Gets the boundary of a TextRange expressed as a node and an offset within that node. This function started // out as an improved version of code found in Tim Cameron Ryan's IERange (http://code.google.com/p/ierange/) // but has grown, fixing problems with line breaks in preformatted text, adding workaround for IE TextRange // bugs, handling for inputs and images, plus optimizations. var getTextRangeBoundaryPosition = function(textRange, wholeRangeContainerElement, isStart, isCollapsed, startInfo) { var workingRange = textRange.duplicate(); workingRange.collapse(isStart); var containerElement = workingRange.parentElement(); // Sometimes collapsing a TextRange that's at the start of a text node can move it into the previous node, so // check for that if (!dom.isOrIsAncestorOf(wholeRangeContainerElement, containerElement)) { containerElement = wholeRangeContainerElement; } // Deal with nodes that cannot "contain rich HTML markup". In practice, this means form inputs, images and // similar. See http://msdn.microsoft.com/en-us/library/aa703950%28VS.85%29.aspx if (!containerElement.canHaveHTML) { var pos = new DomPosition(containerElement.parentNode, dom.getNodeIndex(containerElement)); return { boundaryPosition: pos, nodeInfo: { nodeIndex: pos.offset, containerElement: pos.node } }; } var workingNode = dom.getDocument(containerElement).createElement("span"); // Workaround for HTML5 Shiv's insane violation of document.createElement(). See Rangy issue 104 and HTML5 // Shiv issue 64: https://github.com/aFarkas/html5shiv/issues/64 if (workingNode.parentNode) { workingNode.parentNode.removeChild(workingNode); } var comparison, workingComparisonType = isStart ? "StartToStart" : "StartToEnd"; var previousNode, nextNode, boundaryPosition, boundaryNode; var start = (startInfo && startInfo.containerElement == containerElement) ? startInfo.nodeIndex : 0; var childNodeCount = containerElement.childNodes.length; var end = childNodeCount; // Check end first. Code within the loop assumes that the endth child node of the container is definitely // after the range boundary. var nodeIndex = end; while (true) { if (nodeIndex == childNodeCount) { containerElement.appendChild(workingNode); } else { containerElement.insertBefore(workingNode, containerElement.childNodes[nodeIndex]); } workingRange.moveToElementText(workingNode); comparison = workingRange.compareEndPoints(workingComparisonType, textRange); if (comparison == 0 || start == end) { break; } else if (comparison == -1) { if (end == start + 1) { // We know the endth child node is after the range boundary, so we must be done. break; } else { start = nodeIndex; } } else { end = (end == start + 1) ? start : nodeIndex; } nodeIndex = Math.floor((start + end) / 2); containerElement.removeChild(workingNode); } // We've now reached or gone past the boundary of the text range we're interested in // so have identified the node we want boundaryNode = workingNode.nextSibling; if (comparison == -1 && boundaryNode && isCharacterDataNode(boundaryNode)) { // This is a character data node (text, comment, cdata). The working range is collapsed at the start of // the node containing the text range's boundary, so we move the end of the working range to the // boundary point and measure the length of its text to get the boundary's offset within the node. workingRange.setEndPoint(isStart ? "EndToStart" : "EndToEnd", textRange); var offset; if (/[\r\n]/.test(boundaryNode.data)) { /* For the particular case of a boundary within a text node containing rendered line breaks (within a <pre> element, for example), we need a slightly complicated approach to get the boundary's offset in IE. The facts: - Each line break is represented as \r in the text node's data/nodeValue properties - Each line break is represented as \r\n in the TextRange's 'text' property - The 'text' property of the TextRange does not contain trailing line breaks To get round the problem presented by the final fact above, we can use the fact that TextRange's moveStart() and moveEnd() methods return the actual number of characters moved, which is not necessarily the same as the number of characters it was instructed to move. The simplest approach is to use this to store the characters moved when moving both the start and end of the range to the start of the document body and subtracting the start offset from the end offset (the "move-negative-gazillion" method). However, this is extremely slow when the document is large and the range is near the end of it. Clearly doing the mirror image (i.e. moving the range boundaries to the end of the document) has the same problem. Another approach that works is to use moveStart() to move the start boundary of the range up to the end boundary one character at a time and incrementing a counter with the value returned by the moveStart() call. However, the check for whether the start boundary has reached the end boundary is expensive, so this method is slow (although unlike "move-negative-gazillion" is largely unaffected by the location of the range within the document). The approach used below is a hybrid of the two methods above. It uses the fact that a string containing the TextRange's 'text' property with each \r\n converted to a single \r character cannot be longer than the text of the TextRange, so the start of the range is moved that length initially and then a character at a time to make up for any trailing line breaks not contained in the 'text' property. This has good performance in most situations compared to the previous two methods. */ var tempRange = workingRange.duplicate(); var rangeLength = tempRange.text.replace(/\r\n/g, "\r").length; offset = tempRange.moveStart("character", rangeLength); while ( (comparison = tempRange.compareEndPoints("StartToEnd", tempRange)) == -1) { offset++; tempRange.moveStart("character", 1); } } else { offset = workingRange.text.length; } boundaryPosition = new DomPosition(boundaryNode, offset); } else { // If the boundary immediately follows a character data node and this is the end boundary, we should favour // a position within that, and likewise for a start boundary preceding a character data node previousNode = (isCollapsed || !isStart) && workingNode.previousSibling; nextNode = (isCollapsed || isStart) && workingNode.nextSibling; if (nextNode && isCharacterDataNode(nextNode)) { boundaryPosition = new DomPosition(nextNode, 0); } else if (previousNode && isCharacterDataNode(previousNode)) { boundaryPosition = new DomPosition(previousNode, previousNode.data.length); } else { boundaryPosition = new DomPosition(containerElement, dom.getNodeIndex(workingNode)); } } // Clean up workingNode.parentNode.removeChild(workingNode); return { boundaryPosition: boundaryPosition, nodeInfo: { nodeIndex: nodeIndex, containerElement: containerElement } }; }; // Returns a TextRange representing the boundary of a TextRange expressed as a node and an offset within that // node. This function started out as an optimized version of code found in Tim Cameron Ryan's IERange // (http://code.google.com/p/ierange/) var createBoundaryTextRange = function(boundaryPosition, isStart) { var boundaryNode, boundaryParent, boundaryOffset = boundaryPosition.offset; var doc = dom.getDocument(boundaryPosition.node); var workingNode, childNodes, workingRange = getBody(doc).createTextRange(); var nodeIsDataNode = isCharacterDataNode(boundaryPosition.node); if (nodeIsDataNode) { boundaryNode = boundaryPosition.node; boundaryParent = boundaryNode.parentNode; } else { childNodes = boundaryPosition.node.childNodes; boundaryNode = (boundaryOffset < childNodes.length) ? childNodes[boundaryOffset] : null; boundaryParent = boundaryPosition.node; } // Position the range immediately before the node containing the boundary workingNode = doc.createElement("span"); // Making the working element non-empty element persuades IE to consider the TextRange boundary to be within // the element rather than immediately before or after it workingNode.innerHTML = "&#feff;"; // insertBefore is supposed to work like appendChild if the second parameter is null. However, a bug report // for IERange suggests that it can crash the browser: http://code.google.com/p/ierange/issues/detail?id=12 if (boundaryNode) { boundaryParent.insertBefore(workingNode, boundaryNode); } else { boundaryParent.appendChild(workingNode); } workingRange.moveToElementText(workingNode); workingRange.collapse(!isStart); // Clean up boundaryParent.removeChild(workingNode); // Move the working range to the text offset, if required if (nodeIsDataNode) { workingRange[isStart ? "moveStart" : "moveEnd"]("character", boundaryOffset); } return workingRange; }; /*------------------------------------------------------------------------------------------------------------*/ // This is a wrapper around a TextRange, providing full DOM Range functionality using rangy's DomRange as a // prototype WrappedTextRange = function(textRange) { this.textRange = textRange; this.refresh(); }; WrappedTextRange.prototype = new DomRange(document); WrappedTextRange.prototype.refresh = function() { var start, end, startBoundary; // TextRange's parentElement() method cannot be trusted. getTextRangeContainerElement() works around that. var rangeContainerElement = getTextRangeContainerElement(this.textRange); if (textRangeIsCollapsed(this.textRange)) { end = start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, true).boundaryPosition; } else { startBoundary = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, false); start = startBoundary.boundaryPosition; // An optimization used here is that if the start and end boundaries have the same parent element, the // search scope for the end boundary can be limited to exclude the portion of the element that precedes // the start boundary end = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, false, false, startBoundary.nodeInfo).boundaryPosition; } this.setStart(start.node, start.offset); this.setEnd(end.node, end.offset); }; WrappedTextRange.prototype.getName = function() { return "WrappedTextRange"; }; DomRange.copyComparisonConstants(WrappedTextRange); var rangeToTextRange = function(range) { if (range.collapsed) { return createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true); } else { var startRange = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true); var endRange = createBoundaryTextRange(new DomPosition(range.endContainer, range.endOffset), false); var textRange = getBody( DomRange.getRangeDocument(range) ).createTextRange(); textRange.setEndPoint("StartToStart", startRange); textRange.setEndPoint("EndToEnd", endRange); return textRange; } }; WrappedTextRange.rangeToTextRange = rangeToTextRange; WrappedTextRange.prototype.toTextRange = function() { return rangeToTextRange(this); }; api.WrappedTextRange = WrappedTextRange; // IE 9 and above have both implementations and Rangy makes both available. The next few lines sets which // implementation to use by default. if (!api.features.implementsDomRange || api.config.preferTextRange) { // Add WrappedTextRange as the Range property of the global object to allow expression like Range.END_TO_END to work var globalObj = (function() { return this; })(); if (typeof globalObj.Range == "undefined") { globalObj.Range = WrappedTextRange; } api.createNativeRange = function(doc) { doc = getContentDocument(doc, module, "createNativeRange"); return getBody(doc).createTextRange(); }; api.WrappedRange = WrappedTextRange; } } api.createRange = function(doc) { doc = getContentDocument(doc, module, "createRange"); return new api.WrappedRange(api.createNativeRange(doc)); }; api.createRangyRange = function(doc) { doc = getContentDocument(doc, module, "createRangyRange"); return new DomRange(doc); }; api.createIframeRange = function(iframeEl) { module.deprecationNotice("createIframeRange()", "createRange(iframeEl)"); return api.createRange(iframeEl); }; api.createIframeRangyRange = function(iframeEl) { module.deprecationNotice("createIframeRangyRange()", "createRangyRange(iframeEl)"); return api.createRangyRange(iframeEl); }; api.addShimListener(function(win) { var doc = win.document; if (typeof doc.createRange == "undefined") { doc.createRange = function() { return api.createRange(doc); }; } doc = win = null; }); }); /*----------------------------------------------------------------------------------------------------------------*/ // This module creates a selection object wrapper that conforms as closely as possible to the Selection specification // in the HTML Editing spec (http://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#selections) api.createCoreModule("WrappedSelection", ["DomRange", "WrappedRange"], function(api, module) { api.config.checkSelectionRanges = true; var BOOLEAN = "boolean"; var NUMBER = "number"; var dom = api.dom; var util = api.util; var isHostMethod = util.isHostMethod; var DomRange = api.DomRange; var WrappedRange = api.WrappedRange; var DOMException = api.DOMException; var DomPosition = dom.DomPosition; var getNativeSelection; var selectionIsCollapsed; var features = api.features; var CONTROL = "Control"; var getDocument = dom.getDocument; var getBody = dom.getBody; var rangesEqual = DomRange.rangesEqual; // Utility function to support direction parameters in the API that may be a string ("backward" or "forward") or a // Boolean (true for backwards). function isDirectionBackward(dir) { return (typeof dir == "string") ? /^backward(s)?$/i.test(dir) : !!dir; } function getWindow(win, methodName) { if (!win) { return window; } else if (dom.isWindow(win)) { return win; } else if (win instanceof WrappedSelection) { return win.win; } else { var doc = dom.getContentDocument(win, module, methodName); return dom.getWindow(doc); } } function getWinSelection(winParam) { return getWindow(winParam, "getWinSelection").getSelection(); } function getDocSelection(winParam) { return getWindow(winParam, "getDocSelection").document.selection; } function winSelectionIsBackward(sel) { var backward = false; if (sel.anchorNode) { backward = (dom.comparePoints(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset) == 1); } return backward; } // Test for the Range/TextRange and Selection features required // Test for ability to retrieve selection var implementsWinGetSelection = isHostMethod(window, "getSelection"), implementsDocSelection = util.isHostObject(document, "selection"); features.implementsWinGetSelection = implementsWinGetSelection; features.implementsDocSelection = implementsDocSelection; var useDocumentSelection = implementsDocSelection && (!implementsWinGetSelection || api.config.preferTextRange); if (useDocumentSelection) { getNativeSelection = getDocSelection; api.isSelectionValid = function(winParam) { var doc = getWindow(winParam, "isSelectionValid").document, nativeSel = doc.selection; // Check whether the selection TextRange is actually contained within the correct document return (nativeSel.type != "None" || getDocument(nativeSel.createRange().parentElement()) == doc); }; } else if (implementsWinGetSelection) { getNativeSelection = getWinSelection; api.isSelectionValid = function() { return true; }; } else { module.fail("Neither document.selection or window.getSelection() detected."); } api.getNativeSelection = getNativeSelection; var testSelection = getNativeSelection(); var testRange = api.createNativeRange(document); var body = getBody(document); // Obtaining a range from a selection var selectionHasAnchorAndFocus = util.areHostProperties(testSelection, ["anchorNode", "focusNode", "anchorOffset", "focusOffset"]); features.selectionHasAnchorAndFocus = selectionHasAnchorAndFocus; // Test for existence of native selection extend() method var selectionHasExtend = isHostMethod(testSelection, "extend"); features.selectionHasExtend = selectionHasExtend; // Test if rangeCount exists var selectionHasRangeCount = (typeof testSelection.rangeCount == NUMBER); features.selectionHasRangeCount = selectionHasRangeCount; var selectionSupportsMultipleRanges = false; var collapsedNonEditableSelectionsSupported = true; var addRangeBackwardToNative = selectionHasExtend ? function(nativeSelection, range) { var doc = DomRange.getRangeDocument(range); var endRange = api.createRange(doc); endRange.collapseToPoint(range.endContainer, range.endOffset); nativeSelection.addRange(getNativeRange(endRange)); nativeSelection.extend(range.startContainer, range.startOffset); } : null; if (util.areHostMethods(testSelection, ["addRange", "getRangeAt", "removeAllRanges"]) && typeof testSelection.rangeCount == NUMBER && features.implementsDomRange) { (function() { // Previously an iframe was used but this caused problems in some circumstances in IE, so tests are // performed on the current document's selection. See issue 109. // Note also that if a selection previously existed, it is wiped by these tests. This should usually be fine // because initialization usually happens when the document loads, but could be a problem for a script that // loads and initializes Rangy later. If anyone complains, code could be added to save and restore the // selection. var sel = window.getSelection(); if (sel) { // Store the current selection var originalSelectionRangeCount = sel.rangeCount; var selectionHasMultipleRanges = (originalSelectionRangeCount > 1); var originalSelectionRanges = []; var originalSelectionBackward = winSelectionIsBackward(sel); for (var i = 0; i < originalSelectionRangeCount; ++i) { originalSelectionRanges[i] = sel.getRangeAt(i); } // Create some test elements var body = getBody(document); var testEl = body.appendChild( document.createElement("div") ); testEl.contentEditable = "false"; var textNode = testEl.appendChild( document.createTextNode("\u00a0\u00a0\u00a0") ); // Test whether the native selection will allow a collapsed selection within a non-editable element var r1 = document.createRange(); r1.setStart(textNode, 1); r1.collapse(true); sel.addRange(r1); collapsedNonEditableSelectionsSupported = (sel.rangeCount == 1); sel.removeAllRanges(); // Test whether the native selection is capable of supporting multiple ranges. if (!selectionHasMultipleRanges) { // Doing the original feature test here in Chrome 36 (and presumably later versions) prints a // console error of "Discontiguous selection is not supported." that cannot be suppressed. There's // nothing we can do about this while retaining the feature test so we have to resort to a browser // sniff. I'm not happy about it. See // https://code.google.com/p/chromium/issues/detail?id=399791 var chromeMatch = window.navigator.appVersion.match(/Chrome\/(.*?) /); if (chromeMatch && parseInt(chromeMatch[1]) >= 36) { selectionSupportsMultipleRanges = false; } else { var r2 = r1.cloneRange(); r1.setStart(textNode, 0); r2.setEnd(textNode, 3); r2.setStart(textNode, 2); sel.addRange(r1); sel.addRange(r2); selectionSupportsMultipleRanges = (sel.rangeCount == 2); } } // Clean up body.removeChild(testEl); sel.removeAllRanges(); for (i = 0; i < originalSelectionRangeCount; ++i) { if (i == 0 && originalSelectionBackward) { if (addRangeBackwardToNative) { addRangeBackwardToNative(sel, originalSelectionRanges[i]); } else { api.warn("Rangy initialization: original selection was backwards but selection has been restored forwards because the browser does not support Selection.extend"); sel.addRange(originalSelectionRanges[i]); } } else { sel.addRange(originalSelectionRanges[i]); } } } })(); } features.selectionSupportsMultipleRanges = selectionSupportsMultipleRanges; features.collapsedNonEditableSelectionsSupported = collapsedNonEditableSelectionsSupported; // ControlRanges var implementsControlRange = false, testControlRange; if (body && isHostMethod(body, "createControlRange")) { testControlRange = body.createControlRange(); if (util.areHostProperties(testControlRange, ["item", "add"])) { implementsControlRange = true; } } features.implementsControlRange = implementsControlRange; // Selection collapsedness if (selectionHasAnchorAndFocus) { selectionIsCollapsed = function(sel) { return sel.anchorNode === sel.focusNode && sel.anchorOffset === sel.focusOffset; }; } else { selectionIsCollapsed = function(sel) { return sel.rangeCount ? sel.getRangeAt(sel.rangeCount - 1).collapsed : false; }; } function updateAnchorAndFocusFromRange(sel, range, backward) { var anchorPrefix = backward ? "end" : "start", focusPrefix = backward ? "start" : "end"; sel.anchorNode = range[anchorPrefix + "Container"]; sel.anchorOffset = range[anchorPrefix + "Offset"]; sel.focusNode = range[focusPrefix + "Container"]; sel.focusOffset = range[focusPrefix + "Offset"]; } function updateAnchorAndFocusFromNativeSelection(sel) { var nativeSel = sel.nativeSelection; sel.anchorNode = nativeSel.anchorNode; sel.anchorOffset = nativeSel.anchorOffset; sel.focusNode = nativeSel.focusNode; sel.focusOffset = nativeSel.focusOffset; } function updateEmptySelection(sel) { sel.anchorNode = sel.focusNode = null; sel.anchorOffset = sel.focusOffset = 0; sel.rangeCount = 0; sel.isCollapsed = true; sel._ranges.length = 0; } function getNativeRange(range) { var nativeRange; if (range instanceof DomRange) { nativeRange = api.createNativeRange(range.getDocument()); nativeRange.setEnd(range.endContainer, range.endOffset); nativeRange.setStart(range.startContainer, range.startOffset); } else if (range instanceof WrappedRange) { nativeRange = range.nativeRange; } else if (features.implementsDomRange && (range instanceof dom.getWindow(range.startContainer).Range)) { nativeRange = range; } return nativeRange; } function rangeContainsSingleElement(rangeNodes) { if (!rangeNodes.length || rangeNodes[0].nodeType != 1) { return false; } for (var i = 1, len = rangeNodes.length; i < len; ++i) { if (!dom.isAncestorOf(rangeNodes[0], rangeNodes[i])) { return false; } } return true; } function getSingleElementFromRange(range) { var nodes = range.getNodes(); if (!rangeContainsSingleElement(nodes)) { throw module.createError("getSingleElementFromRange: range " + range.inspect() + " did not consist of a single element"); } return nodes[0]; } // Simple, quick test which only needs to distinguish between a TextRange and a ControlRange function isTextRange(range) { return !!range && typeof range.text != "undefined"; } function updateFromTextRange(sel, range) { // Create a Range from the selected TextRange var wrappedRange = new WrappedRange(range); sel._ranges = [wrappedRange]; updateAnchorAndFocusFromRange(sel, wrappedRange, false); sel.rangeCount = 1; sel.isCollapsed = wrappedRange.collapsed; } function updateControlSelection(sel) { // Update the wrapped selection based on what's now in the native selection sel._ranges.length = 0; if (sel.docSelection.type == "None") { updateEmptySelection(sel); } else { var controlRange = sel.docSelection.createRange(); if (isTextRange(controlRange)) { // This case (where the selection type is "Control" and calling createRange() on the selection returns // a TextRange) can happen in IE 9. It happens, for example, when all elements in the selected // ControlRange have been removed from the ControlRange and removed from the document. updateFromTextRange(sel, controlRange); } else { sel.rangeCount = controlRange.length; var range, doc = getDocument(controlRange.item(0)); for (var i = 0; i < sel.rangeCount; ++i) { range = api.createRange(doc); range.selectNode(controlRange.item(i)); sel._ranges.push(range); } sel.isCollapsed = sel.rangeCount == 1 && sel._ranges[0].collapsed; updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], false); } } } function addRangeToControlSelection(sel, range) { var controlRange = sel.docSelection.createRange(); var rangeElement = getSingleElementFromRange(range); // Create a new ControlRange containing all the elements in the selected ControlRange plus the element // contained by the supplied range var doc = getDocument(controlRange.item(0)); var newControlRange = getBody(doc).createControlRange(); for (var i = 0, len = controlRange.length; i < len; ++i) { newControlRange.add(controlRange.item(i)); } try { newControlRange.add(rangeElement); } catch (ex) { throw module.createError("addRange(): Element within the specified Range could not be added to control selection (does it have layout?)"); } newControlRange.select(); // Update the wrapped selection based on what's now in the native selection updateControlSelection(sel); } var getSelectionRangeAt; if (isHostMethod(testSelection, "getRangeAt")) { // try/catch is present because getRangeAt() must have thrown an error in some browser and some situation. // Unfortunately, I didn't write a comment about the specifics and am now scared to take it out. Let that be a // lesson to us all, especially me. getSelectionRangeAt = function(sel, index) { try { return sel.getRangeAt(index); } catch (ex) { return null; } }; } else if (selectionHasAnchorAndFocus) { getSelectionRangeAt = function(sel) { var doc = getDocument(sel.anchorNode); var range = api.createRange(doc); range.setStartAndEnd(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset); // Handle the case when the selection was selected backwards (from the end to the start in the // document) if (range.collapsed !== this.isCollapsed) { range.setStartAndEnd(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset); } return range; }; } function WrappedSelection(selection, docSelection, win) { this.nativeSelection = selection; this.docSelection = docSelection; this._ranges = []; this.win = win; this.refresh(); } WrappedSelection.prototype = api.selectionPrototype; function deleteProperties(sel) { sel.win = sel.anchorNode = sel.focusNode = sel._ranges = null; sel.rangeCount = sel.anchorOffset = sel.focusOffset = 0; sel.detached = true; } var cachedRangySelections = []; function actOnCachedSelection(win, action) { var i = cachedRangySelections.length, cached, sel; while (i--) { cached = cachedRangySelections[i]; sel = cached.selection; if (action == "deleteAll") { deleteProperties(sel); } else if (cached.win == win) { if (action == "delete") { cachedRangySelections.splice(i, 1); return true; } else { return sel; } } } if (action == "deleteAll") { cachedRangySelections.length = 0; } return null; } var getSelection = function(win) { // Check if the parameter is a Rangy Selection object if (win && win instanceof WrappedSelection) { win.refresh(); return win; } win = getWindow(win, "getNativeSelection"); var sel = actOnCachedSelection(win); var nativeSel = getNativeSelection(win), docSel = implementsDocSelection ? getDocSelection(win) : null; if (sel) { sel.nativeSelection = nativeSel; sel.docSelection = docSel; sel.refresh(); } else { sel = new WrappedSelection(nativeSel, docSel, win); cachedRangySelections.push( { win: win, selection: sel } ); } return sel; }; api.getSelection = getSelection; api.getIframeSelection = function(iframeEl) { module.deprecationNotice("getIframeSelection()", "getSelection(iframeEl)"); return api.getSelection(dom.getIframeWindow(iframeEl)); }; var selProto = WrappedSelection.prototype; function createControlSelection(sel, ranges) { // Ensure that the selection becomes of type "Control" var doc = getDocument(ranges[0].startContainer); var controlRange = getBody(doc).createControlRange(); for (var i = 0, el, len = ranges.length; i < len; ++i) { el = getSingleElementFromRange(ranges[i]); try { controlRange.add(el); } catch (ex) { throw module.createError("setRanges(): Element within one of the specified Ranges could not be added to control selection (does it have layout?)"); } } controlRange.select(); // Update the wrapped selection based on what's now in the native selection updateControlSelection(sel); } // Selecting a range if (!useDocumentSelection && selectionHasAnchorAndFocus && util.areHostMethods(testSelection, ["removeAllRanges", "addRange"])) { selProto.removeAllRanges = function() { this.nativeSelection.removeAllRanges(); updateEmptySelection(this); }; var addRangeBackward = function(sel, range) { addRangeBackwardToNative(sel.nativeSelection, range); sel.refresh(); }; if (selectionHasRangeCount) { selProto.addRange = function(range, direction) { if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) { addRangeToControlSelection(this, range); } else { if (isDirectionBackward(direction) && selectionHasExtend) { addRangeBackward(this, range); } else { var previousRangeCount; if (selectionSupportsMultipleRanges) { previousRangeCount = this.rangeCount; } else { this.removeAllRanges(); previousRangeCount = 0; } // Clone the native range so that changing the selected range does not affect the selection. // This is contrary to the spec but is the only way to achieve consistency between browsers. See // issue 80. this.nativeSelection.addRange(getNativeRange(range).cloneRange()); // Check whether adding the range was successful this.rangeCount = this.nativeSelection.rangeCount; if (this.rangeCount == previousRangeCount + 1) { // The range was added successfully // Check whether the range that we added to the selection is reflected in the last range extracted from // the selection if (api.config.checkSelectionRanges) { var nativeRange = getSelectionRangeAt(this.nativeSelection, this.rangeCount - 1); if (nativeRange && !rangesEqual(nativeRange, range)) { // Happens in WebKit with, for example, a selection placed at the start of a text node range = new WrappedRange(nativeRange); } } this._ranges[this.rangeCount - 1] = range; updateAnchorAndFocusFromRange(this, range, selectionIsBackward(this.nativeSelection)); this.isCollapsed = selectionIsCollapsed(this); } else { // The range was not added successfully. The simplest thing is to refresh this.refresh(); } } } }; } else { selProto.addRange = function(range, direction) { if (isDirectionBackward(direction) && selectionHasExtend) { addRangeBackward(this, range); } else { this.nativeSelection.addRange(getNativeRange(range)); this.refresh(); } }; } selProto.setRanges = function(ranges) { if (implementsControlRange && implementsDocSelection && ranges.length > 1) { createControlSelection(this, ranges); } else { this.removeAllRanges(); for (var i = 0, len = ranges.length; i < len; ++i) { this.addRange(ranges[i]); } } }; } else if (isHostMethod(testSelection, "empty") && isHostMethod(testRange, "select") && implementsControlRange && useDocumentSelection) { selProto.removeAllRanges = function() { // Added try/catch as fix for issue #21 try { this.docSelection.empty(); // Check for empty() not working (issue #24) if (this.docSelection.type != "None") { // Work around failure to empty a control selection by instead selecting a TextRange and then // calling empty() var doc; if (this.anchorNode) { doc = getDocument(this.anchorNode); } else if (this.docSelection.type == CONTROL) { var controlRange = this.docSelection.createRange(); if (controlRange.length) { doc = getDocument( controlRange.item(0) ); } } if (doc) { var textRange = getBody(doc).createTextRange(); textRange.select(); this.docSelection.empty(); } } } catch(ex) {} updateEmptySelection(this); }; selProto.addRange = function(range) { if (this.docSelection.type == CONTROL) { addRangeToControlSelection(this, range); } else { api.WrappedTextRange.rangeToTextRange(range).select(); this._ranges[0] = range; this.rangeCount = 1; this.isCollapsed = this._ranges[0].collapsed; updateAnchorAndFocusFromRange(this, range, false); } }; selProto.setRanges = function(ranges) { this.removeAllRanges(); var rangeCount = ranges.length; if (rangeCount > 1) { createControlSelection(this, ranges); } else if (rangeCount) { this.addRange(ranges[0]); } }; } else { module.fail("No means of selecting a Range or TextRange was found"); return false; } selProto.getRangeAt = function(index) { if (index < 0 || index >= this.rangeCount) { throw new DOMException("INDEX_SIZE_ERR"); } else { // Clone the range to preserve selection-range independence. See issue 80. return this._ranges[index].cloneRange(); } }; var refreshSelection; if (useDocumentSelection) { refreshSelection = function(sel) { var range; if (api.isSelectionValid(sel.win)) { range = sel.docSelection.createRange(); } else { range = getBody(sel.win.document).createTextRange(); range.collapse(true); } if (sel.docSelection.type == CONTROL) { updateControlSelection(sel); } else if (isTextRange(range)) { updateFromTextRange(sel, range); } else { updateEmptySelection(sel); } }; } else if (isHostMethod(testSelection, "getRangeAt") && typeof testSelection.rangeCount == NUMBER) { refreshSelection = function(sel) { if (implementsControlRange && implementsDocSelection && sel.docSelection.type == CONTROL) { updateControlSelection(sel); } else { sel._ranges.length = sel.rangeCount = sel.nativeSelection.rangeCount; if (sel.rangeCount) { for (var i = 0, len = sel.rangeCount; i < len; ++i) { sel._ranges[i] = new api.WrappedRange(sel.nativeSelection.getRangeAt(i)); } updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], selectionIsBackward(sel.nativeSelection)); sel.isCollapsed = selectionIsCollapsed(sel); } else { updateEmptySelection(sel); } } }; } else if (selectionHasAnchorAndFocus && typeof testSelection.isCollapsed == BOOLEAN && typeof testRange.collapsed == BOOLEAN && features.implementsDomRange) { refreshSelection = function(sel) { var range, nativeSel = sel.nativeSelection; if (nativeSel.anchorNode) { range = getSelectionRangeAt(nativeSel, 0); sel._ranges = [range]; sel.rangeCount = 1; updateAnchorAndFocusFromNativeSelection(sel); sel.isCollapsed = selectionIsCollapsed(sel); } else { updateEmptySelection(sel); } }; } else { module.fail("No means of obtaining a Range or TextRange from the user's selection was found"); return false; } selProto.refresh = function(checkForChanges) { var oldRanges = checkForChanges ? this._ranges.slice(0) : null; var oldAnchorNode = this.anchorNode, oldAnchorOffset = this.anchorOffset; refreshSelection(this); if (checkForChanges) { // Check the range count first var i = oldRanges.length; if (i != this._ranges.length) { return true; } // Now check the direction. Checking the anchor position is the same is enough since we're checking all the // ranges after this if (this.anchorNode != oldAnchorNode || this.anchorOffset != oldAnchorOffset) { return true; } // Finally, compare each range in turn while (i--) { if (!rangesEqual(oldRanges[i], this._ranges[i])) { return true; } } return false; } }; // Removal of a single range var removeRangeManually = function(sel, range) { var ranges = sel.getAllRanges(); sel.removeAllRanges(); for (var i = 0, len = ranges.length; i < len; ++i) { if (!rangesEqual(range, ranges[i])) { sel.addRange(ranges[i]); } } if (!sel.rangeCount) { updateEmptySelection(sel); } }; if (implementsControlRange && implementsDocSelection) { selProto.removeRange = function(range) { if (this.docSelection.type == CONTROL) { var controlRange = this.docSelection.createRange(); var rangeElement = getSingleElementFromRange(range); // Create a new ControlRange containing all the elements in the selected ControlRange minus the // element contained by the supplied range var doc = getDocument(controlRange.item(0)); var newControlRange = getBody(doc).createControlRange(); var el, removed = false; for (var i = 0, len = controlRange.length; i < len; ++i) { el = controlRange.item(i); if (el !== rangeElement || removed) { newControlRange.add(controlRange.item(i)); } else { removed = true; } } newControlRange.select(); // Update the wrapped selection based on what's now in the native selection updateControlSelection(this); } else { removeRangeManually(this, range); } }; } else { selProto.removeRange = function(range) { removeRangeManually(this, range); }; } // Detecting if a selection is backward var selectionIsBackward; if (!useDocumentSelection && selectionHasAnchorAndFocus && features.implementsDomRange) { selectionIsBackward = winSelectionIsBackward; selProto.isBackward = function() { return selectionIsBackward(this); }; } else { selectionIsBackward = selProto.isBackward = function() { return false; }; } // Create an alias for backwards compatibility. From 1.3, everything is "backward" rather than "backwards" selProto.isBackwards = selProto.isBackward; // Selection stringifier // This is conformant to the old HTML5 selections draft spec but differs from WebKit and Mozilla's implementation. // The current spec does not yet define this method. selProto.toString = function() { var rangeTexts = []; for (var i = 0, len = this.rangeCount; i < len; ++i) { rangeTexts[i] = "" + this._ranges[i]; } return rangeTexts.join(""); }; function assertNodeInSameDocument(sel, node) { if (sel.win.document != getDocument(node)) { throw new DOMException("WRONG_DOCUMENT_ERR"); } } // No current browser conforms fully to the spec for this method, so Rangy's own method is always used selProto.collapse = function(node, offset) { assertNodeInSameDocument(this, node); var range = api.createRange(node); range.collapseToPoint(node, offset); this.setSingleRange(range); this.isCollapsed = true; }; selProto.collapseToStart = function() { if (this.rangeCount) { var range = this._ranges[0]; this.collapse(range.startContainer, range.startOffset); } else { throw new DOMException("INVALID_STATE_ERR"); } }; selProto.collapseToEnd = function() { if (this.rangeCount) { var range = this._ranges[this.rangeCount - 1]; this.collapse(range.endContainer, range.endOffset); } else { throw new DOMException("INVALID_STATE_ERR"); } }; // The spec is very specific on how selectAllChildren should be implemented so the native implementation is // never used by Rangy. selProto.selectAllChildren = function(node) { assertNodeInSameDocument(this, node); var range = api.createRange(node); range.selectNodeContents(node); this.setSingleRange(range); }; selProto.deleteFromDocument = function() { // Sepcial behaviour required for IE's control selections if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) { var controlRange = this.docSelection.createRange(); var element; while (controlRange.length) { element = controlRange.item(0); controlRange.remove(element); element.parentNode.removeChild(element); } this.refresh(); } else if (this.rangeCount) { var ranges = this.getAllRanges(); if (ranges.length) { this.removeAllRanges(); for (var i = 0, len = ranges.length; i < len; ++i) { ranges[i].deleteContents(); } // The spec says nothing about what the selection should contain after calling deleteContents on each // range. Firefox moves the selection to where the final selected range was, so we emulate that this.addRange(ranges[len - 1]); } } }; // The following are non-standard extensions selProto.eachRange = function(func, returnValue) { for (var i = 0, len = this._ranges.length; i < len; ++i) { if ( func( this.getRangeAt(i) ) ) { return returnValue; } } }; selProto.getAllRanges = function() { var ranges = []; this.eachRange(function(range) { ranges.push(range); }); return ranges; }; selProto.setSingleRange = function(range, direction) { this.removeAllRanges(); this.addRange(range, direction); }; selProto.callMethodOnEachRange = function(methodName, params) { var results = []; this.eachRange( function(range) { results.push( range[methodName].apply(range, params) ); } ); return results; }; function createStartOrEndSetter(isStart) { return function(node, offset) { var range; if (this.rangeCount) { range = this.getRangeAt(0); range["set" + (isStart ? "Start" : "End")](node, offset); } else { range = api.createRange(this.win.document); range.setStartAndEnd(node, offset); } this.setSingleRange(range, this.isBackward()); }; } selProto.setStart = createStartOrEndSetter(true); selProto.setEnd = createStartOrEndSetter(false); // Add select() method to Range prototype. Any existing selection will be removed. api.rangePrototype.select = function(direction) { getSelection( this.getDocument() ).setSingleRange(this, direction); }; selProto.changeEachRange = function(func) { var ranges = []; var backward = this.isBackward(); this.eachRange(function(range) { func(range); ranges.push(range); }); this.removeAllRanges(); if (backward && ranges.length == 1) { this.addRange(ranges[0], "backward"); } else { this.setRanges(ranges); } }; selProto.containsNode = function(node, allowPartial) { return this.eachRange( function(range) { return range.containsNode(node, allowPartial); }, true ) || false; }; selProto.getBookmark = function(containerNode) { return { backward: this.isBackward(), rangeBookmarks: this.callMethodOnEachRange("getBookmark", [containerNode]) }; }; selProto.moveToBookmark = function(bookmark) { var selRanges = []; for (var i = 0, rangeBookmark, range; rangeBookmark = bookmark.rangeBookmarks[i++]; ) { range = api.createRange(this.win); range.moveToBookmark(rangeBookmark); selRanges.push(range); } if (bookmark.backward) { this.setSingleRange(selRanges[0], "backward"); } else { this.setRanges(selRanges); } }; selProto.toHtml = function() { var rangeHtmls = []; this.eachRange(function(range) { rangeHtmls.push( DomRange.toHtml(range) ); }); return rangeHtmls.join(""); }; if (features.implementsTextRange) { selProto.getNativeTextRange = function() { var sel, textRange; if ( (sel = this.docSelection) ) { var range = sel.createRange(); if (isTextRange(range)) { return range; } else { throw module.createError("getNativeTextRange: selection is a control selection"); } } else if (this.rangeCount > 0) { return api.WrappedTextRange.rangeToTextRange( this.getRangeAt(0) ); } else { throw module.createError("getNativeTextRange: selection contains no range"); } }; } function inspect(sel) { var rangeInspects = []; var anchor = new DomPosition(sel.anchorNode, sel.anchorOffset); var focus = new DomPosition(sel.focusNode, sel.focusOffset); var name = (typeof sel.getName == "function") ? sel.getName() : "Selection"; if (typeof sel.rangeCount != "undefined") { for (var i = 0, len = sel.rangeCount; i < len; ++i) { rangeInspects[i] = DomRange.inspect(sel.getRangeAt(i)); } } return "[" + name + "(Ranges: " + rangeInspects.join(", ") + ")(anchor: " + anchor.inspect() + ", focus: " + focus.inspect() + "]"; } selProto.getName = function() { return "WrappedSelection"; }; selProto.inspect = function() { return inspect(this); }; selProto.detach = function() { actOnCachedSelection(this.win, "delete"); deleteProperties(this); }; WrappedSelection.detachAll = function() { actOnCachedSelection(null, "deleteAll"); }; WrappedSelection.inspect = inspect; WrappedSelection.isDirectionBackward = isDirectionBackward; api.Selection = WrappedSelection; api.selectionPrototype = selProto; api.addShimListener(function(win) { if (typeof win.getSelection == "undefined") { win.getSelection = function() { return getSelection(win); }; } win = null; }); }); /*----------------------------------------------------------------------------------------------------------------*/ return api; }, this);;/** * Selection save and restore module for Rangy. * Saves and restores user selections using marker invisible elements in the DOM. * * Part of Rangy, a cross-browser JavaScript range and selection library * http://code.google.com/p/rangy/ * * Depends on Rangy core. * * Copyright 2014, Tim Down * Licensed under the MIT license. * Version: 1.3alpha.20140804 * Build date: 4 August 2014 */ (function(factory, global) { if (typeof define == "function" && define.amd) { // AMD. Register as an anonymous module with a dependency on Rangy. define(["rangy"], factory); /* } else if (typeof exports == "object") { // Node/CommonJS style for Browserify module.exports = factory; */ } else { // No AMD or CommonJS support so we use the rangy global variable factory(global.rangy); } })(function(rangy) { rangy.createModule("SaveRestore", ["WrappedRange"], function(api, module) { var dom = api.dom; var markerTextChar = "\ufeff"; function gEBI(id, doc) { return (doc || document).getElementById(id); } function insertRangeBoundaryMarker(range, atStart) { var markerId = "selectionBoundary_" + (+new Date()) + "_" + ("" + Math.random()).slice(2); var markerEl; var doc = dom.getDocument(range.startContainer); // Clone the Range and collapse to the appropriate boundary point var boundaryRange = range.cloneRange(); boundaryRange.collapse(atStart); // Create the marker element containing a single invisible character using DOM methods and insert it markerEl = doc.createElement("span"); markerEl.id = markerId; markerEl.style.lineHeight = "0"; markerEl.style.display = "none"; markerEl.className = "rangySelectionBoundary"; markerEl.appendChild(doc.createTextNode(markerTextChar)); boundaryRange.insertNode(markerEl); return markerEl; } function setRangeBoundary(doc, range, markerId, atStart) { var markerEl = gEBI(markerId, doc); if (markerEl) { range[atStart ? "setStartBefore" : "setEndBefore"](markerEl); markerEl.parentNode.removeChild(markerEl); } else { module.warn("Marker element has been removed. Cannot restore selection."); } } function compareRanges(r1, r2) { return r2.compareBoundaryPoints(r1.START_TO_START, r1); } function saveRange(range, backward) { var startEl, endEl, doc = api.DomRange.getRangeDocument(range), text = range.toString(); if (range.collapsed) { endEl = insertRangeBoundaryMarker(range, false); return { document: doc, markerId: endEl.id, collapsed: true }; } else { endEl = insertRangeBoundaryMarker(range, false); startEl = insertRangeBoundaryMarker(range, true); return { document: doc, startMarkerId: startEl.id, endMarkerId: endEl.id, collapsed: false, backward: backward, toString: function() { return "original text: '" + text + "', new text: '" + range.toString() + "'"; } }; } } function restoreRange(rangeInfo, normalize) { var doc = rangeInfo.document; if (typeof normalize == "undefined") { normalize = true; } var range = api.createRange(doc); if (rangeInfo.collapsed) { var markerEl = gEBI(rangeInfo.markerId, doc); if (markerEl) { markerEl.style.display = "inline"; var previousNode = markerEl.previousSibling; // Workaround for issue 17 if (previousNode && previousNode.nodeType == 3) { markerEl.parentNode.removeChild(markerEl); range.collapseToPoint(previousNode, previousNode.length); } else { range.collapseBefore(markerEl); markerEl.parentNode.removeChild(markerEl); } } else { module.warn("Marker element has been removed. Cannot restore selection."); } } else { setRangeBoundary(doc, range, rangeInfo.startMarkerId, true); setRangeBoundary(doc, range, rangeInfo.endMarkerId, false); } if (normalize) { range.normalizeBoundaries(); } return range; } function saveRanges(ranges, backward) { var rangeInfos = [], range, doc; // Order the ranges by position within the DOM, latest first, cloning the array to leave the original untouched ranges = ranges.slice(0); ranges.sort(compareRanges); for (var i = 0, len = ranges.length; i < len; ++i) { rangeInfos[i] = saveRange(ranges[i], backward); } // Now that all the markers are in place and DOM manipulation over, adjust each range's boundaries to lie // between its markers for (i = len - 1; i >= 0; --i) { range = ranges[i]; doc = api.DomRange.getRangeDocument(range); if (range.collapsed) { range.collapseAfter(gEBI(rangeInfos[i].markerId, doc)); } else { range.setEndBefore(gEBI(rangeInfos[i].endMarkerId, doc)); range.setStartAfter(gEBI(rangeInfos[i].startMarkerId, doc)); } } return rangeInfos; } function saveSelection(win) { if (!api.isSelectionValid(win)) { module.warn("Cannot save selection. This usually happens when the selection is collapsed and the selection document has lost focus."); return null; } var sel = api.getSelection(win); var ranges = sel.getAllRanges(); var backward = (ranges.length == 1 && sel.isBackward()); var rangeInfos = saveRanges(ranges, backward); // Ensure current selection is unaffected if (backward) { sel.setSingleRange(ranges[0], "backward"); } else { sel.setRanges(ranges); } return { win: win, rangeInfos: rangeInfos, restored: false }; } function restoreRanges(rangeInfos) { var ranges = []; // Ranges are in reverse order of appearance in the DOM. We want to restore earliest first to avoid // normalization affecting previously restored ranges. var rangeCount = rangeInfos.length; for (var i = rangeCount - 1; i >= 0; i--) { ranges[i] = restoreRange(rangeInfos[i], true); } return ranges; } function restoreSelection(savedSelection, preserveDirection) { if (!savedSelection.restored) { var rangeInfos = savedSelection.rangeInfos; var sel = api.getSelection(savedSelection.win); var ranges = restoreRanges(rangeInfos), rangeCount = rangeInfos.length; if (rangeCount == 1 && preserveDirection && api.features.selectionHasExtend && rangeInfos[0].backward) { sel.removeAllRanges(); sel.addRange(ranges[0], true); } else { sel.setRanges(ranges); } savedSelection.restored = true; } } function removeMarkerElement(doc, markerId) { var markerEl = gEBI(markerId, doc); if (markerEl) { markerEl.parentNode.removeChild(markerEl); } } function removeMarkers(savedSelection) { var rangeInfos = savedSelection.rangeInfos; for (var i = 0, len = rangeInfos.length, rangeInfo; i < len; ++i) { rangeInfo = rangeInfos[i]; if (rangeInfo.collapsed) { removeMarkerElement(savedSelection.doc, rangeInfo.markerId); } else { removeMarkerElement(savedSelection.doc, rangeInfo.startMarkerId); removeMarkerElement(savedSelection.doc, rangeInfo.endMarkerId); } } } api.util.extend(api, { saveRange: saveRange, restoreRange: restoreRange, saveRanges: saveRanges, restoreRanges: restoreRanges, saveSelection: saveSelection, restoreSelection: restoreSelection, removeMarkerElement: removeMarkerElement, removeMarkers: removeMarkers }); }); }, this);;/* Base.js, version 1.1a Copyright 2006-2010, Dean Edwards License: http://www.opensource.org/licenses/mit-license.php */ var Base = function() { // dummy }; Base.extend = function(_instance, _static) { // subclass var extend = Base.prototype.extend; // build the prototype Base._prototyping = true; var proto = new this; extend.call(proto, _instance); proto.base = function() { // call this method from any other method to invoke that method's ancestor }; delete Base._prototyping; // create the wrapper for the constructor function //var constructor = proto.constructor.valueOf(); //-dean var constructor = proto.constructor; var klass = proto.constructor = function() { if (!Base._prototyping) { if (this._constructing || this.constructor == klass) { // instantiation this._constructing = true; constructor.apply(this, arguments); delete this._constructing; } else if (arguments[0] != null) { // casting return (arguments[0].extend || extend).call(arguments[0], proto); } } }; // build the class interface klass.ancestor = this; klass.extend = this.extend; klass.forEach = this.forEach; klass.implement = this.implement; klass.prototype = proto; klass.toString = this.toString; klass.valueOf = function(type) { //return (type == "object") ? klass : constructor; //-dean return (type == "object") ? klass : constructor.valueOf(); }; extend.call(klass, _static); // class initialisation if (typeof klass.init == "function") klass.init(); return klass; }; Base.prototype = { extend: function(source, value) { if (arguments.length > 1) { // extending with a name/value pair var ancestor = this[source]; if (ancestor && (typeof value == "function") && // overriding a method? // the valueOf() comparison is to avoid circular references (!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) && /\bbase\b/.test(value)) { // get the underlying method var method = value.valueOf(); // override value = function() { var previous = this.base || Base.prototype.base; this.base = ancestor; var returnValue = method.apply(this, arguments); this.base = previous; return returnValue; }; // point to the underlying method value.valueOf = function(type) { return (type == "object") ? value : method; }; value.toString = Base.toString; } this[source] = value; } else if (source) { // extending with an object literal var extend = Base.prototype.extend; // if this object has a customised extend method then use it if (!Base._prototyping && typeof this != "function") { extend = this.extend || extend; } var proto = {toSource: null}; // do the "toString" and other methods manually var hidden = ["constructor", "toString", "valueOf"]; // if we are prototyping then include the constructor var i = Base._prototyping ? 0 : 1; while (key = hidden[i++]) { if (source[key] != proto[key]) { extend.call(this, key, source[key]); } } // copy each of the source object's properties to this object for (var key in source) { if (!proto[key]) extend.call(this, key, source[key]); } } return this; } }; // initialise Base = Base.extend({ constructor: function() { this.extend(arguments[0]); } }, { ancestor: Object, version: "1.1", forEach: function(object, block, context) { for (var key in object) { if (this.prototype[key] === undefined) { block.call(context, object[key], key, object); } } }, implement: function() { for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] == "function") { // if it's a function, call it arguments[i](this.prototype); } else { // add the interface using the extend method this.prototype.extend(arguments[i]); } } return this; }, toString: function() { return String(this.valueOf()); } });;/** * Detect browser support for specific features */ wysihtml5.browser = (function() { var userAgent = navigator.userAgent, testElement = document.createElement("div"), // Browser sniffing is unfortunately needed since some behaviors are impossible to feature detect isGecko = userAgent.indexOf("Gecko") !== -1 && userAgent.indexOf("KHTML") === -1, isWebKit = userAgent.indexOf("AppleWebKit/") !== -1, isChrome = userAgent.indexOf("Chrome/") !== -1, isOpera = userAgent.indexOf("Opera/") !== -1; function iosVersion(userAgent) { return +((/ipad|iphone|ipod/.test(userAgent) && userAgent.match(/ os (\d+).+? like mac os x/)) || [undefined, 0])[1]; } function androidVersion(userAgent) { return +(userAgent.match(/android (\d+)/) || [undefined, 0])[1]; } function isIE(version, equation) { var rv = -1, re; if (navigator.appName == 'Microsoft Internet Explorer') { re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); } else if (navigator.appName == 'Netscape') { re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})"); } if (re && re.exec(navigator.userAgent) != null) { rv = parseFloat(RegExp.$1); } if (rv === -1) { return false; } if (!version) { return true; } if (!equation) { return version === rv; } if (equation === "<") { return version < rv; } if (equation === ">") { return version > rv; } if (equation === "<=") { return version <= rv; } if (equation === ">=") { return version >= rv; } } return { // Static variable needed, publicly accessible, to be able override it in unit tests USER_AGENT: userAgent, /** * Exclude browsers that are not capable of displaying and handling * contentEditable as desired: * - iPhone, iPad (tested iOS 4.2.2) and Android (tested 2.2) refuse to make contentEditables focusable * - IE < 8 create invalid markup and crash randomly from time to time * * @return {Boolean} */ supported: function() { var userAgent = this.USER_AGENT.toLowerCase(), // Essential for making html elements editable hasContentEditableSupport = "contentEditable" in testElement, // Following methods are needed in order to interact with the contentEditable area hasEditingApiSupport = document.execCommand && document.queryCommandSupported && document.queryCommandState, // document selector apis are only supported by IE 8+, Safari 4+, Chrome and Firefox 3.5+ hasQuerySelectorSupport = document.querySelector && document.querySelectorAll, // contentEditable is unusable in mobile browsers (tested iOS 4.2.2, Android 2.2, Opera Mobile, WebOS 3.05) isIncompatibleMobileBrowser = (this.isIos() && iosVersion(userAgent) < 5) || (this.isAndroid() && androidVersion(userAgent) < 4) || userAgent.indexOf("opera mobi") !== -1 || userAgent.indexOf("hpwos/") !== -1; return hasContentEditableSupport && hasEditingApiSupport && hasQuerySelectorSupport && !isIncompatibleMobileBrowser; }, isTouchDevice: function() { return this.supportsEvent("touchmove"); }, isIos: function() { return (/ipad|iphone|ipod/i).test(this.USER_AGENT); }, isAndroid: function() { return this.USER_AGENT.indexOf("Android") !== -1; }, /** * Whether the browser supports sandboxed iframes * Currently only IE 6+ offers such feature <iframe security="restricted"> * * http://msdn.microsoft.com/en-us/library/ms534622(v=vs.85).aspx * http://blogs.msdn.com/b/ie/archive/2008/01/18/using-frames-more-securely.aspx * * HTML5 sandboxed iframes are still buggy and their DOM is not reachable from the outside (except when using postMessage) */ supportsSandboxedIframes: function() { return isIE(); }, /** * IE6+7 throw a mixed content warning when the src of an iframe * is empty/unset or about:blank * window.querySelector is implemented as of IE8 */ throwsMixedContentWarningWhenIframeSrcIsEmpty: function() { return !("querySelector" in document); }, /** * Whether the caret is correctly displayed in contentEditable elements * Firefox sometimes shows a huge caret in the beginning after focusing */ displaysCaretInEmptyContentEditableCorrectly: function() { return isIE(); }, /** * Opera and IE are the only browsers who offer the css value * in the original unit, thx to the currentStyle object * All other browsers provide the computed style in px via window.getComputedStyle */ hasCurrentStyleProperty: function() { return "currentStyle" in testElement; }, /** * Firefox on OSX navigates through history when hitting CMD + Arrow right/left */ hasHistoryIssue: function() { return isGecko && navigator.platform.substr(0, 3) === "Mac"; }, /** * Whether the browser inserts a <br> when pressing enter in a contentEditable element */ insertsLineBreaksOnReturn: function() { return isGecko; }, supportsPlaceholderAttributeOn: function(element) { return "placeholder" in element; }, supportsEvent: function(eventName) { return "on" + eventName in testElement || (function() { testElement.setAttribute("on" + eventName, "return;"); return typeof(testElement["on" + eventName]) === "function"; })(); }, /** * Opera doesn't correctly fire focus/blur events when clicking in- and outside of iframe */ supportsEventsInIframeCorrectly: function() { return !isOpera; }, /** * Everything below IE9 doesn't know how to treat HTML5 tags * * @param {Object} context The document object on which to check HTML5 support * * @example * wysihtml5.browser.supportsHTML5Tags(document); */ supportsHTML5Tags: function(context) { var element = context.createElement("div"), html5 = "<article>foo</article>"; element.innerHTML = html5; return element.innerHTML.toLowerCase() === html5; }, /** * Checks whether a document supports a certain queryCommand * In particular, Opera needs a reference to a document that has a contentEditable in it's dom tree * in oder to report correct results * * @param {Object} doc Document object on which to check for a query command * @param {String} command The query command to check for * @return {Boolean} * * @example * wysihtml5.browser.supportsCommand(document, "bold"); */ supportsCommand: (function() { // Following commands are supported but contain bugs in some browsers var buggyCommands = { // formatBlock fails with some tags (eg. <blockquote>) "formatBlock": isIE(10, "<="), // When inserting unordered or ordered lists in Firefox, Chrome or Safari, the current selection or line gets // converted into a list (<ul><li>...</li></ul>, <ol><li>...</li></ol>) // IE and Opera act a bit different here as they convert the entire content of the current block element into a list "insertUnorderedList": isIE(), "insertOrderedList": isIE() }; // Firefox throws errors for queryCommandSupported, so we have to build up our own object of supported commands var supported = { "insertHTML": isGecko }; return function(doc, command) { var isBuggy = buggyCommands[command]; if (!isBuggy) { // Firefox throws errors when invoking queryCommandSupported or queryCommandEnabled try { return doc.queryCommandSupported(command); } catch(e1) {} try { return doc.queryCommandEnabled(command); } catch(e2) { return !!supported[command]; } } return false; }; })(), /** * IE: URLs starting with: * www., http://, https://, ftp://, gopher://, mailto:, new:, snews:, telnet:, wasis:, file://, * nntp://, newsrc:, ldap://, ldaps://, outlook:, mic:// and url: * will automatically be auto-linked when either the user inserts them via copy&paste or presses the * space bar when the caret is directly after such an url. * This behavior cannot easily be avoided in IE < 9 since the logic is hardcoded in the mshtml.dll * (related blog post on msdn * http://blogs.msdn.com/b/ieinternals/archive/2009/09/17/prevent-automatic-hyperlinking-in-contenteditable-html.aspx). */ doesAutoLinkingInContentEditable: function() { return isIE(); }, /** * As stated above, IE auto links urls typed into contentEditable elements * Since IE9 it's possible to prevent this behavior */ canDisableAutoLinking: function() { return this.supportsCommand(document, "AutoUrlDetect"); }, /** * IE leaves an empty paragraph in the contentEditable element after clearing it * Chrome/Safari sometimes an empty <div> */ clearsContentEditableCorrectly: function() { return isGecko || isOpera || isWebKit; }, /** * IE gives wrong results for getAttribute */ supportsGetAttributeCorrectly: function() { var td = document.createElement("td"); return td.getAttribute("rowspan") != "1"; }, /** * When clicking on images in IE, Opera and Firefox, they are selected, which makes it easy to interact with them. * Chrome and Safari both don't support this */ canSelectImagesInContentEditable: function() { return isGecko || isIE() || isOpera; }, /** * All browsers except Safari and Chrome automatically scroll the range/caret position into view */ autoScrollsToCaret: function() { return !isWebKit; }, /** * Check whether the browser automatically closes tags that don't need to be opened */ autoClosesUnclosedTags: function() { var clonedTestElement = testElement.cloneNode(false), returnValue, innerHTML; clonedTestElement.innerHTML = "<p><div></div>"; innerHTML = clonedTestElement.innerHTML.toLowerCase(); returnValue = innerHTML === "<p></p><div></div>" || innerHTML === "<p><div></div></p>"; // Cache result by overwriting current function this.autoClosesUnclosedTags = function() { return returnValue; }; return returnValue; }, /** * Whether the browser supports the native document.getElementsByClassName which returns live NodeLists */ supportsNativeGetElementsByClassName: function() { return String(document.getElementsByClassName).indexOf("[native code]") !== -1; }, /** * As of now (19.04.2011) only supported by Firefox 4 and Chrome * See https://developer.mozilla.org/en/DOM/Selection/modify */ supportsSelectionModify: function() { return "getSelection" in window && "modify" in window.getSelection(); }, /** * Opera needs a white space after a <br> in order to position the caret correctly */ needsSpaceAfterLineBreak: function() { return isOpera; }, /** * Whether the browser supports the speech api on the given element * See http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/ * * @example * var input = document.createElement("input"); * if (wysihtml5.browser.supportsSpeechApiOn(input)) { * // ... * } */ supportsSpeechApiOn: function(input) { var chromeVersion = userAgent.match(/Chrome\/(\d+)/) || [undefined, 0]; return chromeVersion[1] >= 11 && ("onwebkitspeechchange" in input || "speech" in input); }, /** * IE9 crashes when setting a getter via Object.defineProperty on XMLHttpRequest or XDomainRequest * See https://connect.microsoft.com/ie/feedback/details/650112 * or try the POC http://tifftiff.de/ie9_crash/ */ crashesWhenDefineProperty: function(property) { return isIE(9) && (property === "XMLHttpRequest" || property === "XDomainRequest"); }, /** * IE is the only browser who fires the "focus" event not immediately when .focus() is called on an element */ doesAsyncFocus: function() { return isIE(); }, /** * In IE it's impssible for the user and for the selection library to set the caret after an <img> when it's the lastChild in the document */ hasProblemsSettingCaretAfterImg: function() { return isIE(); }, hasUndoInContextMenu: function() { return isGecko || isChrome || isOpera; }, /** * Opera sometimes doesn't insert the node at the right position when range.insertNode(someNode) * is used (regardless if rangy or native) * This especially happens when the caret is positioned right after a <br> because then * insertNode() will insert the node right before the <br> */ hasInsertNodeIssue: function() { return isOpera; }, /** * IE 8+9 don't fire the focus event of the <body> when the iframe gets focused (even though the caret gets set into the <body>) */ hasIframeFocusIssue: function() { return isIE(); }, /** * Chrome + Safari create invalid nested markup after paste * * <p> * foo * <p>bar</p> <!-- BOO! --> * </p> */ createsNestedInvalidMarkupAfterPaste: function() { return isWebKit; }, supportsMutationEvents: function() { return ("MutationEvent" in window); }, /** IE (at least up to 11) does not support clipboardData on event. It is on window but cannot return text/html Should actually check for clipboardData on paste event, but cannot in firefox */ supportsModenPaste: function () { return !("clipboardData" in window); } }; })(); ;wysihtml5.lang.array = function(arr) { return { /** * Check whether a given object exists in an array * * @example * wysihtml5.lang.array([1, 2]).contains(1); * // => true * * Can be used to match array with array. If intersection is found true is returned */ contains: function(needle) { if (Array.isArray(needle)) { for (var i = needle.length; i--;) { if (wysihtml5.lang.array(arr).indexOf(needle[i]) !== -1) { return true; } } return false; } else { return wysihtml5.lang.array(arr).indexOf(needle) !== -1; } }, /** * Check whether a given object exists in an array and return index * If no elelemt found returns -1 * * @example * wysihtml5.lang.array([1, 2]).indexOf(2); * // => 1 */ indexOf: function(needle) { if (arr.indexOf) { return arr.indexOf(needle); } else { for (var i=0, length=arr.length; i<length; i++) { if (arr[i] === needle) { return i; } } return -1; } }, /** * Substract one array from another * * @example * wysihtml5.lang.array([1, 2, 3, 4]).without([3, 4]); * // => [1, 2] */ without: function(arrayToSubstract) { arrayToSubstract = wysihtml5.lang.array(arrayToSubstract); var newArr = [], i = 0, length = arr.length; for (; i<length; i++) { if (!arrayToSubstract.contains(arr[i])) { newArr.push(arr[i]); } } return newArr; }, /** * Return a clean native array * * Following will convert a Live NodeList to a proper Array * @example * var childNodes = wysihtml5.lang.array(document.body.childNodes).get(); */ get: function() { var i = 0, length = arr.length, newArray = []; for (; i<length; i++) { newArray.push(arr[i]); } return newArray; }, /** * Creates a new array with the results of calling a provided function on every element in this array. * optionally this can be provided as second argument * * @example * var childNodes = wysihtml5.lang.array([1,2,3,4]).map(function (value, index, array) { return value * 2; * }); * // => [2,4,6,8] */ map: function(callback, thisArg) { if (Array.prototype.map) { return arr.map(callback, thisArg); } else { var len = arr.length >>> 0, A = new Array(len), i = 0; for (; i < len; i++) { A[i] = callback.call(thisArg, arr[i], i, arr); } return A; } }, /* ReturnS new array without duplicate entries * * @example * var uniq = wysihtml5.lang.array([1,2,3,2,1,4]).unique(); * // => [1,2,3,4] */ unique: function() { var vals = [], max = arr.length, idx = 0; while (idx < max) { if (!wysihtml5.lang.array(vals).contains(arr[idx])) { vals.push(arr[idx]); } idx++; } return vals; } }; }; ;wysihtml5.lang.Dispatcher = Base.extend( /** @scope wysihtml5.lang.Dialog.prototype */ { on: function(eventName, handler) { this.events = this.events || {}; this.events[eventName] = this.events[eventName] || []; this.events[eventName].push(handler); return this; }, off: function(eventName, handler) { this.events = this.events || {}; var i = 0, handlers, newHandlers; if (eventName) { handlers = this.events[eventName] || [], newHandlers = []; for (; i<handlers.length; i++) { if (handlers[i] !== handler && handler) { newHandlers.push(handlers[i]); } } this.events[eventName] = newHandlers; } else { // Clean up all events this.events = {}; } return this; }, fire: function(eventName, payload) { this.events = this.events || {}; var handlers = this.events[eventName] || [], i = 0; for (; i<handlers.length; i++) { handlers[i].call(this, payload); } return this; }, // deprecated, use .on() observe: function() { return this.on.apply(this, arguments); }, // deprecated, use .off() stopObserving: function() { return this.off.apply(this, arguments); } }); ;wysihtml5.lang.object = function(obj) { return { /** * @example * wysihtml5.lang.object({ foo: 1, bar: 1 }).merge({ bar: 2, baz: 3 }).get(); * // => { foo: 1, bar: 2, baz: 3 } */ merge: function(otherObj) { for (var i in otherObj) { obj[i] = otherObj[i]; } return this; }, get: function() { return obj; }, /** * @example * wysihtml5.lang.object({ foo: 1 }).clone(); * // => { foo: 1 } * * v0.4.14 adds options for deep clone : wysihtml5.lang.object({ foo: 1 }).clone(true); */ clone: function(deep) { var newObj = {}, i; if (obj === null || !wysihtml5.lang.object(obj).isPlainObject()) { return obj; } for (i in obj) { if(obj.hasOwnProperty(i)) { if (deep) { newObj[i] = wysihtml5.lang.object(obj[i]).clone(deep); } else { newObj[i] = obj[i]; } } } return newObj; }, /** * @example * wysihtml5.lang.object([]).isArray(); * // => true */ isArray: function() { return Object.prototype.toString.call(obj) === "[object Array]"; }, /** * @example * wysihtml5.lang.object(function() {}).isFunction(); * // => true */ isFunction: function() { return Object.prototype.toString.call(obj) === '[object Function]'; }, isPlainObject: function () { return Object.prototype.toString.call(obj) === '[object Object]'; } }; }; ;(function() { var WHITE_SPACE_START = /^\s+/, WHITE_SPACE_END = /\s+$/, ENTITY_REG_EXP = /[&<>\t"]/g, ENTITY_MAP = { '&': '&', '<': '<', '>': '>', '"': """, '\t':" " }; wysihtml5.lang.string = function(str) { str = String(str); return { /** * @example * wysihtml5.lang.string(" foo ").trim(); * // => "foo" */ trim: function() { return str.replace(WHITE_SPACE_START, "").replace(WHITE_SPACE_END, ""); }, /** * @example * wysihtml5.lang.string("Hello #{name}").interpolate({ name: "Christopher" }); * // => "Hello Christopher" */ interpolate: function(vars) { for (var i in vars) { str = this.replace("#{" + i + "}").by(vars[i]); } return str; }, /** * @example * wysihtml5.lang.string("Hello Tom").replace("Tom").with("Hans"); * // => "Hello Hans" */ replace: function(search) { return { by: function(replace) { return str.split(search).join(replace); } }; }, /** * @example * wysihtml5.lang.string("hello<br>").escapeHTML(); * // => "hello<br>" */ escapeHTML: function(linebreaks, convertSpaces) { var html = str.replace(ENTITY_REG_EXP, function(c) { return ENTITY_MAP[c]; }); if (linebreaks) { html = html.replace(/(?:\r\n|\r|\n)/g, '<br />'); } if (convertSpaces) { html = html.replace(/ /gi, " "); } return html; } }; }; })(); ;/** * Find urls in descendant text nodes of an element and auto-links them * Inspired by http://james.padolsey.com/javascript/find-and-replace-text-with-javascript/ * * @param {Element} element Container element in which to search for urls * * @example * <div id="text-container">Please click here: www.google.com</div> * <script>wysihtml5.dom.autoLink(document.getElementById("text-container"));</script> */ (function(wysihtml5) { var /** * Don't auto-link urls that are contained in the following elements: */ IGNORE_URLS_IN = wysihtml5.lang.array(["CODE", "PRE", "A", "SCRIPT", "HEAD", "TITLE", "STYLE"]), /** * revision 1: * /(\S+\.{1}[^\s\,\.\!]+)/g * * revision 2: * /(\b(((https?|ftp):\/\/)|(www\.))[-A-Z0-9+&@#\/%?=~_|!:,.;\[\]]*[-A-Z0-9+&@#\/%=~_|])/gim * * put this in the beginning if you don't wan't to match within a word * (^|[\>\(\{\[\s\>]) */ URL_REG_EXP = /((https?:\/\/|www\.)[^\s<]{3,})/gi, TRAILING_CHAR_REG_EXP = /([^\w\/\-](,?))$/i, MAX_DISPLAY_LENGTH = 100, BRACKETS = { ")": "(", "]": "[", "}": "{" }; function autoLink(element, ignoreInClasses) { if (_hasParentThatShouldBeIgnored(element, ignoreInClasses)) { return element; } if (element === element.ownerDocument.documentElement) { element = element.ownerDocument.body; } return _parseNode(element, ignoreInClasses); } /** * This is basically a rebuild of * the rails auto_link_urls text helper */ function _convertUrlsToLinks(str) { return str.replace(URL_REG_EXP, function(match, url) { var punctuation = (url.match(TRAILING_CHAR_REG_EXP) || [])[1] || "", opening = BRACKETS[punctuation]; url = url.replace(TRAILING_CHAR_REG_EXP, ""); if (url.split(opening).length > url.split(punctuation).length) { url = url + punctuation; punctuation = ""; } var realUrl = url, displayUrl = url; if (url.length > MAX_DISPLAY_LENGTH) { displayUrl = displayUrl.substr(0, MAX_DISPLAY_LENGTH) + "..."; } // Add http prefix if necessary if (realUrl.substr(0, 4) === "www.") { realUrl = "http://" + realUrl; } return '<a href="' + realUrl + '">' + displayUrl + '</a>' + punctuation; }); } /** * Creates or (if already cached) returns a temp element * for the given document object */ function _getTempElement(context) { var tempElement = context._wysihtml5_tempElement; if (!tempElement) { tempElement = context._wysihtml5_tempElement = context.createElement("div"); } return tempElement; } /** * Replaces the original text nodes with the newly auto-linked dom tree */ function _wrapMatchesInNode(textNode) { var parentNode = textNode.parentNode, nodeValue = wysihtml5.lang.string(textNode.data).escapeHTML(), tempElement = _getTempElement(parentNode.ownerDocument); // We need to insert an empty/temporary <span /> to fix IE quirks // Elsewise IE would strip white space in the beginning tempElement.innerHTML = "<span></span>" + _convertUrlsToLinks(nodeValue); tempElement.removeChild(tempElement.firstChild); while (tempElement.firstChild) { // inserts tempElement.firstChild before textNode parentNode.insertBefore(tempElement.firstChild, textNode); } parentNode.removeChild(textNode); } function _hasParentThatShouldBeIgnored(node, ignoreInClasses) { var nodeName; while (node.parentNode) { node = node.parentNode; nodeName = node.nodeName; if (node.className && wysihtml5.lang.array(node.className.split(' ')).contains(ignoreInClasses)) { return true; } if (IGNORE_URLS_IN.contains(nodeName)) { return true; } else if (nodeName === "body") { return false; } } return false; } function _parseNode(element, ignoreInClasses) { if (IGNORE_URLS_IN.contains(element.nodeName)) { return; } if (element.className && wysihtml5.lang.array(element.className.split(' ')).contains(ignoreInClasses)) { return; } if (element.nodeType === wysihtml5.TEXT_NODE && element.data.match(URL_REG_EXP)) { _wrapMatchesInNode(element); return; } var childNodes = wysihtml5.lang.array(element.childNodes).get(), childNodesLength = childNodes.length, i = 0; for (; i<childNodesLength; i++) { _parseNode(childNodes[i], ignoreInClasses); } return element; } wysihtml5.dom.autoLink = autoLink; // Reveal url reg exp to the outside wysihtml5.dom.autoLink.URL_REG_EXP = URL_REG_EXP; })(wysihtml5); ;(function(wysihtml5) { var api = wysihtml5.dom; api.addClass = function(element, className) { var classList = element.classList; if (classList) { return classList.add(className); } if (api.hasClass(element, className)) { return; } element.className += " " + className; }; api.removeClass = function(element, className) { var classList = element.classList; if (classList) { return classList.remove(className); } element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " "); }; api.hasClass = function(element, className) { var classList = element.classList; if (classList) { return classList.contains(className); } var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }; })(wysihtml5); ;wysihtml5.dom.contains = (function() { var documentElement = document.documentElement; if (documentElement.contains) { return function(container, element) { if (element.nodeType !== wysihtml5.ELEMENT_NODE) { element = element.parentNode; } return container !== element && container.contains(element); }; } else if (documentElement.compareDocumentPosition) { return function(container, element) { // https://developer.mozilla.org/en/DOM/Node.compareDocumentPosition return !!(container.compareDocumentPosition(element) & 16); }; } })(); ;/** * Converts an HTML fragment/element into a unordered/ordered list * * @param {Element} element The element which should be turned into a list * @param {String} listType The list type in which to convert the tree (either "ul" or "ol") * @return {Element} The created list * * @example * <!-- Assume the following dom: --> * <span id="pseudo-list"> * eminem<br> * dr. dre * <div>50 Cent</div> * </span> * * <script> * wysihtml5.dom.convertToList(document.getElementById("pseudo-list"), "ul"); * </script> * * <!-- Will result in: --> * <ul> * <li>eminem</li> * <li>dr. dre</li> * <li>50 Cent</li> * </ul> */ wysihtml5.dom.convertToList = (function() { function _createListItem(doc, list) { var listItem = doc.createElement("li"); list.appendChild(listItem); return listItem; } function _createList(doc, type) { return doc.createElement(type); } function convertToList(element, listType, uneditableClass) { if (element.nodeName === "UL" || element.nodeName === "OL" || element.nodeName === "MENU") { // Already a list return element; } var doc = element.ownerDocument, list = _createList(doc, listType), lineBreaks = element.querySelectorAll("br"), lineBreaksLength = lineBreaks.length, childNodes, childNodesLength, childNode, lineBreak, parentNode, isBlockElement, isLineBreak, currentListItem, i; // First find <br> at the end of inline elements and move them behind them for (i=0; i<lineBreaksLength; i++) { lineBreak = lineBreaks[i]; while ((parentNode = lineBreak.parentNode) && parentNode !== element && parentNode.lastChild === lineBreak) { if (wysihtml5.dom.getStyle("display").from(parentNode) === "block") { parentNode.removeChild(lineBreak); break; } wysihtml5.dom.insert(lineBreak).after(lineBreak.parentNode); } } childNodes = wysihtml5.lang.array(element.childNodes).get(); childNodesLength = childNodes.length; for (i=0; i<childNodesLength; i++) { currentListItem = currentListItem || _createListItem(doc, list); childNode = childNodes[i]; isBlockElement = wysihtml5.dom.getStyle("display").from(childNode) === "block"; isLineBreak = childNode.nodeName === "BR"; // consider uneditable as an inline element if (isBlockElement && (!uneditableClass || !wysihtml5.dom.hasClass(childNode, uneditableClass))) { // Append blockElement to current <li> if empty, otherwise create a new one currentListItem = currentListItem.firstChild ? _createListItem(doc, list) : currentListItem; currentListItem.appendChild(childNode); currentListItem = null; continue; } if (isLineBreak) { // Only create a new list item in the next iteration when the current one has already content currentListItem = currentListItem.firstChild ? null : currentListItem; continue; } currentListItem.appendChild(childNode); } if (childNodes.length === 0) { _createListItem(doc, list); } element.parentNode.replaceChild(list, element); return list; } return convertToList; })(); ;/** * Copy a set of attributes from one element to another * * @param {Array} attributesToCopy List of attributes which should be copied * @return {Object} Returns an object which offers the "from" method which can be invoked with the element where to * copy the attributes from., this again returns an object which provides a method named "to" which can be invoked * with the element where to copy the attributes to (see example) * * @example * var textarea = document.querySelector("textarea"), * div = document.querySelector("div[contenteditable=true]"), * anotherDiv = document.querySelector("div.preview"); * wysihtml5.dom.copyAttributes(["spellcheck", "value", "placeholder"]).from(textarea).to(div).andTo(anotherDiv); * */ wysihtml5.dom.copyAttributes = function(attributesToCopy) { return { from: function(elementToCopyFrom) { return { to: function(elementToCopyTo) { var attribute, i = 0, length = attributesToCopy.length; for (; i<length; i++) { attribute = attributesToCopy[i]; if (typeof(elementToCopyFrom[attribute]) !== "undefined" && elementToCopyFrom[attribute] !== "") { elementToCopyTo[attribute] = elementToCopyFrom[attribute]; } } return { andTo: arguments.callee }; } }; } }; }; ;/** * Copy a set of styles from one element to another * Please note that this only works properly across browsers when the element from which to copy the styles * is in the dom * * Interesting article on how to copy styles * * @param {Array} stylesToCopy List of styles which should be copied * @return {Object} Returns an object which offers the "from" method which can be invoked with the element where to * copy the styles from., this again returns an object which provides a method named "to" which can be invoked * with the element where to copy the styles to (see example) * * @example * var textarea = document.querySelector("textarea"), * div = document.querySelector("div[contenteditable=true]"), * anotherDiv = document.querySelector("div.preview"); * wysihtml5.dom.copyStyles(["overflow-y", "width", "height"]).from(textarea).to(div).andTo(anotherDiv); * */ (function(dom) { /** * Mozilla, WebKit and Opera recalculate the computed width when box-sizing: boder-box; is set * So if an element has "width: 200px; -moz-box-sizing: border-box; border: 1px;" then * its computed css width will be 198px * * See https://bugzilla.mozilla.org/show_bug.cgi?id=520992 */ var BOX_SIZING_PROPERTIES = ["-webkit-box-sizing", "-moz-box-sizing", "-ms-box-sizing", "box-sizing"]; var shouldIgnoreBoxSizingBorderBox = function(element) { if (hasBoxSizingBorderBox(element)) { return parseInt(dom.getStyle("width").from(element), 10) < element.offsetWidth; } return false; }; var hasBoxSizingBorderBox = function(element) { var i = 0, length = BOX_SIZING_PROPERTIES.length; for (; i<length; i++) { if (dom.getStyle(BOX_SIZING_PROPERTIES[i]).from(element) === "border-box") { return BOX_SIZING_PROPERTIES[i]; } } }; dom.copyStyles = function(stylesToCopy) { return { from: function(element) { if (shouldIgnoreBoxSizingBorderBox(element)) { stylesToCopy = wysihtml5.lang.array(stylesToCopy).without(BOX_SIZING_PROPERTIES); } var cssText = "", length = stylesToCopy.length, i = 0, property; for (; i<length; i++) { property = stylesToCopy[i]; cssText += property + ":" + dom.getStyle(property).from(element) + ";"; } return { to: function(element) { dom.setStyles(cssText).on(element); return { andTo: arguments.callee }; } }; } }; }; })(wysihtml5.dom); ;/** * Event Delegation * * @example * wysihtml5.dom.delegate(document.body, "a", "click", function() { * // foo * }); */ (function(wysihtml5) { wysihtml5.dom.delegate = function(container, selector, eventName, handler) { return wysihtml5.dom.observe(container, eventName, function(event) { var target = event.target, match = wysihtml5.lang.array(container.querySelectorAll(selector)); while (target && target !== container) { if (match.contains(target)) { handler.call(target, event); break; } target = target.parentNode; } }); }; })(wysihtml5); ;// TODO: Refactor dom tree traversing here (function(wysihtml5) { wysihtml5.dom.domNode = function(node) { var defaultNodeTypes = [wysihtml5.ELEMENT_NODE, wysihtml5.TEXT_NODE]; var _isBlankText = function(node) { return node.nodeType === wysihtml5.TEXT_NODE && (/^\s*$/g).test(node.data); }; return { // var node = wysihtml5.dom.domNode(element).prev({nodeTypes: [1,3], ignoreBlankTexts: true}); prev: function(options) { var prevNode = node.previousSibling, types = (options && options.nodeTypes) ? options.nodeTypes : defaultNodeTypes; if (!prevNode) { return null; } if ( (!wysihtml5.lang.array(types).contains(prevNode.nodeType)) || // nodeTypes check. (options && options.ignoreBlankTexts && _isBlankText(prevNode)) // Blank text nodes bypassed if set ) { return wysihtml5.dom.domNode(prevNode).prev(options); } return prevNode; }, // var node = wysihtml5.dom.domNode(element).next({nodeTypes: [1,3], ignoreBlankTexts: true}); next: function(options) { var nextNode = node.nextSibling, types = (options && options.nodeTypes) ? options.nodeTypes : defaultNodeTypes; if (!nextNode) { return null; } if ( (!wysihtml5.lang.array(types).contains(nextNode.nodeType)) || // nodeTypes check. (options && options.ignoreBlankTexts && _isBlankText(nextNode)) // blank text nodes bypassed if set ) { return wysihtml5.dom.domNode(nextNode).next(options); } return nextNode; } }; }; })(wysihtml5);;/** * Returns the given html wrapped in a div element * * Fixing IE's inability to treat unknown elements (HTML5 section, article, ...) correctly * when inserted via innerHTML * * @param {String} html The html which should be wrapped in a dom element * @param {Obejct} [context] Document object of the context the html belongs to * * @example * wysihtml5.dom.getAsDom("<article>foo</article>"); */ wysihtml5.dom.getAsDom = (function() { var _innerHTMLShiv = function(html, context) { var tempElement = context.createElement("div"); tempElement.style.display = "none"; context.body.appendChild(tempElement); // IE throws an exception when trying to insert <frameset></frameset> via innerHTML try { tempElement.innerHTML = html; } catch(e) {} context.body.removeChild(tempElement); return tempElement; }; /** * Make sure IE supports HTML5 tags, which is accomplished by simply creating one instance of each element */ var _ensureHTML5Compatibility = function(context) { if (context._wysihtml5_supportsHTML5Tags) { return; } for (var i=0, length=HTML5_ELEMENTS.length; i<length; i++) { context.createElement(HTML5_ELEMENTS[i]); } context._wysihtml5_supportsHTML5Tags = true; }; /** * List of html5 tags * taken from http://simon.html5.org/html5-elements */ var HTML5_ELEMENTS = [ "abbr", "article", "aside", "audio", "bdi", "canvas", "command", "datalist", "details", "figcaption", "figure", "footer", "header", "hgroup", "keygen", "mark", "meter", "nav", "output", "progress", "rp", "rt", "ruby", "svg", "section", "source", "summary", "time", "track", "video", "wbr" ]; return function(html, context) { context = context || document; var tempElement; if (typeof(html) === "object" && html.nodeType) { tempElement = context.createElement("div"); tempElement.appendChild(html); } else if (wysihtml5.browser.supportsHTML5Tags(context)) { tempElement = context.createElement("div"); tempElement.innerHTML = html; } else { _ensureHTML5Compatibility(context); tempElement = _innerHTMLShiv(html, context); } return tempElement; }; })(); ;/** * Walks the dom tree from the given node up until it finds a match * Designed for optimal performance. * * @param {Element} node The from which to check the parent nodes * @param {Object} matchingSet Object to match against (possible properties: nodeName, className, classRegExp) * @param {Number} [levels] How many parents should the function check up from the current node (defaults to 50) * @return {null|Element} Returns the first element that matched the desiredNodeName(s) * @example * var listElement = wysihtml5.dom.getParentElement(document.querySelector("li"), { nodeName: ["MENU", "UL", "OL"] }); * // ... or ... * var unorderedListElement = wysihtml5.dom.getParentElement(document.querySelector("li"), { nodeName: "UL" }); * // ... or ... * var coloredElement = wysihtml5.dom.getParentElement(myTextNode, { nodeName: "SPAN", className: "wysiwyg-color-red", classRegExp: /wysiwyg-color-[a-z]/g }); */ wysihtml5.dom.getParentElement = (function() { function _isSameNodeName(nodeName, desiredNodeNames) { if (!desiredNodeNames || !desiredNodeNames.length) { return true; } if (typeof(desiredNodeNames) === "string") { return nodeName === desiredNodeNames; } else { return wysihtml5.lang.array(desiredNodeNames).contains(nodeName); } } function _isElement(node) { return node.nodeType === wysihtml5.ELEMENT_NODE; } function _hasClassName(element, className, classRegExp) { var classNames = (element.className || "").match(classRegExp) || []; if (!className) { return !!classNames.length; } return classNames[classNames.length - 1] === className; } function _hasStyle(element, cssStyle, styleRegExp) { var styles = (element.getAttribute('style') || "").match(styleRegExp) || []; if (!cssStyle) { return !!styles.length; } return styles[styles.length - 1] === cssStyle; } return function(node, matchingSet, levels, container) { var findByStyle = (matchingSet.cssStyle || matchingSet.styleRegExp), findByClass = (matchingSet.className || matchingSet.classRegExp); levels = levels || 50; // Go max 50 nodes upwards from current node while (levels-- && node && node.nodeName !== "BODY" && (!container || node !== container)) { if (_isElement(node) && _isSameNodeName(node.nodeName, matchingSet.nodeName) && (!findByStyle || _hasStyle(node, matchingSet.cssStyle, matchingSet.styleRegExp)) && (!findByClass || _hasClassName(node, matchingSet.className, matchingSet.classRegExp)) ) { return node; } node = node.parentNode; } return null; }; })(); ;/** * Get element's style for a specific css property * * @param {Element} element The element on which to retrieve the style * @param {String} property The CSS property to retrieve ("float", "display", "text-align", ...) * * @example * wysihtml5.dom.getStyle("display").from(document.body); * // => "block" */ wysihtml5.dom.getStyle = (function() { var stylePropertyMapping = { "float": ("styleFloat" in document.createElement("div").style) ? "styleFloat" : "cssFloat" }, REG_EXP_CAMELIZE = /\-[a-z]/g; function camelize(str) { return str.replace(REG_EXP_CAMELIZE, function(match) { return match.charAt(1).toUpperCase(); }); } return function(property) { return { from: function(element) { if (element.nodeType !== wysihtml5.ELEMENT_NODE) { return; } var doc = element.ownerDocument, camelizedProperty = stylePropertyMapping[property] || camelize(property), style = element.style, currentStyle = element.currentStyle, styleValue = style[camelizedProperty]; if (styleValue) { return styleValue; } // currentStyle is no standard and only supported by Opera and IE but it has one important advantage over the standard-compliant // window.getComputedStyle, since it returns css property values in their original unit: // If you set an elements width to "50%", window.getComputedStyle will give you it's current width in px while currentStyle // gives you the original "50%". // Opera supports both, currentStyle and window.getComputedStyle, that's why checking for currentStyle should have higher prio if (currentStyle) { try { return currentStyle[camelizedProperty]; } catch(e) { //ie will occasionally fail for unknown reasons. swallowing exception } } var win = doc.defaultView || doc.parentWindow, needsOverflowReset = (property === "height" || property === "width") && element.nodeName === "TEXTAREA", originalOverflow, returnValue; if (win.getComputedStyle) { // Chrome and Safari both calculate a wrong width and height for textareas when they have scroll bars // therfore we remove and restore the scrollbar and calculate the value in between if (needsOverflowReset) { originalOverflow = style.overflow; style.overflow = "hidden"; } returnValue = win.getComputedStyle(element, null).getPropertyValue(property); if (needsOverflowReset) { style.overflow = originalOverflow || ""; } return returnValue; } } }; }; })(); ;wysihtml5.dom.getTextNodes = function(node, ingoreEmpty){ var all = []; for (node=node.firstChild;node;node=node.nextSibling){ if (node.nodeType == 3) { if (!ingoreEmpty || !(/^\s*$/).test(node.innerText || node.textContent)) { all.push(node); } } else { all = all.concat(wysihtml5.dom.getTextNodes(node, ingoreEmpty)); } } return all; };;/** * High performant way to check whether an element with a specific tag name is in the given document * Optimized for being heavily executed * Unleashes the power of live node lists * * @param {Object} doc The document object of the context where to check * @param {String} tagName Upper cased tag name * @example * wysihtml5.dom.hasElementWithTagName(document, "IMG"); */ wysihtml5.dom.hasElementWithTagName = (function() { var LIVE_CACHE = {}, DOCUMENT_IDENTIFIER = 1; function _getDocumentIdentifier(doc) { return doc._wysihtml5_identifier || (doc._wysihtml5_identifier = DOCUMENT_IDENTIFIER++); } return function(doc, tagName) { var key = _getDocumentIdentifier(doc) + ":" + tagName, cacheEntry = LIVE_CACHE[key]; if (!cacheEntry) { cacheEntry = LIVE_CACHE[key] = doc.getElementsByTagName(tagName); } return cacheEntry.length > 0; }; })(); ;/** * High performant way to check whether an element with a specific class name is in the given document * Optimized for being heavily executed * Unleashes the power of live node lists * * @param {Object} doc The document object of the context where to check * @param {String} tagName Upper cased tag name * @example * wysihtml5.dom.hasElementWithClassName(document, "foobar"); */ (function(wysihtml5) { var LIVE_CACHE = {}, DOCUMENT_IDENTIFIER = 1; function _getDocumentIdentifier(doc) { return doc._wysihtml5_identifier || (doc._wysihtml5_identifier = DOCUMENT_IDENTIFIER++); } wysihtml5.dom.hasElementWithClassName = function(doc, className) { // getElementsByClassName is not supported by IE<9 // but is sometimes mocked via library code (which then doesn't return live node lists) if (!wysihtml5.browser.supportsNativeGetElementsByClassName()) { return !!doc.querySelector("." + className); } var key = _getDocumentIdentifier(doc) + ":" + className, cacheEntry = LIVE_CACHE[key]; if (!cacheEntry) { cacheEntry = LIVE_CACHE[key] = doc.getElementsByClassName(className); } return cacheEntry.length > 0; }; })(wysihtml5); ;wysihtml5.dom.insert = function(elementToInsert) { return { after: function(element) { element.parentNode.insertBefore(elementToInsert, element.nextSibling); }, before: function(element) { element.parentNode.insertBefore(elementToInsert, element); }, into: function(element) { element.appendChild(elementToInsert); } }; }; ;wysihtml5.dom.insertCSS = function(rules) { rules = rules.join("\n"); return { into: function(doc) { var styleElement = doc.createElement("style"); styleElement.type = "text/css"; if (styleElement.styleSheet) { styleElement.styleSheet.cssText = rules; } else { styleElement.appendChild(doc.createTextNode(rules)); } var link = doc.querySelector("head link"); if (link) { link.parentNode.insertBefore(styleElement, link); return; } else { var head = doc.querySelector("head"); if (head) { head.appendChild(styleElement); } } } }; }; ;// TODO: Refactor dom tree traversing here (function(wysihtml5) { wysihtml5.dom.lineBreaks = function(node) { function _isLineBreak(n) { return n.nodeName === "BR"; } /** * Checks whether the elment causes a visual line break * (<br> or block elements) */ function _isLineBreakOrBlockElement(element) { if (_isLineBreak(element)) { return true; } if (wysihtml5.dom.getStyle("display").from(element) === "block") { return true; } return false; } return { /* wysihtml5.dom.lineBreaks(element).add(); * * Adds line breaks before and after the given node if the previous and next siblings * aren't already causing a visual line break (block element or <br>) */ add: function(options) { var doc = node.ownerDocument, nextSibling = wysihtml5.dom.domNode(node).next({ignoreBlankTexts: true}), previousSibling = wysihtml5.dom.domNode(node).prev({ignoreBlankTexts: true}); if (nextSibling && !_isLineBreakOrBlockElement(nextSibling)) { wysihtml5.dom.insert(doc.createElement("br")).after(node); } if (previousSibling && !_isLineBreakOrBlockElement(previousSibling)) { wysihtml5.dom.insert(doc.createElement("br")).before(node); } }, /* wysihtml5.dom.lineBreaks(element).remove(); * * Removes line breaks before and after the given node */ remove: function(options) { var nextSibling = wysihtml5.dom.domNode(node).next({ignoreBlankTexts: true}), previousSibling = wysihtml5.dom.domNode(node).prev({ignoreBlankTexts: true}); if (nextSibling && _isLineBreak(nextSibling)) { nextSibling.parentNode.removeChild(nextSibling); } if (previousSibling && _isLineBreak(previousSibling)) { previousSibling.parentNode.removeChild(previousSibling); } } }; }; })(wysihtml5);;/** * Method to set dom events * * @example * wysihtml5.dom.observe(iframe.contentWindow.document.body, ["focus", "blur"], function() { ... }); */ wysihtml5.dom.observe = function(element, eventNames, handler) { eventNames = typeof(eventNames) === "string" ? [eventNames] : eventNames; var handlerWrapper, eventName, i = 0, length = eventNames.length; for (; i<length; i++) { eventName = eventNames[i]; if (element.addEventListener) { element.addEventListener(eventName, handler, false); } else { handlerWrapper = function(event) { if (!("target" in event)) { event.target = event.srcElement; } event.preventDefault = event.preventDefault || function() { this.returnValue = false; }; event.stopPropagation = event.stopPropagation || function() { this.cancelBubble = true; }; handler.call(element, event); }; element.attachEvent("on" + eventName, handlerWrapper); } } return { stop: function() { var eventName, i = 0, length = eventNames.length; for (; i<length; i++) { eventName = eventNames[i]; if (element.removeEventListener) { element.removeEventListener(eventName, handler, false); } else { element.detachEvent("on" + eventName, handlerWrapper); } } } }; }; ;/** * HTML Sanitizer * Rewrites the HTML based on given rules * * @param {Element|String} elementOrHtml HTML String to be sanitized OR element whose content should be sanitized * @param {Object} [rules] List of rules for rewriting the HTML, if there's no rule for an element it will * be converted to a "span". Each rule is a key/value pair where key is the tag to convert, and value the * desired substitution. * @param {Object} context Document object in which to parse the html, needed to sandbox the parsing * * @return {Element|String} Depends on the elementOrHtml parameter. When html then the sanitized html as string elsewise the element. * * @example * var userHTML = '<div id="foo" onclick="alert(1);"><p><font color="red">foo</font><script>alert(1);</script></p></div>'; * wysihtml5.dom.parse(userHTML, { * tags { * p: "div", // Rename p tags to div tags * font: "span" // Rename font tags to span tags * div: true, // Keep them, also possible (same result when passing: "div" or true) * script: undefined // Remove script elements * } * }); * // => <div><div><span>foo bar</span></div></div> * * var userHTML = '<table><tbody><tr><td>I'm a table!</td></tr></tbody></table>'; * wysihtml5.dom.parse(userHTML); * // => '<span><span><span><span>I'm a table!</span></span></span></span>' * * var userHTML = '<div>foobar<br>foobar</div>'; * wysihtml5.dom.parse(userHTML, { * tags: { * div: undefined, * br: true * } * }); * // => '' * * var userHTML = '<div class="red">foo</div><div class="pink">bar</div>'; * wysihtml5.dom.parse(userHTML, { * classes: { * red: 1, * green: 1 * }, * tags: { * div: { * rename_tag: "p" * } * } * }); * // => '<p class="red">foo</p><p>bar</p>' */ wysihtml5.dom.parse = function(elementOrHtml_current, config_current) { /* TODO: Currently escaped module pattern as otherwise folloowing default swill be shared among multiple editors. * Refactor whole code as this method while workind is kind of awkward too */ /** * It's not possible to use a XMLParser/DOMParser as HTML5 is not always well-formed XML * new DOMParser().parseFromString('<img src="foo.gif">') will cause a parseError since the * node isn't closed * * Therefore we've to use the browser's ordinary HTML parser invoked by setting innerHTML. */ var NODE_TYPE_MAPPING = { "1": _handleElement, "3": _handleText, "8": _handleComment }, // Rename unknown tags to this DEFAULT_NODE_NAME = "span", WHITE_SPACE_REG_EXP = /\s+/, defaultRules = { tags: {}, classes: {} }, currentRules = {}; /** * Iterates over all childs of the element, recreates them, appends them into a document fragment * which later replaces the entire body content */ function parse(elementOrHtml, config) { wysihtml5.lang.object(currentRules).merge(defaultRules).merge(config.rules).get(); var context = config.context || elementOrHtml.ownerDocument || document, fragment = context.createDocumentFragment(), isString = typeof(elementOrHtml) === "string", clearInternals = false, element, newNode, firstChild; if (config.clearInternals === true) { clearInternals = true; } if (isString) { element = wysihtml5.dom.getAsDom(elementOrHtml, context); } else { element = elementOrHtml; } if (currentRules.selectors) { _applySelectorRules(element, currentRules.selectors); } while (element.firstChild) { firstChild = element.firstChild; newNode = _convert(firstChild, config.cleanUp, clearInternals, config.uneditableClass); if (newNode) { fragment.appendChild(newNode); } if (firstChild !== newNode) { element.removeChild(firstChild); } } if (config.unjoinNbsps) { // replace joined non-breakable spaces with unjoined var txtnodes = wysihtml5.dom.getTextNodes(fragment); for (var n = txtnodes.length; n--;) { txtnodes[n].nodeValue = txtnodes[n].nodeValue.replace(/([\S\u00A0])\u00A0/gi, "$1 "); } } // Clear element contents element.innerHTML = ""; // Insert new DOM tree element.appendChild(fragment); return isString ? wysihtml5.quirks.getCorrectInnerHTML(element) : element; } function _convert(oldNode, cleanUp, clearInternals, uneditableClass) { var oldNodeType = oldNode.nodeType, oldChilds = oldNode.childNodes, oldChildsLength = oldChilds.length, method = NODE_TYPE_MAPPING[oldNodeType], i = 0, fragment, newNode, newChild; // Passes directly elemets with uneditable class if (uneditableClass && oldNodeType === 1 && wysihtml5.dom.hasClass(oldNode, uneditableClass)) { return oldNode; } newNode = method && method(oldNode, clearInternals); // Remove or unwrap node in case of return value null or false if (!newNode) { if (newNode === false) { // false defines that tag should be removed but contents should remain (unwrap) fragment = oldNode.ownerDocument.createDocumentFragment(); for (i = oldChildsLength; i--;) { if (oldChilds[i]) { newChild = _convert(oldChilds[i], cleanUp, clearInternals, uneditableClass); if (newChild) { if (oldChilds[i] === newChild) { i--; } fragment.insertBefore(newChild, fragment.firstChild); } } } if (wysihtml5.dom.getStyle("display").from(oldNode) === "block") { fragment.appendChild(oldNode.ownerDocument.createElement("br")); } // TODO: try to minimize surplus spaces if (wysihtml5.lang.array([ "div", "pre", "p", "table", "td", "th", "ul", "ol", "li", "dd", "dl", "footer", "header", "section", "h1", "h2", "h3", "h4", "h5", "h6" ]).contains(oldNode.nodeName.toLowerCase()) && oldNode.parentNode.lastChild !== oldNode) { // add space at first when unwraping non-textflow elements if (!oldNode.nextSibling || oldNode.nextSibling.nodeType !== 3 || !(/^\s/).test(oldNode.nextSibling.nodeValue)) { fragment.appendChild(oldNode.ownerDocument.createTextNode(" ")); } } if (fragment.normalize) { fragment.normalize(); } return fragment; } else { // Remove return null; } } // Converts all childnodes for (i=0; i<oldChildsLength; i++) { if (oldChilds[i]) { newChild = _convert(oldChilds[i], cleanUp, clearInternals, uneditableClass); if (newChild) { if (oldChilds[i] === newChild) { i--; } newNode.appendChild(newChild); } } } // Cleanup senseless <span> elements if (cleanUp && newNode.nodeName.toLowerCase() === DEFAULT_NODE_NAME && (!newNode.childNodes.length || ((/^\s*$/gi).test(newNode.innerHTML) && (clearInternals || (oldNode.className !== "_wysihtml5-temp-placeholder" && oldNode.className !== "rangySelectionBoundary"))) || !newNode.attributes.length) ) { fragment = newNode.ownerDocument.createDocumentFragment(); while (newNode.firstChild) { fragment.appendChild(newNode.firstChild); } if (fragment.normalize) { fragment.normalize(); } return fragment; } if (newNode.normalize) { newNode.normalize(); } return newNode; } function _applySelectorRules (element, selectorRules) { var sel, method, els; for (sel in selectorRules) { if (selectorRules.hasOwnProperty(sel)) { if (wysihtml5.lang.object(selectorRules[sel]).isFunction()) { method = selectorRules[sel]; } else if (typeof(selectorRules[sel]) === "string" && elementHandlingMethods[selectorRules[sel]]) { method = elementHandlingMethods[selectorRules[sel]]; } els = element.querySelectorAll(sel); for (var i = els.length; i--;) { method(els[i]); } } } } function _handleElement(oldNode, clearInternals) { var rule, newNode, tagRules = currentRules.tags, nodeName = oldNode.nodeName.toLowerCase(), scopeName = oldNode.scopeName, renameTag; /** * We already parsed that element * ignore it! (yes, this sometimes happens in IE8 when the html is invalid) */ if (oldNode._wysihtml5) { return null; } oldNode._wysihtml5 = 1; if (oldNode.className === "wysihtml5-temp") { return null; } /** * IE is the only browser who doesn't include the namespace in the * nodeName, that's why we have to prepend it by ourselves * scopeName is a proprietary IE feature * read more here http://msdn.microsoft.com/en-us/library/ms534388(v=vs.85).aspx */ if (scopeName && scopeName != "HTML") { nodeName = scopeName + ":" + nodeName; } /** * Repair node * IE is a bit bitchy when it comes to invalid nested markup which includes unclosed tags * A <p> doesn't need to be closed according HTML4-5 spec, we simply replace it with a <div> to preserve its content and layout */ if ("outerHTML" in oldNode) { if (!wysihtml5.browser.autoClosesUnclosedTags() && oldNode.nodeName === "P" && oldNode.outerHTML.slice(-4).toLowerCase() !== "</p>") { nodeName = "div"; } } if (nodeName in tagRules) { rule = tagRules[nodeName]; if (!rule || rule.remove) { return null; } else if (rule.unwrap) { return false; } rule = typeof(rule) === "string" ? { rename_tag: rule } : rule; } else if (oldNode.firstChild) { rule = { rename_tag: DEFAULT_NODE_NAME }; } else { // Remove empty unknown elements return null; } // tests if type condition is met or node should be removed/unwrapped/renamed if (rule.one_of_type && !_testTypes(oldNode, currentRules, rule.one_of_type, clearInternals)) { if (rule.remove_action) { if (rule.remove_action === "unwrap") { return false; } else if (rule.remove_action === "rename") { renameTag = rule.remove_action_rename_to || DEFAULT_NODE_NAME; } else { return null; } } else { return null; } } newNode = oldNode.ownerDocument.createElement(renameTag || rule.rename_tag || nodeName); _handleAttributes(oldNode, newNode, rule, clearInternals); _handleStyles(oldNode, newNode, rule); oldNode = null; if (newNode.normalize) { newNode.normalize(); } return newNode; } function _testTypes(oldNode, rules, types, clearInternals) { var definition, type; // do not interfere with placeholder span or pasting caret position is not maintained if (oldNode.nodeName === "SPAN" && !clearInternals && (oldNode.className === "_wysihtml5-temp-placeholder" || oldNode.className === "rangySelectionBoundary")) { return true; } for (type in types) { if (types.hasOwnProperty(type) && rules.type_definitions && rules.type_definitions[type]) { definition = rules.type_definitions[type]; if (_testType(oldNode, definition)) { return true; } } } return false; } function array_contains(a, obj) { var i = a.length; while (i--) { if (a[i] === obj) { return true; } } return false; } function _testType(oldNode, definition) { var nodeClasses = oldNode.getAttribute("class"), nodeStyles = oldNode.getAttribute("style"), classesLength, s, s_corrected, a, attr, currentClass, styleProp; // test for methods if (definition.methods) { for (var m in definition.methods) { if (definition.methods.hasOwnProperty(m) && typeCeckMethods[m]) { if (typeCeckMethods[m](oldNode)) { return true; } } } } // test for classes, if one found return true if (nodeClasses && definition.classes) { nodeClasses = nodeClasses.replace(/^\s+/g, '').replace(/\s+$/g, '').split(WHITE_SPACE_REG_EXP); classesLength = nodeClasses.length; for (var i = 0; i < classesLength; i++) { if (definition.classes[nodeClasses[i]]) { return true; } } } // test for styles, if one found return true if (nodeStyles && definition.styles) { nodeStyles = nodeStyles.split(';'); for (s in definition.styles) { if (definition.styles.hasOwnProperty(s)) { for (var sp = nodeStyles.length; sp--;) { styleProp = nodeStyles[sp].split(':'); if (styleProp[0].replace(/\s/g, '').toLowerCase() === s) { if (definition.styles[s] === true || definition.styles[s] === 1 || wysihtml5.lang.array(definition.styles[s]).contains(styleProp[1].replace(/\s/g, '').toLowerCase()) ) { return true; } } } } } } // test for attributes in general against regex match if (definition.attrs) { for (a in definition.attrs) { if (definition.attrs.hasOwnProperty(a)) { attr = wysihtml5.dom.getAttribute(oldNode, a); if (typeof(attr) === "string") { if (attr.search(definition.attrs[a]) > -1) { return true; } } } } } return false; } function _handleStyles(oldNode, newNode, rule) { var s, v; if(rule && rule.keep_styles) { for (s in rule.keep_styles) { if (rule.keep_styles.hasOwnProperty(s)) { v = (s === "float") ? oldNode.style.styleFloat || oldNode.style.cssFloat : oldNode.style[s]; // value can be regex and if so should match or style skipped if (rule.keep_styles[s] instanceof RegExp && !(rule.keep_styles[s].test(v))) { continue; } if (s === "float") { // IE compability newNode.style[(oldNode.style.styleFloat) ? 'styleFloat': 'cssFloat'] = v; } else if (oldNode.style[s]) { newNode.style[s] = v; } } } } }; function _getAttributesBeginningWith(beginning, attributes) { var returnAttributes = []; for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr.indexOf(beginning) === 0) { returnAttributes.push(attr); } } return returnAttributes; } function _checkAttribute(attributeName, attributeValue, methodName, nodeName) { var method = attributeCheckMethods[methodName], newAttributeValue; if (method) { if (attributeValue || (attributeName === "alt" && nodeName == "IMG")) { newAttributeValue = method(attributeValue); if (typeof(newAttributeValue) === "string") { return newAttributeValue; } } } return false; } function _checkAttributes(oldNode, local_attributes) { var globalAttributes = wysihtml5.lang.object(currentRules.attributes || {}).clone(), // global values for check/convert values of attributes checkAttributes = wysihtml5.lang.object(globalAttributes).merge( wysihtml5.lang.object(local_attributes || {}).clone()).get(), attributes = {}, oldAttributes = wysihtml5.dom.getAttributes(oldNode), attributeName, newValue, matchingAttributes; for (attributeName in checkAttributes) { if ((/\*$/).test(attributeName)) { matchingAttributes = _getAttributesBeginningWith(attributeName.slice(0,-1), oldAttributes); for (var i = 0, imax = matchingAttributes.length; i < imax; i++) { newValue = _checkAttribute(matchingAttributes[i], oldAttributes[matchingAttributes[i]], checkAttributes[attributeName], oldNode.nodeName); if (newValue !== false) { attributes[matchingAttributes[i]] = newValue; } } } else { newValue = _checkAttribute(attributeName, oldAttributes[attributeName], checkAttributes[attributeName], oldNode.nodeName); if (newValue !== false) { attributes[attributeName] = newValue; } } } return attributes; } // TODO: refactor. Too long to read function _handleAttributes(oldNode, newNode, rule, clearInternals) { var attributes = {}, // fresh new set of attributes to set on newNode setClass = rule.set_class, // classes to set addClass = rule.add_class, // add classes based on existing attributes addStyle = rule.add_style, // add styles based on existing attributes setAttributes = rule.set_attributes, // attributes to set on the current node allowedClasses = currentRules.classes, i = 0, classes = [], styles = [], newClasses = [], oldClasses = [], classesLength, newClassesLength, currentClass, newClass, attributeName, method; if (setAttributes) { attributes = wysihtml5.lang.object(setAttributes).clone(); } // check/convert values of attributes attributes = wysihtml5.lang.object(attributes).merge(_checkAttributes(oldNode, rule.check_attributes)).get(); if (setClass) { classes.push(setClass); } if (addClass) { for (attributeName in addClass) { method = addClassMethods[addClass[attributeName]]; if (!method) { continue; } newClass = method(wysihtml5.dom.getAttribute(oldNode, attributeName)); if (typeof(newClass) === "string") { classes.push(newClass); } } } if (addStyle) { for (attributeName in addStyle) { method = addStyleMethods[addStyle[attributeName]]; if (!method) { continue; } newStyle = method(wysihtml5.dom.getAttribute(oldNode, attributeName)); if (typeof(newStyle) === "string") { styles.push(newStyle); } } } if (typeof(allowedClasses) === "string" && allowedClasses === "any" && oldNode.getAttribute("class")) { if (currentRules.classes_blacklist) { oldClasses = oldNode.getAttribute("class"); if (oldClasses) { classes = classes.concat(oldClasses.split(WHITE_SPACE_REG_EXP)); } classesLength = classes.length; for (; i<classesLength; i++) { currentClass = classes[i]; if (!currentRules.classes_blacklist[currentClass]) { newClasses.push(currentClass); } } if (newClasses.length) { attributes["class"] = wysihtml5.lang.array(newClasses).unique().join(" "); } } else { attributes["class"] = oldNode.getAttribute("class"); } } else { // make sure that wysihtml5 temp class doesn't get stripped out if (!clearInternals) { allowedClasses["_wysihtml5-temp-placeholder"] = 1; allowedClasses["_rangySelectionBoundary"] = 1; allowedClasses["wysiwyg-tmp-selected-cell"] = 1; } // add old classes last oldClasses = oldNode.getAttribute("class"); if (oldClasses) { classes = classes.concat(oldClasses.split(WHITE_SPACE_REG_EXP)); } classesLength = classes.length; for (; i<classesLength; i++) { currentClass = classes[i]; if (allowedClasses[currentClass]) { newClasses.push(currentClass); } } if (newClasses.length) { attributes["class"] = wysihtml5.lang.array(newClasses).unique().join(" "); } } // remove table selection class if present if (attributes["class"] && clearInternals) { attributes["class"] = attributes["class"].replace("wysiwyg-tmp-selected-cell", ""); if ((/^\s*$/g).test(attributes["class"])) { delete attributes["class"]; } } if (styles.length) { attributes["style"] = wysihtml5.lang.array(styles).unique().join(" "); } // set attributes on newNode for (attributeName in attributes) { // Setting attributes can cause a js error in IE under certain circumstances // eg. on a <img> under https when it's new attribute value is non-https // TODO: Investigate this further and check for smarter handling try { newNode.setAttribute(attributeName, attributes[attributeName]); } catch(e) {} } // IE8 sometimes loses the width/height attributes when those are set before the "src" // so we make sure to set them again if (attributes.src) { if (typeof(attributes.width) !== "undefined") { newNode.setAttribute("width", attributes.width); } if (typeof(attributes.height) !== "undefined") { newNode.setAttribute("height", attributes.height); } } } var INVISIBLE_SPACE_REG_EXP = /\uFEFF/g; function _handleText(oldNode) { var nextSibling = oldNode.nextSibling; if (nextSibling && nextSibling.nodeType === wysihtml5.TEXT_NODE) { // Concatenate text nodes nextSibling.data = oldNode.data.replace(INVISIBLE_SPACE_REG_EXP, "") + nextSibling.data.replace(INVISIBLE_SPACE_REG_EXP, ""); } else { // \uFEFF = wysihtml5.INVISIBLE_SPACE (used as a hack in certain rich text editing situations) var data = oldNode.data.replace(INVISIBLE_SPACE_REG_EXP, ""); return oldNode.ownerDocument.createTextNode(data); } } function _handleComment(oldNode) { if (currentRules.comments) { return oldNode.ownerDocument.createComment(oldNode.nodeValue); } } // ------------ attribute checks ------------ \\ var attributeCheckMethods = { url: (function() { var REG_EXP = /^https?:\/\//i; return function(attributeValue) { if (!attributeValue || !attributeValue.match(REG_EXP)) { return null; } return attributeValue.replace(REG_EXP, function(match) { return match.toLowerCase(); }); }; })(), src: (function() { var REG_EXP = /^(\/|https?:\/\/)/i; return function(attributeValue) { if (!attributeValue || !attributeValue.match(REG_EXP)) { return null; } return attributeValue.replace(REG_EXP, function(match) { return match.toLowerCase(); }); }; })(), href: (function() { var REG_EXP = /^(#|\/|https?:\/\/|mailto:)/i; return function(attributeValue) { if (!attributeValue || !attributeValue.match(REG_EXP)) { return null; } return attributeValue.replace(REG_EXP, function(match) { return match.toLowerCase(); }); }; })(), alt: (function() { var REG_EXP = /[^ a-z0-9_\-]/gi; return function(attributeValue) { if (!attributeValue) { return ""; } return attributeValue.replace(REG_EXP, ""); }; })(), numbers: (function() { var REG_EXP = /\D/g; return function(attributeValue) { attributeValue = (attributeValue || "").replace(REG_EXP, ""); return attributeValue || null; }; })(), any: (function() { return function(attributeValue) { return attributeValue; }; })() }; // ------------ style converter (converts an html attribute to a style) ------------ \\ var addStyleMethods = { align_text: (function() { var mapping = { left: "text-align: left;", right: "text-align: right;", center: "text-align: center;" }; return function(attributeValue) { return mapping[String(attributeValue).toLowerCase()]; }; })(), }; // ------------ class converter (converts an html attribute to a class name) ------------ \\ var addClassMethods = { align_img: (function() { var mapping = { left: "wysiwyg-float-left", right: "wysiwyg-float-right" }; return function(attributeValue) { return mapping[String(attributeValue).toLowerCase()]; }; })(), align_text: (function() { var mapping = { left: "wysiwyg-text-align-left", right: "wysiwyg-text-align-right", center: "wysiwyg-text-align-center", justify: "wysiwyg-text-align-justify" }; return function(attributeValue) { return mapping[String(attributeValue).toLowerCase()]; }; })(), clear_br: (function() { var mapping = { left: "wysiwyg-clear-left", right: "wysiwyg-clear-right", both: "wysiwyg-clear-both", all: "wysiwyg-clear-both" }; return function(attributeValue) { return mapping[String(attributeValue).toLowerCase()]; }; })(), size_font: (function() { var mapping = { "1": "wysiwyg-font-size-xx-small", "2": "wysiwyg-font-size-small", "3": "wysiwyg-font-size-medium", "4": "wysiwyg-font-size-large", "5": "wysiwyg-font-size-x-large", "6": "wysiwyg-font-size-xx-large", "7": "wysiwyg-font-size-xx-large", "-": "wysiwyg-font-size-smaller", "+": "wysiwyg-font-size-larger" }; return function(attributeValue) { return mapping[String(attributeValue).charAt(0)]; }; })() }; // checks if element is possibly visible var typeCeckMethods = { has_visible_contet: (function() { var txt, isVisible = false, visibleElements = ['img', 'video', 'picture', 'br', 'script', 'noscript', 'style', 'table', 'iframe', 'object', 'embed', 'audio', 'svg', 'input', 'button', 'select','textarea', 'canvas']; return function(el) { // has visible innertext. so is visible txt = (el.innerText || el.textContent).replace(/\s/g, ''); if (txt && txt.length > 0) { return true; } // matches list of visible dimensioned elements for (var i = visibleElements.length; i--;) { if (el.querySelector(visibleElements[i])) { return true; } } // try to measure dimesions in last resort. (can find only of elements in dom) if (el.offsetWidth && el.offsetWidth > 0 && el.offsetHeight && el.offsetHeight > 0) { return true; } return false; }; })() }; var elementHandlingMethods = { unwrap: function (element) { wysihtml5.dom.unwrap(element); }, remove: function (element) { element.parentNode.removeChild(element); } }; return parse(elementOrHtml_current, config_current); }; ;/** * Checks for empty text node childs and removes them * * @param {Element} node The element in which to cleanup * @example * wysihtml5.dom.removeEmptyTextNodes(element); */ wysihtml5.dom.removeEmptyTextNodes = function(node) { var childNode, childNodes = wysihtml5.lang.array(node.childNodes).get(), childNodesLength = childNodes.length, i = 0; for (; i<childNodesLength; i++) { childNode = childNodes[i]; if (childNode.nodeType === wysihtml5.TEXT_NODE && childNode.data === "") { childNode.parentNode.removeChild(childNode); } } }; ;/** * Renames an element (eg. a <div> to a <p>) and keeps its childs * * @param {Element} element The list element which should be renamed * @param {Element} newNodeName The desired tag name * * @example * <!-- Assume the following dom: --> * <ul id="list"> * <li>eminem</li> * <li>dr. dre</li> * <li>50 Cent</li> * </ul> * * <script> * wysihtml5.dom.renameElement(document.getElementById("list"), "ol"); * </script> * * <!-- Will result in: --> * <ol> * <li>eminem</li> * <li>dr. dre</li> * <li>50 Cent</li> * </ol> */ wysihtml5.dom.renameElement = function(element, newNodeName) { var newElement = element.ownerDocument.createElement(newNodeName), firstChild; while (firstChild = element.firstChild) { newElement.appendChild(firstChild); } wysihtml5.dom.copyAttributes(["align", "className"]).from(element).to(newElement); element.parentNode.replaceChild(newElement, element); return newElement; }; ;/** * Takes an element, removes it and replaces it with it's childs * * @param {Object} node The node which to replace with it's child nodes * @example * <div id="foo"> * <span>hello</span> * </div> * <script> * // Remove #foo and replace with it's children * wysihtml5.dom.replaceWithChildNodes(document.getElementById("foo")); * </script> */ wysihtml5.dom.replaceWithChildNodes = function(node) { if (!node.parentNode) { return; } if (!node.firstChild) { node.parentNode.removeChild(node); return; } var fragment = node.ownerDocument.createDocumentFragment(); while (node.firstChild) { fragment.appendChild(node.firstChild); } node.parentNode.replaceChild(fragment, node); node = fragment = null; }; ;/** * Unwraps an unordered/ordered list * * @param {Element} element The list element which should be unwrapped * * @example * <!-- Assume the following dom: --> * <ul id="list"> * <li>eminem</li> * <li>dr. dre</li> * <li>50 Cent</li> * </ul> * * <script> * wysihtml5.dom.resolveList(document.getElementById("list")); * </script> * * <!-- Will result in: --> * eminem<br> * dr. dre<br> * 50 Cent<br> */ (function(dom) { function _isBlockElement(node) { return dom.getStyle("display").from(node) === "block"; } function _isLineBreak(node) { return node.nodeName === "BR"; } function _appendLineBreak(element) { var lineBreak = element.ownerDocument.createElement("br"); element.appendChild(lineBreak); } function resolveList(list, useLineBreaks) { if (!list.nodeName.match(/^(MENU|UL|OL)$/)) { return; } var doc = list.ownerDocument, fragment = doc.createDocumentFragment(), previousSibling = wysihtml5.dom.domNode(list).prev({ignoreBlankTexts: true}), firstChild, lastChild, isLastChild, shouldAppendLineBreak, paragraph, listItem; if (useLineBreaks) { // Insert line break if list is after a non-block element if (previousSibling && !_isBlockElement(previousSibling) && !_isLineBreak(previousSibling)) { _appendLineBreak(fragment); } while (listItem = (list.firstElementChild || list.firstChild)) { lastChild = listItem.lastChild; while (firstChild = listItem.firstChild) { isLastChild = firstChild === lastChild; // This needs to be done before appending it to the fragment, as it otherwise will lose style information shouldAppendLineBreak = isLastChild && !_isBlockElement(firstChild) && !_isLineBreak(firstChild); fragment.appendChild(firstChild); if (shouldAppendLineBreak) { _appendLineBreak(fragment); } } listItem.parentNode.removeChild(listItem); } } else { while (listItem = (list.firstElementChild || list.firstChild)) { if (listItem.querySelector && listItem.querySelector("div, p, ul, ol, menu, blockquote, h1, h2, h3, h4, h5, h6")) { while (firstChild = listItem.firstChild) { fragment.appendChild(firstChild); } } else { paragraph = doc.createElement("p"); while (firstChild = listItem.firstChild) { paragraph.appendChild(firstChild); } fragment.appendChild(paragraph); } listItem.parentNode.removeChild(listItem); } } list.parentNode.replaceChild(fragment, list); } dom.resolveList = resolveList; })(wysihtml5.dom); ;/** * Sandbox for executing javascript, parsing css styles and doing dom operations in a secure way * * Browser Compatibility: * - Secure in MSIE 6+, but only when the user hasn't made changes to his security level "restricted" * - Partially secure in other browsers (Firefox, Opera, Safari, Chrome, ...) * * Please note that this class can't benefit from the HTML5 sandbox attribute for the following reasons: * - sandboxing doesn't work correctly with inlined content (src="javascript:'<html>...</html>'") * - sandboxing of physical documents causes that the dom isn't accessible anymore from the outside (iframe.contentWindow, ...) * - setting the "allow-same-origin" flag would fix that, but then still javascript and dom events refuse to fire * - therefore the "allow-scripts" flag is needed, which then would deactivate any security, as the js executed inside the iframe * can do anything as if the sandbox attribute wasn't set * * @param {Function} [readyCallback] Method that gets invoked when the sandbox is ready * @param {Object} [config] Optional parameters * * @example * new wysihtml5.dom.Sandbox(function(sandbox) { * sandbox.getWindow().document.body.innerHTML = '<img src=foo.gif onerror="alert(document.cookie)">'; * }); */ (function(wysihtml5) { var /** * Default configuration */ doc = document, /** * Properties to unset/protect on the window object */ windowProperties = [ "parent", "top", "opener", "frameElement", "frames", "localStorage", "globalStorage", "sessionStorage", "indexedDB" ], /** * Properties on the window object which are set to an empty function */ windowProperties2 = [ "open", "close", "openDialog", "showModalDialog", "alert", "confirm", "prompt", "openDatabase", "postMessage", "XMLHttpRequest", "XDomainRequest" ], /** * Properties to unset/protect on the document object */ documentProperties = [ "referrer", "write", "open", "close" ]; wysihtml5.dom.Sandbox = Base.extend( /** @scope wysihtml5.dom.Sandbox.prototype */ { constructor: function(readyCallback, config) { this.callback = readyCallback || wysihtml5.EMPTY_FUNCTION; this.config = wysihtml5.lang.object({}).merge(config).get(); this.editableArea = this._createIframe(); }, insertInto: function(element) { if (typeof(element) === "string") { element = doc.getElementById(element); } element.appendChild(this.editableArea); }, getIframe: function() { return this.editableArea; }, getWindow: function() { this._readyError(); }, getDocument: function() { this._readyError(); }, destroy: function() { var iframe = this.getIframe(); iframe.parentNode.removeChild(iframe); }, _readyError: function() { throw new Error("wysihtml5.Sandbox: Sandbox iframe isn't loaded yet"); }, /** * Creates the sandbox iframe * * Some important notes: * - We can't use HTML5 sandbox for now: * setting it causes that the iframe's dom can't be accessed from the outside * Therefore we need to set the "allow-same-origin" flag which enables accessing the iframe's dom * But then there's another problem, DOM events (focus, blur, change, keypress, ...) aren't fired. * In order to make this happen we need to set the "allow-scripts" flag. * A combination of allow-scripts and allow-same-origin is almost the same as setting no sandbox attribute at all. * - Chrome & Safari, doesn't seem to support sandboxing correctly when the iframe's html is inlined (no physical document) * - IE needs to have the security="restricted" attribute set before the iframe is * inserted into the dom tree * - Believe it or not but in IE "security" in document.createElement("iframe") is false, even * though it supports it * - When an iframe has security="restricted", in IE eval() & execScript() don't work anymore * - IE doesn't fire the onload event when the content is inlined in the src attribute, therefore we rely * on the onreadystatechange event */ _createIframe: function() { var that = this, iframe = doc.createElement("iframe"); iframe.className = "wysihtml5-sandbox"; wysihtml5.dom.setAttributes({ "security": "restricted", "allowtransparency": "true", "frameborder": 0, "width": 0, "height": 0, "marginwidth": 0, "marginheight": 0 }).on(iframe); // Setting the src like this prevents ssl warnings in IE6 if (wysihtml5.browser.throwsMixedContentWarningWhenIframeSrcIsEmpty()) { iframe.src = "javascript:'<html></html>'"; } iframe.onload = function() { iframe.onreadystatechange = iframe.onload = null; that._onLoadIframe(iframe); }; iframe.onreadystatechange = function() { if (/loaded|complete/.test(iframe.readyState)) { iframe.onreadystatechange = iframe.onload = null; that._onLoadIframe(iframe); } }; return iframe; }, /** * Callback for when the iframe has finished loading */ _onLoadIframe: function(iframe) { // don't resume when the iframe got unloaded (eg. by removing it from the dom) if (!wysihtml5.dom.contains(doc.documentElement, iframe)) { return; } var that = this, iframeWindow = iframe.contentWindow, iframeDocument = iframe.contentWindow.document, charset = doc.characterSet || doc.charset || "utf-8", sandboxHtml = this._getHtml({ charset: charset, stylesheets: this.config.stylesheets }); // Create the basic dom tree including proper DOCTYPE and charset iframeDocument.open("text/html", "replace"); iframeDocument.write(sandboxHtml); iframeDocument.close(); this.getWindow = function() { return iframe.contentWindow; }; this.getDocument = function() { return iframe.contentWindow.document; }; // Catch js errors and pass them to the parent's onerror event // addEventListener("error") doesn't work properly in some browsers // TODO: apparently this doesn't work in IE9! iframeWindow.onerror = function(errorMessage, fileName, lineNumber) { throw new Error("wysihtml5.Sandbox: " + errorMessage, fileName, lineNumber); }; if (!wysihtml5.browser.supportsSandboxedIframes()) { // Unset a bunch of sensitive variables // Please note: This isn't hack safe! // It more or less just takes care of basic attacks and prevents accidental theft of sensitive information // IE is secure though, which is the most important thing, since IE is the only browser, who // takes over scripts & styles into contentEditable elements when copied from external websites // or applications (Microsoft Word, ...) var i, length; for (i=0, length=windowProperties.length; i<length; i++) { this._unset(iframeWindow, windowProperties[i]); } for (i=0, length=windowProperties2.length; i<length; i++) { this._unset(iframeWindow, windowProperties2[i], wysihtml5.EMPTY_FUNCTION); } for (i=0, length=documentProperties.length; i<length; i++) { this._unset(iframeDocument, documentProperties[i]); } // This doesn't work in Safari 5 // See http://stackoverflow.com/questions/992461/is-it-possible-to-override-document-cookie-in-webkit this._unset(iframeDocument, "cookie", "", true); } this.loaded = true; // Trigger the callback setTimeout(function() { that.callback(that); }, 0); }, _getHtml: function(templateVars) { var stylesheets = templateVars.stylesheets, html = "", i = 0, length; stylesheets = typeof(stylesheets) === "string" ? [stylesheets] : stylesheets; if (stylesheets) { length = stylesheets.length; for (; i<length; i++) { html += '<link rel="stylesheet" href="' + stylesheets[i] + '">'; } } templateVars.stylesheets = html; return wysihtml5.lang.string( '<!DOCTYPE html><html><head>' + '<meta charset="#{charset}">#{stylesheets}</head>' + '<body></body></html>' ).interpolate(templateVars); }, /** * Method to unset/override existing variables * @example * // Make cookie unreadable and unwritable * this._unset(document, "cookie", "", true); */ _unset: function(object, property, value, setter) { try { object[property] = value; } catch(e) {} try { object.__defineGetter__(property, function() { return value; }); } catch(e) {} if (setter) { try { object.__defineSetter__(property, function() {}); } catch(e) {} } if (!wysihtml5.browser.crashesWhenDefineProperty(property)) { try { var config = { get: function() { return value; } }; if (setter) { config.set = function() {}; } Object.defineProperty(object, property, config); } catch(e) {} } } }); })(wysihtml5); ;(function(wysihtml5) { var doc = document; wysihtml5.dom.ContentEditableArea = Base.extend({ getContentEditable: function() { return this.element; }, getWindow: function() { return this.element.ownerDocument.defaultView; }, getDocument: function() { return this.element.ownerDocument; }, constructor: function(readyCallback, config, contentEditable) { this.callback = readyCallback || wysihtml5.EMPTY_FUNCTION; this.config = wysihtml5.lang.object({}).merge(config).get(); if (contentEditable) { this.element = this._bindElement(contentEditable); } else { this.element = this._createElement(); } }, // creates a new contenteditable and initiates it _createElement: function() { var element = doc.createElement("div"); element.className = "wysihtml5-sandbox"; this._loadElement(element); return element; }, // initiates an allready existent contenteditable _bindElement: function(contentEditable) { contentEditable.className = (contentEditable.className && contentEditable.className != '') ? contentEditable.className + " wysihtml5-sandbox" : "wysihtml5-sandbox"; this._loadElement(contentEditable, true); return contentEditable; }, _loadElement: function(element, contentExists) { var that = this; if (!contentExists) { var sandboxHtml = this._getHtml(); element.innerHTML = sandboxHtml; } this.getWindow = function() { return element.ownerDocument.defaultView; }; this.getDocument = function() { return element.ownerDocument; }; // Catch js errors and pass them to the parent's onerror event // addEventListener("error") doesn't work properly in some browsers // TODO: apparently this doesn't work in IE9! // TODO: figure out and bind the errors logic for contenteditble mode /*iframeWindow.onerror = function(errorMessage, fileName, lineNumber) { throw new Error("wysihtml5.Sandbox: " + errorMessage, fileName, lineNumber); } */ this.loaded = true; // Trigger the callback setTimeout(function() { that.callback(that); }, 0); }, _getHtml: function(templateVars) { return ''; } }); })(wysihtml5); ;(function() { var mapping = { "className": "class" }; wysihtml5.dom.setAttributes = function(attributes) { return { on: function(element) { for (var i in attributes) { element.setAttribute(mapping[i] || i, attributes[i]); } } }; }; })(); ;wysihtml5.dom.setStyles = function(styles) { return { on: function(element) { var style = element.style; if (typeof(styles) === "string") { style.cssText += ";" + styles; return; } for (var i in styles) { if (i === "float") { style.cssFloat = styles[i]; style.styleFloat = styles[i]; } else { style[i] = styles[i]; } } } }; }; ;/** * Simulate HTML5 placeholder attribute * * Needed since * - div[contentEditable] elements don't support it * - older browsers (such as IE8 and Firefox 3.6) don't support it at all * * @param {Object} parent Instance of main wysihtml5.Editor class * @param {Element} view Instance of wysihtml5.views.* class * @param {String} placeholderText * * @example * wysihtml.dom.simulatePlaceholder(this, composer, "Foobar"); */ (function(dom) { dom.simulatePlaceholder = function(editor, view, placeholderText) { var CLASS_NAME = "placeholder", unset = function() { var composerIsVisible = view.element.offsetWidth > 0 && view.element.offsetHeight > 0; if (view.hasPlaceholderSet()) { view.clear(); view.element.focus(); if (composerIsVisible ) { setTimeout(function() { var sel = view.selection.getSelection(); if (!sel.focusNode || !sel.anchorNode) { view.selection.selectNode(view.element.firstChild || view.element); } }, 0); } } view.placeholderSet = false; dom.removeClass(view.element, CLASS_NAME); }, set = function() { if (view.isEmpty()) { view.placeholderSet = true; view.setValue(placeholderText); dom.addClass(view.element, CLASS_NAME); } }; editor .on("set_placeholder", set) .on("unset_placeholder", unset) .on("focus:composer", unset) .on("paste:composer", unset) .on("blur:composer", set); set(); }; })(wysihtml5.dom); ;(function(dom) { var documentElement = document.documentElement; if ("textContent" in documentElement) { dom.setTextContent = function(element, text) { element.textContent = text; }; dom.getTextContent = function(element) { return element.textContent; }; } else if ("innerText" in documentElement) { dom.setTextContent = function(element, text) { element.innerText = text; }; dom.getTextContent = function(element) { return element.innerText; }; } else { dom.setTextContent = function(element, text) { element.nodeValue = text; }; dom.getTextContent = function(element) { return element.nodeValue; }; } })(wysihtml5.dom); ;/** * Get a set of attribute from one element * * IE gives wrong results for hasAttribute/getAttribute, for example: * var td = document.createElement("td"); * td.getAttribute("rowspan"); // => "1" in IE * * Therefore we have to check the element's outerHTML for the attribute */ wysihtml5.dom.getAttribute = function(node, attributeName) { var HAS_GET_ATTRIBUTE_BUG = !wysihtml5.browser.supportsGetAttributeCorrectly(); attributeName = attributeName.toLowerCase(); var nodeName = node.nodeName; if (nodeName == "IMG" && attributeName == "src" && wysihtml5.dom.isLoadedImage(node) === true) { // Get 'src' attribute value via object property since this will always contain the // full absolute url (http://...) // this fixes a very annoying bug in firefox (ver 3.6 & 4) and IE 8 where images copied from the same host // will have relative paths, which the sanitizer strips out (see attributeCheckMethods.url) return node.src; } else if (HAS_GET_ATTRIBUTE_BUG && "outerHTML" in node) { // Don't trust getAttribute/hasAttribute in IE 6-8, instead check the element's outerHTML var outerHTML = node.outerHTML.toLowerCase(), // TODO: This might not work for attributes without value: <input disabled> hasAttribute = outerHTML.indexOf(" " + attributeName + "=") != -1; return hasAttribute ? node.getAttribute(attributeName) : null; } else{ return node.getAttribute(attributeName); } }; ;/** * Get all attributes of an element * * IE gives wrong results for hasAttribute/getAttribute, for example: * var td = document.createElement("td"); * td.getAttribute("rowspan"); // => "1" in IE * * Therefore we have to check the element's outerHTML for the attribute */ wysihtml5.dom.getAttributes = function(node) { var HAS_GET_ATTRIBUTE_BUG = !wysihtml5.browser.supportsGetAttributeCorrectly(), nodeName = node.nodeName, attributes = [], attr; for (attr in node.attributes) { if ((node.attributes.hasOwnProperty && node.attributes.hasOwnProperty(attr)) || (!node.attributes.hasOwnProperty && Object.prototype.hasOwnProperty.call(node.attributes, attr))) { if (node.attributes[attr].specified) { if (nodeName == "IMG" && node.attributes[attr].name.toLowerCase() == "src" && wysihtml5.dom.isLoadedImage(node) === true) { attributes['src'] = node.src; } else if (wysihtml5.lang.array(['rowspan', 'colspan']).contains(node.attributes[attr].name.toLowerCase()) && HAS_GET_ATTRIBUTE_BUG) { if (node.attributes[attr].value !== 1) { attributes[node.attributes[attr].name] = node.attributes[attr].value; } } else { attributes[node.attributes[attr].name] = node.attributes[attr].value; } } } } return attributes; };;/** * Check whether the given node is a proper loaded image * FIXME: Returns undefined when unknown (Chrome, Safari) */ wysihtml5.dom.isLoadedImage = function (node) { try { return node.complete && !node.mozMatchesSelector(":-moz-broken"); } catch(e) { if (node.complete && node.readyState === "complete") { return true; } } }; ;(function(wysihtml5) { var api = wysihtml5.dom; var MapCell = function(cell) { this.el = cell; this.isColspan= false; this.isRowspan= false; this.firstCol= true; this.lastCol= true; this.firstRow= true; this.lastRow= true; this.isReal= true; this.spanCollection= []; this.modified = false; }; var TableModifyerByCell = function (cell, table) { if (cell) { this.cell = cell; this.table = api.getParentElement(cell, { nodeName: ["TABLE"] }); } else if (table) { this.table = table; this.cell = this.table.querySelectorAll('th, td')[0]; } }; function queryInList(list, query) { var ret = [], q; for (var e = 0, len = list.length; e < len; e++) { q = list[e].querySelectorAll(query); if (q) { for(var i = q.length; i--; ret.unshift(q[i])); } } return ret; } function removeElement(el) { el.parentNode.removeChild(el); } function insertAfter(referenceNode, newNode) { referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); } function nextNode(node, tag) { var element = node.nextSibling; while (element.nodeType !=1) { element = element.nextSibling; if (!tag || tag == element.tagName.toLowerCase()) { return element; } } return null; } TableModifyerByCell.prototype = { addSpannedCellToMap: function(cell, map, r, c, cspan, rspan) { var spanCollect = [], rmax = r + ((rspan) ? parseInt(rspan, 10) - 1 : 0), cmax = c + ((cspan) ? parseInt(cspan, 10) - 1 : 0); for (var rr = r; rr <= rmax; rr++) { if (typeof map[rr] == "undefined") { map[rr] = []; } for (var cc = c; cc <= cmax; cc++) { map[rr][cc] = new MapCell(cell); map[rr][cc].isColspan = (cspan && parseInt(cspan, 10) > 1); map[rr][cc].isRowspan = (rspan && parseInt(rspan, 10) > 1); map[rr][cc].firstCol = cc == c; map[rr][cc].lastCol = cc == cmax; map[rr][cc].firstRow = rr == r; map[rr][cc].lastRow = rr == rmax; map[rr][cc].isReal = cc == c && rr == r; map[rr][cc].spanCollection = spanCollect; spanCollect.push(map[rr][cc]); } } }, setCellAsModified: function(cell) { cell.modified = true; if (cell.spanCollection.length > 0) { for (var s = 0, smax = cell.spanCollection.length; s < smax; s++) { cell.spanCollection[s].modified = true; } } }, setTableMap: function() { var map = []; var tableRows = this.getTableRows(), ridx, row, cells, cidx, cell, c, cspan, rspan; for (ridx = 0; ridx < tableRows.length; ridx++) { row = tableRows[ridx]; cells = this.getRowCells(row); c = 0; if (typeof map[ridx] == "undefined") { map[ridx] = []; } for (cidx = 0; cidx < cells.length; cidx++) { cell = cells[cidx]; // If cell allready set means it is set by col or rowspan, // so increase cols index until free col is found while (typeof map[ridx][c] != "undefined") { c++; } cspan = api.getAttribute(cell, 'colspan'); rspan = api.getAttribute(cell, 'rowspan'); if (cspan || rspan) { this.addSpannedCellToMap(cell, map, ridx, c, cspan, rspan); c = c + ((cspan) ? parseInt(cspan, 10) : 1); } else { map[ridx][c] = new MapCell(cell); c++; } } } this.map = map; return map; }, getRowCells: function(row) { var inlineTables = this.table.querySelectorAll('table'), inlineCells = (inlineTables) ? queryInList(inlineTables, 'th, td') : [], allCells = row.querySelectorAll('th, td'), tableCells = (inlineCells.length > 0) ? wysihtml5.lang.array(allCells).without(inlineCells) : allCells; return tableCells; }, getTableRows: function() { var inlineTables = this.table.querySelectorAll('table'), inlineRows = (inlineTables) ? queryInList(inlineTables, 'tr') : [], allRows = this.table.querySelectorAll('tr'), tableRows = (inlineRows.length > 0) ? wysihtml5.lang.array(allRows).without(inlineRows) : allRows; return tableRows; }, getMapIndex: function(cell) { var r_length = this.map.length, c_length = (this.map && this.map[0]) ? this.map[0].length : 0; for (var r_idx = 0;r_idx < r_length; r_idx++) { for (var c_idx = 0;c_idx < c_length; c_idx++) { if (this.map[r_idx][c_idx].el === cell) { return {'row': r_idx, 'col': c_idx}; } } } return false; }, getElementAtIndex: function(idx) { this.setTableMap(); if (this.map[idx.row] && this.map[idx.row][idx.col] && this.map[idx.row][idx.col].el) { return this.map[idx.row][idx.col].el; } return null; }, getMapElsTo: function(to_cell) { var els = []; this.setTableMap(); this.idx_start = this.getMapIndex(this.cell); this.idx_end = this.getMapIndex(to_cell); // switch indexes if start is bigger than end if (this.idx_start.row > this.idx_end.row || (this.idx_start.row == this.idx_end.row && this.idx_start.col > this.idx_end.col)) { var temp_idx = this.idx_start; this.idx_start = this.idx_end; this.idx_end = temp_idx; } if (this.idx_start.col > this.idx_end.col) { var temp_cidx = this.idx_start.col; this.idx_start.col = this.idx_end.col; this.idx_end.col = temp_cidx; } if (this.idx_start != null && this.idx_end != null) { for (var row = this.idx_start.row, maxr = this.idx_end.row; row <= maxr; row++) { for (var col = this.idx_start.col, maxc = this.idx_end.col; col <= maxc; col++) { els.push(this.map[row][col].el); } } } return els; }, orderSelectionEnds: function(secondcell) { this.setTableMap(); this.idx_start = this.getMapIndex(this.cell); this.idx_end = this.getMapIndex(secondcell); // switch indexes if start is bigger than end if (this.idx_start.row > this.idx_end.row || (this.idx_start.row == this.idx_end.row && this.idx_start.col > this.idx_end.col)) { var temp_idx = this.idx_start; this.idx_start = this.idx_end; this.idx_end = temp_idx; } if (this.idx_start.col > this.idx_end.col) { var temp_cidx = this.idx_start.col; this.idx_start.col = this.idx_end.col; this.idx_end.col = temp_cidx; } return { "start": this.map[this.idx_start.row][this.idx_start.col].el, "end": this.map[this.idx_end.row][this.idx_end.col].el }; }, createCells: function(tag, nr, attrs) { var doc = this.table.ownerDocument, frag = doc.createDocumentFragment(), cell; for (var i = 0; i < nr; i++) { cell = doc.createElement(tag); if (attrs) { for (var attr in attrs) { if (attrs.hasOwnProperty(attr)) { cell.setAttribute(attr, attrs[attr]); } } } // add non breaking space cell.appendChild(document.createTextNode("\u00a0")); frag.appendChild(cell); } return frag; }, // Returns next real cell (not part of spanned cell unless first) on row if selected index is not real. I no real cells -1 will be returned correctColIndexForUnreals: function(col, row) { var r = this.map[row], corrIdx = -1; for (var i = 0, max = col; i < col; i++) { if (r[i].isReal){ corrIdx++; } } return corrIdx; }, getLastNewCellOnRow: function(row, rowLimit) { var cells = this.getRowCells(row), cell, idx; for (var cidx = 0, cmax = cells.length; cidx < cmax; cidx++) { cell = cells[cidx]; idx = this.getMapIndex(cell); if (idx === false || (typeof rowLimit != "undefined" && idx.row != rowLimit)) { return cell; } } return null; }, removeEmptyTable: function() { var cells = this.table.querySelectorAll('td, th'); if (!cells || cells.length == 0) { removeElement(this.table); return true; } else { return false; } }, // Splits merged cell on row to unique cells splitRowToCells: function(cell) { if (cell.isColspan) { var colspan = parseInt(api.getAttribute(cell.el, 'colspan') || 1, 10), cType = cell.el.tagName.toLowerCase(); if (colspan > 1) { var newCells = this.createCells(cType, colspan -1); insertAfter(cell.el, newCells); } cell.el.removeAttribute('colspan'); } }, getRealRowEl: function(force, idx) { var r = null, c = null; idx = idx || this.idx; for (var cidx = 0, cmax = this.map[idx.row].length; cidx < cmax; cidx++) { c = this.map[idx.row][cidx]; if (c.isReal) { r = api.getParentElement(c.el, { nodeName: ["TR"] }); if (r) { return r; } } } if (r === null && force) { r = api.getParentElement(this.map[idx.row][idx.col].el, { nodeName: ["TR"] }) || null; } return r; }, injectRowAt: function(row, col, colspan, cType, c) { var r = this.getRealRowEl(false, {'row': row, 'col': col}), new_cells = this.createCells(cType, colspan); if (r) { var n_cidx = this.correctColIndexForUnreals(col, row); if (n_cidx >= 0) { insertAfter(this.getRowCells(r)[n_cidx], new_cells); } else { r.insertBefore(new_cells, r.firstChild); } } else { var rr = this.table.ownerDocument.createElement('tr'); rr.appendChild(new_cells); insertAfter(api.getParentElement(c.el, { nodeName: ["TR"] }), rr); } }, canMerge: function(to) { this.to = to; this.setTableMap(); this.idx_start = this.getMapIndex(this.cell); this.idx_end = this.getMapIndex(this.to); // switch indexes if start is bigger than end if (this.idx_start.row > this.idx_end.row || (this.idx_start.row == this.idx_end.row && this.idx_start.col > this.idx_end.col)) { var temp_idx = this.idx_start; this.idx_start = this.idx_end; this.idx_end = temp_idx; } if (this.idx_start.col > this.idx_end.col) { var temp_cidx = this.idx_start.col; this.idx_start.col = this.idx_end.col; this.idx_end.col = temp_cidx; } for (var row = this.idx_start.row, maxr = this.idx_end.row; row <= maxr; row++) { for (var col = this.idx_start.col, maxc = this.idx_end.col; col <= maxc; col++) { if (this.map[row][col].isColspan || this.map[row][col].isRowspan) { return false; } } } return true; }, decreaseCellSpan: function(cell, span) { var nr = parseInt(api.getAttribute(cell.el, span), 10) - 1; if (nr >= 1) { cell.el.setAttribute(span, nr); } else { cell.el.removeAttribute(span); if (span == 'colspan') { cell.isColspan = false; } if (span == 'rowspan') { cell.isRowspan = false; } cell.firstCol = true; cell.lastCol = true; cell.firstRow = true; cell.lastRow = true; cell.isReal = true; } }, removeSurplusLines: function() { var row, cell, ridx, rmax, cidx, cmax, allRowspan; this.setTableMap(); if (this.map) { ridx = 0; rmax = this.map.length; for (;ridx < rmax; ridx++) { row = this.map[ridx]; allRowspan = true; cidx = 0; cmax = row.length; for (; cidx < cmax; cidx++) { cell = row[cidx]; if (!(api.getAttribute(cell.el, "rowspan") && parseInt(api.getAttribute(cell.el, "rowspan"), 10) > 1 && cell.firstRow !== true)) { allRowspan = false; break; } } if (allRowspan) { cidx = 0; for (; cidx < cmax; cidx++) { this.decreaseCellSpan(row[cidx], 'rowspan'); } } } // remove rows without cells var tableRows = this.getTableRows(); ridx = 0; rmax = tableRows.length; for (;ridx < rmax; ridx++) { row = tableRows[ridx]; if (row.childNodes.length == 0 && (/^\s*$/.test(row.textContent || row.innerText))) { removeElement(row); } } } }, fillMissingCells: function() { var r_max = 0, c_max = 0, prevcell = null; this.setTableMap(); if (this.map) { // find maximal dimensions of broken table r_max = this.map.length; for (var ridx = 0; ridx < r_max; ridx++) { if (this.map[ridx].length > c_max) { c_max = this.map[ridx].length; } } for (var row = 0; row < r_max; row++) { for (var col = 0; col < c_max; col++) { if (this.map[row] && !this.map[row][col]) { if (col > 0) { this.map[row][col] = new MapCell(this.createCells('td', 1)); prevcell = this.map[row][col-1]; if (prevcell && prevcell.el && prevcell.el.parent) { // if parent does not exist element is removed from dom insertAfter(this.map[row][col-1].el, this.map[row][col].el); } } } } } } }, rectify: function() { if (!this.removeEmptyTable()) { this.removeSurplusLines(); this.fillMissingCells(); return true; } else { return false; } }, unmerge: function() { if (this.rectify()) { this.setTableMap(); this.idx = this.getMapIndex(this.cell); if (this.idx) { var thisCell = this.map[this.idx.row][this.idx.col], colspan = (api.getAttribute(thisCell.el, "colspan")) ? parseInt(api.getAttribute(thisCell.el, "colspan"), 10) : 1, cType = thisCell.el.tagName.toLowerCase(); if (thisCell.isRowspan) { var rowspan = parseInt(api.getAttribute(thisCell.el, "rowspan"), 10); if (rowspan > 1) { for (var nr = 1, maxr = rowspan - 1; nr <= maxr; nr++){ this.injectRowAt(this.idx.row + nr, this.idx.col, colspan, cType, thisCell); } } thisCell.el.removeAttribute('rowspan'); } this.splitRowToCells(thisCell); } } }, // merges cells from start cell (defined in creating obj) to "to" cell merge: function(to) { if (this.rectify()) { if (this.canMerge(to)) { var rowspan = this.idx_end.row - this.idx_start.row + 1, colspan = this.idx_end.col - this.idx_start.col + 1; for (var row = this.idx_start.row, maxr = this.idx_end.row; row <= maxr; row++) { for (var col = this.idx_start.col, maxc = this.idx_end.col; col <= maxc; col++) { if (row == this.idx_start.row && col == this.idx_start.col) { if (rowspan > 1) { this.map[row][col].el.setAttribute('rowspan', rowspan); } if (colspan > 1) { this.map[row][col].el.setAttribute('colspan', colspan); } } else { // transfer content if (!(/^\s*<br\/?>\s*$/.test(this.map[row][col].el.innerHTML.toLowerCase()))) { this.map[this.idx_start.row][this.idx_start.col].el.innerHTML += ' ' + this.map[row][col].el.innerHTML; } removeElement(this.map[row][col].el); } } } this.rectify(); } else { if (window.console) { console.log('Do not know how to merge allready merged cells.'); } } } }, // Decreases rowspan of a cell if it is done on first cell of rowspan row (real cell) // Cell is moved to next row (if it is real) collapseCellToNextRow: function(cell) { var cellIdx = this.getMapIndex(cell.el), newRowIdx = cellIdx.row + 1, newIdx = {'row': newRowIdx, 'col': cellIdx.col}; if (newRowIdx < this.map.length) { var row = this.getRealRowEl(false, newIdx); if (row !== null) { var n_cidx = this.correctColIndexForUnreals(newIdx.col, newIdx.row); if (n_cidx >= 0) { insertAfter(this.getRowCells(row)[n_cidx], cell.el); } else { var lastCell = this.getLastNewCellOnRow(row, newRowIdx); if (lastCell !== null) { insertAfter(lastCell, cell.el); } else { row.insertBefore(cell.el, row.firstChild); } } if (parseInt(api.getAttribute(cell.el, 'rowspan'), 10) > 2) { cell.el.setAttribute('rowspan', parseInt(api.getAttribute(cell.el, 'rowspan'), 10) - 1); } else { cell.el.removeAttribute('rowspan'); } } } }, // Removes a cell when removing a row // If is rowspan cell then decreases the rowspan // and moves cell to next row if needed (is first cell of rowspan) removeRowCell: function(cell) { if (cell.isReal) { if (cell.isRowspan) { this.collapseCellToNextRow(cell); } else { removeElement(cell.el); } } else { if (parseInt(api.getAttribute(cell.el, 'rowspan'), 10) > 2) { cell.el.setAttribute('rowspan', parseInt(api.getAttribute(cell.el, 'rowspan'), 10) - 1); } else { cell.el.removeAttribute('rowspan'); } } }, getRowElementsByCell: function() { var cells = []; this.setTableMap(); this.idx = this.getMapIndex(this.cell); if (this.idx !== false) { var modRow = this.map[this.idx.row]; for (var cidx = 0, cmax = modRow.length; cidx < cmax; cidx++) { if (modRow[cidx].isReal) { cells.push(modRow[cidx].el); } } } return cells; }, getColumnElementsByCell: function() { var cells = []; this.setTableMap(); this.idx = this.getMapIndex(this.cell); if (this.idx !== false) { for (var ridx = 0, rmax = this.map.length; ridx < rmax; ridx++) { if (this.map[ridx][this.idx.col] && this.map[ridx][this.idx.col].isReal) { cells.push(this.map[ridx][this.idx.col].el); } } } return cells; }, // Removes the row of selected cell removeRow: function() { var oldRow = api.getParentElement(this.cell, { nodeName: ["TR"] }); if (oldRow) { this.setTableMap(); this.idx = this.getMapIndex(this.cell); if (this.idx !== false) { var modRow = this.map[this.idx.row]; for (var cidx = 0, cmax = modRow.length; cidx < cmax; cidx++) { if (!modRow[cidx].modified) { this.setCellAsModified(modRow[cidx]); this.removeRowCell(modRow[cidx]); } } } removeElement(oldRow); } }, removeColCell: function(cell) { if (cell.isColspan) { if (parseInt(api.getAttribute(cell.el, 'colspan'), 10) > 2) { cell.el.setAttribute('colspan', parseInt(api.getAttribute(cell.el, 'colspan'), 10) - 1); } else { cell.el.removeAttribute('colspan'); } } else if (cell.isReal) { removeElement(cell.el); } }, removeColumn: function() { this.setTableMap(); this.idx = this.getMapIndex(this.cell); if (this.idx !== false) { for (var ridx = 0, rmax = this.map.length; ridx < rmax; ridx++) { if (!this.map[ridx][this.idx.col].modified) { this.setCellAsModified(this.map[ridx][this.idx.col]); this.removeColCell(this.map[ridx][this.idx.col]); } } } }, // removes row or column by selected cell element remove: function(what) { if (this.rectify()) { switch (what) { case 'row': this.removeRow(); break; case 'column': this.removeColumn(); break; } this.rectify(); } }, addRow: function(where) { var doc = this.table.ownerDocument; this.setTableMap(); this.idx = this.getMapIndex(this.cell); if (where == "below" && api.getAttribute(this.cell, 'rowspan')) { this.idx.row = this.idx.row + parseInt(api.getAttribute(this.cell, 'rowspan'), 10) - 1; } if (this.idx !== false) { var modRow = this.map[this.idx.row], newRow = doc.createElement('tr'); for (var ridx = 0, rmax = modRow.length; ridx < rmax; ridx++) { if (!modRow[ridx].modified) { this.setCellAsModified(modRow[ridx]); this.addRowCell(modRow[ridx], newRow, where); } } switch (where) { case 'below': insertAfter(this.getRealRowEl(true), newRow); break; case 'above': var cr = api.getParentElement(this.map[this.idx.row][this.idx.col].el, { nodeName: ["TR"] }); if (cr) { cr.parentNode.insertBefore(newRow, cr); } break; } } }, addRowCell: function(cell, row, where) { var colSpanAttr = (cell.isColspan) ? {"colspan" : api.getAttribute(cell.el, 'colspan')} : null; if (cell.isReal) { if (where != 'above' && cell.isRowspan) { cell.el.setAttribute('rowspan', parseInt(api.getAttribute(cell.el,'rowspan'), 10) + 1); } else { row.appendChild(this.createCells('td', 1, colSpanAttr)); } } else { if (where != 'above' && cell.isRowspan && cell.lastRow) { row.appendChild(this.createCells('td', 1, colSpanAttr)); } else if (c.isRowspan) { cell.el.attr('rowspan', parseInt(api.getAttribute(cell.el, 'rowspan'), 10) + 1); } } }, add: function(where) { if (this.rectify()) { if (where == 'below' || where == 'above') { this.addRow(where); } if (where == 'before' || where == 'after') { this.addColumn(where); } } }, addColCell: function (cell, ridx, where) { var doAdd, cType = cell.el.tagName.toLowerCase(); // defines add cell vs expand cell conditions // true means add switch (where) { case "before": doAdd = (!cell.isColspan || cell.firstCol); break; case "after": doAdd = (!cell.isColspan || cell.lastCol || (cell.isColspan && c.el == this.cell)); break; } if (doAdd){ // adds a cell before or after current cell element switch (where) { case "before": cell.el.parentNode.insertBefore(this.createCells(cType, 1), cell.el); break; case "after": insertAfter(cell.el, this.createCells(cType, 1)); break; } // handles if cell has rowspan if (cell.isRowspan) { this.handleCellAddWithRowspan(cell, ridx+1, where); } } else { // expands cell cell.el.setAttribute('colspan', parseInt(api.getAttribute(cell.el, 'colspan'), 10) + 1); } }, addColumn: function(where) { var row, modCell; this.setTableMap(); this.idx = this.getMapIndex(this.cell); if (where == "after" && api.getAttribute(this.cell, 'colspan')) { this.idx.col = this.idx.col + parseInt(api.getAttribute(this.cell, 'colspan'), 10) - 1; } if (this.idx !== false) { for (var ridx = 0, rmax = this.map.length; ridx < rmax; ridx++ ) { row = this.map[ridx]; if (row[this.idx.col]) { modCell = row[this.idx.col]; if (!modCell.modified) { this.setCellAsModified(modCell); this.addColCell(modCell, ridx , where); } } } } }, handleCellAddWithRowspan: function (cell, ridx, where) { var addRowsNr = parseInt(api.getAttribute(this.cell, 'rowspan'), 10) - 1, crow = api.getParentElement(cell.el, { nodeName: ["TR"] }), cType = cell.el.tagName.toLowerCase(), cidx, temp_r_cells, doc = this.table.ownerDocument, nrow; for (var i = 0; i < addRowsNr; i++) { cidx = this.correctColIndexForUnreals(this.idx.col, (ridx + i)); crow = nextNode(crow, 'tr'); if (crow) { if (cidx > 0) { switch (where) { case "before": temp_r_cells = this.getRowCells(crow); if (cidx > 0 && this.map[ridx + i][this.idx.col].el != temp_r_cells[cidx] && cidx == temp_r_cells.length - 1) { insertAfter(temp_r_cells[cidx], this.createCells(cType, 1)); } else { temp_r_cells[cidx].parentNode.insertBefore(this.createCells(cType, 1), temp_r_cells[cidx]); } break; case "after": insertAfter(this.getRowCells(crow)[cidx], this.createCells(cType, 1)); break; } } else { crow.insertBefore(this.createCells(cType, 1), crow.firstChild); } } else { nrow = doc.createElement('tr'); nrow.appendChild(this.createCells(cType, 1)); this.table.appendChild(nrow); } } } }; api.table = { getCellsBetween: function(cell1, cell2) { var c1 = new TableModifyerByCell(cell1); return c1.getMapElsTo(cell2); }, addCells: function(cell, where) { var c = new TableModifyerByCell(cell); c.add(where); }, removeCells: function(cell, what) { var c = new TableModifyerByCell(cell); c.remove(what); }, mergeCellsBetween: function(cell1, cell2) { var c1 = new TableModifyerByCell(cell1); c1.merge(cell2); }, unmergeCell: function(cell) { var c = new TableModifyerByCell(cell); c.unmerge(); }, orderSelectionEnds: function(cell, cell2) { var c = new TableModifyerByCell(cell); return c.orderSelectionEnds(cell2); }, indexOf: function(cell) { var c = new TableModifyerByCell(cell); c.setTableMap(); return c.getMapIndex(cell); }, findCell: function(table, idx) { var c = new TableModifyerByCell(null, table); return c.getElementAtIndex(idx); }, findRowByCell: function(cell) { var c = new TableModifyerByCell(cell); return c.getRowElementsByCell(); }, findColumnByCell: function(cell) { var c = new TableModifyerByCell(cell); return c.getColumnElementsByCell(); }, canMerge: function(cell1, cell2) { var c = new TableModifyerByCell(cell1); return c.canMerge(cell2); } }; })(wysihtml5); ;// does a selector query on element or array of elements wysihtml5.dom.query = function(elements, query) { var ret = [], q; if (elements.nodeType) { elements = [elements]; } for (var e = 0, len = elements.length; e < len; e++) { q = elements[e].querySelectorAll(query); if (q) { for(var i = q.length; i--; ret.unshift(q[i])); } } return ret; }; ;wysihtml5.dom.compareDocumentPosition = (function() { var documentElement = document.documentElement; if (documentElement.compareDocumentPosition) { return function(container, element) { return container.compareDocumentPosition(element); }; } else { return function( container, element ) { // implementation borrowed from https://github.com/tmpvar/jsdom/blob/681a8524b663281a0f58348c6129c8c184efc62c/lib/jsdom/level3/core.js // MIT license var thisOwner, otherOwner; if( container.nodeType === 9) // Node.DOCUMENT_NODE thisOwner = container; else thisOwner = container.ownerDocument; if( element.nodeType === 9) // Node.DOCUMENT_NODE otherOwner = element; else otherOwner = element.ownerDocument; if( container === element ) return 0; if( container === element.ownerDocument ) return 4 + 16; //Node.DOCUMENT_POSITION_FOLLOWING + Node.DOCUMENT_POSITION_CONTAINED_BY; if( container.ownerDocument === element ) return 2 + 8; //Node.DOCUMENT_POSITION_PRECEDING + Node.DOCUMENT_POSITION_CONTAINS; if( thisOwner !== otherOwner ) return 1; // Node.DOCUMENT_POSITION_DISCONNECTED; // Text nodes for attributes does not have a _parentNode. So we need to find them as attribute child. if( container.nodeType === 2 /*Node.ATTRIBUTE_NODE*/ && container.childNodes && wysihtml5.lang.array(container.childNodes).indexOf( element ) !== -1) return 4 + 16; //Node.DOCUMENT_POSITION_FOLLOWING + Node.DOCUMENT_POSITION_CONTAINED_BY; if( element.nodeType === 2 /*Node.ATTRIBUTE_NODE*/ && element.childNodes && wysihtml5.lang.array(element.childNodes).indexOf( container ) !== -1) return 2 + 8; //Node.DOCUMENT_POSITION_PRECEDING + Node.DOCUMENT_POSITION_CONTAINS; var point = container; var parents = [ ]; var previous = null; while( point ) { if( point == element ) return 2 + 8; //Node.DOCUMENT_POSITION_PRECEDING + Node.DOCUMENT_POSITION_CONTAINS; parents.push( point ); point = point.parentNode; } point = element; previous = null; while( point ) { if( point == container ) return 4 + 16; //Node.DOCUMENT_POSITION_FOLLOWING + Node.DOCUMENT_POSITION_CONTAINED_BY; var location_index = wysihtml5.lang.array(parents).indexOf( point ); if( location_index !== -1) { var smallest_common_ancestor = parents[ location_index ]; var this_index = wysihtml5.lang.array(smallest_common_ancestor.childNodes).indexOf( parents[location_index - 1]);//smallest_common_ancestor.childNodes.toArray().indexOf( parents[location_index - 1] ); var other_index = wysihtml5.lang.array(smallest_common_ancestor.childNodes).indexOf( previous ); //smallest_common_ancestor.childNodes.toArray().indexOf( previous ); if( this_index > other_index ) { return 2; //Node.DOCUMENT_POSITION_PRECEDING; } else { return 4; //Node.DOCUMENT_POSITION_FOLLOWING; } } previous = point; point = point.parentNode; } return 1; //Node.DOCUMENT_POSITION_DISCONNECTED; }; } })(); ;wysihtml5.dom.unwrap = function(node) { if (node.parentNode) { while (node.lastChild) { wysihtml5.dom.insert(node.lastChild).after(node); } node.parentNode.removeChild(node); } };;/* * Methods for fetching pasted html before it gets inserted into content **/ /* Modern event.clipboardData driven approach. * Advantage is that it does not have to loose selection or modify dom to catch the data. * IE does not support though. **/ wysihtml5.dom.getPastedHtml = function(event) { var html; if (event.clipboardData) { if (wysihtml5.lang.array(event.clipboardData.types).contains('text/html')) { html = event.clipboardData.getData('text/html'); } else if (wysihtml5.lang.array(event.clipboardData.types).contains('text/plain')) { html = wysihtml5.lang.string(event.clipboardData.getData('text/plain')).escapeHTML(true, true); } } return html; }; /* Older temprorary contenteditable as paste source catcher method for fallbacks */ wysihtml5.dom.getPastedHtmlWithDiv = function (composer, f) { var selBookmark = composer.selection.getBookmark(), doc = composer.element.ownerDocument, cleanerDiv = doc.createElement('DIV'); doc.body.appendChild(cleanerDiv); cleanerDiv.style.width = "1px"; cleanerDiv.style.height = "1px"; cleanerDiv.style.overflow = "hidden"; cleanerDiv.setAttribute('contenteditable', 'true'); cleanerDiv.focus(); setTimeout(function () { composer.selection.setBookmark(selBookmark); f(cleanerDiv.innerHTML); cleanerDiv.parentNode.removeChild(cleanerDiv); }, 0); };;/** * Fix most common html formatting misbehaviors of browsers implementation when inserting * content via copy & paste contentEditable * * @author Christopher Blum */ wysihtml5.quirks.cleanPastedHTML = (function() { var styleToRegex = function (styleStr) { var trimmedStr = wysihtml5.lang.string(styleStr).trim(), escapedStr = trimmedStr.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); return new RegExp("^((?!^" + escapedStr + "$).)*$", "i"); }; var extendRulesWithStyleExceptions = function (rules, exceptStyles) { var newRules = wysihtml5.lang.object(rules).clone(true), tag, style; for (tag in newRules.tags) { if (newRules.tags.hasOwnProperty(tag)) { if (newRules.tags[tag].keep_styles) { for (style in newRules.tags[tag].keep_styles) { if (newRules.tags[tag].keep_styles.hasOwnProperty(style)) { if (exceptStyles[style]) { newRules.tags[tag].keep_styles[style] = styleToRegex(exceptStyles[style]); } } } } } } return newRules; }; var pickRuleset = function(ruleset, html) { var pickedSet, defaultSet; if (!ruleset) { return null; } for (var i = 0, max = ruleset.length; i < max; i++) { if (!ruleset[i].condition) { defaultSet = ruleset[i].set; } if (ruleset[i].condition && ruleset[i].condition.test(html)) { return ruleset[i].set; } } return defaultSet; }; return function(html, options) { var exceptStyles = { 'color': wysihtml5.dom.getStyle("color").from(options.referenceNode), 'fontSize': wysihtml5.dom.getStyle("font-size").from(options.referenceNode) }, rules = extendRulesWithStyleExceptions(pickRuleset(options.rules, html) || {}, exceptStyles), newHtml; newHtml = wysihtml5.dom.parse(html, { "rules": rules, "cleanUp": true, // <span> elements, empty or without attributes, should be removed/replaced with their content "context": options.referenceNode.ownerDocument, "uneditableClass": options.uneditableClass, "clearInternals" : true, // don't paste temprorary selection and other markings "unjoinNbsps" : true }); return newHtml; }; })();;/** * IE and Opera leave an empty paragraph in the contentEditable element after clearing it * * @param {Object} contentEditableElement The contentEditable element to observe for clearing events * @exaple * wysihtml5.quirks.ensureProperClearing(myContentEditableElement); */ wysihtml5.quirks.ensureProperClearing = (function() { var clearIfNecessary = function() { var element = this; setTimeout(function() { var innerHTML = element.innerHTML.toLowerCase(); if (innerHTML == "<p> </p>" || innerHTML == "<p> </p><p> </p>") { element.innerHTML = ""; } }, 0); }; return function(composer) { wysihtml5.dom.observe(composer.element, ["cut", "keydown"], clearIfNecessary); }; })(); ;// See https://bugzilla.mozilla.org/show_bug.cgi?id=664398 // // In Firefox this: // var d = document.createElement("div"); // d.innerHTML ='<a href="~"></a>'; // d.innerHTML; // will result in: // <a href="%7E"></a> // which is wrong (function(wysihtml5) { var TILDE_ESCAPED = "%7E"; wysihtml5.quirks.getCorrectInnerHTML = function(element) { var innerHTML = element.innerHTML; if (innerHTML.indexOf(TILDE_ESCAPED) === -1) { return innerHTML; } var elementsWithTilde = element.querySelectorAll("[href*='~'], [src*='~']"), url, urlToSearch, length, i; for (i=0, length=elementsWithTilde.length; i<length; i++) { url = elementsWithTilde[i].href || elementsWithTilde[i].src; urlToSearch = wysihtml5.lang.string(url).replace("~").by(TILDE_ESCAPED); innerHTML = wysihtml5.lang.string(innerHTML).replace(urlToSearch).by(url); } return innerHTML; }; })(wysihtml5); ;/** * Force rerendering of a given element * Needed to fix display misbehaviors of IE * * @param {Element} element The element object which needs to be rerendered * @example * wysihtml5.quirks.redraw(document.body); */ (function(wysihtml5) { var CLASS_NAME = "wysihtml5-quirks-redraw"; wysihtml5.quirks.redraw = function(element) { wysihtml5.dom.addClass(element, CLASS_NAME); wysihtml5.dom.removeClass(element, CLASS_NAME); // Following hack is needed for firefox to make sure that image resize handles are properly removed try { var doc = element.ownerDocument; doc.execCommand("italic", false, null); doc.execCommand("italic", false, null); } catch(e) {} }; })(wysihtml5); ;wysihtml5.quirks.tableCellsSelection = function(editable, editor) { var dom = wysihtml5.dom, select = { table: null, start: null, end: null, cells: null, select: selectCells }, selection_class = "wysiwyg-tmp-selected-cell", moveHandler = null, upHandler = null; function init () { dom.observe(editable, "mousedown", function(event) { var target = wysihtml5.dom.getParentElement(event.target, { nodeName: ["TD", "TH"] }); if (target) { handleSelectionMousedown(target); } }); return select; } function handleSelectionMousedown (target) { select.start = target; select.end = target; select.cells = [target]; select.table = dom.getParentElement(select.start, { nodeName: ["TABLE"] }); if (select.table) { removeCellSelections(); dom.addClass(target, selection_class); moveHandler = dom.observe(editable, "mousemove", handleMouseMove); upHandler = dom.observe(editable, "mouseup", handleMouseUp); editor.fire("tableselectstart").fire("tableselectstart:composer"); } } // remove all selection classes function removeCellSelections () { if (editable) { var selectedCells = editable.querySelectorAll('.' + selection_class); if (selectedCells.length > 0) { for (var i = 0; i < selectedCells.length; i++) { dom.removeClass(selectedCells[i], selection_class); } } } } function addSelections (cells) { for (var i = 0; i < cells.length; i++) { dom.addClass(cells[i], selection_class); } } function handleMouseMove (event) { var curTable = null, cell = dom.getParentElement(event.target, { nodeName: ["TD","TH"] }), oldEnd; if (cell && select.table && select.start) { curTable = dom.getParentElement(cell, { nodeName: ["TABLE"] }); if (curTable && curTable === select.table) { removeCellSelections(); oldEnd = select.end; select.end = cell; select.cells = dom.table.getCellsBetween(select.start, cell); if (select.cells.length > 1) { editor.composer.selection.deselect(); } addSelections(select.cells); if (select.end !== oldEnd) { editor.fire("tableselectchange").fire("tableselectchange:composer"); } } } } function handleMouseUp (event) { moveHandler.stop(); upHandler.stop(); editor.fire("tableselect").fire("tableselect:composer"); setTimeout(function() { bindSideclick(); },0); } function bindSideclick () { var sideClickHandler = dom.observe(editable.ownerDocument, "click", function(event) { sideClickHandler.stop(); if (dom.getParentElement(event.target, { nodeName: ["TABLE"] }) != select.table) { removeCellSelections(); select.table = null; select.start = null; select.end = null; editor.fire("tableunselect").fire("tableunselect:composer"); } }); } function selectCells (start, end) { select.start = start; select.end = end; select.table = dom.getParentElement(select.start, { nodeName: ["TABLE"] }); selectedCells = dom.table.getCellsBetween(select.start, select.end); addSelections(selectedCells); bindSideclick(); editor.fire("tableselect").fire("tableselect:composer"); } return init(); }; ;(function(wysihtml5) { var RGBA_REGEX = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([\d\.]+)\s*\)/i, RGB_REGEX = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/i, HEX6_REGEX = /^#([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])/i, HEX3_REGEX = /^#([0-9a-f])([0-9a-f])([0-9a-f])/i; var param_REGX = function (p) { return new RegExp("(^|\\s|;)" + p + "\\s*:\\s*[^;$]+" , "gi"); }; wysihtml5.quirks.styleParser = { parseColor: function(stylesStr, paramName) { var paramRegex = param_REGX(paramName), params = stylesStr.match(paramRegex), radix = 10, str, colorMatch; if (params) { for (var i = params.length; i--;) { params[i] = wysihtml5.lang.string(params[i].split(':')[1]).trim(); } str = params[params.length-1]; if (RGBA_REGEX.test(str)) { colorMatch = str.match(RGBA_REGEX); } else if (RGB_REGEX.test(str)) { colorMatch = str.match(RGB_REGEX); } else if (HEX6_REGEX.test(str)) { colorMatch = str.match(HEX6_REGEX); radix = 16; } else if (HEX3_REGEX.test(str)) { colorMatch = str.match(HEX3_REGEX); colorMatch.shift(); colorMatch.push(1); return wysihtml5.lang.array(colorMatch).map(function(d, idx) { return (idx < 3) ? (parseInt(d, 16) * 16) + parseInt(d, 16): parseFloat(d); }); } if (colorMatch) { colorMatch.shift(); if (!colorMatch[3]) { colorMatch.push(1); } return wysihtml5.lang.array(colorMatch).map(function(d, idx) { return (idx < 3) ? parseInt(d, radix): parseFloat(d); }); } } return false; }, unparseColor: function(val, props) { if (props) { if (props == "hex") { return (val[0].toString(16).toUpperCase()) + (val[1].toString(16).toUpperCase()) + (val[2].toString(16).toUpperCase()); } else if (props == "hash") { return "#" + (val[0].toString(16).toUpperCase()) + (val[1].toString(16).toUpperCase()) + (val[2].toString(16).toUpperCase()); } else if (props == "rgb") { return "rgb(" + val[0] + "," + val[1] + "," + val[2] + ")"; } else if (props == "rgba") { return "rgba(" + val[0] + "," + val[1] + "," + val[2] + "," + val[3] + ")"; } else if (props == "csv") { return val[0] + "," + val[1] + "," + val[2] + "," + val[3]; } } if (val[3] && val[3] !== 1) { return "rgba(" + val[0] + "," + val[1] + "," + val[2] + "," + val[3] + ")"; } else { return "rgb(" + val[0] + "," + val[1] + "," + val[2] + ")"; } }, parseFontSize: function(stylesStr) { var params = stylesStr.match(param_REGX('font-size')); if (params) { return wysihtml5.lang.string(params[params.length - 1].split(':')[1]).trim(); } return false; } }; })(wysihtml5); ;/** * Selection API * * @example * var selection = new wysihtml5.Selection(editor); */ (function(wysihtml5) { var dom = wysihtml5.dom; function _getCumulativeOffsetTop(element) { var top = 0; if (element.parentNode) { do { top += element.offsetTop || 0; element = element.offsetParent; } while (element); } return top; } // Provides the depth of ``descendant`` relative to ``ancestor`` function getDepth(ancestor, descendant) { var ret = 0; while (descendant !== ancestor) { ret++; descendant = descendant.parentNode; if (!descendant) throw new Error("not a descendant of ancestor!"); } return ret; } // Should fix the obtained ranges that cannot surrond contents normally to apply changes upon // Being considerate to firefox that sets range start start out of span and end inside on doubleclick initiated selection function expandRangeToSurround(range) { if (range.canSurroundContents()) return; var common = range.commonAncestorContainer, start_depth = getDepth(common, range.startContainer), end_depth = getDepth(common, range.endContainer); while(!range.canSurroundContents()) { // In the following branches, we cannot just decrement the depth variables because the setStartBefore/setEndAfter may move the start or end of the range more than one level relative to ``common``. So we need to recompute the depth. if (start_depth > end_depth) { range.setStartBefore(range.startContainer); start_depth = getDepth(common, range.startContainer); } else { range.setEndAfter(range.endContainer); end_depth = getDepth(common, range.endContainer); } } } wysihtml5.Selection = Base.extend( /** @scope wysihtml5.Selection.prototype */ { constructor: function(editor, contain, unselectableClass) { // Make sure that our external range library is initialized window.rangy.init(); this.editor = editor; this.composer = editor.composer; this.doc = this.composer.doc; this.contain = contain; this.unselectableClass = unselectableClass || false; }, /** * Get the current selection as a bookmark to be able to later restore it * * @return {Object} An object that represents the current selection */ getBookmark: function() { var range = this.getRange(); if (range) expandRangeToSurround(range); return range && range.cloneRange(); }, /** * Restore a selection retrieved via wysihtml5.Selection.prototype.getBookmark * * @param {Object} bookmark An object that represents the current selection */ setBookmark: function(bookmark) { if (!bookmark) { return; } this.setSelection(bookmark); }, /** * Set the caret in front of the given node * * @param {Object} node The element or text node where to position the caret in front of * @example * selection.setBefore(myElement); */ setBefore: function(node) { var range = rangy.createRange(this.doc); range.setStartBefore(node); range.setEndBefore(node); return this.setSelection(range); }, /** * Set the caret after the given node * * @param {Object} node The element or text node where to position the caret in front of * @example * selection.setBefore(myElement); */ setAfter: function(node) { var range = rangy.createRange(this.doc); range.setStartAfter(node); range.setEndAfter(node); return this.setSelection(range); }, /** * Ability to select/mark nodes * * @param {Element} node The node/element to select * @example * selection.selectNode(document.getElementById("my-image")); */ selectNode: function(node, avoidInvisibleSpace) { var range = rangy.createRange(this.doc), isElement = node.nodeType === wysihtml5.ELEMENT_NODE, canHaveHTML = "canHaveHTML" in node ? node.canHaveHTML : (node.nodeName !== "IMG"), content = isElement ? node.innerHTML : node.data, isEmpty = (content === "" || content === wysihtml5.INVISIBLE_SPACE), displayStyle = dom.getStyle("display").from(node), isBlockElement = (displayStyle === "block" || displayStyle === "list-item"); if (isEmpty && isElement && canHaveHTML && !avoidInvisibleSpace) { // Make sure that caret is visible in node by inserting a zero width no breaking space try { node.innerHTML = wysihtml5.INVISIBLE_SPACE; } catch(e) {} } if (canHaveHTML) { range.selectNodeContents(node); } else { range.selectNode(node); } if (canHaveHTML && isEmpty && isElement) { range.collapse(isBlockElement); } else if (canHaveHTML && isEmpty) { range.setStartAfter(node); range.setEndAfter(node); } this.setSelection(range); }, /** * Get the node which contains the selection * * @param {Boolean} [controlRange] (only IE) Whether it should return the selected ControlRange element when the selection type is a "ControlRange" * @return {Object} The node that contains the caret * @example * var nodeThatContainsCaret = selection.getSelectedNode(); */ getSelectedNode: function(controlRange) { var selection, range; if (controlRange && this.doc.selection && this.doc.selection.type === "Control") { range = this.doc.selection.createRange(); if (range && range.length) { return range.item(0); } } selection = this.getSelection(this.doc); if (selection.focusNode === selection.anchorNode) { return selection.focusNode; } else { range = this.getRange(this.doc); return range ? range.commonAncestorContainer : this.doc.body; } }, fixSelBorders: function() { var range = this.getRange(); expandRangeToSurround(range); this.setSelection(range); }, getSelectedOwnNodes: function(controlRange) { var selection, ranges = this.getOwnRanges(), ownNodes = []; for (var i = 0, maxi = ranges.length; i < maxi; i++) { ownNodes.push(ranges[i].commonAncestorContainer || this.doc.body); } return ownNodes; }, findNodesInSelection: function(nodeTypes) { var ranges = this.getOwnRanges(), nodes = [], curNodes; for (var i = 0, maxi = ranges.length; i < maxi; i++) { curNodes = ranges[i].getNodes([1], function(node) { return wysihtml5.lang.array(nodeTypes).contains(node.nodeName); }); nodes = nodes.concat(curNodes); } return nodes; }, containsUneditable: function() { var uneditables = this.getOwnUneditables(), selection = this.getSelection(); for (var i = 0, maxi = uneditables.length; i < maxi; i++) { if (selection.containsNode(uneditables[i])) { return true; } } return false; }, deleteContents: function() { var ranges = this.getOwnRanges(); for (var i = ranges.length; i--;) { ranges[i].deleteContents(); } this.setSelection(ranges[0]); }, getPreviousNode: function(node, ignoreEmpty) { if (!node) { var selection = this.getSelection(); node = selection.anchorNode; } if (node === this.contain) { return false; } var ret = node.previousSibling, parent; if (ret === this.contain) { return false; } if (ret && ret.nodeType !== 3 && ret.nodeType !== 1) { // do not count comments and other node types ret = this.getPreviousNode(ret, ignoreEmpty); } else if (ret && ret.nodeType === 3 && (/^\s*$/).test(ret.textContent)) { // do not count empty textnodes as previus nodes ret = this.getPreviousNode(ret, ignoreEmpty); } else if (ignoreEmpty && ret && ret.nodeType === 1 && !wysihtml5.lang.array(["BR", "HR", "IMG"]).contains(ret.nodeName) && (/^[\s]*$/).test(ret.innerHTML)) { // Do not count empty nodes if param set. // Contenteditable tends to bypass and delete these silently when deleting with caret ret = this.getPreviousNode(ret, ignoreEmpty); } else if (!ret && node !== this.contain) { parent = node.parentNode; if (parent !== this.contain) { ret = this.getPreviousNode(parent, ignoreEmpty); } } return (ret !== this.contain) ? ret : false; }, getSelectionParentsByTag: function(tagName) { var nodes = this.getSelectedOwnNodes(), curEl, parents = []; for (var i = 0, maxi = nodes.length; i < maxi; i++) { curEl = (nodes[i].nodeName && nodes[i].nodeName === 'LI') ? nodes[i] : wysihtml5.dom.getParentElement(nodes[i], { nodeName: ['LI']}, false, this.contain); if (curEl) { parents.push(curEl); } } return (parents.length) ? parents : null; }, getRangeToNodeEnd: function() { if (this.isCollapsed()) { var range = this.getRange(), sNode = range.startContainer, pos = range.startOffset, lastR = rangy.createRange(this.doc); lastR.selectNodeContents(sNode); lastR.setStart(sNode, pos); return lastR; } }, caretIsLastInSelection: function() { var r = rangy.createRange(this.doc), s = this.getSelection(), endc = this.getRangeToNodeEnd().cloneContents(), endtxt = endc.textContent; return (/^\s*$/).test(endtxt); }, caretIsFirstInSelection: function() { var r = rangy.createRange(this.doc), s = this.getSelection(), range = this.getRange(), startNode = range.startContainer; if (startNode.nodeType === wysihtml5.TEXT_NODE) { return this.isCollapsed() && (startNode.nodeType === wysihtml5.TEXT_NODE && (/^\s*$/).test(startNode.data.substr(0,range.startOffset))); } else { r.selectNodeContents(this.getRange().commonAncestorContainer); r.collapse(true); return (this.isCollapsed() && (r.startContainer === s.anchorNode || r.endContainer === s.anchorNode) && r.startOffset === s.anchorOffset); } }, caretIsInTheBeginnig: function(ofNode) { var selection = this.getSelection(), node = selection.anchorNode, offset = selection.anchorOffset; if (ofNode) { return (offset === 0 && (node.nodeName && node.nodeName === ofNode.toUpperCase() || wysihtml5.dom.getParentElement(node.parentNode, { nodeName: ofNode }, 1))); } else { return (offset === 0 && !this.getPreviousNode(node, true)); } }, caretIsBeforeUneditable: function() { var selection = this.getSelection(), node = selection.anchorNode, offset = selection.anchorOffset; if (offset === 0) { var prevNode = this.getPreviousNode(node, true); if (prevNode) { var uneditables = this.getOwnUneditables(); for (var i = 0, maxi = uneditables.length; i < maxi; i++) { if (prevNode === uneditables[i]) { return uneditables[i]; } } } } return false; }, // TODO: Figure out a method from following 2 that would work universally executeAndRestoreRangy: function(method, restoreScrollPosition) { var win = this.doc.defaultView || this.doc.parentWindow, sel = rangy.saveSelection(win); if (!sel) { method(); } else { try { method(); } catch(e) { setTimeout(function() { throw e; }, 0); } } rangy.restoreSelection(sel); }, // TODO: has problems in chrome 12. investigate block level and uneditable area inbetween executeAndRestore: function(method, restoreScrollPosition) { var body = this.doc.body, oldScrollTop = restoreScrollPosition && body.scrollTop, oldScrollLeft = restoreScrollPosition && body.scrollLeft, className = "_wysihtml5-temp-placeholder", placeholderHtml = '<span class="' + className + '">' + wysihtml5.INVISIBLE_SPACE + '</span>', range = this.getRange(true), caretPlaceholder, newCaretPlaceholder, nextSibling, prevSibling, node, node2, range2, newRange; // Nothing selected, execute and say goodbye if (!range) { method(body, body); return; } if (!range.collapsed) { range2 = range.cloneRange(); node2 = range2.createContextualFragment(placeholderHtml); range2.collapse(false); range2.insertNode(node2); range2.detach(); } node = range.createContextualFragment(placeholderHtml); range.insertNode(node); if (node2) { caretPlaceholder = this.contain.querySelectorAll("." + className); range.setStartBefore(caretPlaceholder[0]); range.setEndAfter(caretPlaceholder[caretPlaceholder.length -1]); } this.setSelection(range); // Make sure that a potential error doesn't cause our placeholder element to be left as a placeholder try { method(range.startContainer, range.endContainer); } catch(e) { setTimeout(function() { throw e; }, 0); } caretPlaceholder = this.contain.querySelectorAll("." + className); if (caretPlaceholder && caretPlaceholder.length) { newRange = rangy.createRange(this.doc); nextSibling = caretPlaceholder[0].nextSibling; if (caretPlaceholder.length > 1) { prevSibling = caretPlaceholder[caretPlaceholder.length -1].previousSibling; } if (prevSibling && nextSibling) { newRange.setStartBefore(nextSibling); newRange.setEndAfter(prevSibling); } else { newCaretPlaceholder = this.doc.createTextNode(wysihtml5.INVISIBLE_SPACE); dom.insert(newCaretPlaceholder).after(caretPlaceholder[0]); newRange.setStartBefore(newCaretPlaceholder); newRange.setEndAfter(newCaretPlaceholder); } this.setSelection(newRange); for (var i = caretPlaceholder.length; i--;) { caretPlaceholder[i].parentNode.removeChild(caretPlaceholder[i]); } } else { // fallback for when all hell breaks loose this.contain.focus(); } if (restoreScrollPosition) { body.scrollTop = oldScrollTop; body.scrollLeft = oldScrollLeft; } // Remove it again, just to make sure that the placeholder is definitely out of the dom tree try { caretPlaceholder.parentNode.removeChild(caretPlaceholder); } catch(e2) {} }, set: function(node, offset) { var newRange = rangy.createRange(this.doc); newRange.setStart(node, offset || 0); this.setSelection(newRange); }, /** * Insert html at the caret position and move the cursor after the inserted html * * @param {String} html HTML string to insert * @example * selection.insertHTML("<p>foobar</p>"); */ insertHTML: function(html) { var range = rangy.createRange(this.doc), node = this.doc.createElement('DIV'), fragment = this.doc.createDocumentFragment(), lastChild; node.innerHTML = html; lastChild = node.lastChild; while (node.firstChild) { fragment.appendChild(node.firstChild); } this.insertNode(fragment); if (lastChild) { this.setAfter(lastChild); } }, /** * Insert a node at the caret position and move the cursor behind it * * @param {Object} node HTML string to insert * @example * selection.insertNode(document.createTextNode("foobar")); */ insertNode: function(node) { var range = this.getRange(); if (range) { range.insertNode(node); } }, /** * Wraps current selection with the given node * * @param {Object} node The node to surround the selected elements with */ surround: function(nodeOptions) { var ranges = this.getOwnRanges(), node, nodes = []; if (ranges.length == 0) { return nodes; } for (var i = ranges.length; i--;) { node = this.doc.createElement(nodeOptions.nodeName); nodes.push(node); if (nodeOptions.className) { node.className = nodeOptions.className; } if (nodeOptions.cssStyle) { node.setAttribute('style', nodeOptions.cssStyle); } try { // This only works when the range boundaries are not overlapping other elements ranges[i].surroundContents(node); this.selectNode(node); } catch(e) { // fallback node.appendChild(ranges[i].extractContents()); ranges[i].insertNode(node); } } return nodes; }, deblockAndSurround: function(nodeOptions) { var tempElement = this.doc.createElement('div'), range = rangy.createRange(this.doc), tempDivElements, tempElements, firstChild; tempElement.className = nodeOptions.className; this.composer.commands.exec("formatBlock", nodeOptions.nodeName, nodeOptions.className); tempDivElements = this.contain.querySelectorAll("." + nodeOptions.className); if (tempDivElements[0]) { tempDivElements[0].parentNode.insertBefore(tempElement, tempDivElements[0]); range.setStartBefore(tempDivElements[0]); range.setEndAfter(tempDivElements[tempDivElements.length - 1]); tempElements = range.extractContents(); while (tempElements.firstChild) { firstChild = tempElements.firstChild; if (firstChild.nodeType == 1 && wysihtml5.dom.hasClass(firstChild, nodeOptions.className)) { while (firstChild.firstChild) { tempElement.appendChild(firstChild.firstChild); } if (firstChild.nodeName !== "BR") { tempElement.appendChild(this.doc.createElement('br')); } tempElements.removeChild(firstChild); } else { tempElement.appendChild(firstChild); } } } else { tempElement = null; } return tempElement; }, /** * Scroll the current caret position into the view * FIXME: This is a bit hacky, there might be a smarter way of doing this * * @example * selection.scrollIntoView(); */ scrollIntoView: function() { var doc = this.doc, tolerance = 5, // px hasScrollBars = doc.documentElement.scrollHeight > doc.documentElement.offsetHeight, tempElement = doc._wysihtml5ScrollIntoViewElement = doc._wysihtml5ScrollIntoViewElement || (function() { var element = doc.createElement("span"); // The element needs content in order to be able to calculate it's position properly element.innerHTML = wysihtml5.INVISIBLE_SPACE; return element; })(), offsetTop; if (hasScrollBars) { this.insertNode(tempElement); offsetTop = _getCumulativeOffsetTop(tempElement); tempElement.parentNode.removeChild(tempElement); if (offsetTop >= (doc.body.scrollTop + doc.documentElement.offsetHeight - tolerance)) { doc.body.scrollTop = offsetTop; } } }, /** * Select line where the caret is in */ selectLine: function() { if (wysihtml5.browser.supportsSelectionModify()) { this._selectLine_W3C(); } else if (this.doc.selection) { this._selectLine_MSIE(); } }, /** * See https://developer.mozilla.org/en/DOM/Selection/modify */ _selectLine_W3C: function() { var win = this.doc.defaultView, selection = win.getSelection(); selection.modify("move", "left", "lineboundary"); selection.modify("extend", "right", "lineboundary"); }, _selectLine_MSIE: function() { var range = this.doc.selection.createRange(), rangeTop = range.boundingTop, scrollWidth = this.doc.body.scrollWidth, rangeBottom, rangeEnd, measureNode, i, j; if (!range.moveToPoint) { return; } if (rangeTop === 0) { // Don't know why, but when the selection ends at the end of a line // range.boundingTop is 0 measureNode = this.doc.createElement("span"); this.insertNode(measureNode); rangeTop = measureNode.offsetTop; measureNode.parentNode.removeChild(measureNode); } rangeTop += 1; for (i=-10; i<scrollWidth; i+=2) { try { range.moveToPoint(i, rangeTop); break; } catch(e1) {} } // Investigate the following in order to handle multi line selections // rangeBottom = rangeTop + (rangeHeight ? (rangeHeight - 1) : 0); rangeBottom = rangeTop; rangeEnd = this.doc.selection.createRange(); for (j=scrollWidth; j>=0; j--) { try { rangeEnd.moveToPoint(j, rangeBottom); break; } catch(e2) {} } range.setEndPoint("EndToEnd", rangeEnd); range.select(); }, getText: function() { var selection = this.getSelection(); return selection ? selection.toString() : ""; }, getNodes: function(nodeType, filter) { var range = this.getRange(); if (range) { return range.getNodes([nodeType], filter); } else { return []; } }, fixRangeOverflow: function(range) { if (this.contain && this.contain.firstChild && range) { var containment = range.compareNode(this.contain); if (containment !== 2) { if (containment === 1) { range.setStartBefore(this.contain.firstChild); } if (containment === 0) { range.setEndAfter(this.contain.lastChild); } if (containment === 3) { range.setStartBefore(this.contain.firstChild); range.setEndAfter(this.contain.lastChild); } } else if (this._detectInlineRangeProblems(range)) { var previousElementSibling = range.endContainer.previousElementSibling; if (previousElementSibling) { range.setEnd(previousElementSibling, this._endOffsetForNode(previousElementSibling)); } } } }, _endOffsetForNode: function(node) { var range = document.createRange(); range.selectNodeContents(node); return range.endOffset; }, _detectInlineRangeProblems: function(range) { var position = dom.compareDocumentPosition(range.startContainer, range.endContainer); return ( range.endOffset == 0 && position & 4 //Node.DOCUMENT_POSITION_FOLLOWING ); }, getRange: function(dontFix) { var selection = this.getSelection(), range = selection && selection.rangeCount && selection.getRangeAt(0); if (dontFix !== true) { this.fixRangeOverflow(range); } return range; }, getOwnUneditables: function() { var allUneditables = dom.query(this.contain, '.' + this.unselectableClass), deepUneditables = dom.query(allUneditables, '.' + this.unselectableClass); return wysihtml5.lang.array(allUneditables).without(deepUneditables); }, // Returns an array of ranges that belong only to this editable // Needed as uneditable block in contenteditabel can split range into pieces // If manipulating content reverse loop is usually needed as manipulation can shift subsequent ranges getOwnRanges: function() { var ranges = [], r = this.getRange(), tmpRanges; if (r) { ranges.push(r); } if (this.unselectableClass && this.contain && r) { var uneditables = this.getOwnUneditables(), tmpRange; if (uneditables.length > 0) { for (var i = 0, imax = uneditables.length; i < imax; i++) { tmpRanges = []; for (var j = 0, jmax = ranges.length; j < jmax; j++) { if (ranges[j]) { switch (ranges[j].compareNode(uneditables[i])) { case 2: // all selection inside uneditable. remove break; case 3: //section begins before and ends after uneditable. spilt tmpRange = ranges[j].cloneRange(); tmpRange.setEndBefore(uneditables[i]); tmpRanges.push(tmpRange); tmpRange = ranges[j].cloneRange(); tmpRange.setStartAfter(uneditables[i]); tmpRanges.push(tmpRange); break; default: // in all other cases uneditable does not touch selection. dont modify tmpRanges.push(ranges[j]); } } ranges = tmpRanges; } } } } return ranges; }, getSelection: function() { return rangy.getSelection(this.doc.defaultView || this.doc.parentWindow); }, setSelection: function(range) { var win = this.doc.defaultView || this.doc.parentWindow, selection = rangy.getSelection(win); return selection.setSingleRange(range); }, createRange: function() { return rangy.createRange(this.doc); }, isCollapsed: function() { return this.getSelection().isCollapsed; }, getHtml: function() { return this.getSelection().toHtml(); }, isEndToEndInNode: function(nodeNames) { var range = this.getRange(), parentElement = range.commonAncestorContainer, startNode = range.startContainer, endNode = range.endContainer; if (parentElement.nodeType === wysihtml5.TEXT_NODE) { parentElement = parentElement.parentNode; } if (startNode.nodeType === wysihtml5.TEXT_NODE && !(/^\s*$/).test(startNode.data.substr(range.startOffset))) { return false; } if (endNode.nodeType === wysihtml5.TEXT_NODE && !(/^\s*$/).test(endNode.data.substr(range.endOffset))) { return false; } while (startNode && startNode !== parentElement) { if (startNode.nodeType !== wysihtml5.TEXT_NODE && !wysihtml5.dom.contains(parentElement, startNode)) { return false; } if (wysihtml5.dom.domNode(startNode).prev({ignoreBlankTexts: true})) { return false; } startNode = startNode.parentNode; } while (endNode && endNode !== parentElement) { if (endNode.nodeType !== wysihtml5.TEXT_NODE && !wysihtml5.dom.contains(parentElement, endNode)) { return false; } if (wysihtml5.dom.domNode(endNode).next({ignoreBlankTexts: true})) { return false; } endNode = endNode.parentNode; } return (wysihtml5.lang.array(nodeNames).contains(parentElement.nodeName)) ? parentElement : false; }, deselect: function() { var sel = this.getSelection(); sel && sel.removeAllRanges(); } }); })(wysihtml5); ;/** * Inspired by the rangy CSS Applier module written by Tim Down and licensed under the MIT license. * http://code.google.com/p/rangy/ * * changed in order to be able ... * - to use custom tags * - to detect and replace similar css classes via reg exp */ (function(wysihtml5, rangy) { var defaultTagName = "span"; var REG_EXP_WHITE_SPACE = /\s+/g; function hasClass(el, cssClass, regExp) { if (!el.className) { return false; } var matchingClassNames = el.className.match(regExp) || []; return matchingClassNames[matchingClassNames.length - 1] === cssClass; } function hasStyleAttr(el, regExp) { if (!el.getAttribute || !el.getAttribute('style')) { return false; } var matchingStyles = el.getAttribute('style').match(regExp); return (el.getAttribute('style').match(regExp)) ? true : false; } function addStyle(el, cssStyle, regExp) { if (el.getAttribute('style')) { removeStyle(el, regExp); if (el.getAttribute('style') && !(/^\s*$/).test(el.getAttribute('style'))) { el.setAttribute('style', cssStyle + ";" + el.getAttribute('style')); } else { el.setAttribute('style', cssStyle); } } else { el.setAttribute('style', cssStyle); } } function addClass(el, cssClass, regExp) { if (el.className) { removeClass(el, regExp); el.className += " " + cssClass; } else { el.className = cssClass; } } function removeClass(el, regExp) { if (el.className) { el.className = el.className.replace(regExp, ""); } } function removeStyle(el, regExp) { var s, s2 = []; if (el.getAttribute('style')) { s = el.getAttribute('style').split(';'); for (var i = s.length; i--;) { if (!s[i].match(regExp) && !(/^\s*$/).test(s[i])) { s2.push(s[i]); } } if (s2.length) { el.setAttribute('style', s2.join(';')); } else { el.removeAttribute('style'); } } } function getMatchingStyleRegexp(el, style) { var regexes = [], sSplit = style.split(';'), elStyle = el.getAttribute('style'); if (elStyle) { elStyle = elStyle.replace(/\s/gi, '').toLowerCase(); regexes.push(new RegExp("(^|\\s|;)" + style.replace(/\s/gi, '').replace(/([\(\)])/gi, "\\$1").toLowerCase().replace(";", ";?").replace(/rgb\\\((\d+),(\d+),(\d+)\\\)/gi, "\\s?rgb\\($1,\\s?$2,\\s?$3\\)"), "gi")); for (var i = sSplit.length; i-- > 0;) { if (!(/^\s*$/).test(sSplit[i])) { regexes.push(new RegExp("(^|\\s|;)" + sSplit[i].replace(/\s/gi, '').replace(/([\(\)])/gi, "\\$1").toLowerCase().replace(";", ";?").replace(/rgb\\\((\d+),(\d+),(\d+)\\\)/gi, "\\s?rgb\\($1,\\s?$2,\\s?$3\\)"), "gi")); } } for (var j = 0, jmax = regexes.length; j < jmax; j++) { if (elStyle.match(regexes[j])) { return regexes[j]; } } } return false; } function isMatchingAllready(node, tags, style, className) { if (style) { return getMatchingStyleRegexp(node, style); } else if (className) { return wysihtml5.dom.hasClass(node, className); } else { return rangy.dom.arrayContains(tags, node.tagName.toLowerCase()); } } function areMatchingAllready(nodes, tags, style, className) { for (var i = nodes.length; i--;) { if (!isMatchingAllready(nodes[i], tags, style, className)) { return false; } } return nodes.length ? true : false; } function removeOrChangeStyle(el, style, regExp) { var exactRegex = getMatchingStyleRegexp(el, style); if (exactRegex) { // adding same style value on property again removes style removeStyle(el, exactRegex); return "remove"; } else { // adding new style value changes value addStyle(el, style, regExp); return "change"; } } function hasSameClasses(el1, el2) { return el1.className.replace(REG_EXP_WHITE_SPACE, " ") == el2.className.replace(REG_EXP_WHITE_SPACE, " "); } function replaceWithOwnChildren(el) { var parent = el.parentNode; while (el.firstChild) { parent.insertBefore(el.firstChild, el); } parent.removeChild(el); } function elementsHaveSameNonClassAttributes(el1, el2) { if (el1.attributes.length != el2.attributes.length) { return false; } for (var i = 0, len = el1.attributes.length, attr1, attr2, name; i < len; ++i) { attr1 = el1.attributes[i]; name = attr1.name; if (name != "class") { attr2 = el2.attributes.getNamedItem(name); if (attr1.specified != attr2.specified) { return false; } if (attr1.specified && attr1.nodeValue !== attr2.nodeValue) { return false; } } } return true; } function isSplitPoint(node, offset) { if (rangy.dom.isCharacterDataNode(node)) { if (offset == 0) { return !!node.previousSibling; } else if (offset == node.length) { return !!node.nextSibling; } else { return true; } } return offset > 0 && offset < node.childNodes.length; } function splitNodeAt(node, descendantNode, descendantOffset, container) { var newNode; if (rangy.dom.isCharacterDataNode(descendantNode)) { if (descendantOffset == 0) { descendantOffset = rangy.dom.getNodeIndex(descendantNode); descendantNode = descendantNode.parentNode; } else if (descendantOffset == descendantNode.length) { descendantOffset = rangy.dom.getNodeIndex(descendantNode) + 1; descendantNode = descendantNode.parentNode; } else { newNode = rangy.dom.splitDataNode(descendantNode, descendantOffset); } } if (!newNode) { if (!container || descendantNode !== container) { newNode = descendantNode.cloneNode(false); if (newNode.id) { newNode.removeAttribute("id"); } var child; while ((child = descendantNode.childNodes[descendantOffset])) { newNode.appendChild(child); } rangy.dom.insertAfter(newNode, descendantNode); } } return (descendantNode == node) ? newNode : splitNodeAt(node, newNode.parentNode, rangy.dom.getNodeIndex(newNode), container); } function Merge(firstNode) { this.isElementMerge = (firstNode.nodeType == wysihtml5.ELEMENT_NODE); this.firstTextNode = this.isElementMerge ? firstNode.lastChild : firstNode; this.textNodes = [this.firstTextNode]; } Merge.prototype = { doMerge: function() { var textBits = [], textNode, parent, text; for (var i = 0, len = this.textNodes.length; i < len; ++i) { textNode = this.textNodes[i]; parent = textNode.parentNode; textBits[i] = textNode.data; if (i) { parent.removeChild(textNode); if (!parent.hasChildNodes()) { parent.parentNode.removeChild(parent); } } } this.firstTextNode.data = text = textBits.join(""); return text; }, getLength: function() { var i = this.textNodes.length, len = 0; while (i--) { len += this.textNodes[i].length; } return len; }, toString: function() { var textBits = []; for (var i = 0, len = this.textNodes.length; i < len; ++i) { textBits[i] = "'" + this.textNodes[i].data + "'"; } return "[Merge(" + textBits.join(",") + ")]"; } }; function HTMLApplier(tagNames, cssClass, similarClassRegExp, normalize, cssStyle, similarStyleRegExp, container) { this.tagNames = tagNames || [defaultTagName]; this.cssClass = cssClass || ((cssClass === false) ? false : ""); this.similarClassRegExp = similarClassRegExp; this.cssStyle = cssStyle || ""; this.similarStyleRegExp = similarStyleRegExp; this.normalize = normalize; this.applyToAnyTagName = false; this.container = container; } HTMLApplier.prototype = { getAncestorWithClass: function(node) { var cssClassMatch; while (node) { cssClassMatch = this.cssClass ? hasClass(node, this.cssClass, this.similarClassRegExp) : (this.cssStyle !== "") ? false : true; if (node.nodeType == wysihtml5.ELEMENT_NODE && node.getAttribute("contenteditable") != "false" && rangy.dom.arrayContains(this.tagNames, node.tagName.toLowerCase()) && cssClassMatch) { return node; } node = node.parentNode; } return false; }, // returns parents of node with given style attribute getAncestorWithStyle: function(node) { var cssStyleMatch; while (node) { cssStyleMatch = this.cssStyle ? hasStyleAttr(node, this.similarStyleRegExp) : false; if (node.nodeType == wysihtml5.ELEMENT_NODE && node.getAttribute("contenteditable") != "false" && rangy.dom.arrayContains(this.tagNames, node.tagName.toLowerCase()) && cssStyleMatch) { return node; } node = node.parentNode; } return false; }, getMatchingAncestor: function(node) { var ancestor = this.getAncestorWithClass(node), matchType = false; if (!ancestor) { ancestor = this.getAncestorWithStyle(node); if (ancestor) { matchType = "style"; } } else { if (this.cssStyle) { matchType = "class"; } } return { "element": ancestor, "type": matchType }; }, // Normalizes nodes after applying a CSS class to a Range. postApply: function(textNodes, range) { var firstNode = textNodes[0], lastNode = textNodes[textNodes.length - 1]; var merges = [], currentMerge; var rangeStartNode = firstNode, rangeEndNode = lastNode; var rangeStartOffset = 0, rangeEndOffset = lastNode.length; var textNode, precedingTextNode; for (var i = 0, len = textNodes.length; i < len; ++i) { textNode = textNodes[i]; precedingTextNode = null; if (textNode && textNode.parentNode) { precedingTextNode = this.getAdjacentMergeableTextNode(textNode.parentNode, false); } if (precedingTextNode) { if (!currentMerge) { currentMerge = new Merge(precedingTextNode); merges.push(currentMerge); } currentMerge.textNodes.push(textNode); if (textNode === firstNode) { rangeStartNode = currentMerge.firstTextNode; rangeStartOffset = rangeStartNode.length; } if (textNode === lastNode) { rangeEndNode = currentMerge.firstTextNode; rangeEndOffset = currentMerge.getLength(); } } else { currentMerge = null; } } // Test whether the first node after the range needs merging if(lastNode && lastNode.parentNode) { var nextTextNode = this.getAdjacentMergeableTextNode(lastNode.parentNode, true); if (nextTextNode) { if (!currentMerge) { currentMerge = new Merge(lastNode); merges.push(currentMerge); } currentMerge.textNodes.push(nextTextNode); } } // Do the merges if (merges.length) { for (i = 0, len = merges.length; i < len; ++i) { merges[i].doMerge(); } // Set the range boundaries range.setStart(rangeStartNode, rangeStartOffset); range.setEnd(rangeEndNode, rangeEndOffset); } }, getAdjacentMergeableTextNode: function(node, forward) { var isTextNode = (node.nodeType == wysihtml5.TEXT_NODE); var el = isTextNode ? node.parentNode : node; var adjacentNode; var propName = forward ? "nextSibling" : "previousSibling"; if (isTextNode) { // Can merge if the node's previous/next sibling is a text node adjacentNode = node[propName]; if (adjacentNode && adjacentNode.nodeType == wysihtml5.TEXT_NODE) { return adjacentNode; } } else { // Compare element with its sibling adjacentNode = el[propName]; if (adjacentNode && this.areElementsMergeable(node, adjacentNode)) { return adjacentNode[forward ? "firstChild" : "lastChild"]; } } return null; }, areElementsMergeable: function(el1, el2) { return rangy.dom.arrayContains(this.tagNames, (el1.tagName || "").toLowerCase()) && rangy.dom.arrayContains(this.tagNames, (el2.tagName || "").toLowerCase()) && hasSameClasses(el1, el2) && elementsHaveSameNonClassAttributes(el1, el2); }, createContainer: function(doc) { var el = doc.createElement(this.tagNames[0]); if (this.cssClass) { el.className = this.cssClass; } if (this.cssStyle) { el.setAttribute('style', this.cssStyle); } return el; }, applyToTextNode: function(textNode) { var parent = textNode.parentNode; if (parent.childNodes.length == 1 && rangy.dom.arrayContains(this.tagNames, parent.tagName.toLowerCase())) { if (this.cssClass) { addClass(parent, this.cssClass, this.similarClassRegExp); } if (this.cssStyle) { addStyle(parent, this.cssStyle, this.similarStyleRegExp); } } else { var el = this.createContainer(rangy.dom.getDocument(textNode)); textNode.parentNode.insertBefore(el, textNode); el.appendChild(textNode); } }, isRemovable: function(el) { return rangy.dom.arrayContains(this.tagNames, el.tagName.toLowerCase()) && wysihtml5.lang.string(el.className).trim() === "" && ( !el.getAttribute('style') || wysihtml5.lang.string(el.getAttribute('style')).trim() === "" ); }, undoToTextNode: function(textNode, range, ancestorWithClass, ancestorWithStyle) { var styleMode = (ancestorWithClass) ? false : true, ancestor = ancestorWithClass || ancestorWithStyle, styleChanged = false; if (!range.containsNode(ancestor)) { // Split out the portion of the ancestor from which we can remove the CSS class var ancestorRange = range.cloneRange(); ancestorRange.selectNode(ancestor); if (ancestorRange.isPointInRange(range.endContainer, range.endOffset) && isSplitPoint(range.endContainer, range.endOffset)) { splitNodeAt(ancestor, range.endContainer, range.endOffset, this.container); range.setEndAfter(ancestor); } if (ancestorRange.isPointInRange(range.startContainer, range.startOffset) && isSplitPoint(range.startContainer, range.startOffset)) { ancestor = splitNodeAt(ancestor, range.startContainer, range.startOffset, this.container); } } if (!styleMode && this.similarClassRegExp) { removeClass(ancestor, this.similarClassRegExp); } if (styleMode && this.similarStyleRegExp) { styleChanged = (removeOrChangeStyle(ancestor, this.cssStyle, this.similarStyleRegExp) === "change"); } if (this.isRemovable(ancestor) && !styleChanged) { replaceWithOwnChildren(ancestor); } }, applyToRange: function(range) { var textNodes; for (var ri = range.length; ri--;) { textNodes = range[ri].getNodes([wysihtml5.TEXT_NODE]); if (!textNodes.length) { try { var node = this.createContainer(range[ri].endContainer.ownerDocument); range[ri].surroundContents(node); this.selectNode(range[ri], node); return; } catch(e) {} } range[ri].splitBoundaries(); textNodes = range[ri].getNodes([wysihtml5.TEXT_NODE]); if (textNodes.length) { var textNode; for (var i = 0, len = textNodes.length; i < len; ++i) { textNode = textNodes[i]; if (!this.getMatchingAncestor(textNode).element) { this.applyToTextNode(textNode); } } range[ri].setStart(textNodes[0], 0); textNode = textNodes[textNodes.length - 1]; range[ri].setEnd(textNode, textNode.length); if (this.normalize) { this.postApply(textNodes, range[ri]); } } } }, undoToRange: function(range) { var textNodes, textNode, ancestorWithClass, ancestorWithStyle, ancestor; for (var ri = range.length; ri--;) { textNodes = range[ri].getNodes([wysihtml5.TEXT_NODE]); if (textNodes.length) { range[ri].splitBoundaries(); textNodes = range[ri].getNodes([wysihtml5.TEXT_NODE]); } else { var doc = range[ri].endContainer.ownerDocument, node = doc.createTextNode(wysihtml5.INVISIBLE_SPACE); range[ri].insertNode(node); range[ri].selectNode(node); textNodes = [node]; } for (var i = 0, len = textNodes.length; i < len; ++i) { if (range[ri].isValid()) { textNode = textNodes[i]; ancestor = this.getMatchingAncestor(textNode); if (ancestor.type === "style") { this.undoToTextNode(textNode, range[ri], false, ancestor.element); } else if (ancestor.element) { this.undoToTextNode(textNode, range[ri], ancestor.element); } } } if (len == 1) { this.selectNode(range[ri], textNodes[0]); } else { range[ri].setStart(textNodes[0], 0); textNode = textNodes[textNodes.length - 1]; range[ri].setEnd(textNode, textNode.length); if (this.normalize) { this.postApply(textNodes, range[ri]); } } } }, selectNode: function(range, node) { var isElement = node.nodeType === wysihtml5.ELEMENT_NODE, canHaveHTML = "canHaveHTML" in node ? node.canHaveHTML : true, content = isElement ? node.innerHTML : node.data, isEmpty = (content === "" || content === wysihtml5.INVISIBLE_SPACE); if (isEmpty && isElement && canHaveHTML) { // Make sure that caret is visible in node by inserting a zero width no breaking space try { node.innerHTML = wysihtml5.INVISIBLE_SPACE; } catch(e) {} } range.selectNodeContents(node); if (isEmpty && isElement) { range.collapse(false); } else if (isEmpty) { range.setStartAfter(node); range.setEndAfter(node); } }, getTextSelectedByRange: function(textNode, range) { var textRange = range.cloneRange(); textRange.selectNodeContents(textNode); var intersectionRange = textRange.intersection(range); var text = intersectionRange ? intersectionRange.toString() : ""; textRange.detach(); return text; }, isAppliedToRange: function(range) { var ancestors = [], appliedType = "full", ancestor, styleAncestor, textNodes; for (var ri = range.length; ri--;) { textNodes = range[ri].getNodes([wysihtml5.TEXT_NODE]); if (!textNodes.length) { ancestor = this.getMatchingAncestor(range[ri].startContainer).element; return (ancestor) ? { "elements": [ancestor], "coverage": appliedType } : false; } for (var i = 0, len = textNodes.length, selectedText; i < len; ++i) { selectedText = this.getTextSelectedByRange(textNodes[i], range[ri]); ancestor = this.getMatchingAncestor(textNodes[i]).element; if (ancestor && selectedText != "") { ancestors.push(ancestor); if (wysihtml5.dom.getTextNodes(ancestor, true).length === 1) { appliedType = "full"; } else if (appliedType === "full") { appliedType = "inline"; } } else if (!ancestor) { appliedType = "partial"; } } } return (ancestors.length) ? { "elements": ancestors, "coverage": appliedType } : false; }, toggleRange: function(range) { var isApplied = this.isAppliedToRange(range), parentsExactMatch; if (isApplied) { if (isApplied.coverage === "full") { this.undoToRange(range); } else if (isApplied.coverage === "inline") { parentsExactMatch = areMatchingAllready(isApplied.elements, this.tagNames, this.cssStyle, this.cssClass); this.undoToRange(range); if (!parentsExactMatch) { this.applyToRange(range); } } else { // partial if (!areMatchingAllready(isApplied.elements, this.tagNames, this.cssStyle, this.cssClass)) { this.undoToRange(range); } this.applyToRange(range); } } else { this.applyToRange(range); } } }; wysihtml5.selection.HTMLApplier = HTMLApplier; })(wysihtml5, rangy); ;/** * Rich Text Query/Formatting Commands * * @example * var commands = new wysihtml5.Commands(editor); */ wysihtml5.Commands = Base.extend( /** @scope wysihtml5.Commands.prototype */ { constructor: function(editor) { this.editor = editor; this.composer = editor.composer; this.doc = this.composer.doc; }, /** * Check whether the browser supports the given command * * @param {String} command The command string which to check (eg. "bold", "italic", "insertUnorderedList") * @example * commands.supports("createLink"); */ support: function(command) { return wysihtml5.browser.supportsCommand(this.doc, command); }, /** * Check whether the browser supports the given command * * @param {String} command The command string which to execute (eg. "bold", "italic", "insertUnorderedList") * @param {String} [value] The command value parameter, needed for some commands ("createLink", "insertImage", ...), optional for commands that don't require one ("bold", "underline", ...) * @example * commands.exec("insertImage", "http://a1.twimg.com/profile_images/113868655/schrei_twitter_reasonably_small.jpg"); */ exec: function(command, value) { var obj = wysihtml5.commands[command], args = wysihtml5.lang.array(arguments).get(), method = obj && obj.exec, result = null; this.editor.fire("beforecommand:composer"); if (method) { args.unshift(this.composer); result = method.apply(obj, args); } else { try { // try/catch for buggy firefox result = this.doc.execCommand(command, false, value); } catch(e) {} } this.editor.fire("aftercommand:composer"); return result; }, /** * Check whether the current command is active * If the caret is within a bold text, then calling this with command "bold" should return true * * @param {String} command The command string which to check (eg. "bold", "italic", "insertUnorderedList") * @param {String} [commandValue] The command value parameter (eg. for "insertImage" the image src) * @return {Boolean} Whether the command is active * @example * var isCurrentSelectionBold = commands.state("bold"); */ state: function(command, commandValue) { var obj = wysihtml5.commands[command], args = wysihtml5.lang.array(arguments).get(), method = obj && obj.state; if (method) { args.unshift(this.composer); return method.apply(obj, args); } else { try { // try/catch for buggy firefox return this.doc.queryCommandState(command); } catch(e) { return false; } } }, /* Get command state parsed value if command has stateValue parsing function */ stateValue: function(command) { var obj = wysihtml5.commands[command], args = wysihtml5.lang.array(arguments).get(), method = obj && obj.stateValue; if (method) { args.unshift(this.composer); return method.apply(obj, args); } else { return false; } } }); ;wysihtml5.commands.bold = { exec: function(composer, command) { wysihtml5.commands.formatInline.execWithToggle(composer, command, "b"); }, state: function(composer, command) { // element.ownerDocument.queryCommandState("bold") results: // firefox: only <b> // chrome: <b>, <strong>, <h1>, <h2>, ... // ie: <b>, <strong> // opera: <b>, <strong> return wysihtml5.commands.formatInline.state(composer, command, "b"); } }; ;(function(wysihtml5) { var undef, NODE_NAME = "A", dom = wysihtml5.dom; function _format(composer, attributes) { var doc = composer.doc, tempClass = "_wysihtml5-temp-" + (+new Date()), tempClassRegExp = /non-matching-class/g, i = 0, length, anchors, anchor, hasElementChild, isEmpty, elementToSetCaretAfter, textContent, whiteSpace, j; wysihtml5.commands.formatInline.exec(composer, undef, NODE_NAME, tempClass, tempClassRegExp, undef, undef, true, true); anchors = doc.querySelectorAll(NODE_NAME + "." + tempClass); length = anchors.length; for (; i<length; i++) { anchor = anchors[i]; anchor.removeAttribute("class"); for (j in attributes) { // Do not set attribute "text" as it is meant for setting string value if created link has no textual data if (j !== "text") { anchor.setAttribute(j, attributes[j]); } } } elementToSetCaretAfter = anchor; if (length === 1) { textContent = dom.getTextContent(anchor); hasElementChild = !!anchor.querySelector("*"); isEmpty = textContent === "" || textContent === wysihtml5.INVISIBLE_SPACE; if (!hasElementChild && isEmpty) { dom.setTextContent(anchor, attributes.text || anchor.href); whiteSpace = doc.createTextNode(" "); composer.selection.setAfter(anchor); dom.insert(whiteSpace).after(anchor); elementToSetCaretAfter = whiteSpace; } } composer.selection.setAfter(elementToSetCaretAfter); } // Changes attributes of links function _changeLinks(composer, anchors, attributes) { var oldAttrs; for (var a = anchors.length; a--;) { // Remove all old attributes oldAttrs = anchors[a].attributes; for (var oa = oldAttrs.length; oa--;) { anchors[a].removeAttribute(oldAttrs.item(oa).name); } // Set new attributes for (var j in attributes) { if (attributes.hasOwnProperty(j)) { anchors[a].setAttribute(j, attributes[j]); } } } } wysihtml5.commands.createLink = { /** * TODO: Use HTMLApplier or formatInline here * * Turns selection into a link * If selection is already a link, it just changes the attributes * * @example * // either ... * wysihtml5.commands.createLink.exec(composer, "createLink", "http://www.google.de"); * // ... or ... * wysihtml5.commands.createLink.exec(composer, "createLink", { href: "http://www.google.de", target: "_blank" }); */ exec: function(composer, command, value) { var anchors = this.state(composer, command); if (anchors) { // Selection contains links then change attributes of these links composer.selection.executeAndRestore(function() { _changeLinks(composer, anchors, value); }); } else { // Create links value = typeof(value) === "object" ? value : { href: value }; _format(composer, value); } }, state: function(composer, command) { return wysihtml5.commands.formatInline.state(composer, command, "A"); } }; })(wysihtml5); ;(function(wysihtml5) { var dom = wysihtml5.dom; function _removeFormat(composer, anchors) { var length = anchors.length, i = 0, anchor, codeElement, textContent; for (; i<length; i++) { anchor = anchors[i]; codeElement = dom.getParentElement(anchor, { nodeName: "code" }); textContent = dom.getTextContent(anchor); // if <a> contains url-like text content, rename it to <code> to prevent re-autolinking // else replace <a> with its childNodes if (textContent.match(dom.autoLink.URL_REG_EXP) && !codeElement) { // <code> element is used to prevent later auto-linking of the content codeElement = dom.renameElement(anchor, "code"); } else { dom.replaceWithChildNodes(anchor); } } } wysihtml5.commands.removeLink = { /* * If selection is a link, it removes the link and wraps it with a <code> element * The <code> element is needed to avoid auto linking * * @example * wysihtml5.commands.createLink.exec(composer, "removeLink"); */ exec: function(composer, command) { var anchors = this.state(composer, command); if (anchors) { composer.selection.executeAndRestore(function() { _removeFormat(composer, anchors); }); } }, state: function(composer, command) { return wysihtml5.commands.formatInline.state(composer, command, "A"); } }; })(wysihtml5); ;/** * document.execCommand("fontSize") will create either inline styles (firefox, chrome) or use font tags * which we don't want * Instead we set a css class */ (function(wysihtml5) { var REG_EXP = /wysiwyg-font-size-[0-9a-z\-]+/g; wysihtml5.commands.fontSize = { exec: function(composer, command, size) { wysihtml5.commands.formatInline.execWithToggle(composer, command, "span", "wysiwyg-font-size-" + size, REG_EXP); }, state: function(composer, command, size) { return wysihtml5.commands.formatInline.state(composer, command, "span", "wysiwyg-font-size-" + size, REG_EXP); } }; })(wysihtml5); ;/* In case font size adjustment to any number defined by user is preferred, we cannot use classes and must use inline styles. */ (function(wysihtml5) { var REG_EXP = /(\s|^)font-size\s*:\s*[^;\s]+;?/gi; wysihtml5.commands.fontSizeStyle = { exec: function(composer, command, size) { size = (typeof(size) == "object") ? size.size : size; if (!(/^\s*$/).test(size)) { wysihtml5.commands.formatInline.execWithToggle(composer, command, "span", false, false, "font-size:" + size, REG_EXP); } }, state: function(composer, command, size) { return wysihtml5.commands.formatInline.state(composer, command, "span", false, false, "font-size", REG_EXP); }, stateValue: function(composer, command) { var st = this.state(composer, command), styleStr, fontsizeMatches, val = false; if (st && wysihtml5.lang.object(st).isArray()) { st = st[0]; } if (st) { styleStr = st.getAttribute('style'); if (styleStr) { return wysihtml5.quirks.styleParser.parseFontSize(styleStr); } } return false; } }; })(wysihtml5); ;/** * document.execCommand("foreColor") will create either inline styles (firefox, chrome) or use font tags * which we don't want * Instead we set a css class */ (function(wysihtml5) { var REG_EXP = /wysiwyg-color-[0-9a-z]+/g; wysihtml5.commands.foreColor = { exec: function(composer, command, color) { wysihtml5.commands.formatInline.execWithToggle(composer, command, "span", "wysiwyg-color-" + color, REG_EXP); }, state: function(composer, command, color) { return wysihtml5.commands.formatInline.state(composer, command, "span", "wysiwyg-color-" + color, REG_EXP); } }; })(wysihtml5); ;/** * document.execCommand("foreColor") will create either inline styles (firefox, chrome) or use font tags * which we don't want * Instead we set a css class */ (function(wysihtml5) { var REG_EXP = /(\s|^)color\s*:\s*[^;\s]+;?/gi; wysihtml5.commands.foreColorStyle = { exec: function(composer, command, color) { var colorVals = wysihtml5.quirks.styleParser.parseColor((typeof(color) == "object") ? "color:" + color.color : "color:" + color, "color"), colString; if (colorVals) { colString = "color: rgb(" + colorVals[0] + ',' + colorVals[1] + ',' + colorVals[2] + ');'; if (colorVals[3] !== 1) { colString += "color: rgba(" + colorVals[0] + ',' + colorVals[1] + ',' + colorVals[2] + ',' + colorVals[3] + ');'; } wysihtml5.commands.formatInline.execWithToggle(composer, command, "span", false, false, colString, REG_EXP); } }, state: function(composer, command) { return wysihtml5.commands.formatInline.state(composer, command, "span", false, false, "color", REG_EXP); }, stateValue: function(composer, command, props) { var st = this.state(composer, command), colorStr; if (st && wysihtml5.lang.object(st).isArray()) { st = st[0]; } if (st) { colorStr = st.getAttribute('style'); if (colorStr) { if (colorStr) { val = wysihtml5.quirks.styleParser.parseColor(colorStr, "color"); return wysihtml5.quirks.styleParser.unparseColor(val, props); } } } return false; } }; })(wysihtml5); ;/* In case background adjustment to any color defined by user is preferred, we cannot use classes and must use inline styles. */ (function(wysihtml5) { var REG_EXP = /(\s|^)background-color\s*:\s*[^;\s]+;?/gi; wysihtml5.commands.bgColorStyle = { exec: function(composer, command, color) { var colorVals = wysihtml5.quirks.styleParser.parseColor((typeof(color) == "object") ? "background-color:" + color.color : "background-color:" + color, "background-color"), colString; if (colorVals) { colString = "background-color: rgb(" + colorVals[0] + ',' + colorVals[1] + ',' + colorVals[2] + ');'; if (colorVals[3] !== 1) { colString += "background-color: rgba(" + colorVals[0] + ',' + colorVals[1] + ',' + colorVals[2] + ',' + colorVals[3] + ');'; } wysihtml5.commands.formatInline.execWithToggle(composer, command, "span", false, false, colString, REG_EXP); } }, state: function(composer, command) { return wysihtml5.commands.formatInline.state(composer, command, "span", false, false, "background-color", REG_EXP); }, stateValue: function(composer, command, props) { var st = this.state(composer, command), colorStr, val = false; if (st && wysihtml5.lang.object(st).isArray()) { st = st[0]; } if (st) { colorStr = st.getAttribute('style'); if (colorStr) { val = wysihtml5.quirks.styleParser.parseColor(colorStr, "background-color"); return wysihtml5.quirks.styleParser.unparseColor(val, props); } } return false; } }; })(wysihtml5); ;(function(wysihtml5) { var dom = wysihtml5.dom, // Following elements are grouped // when the caret is within a H1 and the H4 is invoked, the H1 should turn into H4 // instead of creating a H4 within a H1 which would result in semantically invalid html BLOCK_ELEMENTS_GROUP = ["H1", "H2", "H3", "H4", "H5", "H6", "P", "PRE", "DIV"]; /** * Remove similiar classes (based on classRegExp) * and add the desired class name */ function _addClass(element, className, classRegExp) { if (element.className) { _removeClass(element, classRegExp); element.className = wysihtml5.lang.string(element.className + " " + className).trim(); } else { element.className = className; } } function _addStyle(element, cssStyle, styleRegExp) { _removeStyle(element, styleRegExp); if (element.getAttribute('style')) { element.setAttribute('style', wysihtml5.lang.string(element.getAttribute('style') + " " + cssStyle).trim()); } else { element.setAttribute('style', cssStyle); } } function _removeClass(element, classRegExp) { var ret = classRegExp.test(element.className); element.className = element.className.replace(classRegExp, ""); if (wysihtml5.lang.string(element.className).trim() == '') { element.removeAttribute('class'); } return ret; } function _removeStyle(element, styleRegExp) { var ret = styleRegExp.test(element.getAttribute('style')); element.setAttribute('style', (element.getAttribute('style') || "").replace(styleRegExp, "")); if (wysihtml5.lang.string(element.getAttribute('style') || "").trim() == '') { element.removeAttribute('style'); } return ret; } function _removeLastChildIfLineBreak(node) { var lastChild = node.lastChild; if (lastChild && _isLineBreak(lastChild)) { lastChild.parentNode.removeChild(lastChild); } } function _isLineBreak(node) { return node.nodeName === "BR"; } /** * Execute native query command * and if necessary modify the inserted node's className */ function _execCommand(doc, composer, command, nodeName, className) { var ranges = composer.selection.getOwnRanges(); for (var i = ranges.length; i--;){ composer.selection.getSelection().removeAllRanges(); composer.selection.setSelection(ranges[i]); if (className) { var eventListener = dom.observe(doc, "DOMNodeInserted", function(event) { var target = event.target, displayStyle; if (target.nodeType !== wysihtml5.ELEMENT_NODE) { return; } displayStyle = dom.getStyle("display").from(target); if (displayStyle.substr(0, 6) !== "inline") { // Make sure that only block elements receive the given class target.className += " " + className; } }); } doc.execCommand(command, false, nodeName); if (eventListener) { eventListener.stop(); } } } function _selectionWrap(composer, options) { if (composer.selection.isCollapsed()) { composer.selection.selectLine(); } var surroundedNodes = composer.selection.surround(options); for (var i = 0, imax = surroundedNodes.length; i < imax; i++) { wysihtml5.dom.lineBreaks(surroundedNodes[i]).remove(); _removeLastChildIfLineBreak(surroundedNodes[i]); } // rethink restoring selection // composer.selection.selectNode(element, wysihtml5.browser.displaysCaretInEmptyContentEditableCorrectly()); } function _hasClasses(element) { return !!wysihtml5.lang.string(element.className).trim(); } function _hasStyles(element) { return !!wysihtml5.lang.string(element.getAttribute('style') || '').trim(); } wysihtml5.commands.formatBlock = { exec: function(composer, command, nodeName, className, classRegExp, cssStyle, styleRegExp) { var doc = composer.doc, blockElements = this.state(composer, command, nodeName, className, classRegExp, cssStyle, styleRegExp), useLineBreaks = composer.config.useLineBreaks, defaultNodeName = useLineBreaks ? "DIV" : "P", selectedNodes, classRemoveAction, blockRenameFound, styleRemoveAction, blockElement; nodeName = typeof(nodeName) === "string" ? nodeName.toUpperCase() : nodeName; if (blockElements.length) { composer.selection.executeAndRestoreRangy(function() { for (var b = blockElements.length; b--;) { if (classRegExp) { classRemoveAction = _removeClass(blockElements[b], classRegExp); } if (styleRegExp) { styleRemoveAction = _removeStyle(blockElements[b], styleRegExp); } if ((styleRemoveAction || classRemoveAction) && nodeName === null && blockElements[b].nodeName != defaultNodeName) { // dont rename or remove element when just setting block formating class or style return; } var hasClasses = _hasClasses(blockElements[b]), hasStyles = _hasStyles(blockElements[b]); if (!hasClasses && !hasStyles && (useLineBreaks || nodeName === "P")) { // Insert a line break afterwards and beforewards when there are siblings // that are not of type line break or block element wysihtml5.dom.lineBreaks(blockElements[b]).add(); dom.replaceWithChildNodes(blockElements[b]); } else { // Make sure that styling is kept by renaming the element to a <div> or <p> and copying over the class name dom.renameElement(blockElements[b], nodeName === "P" ? "DIV" : defaultNodeName); } } }); return; } // Find similiar block element and rename it (<h2 class="foo"></h2> => <h1 class="foo"></h1>) if (nodeName === null || wysihtml5.lang.array(BLOCK_ELEMENTS_GROUP).contains(nodeName)) { selectedNodes = composer.selection.findNodesInSelection(BLOCK_ELEMENTS_GROUP).concat(composer.selection.getSelectedOwnNodes()); composer.selection.executeAndRestoreRangy(function() { for (var n = selectedNodes.length; n--;) { blockElement = dom.getParentElement(selectedNodes[n], { nodeName: BLOCK_ELEMENTS_GROUP }); if (blockElement == composer.element) { blockElement = null; } if (blockElement) { // Rename current block element to new block element and add class if (nodeName) { blockElement = dom.renameElement(blockElement, nodeName); } if (className) { _addClass(blockElement, className, classRegExp); } if (cssStyle) { _addStyle(blockElement, cssStyle, styleRegExp); } blockRenameFound = true; } } }); if (blockRenameFound) { return; } } _selectionWrap(composer, { "nodeName": (nodeName || defaultNodeName), "className": className || null, "cssStyle": cssStyle || null }); }, state: function(composer, command, nodeName, className, classRegExp, cssStyle, styleRegExp) { var nodes = composer.selection.getSelectedOwnNodes(), parents = [], parent; nodeName = typeof(nodeName) === "string" ? nodeName.toUpperCase() : nodeName; //var selectedNode = composer.selection.getSelectedNode(); for (var i = 0, maxi = nodes.length; i < maxi; i++) { parent = dom.getParentElement(nodes[i], { nodeName: nodeName, className: className, classRegExp: classRegExp, cssStyle: cssStyle, styleRegExp: styleRegExp }); if (parent && wysihtml5.lang.array(parents).indexOf(parent) == -1) { parents.push(parent); } } if (parents.length == 0) { return false; } return parents; } }; })(wysihtml5); ;/* Formats block for as a <pre><code class="classname"></code></pre> block * Useful in conjuction for sytax highlight utility: highlight.js * * Usage: * * editorInstance.composer.commands.exec("formatCode", "language-html"); */ wysihtml5.commands.formatCode = { exec: function(composer, command, classname) { var pre = this.state(composer), code, range, selectedNodes; if (pre) { // caret is already within a <pre><code>...</code></pre> composer.selection.executeAndRestore(function() { code = pre.querySelector("code"); wysihtml5.dom.replaceWithChildNodes(pre); if (code) { wysihtml5.dom.replaceWithChildNodes(code); } }); } else { // Wrap in <pre><code>...</code></pre> range = composer.selection.getRange(); selectedNodes = range.extractContents(); pre = composer.doc.createElement("pre"); code = composer.doc.createElement("code"); if (classname) { code.className = classname; } pre.appendChild(code); code.appendChild(selectedNodes); range.insertNode(pre); composer.selection.selectNode(pre); } }, state: function(composer) { var selectedNode = composer.selection.getSelectedNode(); if (selectedNode && selectedNode.nodeName && selectedNode.nodeName == "PRE"&& selectedNode.firstChild && selectedNode.firstChild.nodeName && selectedNode.firstChild.nodeName == "CODE") { return selectedNode; } else { return wysihtml5.dom.getParentElement(selectedNode, { nodeName: "CODE" }) && wysihtml5.dom.getParentElement(selectedNode, { nodeName: "PRE" }); } } };;/** * formatInline scenarios for tag "B" (| = caret, |foo| = selected text) * * #1 caret in unformatted text: * abcdefg| * output: * abcdefg<b>|</b> * * #2 unformatted text selected: * abc|deg|h * output: * abc<b>|deg|</b>h * * #3 unformatted text selected across boundaries: * ab|c <span>defg|h</span> * output: * ab<b>|c </b><span><b>defg</b>|h</span> * * #4 formatted text entirely selected * <b>|abc|</b> * output: * |abc| * * #5 formatted text partially selected * <b>ab|c|</b> * output: * <b>ab</b>|c| * * #6 formatted text selected across boundaries * <span>ab|c</span> <b>de|fgh</b> * output: * <span>ab|c</span> de|<b>fgh</b> */ (function(wysihtml5) { var // Treat <b> as <strong> and vice versa ALIAS_MAPPING = { "strong": "b", "em": "i", "b": "strong", "i": "em" }, htmlApplier = {}; function _getTagNames(tagName) { var alias = ALIAS_MAPPING[tagName]; return alias ? [tagName.toLowerCase(), alias.toLowerCase()] : [tagName.toLowerCase()]; } function _getApplier(tagName, className, classRegExp, cssStyle, styleRegExp, container) { var identifier = tagName; if (className) { identifier += ":" + className; } if (cssStyle) { identifier += ":" + cssStyle; } if (!htmlApplier[identifier]) { htmlApplier[identifier] = new wysihtml5.selection.HTMLApplier(_getTagNames(tagName), className, classRegExp, true, cssStyle, styleRegExp, container); } return htmlApplier[identifier]; } wysihtml5.commands.formatInline = { exec: function(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp, dontRestoreSelect, noCleanup) { var range = composer.selection.createRange(), ownRanges = composer.selection.getOwnRanges(); if (!ownRanges || ownRanges.length == 0) { return false; } composer.selection.getSelection().removeAllRanges(); _getApplier(tagName, className, classRegExp, cssStyle, styleRegExp, composer.element).toggleRange(ownRanges); if (!dontRestoreSelect) { range.setStart(ownRanges[0].startContainer, ownRanges[0].startOffset); range.setEnd( ownRanges[ownRanges.length - 1].endContainer, ownRanges[ownRanges.length - 1].endOffset ); composer.selection.setSelection(range); composer.selection.executeAndRestore(function() { if (!noCleanup) { composer.cleanUp(); } }, true, true); } else if (!noCleanup) { composer.cleanUp(); } }, // Executes so that if collapsed caret is in a state and executing that state it should unformat that state // It is achieved by selecting the entire state element before executing. // This works on built in contenteditable inline format commands execWithToggle: function(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp) { var that = this; if (this.state(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp) && composer.selection.isCollapsed() && !composer.selection.caretIsLastInSelection() && !composer.selection.caretIsFirstInSelection() ) { var state_element = that.state(composer, command, tagName, className, classRegExp)[0]; composer.selection.executeAndRestoreRangy(function() { var parent = state_element.parentNode; composer.selection.selectNode(state_element, true); wysihtml5.commands.formatInline.exec(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp, true, true); }); } else { if (this.state(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp) && !composer.selection.isCollapsed()) { composer.selection.executeAndRestoreRangy(function() { wysihtml5.commands.formatInline.exec(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp, true, true); }); } else { wysihtml5.commands.formatInline.exec(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp); } } }, state: function(composer, command, tagName, className, classRegExp, cssStyle, styleRegExp) { var doc = composer.doc, aliasTagName = ALIAS_MAPPING[tagName] || tagName, ownRanges, isApplied; // Check whether the document contains a node with the desired tagName if (!wysihtml5.dom.hasElementWithTagName(doc, tagName) && !wysihtml5.dom.hasElementWithTagName(doc, aliasTagName)) { return false; } // Check whether the document contains a node with the desired className if (className && !wysihtml5.dom.hasElementWithClassName(doc, className)) { return false; } ownRanges = composer.selection.getOwnRanges(); if (!ownRanges || ownRanges.length === 0) { return false; } isApplied = _getApplier(tagName, className, classRegExp, cssStyle, styleRegExp, composer.element).isAppliedToRange(ownRanges); return (isApplied && isApplied.elements) ? isApplied.elements : false; } }; })(wysihtml5); ;(function(wysihtml5) { wysihtml5.commands.insertBlockQuote = { exec: function(composer, command) { var state = this.state(composer, command), endToEndParent = composer.selection.isEndToEndInNode(['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P']), prevNode, nextNode; composer.selection.executeAndRestore(function() { if (state) { if (composer.config.useLineBreaks) { wysihtml5.dom.lineBreaks(state).add(); } wysihtml5.dom.unwrap(state); } else { if (composer.selection.isCollapsed()) { composer.selection.selectLine(); } if (endToEndParent) { var qouteEl = endToEndParent.ownerDocument.createElement('blockquote'); wysihtml5.dom.insert(qouteEl).after(endToEndParent); qouteEl.appendChild(endToEndParent); } else { composer.selection.surround({nodeName: "blockquote"}); } } }); }, state: function(composer, command) { var selectedNode = composer.selection.getSelectedNode(), node = wysihtml5.dom.getParentElement(selectedNode, { nodeName: "BLOCKQUOTE" }, false, composer.element); return (node) ? node : false; } }; })(wysihtml5);;wysihtml5.commands.insertHTML = { exec: function(composer, command, html) { if (composer.commands.support(command)) { composer.doc.execCommand(command, false, html); } else { composer.selection.insertHTML(html); } }, state: function() { return false; } }; ;(function(wysihtml5) { var NODE_NAME = "IMG"; wysihtml5.commands.insertImage = { /** * Inserts an <img> * If selection is already an image link, it removes it * * @example * // either ... * wysihtml5.commands.insertImage.exec(composer, "insertImage", "http://www.google.de/logo.jpg"); * // ... or ... * wysihtml5.commands.insertImage.exec(composer, "insertImage", { src: "http://www.google.de/logo.jpg", title: "foo" }); */ exec: function(composer, command, value) { value = typeof(value) === "object" ? value : { src: value }; var doc = composer.doc, image = this.state(composer), textNode, parent; if (image) { // Image already selected, set the caret before it and delete it composer.selection.setBefore(image); parent = image.parentNode; parent.removeChild(image); // and it's parent <a> too if it hasn't got any other relevant child nodes wysihtml5.dom.removeEmptyTextNodes(parent); if (parent.nodeName === "A" && !parent.firstChild) { composer.selection.setAfter(parent); parent.parentNode.removeChild(parent); } // firefox and ie sometimes don't remove the image handles, even though the image got removed wysihtml5.quirks.redraw(composer.element); return; } image = doc.createElement(NODE_NAME); for (var i in value) { image.setAttribute(i === "className" ? "class" : i, value[i]); } composer.selection.insertNode(image); if (wysihtml5.browser.hasProblemsSettingCaretAfterImg()) { textNode = doc.createTextNode(wysihtml5.INVISIBLE_SPACE); composer.selection.insertNode(textNode); composer.selection.setAfter(textNode); } else { composer.selection.setAfter(image); } }, state: function(composer) { var doc = composer.doc, selectedNode, text, imagesInSelection; if (!wysihtml5.dom.hasElementWithTagName(doc, NODE_NAME)) { return false; } selectedNode = composer.selection.getSelectedNode(); if (!selectedNode) { return false; } if (selectedNode.nodeName === NODE_NAME) { // This works perfectly in IE return selectedNode; } if (selectedNode.nodeType !== wysihtml5.ELEMENT_NODE) { return false; } text = composer.selection.getText(); text = wysihtml5.lang.string(text).trim(); if (text) { return false; } imagesInSelection = composer.selection.getNodes(wysihtml5.ELEMENT_NODE, function(node) { return node.nodeName === "IMG"; }); if (imagesInSelection.length !== 1) { return false; } return imagesInSelection[0]; } }; })(wysihtml5); ;(function(wysihtml5) { var LINE_BREAK = "<br>" + (wysihtml5.browser.needsSpaceAfterLineBreak() ? " " : ""); wysihtml5.commands.insertLineBreak = { exec: function(composer, command) { if (composer.commands.support(command)) { composer.doc.execCommand(command, false, null); if (!wysihtml5.browser.autoScrollsToCaret()) { composer.selection.scrollIntoView(); } } else { composer.commands.exec("insertHTML", LINE_BREAK); } }, state: function() { return false; } }; })(wysihtml5); ;wysihtml5.commands.insertOrderedList = { exec: function(composer, command) { wysihtml5.commands.insertList.exec(composer, command, "OL"); }, state: function(composer, command) { return wysihtml5.commands.insertList.state(composer, command, "OL"); } }; ;wysihtml5.commands.insertUnorderedList = { exec: function(composer, command) { wysihtml5.commands.insertList.exec(composer, command, "UL"); }, state: function(composer, command) { return wysihtml5.commands.insertList.state(composer, command, "UL"); } }; ;wysihtml5.commands.insertList = (function(wysihtml5) { var isNode = function(node, name) { if (node && node.nodeName) { if (typeof name === 'string') { name = [name]; } for (var n = name.length; n--;) { if (node.nodeName === name[n]) { return true; } } } return false; }; var findListEl = function(node, nodeName, composer) { var ret = { el: null, other: false }; if (node) { var parentLi = wysihtml5.dom.getParentElement(node, { nodeName: "LI" }), otherNodeName = (nodeName === "UL") ? "OL" : "UL"; if (isNode(node, nodeName)) { ret.el = node; } else if (isNode(node, otherNodeName)) { ret = { el: node, other: true }; } else if (parentLi) { if (isNode(parentLi.parentNode, nodeName)) { ret.el = parentLi.parentNode; } else if (isNode(parentLi.parentNode, otherNodeName)) { ret = { el : parentLi.parentNode, other: true }; } } } // do not count list elements outside of composer if (ret.el && !composer.element.contains(ret.el)) { ret.el = null; } return ret; }; var handleSameTypeList = function(el, nodeName, composer) { var otherNodeName = (nodeName === "UL") ? "OL" : "UL", otherLists, innerLists; // Unwrap list // <ul><li>foo</li><li>bar</li></ul> // becomes: // foo<br>bar<br> composer.selection.executeAndRestore(function() { var otherLists = getListsInSelection(otherNodeName, composer); if (otherLists.length) { for (var l = otherLists.length; l--;) { wysihtml5.dom.renameElement(otherLists[l], nodeName.toLowerCase()); } } else { innerLists = getListsInSelection(['OL', 'UL'], composer); for (var i = innerLists.length; i--;) { wysihtml5.dom.resolveList(innerLists[i], composer.config.useLineBreaks); } wysihtml5.dom.resolveList(el, composer.config.useLineBreaks); } }); }; var handleOtherTypeList = function(el, nodeName, composer) { var otherNodeName = (nodeName === "UL") ? "OL" : "UL"; // Turn an ordered list into an unordered list // <ol><li>foo</li><li>bar</li></ol> // becomes: // <ul><li>foo</li><li>bar</li></ul> // Also rename other lists in selection composer.selection.executeAndRestore(function() { var renameLists = [el].concat(getListsInSelection(otherNodeName, composer)); // All selection inner lists get renamed too for (var l = renameLists.length; l--;) { wysihtml5.dom.renameElement(renameLists[l], nodeName.toLowerCase()); } }); }; var getListsInSelection = function(nodeName, composer) { var ranges = composer.selection.getOwnRanges(), renameLists = []; for (var r = ranges.length; r--;) { renameLists = renameLists.concat(ranges[r].getNodes([1], function(node) { return isNode(node, nodeName); })); } return renameLists; }; var createListFallback = function(nodeName, composer) { // Fallback for Create list composer.selection.executeAndRestoreRangy(function() { var tempClassName = "_wysihtml5-temp-" + new Date().getTime(), tempElement = composer.selection.deblockAndSurround({ "nodeName": "div", "className": tempClassName }), isEmpty, list; // This space causes new lists to never break on enter var INVISIBLE_SPACE_REG_EXP = /\uFEFF/g; tempElement.innerHTML = tempElement.innerHTML.replace(INVISIBLE_SPACE_REG_EXP, ""); if (tempElement) { isEmpty = wysihtml5.lang.array(["", "<br>", wysihtml5.INVISIBLE_SPACE]).contains(tempElement.innerHTML); list = wysihtml5.dom.convertToList(tempElement, nodeName.toLowerCase(), composer.parent.config.uneditableContainerClassname); if (isEmpty) { composer.selection.selectNode(list.querySelector("li"), true); } } }); }; return { exec: function(composer, command, nodeName) { var doc = composer.doc, cmd = (nodeName === "OL") ? "insertOrderedList" : "insertUnorderedList", selectedNode = composer.selection.getSelectedNode(), list = findListEl(selectedNode, nodeName, composer); if (!list.el) { if (composer.commands.support(cmd)) { doc.execCommand(cmd, false, null); } else { createListFallback(nodeName, composer); } } else if (list.other) { handleOtherTypeList(list.el, nodeName, composer); } else { handleSameTypeList(list.el, nodeName, composer); } }, state: function(composer, command, nodeName) { var selectedNode = composer.selection.getSelectedNode(), list = findListEl(selectedNode, nodeName, composer); return (list.el && !list.other) ? list.el : false; } }; })(wysihtml5);;wysihtml5.commands.italic = { exec: function(composer, command) { wysihtml5.commands.formatInline.execWithToggle(composer, command, "i"); }, state: function(composer, command) { // element.ownerDocument.queryCommandState("italic") results: // firefox: only <i> // chrome: <i>, <em>, <blockquote>, ... // ie: <i>, <em> // opera: only <i> return wysihtml5.commands.formatInline.state(composer, command, "i"); } }; ;(function(wysihtml5) { var CLASS_NAME = "wysiwyg-text-align-center", REG_EXP = /wysiwyg-text-align-[0-9a-z]+/g; wysihtml5.commands.justifyCenter = { exec: function(composer, command) { return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, CLASS_NAME, REG_EXP); }, state: function(composer, command) { return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, CLASS_NAME, REG_EXP); } }; })(wysihtml5); ;(function(wysihtml5) { var CLASS_NAME = "wysiwyg-text-align-left", REG_EXP = /wysiwyg-text-align-[0-9a-z]+/g; wysihtml5.commands.justifyLeft = { exec: function(composer, command) { return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, CLASS_NAME, REG_EXP); }, state: function(composer, command) { return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, CLASS_NAME, REG_EXP); } }; })(wysihtml5); ;(function(wysihtml5) { var CLASS_NAME = "wysiwyg-text-align-right", REG_EXP = /wysiwyg-text-align-[0-9a-z]+/g; wysihtml5.commands.justifyRight = { exec: function(composer, command) { return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, CLASS_NAME, REG_EXP); }, state: function(composer, command) { return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, CLASS_NAME, REG_EXP); } }; })(wysihtml5); ;(function(wysihtml5) { var CLASS_NAME = "wysiwyg-text-align-justify", REG_EXP = /wysiwyg-text-align-[0-9a-z]+/g; wysihtml5.commands.justifyFull = { exec: function(composer, command) { return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, CLASS_NAME, REG_EXP); }, state: function(composer, command) { return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, CLASS_NAME, REG_EXP); } }; })(wysihtml5); ;(function(wysihtml5) { var STYLE_STR = "text-align: right;", REG_EXP = /(\s|^)text-align\s*:\s*[^;\s]+;?/gi; wysihtml5.commands.alignRightStyle = { exec: function(composer, command) { return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, null, null, STYLE_STR, REG_EXP); }, state: function(composer, command) { return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, null, null, STYLE_STR, REG_EXP); } }; })(wysihtml5); ;(function(wysihtml5) { var STYLE_STR = "text-align: left;", REG_EXP = /(\s|^)text-align\s*:\s*[^;\s]+;?/gi; wysihtml5.commands.alignLeftStyle = { exec: function(composer, command) { return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, null, null, STYLE_STR, REG_EXP); }, state: function(composer, command) { return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, null, null, STYLE_STR, REG_EXP); } }; })(wysihtml5); ;(function(wysihtml5) { var STYLE_STR = "text-align: center;", REG_EXP = /(\s|^)text-align\s*:\s*[^;\s]+;?/gi; wysihtml5.commands.alignCenterStyle = { exec: function(composer, command) { return wysihtml5.commands.formatBlock.exec(composer, "formatBlock", null, null, null, STYLE_STR, REG_EXP); }, state: function(composer, command) { return wysihtml5.commands.formatBlock.state(composer, "formatBlock", null, null, null, STYLE_STR, REG_EXP); } }; })(wysihtml5); ;wysihtml5.commands.redo = { exec: function(composer) { return composer.undoManager.redo(); }, state: function(composer) { return false; } }; ;wysihtml5.commands.underline = { exec: function(composer, command) { wysihtml5.commands.formatInline.execWithToggle(composer, command, "u"); }, state: function(composer, command) { return wysihtml5.commands.formatInline.state(composer, command, "u"); } }; ;wysihtml5.commands.undo = { exec: function(composer) { return composer.undoManager.undo(); }, state: function(composer) { return false; } }; ;wysihtml5.commands.createTable = { exec: function(composer, command, value) { var col, row, html; if (value && value.cols && value.rows && parseInt(value.cols, 10) > 0 && parseInt(value.rows, 10) > 0) { if (value.tableStyle) { html = "<table style=\"" + value.tableStyle + "\">"; } else { html = "<table>"; } html += "<tbody>"; for (row = 0; row < value.rows; row ++) { html += '<tr>'; for (col = 0; col < value.cols; col ++) { html += "<td> </td>"; } html += '</tr>'; } html += "</tbody></table>"; composer.commands.exec("insertHTML", html); //composer.selection.insertHTML(html); } }, state: function(composer, command) { return false; } }; ;wysihtml5.commands.mergeTableCells = { exec: function(composer, command) { if (composer.tableSelection && composer.tableSelection.start && composer.tableSelection.end) { if (this.state(composer, command)) { wysihtml5.dom.table.unmergeCell(composer.tableSelection.start); } else { wysihtml5.dom.table.mergeCellsBetween(composer.tableSelection.start, composer.tableSelection.end); } } }, state: function(composer, command) { if (composer.tableSelection) { var start = composer.tableSelection.start, end = composer.tableSelection.end; if (start && end && start == end && (( wysihtml5.dom.getAttribute(start, "colspan") && parseInt(wysihtml5.dom.getAttribute(start, "colspan"), 10) > 1 ) || ( wysihtml5.dom.getAttribute(start, "rowspan") && parseInt(wysihtml5.dom.getAttribute(start, "rowspan"), 10) > 1 )) ) { return [start]; } } return false; } }; ;wysihtml5.commands.addTableCells = { exec: function(composer, command, value) { if (composer.tableSelection && composer.tableSelection.start && composer.tableSelection.end) { // switches start and end if start is bigger than end (reverse selection) var tableSelect = wysihtml5.dom.table.orderSelectionEnds(composer.tableSelection.start, composer.tableSelection.end); if (value == "before" || value == "above") { wysihtml5.dom.table.addCells(tableSelect.start, value); } else if (value == "after" || value == "below") { wysihtml5.dom.table.addCells(tableSelect.end, value); } setTimeout(function() { composer.tableSelection.select(tableSelect.start, tableSelect.end); },0); } }, state: function(composer, command) { return false; } }; ;wysihtml5.commands.deleteTableCells = { exec: function(composer, command, value) { if (composer.tableSelection && composer.tableSelection.start && composer.tableSelection.end) { var tableSelect = wysihtml5.dom.table.orderSelectionEnds(composer.tableSelection.start, composer.tableSelection.end), idx = wysihtml5.dom.table.indexOf(tableSelect.start), selCell, table = composer.tableSelection.table; wysihtml5.dom.table.removeCells(tableSelect.start, value); setTimeout(function() { // move selection to next or previous if not present selCell = wysihtml5.dom.table.findCell(table, idx); if (!selCell){ if (value == "row") { selCell = wysihtml5.dom.table.findCell(table, { "row": idx.row - 1, "col": idx.col }); } if (value == "column") { selCell = wysihtml5.dom.table.findCell(table, { "row": idx.row, "col": idx.col - 1 }); } } if (selCell) { composer.tableSelection.select(selCell, selCell); } }, 0); } }, state: function(composer, command) { return false; } }; ;wysihtml5.commands.indentList = { exec: function(composer, command, value) { var listEls = composer.selection.getSelectionParentsByTag('LI'); if (listEls) { return this.tryToPushLiLevel(listEls, composer.selection); } return false; }, state: function(composer, command) { return false; }, tryToPushLiLevel: function(liNodes, selection) { var listTag, list, prevLi, liNode, prevLiList, found = false; selection.executeAndRestoreRangy(function() { for (var i = liNodes.length; i--;) { liNode = liNodes[i]; listTag = (liNode.parentNode.nodeName === 'OL') ? 'OL' : 'UL'; list = liNode.ownerDocument.createElement(listTag); prevLi = wysihtml5.dom.domNode(liNode).prev({nodeTypes: [wysihtml5.ELEMENT_NODE]}); prevLiList = (prevLi) ? prevLi.querySelector('ul, ol') : null; if (prevLi) { if (prevLiList) { prevLiList.appendChild(liNode); } else { list.appendChild(liNode); prevLi.appendChild(list); } found = true; } } }); return found; } }; ;wysihtml5.commands.outdentList = { exec: function(composer, command, value) { var listEls = composer.selection.getSelectionParentsByTag('LI'); if (listEls) { return this.tryToPullLiLevel(listEls, composer); } return false; }, state: function(composer, command) { return false; }, tryToPullLiLevel: function(liNodes, composer) { var listNode, outerListNode, outerLiNode, list, prevLi, liNode, afterList, found = false, that = this; composer.selection.executeAndRestoreRangy(function() { for (var i = liNodes.length; i--;) { liNode = liNodes[i]; if (liNode.parentNode) { listNode = liNode.parentNode; if (listNode.tagName === 'OL' || listNode.tagName === 'UL') { found = true; outerListNode = wysihtml5.dom.getParentElement(listNode.parentNode, { nodeName: ['OL', 'UL']}, false, composer.element); outerLiNode = wysihtml5.dom.getParentElement(listNode.parentNode, { nodeName: ['LI']}, false, composer.element); if (outerListNode && outerLiNode) { if (liNode.nextSibling) { afterList = that.getAfterList(listNode, liNode); liNode.appendChild(afterList); } outerListNode.insertBefore(liNode, outerLiNode.nextSibling); } else { if (liNode.nextSibling) { afterList = that.getAfterList(listNode, liNode); liNode.appendChild(afterList); } for (var j = liNode.childNodes.length; j--;) { listNode.parentNode.insertBefore(liNode.childNodes[j], listNode.nextSibling); } listNode.parentNode.insertBefore(document.createElement('br'), listNode.nextSibling); liNode.parentNode.removeChild(liNode); } // cleanup if (listNode.childNodes.length === 0) { listNode.parentNode.removeChild(listNode); } } } } }); return found; }, getAfterList: function(listNode, liNode) { var nodeName = listNode.nodeName, newList = document.createElement(nodeName); while (liNode.nextSibling) { newList.appendChild(liNode.nextSibling); } return newList; } };;/** * Undo Manager for wysihtml5 * slightly inspired by http://rniwa.com/editing/undomanager.html#the-undomanager-interface */ (function(wysihtml5) { var Z_KEY = 90, Y_KEY = 89, BACKSPACE_KEY = 8, DELETE_KEY = 46, MAX_HISTORY_ENTRIES = 25, DATA_ATTR_NODE = "data-wysihtml5-selection-node", DATA_ATTR_OFFSET = "data-wysihtml5-selection-offset", UNDO_HTML = '<span id="_wysihtml5-undo" class="_wysihtml5-temp">' + wysihtml5.INVISIBLE_SPACE + '</span>', REDO_HTML = '<span id="_wysihtml5-redo" class="_wysihtml5-temp">' + wysihtml5.INVISIBLE_SPACE + '</span>', dom = wysihtml5.dom; function cleanTempElements(doc) { var tempElement; while (tempElement = doc.querySelector("._wysihtml5-temp")) { tempElement.parentNode.removeChild(tempElement); } } wysihtml5.UndoManager = wysihtml5.lang.Dispatcher.extend( /** @scope wysihtml5.UndoManager.prototype */ { constructor: function(editor) { this.editor = editor; this.composer = editor.composer; this.element = this.composer.element; this.position = 0; this.historyStr = []; this.historyDom = []; this.transact(); this._observe(); }, _observe: function() { var that = this, doc = this.composer.sandbox.getDocument(), lastKey; // Catch CTRL+Z and CTRL+Y dom.observe(this.element, "keydown", function(event) { if (event.altKey || (!event.ctrlKey && !event.metaKey)) { return; } var keyCode = event.keyCode, isUndo = keyCode === Z_KEY && !event.shiftKey, isRedo = (keyCode === Z_KEY && event.shiftKey) || (keyCode === Y_KEY); if (isUndo) { that.undo(); event.preventDefault(); } else if (isRedo) { that.redo(); event.preventDefault(); } }); // Catch delete and backspace dom.observe(this.element, "keydown", function(event) { var keyCode = event.keyCode; if (keyCode === lastKey) { return; } lastKey = keyCode; if (keyCode === BACKSPACE_KEY || keyCode === DELETE_KEY) { that.transact(); } }); this.editor .on("newword:composer", function() { that.transact(); }) .on("beforecommand:composer", function() { that.transact(); }); }, transact: function() { var previousHtml = this.historyStr[this.position - 1], currentHtml = this.composer.getValue(false, false), composerIsVisible = this.element.offsetWidth > 0 && this.element.offsetHeight > 0, range, node, offset, element, position; if (currentHtml === previousHtml) { return; } var length = this.historyStr.length = this.historyDom.length = this.position; if (length > MAX_HISTORY_ENTRIES) { this.historyStr.shift(); this.historyDom.shift(); this.position--; } this.position++; if (composerIsVisible) { // Do not start saving selection if composer is not visible range = this.composer.selection.getRange(); node = (range && range.startContainer) ? range.startContainer : this.element; offset = (range && range.startOffset) ? range.startOffset : 0; if (node.nodeType === wysihtml5.ELEMENT_NODE) { element = node; } else { element = node.parentNode; position = this.getChildNodeIndex(element, node); } element.setAttribute(DATA_ATTR_OFFSET, offset); if (typeof(position) !== "undefined") { element.setAttribute(DATA_ATTR_NODE, position); } } var clone = this.element.cloneNode(!!currentHtml); this.historyDom.push(clone); this.historyStr.push(currentHtml); if (element) { element.removeAttribute(DATA_ATTR_OFFSET); element.removeAttribute(DATA_ATTR_NODE); } }, undo: function() { this.transact(); if (!this.undoPossible()) { return; } this.set(this.historyDom[--this.position - 1]); this.editor.fire("undo:composer"); }, redo: function() { if (!this.redoPossible()) { return; } this.set(this.historyDom[++this.position - 1]); this.editor.fire("redo:composer"); }, undoPossible: function() { return this.position > 1; }, redoPossible: function() { return this.position < this.historyStr.length; }, set: function(historyEntry) { this.element.innerHTML = ""; var i = 0, childNodes = historyEntry.childNodes, length = historyEntry.childNodes.length; for (; i<length; i++) { this.element.appendChild(childNodes[i].cloneNode(true)); } // Restore selection var offset, node, position; if (historyEntry.hasAttribute(DATA_ATTR_OFFSET)) { offset = historyEntry.getAttribute(DATA_ATTR_OFFSET); position = historyEntry.getAttribute(DATA_ATTR_NODE); node = this.element; } else { node = this.element.querySelector("[" + DATA_ATTR_OFFSET + "]") || this.element; offset = node.getAttribute(DATA_ATTR_OFFSET); position = node.getAttribute(DATA_ATTR_NODE); node.removeAttribute(DATA_ATTR_OFFSET); node.removeAttribute(DATA_ATTR_NODE); } if (position !== null) { node = this.getChildNodeByIndex(node, +position); } this.composer.selection.set(node, offset); }, getChildNodeIndex: function(parent, child) { var i = 0, childNodes = parent.childNodes, length = childNodes.length; for (; i<length; i++) { if (childNodes[i] === child) { return i; } } }, getChildNodeByIndex: function(parent, index) { return parent.childNodes[index]; } }); })(wysihtml5); ;/** * TODO: the following methods still need unit test coverage */ wysihtml5.views.View = Base.extend( /** @scope wysihtml5.views.View.prototype */ { constructor: function(parent, textareaElement, config) { this.parent = parent; this.element = textareaElement; this.config = config; if (!this.config.noTextarea) { this._observeViewChange(); } }, _observeViewChange: function() { var that = this; this.parent.on("beforeload", function() { that.parent.on("change_view", function(view) { if (view === that.name) { that.parent.currentView = that; that.show(); // Using tiny delay here to make sure that the placeholder is set before focusing setTimeout(function() { that.focus(); }, 0); } else { that.hide(); } }); }); }, focus: function() { if (this.element.ownerDocument.querySelector(":focus") === this.element) { return; } try { this.element.focus(); } catch(e) {} }, hide: function() { this.element.style.display = "none"; }, show: function() { this.element.style.display = ""; }, disable: function() { this.element.setAttribute("disabled", "disabled"); }, enable: function() { this.element.removeAttribute("disabled"); } }); ;(function(wysihtml5) { var dom = wysihtml5.dom, browser = wysihtml5.browser; wysihtml5.views.Composer = wysihtml5.views.View.extend( /** @scope wysihtml5.views.Composer.prototype */ { name: "composer", // Needed for firefox in order to display a proper caret in an empty contentEditable CARET_HACK: "<br>", constructor: function(parent, editableElement, config) { this.base(parent, editableElement, config); if (!this.config.noTextarea) { this.textarea = this.parent.textarea; } else { this.editableArea = editableElement; } if (this.config.contentEditableMode) { this._initContentEditableArea(); } else { this._initSandbox(); } }, clear: function() { this.element.innerHTML = browser.displaysCaretInEmptyContentEditableCorrectly() ? "" : this.CARET_HACK; }, getValue: function(parse, clearInternals) { var value = this.isEmpty() ? "" : wysihtml5.quirks.getCorrectInnerHTML(this.element); if (parse !== false) { value = this.parent.parse(value, (clearInternals === false) ? false : true); } return value; }, setValue: function(html, parse) { if (parse) { html = this.parent.parse(html); } try { this.element.innerHTML = html; } catch (e) { this.element.innerText = html; } }, cleanUp: function() { this.parent.parse(this.element); }, show: function() { this.editableArea.style.display = this._displayStyle || ""; if (!this.config.noTextarea && !this.textarea.element.disabled) { // Firefox needs this, otherwise contentEditable becomes uneditable this.disable(); this.enable(); } }, hide: function() { this._displayStyle = dom.getStyle("display").from(this.editableArea); if (this._displayStyle === "none") { this._displayStyle = null; } this.editableArea.style.display = "none"; }, disable: function() { this.parent.fire("disable:composer"); this.element.removeAttribute("contentEditable"); }, enable: function() { this.parent.fire("enable:composer"); this.element.setAttribute("contentEditable", "true"); }, focus: function(setToEnd) { // IE 8 fires the focus event after .focus() // This is needed by our simulate_placeholder.js to work // therefore we clear it ourselves this time if (wysihtml5.browser.doesAsyncFocus() && this.hasPlaceholderSet()) { this.clear(); } this.base(); var lastChild = this.element.lastChild; if (setToEnd && lastChild && this.selection) { if (lastChild.nodeName === "BR") { this.selection.setBefore(this.element.lastChild); } else { this.selection.setAfter(this.element.lastChild); } } }, getTextContent: function() { return dom.getTextContent(this.element); }, hasPlaceholderSet: function() { return this.getTextContent() == ((this.config.noTextarea) ? this.editableArea.getAttribute("data-placeholder") : this.textarea.element.getAttribute("placeholder")) && this.placeholderSet; }, isEmpty: function() { var innerHTML = this.element.innerHTML.toLowerCase(); return (/^(\s|<br>|<\/br>|<p>|<\/p>)*$/i).test(innerHTML) || innerHTML === "" || innerHTML === "<br>" || innerHTML === "<p></p>" || innerHTML === "<p><br></p>" || this.hasPlaceholderSet(); }, _initContentEditableArea: function() { var that = this; if (this.config.noTextarea) { this.sandbox = new dom.ContentEditableArea(function() { that._create(); }, {}, this.editableArea); } else { this.sandbox = new dom.ContentEditableArea(function() { that._create(); }); this.editableArea = this.sandbox.getContentEditable(); dom.insert(this.editableArea).after(this.textarea.element); this._createWysiwygFormField(); } }, _initSandbox: function() { var that = this; this.sandbox = new dom.Sandbox(function() { that._create(); }, { stylesheets: this.config.stylesheets }); this.editableArea = this.sandbox.getIframe(); var textareaElement = this.textarea.element; dom.insert(this.editableArea).after(textareaElement); this._createWysiwygFormField(); }, // Creates hidden field which tells the server after submit, that the user used an wysiwyg editor _createWysiwygFormField: function() { if (this.textarea.element.form) { var hiddenField = document.createElement("input"); hiddenField.type = "hidden"; hiddenField.name = "_wysihtml5_mode"; hiddenField.value = 1; dom.insert(hiddenField).after(this.textarea.element); } }, _create: function() { var that = this; this.doc = this.sandbox.getDocument(); this.element = (this.config.contentEditableMode) ? this.sandbox.getContentEditable() : this.doc.body; if (!this.config.noTextarea) { this.textarea = this.parent.textarea; this.element.innerHTML = this.textarea.getValue(true, false); } else { this.cleanUp(); // cleans contenteditable on initiation as it may contain html } // Make sure our selection handler is ready this.selection = new wysihtml5.Selection(this.parent, this.element, this.config.uneditableContainerClassname); // Make sure commands dispatcher is ready this.commands = new wysihtml5.Commands(this.parent); if (!this.config.noTextarea) { dom.copyAttributes([ "className", "spellcheck", "title", "lang", "dir", "accessKey" ]).from(this.textarea.element).to(this.element); } dom.addClass(this.element, this.config.composerClassName); // // Make the editor look like the original textarea, by syncing styles if (this.config.style && !this.config.contentEditableMode) { this.style(); } this.observe(); var name = this.config.name; if (name) { dom.addClass(this.element, name); if (!this.config.contentEditableMode) { dom.addClass(this.editableArea, name); } } this.enable(); if (!this.config.noTextarea && this.textarea.element.disabled) { this.disable(); } // Simulate html5 placeholder attribute on contentEditable element var placeholderText = typeof(this.config.placeholder) === "string" ? this.config.placeholder : ((this.config.noTextarea) ? this.editableArea.getAttribute("data-placeholder") : this.textarea.element.getAttribute("placeholder")); if (placeholderText) { dom.simulatePlaceholder(this.parent, this, placeholderText); } // Make sure that the browser avoids using inline styles whenever possible this.commands.exec("styleWithCSS", false); this._initAutoLinking(); this._initObjectResizing(); this._initUndoManager(); this._initLineBreaking(); // Simulate html5 autofocus on contentEditable element // This doesn't work on IOS (5.1.1) if (!this.config.noTextarea && (this.textarea.element.hasAttribute("autofocus") || document.querySelector(":focus") == this.textarea.element) && !browser.isIos()) { setTimeout(function() { that.focus(true); }, 100); } // IE sometimes leaves a single paragraph, which can't be removed by the user if (!browser.clearsContentEditableCorrectly()) { wysihtml5.quirks.ensureProperClearing(this); } // Set up a sync that makes sure that textarea and editor have the same content if (this.initSync && this.config.sync) { this.initSync(); } // Okay hide the textarea, we are ready to go if (!this.config.noTextarea) { this.textarea.hide(); } // Fire global (before-)load event this.parent.fire("beforeload").fire("load"); }, _initAutoLinking: function() { var that = this, supportsDisablingOfAutoLinking = browser.canDisableAutoLinking(), supportsAutoLinking = browser.doesAutoLinkingInContentEditable(); if (supportsDisablingOfAutoLinking) { this.commands.exec("autoUrlDetect", false); } if (!this.config.autoLink) { return; } // Only do the auto linking by ourselves when the browser doesn't support auto linking // OR when he supports auto linking but we were able to turn it off (IE9+) if (!supportsAutoLinking || (supportsAutoLinking && supportsDisablingOfAutoLinking)) { this.parent.on("newword:composer", function() { if (dom.getTextContent(that.element).match(dom.autoLink.URL_REG_EXP)) { that.selection.executeAndRestore(function(startContainer, endContainer) { var uneditables = that.element.querySelectorAll("." + that.config.uneditableContainerClassname), isInUneditable = false; for (var i = uneditables.length; i--;) { if (wysihtml5.dom.contains(uneditables[i], endContainer)) { isInUneditable = true; } } if (!isInUneditable) dom.autoLink(endContainer.parentNode, [that.config.uneditableContainerClassname]); }); } }); dom.observe(this.element, "blur", function() { dom.autoLink(that.element, [that.config.uneditableContainerClassname]); }); } // Assuming we have the following: // <a href="http://www.google.de">http://www.google.de</a> // If a user now changes the url in the innerHTML we want to make sure that // it's synchronized with the href attribute (as long as the innerHTML is still a url) var // Use a live NodeList to check whether there are any links in the document links = this.sandbox.getDocument().getElementsByTagName("a"), // The autoLink helper method reveals a reg exp to detect correct urls urlRegExp = dom.autoLink.URL_REG_EXP, getTextContent = function(element) { var textContent = wysihtml5.lang.string(dom.getTextContent(element)).trim(); if (textContent.substr(0, 4) === "www.") { textContent = "http://" + textContent; } return textContent; }; dom.observe(this.element, "keydown", function(event) { if (!links.length) { return; } var selectedNode = that.selection.getSelectedNode(event.target.ownerDocument), link = dom.getParentElement(selectedNode, { nodeName: "A" }, 4), textContent; if (!link) { return; } textContent = getTextContent(link); // keydown is fired before the actual content is changed // therefore we set a timeout to change the href setTimeout(function() { var newTextContent = getTextContent(link); if (newTextContent === textContent) { return; } // Only set href when new href looks like a valid url if (newTextContent.match(urlRegExp)) { link.setAttribute("href", newTextContent); } }, 0); }); }, _initObjectResizing: function() { this.commands.exec("enableObjectResizing", true); // IE sets inline styles after resizing objects // The following lines make sure that the width/height css properties // are copied over to the width/height attributes if (browser.supportsEvent("resizeend")) { var properties = ["width", "height"], propertiesLength = properties.length, element = this.element; dom.observe(element, "resizeend", function(event) { var target = event.target || event.srcElement, style = target.style, i = 0, property; if (target.nodeName !== "IMG") { return; } for (; i<propertiesLength; i++) { property = properties[i]; if (style[property]) { target.setAttribute(property, parseInt(style[property], 10)); style[property] = ""; } } // After resizing IE sometimes forgets to remove the old resize handles wysihtml5.quirks.redraw(element); }); } }, _initUndoManager: function() { this.undoManager = new wysihtml5.UndoManager(this.parent); }, _initLineBreaking: function() { var that = this, USE_NATIVE_LINE_BREAK_INSIDE_TAGS = ["LI", "P", "H1", "H2", "H3", "H4", "H5", "H6"], LIST_TAGS = ["UL", "OL", "MENU"]; function adjust(selectedNode) { var parentElement = dom.getParentElement(selectedNode, { nodeName: ["P", "DIV"] }, 2); if (parentElement && dom.contains(that.element, parentElement)) { that.selection.executeAndRestore(function() { if (that.config.useLineBreaks) { dom.replaceWithChildNodes(parentElement); } else if (parentElement.nodeName !== "P") { dom.renameElement(parentElement, "p"); } }); } } if (!this.config.useLineBreaks) { dom.observe(this.element, ["focus", "keydown"], function() { if (that.isEmpty()) { var paragraph = that.doc.createElement("P"); that.element.innerHTML = ""; that.element.appendChild(paragraph); if (!browser.displaysCaretInEmptyContentEditableCorrectly()) { paragraph.innerHTML = "<br>"; that.selection.setBefore(paragraph.firstChild); } else { that.selection.selectNode(paragraph, true); } } }); } // Under certain circumstances Chrome + Safari create nested <p> or <hX> tags after paste // Inserting an invisible white space in front of it fixes the issue // This is too hacky and causes selection not to replace content on paste in chrome /* if (browser.createsNestedInvalidMarkupAfterPaste()) { dom.observe(this.element, "paste", function(event) { var invisibleSpace = that.doc.createTextNode(wysihtml5.INVISIBLE_SPACE); that.selection.insertNode(invisibleSpace); }); }*/ dom.observe(this.element, "keydown", function(event) { var keyCode = event.keyCode; if (event.shiftKey) { return; } if (keyCode !== wysihtml5.ENTER_KEY && keyCode !== wysihtml5.BACKSPACE_KEY) { return; } var blockElement = dom.getParentElement(that.selection.getSelectedNode(), { nodeName: USE_NATIVE_LINE_BREAK_INSIDE_TAGS }, 4); if (blockElement) { setTimeout(function() { // Unwrap paragraph after leaving a list or a H1-6 var selectedNode = that.selection.getSelectedNode(), list; if (blockElement.nodeName === "LI") { if (!selectedNode) { return; } list = dom.getParentElement(selectedNode, { nodeName: LIST_TAGS }, 2); if (!list) { adjust(selectedNode); } } if (keyCode === wysihtml5.ENTER_KEY && blockElement.nodeName.match(/^H[1-6]$/)) { adjust(selectedNode); } }, 0); return; } if (that.config.useLineBreaks && keyCode === wysihtml5.ENTER_KEY && !wysihtml5.browser.insertsLineBreaksOnReturn()) { event.preventDefault(); that.commands.exec("insertLineBreak"); } }); } }); })(wysihtml5); ;(function(wysihtml5) { var dom = wysihtml5.dom, doc = document, win = window, HOST_TEMPLATE = doc.createElement("div"), /** * Styles to copy from textarea to the composer element */ TEXT_FORMATTING = [ "background-color", "color", "cursor", "font-family", "font-size", "font-style", "font-variant", "font-weight", "line-height", "letter-spacing", "text-align", "text-decoration", "text-indent", "text-rendering", "word-break", "word-wrap", "word-spacing" ], /** * Styles to copy from textarea to the iframe */ BOX_FORMATTING = [ "background-color", "border-collapse", "border-bottom-color", "border-bottom-style", "border-bottom-width", "border-left-color", "border-left-style", "border-left-width", "border-right-color", "border-right-style", "border-right-width", "border-top-color", "border-top-style", "border-top-width", "clear", "display", "float", "margin-bottom", "margin-left", "margin-right", "margin-top", "outline-color", "outline-offset", "outline-width", "outline-style", "padding-left", "padding-right", "padding-top", "padding-bottom", "position", "top", "left", "right", "bottom", "z-index", "vertical-align", "text-align", "-webkit-box-sizing", "-moz-box-sizing", "-ms-box-sizing", "box-sizing", "-webkit-box-shadow", "-moz-box-shadow", "-ms-box-shadow","box-shadow", "-webkit-border-top-right-radius", "-moz-border-radius-topright", "border-top-right-radius", "-webkit-border-bottom-right-radius", "-moz-border-radius-bottomright", "border-bottom-right-radius", "-webkit-border-bottom-left-radius", "-moz-border-radius-bottomleft", "border-bottom-left-radius", "-webkit-border-top-left-radius", "-moz-border-radius-topleft", "border-top-left-radius", "width", "height" ], ADDITIONAL_CSS_RULES = [ "html { height: 100%; }", "body { height: 100%; padding: 1px 0 0 0; margin: -1px 0 0 0; }", "body > p:first-child { margin-top: 0; }", "._wysihtml5-temp { display: none; }", wysihtml5.browser.isGecko ? "body.placeholder { color: graytext !important; }" : "body.placeholder { color: #a9a9a9 !important; }", // Ensure that user see's broken images and can delete them "img:-moz-broken { -moz-force-broken-image-icon: 1; height: 24px; width: 24px; }" ]; /** * With "setActive" IE offers a smart way of focusing elements without scrolling them into view: * http://msdn.microsoft.com/en-us/library/ms536738(v=vs.85).aspx * * Other browsers need a more hacky way: (pssst don't tell my mama) * In order to prevent the element being scrolled into view when focusing it, we simply * move it out of the scrollable area, focus it, and reset it's position */ var focusWithoutScrolling = function(element) { if (element.setActive) { // Following line could cause a js error when the textarea is invisible // See https://github.com/xing/wysihtml5/issues/9 try { element.setActive(); } catch(e) {} } else { var elementStyle = element.style, originalScrollTop = doc.documentElement.scrollTop || doc.body.scrollTop, originalScrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft, originalStyles = { position: elementStyle.position, top: elementStyle.top, left: elementStyle.left, WebkitUserSelect: elementStyle.WebkitUserSelect }; dom.setStyles({ position: "absolute", top: "-99999px", left: "-99999px", // Don't ask why but temporarily setting -webkit-user-select to none makes the whole thing performing smoother WebkitUserSelect: "none" }).on(element); element.focus(); dom.setStyles(originalStyles).on(element); if (win.scrollTo) { // Some browser extensions unset this method to prevent annoyances // "Better PopUp Blocker" for Chrome http://code.google.com/p/betterpopupblocker/source/browse/trunk/blockStart.js#100 // Issue: http://code.google.com/p/betterpopupblocker/issues/detail?id=1 win.scrollTo(originalScrollLeft, originalScrollTop); } } }; wysihtml5.views.Composer.prototype.style = function() { var that = this, originalActiveElement = doc.querySelector(":focus"), textareaElement = this.textarea.element, hasPlaceholder = textareaElement.hasAttribute("placeholder"), originalPlaceholder = hasPlaceholder && textareaElement.getAttribute("placeholder"), originalDisplayValue = textareaElement.style.display, originalDisabled = textareaElement.disabled, displayValueForCopying; this.focusStylesHost = HOST_TEMPLATE.cloneNode(false); this.blurStylesHost = HOST_TEMPLATE.cloneNode(false); this.disabledStylesHost = HOST_TEMPLATE.cloneNode(false); // Remove placeholder before copying (as the placeholder has an affect on the computed style) if (hasPlaceholder) { textareaElement.removeAttribute("placeholder"); } if (textareaElement === originalActiveElement) { textareaElement.blur(); } // enable for copying styles textareaElement.disabled = false; // set textarea to display="none" to get cascaded styles via getComputedStyle textareaElement.style.display = displayValueForCopying = "none"; if ((textareaElement.getAttribute("rows") && dom.getStyle("height").from(textareaElement) === "auto") || (textareaElement.getAttribute("cols") && dom.getStyle("width").from(textareaElement) === "auto")) { textareaElement.style.display = displayValueForCopying = originalDisplayValue; } // --------- iframe styles (has to be set before editor styles, otherwise IE9 sets wrong fontFamily on blurStylesHost) --------- dom.copyStyles(BOX_FORMATTING).from(textareaElement).to(this.editableArea).andTo(this.blurStylesHost); // --------- editor styles --------- dom.copyStyles(TEXT_FORMATTING).from(textareaElement).to(this.element).andTo(this.blurStylesHost); // --------- apply standard rules --------- dom.insertCSS(ADDITIONAL_CSS_RULES).into(this.element.ownerDocument); // --------- :disabled styles --------- textareaElement.disabled = true; dom.copyStyles(BOX_FORMATTING).from(textareaElement).to(this.disabledStylesHost); dom.copyStyles(TEXT_FORMATTING).from(textareaElement).to(this.disabledStylesHost); textareaElement.disabled = originalDisabled; // --------- :focus styles --------- textareaElement.style.display = originalDisplayValue; focusWithoutScrolling(textareaElement); textareaElement.style.display = displayValueForCopying; dom.copyStyles(BOX_FORMATTING).from(textareaElement).to(this.focusStylesHost); dom.copyStyles(TEXT_FORMATTING).from(textareaElement).to(this.focusStylesHost); // reset textarea textareaElement.style.display = originalDisplayValue; dom.copyStyles(["display"]).from(textareaElement).to(this.editableArea); // Make sure that we don't change the display style of the iframe when copying styles oblur/onfocus // this is needed for when the change_view event is fired where the iframe is hidden and then // the blur event fires and re-displays it var boxFormattingStyles = wysihtml5.lang.array(BOX_FORMATTING).without(["display"]); // --------- restore focus --------- if (originalActiveElement) { originalActiveElement.focus(); } else { textareaElement.blur(); } // --------- restore placeholder --------- if (hasPlaceholder) { textareaElement.setAttribute("placeholder", originalPlaceholder); } // --------- Sync focus/blur styles --------- this.parent.on("focus:composer", function() { dom.copyStyles(boxFormattingStyles) .from(that.focusStylesHost).to(that.editableArea); dom.copyStyles(TEXT_FORMATTING) .from(that.focusStylesHost).to(that.element); }); this.parent.on("blur:composer", function() { dom.copyStyles(boxFormattingStyles) .from(that.blurStylesHost).to(that.editableArea); dom.copyStyles(TEXT_FORMATTING) .from(that.blurStylesHost).to(that.element); }); this.parent.observe("disable:composer", function() { dom.copyStyles(boxFormattingStyles) .from(that.disabledStylesHost).to(that.editableArea); dom.copyStyles(TEXT_FORMATTING) .from(that.disabledStylesHost).to(that.element); }); this.parent.observe("enable:composer", function() { dom.copyStyles(boxFormattingStyles) .from(that.blurStylesHost).to(that.editableArea); dom.copyStyles(TEXT_FORMATTING) .from(that.blurStylesHost).to(that.element); }); return this; }; })(wysihtml5); ;/** * Taking care of events * - Simulating 'change' event on contentEditable element * - Handling drag & drop logic * - Catch paste events * - Dispatch proprietary newword:composer event * - Keyboard shortcuts */ (function(wysihtml5) { var dom = wysihtml5.dom, browser = wysihtml5.browser, /** * Map keyCodes to query commands */ shortcuts = { "66": "bold", // B "73": "italic", // I "85": "underline" // U }; var deleteAroundEditable = function(selection, uneditable, element) { // merge node with previous node from uneditable var prevNode = selection.getPreviousNode(uneditable, true), curNode = selection.getSelectedNode(); if (curNode.nodeType !== 1 && curNode.parentNode !== element) { curNode = curNode.parentNode; } if (prevNode) { if (curNode.nodeType == 1) { var first = curNode.firstChild; if (prevNode.nodeType == 1) { while (curNode.firstChild) { prevNode.appendChild(curNode.firstChild); } } else { while (curNode.firstChild) { uneditable.parentNode.insertBefore(curNode.firstChild, uneditable); } } if (curNode.parentNode) { curNode.parentNode.removeChild(curNode); } selection.setBefore(first); } else { if (prevNode.nodeType == 1) { prevNode.appendChild(curNode); } else { uneditable.parentNode.insertBefore(curNode, uneditable); } selection.setBefore(curNode); } } }; var handleDeleteKeyPress = function(event, selection, element, composer) { if (selection.isCollapsed()) { if (selection.caretIsInTheBeginnig('LI')) { event.preventDefault(); composer.commands.exec('outdentList'); } else if (selection.caretIsInTheBeginnig()) { event.preventDefault(); } else { if (selection.caretIsFirstInSelection() && selection.getPreviousNode() && selection.getPreviousNode().nodeName && (/^H\d$/gi).test(selection.getPreviousNode().nodeName) ) { var prevNode = selection.getPreviousNode(); event.preventDefault(); if ((/^\s*$/).test(prevNode.textContent || prevNode.innerText)) { // heading is empty prevNode.parentNode.removeChild(prevNode); } else { var range = prevNode.ownerDocument.createRange(); range.selectNodeContents(prevNode); range.collapse(false); selection.setSelection(range); } } var beforeUneditable = selection.caretIsBeforeUneditable(); // Do a special delete if caret would delete uneditable if (beforeUneditable) { event.preventDefault(); deleteAroundEditable(selection, beforeUneditable, element); } } } else { if (selection.containsUneditable()) { event.preventDefault(); selection.deleteContents(); } } }; var handleTabKeyDown = function(composer, element) { if (!composer.selection.isCollapsed()) { composer.selection.deleteContents(); } else if (composer.selection.caretIsInTheBeginnig('LI')) { if (composer.commands.exec('indentList')) return; } // Is   close enough to tab. Could not find enough counter arguments for now. composer.commands.exec("insertHTML", " "); }; wysihtml5.views.Composer.prototype.observe = function() { var that = this, state = this.getValue(false, false), container = (this.sandbox.getIframe) ? this.sandbox.getIframe() : this.sandbox.getContentEditable(), element = this.element, focusBlurElement = (browser.supportsEventsInIframeCorrectly() || this.sandbox.getContentEditable) ? element : this.sandbox.getWindow(), pasteEvents = ["drop", "paste", "beforepaste"], interactionEvents = ["drop", "paste", "mouseup", "focus", "keyup"]; // --------- destroy:composer event --------- dom.observe(container, "DOMNodeRemoved", function() { clearInterval(domNodeRemovedInterval); that.parent.fire("destroy:composer"); }); // DOMNodeRemoved event is not supported in IE 8 if (!browser.supportsMutationEvents()) { var domNodeRemovedInterval = setInterval(function() { if (!dom.contains(document.documentElement, container)) { clearInterval(domNodeRemovedInterval); that.parent.fire("destroy:composer"); } }, 250); } // --------- User interaction tracking -- dom.observe(focusBlurElement, interactionEvents, function() { setTimeout(function() { that.parent.fire("interaction").fire("interaction:composer"); }, 0); }); if (this.config.handleTables) { if(!this.tableClickHandle && this.doc.execCommand && wysihtml5.browser.supportsCommand(this.doc, "enableObjectResizing") && wysihtml5.browser.supportsCommand(this.doc, "enableInlineTableEditing")) { if (this.sandbox.getIframe) { this.tableClickHandle = dom.observe(container , ["focus", "mouseup", "mouseover"], function() { that.doc.execCommand("enableObjectResizing", false, "false"); that.doc.execCommand("enableInlineTableEditing", false, "false"); that.tableClickHandle.stop(); }); } else { setTimeout(function() { that.doc.execCommand("enableObjectResizing", false, "false"); that.doc.execCommand("enableInlineTableEditing", false, "false"); }, 0); } } this.tableSelection = wysihtml5.quirks.tableCellsSelection(element, that.parent); } // --------- Focus & blur logic --------- dom.observe(focusBlurElement, "focus", function(event) { that.parent.fire("focus", event).fire("focus:composer", event); // Delay storing of state until all focus handler are fired // especially the one which resets the placeholder setTimeout(function() { state = that.getValue(false, false); }, 0); }); dom.observe(focusBlurElement, "blur", function(event) { if (state !== that.getValue(false, false)) { //create change event if supported (all except IE8) var changeevent = event; if(typeof Object.create == 'function') { changeevent = Object.create(event, { type: { value: 'change' } }); } that.parent.fire("change", changeevent).fire("change:composer", changeevent); } that.parent.fire("blur", event).fire("blur:composer", event); }); // --------- Drag & Drop logic --------- dom.observe(element, "dragenter", function() { that.parent.fire("unset_placeholder"); }); dom.observe(element, pasteEvents, function(event) { that.parent.fire(event.type, event).fire(event.type + ":composer", event); }); if (this.config.copyedFromMarking) { // If supported the copied source is based directly on selection // Very useful for webkit based browsers where copy will otherwise contain a lot of code and styles based on whatever and not actually in selection. dom.observe(element, "copy", function(event) { if (event.clipboardData) { event.clipboardData.setData("text/html", that.config.copyedFromMarking + that.selection.getHtml()); event.preventDefault(); } that.parent.fire(event.type, event).fire(event.type + ":composer", event); }); } // --------- neword event --------- dom.observe(element, "keyup", function(event) { var keyCode = event.keyCode; if (keyCode === wysihtml5.SPACE_KEY || keyCode === wysihtml5.ENTER_KEY) { that.parent.fire("newword:composer"); } }); this.parent.on("paste:composer", function() { setTimeout(function() { that.parent.fire("newword:composer"); }, 0); }); // --------- Make sure that images are selected when clicking on them --------- if (!browser.canSelectImagesInContentEditable()) { dom.observe(element, "mousedown", function(event) { var target = event.target; var allImages = element.querySelectorAll('img'), notMyImages = element.querySelectorAll('.' + that.config.uneditableContainerClassname + ' img'), myImages = wysihtml5.lang.array(allImages).without(notMyImages); if (target.nodeName === "IMG" && wysihtml5.lang.array(myImages).contains(target)) { that.selection.selectNode(target); } }); } if (!browser.canSelectImagesInContentEditable()) { dom.observe(element, "drop", function(event) { // TODO: if I knew how to get dropped elements list from event I could limit it to only IMG element case setTimeout(function() { that.selection.getSelection().removeAllRanges(); }, 0); }); } if (browser.hasHistoryIssue() && browser.supportsSelectionModify()) { dom.observe(element, "keydown", function(event) { if (!event.metaKey && !event.ctrlKey) { return; } var keyCode = event.keyCode, win = element.ownerDocument.defaultView, selection = win.getSelection(); if (keyCode === 37 || keyCode === 39) { if (keyCode === 37) { selection.modify("extend", "left", "lineboundary"); if (!event.shiftKey) { selection.collapseToStart(); } } if (keyCode === 39) { selection.modify("extend", "right", "lineboundary"); if (!event.shiftKey) { selection.collapseToEnd(); } } event.preventDefault(); } }); } // --------- Shortcut logic --------- dom.observe(element, "keydown", function(event) { var keyCode = event.keyCode, command = shortcuts[keyCode]; if ((event.ctrlKey || event.metaKey) && !event.altKey && command) { that.commands.exec(command); event.preventDefault(); } if (keyCode === 8) { // delete key handleDeleteKeyPress(event, that.selection, element, that); } else if (that.config.handleTabKey && keyCode === 9) { event.preventDefault(); handleTabKeyDown(that, element); } }); // --------- Make sure that when pressing backspace/delete on selected images deletes the image and it's anchor --------- dom.observe(element, "keydown", function(event) { var target = that.selection.getSelectedNode(true), keyCode = event.keyCode, parent; if (target && target.nodeName === "IMG" && (keyCode === wysihtml5.BACKSPACE_KEY || keyCode === wysihtml5.DELETE_KEY)) { // 8 => backspace, 46 => delete parent = target.parentNode; // delete the <img> parent.removeChild(target); // and it's parent <a> too if it hasn't got any other child nodes if (parent.nodeName === "A" && !parent.firstChild) { parent.parentNode.removeChild(parent); } setTimeout(function() { wysihtml5.quirks.redraw(element); }, 0); event.preventDefault(); } }); // --------- IE 8+9 focus the editor when the iframe is clicked (without actually firing the 'focus' event on the <body>) --------- if (!this.config.contentEditableMode && browser.hasIframeFocusIssue()) { dom.observe(container, "focus", function() { setTimeout(function() { if (that.doc.querySelector(":focus") !== that.element) { that.focus(); } }, 0); }); dom.observe(this.element, "blur", function() { setTimeout(function() { that.selection.getSelection().removeAllRanges(); }, 0); }); } // --------- Show url in tooltip when hovering links or images --------- var titlePrefixes = { IMG: "Image: ", A: "Link: " }; dom.observe(element, "mouseover", function(event) { var target = event.target, nodeName = target.nodeName, title; if (nodeName !== "A" && nodeName !== "IMG") { return; } var hasTitle = target.hasAttribute("title"); if(!hasTitle){ title = titlePrefixes[nodeName] + (target.getAttribute("href") || target.getAttribute("src")); target.setAttribute("title", title); } }); }; })(wysihtml5); ;/** * Class that takes care that the value of the composer and the textarea is always in sync */ (function(wysihtml5) { var INTERVAL = 400; wysihtml5.views.Synchronizer = Base.extend( /** @scope wysihtml5.views.Synchronizer.prototype */ { constructor: function(editor, textarea, composer) { this.editor = editor; this.textarea = textarea; this.composer = composer; this._observe(); }, /** * Sync html from composer to textarea * Takes care of placeholders * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the textarea */ fromComposerToTextarea: function(shouldParseHtml) { this.textarea.setValue(wysihtml5.lang.string(this.composer.getValue(false, false)).trim(), shouldParseHtml); }, /** * Sync value of textarea to composer * Takes care of placeholders * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the composer */ fromTextareaToComposer: function(shouldParseHtml) { var textareaValue = this.textarea.getValue(false, false); if (textareaValue) { this.composer.setValue(textareaValue, shouldParseHtml); } else { this.composer.clear(); this.editor.fire("set_placeholder"); } }, /** * Invoke syncing based on view state * @param {Boolean} shouldParseHtml Whether the html should be sanitized before inserting it into the composer/textarea */ sync: function(shouldParseHtml) { if (this.editor.currentView.name === "textarea") { this.fromTextareaToComposer(shouldParseHtml); } else { this.fromComposerToTextarea(shouldParseHtml); } }, /** * Initializes interval-based syncing * also makes sure that on-submit the composer's content is synced with the textarea * immediately when the form gets submitted */ _observe: function() { var interval, that = this, form = this.textarea.element.form, startInterval = function() { interval = setInterval(function() { that.fromComposerToTextarea(); }, INTERVAL); }, stopInterval = function() { clearInterval(interval); interval = null; }; startInterval(); if (form) { // If the textarea is in a form make sure that after onreset and onsubmit the composer // has the correct state wysihtml5.dom.observe(form, "submit", function() { that.sync(true); }); wysihtml5.dom.observe(form, "reset", function() { setTimeout(function() { that.fromTextareaToComposer(); }, 0); }); } this.editor.on("change_view", function(view) { if (view === "composer" && !interval) { that.fromTextareaToComposer(true); startInterval(); } else if (view === "textarea") { that.fromComposerToTextarea(true); stopInterval(); } }); this.editor.on("destroy:composer", stopInterval); } }); })(wysihtml5); ;wysihtml5.views.Textarea = wysihtml5.views.View.extend( /** @scope wysihtml5.views.Textarea.prototype */ { name: "textarea", constructor: function(parent, textareaElement, config) { this.base(parent, textareaElement, config); this._observe(); }, clear: function() { this.element.value = ""; }, getValue: function(parse) { var value = this.isEmpty() ? "" : this.element.value; if (parse !== false) { value = this.parent.parse(value); } return value; }, setValue: function(html, parse) { if (parse) { html = this.parent.parse(html); } this.element.value = html; }, cleanUp: function() { var html = this.parent.parse(this.element.value); this.element.value = html; }, hasPlaceholderSet: function() { var supportsPlaceholder = wysihtml5.browser.supportsPlaceholderAttributeOn(this.element), placeholderText = this.element.getAttribute("placeholder") || null, value = this.element.value, isEmpty = !value; return (supportsPlaceholder && isEmpty) || (value === placeholderText); }, isEmpty: function() { return !wysihtml5.lang.string(this.element.value).trim() || this.hasPlaceholderSet(); }, _observe: function() { var element = this.element, parent = this.parent, eventMapping = { focusin: "focus", focusout: "blur" }, /** * Calling focus() or blur() on an element doesn't synchronously trigger the attached focus/blur events * This is the case for focusin and focusout, so let's use them whenever possible, kkthxbai */ events = wysihtml5.browser.supportsEvent("focusin") ? ["focusin", "focusout", "change"] : ["focus", "blur", "change"]; parent.on("beforeload", function() { wysihtml5.dom.observe(element, events, function(event) { var eventName = eventMapping[event.type] || event.type; parent.fire(eventName).fire(eventName + ":textarea"); }); wysihtml5.dom.observe(element, ["paste", "drop"], function() { setTimeout(function() { parent.fire("paste").fire("paste:textarea"); }, 0); }); }); } }); ;/** * WYSIHTML5 Editor * * @param {Element} editableElement Reference to the textarea which should be turned into a rich text interface * @param {Object} [config] See defaultConfig object below for explanation of each individual config option * * @events * load * beforeload (for internal use only) * focus * focus:composer * focus:textarea * blur * blur:composer * blur:textarea * change * change:composer * change:textarea * paste * paste:composer * paste:textarea * newword:composer * destroy:composer * undo:composer * redo:composer * beforecommand:composer * aftercommand:composer * enable:composer * disable:composer * change_view */ (function(wysihtml5) { var undef; var defaultConfig = { // Give the editor a name, the name will also be set as class name on the iframe and on the iframe's body name: undef, // Whether the editor should look like the textarea (by adopting styles) style: true, // Id of the toolbar element, pass falsey value if you don't want any toolbar logic toolbar: undef, // Whether toolbar is displayed after init by script automatically. // Can be set to false if toolobar is set to display only on editable area focus showToolbarAfterInit: true, // Whether urls, entered by the user should automatically become clickable-links autoLink: true, // Includes table editing events and cell selection tracking handleTables: true, // Tab key inserts tab into text as default behaviour. It can be disabled to regain keyboard navigation handleTabKey: true, // Object which includes parser rules to apply when html gets cleaned // See parser_rules/*.js for examples parserRules: { tags: { br: {}, span: {}, div: {}, p: {} }, classes: {} }, // Object which includes parser when the user inserts content via copy & paste. If null parserRules will be used instead pasteParserRulesets: null, // Parser method to use when the user inserts content parser: wysihtml5.dom.parse, // Class name which should be set on the contentEditable element in the created sandbox iframe, can be styled via the 'stylesheets' option composerClassName: "wysihtml5-editor", // Class name to add to the body when the wysihtml5 editor is supported bodyClassName: "wysihtml5-supported", // By default wysihtml5 will insert a <br> for line breaks, set this to false to use <p> useLineBreaks: true, // Array (or single string) of stylesheet urls to be loaded in the editor's iframe stylesheets: [], // Placeholder text to use, defaults to the placeholder attribute on the textarea element placeholderText: undef, // Whether the rich text editor should be rendered on touch devices (wysihtml5 >= 0.3.0 comes with basic support for iOS 5) supportTouchDevices: true, // Whether senseless <span> elements (empty or without attributes) should be removed/replaced with their content cleanUp: true, // Whether to use div instead of secure iframe contentEditableMode: false, // Classname of container that editor should not touch and pass through // Pass false to disable uneditableContainerClassname: "wysihtml5-uneditable-container", // Browsers that support copied source handling will get a marking of the origin of the copied source (for determinig code cleanup rules on paste) // Also copied source is based directly on selection - // (very useful for webkit based browsers where copy will otherwise contain a lot of code and styles based on whatever and not actually in selection). // If falsy value is passed source override is also disabled copyedFromMarking: '<meta name="copied-from" content="wysihtml5">' }; wysihtml5.Editor = wysihtml5.lang.Dispatcher.extend( /** @scope wysihtml5.Editor.prototype */ { constructor: function(editableElement, config) { this.editableElement = typeof(editableElement) === "string" ? document.getElementById(editableElement) : editableElement; this.config = wysihtml5.lang.object({}).merge(defaultConfig).merge(config).get(); this._isCompatible = wysihtml5.browser.supported(); if (this.editableElement.nodeName.toLowerCase() != "textarea") { this.config.contentEditableMode = true; this.config.noTextarea = true; } if (!this.config.noTextarea) { this.textarea = new wysihtml5.views.Textarea(this, this.editableElement, this.config); this.currentView = this.textarea; } // Sort out unsupported/unwanted browsers here if (!this._isCompatible || (!this.config.supportTouchDevices && wysihtml5.browser.isTouchDevice())) { var that = this; setTimeout(function() { that.fire("beforeload").fire("load"); }, 0); return; } // Add class name to body, to indicate that the editor is supported wysihtml5.dom.addClass(document.body, this.config.bodyClassName); this.composer = new wysihtml5.views.Composer(this, this.editableElement, this.config); this.currentView = this.composer; if (typeof(this.config.parser) === "function") { this._initParser(); } this.on("beforeload", this.handleBeforeLoad); }, handleBeforeLoad: function() { if (!this.config.noTextarea) { this.synchronizer = new wysihtml5.views.Synchronizer(this, this.textarea, this.composer); } if (this.config.toolbar) { this.toolbar = new wysihtml5.toolbar.Toolbar(this, this.config.toolbar, this.config.showToolbarAfterInit); } }, isCompatible: function() { return this._isCompatible; }, clear: function() { this.currentView.clear(); return this; }, getValue: function(parse, clearInternals) { return this.currentView.getValue(parse, clearInternals); }, setValue: function(html, parse) { this.fire("unset_placeholder"); if (!html) { return this.clear(); } this.currentView.setValue(html, parse); return this; }, cleanUp: function() { this.currentView.cleanUp(); }, focus: function(setToEnd) { this.currentView.focus(setToEnd); return this; }, /** * Deactivate editor (make it readonly) */ disable: function() { this.currentView.disable(); return this; }, /** * Activate editor */ enable: function() { this.currentView.enable(); return this; }, isEmpty: function() { return this.currentView.isEmpty(); }, hasPlaceholderSet: function() { return this.currentView.hasPlaceholderSet(); }, parse: function(htmlOrElement, clearInternals) { var parseContext = (this.config.contentEditableMode) ? document : ((this.composer) ? this.composer.sandbox.getDocument() : null); var returnValue = this.config.parser(htmlOrElement, { "rules": this.config.parserRules, "cleanUp": this.config.cleanUp, "context": parseContext, "uneditableClass": this.config.uneditableContainerClassname, "clearInternals" : clearInternals }); if (typeof(htmlOrElement) === "object") { wysihtml5.quirks.redraw(htmlOrElement); } return returnValue; }, /** * Prepare html parser logic * - Observes for paste and drop */ _initParser: function() { var that = this, oldHtml, cleanHtml; if (wysihtml5.browser.supportsModenPaste()) { this.on("paste:composer", function(event) { event.preventDefault(); oldHtml = wysihtml5.dom.getPastedHtml(event); if (oldHtml) { that._cleanAndPaste(oldHtml); } }); } else { this.on("beforepaste:composer", function(event) { event.preventDefault(); wysihtml5.dom.getPastedHtmlWithDiv(that.composer, function(pastedHTML) { if (pastedHTML) { that._cleanAndPaste(pastedHTML); } }); }); } }, _cleanAndPaste: function (oldHtml) { var cleanHtml = wysihtml5.quirks.cleanPastedHTML(oldHtml, { "referenceNode": this.composer.element, "rules": this.config.pasteParserRulesets || [{"set": this.config.parserRules}], "uneditableClass": this.config.uneditableContainerClassname }); this.composer.selection.deleteContents(); this.composer.selection.insertHTML(cleanHtml); } }); })(wysihtml5); ;/** * Toolbar Dialog * * @param {Element} link The toolbar link which causes the dialog to show up * @param {Element} container The dialog container * * @example * <!-- Toolbar link --> * <a data-wysihtml5-command="insertImage">insert an image</a> * * <!-- Dialog --> * <div data-wysihtml5-dialog="insertImage" style="display: none;"> * <label> * URL: <input data-wysihtml5-dialog-field="src" value="http://"> * </label> * <label> * Alternative text: <input data-wysihtml5-dialog-field="alt" value=""> * </label> * </div> * * <script> * var dialog = new wysihtml5.toolbar.Dialog( * document.querySelector("[data-wysihtml5-command='insertImage']"), * document.querySelector("[data-wysihtml5-dialog='insertImage']") * ); * dialog.observe("save", function(attributes) { * // do something * }); * </script> */ (function(wysihtml5) { var dom = wysihtml5.dom, CLASS_NAME_OPENED = "wysihtml5-command-dialog-opened", SELECTOR_FORM_ELEMENTS = "input, select, textarea", SELECTOR_FIELDS = "[data-wysihtml5-dialog-field]", ATTRIBUTE_FIELDS = "data-wysihtml5-dialog-field"; wysihtml5.toolbar.Dialog = wysihtml5.lang.Dispatcher.extend( /** @scope wysihtml5.toolbar.Dialog.prototype */ { constructor: function(link, container) { this.link = link; this.container = container; }, _observe: function() { if (this._observed) { return; } var that = this, callbackWrapper = function(event) { var attributes = that._serialize(); if (attributes == that.elementToChange) { that.fire("edit", attributes); } else { that.fire("save", attributes); } that.hide(); event.preventDefault(); event.stopPropagation(); }; dom.observe(that.link, "click", function() { if (dom.hasClass(that.link, CLASS_NAME_OPENED)) { setTimeout(function() { that.hide(); }, 0); } }); dom.observe(this.container, "keydown", function(event) { var keyCode = event.keyCode; if (keyCode === wysihtml5.ENTER_KEY) { callbackWrapper(event); } if (keyCode === wysihtml5.ESCAPE_KEY) { that.fire("cancel"); that.hide(); } }); dom.delegate(this.container, "[data-wysihtml5-dialog-action=save]", "click", callbackWrapper); dom.delegate(this.container, "[data-wysihtml5-dialog-action=cancel]", "click", function(event) { that.fire("cancel"); that.hide(); event.preventDefault(); event.stopPropagation(); }); var formElements = this.container.querySelectorAll(SELECTOR_FORM_ELEMENTS), i = 0, length = formElements.length, _clearInterval = function() { clearInterval(that.interval); }; for (; i<length; i++) { dom.observe(formElements[i], "change", _clearInterval); } this._observed = true; }, /** * Grabs all fields in the dialog and puts them in key=>value style in an object which * then gets returned */ _serialize: function() { var data = this.elementToChange || {}, fields = this.container.querySelectorAll(SELECTOR_FIELDS), length = fields.length, i = 0; for (; i<length; i++) { data[fields[i].getAttribute(ATTRIBUTE_FIELDS)] = fields[i].value; } return data; }, /** * Takes the attributes of the "elementToChange" * and inserts them in their corresponding dialog input fields * * Assume the "elementToChange" looks like this: * <a href="http://www.google.com" target="_blank">foo</a> * * and we have the following dialog: * <input type="text" data-wysihtml5-dialog-field="href" value=""> * <input type="text" data-wysihtml5-dialog-field="target" value=""> * * after calling _interpolate() the dialog will look like this * <input type="text" data-wysihtml5-dialog-field="href" value="http://www.google.com"> * <input type="text" data-wysihtml5-dialog-field="target" value="_blank"> * * Basically it adopted the attribute values into the corresponding input fields * */ _interpolate: function(avoidHiddenFields) { var field, fieldName, newValue, focusedElement = document.querySelector(":focus"), fields = this.container.querySelectorAll(SELECTOR_FIELDS), length = fields.length, i = 0; for (; i<length; i++) { field = fields[i]; // Never change elements where the user is currently typing in if (field === focusedElement) { continue; } // Don't update hidden fields // See https://github.com/xing/wysihtml5/pull/14 if (avoidHiddenFields && field.type === "hidden") { continue; } fieldName = field.getAttribute(ATTRIBUTE_FIELDS); newValue = (this.elementToChange && typeof(this.elementToChange) !== 'boolean') ? (this.elementToChange.getAttribute(fieldName) || "") : field.defaultValue; field.value = newValue; } }, /** * Show the dialog element */ show: function(elementToChange) { if (dom.hasClass(this.link, CLASS_NAME_OPENED)) { return; } var that = this, firstField = this.container.querySelector(SELECTOR_FORM_ELEMENTS); this.elementToChange = elementToChange; this._observe(); this._interpolate(); if (elementToChange) { this.interval = setInterval(function() { that._interpolate(true); }, 500); } dom.addClass(this.link, CLASS_NAME_OPENED); this.container.style.display = ""; this.fire("show"); if (firstField && !elementToChange) { try { firstField.focus(); } catch(e) {} } }, /** * Hide the dialog element */ hide: function() { clearInterval(this.interval); this.elementToChange = null; dom.removeClass(this.link, CLASS_NAME_OPENED); this.container.style.display = "none"; this.fire("hide"); } }); })(wysihtml5); ;/** * Converts speech-to-text and inserts this into the editor * As of now (2011/03/25) this only is supported in Chrome >= 11 * * Note that it sends the recorded audio to the google speech recognition api: * http://stackoverflow.com/questions/4361826/does-chrome-have-buil-in-speech-recognition-for-input-type-text-x-webkit-speec * * Current HTML5 draft can be found here * http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html * * "Accessing Google Speech API Chrome 11" * http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/ */ (function(wysihtml5) { var dom = wysihtml5.dom; var linkStyles = { position: "relative" }; var wrapperStyles = { left: 0, margin: 0, opacity: 0, overflow: "hidden", padding: 0, position: "absolute", top: 0, zIndex: 1 }; var inputStyles = { cursor: "inherit", fontSize: "50px", height: "50px", marginTop: "-25px", outline: 0, padding: 0, position: "absolute", right: "-4px", top: "50%" }; var inputAttributes = { "x-webkit-speech": "", "speech": "" }; wysihtml5.toolbar.Speech = function(parent, link) { var input = document.createElement("input"); if (!wysihtml5.browser.supportsSpeechApiOn(input)) { link.style.display = "none"; return; } var lang = parent.editor.textarea.element.getAttribute("lang"); if (lang) { inputAttributes.lang = lang; } var wrapper = document.createElement("div"); wysihtml5.lang.object(wrapperStyles).merge({ width: link.offsetWidth + "px", height: link.offsetHeight + "px" }); dom.insert(input).into(wrapper); dom.insert(wrapper).into(link); dom.setStyles(inputStyles).on(input); dom.setAttributes(inputAttributes).on(input); dom.setStyles(wrapperStyles).on(wrapper); dom.setStyles(linkStyles).on(link); var eventName = "onwebkitspeechchange" in input ? "webkitspeechchange" : "speechchange"; dom.observe(input, eventName, function() { parent.execCommand("insertText", input.value); input.value = ""; }); dom.observe(input, "click", function(event) { if (dom.hasClass(link, "wysihtml5-command-disabled")) { event.preventDefault(); } event.stopPropagation(); }); }; })(wysihtml5); ;/** * Toolbar * * @param {Object} parent Reference to instance of Editor instance * @param {Element} container Reference to the toolbar container element * * @example * <div id="toolbar"> * <a data-wysihtml5-command="createLink">insert link</a> * <a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h1">insert h1</a> * </div> * * <script> * var toolbar = new wysihtml5.toolbar.Toolbar(editor, document.getElementById("toolbar")); * </script> */ (function(wysihtml5) { var CLASS_NAME_COMMAND_DISABLED = "wysihtml5-command-disabled", CLASS_NAME_COMMANDS_DISABLED = "wysihtml5-commands-disabled", CLASS_NAME_COMMAND_ACTIVE = "wysihtml5-command-active", CLASS_NAME_ACTION_ACTIVE = "wysihtml5-action-active", dom = wysihtml5.dom; wysihtml5.toolbar.Toolbar = Base.extend( /** @scope wysihtml5.toolbar.Toolbar.prototype */ { constructor: function(editor, container, showOnInit) { this.editor = editor; this.container = typeof(container) === "string" ? document.getElementById(container) : container; this.composer = editor.composer; this._getLinks("command"); this._getLinks("action"); this._observe(); if (showOnInit) { this.show(); } if (editor.config.classNameCommandDisabled != null) { CLASS_NAME_COMMAND_DISABLED = editor.config.classNameCommandDisabled; } if (editor.config.classNameCommandsDisabled != null) { CLASS_NAME_COMMANDS_DISABLED = editor.config.classNameCommandsDisabled; } if (editor.config.classNameCommandActive != null) { CLASS_NAME_COMMAND_ACTIVE = editor.config.classNameCommandActive; } if (editor.config.classNameActionActive != null) { CLASS_NAME_ACTION_ACTIVE = editor.config.classNameActionActive; } var speechInputLinks = this.container.querySelectorAll("[data-wysihtml5-command=insertSpeech]"), length = speechInputLinks.length, i = 0; for (; i<length; i++) { new wysihtml5.toolbar.Speech(this, speechInputLinks[i]); } }, _getLinks: function(type) { var links = this[type + "Links"] = wysihtml5.lang.array(this.container.querySelectorAll("[data-wysihtml5-" + type + "]")).get(), length = links.length, i = 0, mapping = this[type + "Mapping"] = {}, link, group, name, value, dialog; for (; i<length; i++) { link = links[i]; name = link.getAttribute("data-wysihtml5-" + type); value = link.getAttribute("data-wysihtml5-" + type + "-value"); group = this.container.querySelector("[data-wysihtml5-" + type + "-group='" + name + "']"); dialog = this._getDialog(link, name); mapping[name + ":" + value] = { link: link, group: group, name: name, value: value, dialog: dialog, state: false }; } }, _getDialog: function(link, command) { var that = this, dialogElement = this.container.querySelector("[data-wysihtml5-dialog='" + command + "']"), dialog, caretBookmark; if (dialogElement) { if (wysihtml5.toolbar["Dialog_" + command]) { dialog = new wysihtml5.toolbar["Dialog_" + command](link, dialogElement); } else { dialog = new wysihtml5.toolbar.Dialog(link, dialogElement); } dialog.on("show", function() { caretBookmark = that.composer.selection.getBookmark(); that.editor.fire("show:dialog", { command: command, dialogContainer: dialogElement, commandLink: link }); }); dialog.on("save", function(attributes) { if (caretBookmark) { that.composer.selection.setBookmark(caretBookmark); } that._execCommand(command, attributes); that.editor.fire("save:dialog", { command: command, dialogContainer: dialogElement, commandLink: link }); }); dialog.on("cancel", function() { that.editor.focus(false); that.editor.fire("cancel:dialog", { command: command, dialogContainer: dialogElement, commandLink: link }); }); } return dialog; }, /** * @example * var toolbar = new wysihtml5.Toolbar(); * // Insert a <blockquote> element or wrap current selection in <blockquote> * toolbar.execCommand("formatBlock", "blockquote"); */ execCommand: function(command, commandValue) { if (this.commandsDisabled) { return; } var commandObj = this.commandMapping[command + ":" + commandValue]; // Show dialog when available if (commandObj && commandObj.dialog && !commandObj.state) { commandObj.dialog.show(); } else { this._execCommand(command, commandValue); } }, _execCommand: function(command, commandValue) { // Make sure that composer is focussed (false => don't move caret to the end) this.editor.focus(false); this.composer.commands.exec(command, commandValue); this._updateLinkStates(); }, execAction: function(action) { var editor = this.editor; if (action === "change_view") { if (editor.textarea) { if (editor.currentView === editor.textarea) { editor.fire("change_view", "composer"); } else { editor.fire("change_view", "textarea"); } } } if (action == "showSource") { editor.fire("showSource"); } }, _observe: function() { var that = this, editor = this.editor, container = this.container, links = this.commandLinks.concat(this.actionLinks), length = links.length, i = 0; for (; i<length; i++) { // 'javascript:;' and unselectable=on Needed for IE, but done in all browsers to make sure that all get the same css applied // (you know, a:link { ... } doesn't match anchors with missing href attribute) if (links[i].nodeName === "A") { dom.setAttributes({ href: "javascript:;", unselectable: "on" }).on(links[i]); } else { dom.setAttributes({ unselectable: "on" }).on(links[i]); } } // Needed for opera and chrome dom.delegate(container, "[data-wysihtml5-command], [data-wysihtml5-action]", "mousedown", function(event) { event.preventDefault(); }); dom.delegate(container, "[data-wysihtml5-command]", "click", function(event) { var link = this, command = link.getAttribute("data-wysihtml5-command"), commandValue = link.getAttribute("data-wysihtml5-command-value"); that.execCommand(command, commandValue); event.preventDefault(); }); dom.delegate(container, "[data-wysihtml5-action]", "click", function(event) { var action = this.getAttribute("data-wysihtml5-action"); that.execAction(action); event.preventDefault(); }); editor.on("interaction:composer", function() { that._updateLinkStates(); }); editor.on("focus:composer", function() { that.bookmark = null; }); if (this.editor.config.handleTables) { editor.on("tableselect:composer", function() { that.container.querySelectorAll('[data-wysihtml5-hiddentools="table"]')[0].style.display = ""; }); editor.on("tableunselect:composer", function() { that.container.querySelectorAll('[data-wysihtml5-hiddentools="table"]')[0].style.display = "none"; }); } editor.on("change_view", function(currentView) { // Set timeout needed in order to let the blur event fire first if (editor.textarea) { setTimeout(function() { that.commandsDisabled = (currentView !== "composer"); that._updateLinkStates(); if (that.commandsDisabled) { dom.addClass(container, CLASS_NAME_COMMANDS_DISABLED); } else { dom.removeClass(container, CLASS_NAME_COMMANDS_DISABLED); } }, 0); } }); }, _updateLinkStates: function() { var commandMapping = this.commandMapping, actionMapping = this.actionMapping, i, state, action, command; // every millisecond counts... this is executed quite often for (i in commandMapping) { command = commandMapping[i]; if (this.commandsDisabled) { state = false; dom.removeClass(command.link, CLASS_NAME_COMMAND_ACTIVE); if (command.group) { dom.removeClass(command.group, CLASS_NAME_COMMAND_ACTIVE); } if (command.dialog) { command.dialog.hide(); } } else { state = this.composer.commands.state(command.name, command.value); dom.removeClass(command.link, CLASS_NAME_COMMAND_DISABLED); if (command.group) { dom.removeClass(command.group, CLASS_NAME_COMMAND_DISABLED); } } if (command.state === state) { continue; } command.state = state; if (state) { dom.addClass(command.link, CLASS_NAME_COMMAND_ACTIVE); if (command.group) { dom.addClass(command.group, CLASS_NAME_COMMAND_ACTIVE); } if (command.dialog) { if (typeof(state) === "object" || wysihtml5.lang.object(state).isArray()) { if (!command.dialog.multiselect && wysihtml5.lang.object(state).isArray()) { // Grab first and only object/element in state array, otherwise convert state into boolean // to avoid showing a dialog for multiple selected elements which may have different attributes // eg. when two links with different href are selected, the state will be an array consisting of both link elements // but the dialog interface can only update one state = state.length === 1 ? state[0] : true; command.state = state; } command.dialog.show(state); } else { command.dialog.hide(); } } } else { dom.removeClass(command.link, CLASS_NAME_COMMAND_ACTIVE); if (command.group) { dom.removeClass(command.group, CLASS_NAME_COMMAND_ACTIVE); } if (command.dialog) { command.dialog.hide(); } } } for (i in actionMapping) { action = actionMapping[i]; if (action.name === "change_view") { action.state = this.editor.currentView === this.editor.textarea; if (action.state) { dom.addClass(action.link, CLASS_NAME_ACTION_ACTIVE); } else { dom.removeClass(action.link, CLASS_NAME_ACTION_ACTIVE); } } } }, show: function() { this.container.style.display = ""; }, hide: function() { this.container.style.display = "none"; } }); })(wysihtml5); ;(function(wysihtml5) { wysihtml5.toolbar.Dialog_createTable = wysihtml5.toolbar.Dialog.extend({ show: function(elementToChange) { this.base(elementToChange); } }); })(wysihtml5); ;(function(wysihtml5) { var dom = wysihtml5.dom, SELECTOR_FIELDS = "[data-wysihtml5-dialog-field]", ATTRIBUTE_FIELDS = "data-wysihtml5-dialog-field"; wysihtml5.toolbar.Dialog_foreColorStyle = wysihtml5.toolbar.Dialog.extend({ multiselect: true, _serialize: function() { var data = {}, fields = this.container.querySelectorAll(SELECTOR_FIELDS), length = fields.length, i = 0; for (; i<length; i++) { data[fields[i].getAttribute(ATTRIBUTE_FIELDS)] = fields[i].value; } return data; }, _interpolate: function(avoidHiddenFields) { var field, fieldName, newValue, focusedElement = document.querySelector(":focus"), fields = this.container.querySelectorAll(SELECTOR_FIELDS), length = fields.length, i = 0, firstElement = (this.elementToChange) ? ((wysihtml5.lang.object(this.elementToChange).isArray()) ? this.elementToChange[0] : this.elementToChange) : null, colorStr = (firstElement) ? firstElement.getAttribute('style') : null, color = (colorStr) ? wysihtml5.quirks.styleParser.parseColor(colorStr, "color") : null; for (; i<length; i++) { field = fields[i]; // Never change elements where the user is currently typing in if (field === focusedElement) { continue; } // Don't update hidden fields3 if (avoidHiddenFields && field.type === "hidden") { continue; } if (field.getAttribute(ATTRIBUTE_FIELDS) === "color") { if (color) { if (color[3] && color[3] != 1) { field.value = "rgba(" + color[0] + "," + color[1] + "," + color[2] + "," + color[3] + ");"; } else { field.value = "rgb(" + color[0] + "," + color[1] + "," + color[2] + ");"; } } else { field.value = "rgb(0,0,0);"; } } } } }); })(wysihtml5); ;(function(wysihtml5) { var dom = wysihtml5.dom, SELECTOR_FIELDS = "[data-wysihtml5-dialog-field]", ATTRIBUTE_FIELDS = "data-wysihtml5-dialog-field"; wysihtml5.toolbar.Dialog_fontSizeStyle = wysihtml5.toolbar.Dialog.extend({ multiselect: true, _serialize: function() { return {"size" : this.container.querySelector('[data-wysihtml5-dialog-field="size"]').value}; }, _interpolate: function(avoidHiddenFields) { var focusedElement = document.querySelector(":focus"), field = this.container.querySelector("[data-wysihtml5-dialog-field='size']"), firstElement = (this.elementToChange) ? ((wysihtml5.lang.object(this.elementToChange).isArray()) ? this.elementToChange[0] : this.elementToChange) : null, styleStr = (firstElement) ? firstElement.getAttribute('style') : null, size = (styleStr) ? wysihtml5.quirks.styleParser.parseFontSize(styleStr) : null; if (field && field !== focusedElement && size && !(/^\s*$/).test(size)) { field.value = size; } } }); })(wysihtml5); /*! handlebars v1.3.0 Copyright (C) 2011 by Yehuda Katz Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @license */ var Handlebars=function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return h[a]||"&"}function c(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])}function d(a){return a instanceof g?a.toString():a||0===a?(a=""+a,j.test(a)?a.replace(i,b):a):""}function e(a){return a||0===a?m(a)&&0===a.length?!0:!1:!0}var f={},g=a,h={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},i=/[&<>"'`]/g,j=/[&<>"'`]/;f.extend=c;var k=Object.prototype.toString;f.toString=k;var l=function(a){return"function"==typeof a};l(/x/)&&(l=function(a){return"function"==typeof a&&"[object Function]"===k.call(a)});var l;f.isFunction=l;var m=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===k.call(a):!1};return f.isArray=m,f.escapeExpression=d,f.isEmpty=e,f}(a),c=function(){"use strict";function a(a,b){var d;b&&b.firstLine&&(d=b.firstLine,a+=" - "+d+":"+b.firstColumn);for(var e=Error.prototype.constructor.call(this,a),f=0;f<c.length;f++)this[c[f]]=e[c[f]];d&&(this.lineNumber=d,this.column=b.firstColumn)}var b,c=["description","fileName","lineNumber","message","name","number","stack"];return a.prototype=new Error,b=a}(),d=function(a,b){"use strict";function c(a,b){this.helpers=a||{},this.partials=b||{},d(this)}function d(a){a.registerHelper("helperMissing",function(a){if(2===arguments.length)return void 0;throw new h("Missing helper: '"+a+"'")}),a.registerHelper("blockHelperMissing",function(b,c){var d=c.inverse||function(){},e=c.fn;return m(b)&&(b=b.call(this)),b===!0?e(this):b===!1||null==b?d(this):l(b)?b.length>0?a.helpers.each(b,c):d(this):e(b)}),a.registerHelper("each",function(a,b){var c,d=b.fn,e=b.inverse,f=0,g="";if(m(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(l(a))for(var h=a.length;h>f;f++)c&&(c.index=f,c.first=0===f,c.last=f===a.length-1),g+=d(a[f],{data:c});else for(var i in a)a.hasOwnProperty(i)&&(c&&(c.key=i,c.index=f,c.first=0===f),g+=d(a[i],{data:c}),f++);return 0===f&&(g=e(this)),g}),a.registerHelper("if",function(a,b){return m(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||g.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){return m(a)&&(a=a.call(this)),g.isEmpty(a)?void 0:b.fn(a)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)})}function e(a,b){p.log(a,b)}var f={},g=a,h=b,i="1.3.0";f.VERSION=i;var j=4;f.COMPILER_REVISION=j;var k={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:">= 1.0.0"};f.REVISION_CHANGES=k;var l=g.isArray,m=g.isFunction,n=g.toString,o="[object Object]";f.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:p,log:e,registerHelper:function(a,b,c){if(n.call(a)===o){if(c||b)throw new h("Arg not supported with multiple helpers");g.extend(this.helpers,a)}else c&&(b.not=c),this.helpers[a]=b},registerPartial:function(a,b){n.call(a)===o?g.extend(this.partials,a):this.partials[a]=b}};var p={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(p.level<=a){var c=p.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};f.logger=p,f.log=e;var q=function(a){var b={};return g.extend(b,a),b};return f.createFrame=q,f}(b,c),e=function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=m;if(b!==c){if(c>b){var d=n[c],e=n[b];throw new l("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new l("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new l("No environment passed to template");var c=function(a,c,d,e,f,g){var h=b.VM.invokePartial.apply(this,arguments);if(null!=h)return h;if(b.compile){var i={helpers:e,partials:f,data:g};return f[c]=b.compile(a,{data:void 0!==g},b),f[c](d,i)}throw new l("The partial "+c+" could not be compiled when running in runtime-only mode")},d={escapeExpression:k.escapeExpression,invokePartial:c,programs:[],program:function(a,b,c){var d=this.programs[a];return c?d=g(a,b,c):d||(d=this.programs[a]=g(a,b)),d},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c={},k.extend(c,b),k.extend(c,a)),c},programWithDepth:b.VM.programWithDepth,noop:b.VM.noop,compilerInfo:null};return function(c,e){e=e||{};var f,g,h=e.partial?e:b;e.partial||(f=e.helpers,g=e.partials);var i=a.call(d,h,c,f,g,e.data);return e.partial||b.VM.checkRevision(d.compilerInfo),i}}function f(a,b,c){var d=Array.prototype.slice.call(arguments,3),e=function(a,e){return e=e||{},b.apply(this,[a,e.data||c].concat(d))};return e.program=a,e.depth=d.length,e}function g(a,b,c){var d=function(a,d){return d=d||{},b(a,d.data||c)};return d.program=a,d.depth=0,d}function h(a,b,c,d,e,f){var g={partial:!0,helpers:d,partials:e,data:f};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,g):void 0}function i(){return""}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES;return j.checkRevision=d,j.template=e,j.programWithDepth=f,j.program=g,j.invokePartial=h,j.noop=i,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,f=m}(d,a,c,b,e);return f}();this["wysihtml5"] = this["wysihtml5"] || {}; this["wysihtml5"]["tpl"] = this["wysihtml5"]["tpl"] || {}; this["wysihtml5"]["tpl"]["blockquote"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } function program3(depth0,data) { return " \n <span class=\"fa fa-quote-left\"></span>\n "; } function program5(depth0,data) { return "\n <span class=\"glyphicon glyphicon-quote\"></span>\n "; } buffer += "<li>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"blockquote\" data-wysihtml5-display-format-name=\"false\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n</li>\n"; return buffer; }); this["wysihtml5"]["tpl"]["color"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } buffer += "<li class=\"dropdown\">\n <a class=\"btn btn-default dropdown-toggle "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\" data-toggle=\"dropdown\" tabindex=\"-1\">\n <span class=\"current-color\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.black)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</span>\n <b class=\"caret\"></b>\n </a>\n <ul class=\"dropdown-menu\">\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"black\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"black\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.black)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"silver\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"silver\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.silver)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"gray\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"gray\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.gray)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"maroon\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"maroon\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.maroon)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"red\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"red\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.red)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"purple\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"purple\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.purple)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"green\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"green\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.green)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"olive\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"olive\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.olive)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"navy\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"navy\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.navy)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"blue\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"blue\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.blue)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><div class=\"wysihtml5-colors\" data-wysihtml5-command-value=\"orange\"></div><a class=\"wysihtml5-colors-title\" data-wysihtml5-command=\"foreColor\" data-wysihtml5-command-value=\"orange\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.colours)),stack1 == null || stack1 === false ? stack1 : stack1.orange)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n </ul>\n</li>\n"; return buffer; }); this["wysihtml5"]["tpl"]["emphasis"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } function program3(depth0,data) { var buffer = "", stack1; buffer += "\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"small\" title=\"CTRL+S\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.emphasis)),stack1 == null || stack1 === false ? stack1 : stack1.small)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n "; return buffer; } buffer += "<li>\n <div class=\"btn-group\">\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"bold\" title=\"CTRL+B\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.emphasis)),stack1 == null || stack1 === false ? stack1 : stack1.bold)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"italic\" title=\"CTRL+I\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.emphasis)),stack1 == null || stack1 === false ? stack1 : stack1.italic)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"underline\" title=\"CTRL+U\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.emphasis)),stack1 == null || stack1 === false ? stack1 : stack1.underline)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.emphasis)),stack1 == null || stack1 === false ? stack1 : stack1.small), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </div>\n</li>\n"; return buffer; }); this["wysihtml5"]["tpl"]["font-styles"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } function program3(depth0,data) { return "\n <span class=\"fa fa-font\"></span>\n "; } function program5(depth0,data) { return "\n <span class=\"glyphicon glyphicon-font\"></span>\n "; } buffer += "<li class=\"dropdown\">\n <a class=\"btn btn-default dropdown-toggle "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\" data-toggle=\"dropdown\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n <span class=\"current-font\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.normal)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</span>\n <b class=\"caret\"></b>\n </a>\n <ul class=\"dropdown-menu\">\n <li><a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"p\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.normal)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h1\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.h1)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h2\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.h2)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h3\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.h3)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h4\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.h4)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h5\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.h5)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n <li><a data-wysihtml5-command=\"formatBlock\" data-wysihtml5-command-value=\"h6\" tabindex=\"-1\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.font_styles)),stack1 == null || stack1 === false ? stack1 : stack1.h6)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a></li>\n </ul>\n</li>\n"; return buffer; }); this["wysihtml5"]["tpl"]["html"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } function program3(depth0,data) { return "\n <span class=\"fa fa-pencil\"></span>\n "; } function program5(depth0,data) { return "\n <span class=\"glyphicon glyphicon-pencil\"></span>\n "; } buffer += "<li>\n <div class=\"btn-group\">\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-action=\"change_view\" title=\"" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.html)),stack1 == null || stack1 === false ? stack1 : stack1.edit)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n </div>\n</li>\n"; return buffer; }); this["wysihtml5"]["tpl"]["image"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { return "modal-sm"; } function program3(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } function program5(depth0,data) { return "\n <span class=\"fa fa-file-image-o\"></span>\n "; } function program7(depth0,data) { return "\n <span class=\"glyphicon glyphicon-picture\"></span>\n "; } buffer += "<li>\n <div class=\"bootstrap-wysihtml5-insert-image-modal modal fade\" data-wysihtml5-dialog=\"insertImage\">\n <div class=\"modal-dialog "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.smallmodals), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <a class=\"close\" data-dismiss=\"modal\">×</a>\n <h3>" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.image)),stack1 == null || stack1 === false ? stack1 : stack1.insert)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</h3>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group\">\n <input value=\"http://\" class=\"bootstrap-wysihtml5-insert-image-url form-control\" data-wysihtml5-dialog-field=\"src\">\n </div> \n </div>\n <div class=\"modal-footer\">\n <a class=\"btn btn-default\" data-dismiss=\"modal\" data-wysihtml5-dialog-action=\"cancel\" href=\"#\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.image)),stack1 == null || stack1 === false ? stack1 : stack1.cancel)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n <a class=\"btn btn-primary\" data-dismiss=\"modal\" data-wysihtml5-dialog-action=\"save\" href=\"#\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.image)),stack1 == null || stack1 === false ? stack1 : stack1.insert)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n </div>\n </div>\n </div>\n </div>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"insertImage\" title=\"" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.image)),stack1 == null || stack1 === false ? stack1 : stack1.insert)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n</li>\n"; return buffer; }); this["wysihtml5"]["tpl"]["link"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { return "modal-sm"; } function program3(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } function program5(depth0,data) { return "\n <span class=\"fa fa-share-square-o\"></span>\n "; } function program7(depth0,data) { return "\n <span class=\"glyphicon glyphicon-share\"></span>\n "; } buffer += "<li>\n <div class=\"bootstrap-wysihtml5-insert-link-modal modal fade\" data-wysihtml5-dialog=\"createLink\">\n <div class=\"modal-dialog "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.smallmodals), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <a class=\"close\" data-dismiss=\"modal\">×</a>\n <h3>" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.link)),stack1 == null || stack1 === false ? stack1 : stack1.insert)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</h3>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group\">\n <input value=\"http://\" class=\"bootstrap-wysihtml5-insert-link-url form-control\" data-wysihtml5-dialog-field=\"href\">\n </div> \n <div class=\"checkbox\">\n <label> \n <input type=\"checkbox\" class=\"bootstrap-wysihtml5-insert-link-target\" checked>" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.link)),stack1 == null || stack1 === false ? stack1 : stack1.target)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\n </label>\n </div>\n </div>\n <div class=\"modal-footer\">\n <a class=\"btn btn-default\" data-dismiss=\"modal\" data-wysihtml5-dialog-action=\"cancel\" href=\"#\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.link)),stack1 == null || stack1 === false ? stack1 : stack1.cancel)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n <a href=\"#\" class=\"btn btn-primary\" data-dismiss=\"modal\" data-wysihtml5-dialog-action=\"save\">" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.link)),stack1 == null || stack1 === false ? stack1 : stack1.insert)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "</a>\n </div>\n </div>\n </div>\n </div>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"createLink\" title=\"" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.link)),stack1 == null || stack1 === false ? stack1 : stack1.insert)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(7, program7, data),fn:self.program(5, program5, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n</li>\n"; return buffer; }); this["wysihtml5"]["tpl"]["lists"] = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) { this.compilerInfo = [4,'>= 1.0.0']; helpers = this.merge(helpers, Handlebars.helpers); data = data || {}; var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this; function program1(depth0,data) { var buffer = "", stack1; buffer += "btn-" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)); return buffer; } function program3(depth0,data) { return "\n <span class=\"fa fa-list-ul\"></span>\n "; } function program5(depth0,data) { return "\n <span class=\"glyphicon glyphicon-list\"></span>\n "; } function program7(depth0,data) { return "\n <span class=\"fa fa-list-ol\"></span>\n "; } function program9(depth0,data) { return "\n <span class=\"glyphicon glyphicon-th-list\"></span>\n "; } function program11(depth0,data) { return "\n <span class=\"fa fa-outdent\"></span>\n "; } function program13(depth0,data) { return "\n <span class=\"glyphicon glyphicon-indent-right\"></span>\n "; } function program15(depth0,data) { return "\n <span class=\"fa fa-indent\"></span>\n "; } function program17(depth0,data) { return "\n <span class=\"glyphicon glyphicon-indent-left\"></span>\n "; } buffer += "<li>\n <div class=\"btn-group\">\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"insertUnorderedList\" title=\"" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.lists)),stack1 == null || stack1 === false ? stack1 : stack1.unordered)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(5, program5, data),fn:self.program(3, program3, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"insertOrderedList\" title=\"" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.lists)),stack1 == null || stack1 === false ? stack1 : stack1.ordered)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(9, program9, data),fn:self.program(7, program7, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"Outdent\" title=\"" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.lists)),stack1 == null || stack1 === false ? stack1 : stack1.outdent)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(13, program13, data),fn:self.program(11, program11, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n <a class=\"btn "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.size), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += " btn-default\" data-wysihtml5-command=\"Indent\" title=\"" + escapeExpression(((stack1 = ((stack1 = ((stack1 = (depth0 && depth0.locale)),stack1 == null || stack1 === false ? stack1 : stack1.lists)),stack1 == null || stack1 === false ? stack1 : stack1.indent)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1)) + "\" tabindex=\"-1\">\n "; stack1 = helpers['if'].call(depth0, ((stack1 = ((stack1 = (depth0 && depth0.options)),stack1 == null || stack1 === false ? stack1 : stack1.toolbar)),stack1 == null || stack1 === false ? stack1 : stack1.fa), {hash:{},inverse:self.program(17, program17, data),fn:self.program(15, program15, data),data:data}); if(stack1 || stack1 === 0) { buffer += stack1; } buffer += "\n </a>\n </div>\n</li>\n"; return buffer; });(function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define('bootstrap.wysihtml5', ['jquery', 'wysihtml5', 'bootstrap', 'bootstrap.wysihtml5.templates', 'bootstrap.wysihtml5.commands'], factory); } else { // Browser globals factory(jQuery, wysihtml5); // jshint ignore:line } }(function ($, wysihtml5) { 'use strict'; var bsWysihtml5 = function($, wysihtml5) { var templates = function(key, locale, options) { if(wysihtml5.tpl[key]) { return wysihtml5.tpl[key]({locale: locale, options: options}); } }; var Wysihtml5 = function(el, options) { this.el = el; var toolbarOpts = $.extend(true, {}, defaultOptions, options); for(var t in toolbarOpts.customTemplates) { if (toolbarOpts.customTemplates.hasOwnProperty(t)) { wysihtml5.tpl[t] = toolbarOpts.customTemplates[t]; } } this.toolbar = this.createToolbar(el, toolbarOpts); this.editor = this.createEditor(toolbarOpts); }; Wysihtml5.prototype = { constructor: Wysihtml5, createEditor: function(options) { options = options || {}; // Add the toolbar to a clone of the options object so multiple instances // of the WYISYWG don't break because 'toolbar' is already defined options = $.extend(true, {}, options); options.toolbar = this.toolbar[0]; this.initializeEditor(this.el[0], options); }, initializeEditor: function(el, options) { var editor = new wysihtml5.Editor(this.el[0], options); editor.on('beforeload', this.syncBootstrapDialogEvents); editor.on('beforeload', this.loadParserRules); // #30 - body is in IE 10 not created by default, which leads to nullpointer // 2014/02/13 - adapted to wysihtml5-0.4, does not work in IE if(editor.composer.editableArea.contentDocument) { this.addMoreShortcuts(editor, editor.composer.editableArea.contentDocument.body || editor.composer.editableArea.contentDocument, options.shortcuts); } else { this.addMoreShortcuts(editor, editor.composer.editableArea, options.shortcuts); } if(options && options.events) { for(var eventName in options.events) { if (options.events.hasOwnProperty(eventName)) { editor.on(eventName, options.events[eventName]); } } } return editor; }, loadParserRules: function() { if($.type(this.config.parserRules) === 'string') { $.ajax({ dataType: 'json', url: this.config.parserRules, context: this, error: function (jqXHR, textStatus, errorThrown) { console.log(errorThrown); }, success: function (parserRules) { this.config.parserRules = parserRules; console.log('parserrules loaded'); } }); } if(this.config.pasteParserRulesets && $.type(this.config.pasteParserRulesets) === 'string') { $.ajax({ dataType: 'json', url: this.config.pasteParserRulesets, context: this, error: function (jqXHR, textStatus, errorThrown) { console.log(errorThrown); }, success: function (pasteParserRulesets) { this.config.pasteParserRulesets = pasteParserRulesets; } }); } }, //sync wysihtml5 events for dialogs with bootstrap events syncBootstrapDialogEvents: function() { var editor = this; $.map(this.toolbar.commandMapping, function(value) { return [value]; }).filter(function(commandObj) { return commandObj.dialog; }).map(function(commandObj) { return commandObj.dialog; }).forEach(function(dialog) { dialog.on('show', function() { $(this.container).modal('show'); }); dialog.on('hide', function() { $(this.container).modal('hide'); setTimeout(editor.composer.focus, 0); }); $(dialog.container).on('shown.bs.modal', function () { $(this).find('input, select, textarea').first().focus(); }); }); this.on('change_view', function() { $(this.toolbar.container.children).find('a.btn').not('[data-wysihtml5-action="change_view"]').toggleClass('disabled'); }); }, createToolbar: function(el, options) { var self = this; var toolbar = $('<ul/>', { 'class' : 'wysihtml5-toolbar', 'style': 'display:none' }); var culture = options.locale || defaultOptions.locale || 'en'; if(!locale.hasOwnProperty(culture)) { console.debug('Locale \'' + culture + '\' not found. Available locales are: ' + Object.keys(locale) + '. Falling back to \'en\'.'); culture = 'en'; } var localeObject = $.extend(true, {}, locale.en, locale[culture]); for(var key in options.toolbar) { if(options.toolbar[key]) { toolbar.append(templates(key, localeObject, options)); } } toolbar.find('a[data-wysihtml5-command="formatBlock"]').click(function(e) { var target = e.delegateTarget || e.target || e.srcElement, el = $(target), showformat = el.data('wysihtml5-display-format-name'), formatname = el.data('wysihtml5-format-name') || el.html(); if(showformat === undefined || showformat === 'true') { self.toolbar.find('.current-font').text(formatname); } }); toolbar.find('a[data-wysihtml5-command="foreColor"]').click(function(e) { var target = e.target || e.srcElement; var el = $(target); self.toolbar.find('.current-color').text(el.html()); }); this.el.before(toolbar); return toolbar; }, addMoreShortcuts: function(editor, el, shortcuts) { /* some additional shortcuts */ wysihtml5.dom.observe(el, 'keydown', function(event) { var keyCode = event.keyCode, command = shortcuts[keyCode]; if ((event.ctrlKey || event.metaKey || event.altKey) && command && wysihtml5.commands[command]) { var commandObj = editor.toolbar.commandMapping[command + ':null']; if (commandObj && commandObj.dialog && !commandObj.state) { commandObj.dialog.show(); } else { wysihtml5.commands[command].exec(editor.composer, command); } event.preventDefault(); } }); } }; // these define our public api var methods = { resetDefaults: function() { $.fn.wysihtml5.defaultOptions = $.extend(true, {}, $.fn.wysihtml5.defaultOptionsCache); }, bypassDefaults: function(options) { return this.each(function () { var $this = $(this); $this.data('wysihtml5', new Wysihtml5($this, options)); }); }, shallowExtend: function (options) { var settings = $.extend({}, $.fn.wysihtml5.defaultOptions, options || {}, $(this).data()); var that = this; return methods.bypassDefaults.apply(that, [settings]); }, deepExtend: function(options) { var settings = $.extend(true, {}, $.fn.wysihtml5.defaultOptions, options || {}); var that = this; return methods.bypassDefaults.apply(that, [settings]); }, init: function(options) { var that = this; return methods.shallowExtend.apply(that, [options]); } }; $.fn.wysihtml5 = function ( method ) { if ( methods[method] ) { return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); } else if ( typeof method === 'object' || ! method ) { return methods.init.apply( this, arguments ); } else { $.error( 'Method ' + method + ' does not exist on jQuery.wysihtml5' ); } }; $.fn.wysihtml5.Constructor = Wysihtml5; var defaultOptions = $.fn.wysihtml5.defaultOptions = { toolbar: { 'font-styles': true, 'color': false, 'emphasis': { 'small': true }, 'blockquote': true, 'lists': true, 'html': false, 'link': true, 'image': true, 'smallmodals': false }, useLineBreaks: false, parserRules: { classes: { 'wysiwyg-color-silver' : 1, 'wysiwyg-color-gray' : 1, 'wysiwyg-color-white' : 1, 'wysiwyg-color-maroon' : 1, 'wysiwyg-color-red' : 1, 'wysiwyg-color-purple' : 1, 'wysiwyg-color-fuchsia' : 1, 'wysiwyg-color-green' : 1, 'wysiwyg-color-lime' : 1, 'wysiwyg-color-olive' : 1, 'wysiwyg-color-yellow' : 1, 'wysiwyg-color-navy' : 1, 'wysiwyg-color-blue' : 1, 'wysiwyg-color-teal' : 1, 'wysiwyg-color-aqua' : 1, 'wysiwyg-color-orange' : 1 }, tags: { 'b': {}, 'i': {}, 'strong': {}, 'em': {}, 'p': {}, 'br': {}, 'ol': {}, 'ul': {}, 'li': {}, 'h1': {}, 'h2': {}, 'h3': {}, 'h4': {}, 'h5': {}, 'h6': {}, 'blockquote': {}, 'u': 1, 'img': { 'check_attributes': { 'width': 'numbers', 'alt': 'alt', 'src': 'url', 'height': 'numbers' } }, 'a': { 'check_attributes': { 'href': 'url' }, 'set_attributes': { 'target': '_blank', 'rel': 'nofollow' } }, 'span': 1, 'div': 1, 'small': 1, 'code': 1, 'pre': 1 } }, locale: 'en', shortcuts: { '83': 'small',// S '75': 'createLink'// K } }; if (typeof $.fn.wysihtml5.defaultOptionsCache === 'undefined') { $.fn.wysihtml5.defaultOptionsCache = $.extend(true, {}, $.fn.wysihtml5.defaultOptions); } var locale = $.fn.wysihtml5.locale = {}; }; bsWysihtml5($, wysihtml5); })); (function(wysihtml5) { wysihtml5.commands.small = { exec: function(composer, command) { return wysihtml5.commands.formatInline.exec(composer, command, "small"); }, state: function(composer, command) { return wysihtml5.commands.formatInline.state(composer, command, "small"); } }; })(wysihtml5); /** * English translation for bootstrap-wysihtml5 */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define('bootstrap.wysihtml5.en-US', ['jquery', 'bootstrap.wysihtml5'], factory); } else { // Browser globals factory(jQuery); } }(function ($) { $.fn.wysihtml5.locale.en = $.fn.wysihtml5.locale['en-US'] = { font_styles: { normal: 'Normal text', h1: 'Heading 1', h2: 'Heading 2', h3: 'Heading 3', h4: 'Heading 4', h5: 'Heading 5', h6: 'Heading 6' }, emphasis: { bold: 'Bold', italic: 'Italic', underline: 'Underline', small: 'Small' }, lists: { unordered: 'Unordered list', ordered: 'Ordered list', outdent: 'Outdent', indent: 'Indent' }, link: { insert: 'Insert link', cancel: 'Cancel', target: 'Open link in new window' }, image: { insert: 'Insert image', cancel: 'Cancel' }, html: { edit: 'Edit HTML' }, colours: { black: 'Black', silver: 'Silver', gray: 'Grey', maroon: 'Maroon', red: 'Red', purple: 'Purple', green: 'Green', olive: 'Olive', navy: 'Navy', blue: 'Blue', orange: 'Orange' } }; })); AdminLTE/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.css 0000644 00000004771 15002261751 0020367 0 ustar 00 ul.wysihtml5-toolbar { margin: 0; padding: 0; display: block; } ul.wysihtml5-toolbar::after { clear: both; display: table; content: ""; } ul.wysihtml5-toolbar > li { float: left; display: list-item; list-style: none; margin: 0 5px 10px 0; } ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] { font-weight: bold; } ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] { font-style: italic; } ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] { text-decoration: underline; } ul.wysihtml5-toolbar a.btn.wysihtml5-command-active { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05); background-color: #E6E6E6; background-color: #D9D9D9; outline: 0; } ul.wysihtml5-commands-disabled .dropdown-menu { display: none !important; } ul.wysihtml5-toolbar div.wysihtml5-colors { display:block; width: 50px; height: 20px; margin-top: 2px; margin-left: 5px; position: absolute; pointer-events: none; } ul.wysihtml5-toolbar a.wysihtml5-colors-title { padding-left: 70px; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] { background: black !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] { background: silver !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] { background: gray !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] { background: maroon !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] { background: red !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] { background: purple !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] { background: green !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] { background: olive !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] { background: navy !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] { background: blue !important; } ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] { background: orange !important; } .glyphicon-quote:before { content: "\201C"; font-family: Georgia, serif; font-size: 50px; position: absolute; top: -4px; left: -3px; max-height: 100%; } .glyphicon-quote:after { content: "\0000a0"; } AdminLTE/plugins/jQuery/jquery-3.4.1.min.js 0000644 00000254121 15002261751 0014205 0 ustar 00 /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}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=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"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(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,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":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k}); AdminLTE/plugins/jQuery/jquery-2.2.3.min.js 0000644 00000247233 15002261751 0014212 0 ustar 00 /*! jQuery v2.2.3 | (c) jQuery Foundation | jquery.org/license */ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; }catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(b,c,e){var f=!0,g="width"===c?b.offsetWidth:b.offsetHeight,h=Ca(b),i="border-box"===n.css(b,"boxSizing",!1,h);if(d.msFullscreenElement&&a.top!==a&&b.getClientRects().length&&(g=Math.round(100*b.getBoundingClientRect()[c])),0>=g||null==g){if(g=Fa(b,c,h),(0>g||null==g)&&(g=b.style[c]),Ba.test(g))return g;f=i&&(l.boxSizingReliable()||g===b.style[c]),g=parseFloat(g)||0}return g+Oa(b,c,e||(i?"border":"content"),f,h)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b, e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,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":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n}); AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js 0000644 00000143566 15002261751 0016770 0 ustar 00 /*! ========================================================= * bootstrap-slider.js * * Maintainers: * Kyle Kemp * - Twitter: @seiyria * - Github: seiyria * Rohit Kalkur * - Twitter: @Rovolutionary * - Github: rovolution * * ========================================================= * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================= */ /** * Bridget makes jQuery widgets * v1.0.1 * MIT license */ (function(root, factory) { if(typeof define === "function" && define.amd) { define(["jquery"], factory); } else if(typeof module === "object" && module.exports) { var jQuery; try { jQuery = require("jquery"); } catch (err) { jQuery = null; } module.exports = factory(jQuery); } else { root.Slider = factory(root.jQuery); } }(this, function($) { // Reference to Slider constructor var Slider; (function( $ ) { 'use strict'; // -------------------------- utils -------------------------- // var slice = Array.prototype.slice; function noop() {} // -------------------------- definition -------------------------- // function defineBridget( $ ) { // bail if no jQuery if ( !$ ) { return; } // -------------------------- addOptionMethod -------------------------- // /** * adds option method -> $().plugin('option', {...}) * @param {Function} PluginClass - constructor class */ function addOptionMethod( PluginClass ) { // don't overwrite original option method if ( PluginClass.prototype.option ) { return; } // option setter PluginClass.prototype.option = function( opts ) { // bail out if not an object if ( !$.isPlainObject( opts ) ){ return; } this.options = $.extend( true, this.options, opts ); }; } // -------------------------- plugin bridge -------------------------- // // helper function for logging errors // $.error breaks jQuery chaining var logError = typeof console === 'undefined' ? noop : function( message ) { console.error( message ); }; /** * jQuery plugin bridge, access methods like $elem.plugin('method') * @param {String} namespace - plugin name * @param {Function} PluginClass - constructor class */ function bridge( namespace, PluginClass ) { // add to jQuery fn namespace $.fn[ namespace ] = function( options ) { if ( typeof options === 'string' ) { // call plugin method when first argument is a string // get arguments for method var args = slice.call( arguments, 1 ); for ( var i=0, len = this.length; i < len; i++ ) { var elem = this[i]; var instance = $.data( elem, namespace ); if ( !instance ) { logError( "cannot call methods on " + namespace + " prior to initialization; " + "attempted to call '" + options + "'" ); continue; } if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) { logError( "no such method '" + options + "' for " + namespace + " instance" ); continue; } // trigger method with arguments var returnValue = instance[ options ].apply( instance, args); // break look and return first value if provided if ( returnValue !== undefined && returnValue !== instance) { return returnValue; } } // return this if no return value return this; } else { var objects = this.map( function() { var instance = $.data( this, namespace ); if ( instance ) { // apply options & init instance.option( options ); instance._init(); } else { // initialize new instance instance = new PluginClass( this, options ); $.data( this, namespace, instance ); } return $(this); }); if(!objects || objects.length > 1) { return objects; } else { return objects[0]; } } }; } // -------------------------- bridget -------------------------- // /** * converts a Prototypical class into a proper jQuery plugin * the class must have a ._init method * @param {String} namespace - plugin name, used in $().pluginName * @param {Function} PluginClass - constructor class */ $.bridget = function( namespace, PluginClass ) { addOptionMethod( PluginClass ); bridge( namespace, PluginClass ); }; return $.bridget; } // get jquery from browser global defineBridget( $ ); })( $ ); /************************************************* BOOTSTRAP-SLIDER SOURCE CODE **************************************************/ (function($) { var ErrorMsgs = { formatInvalidInputErrorMsg : function(input) { return "Invalid input value '" + input + "' passed in"; }, callingContextNotSliderInstance : "Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method" }; var SliderScale = { linear: { toValue: function(percentage) { var rawValue = percentage/100 * (this.options.max - this.options.min); if (this.options.ticks_positions.length > 0) { var minv, maxv, minp, maxp = 0; for (var i = 0; i < this.options.ticks_positions.length; i++) { if (percentage <= this.options.ticks_positions[i]) { minv = (i > 0) ? this.options.ticks[i-1] : 0; minp = (i > 0) ? this.options.ticks_positions[i-1] : 0; maxv = this.options.ticks[i]; maxp = this.options.ticks_positions[i]; break; } } if (i > 0) { var partialPercentage = (percentage - minp) / (maxp - minp); rawValue = minv + partialPercentage * (maxv - minv); } } var value = this.options.min + Math.round(rawValue / this.options.step) * this.options.step; if (value < this.options.min) { return this.options.min; } else if (value > this.options.max) { return this.options.max; } else { return value; } }, toPercentage: function(value) { if (this.options.max === this.options.min) { return 0; } if (this.options.ticks_positions.length > 0) { var minv, maxv, minp, maxp = 0; for (var i = 0; i < this.options.ticks.length; i++) { if (value <= this.options.ticks[i]) { minv = (i > 0) ? this.options.ticks[i-1] : 0; minp = (i > 0) ? this.options.ticks_positions[i-1] : 0; maxv = this.options.ticks[i]; maxp = this.options.ticks_positions[i]; break; } } if (i > 0) { var partialPercentage = (value - minv) / (maxv - minv); return minp + partialPercentage * (maxp - minp); } } return 100 * (value - this.options.min) / (this.options.max - this.options.min); } }, logarithmic: { /* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */ toValue: function(percentage) { var min = (this.options.min === 0) ? 0 : Math.log(this.options.min); var max = Math.log(this.options.max); var value = Math.exp(min + (max - min) * percentage / 100); value = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step; /* Rounding to the nearest step could exceed the min or * max, so clip to those values. */ if (value < this.options.min) { return this.options.min; } else if (value > this.options.max) { return this.options.max; } else { return value; } }, toPercentage: function(value) { if (this.options.max === this.options.min) { return 0; } else { var max = Math.log(this.options.max); var min = this.options.min === 0 ? 0 : Math.log(this.options.min); var v = value === 0 ? 0 : Math.log(value); return 100 * (v - min) / (max - min); } } } }; /************************************************* CONSTRUCTOR **************************************************/ Slider = function(element, options) { createNewSlider.call(this, element, options); return this; }; function createNewSlider(element, options) { /* The internal state object is used to store data about the current 'state' of slider. This includes values such as the `value`, `enabled`, etc... */ this._state = { value: null, enabled: null, offset: null, size: null, percentage: null, inDrag: false, over: false }; if(typeof element === "string") { this.element = document.querySelector(element); } else if(element instanceof HTMLElement) { this.element = element; } /************************************************* Process Options **************************************************/ options = options ? options : {}; var optionTypes = Object.keys(this.defaultOptions); for(var i = 0; i < optionTypes.length; i++) { var optName = optionTypes[i]; // First check if an option was passed in via the constructor var val = options[optName]; // If no data attrib, then check data atrributes val = (typeof val !== 'undefined') ? val : getDataAttrib(this.element, optName); // Finally, if nothing was specified, use the defaults val = (val !== null) ? val : this.defaultOptions[optName]; // Set all options on the instance of the Slider if(!this.options) { this.options = {}; } this.options[optName] = val; } /* Validate `tooltip_position` against 'orientation` - if `tooltip_position` is incompatible with orientation, swith it to a default compatible with specified `orientation` -- default for "vertical" -> "right" -- default for "horizontal" -> "left" */ if(this.options.orientation === "vertical" && (this.options.tooltip_position === "top" || this.options.tooltip_position === "bottom")) { this.options.tooltip_position = "right"; } else if(this.options.orientation === "horizontal" && (this.options.tooltip_position === "left" || this.options.tooltip_position === "right")) { this.options.tooltip_position = "top"; } function getDataAttrib(element, optName) { var dataName = "data-slider-" + optName.replace(/_/g, '-'); var dataValString = element.getAttribute(dataName); try { return JSON.parse(dataValString); } catch(err) { return dataValString; } } /************************************************* Create Markup **************************************************/ var origWidth = this.element.style.width; var updateSlider = false; var parent = this.element.parentNode; var sliderTrackSelection; var sliderTrackLow, sliderTrackHigh; var sliderMinHandle; var sliderMaxHandle; if (this.sliderElem) { updateSlider = true; } else { /* Create elements needed for slider */ this.sliderElem = document.createElement("div"); this.sliderElem.className = "slider"; /* Create slider track elements */ var sliderTrack = document.createElement("div"); sliderTrack.className = "slider-track"; sliderTrackLow = document.createElement("div"); sliderTrackLow.className = "slider-track-low"; sliderTrackSelection = document.createElement("div"); sliderTrackSelection.className = "slider-selection"; sliderTrackHigh = document.createElement("div"); sliderTrackHigh.className = "slider-track-high"; sliderMinHandle = document.createElement("div"); sliderMinHandle.className = "slider-handle min-slider-handle"; sliderMinHandle.setAttribute('role', 'slider'); sliderMinHandle.setAttribute('aria-valuemin', this.options.min); sliderMinHandle.setAttribute('aria-valuemax', this.options.max); sliderMaxHandle = document.createElement("div"); sliderMaxHandle.className = "slider-handle max-slider-handle"; sliderMaxHandle.setAttribute('role', 'slider'); sliderMaxHandle.setAttribute('aria-valuemin', this.options.min); sliderMaxHandle.setAttribute('aria-valuemax', this.options.max); sliderTrack.appendChild(sliderTrackLow); sliderTrack.appendChild(sliderTrackSelection); sliderTrack.appendChild(sliderTrackHigh); /* Add aria-labelledby to handle's */ var isLabelledbyArray = Array.isArray(this.options.labelledby); if (isLabelledbyArray && this.options.labelledby[0]) { sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby[0]); } if (isLabelledbyArray && this.options.labelledby[1]) { sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby[1]); } if (!isLabelledbyArray && this.options.labelledby) { sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby); sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby); } /* Create ticks */ this.ticks = []; if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { for (i = 0; i < this.options.ticks.length; i++) { var tick = document.createElement('div'); tick.className = 'slider-tick'; this.ticks.push(tick); sliderTrack.appendChild(tick); } sliderTrackSelection.className += " tick-slider-selection"; } sliderTrack.appendChild(sliderMinHandle); sliderTrack.appendChild(sliderMaxHandle); this.tickLabels = []; if (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) { this.tickLabelContainer = document.createElement('div'); this.tickLabelContainer.className = 'slider-tick-label-container'; for (i = 0; i < this.options.ticks_labels.length; i++) { var label = document.createElement('div'); var noTickPositionsSpecified = this.options.ticks_positions.length === 0; var tickLabelsIndex = (this.options.reversed && noTickPositionsSpecified) ? (this.options.ticks_labels.length - (i + 1)) : i; label.className = 'slider-tick-label'; label.innerHTML = this.options.ticks_labels[tickLabelsIndex]; this.tickLabels.push(label); this.tickLabelContainer.appendChild(label); } } var createAndAppendTooltipSubElements = function(tooltipElem) { var arrow = document.createElement("div"); arrow.className = "tooltip-arrow"; var inner = document.createElement("div"); inner.className = "tooltip-inner"; tooltipElem.appendChild(arrow); tooltipElem.appendChild(inner); }; /* Create tooltip elements */ var sliderTooltip = document.createElement("div"); sliderTooltip.className = "tooltip tooltip-main"; sliderTooltip.setAttribute('role', 'presentation'); createAndAppendTooltipSubElements(sliderTooltip); var sliderTooltipMin = document.createElement("div"); sliderTooltipMin.className = "tooltip tooltip-min"; sliderTooltipMin.setAttribute('role', 'presentation'); createAndAppendTooltipSubElements(sliderTooltipMin); var sliderTooltipMax = document.createElement("div"); sliderTooltipMax.className = "tooltip tooltip-max"; sliderTooltipMax.setAttribute('role', 'presentation'); createAndAppendTooltipSubElements(sliderTooltipMax); /* Append components to sliderElem */ this.sliderElem.appendChild(sliderTrack); this.sliderElem.appendChild(sliderTooltip); this.sliderElem.appendChild(sliderTooltipMin); this.sliderElem.appendChild(sliderTooltipMax); if (this.tickLabelContainer) { this.sliderElem.appendChild(this.tickLabelContainer); } /* Append slider element to parent container, right before the original <input> element */ parent.insertBefore(this.sliderElem, this.element); /* Hide original <input> element */ this.element.style.display = "none"; } /* If JQuery exists, cache JQ references */ if($) { this.$element = $(this.element); this.$sliderElem = $(this.sliderElem); } /************************************************* Setup **************************************************/ this.eventToCallbackMap = {}; this.sliderElem.id = this.options.id; this.touchCapable = 'ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch); this.tooltip = this.sliderElem.querySelector('.tooltip-main'); this.tooltipInner = this.tooltip.querySelector('.tooltip-inner'); this.tooltip_min = this.sliderElem.querySelector('.tooltip-min'); this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner'); this.tooltip_max = this.sliderElem.querySelector('.tooltip-max'); this.tooltipInner_max= this.tooltip_max.querySelector('.tooltip-inner'); if (SliderScale[this.options.scale]) { this.options.scale = SliderScale[this.options.scale]; } if (updateSlider === true) { // Reset classes this._removeClass(this.sliderElem, 'slider-horizontal'); this._removeClass(this.sliderElem, 'slider-vertical'); this._removeClass(this.tooltip, 'hide'); this._removeClass(this.tooltip_min, 'hide'); this._removeClass(this.tooltip_max, 'hide'); // Undo existing inline styles for track ["left", "top", "width", "height"].forEach(function(prop) { this._removeProperty(this.trackLow, prop); this._removeProperty(this.trackSelection, prop); this._removeProperty(this.trackHigh, prop); }, this); // Undo inline styles on handles [this.handle1, this.handle2].forEach(function(handle) { this._removeProperty(handle, 'left'); this._removeProperty(handle, 'top'); }, this); // Undo inline styles and classes on tooltips [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function(tooltip) { this._removeProperty(tooltip, 'left'); this._removeProperty(tooltip, 'top'); this._removeProperty(tooltip, 'margin-left'); this._removeProperty(tooltip, 'margin-top'); this._removeClass(tooltip, 'right'); this._removeClass(tooltip, 'top'); }, this); } if(this.options.orientation === 'vertical') { this._addClass(this.sliderElem,'slider-vertical'); this.stylePos = 'top'; this.mousePos = 'pageY'; this.sizePos = 'offsetHeight'; } else { this._addClass(this.sliderElem, 'slider-horizontal'); this.sliderElem.style.width = origWidth; this.options.orientation = 'horizontal'; this.stylePos = 'left'; this.mousePos = 'pageX'; this.sizePos = 'offsetWidth'; } this._setTooltipPosition(); /* In case ticks are specified, overwrite the min and max bounds */ if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { this.options.max = Math.max.apply(Math, this.options.ticks); this.options.min = Math.min.apply(Math, this.options.ticks); } if (Array.isArray(this.options.value)) { this.options.range = true; this._state.value = this.options.value; } else if (this.options.range) { // User wants a range, but value is not an array this._state.value = [this.options.value, this.options.max]; } else { this._state.value = this.options.value; } this.trackLow = sliderTrackLow || this.trackLow; this.trackSelection = sliderTrackSelection || this.trackSelection; this.trackHigh = sliderTrackHigh || this.trackHigh; if (this.options.selection === 'none') { this._addClass(this.trackLow, 'hide'); this._addClass(this.trackSelection, 'hide'); this._addClass(this.trackHigh, 'hide'); } this.handle1 = sliderMinHandle || this.handle1; this.handle2 = sliderMaxHandle || this.handle2; if (updateSlider === true) { // Reset classes this._removeClass(this.handle1, 'round triangle'); this._removeClass(this.handle2, 'round triangle hide'); for (i = 0; i < this.ticks.length; i++) { this._removeClass(this.ticks[i], 'round triangle hide'); } } var availableHandleModifiers = ['round', 'triangle', 'custom']; var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1; if (isValidHandleType) { this._addClass(this.handle1, this.options.handle); this._addClass(this.handle2, this.options.handle); for (i = 0; i < this.ticks.length; i++) { this._addClass(this.ticks[i], this.options.handle); } } this._state.offset = this._offset(this.sliderElem); this._state.size = this.sliderElem[this.sizePos]; this.setValue(this._state.value); /****************************************** Bind Event Listeners ******************************************/ // Bind keyboard handlers this.handle1Keydown = this._keydown.bind(this, 0); this.handle1.addEventListener("keydown", this.handle1Keydown, false); this.handle2Keydown = this._keydown.bind(this, 1); this.handle2.addEventListener("keydown", this.handle2Keydown, false); this.mousedown = this._mousedown.bind(this); if (this.touchCapable) { // Bind touch handlers this.sliderElem.addEventListener("touchstart", this.mousedown, false); } this.sliderElem.addEventListener("mousedown", this.mousedown, false); // Bind tooltip-related handlers if(this.options.tooltip === 'hide') { this._addClass(this.tooltip, 'hide'); this._addClass(this.tooltip_min, 'hide'); this._addClass(this.tooltip_max, 'hide'); } else if(this.options.tooltip === 'always') { this._showTooltip(); this._alwaysShowTooltip = true; } else { this.showTooltip = this._showTooltip.bind(this); this.hideTooltip = this._hideTooltip.bind(this); this.sliderElem.addEventListener("mouseenter", this.showTooltip, false); this.sliderElem.addEventListener("mouseleave", this.hideTooltip, false); this.handle1.addEventListener("focus", this.showTooltip, false); this.handle1.addEventListener("blur", this.hideTooltip, false); this.handle2.addEventListener("focus", this.showTooltip, false); this.handle2.addEventListener("blur", this.hideTooltip, false); } if(this.options.enabled) { this.enable(); } else { this.disable(); } } /************************************************* INSTANCE PROPERTIES/METHODS - Any methods bound to the prototype are considered part of the plugin's `public` interface **************************************************/ Slider.prototype = { _init: function() {}, // NOTE: Must exist to support bridget constructor: Slider, defaultOptions: { id: "", min: 0, max: 10, step: 1, precision: 0, orientation: 'horizontal', value: 5, range: false, selection: 'before', tooltip: 'show', tooltip_split: false, handle: 'round', reversed: false, enabled: true, formatter: function(val) { if (Array.isArray(val)) { return val[0] + " : " + val[1]; } else { return val; } }, natural_arrow_keys: false, ticks: [], ticks_positions: [], ticks_labels: [], ticks_snap_bounds: 0, scale: 'linear', focus: false, tooltip_position: null, labelledby: null }, getElement: function() { return this.sliderElem; }, getValue: function() { if (this.options.range) { return this._state.value; } else { return this._state.value[0]; } }, setValue: function(val, triggerSlideEvent, triggerChangeEvent) { if (!val) { val = 0; } var oldValue = this.getValue(); this._state.value = this._validateInputValue(val); var applyPrecision = this._applyPrecision.bind(this); if (this.options.range) { this._state.value[0] = applyPrecision(this._state.value[0]); this._state.value[1] = applyPrecision(this._state.value[1]); this._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0])); this._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1])); } else { this._state.value = applyPrecision(this._state.value); this._state.value = [ Math.max(this.options.min, Math.min(this.options.max, this._state.value))]; this._addClass(this.handle2, 'hide'); if (this.options.selection === 'after') { this._state.value[1] = this.options.max; } else { this._state.value[1] = this.options.min; } } if (this.options.max > this.options.min) { this._state.percentage = [ this._toPercentage(this._state.value[0]), this._toPercentage(this._state.value[1]), this.options.step * 100 / (this.options.max - this.options.min) ]; } else { this._state.percentage = [0, 0, 100]; } this._layout(); var newValue = this.options.range ? this._state.value : this._state.value[0]; if(triggerSlideEvent === true) { this._trigger('slide', newValue); } if( (oldValue !== newValue) && (triggerChangeEvent === true) ) { this._trigger('change', { oldValue: oldValue, newValue: newValue }); } this._setDataVal(newValue); return this; }, destroy: function(){ // Remove event handlers on slider elements this._removeSliderEventHandlers(); // Remove the slider from the DOM this.sliderElem.parentNode.removeChild(this.sliderElem); /* Show original <input> element */ this.element.style.display = ""; // Clear out custom event bindings this._cleanUpEventCallbacksMap(); // Remove data values this.element.removeAttribute("data"); // Remove JQuery handlers/data if($) { this._unbindJQueryEventHandlers(); this.$element.removeData('slider'); } }, disable: function() { this._state.enabled = false; this.handle1.removeAttribute("tabindex"); this.handle2.removeAttribute("tabindex"); this._addClass(this.sliderElem, 'slider-disabled'); this._trigger('slideDisabled'); return this; }, enable: function() { this._state.enabled = true; this.handle1.setAttribute("tabindex", 0); this.handle2.setAttribute("tabindex", 0); this._removeClass(this.sliderElem, 'slider-disabled'); this._trigger('slideEnabled'); return this; }, toggle: function() { if(this._state.enabled) { this.disable(); } else { this.enable(); } return this; }, isEnabled: function() { return this._state.enabled; }, on: function(evt, callback) { this._bindNonQueryEventHandler(evt, callback); return this; }, off: function(evt, callback) { if($) { this.$element.off(evt, callback); this.$sliderElem.off(evt, callback); } else { this._unbindNonQueryEventHandler(evt, callback); } }, getAttribute: function(attribute) { if(attribute) { return this.options[attribute]; } else { return this.options; } }, setAttribute: function(attribute, value) { this.options[attribute] = value; return this; }, refresh: function() { this._removeSliderEventHandlers(); createNewSlider.call(this, this.element, this.options); if($) { // Bind new instance of slider to the element $.data(this.element, 'slider', this); } return this; }, relayout: function() { this._layout(); return this; }, /******************************+ HELPERS - Any method that is not part of the public interface. - Place it underneath this comment block and write its signature like so: _fnName : function() {...} ********************************/ _removeSliderEventHandlers: function() { // Remove keydown event listeners this.handle1.removeEventListener("keydown", this.handle1Keydown, false); this.handle2.removeEventListener("keydown", this.handle2Keydown, false); if (this.showTooltip) { this.handle1.removeEventListener("focus", this.showTooltip, false); this.handle2.removeEventListener("focus", this.showTooltip, false); } if (this.hideTooltip) { this.handle1.removeEventListener("blur", this.hideTooltip, false); this.handle2.removeEventListener("blur", this.hideTooltip, false); } // Remove event listeners from sliderElem if (this.showTooltip) { this.sliderElem.removeEventListener("mouseenter", this.showTooltip, false); } if (this.hideTooltip) { this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, false); } this.sliderElem.removeEventListener("touchstart", this.mousedown, false); this.sliderElem.removeEventListener("mousedown", this.mousedown, false); }, _bindNonQueryEventHandler: function(evt, callback) { if(this.eventToCallbackMap[evt] === undefined) { this.eventToCallbackMap[evt] = []; } this.eventToCallbackMap[evt].push(callback); }, _unbindNonQueryEventHandler: function(evt, callback) { var callbacks = this.eventToCallbackMap[evt]; if(callbacks !== undefined) { for (var i = 0; i < callbacks.length; i++) { if (callbacks[i] === callback) { callbacks.splice(i, 1); break; } } } }, _cleanUpEventCallbacksMap: function() { var eventNames = Object.keys(this.eventToCallbackMap); for(var i = 0; i < eventNames.length; i++) { var eventName = eventNames[i]; this.eventToCallbackMap[eventName] = null; } }, _showTooltip: function() { if (this.options.tooltip_split === false ){ this._addClass(this.tooltip, 'in'); this.tooltip_min.style.display = 'none'; this.tooltip_max.style.display = 'none'; } else { this._addClass(this.tooltip_min, 'in'); this._addClass(this.tooltip_max, 'in'); this.tooltip.style.display = 'none'; } this._state.over = true; }, _hideTooltip: function() { if (this._state.inDrag === false && this.alwaysShowTooltip !== true) { this._removeClass(this.tooltip, 'in'); this._removeClass(this.tooltip_min, 'in'); this._removeClass(this.tooltip_max, 'in'); } this._state.over = false; }, _layout: function() { var positionPercentages; if(this.options.reversed) { positionPercentages = [ 100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]]; } else { positionPercentages = [ this._state.percentage[0], this._state.percentage[1] ]; } this.handle1.style[this.stylePos] = positionPercentages[0]+'%'; this.handle1.setAttribute('aria-valuenow', this._state.value[0]); this.handle2.style[this.stylePos] = positionPercentages[1]+'%'; this.handle2.setAttribute('aria-valuenow', this._state.value[1]); /* Position ticks and labels */ if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) { var styleSize = this.options.orientation === 'vertical' ? 'height' : 'width'; var styleMargin = this.options.orientation === 'vertical' ? 'marginTop' : 'marginLeft'; var labelSize = this._state.size / (this.options.ticks.length - 1); if (this.tickLabelContainer) { var extraMargin = 0; if (this.options.ticks_positions.length === 0) { if (this.options.orientation !== 'vertical') { this.tickLabelContainer.style[styleMargin] = -labelSize/2 + 'px'; } extraMargin = this.tickLabelContainer.offsetHeight; } else { /* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */ for (i = 0 ; i < this.tickLabelContainer.childNodes.length; i++) { if (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) { extraMargin = this.tickLabelContainer.childNodes[i].offsetHeight; } } } if (this.options.orientation === 'horizontal') { this.sliderElem.style.marginBottom = extraMargin + 'px'; } } for (var i = 0; i < this.options.ticks.length; i++) { var percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]); if (this.options.reversed) { percentage = 100 - percentage; } this.ticks[i].style[this.stylePos] = percentage + '%'; /* Set class labels to denote whether ticks are in the selection */ this._removeClass(this.ticks[i], 'in-selection'); if (!this.options.range) { if (this.options.selection === 'after' && percentage >= positionPercentages[0]){ this._addClass(this.ticks[i], 'in-selection'); } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) { this._addClass(this.ticks[i], 'in-selection'); } } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) { this._addClass(this.ticks[i], 'in-selection'); } if (this.tickLabels[i]) { this.tickLabels[i].style[styleSize] = labelSize + 'px'; if (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) { this.tickLabels[i].style.position = 'absolute'; this.tickLabels[i].style[this.stylePos] = percentage + '%'; this.tickLabels[i].style[styleMargin] = -labelSize/2 + 'px'; } else if (this.options.orientation === 'vertical') { this.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + 'px'; this.tickLabelContainer.style['marginTop'] = this.sliderElem.offsetWidth / 2 * -1 + 'px'; } } } } var formattedTooltipVal; if (this.options.range) { formattedTooltipVal = this.options.formatter(this._state.value); this._setText(this.tooltipInner, formattedTooltipVal); this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0])/2 + '%'; if (this.options.orientation === 'vertical') { this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); } else { this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); } if (this.options.orientation === 'vertical') { this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); } else { this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); } var innerTooltipMinText = this.options.formatter(this._state.value[0]); this._setText(this.tooltipInner_min, innerTooltipMinText); var innerTooltipMaxText = this.options.formatter(this._state.value[1]); this._setText(this.tooltipInner_max, innerTooltipMaxText); this.tooltip_min.style[this.stylePos] = positionPercentages[0] + '%'; if (this.options.orientation === 'vertical') { this._css(this.tooltip_min, 'margin-top', -this.tooltip_min.offsetHeight / 2 + 'px'); } else { this._css(this.tooltip_min, 'margin-left', -this.tooltip_min.offsetWidth / 2 + 'px'); } this.tooltip_max.style[this.stylePos] = positionPercentages[1] + '%'; if (this.options.orientation === 'vertical') { this._css(this.tooltip_max, 'margin-top', -this.tooltip_max.offsetHeight / 2 + 'px'); } else { this._css(this.tooltip_max, 'margin-left', -this.tooltip_max.offsetWidth / 2 + 'px'); } } else { formattedTooltipVal = this.options.formatter(this._state.value[0]); this._setText(this.tooltipInner, formattedTooltipVal); this.tooltip.style[this.stylePos] = positionPercentages[0] + '%'; if (this.options.orientation === 'vertical') { this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); } else { this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); } } if (this.options.orientation === 'vertical') { this.trackLow.style.top = '0'; this.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; this.trackHigh.style.bottom = '0'; this.trackHigh.style.height = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%'; } else { this.trackLow.style.left = '0'; this.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; this.trackHigh.style.right = '0'; this.trackHigh.style.width = (100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1])) +'%'; var offset_min = this.tooltip_min.getBoundingClientRect(); var offset_max = this.tooltip_max.getBoundingClientRect(); if (offset_min.right > offset_max.left) { this._removeClass(this.tooltip_max, 'top'); this._addClass(this.tooltip_max, 'bottom'); this.tooltip_max.style.top = 18 + 'px'; } else { this._removeClass(this.tooltip_max, 'bottom'); this._addClass(this.tooltip_max, 'top'); this.tooltip_max.style.top = this.tooltip_min.style.top; } } }, _removeProperty: function(element, prop) { if (element.style.removeProperty) { element.style.removeProperty(prop); } else { element.style.removeAttribute(prop); } }, _mousedown: function(ev) { if(!this._state.enabled) { return false; } this._state.offset = this._offset(this.sliderElem); this._state.size = this.sliderElem[this.sizePos]; var percentage = this._getPercentage(ev); if (this.options.range) { var diff1 = Math.abs(this._state.percentage[0] - percentage); var diff2 = Math.abs(this._state.percentage[1] - percentage); this._state.dragged = (diff1 < diff2) ? 0 : 1; } else { this._state.dragged = 0; } this._state.percentage[this._state.dragged] = percentage; this._layout(); if (this.touchCapable) { document.removeEventListener("touchmove", this.mousemove, false); document.removeEventListener("touchend", this.mouseup, false); } if(this.mousemove){ document.removeEventListener("mousemove", this.mousemove, false); } if(this.mouseup){ document.removeEventListener("mouseup", this.mouseup, false); } this.mousemove = this._mousemove.bind(this); this.mouseup = this._mouseup.bind(this); if (this.touchCapable) { // Touch: Bind touch events: document.addEventListener("touchmove", this.mousemove, false); document.addEventListener("touchend", this.mouseup, false); } // Bind mouse events: document.addEventListener("mousemove", this.mousemove, false); document.addEventListener("mouseup", this.mouseup, false); this._state.inDrag = true; var newValue = this._calculateValue(); this._trigger('slideStart', newValue); this._setDataVal(newValue); this.setValue(newValue, false, true); this._pauseEvent(ev); if (this.options.focus) { this._triggerFocusOnHandle(this._state.dragged); } return true; }, _triggerFocusOnHandle: function(handleIdx) { if(handleIdx === 0) { this.handle1.focus(); } if(handleIdx === 1) { this.handle2.focus(); } }, _keydown: function(handleIdx, ev) { if(!this._state.enabled) { return false; } var dir; switch (ev.keyCode) { case 37: // left case 40: // down dir = -1; break; case 39: // right case 38: // up dir = 1; break; } if (!dir) { return; } // use natural arrow keys instead of from min to max if (this.options.natural_arrow_keys) { var ifVerticalAndNotReversed = (this.options.orientation === 'vertical' && !this.options.reversed); var ifHorizontalAndReversed = (this.options.orientation === 'horizontal' && this.options.reversed); if (ifVerticalAndNotReversed || ifHorizontalAndReversed) { dir = -dir; } } var val = this._state.value[handleIdx] + dir * this.options.step; if (this.options.range) { val = [ (!handleIdx) ? val : this._state.value[0], ( handleIdx) ? val : this._state.value[1]]; } this._trigger('slideStart', val); this._setDataVal(val); this.setValue(val, true, true); this._setDataVal(val); this._trigger('slideStop', val); this._layout(); this._pauseEvent(ev); return false; }, _pauseEvent: function(ev) { if(ev.stopPropagation) { ev.stopPropagation(); } if(ev.preventDefault) { ev.preventDefault(); } ev.cancelBubble=true; ev.returnValue=false; }, _mousemove: function(ev) { if(!this._state.enabled) { return false; } var percentage = this._getPercentage(ev); this._adjustPercentageForRangeSliders(percentage); this._state.percentage[this._state.dragged] = percentage; this._layout(); var val = this._calculateValue(true); this.setValue(val, true, true); return false; }, _adjustPercentageForRangeSliders: function(percentage) { if (this.options.range) { var precision = this._getNumDigitsAfterDecimalPlace(percentage); precision = precision ? precision - 1 : 0; var percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision); if (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) { this._state.percentage[0] = this._state.percentage[1]; this._state.dragged = 1; } else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) { this._state.percentage[1] = this._state.percentage[0]; this._state.dragged = 0; } } }, _mouseup: function() { if(!this._state.enabled) { return false; } if (this.touchCapable) { // Touch: Unbind touch event handlers: document.removeEventListener("touchmove", this.mousemove, false); document.removeEventListener("touchend", this.mouseup, false); } // Unbind mouse event handlers: document.removeEventListener("mousemove", this.mousemove, false); document.removeEventListener("mouseup", this.mouseup, false); this._state.inDrag = false; if (this._state.over === false) { this._hideTooltip(); } var val = this._calculateValue(true); this._layout(); this._setDataVal(val); this._trigger('slideStop', val); return false; }, _calculateValue: function(snapToClosestTick) { var val; if (this.options.range) { val = [this.options.min,this.options.max]; if (this._state.percentage[0] !== 0){ val[0] = this._toValue(this._state.percentage[0]); val[0] = this._applyPrecision(val[0]); } if (this._state.percentage[1] !== 100){ val[1] = this._toValue(this._state.percentage[1]); val[1] = this._applyPrecision(val[1]); } } else { val = this._toValue(this._state.percentage[0]); val = parseFloat(val); val = this._applyPrecision(val); } if (snapToClosestTick) { var min = [val, Infinity]; for (var i = 0; i < this.options.ticks.length; i++) { var diff = Math.abs(this.options.ticks[i] - val); if (diff <= min[1]) { min = [this.options.ticks[i], diff]; } } if (min[1] <= this.options.ticks_snap_bounds) { return min[0]; } } return val; }, _applyPrecision: function(val) { var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step); return this._applyToFixedAndParseFloat(val, precision); }, _getNumDigitsAfterDecimalPlace: function(num) { var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); if (!match) { return 0; } return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); }, _applyToFixedAndParseFloat: function(num, toFixedInput) { var truncatedNum = num.toFixed(toFixedInput); return parseFloat(truncatedNum); }, /* Credits to Mike Samuel for the following method! Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number */ _getPercentage: function(ev) { if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove')) { ev = ev.touches[0]; } var eventPosition = ev[this.mousePos]; var sliderOffset = this._state.offset[this.stylePos]; var distanceToSlide = eventPosition - sliderOffset; // Calculate what percent of the length the slider handle has slid var percentage = (distanceToSlide / this._state.size) * 100; percentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2]; if (this.options.reversed) { percentage = 100 - percentage; } // Make sure the percent is within the bounds of the slider. // 0% corresponds to the 'min' value of the slide // 100% corresponds to the 'max' value of the slide return Math.max(0, Math.min(100, percentage)); }, _validateInputValue: function(val) { if (typeof val === 'number') { return val; } else if (Array.isArray(val)) { this._validateArray(val); return val; } else { throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(val) ); } }, _validateArray: function(val) { for(var i = 0; i < val.length; i++) { var input = val[i]; if (typeof input !== 'number') { throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(input) ); } } }, _setDataVal: function(val) { this.element.setAttribute('data-value', val); this.element.setAttribute('value', val); this.element.value = val; }, _trigger: function(evt, val) { val = (val || val === 0) ? val : undefined; var callbackFnArray = this.eventToCallbackMap[evt]; if(callbackFnArray && callbackFnArray.length) { for(var i = 0; i < callbackFnArray.length; i++) { var callbackFn = callbackFnArray[i]; callbackFn(val); } } /* If JQuery exists, trigger JQuery events */ if($) { this._triggerJQueryEvent(evt, val); } }, _triggerJQueryEvent: function(evt, val) { var eventData = { type: evt, value: val }; this.$element.trigger(eventData); this.$sliderElem.trigger(eventData); }, _unbindJQueryEventHandlers: function() { this.$element.off(); this.$sliderElem.off(); }, _setText: function(element, text) { if(typeof element.innerText !== "undefined") { element.innerText = text; } else if(typeof element.textContent !== "undefined") { element.textContent = text; } }, _removeClass: function(element, classString) { var classes = classString.split(" "); var newClasses = element.className; for(var i = 0; i < classes.length; i++) { var classTag = classes[i]; var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); newClasses = newClasses.replace(regex, " "); } element.className = newClasses.trim(); }, _addClass: function(element, classString) { var classes = classString.split(" "); var newClasses = element.className; for(var i = 0; i < classes.length; i++) { var classTag = classes[i]; var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); var ifClassExists = regex.test(newClasses); if(!ifClassExists) { newClasses += " " + classTag; } } element.className = newClasses.trim(); }, _offsetLeft: function(obj){ return obj.getBoundingClientRect().left; }, _offsetTop: function(obj){ var offsetTop = obj.offsetTop; while((obj = obj.offsetParent) && !isNaN(obj.offsetTop)){ offsetTop += obj.offsetTop; } return offsetTop; }, _offset: function (obj) { return { left: this._offsetLeft(obj), top: this._offsetTop(obj) }; }, _css: function(elementRef, styleName, value) { if ($) { $.style(elementRef, styleName, value); } else { var style = styleName.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function (all, letter) { return letter.toUpperCase(); }); elementRef.style[style] = value; } }, _toValue: function(percentage) { return this.options.scale.toValue.apply(this, [percentage]); }, _toPercentage: function(value) { return this.options.scale.toPercentage.apply(this, [value]); }, _setTooltipPosition: function(){ var tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max]; if (this.options.orientation === 'vertical'){ var tooltipPos = this.options.tooltip_position || 'right'; var oppositeSide = (tooltipPos === 'left') ? 'right' : 'left'; tooltips.forEach(function(tooltip){ this._addClass(tooltip, tooltipPos); tooltip.style[oppositeSide] = '100%'; }.bind(this)); } else if(this.options.tooltip_position === 'bottom') { tooltips.forEach(function(tooltip){ this._addClass(tooltip, 'bottom'); tooltip.style.top = 22 + 'px'; }.bind(this)); } else { tooltips.forEach(function(tooltip){ this._addClass(tooltip, 'top'); tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px'; }.bind(this)); } } }; /********************************* Attach to global namespace *********************************/ if($) { var namespace = $.fn.slider ? 'bootstrapSlider' : 'slider'; $.bridget(namespace, Slider); } })( $ ); return Slider; })); AdminLTE/plugins/bootstrap-slider/slider.css 0000644 00000020446 15002261751 0015120 0 ustar 00 /*! * Slider for Bootstrap * * Copyright 2012 Stefan Petre * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * */ .slider { display: block; vertical-align: middle; position: relative; } .slider.slider-horizontal { width: 100%; height: 20px; margin-bottom: 20px; } .slider.slider-horizontal:last-of-type { margin-bottom: 0; } .slider.slider-horizontal .slider-track { height: 10px; width: 100%; margin-top: -5px; top: 50%; left: 0; } .slider.slider-horizontal .slider-selection, .slider.slider-horizontal .slider-track-low, .slider.slider-horizontal .slider-track-high { height: 100%; top: 0; bottom: 0; } .slider.slider-horizontal .slider-tick, .slider.slider-horizontal .slider-handle { margin-left: -10px; margin-top: -5px; } .slider.slider-horizontal .slider-tick.triangle, .slider.slider-horizontal .slider-handle.triangle { border-width: 0 10px 10px 10px; width: 0; height: 0; border-bottom-color: #0480be; margin-top: 0; } .slider.slider-horizontal .slider-tick-label-container { white-space: nowrap; margin-top: 20px; } .slider.slider-horizontal .slider-tick-label-container .slider-tick-label { padding-top: 4px; display: inline-block; text-align: center; } .slider.slider-vertical { height: 230px; width: 20px; margin-right: 20px; display: inline-block; } .slider.slider-vertical:last-of-type { margin-right: 0; } .slider.slider-vertical .slider-track { width: 10px; height: 100%; margin-left: -5px; left: 50%; top: 0; } .slider.slider-vertical .slider-selection { width: 100%; left: 0; top: 0; bottom: 0; } .slider.slider-vertical .slider-track-low, .slider.slider-vertical .slider-track-high { width: 100%; left: 0; right: 0; } .slider.slider-vertical .slider-tick, .slider.slider-vertical .slider-handle { margin-left: -5px; margin-top: -10px; } .slider.slider-vertical .slider-tick.triangle, .slider.slider-vertical .slider-handle.triangle { border-width: 10px 0 10px 10px; width: 1px; height: 1px; border-left-color: #0480be; margin-left: 0; } .slider.slider-vertical .slider-tick-label-container { white-space: nowrap; } .slider.slider-vertical .slider-tick-label-container .slider-tick-label { padding-left: 4px; } .slider.slider-disabled .slider-handle { background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); background-image: -o-linear-gradient(top, #dfdfdf 0%, #bebebe 100%); background-image: linear-gradient(to bottom, #dfdfdf 0%, #bebebe 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdfdfdf', endColorstr='#ffbebebe', GradientType=0); } .slider.slider-disabled .slider-track { background-image: -webkit-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); background-image: -o-linear-gradient(top, #e5e5e5 0%, #e9e9e9 100%); background-image: linear-gradient(to bottom, #e5e5e5 0%, #e9e9e9 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe5e5e5', endColorstr='#ffe9e9e9', GradientType=0); cursor: not-allowed; } .slider input { display: none; } .slider .tooltip.top { margin-top: -36px; } .slider .tooltip-inner { white-space: nowrap; } .slider .hide { display: none; } .slider-track { position: absolute; cursor: pointer; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f0f0f0, #f9f9f9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f0f0), to(#f9f9f9)); background-image: -webkit-linear-gradient(top, #f0f0f0, #f9f9f9); background-image: -o-linear-gradient(top, #f0f0f0, #f9f9f9); background-image: linear-gradient(to bottom, #f0f0f0, #f9f9f9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0f0f0', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .slider-selection { position: absolute; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5)); background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .slider-selection.tick-slider-selection { background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%); background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%); background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0); } .slider-track-low, .slider-track-high { position: absolute; background: transparent; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 4px; } .slider-handle { position: absolute; width: 20px; height: 20px; background-color: #444; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); opacity: 1; border: 0px solid transparent; } .slider-handle.round { -webkit-border-radius: 20px; -moz-border-radius: 20px; border-radius: 20px; } .slider-handle.triangle { background: transparent none; } .slider-handle.custom { background: transparent none; } .slider-handle.custom::before { line-height: 20px; font-size: 20px; content: '\2605'; color: #726204; } .slider-tick { position: absolute; width: 20px; height: 20px; background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%); background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; filter: none; opacity: 0.8; border: 0px solid transparent; } .slider-tick.round { border-radius: 50%; } .slider-tick.triangle { background: transparent none; } .slider-tick.custom { background: transparent none; } .slider-tick.custom::before { line-height: 20px; font-size: 20px; content: '\2605'; color: #726204; } .slider-tick.in-selection { background-image: -webkit-linear-gradient(top, #89cdef 0%, #81bfde 100%); background-image: -o-linear-gradient(top, #89cdef 0%, #81bfde 100%); background-image: linear-gradient(to bottom, #89cdef 0%, #81bfde 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff89cdef', endColorstr='#ff81bfde', GradientType=0); opacity: 1; } .slider-disabled .slider-selection { opacity: 0.5; } #red .slider-selection { background: #f56954; } #blue .slider-selection { background: #3c8dbc; } #green .slider-selection { background: #00a65a; } #yellow .slider-selection { background: #f39c12; } #aqua .slider-selection { background: #00c0ef; } #purple .slider-selection { background: #932ab6; } AdminLTE/plugins/input-mask/jquery.inputmask.numeric.extensions.js 0000644 00000021636 15002261751 0021447 0 ustar 00 /* Input Mask plugin extensions http://github.com/RobinHerbots/jquery.inputmask Copyright (c) 2010 - 2014 Robin Herbots Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) Version: 0.0.0 Optional extensions on the jquery.inputmask base */ (function ($) { //number aliases $.extend($.inputmask.defaults.aliases, { 'decimal': { mask: "~", placeholder: "", repeat: "*", greedy: false, numericInput: false, isNumeric: true, digits: "*", //number of fractionalDigits groupSeparator: "",//",", // | "." radixPoint: ".", groupSize: 3, autoGroup: false, allowPlus: true, allowMinus: true, //todo integerDigits: "*", //number of integerDigits defaultValue: "", prefix: "", suffix: "", //todo getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { //custom getMaskLength to take the groupSeparator into account var calculatedLength = buffer.length; if (!greedy) { if (repeat == "*") { calculatedLength = currentBuffer.length + 1; } else if (repeat > 1) { calculatedLength += (buffer.length * (repeat - 1)); } } var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint); var currentBufferStr = currentBuffer.join(''), strippedBufferStr = currentBufferStr.replace(new RegExp(escapedGroupSeparator, "g"), "").replace(new RegExp(escapedRadixPoint), ""), groupOffset = currentBufferStr.length - strippedBufferStr.length; return calculatedLength + groupOffset; }, postFormat: function (buffer, pos, reformatOnly, opts) { if (opts.groupSeparator == "") return pos; var cbuf = buffer.slice(), radixPos = $.inArray(opts.radixPoint, buffer); if (!reformatOnly) { cbuf.splice(pos, 0, "?"); //set position indicator } var bufVal = cbuf.join(''); if (opts.autoGroup || (reformatOnly && bufVal.indexOf(opts.groupSeparator) != -1)) { var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); bufVal = bufVal.replace(new RegExp(escapedGroupSeparator, "g"), ''); var radixSplit = bufVal.split(opts.radixPoint); bufVal = radixSplit[0]; var reg = new RegExp('([-\+]?[\\d\?]+)([\\d\?]{' + opts.groupSize + '})'); while (reg.test(bufVal)) { bufVal = bufVal.replace(reg, '$1' + opts.groupSeparator + '$2'); bufVal = bufVal.replace(opts.groupSeparator + opts.groupSeparator, opts.groupSeparator); } if (radixSplit.length > 1) bufVal += opts.radixPoint + radixSplit[1]; } buffer.length = bufVal.length; //align the length for (var i = 0, l = bufVal.length; i < l; i++) { buffer[i] = bufVal.charAt(i); } var newPos = $.inArray("?", buffer); if (!reformatOnly) buffer.splice(newPos, 1); return reformatOnly ? pos : newPos; }, regex: { number: function (opts) { var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); var escapedRadixPoint = $.inputmask.escapeRegex.call(this, opts.radixPoint); var digitExpression = isNaN(opts.digits) ? opts.digits : '{0,' + opts.digits + '}'; var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : ""; return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)(" + escapedRadixPoint + "\\d" + digitExpression + ")?$"); } }, onKeyDown: function (e, buffer, opts) { var $input = $(this), input = this; if (e.keyCode == opts.keyCode.TAB) { var radixPosition = $.inArray(opts.radixPoint, buffer); if (radixPosition != -1) { var masksets = $input.data('_inputmask')['masksets']; var activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; for (var i = 1; i <= opts.digits && i < opts.getMaskLength(masksets[activeMasksetIndex]["_buffer"], masksets[activeMasksetIndex]["greedy"], masksets[activeMasksetIndex]["repeat"], buffer, opts) ; i++) { if (buffer[radixPosition + i] == undefined || buffer[radixPosition + i] == "") buffer[radixPosition + i] = "0"; } input._valueSet(buffer.join('')); } } else if (e.keyCode == opts.keyCode.DELETE || e.keyCode == opts.keyCode.BACKSPACE) { opts.postFormat(buffer, 0, true, opts); input._valueSet(buffer.join('')); return true; } }, definitions: { '~': { //real number validator: function (chrs, buffer, pos, strict, opts) { if (chrs == "") return false; if (!strict && pos <= 1 && buffer[0] === '0' && new RegExp("[\\d-]").test(chrs) && buffer.join('').length == 1) { //handle first char buffer[0] = ""; return { "pos": 0 }; } var cbuf = strict ? buffer.slice(0, pos) : buffer.slice(); cbuf.splice(pos, 0, chrs); var bufferStr = cbuf.join(''); //strip groupseparator var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); bufferStr = bufferStr.replace(new RegExp(escapedGroupSeparator, "g"), ''); var isValid = opts.regex.number(opts).test(bufferStr); if (!isValid) { //let's help the regex a bit bufferStr += "0"; isValid = opts.regex.number(opts).test(bufferStr); if (!isValid) { //make a valid group var lastGroupSeparator = bufferStr.lastIndexOf(opts.groupSeparator); for (var i = bufferStr.length - lastGroupSeparator; i <= 3; i++) { bufferStr += "0"; } isValid = opts.regex.number(opts).test(bufferStr); if (!isValid && !strict) { if (chrs == opts.radixPoint) { isValid = opts.regex.number(opts).test("0" + bufferStr + "0"); if (isValid) { buffer[pos] = "0"; pos++; return { "pos": pos }; } } } } } if (isValid != false && !strict && chrs != opts.radixPoint) { var newPos = opts.postFormat(buffer, pos, false, opts); return { "pos": newPos }; } return isValid; }, cardinality: 1, prevalidator: null } }, insertMode: true, autoUnmask: false }, 'integer': { regex: { number: function (opts) { var escapedGroupSeparator = $.inputmask.escapeRegex.call(this, opts.groupSeparator); var signedExpression = opts.allowPlus || opts.allowMinus ? "[" + (opts.allowPlus ? "\+" : "") + (opts.allowMinus ? "-" : "") + "]?" : ""; return new RegExp("^" + signedExpression + "(\\d+|\\d{1," + opts.groupSize + "}((" + escapedGroupSeparator + "\\d{" + opts.groupSize + "})?)+)$"); } }, alias: "decimal" } }); })(jQuery); AdminLTE/plugins/input-mask/jquery.inputmask.extensions.js 0000644 00000012303 15002261751 0017775 0 ustar 00 /* Input Mask plugin extensions http://github.com/RobinHerbots/jquery.inputmask Copyright (c) 2010 - 2014 Robin Herbots Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) Version: 0.0.0 Optional extensions on the jquery.inputmask base */ (function ($) { //extra definitions $.extend($.inputmask.defaults.definitions, { 'A': { validator: "[A-Za-z]", cardinality: 1, casing: "upper" //auto uppercasing }, '#': { validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]", cardinality: 1, casing: "upper" } }); $.extend($.inputmask.defaults.aliases, { 'url': { mask: "ir", placeholder: "", separator: "", defaultPrefix: "http://", regex: { urlpre1: new RegExp("[fh]"), urlpre2: new RegExp("(ft|ht)"), urlpre3: new RegExp("(ftp|htt)"), urlpre4: new RegExp("(ftp:|http|ftps)"), urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"), urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"), urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"), urlpre8: new RegExp("(ftp://|ftps://|http://|https://)") }, definitions: { 'i': { validator: function (chrs, buffer, pos, strict, opts) { return true; }, cardinality: 8, prevalidator: (function () { var result = [], prefixLimit = 8; for (var i = 0; i < prefixLimit; i++) { result[i] = (function () { var j = i; return { validator: function (chrs, buffer, pos, strict, opts) { if (opts.regex["urlpre" + (j + 1)]) { var tmp = chrs, k; if (((j + 1) - chrs.length) > 0) { tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + "" + tmp; } var isValid = opts.regex["urlpre" + (j + 1)].test(tmp); if (!strict && !isValid) { pos = pos - j; for (k = 0; k < opts.defaultPrefix.length; k++) { buffer[pos] = opts.defaultPrefix[k]; pos++; } for (k = 0; k < tmp.length - 1; k++) { buffer[pos] = tmp[k]; pos++; } return { "pos": pos }; } return isValid; } else { return false; } }, cardinality: j }; })(); } return result; })() }, "r": { validator: ".", cardinality: 50 } }, insertMode: false, autoUnmask: false }, "ip": { //ip-address mask mask: ["[[x]y]z.[[x]y]z.[[x]y]z.x[yz]", "[[x]y]z.[[x]y]z.[[x]y]z.[[x]y][z]"], definitions: { 'x': { validator: "[012]", cardinality: 1, definitionSymbol: "i" }, 'y': { validator: function (chrs, buffer, pos, strict, opts) { if (pos - 1 > -1 && buffer[pos - 1] != ".") chrs = buffer[pos - 1] + chrs; else chrs = "0" + chrs; return new RegExp("2[0-5]|[01][0-9]").test(chrs); }, cardinality: 1, definitionSymbol: "i" }, 'z': { validator: function (chrs, buffer, pos, strict, opts) { if (pos - 1 > -1 && buffer[pos - 1] != ".") { chrs = buffer[pos - 1] + chrs; if (pos - 2 > -1 && buffer[pos - 2] != ".") { chrs = buffer[pos - 2] + chrs; } else chrs = "0" + chrs; } else chrs = "00" + chrs; return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); }, cardinality: 1, definitionSymbol: "i" } } } }); })(jQuery); AdminLTE/plugins/input-mask/phone-codes/phone-be.json 0000644 00000007057 15002261751 0016516 0 ustar 00 [ { "mask": "+32(53)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Aalst (Alost)" }, { "mask": "+32(3)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Antwerpen (Anvers)" }, { "mask": "+32(63)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Arlon" }, { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ath" }, { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Brugge (Bruges)" }, { "mask": "+32(2)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Brussel/Bruxelles (Brussels)" }, { "mask": "+32(71)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Charleroi" }, { "mask": "+32(60)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Chimay" }, { "mask": "+32(83)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ciney" }, { "mask": "+32(52)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dendermonde" }, { "mask": "+32(13)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Diest" }, { "mask": "+32(82)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Dinant" }, { "mask": "+32(86)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Durbuy" }, { "mask": "+32(89)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Genk" }, { "mask": "+32(9)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Gent (Gand)" }, { "mask": "+32(11)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Hasselt" }, { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Herentals" }, { "mask": "+32(85)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Huy (Hoei)" }, { "mask": "+32(64)##-##-##", "cc": "BE", "cd": "Belgium", "city": "La Louvière" }, { "mask": "+32(16)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Leuven (Louvain)" }, { "mask": "+32(61)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Libramont" }, { "mask": "+32(4)###-##-##", "cc": "BE", "cd": "Belgium", "city": "Liège (Luik)" }, { "mask": "+32(15)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mechelen (Malines)" }, { "mask": "+32(47#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, { "mask": "+32(48#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, { "mask": "+32(49#)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mobile Phones" }, { "mask": "+32(65)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Mons (Bergen)" }, { "mask": "+32(81)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Namur (Namen)" }, { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nieuwpoort (Nieuport)" }, { "mask": "+32(54)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ninove" }, { "mask": "+32(67)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Nivelles (Nijvel)" }, { "mask": "+32(59)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Oostende (Ostende)" }, { "mask": "+32(51)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Roeselare (Roulers)" }, { "mask": "+32(55)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Ronse" }, { "mask": "+32(80)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Stavelot" }, { "mask": "+32(12)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tongeren (Tongres)" }, { "mask": "+32(69)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Tounai" }, { "mask": "+32(14)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Turnhout" }, { "mask": "+32(87)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Verviers" }, { "mask": "+32(58)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Veurne" }, { "mask": "+32(19)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wareme" }, { "mask": "+32(10)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Wavre (Waver)" }, { "mask": "+32(50)##-##-##", "cc": "BE", "cd": "Belgium", "city": "Zeebrugge" } ] AdminLTE/plugins/input-mask/phone-codes/readme.txt 0000644 00000000114 15002261751 0016107 0 ustar 00 more phone masks can be found at https://github.com/andr-04/inputmask-multi AdminLTE/plugins/input-mask/phone-codes/phone-codes.json 0000644 00000115104 15002261751 0017216 0 ustar 00 [ { "mask": "+247-####", "cc": "AC", "name_en": "Ascension", "desc_en": "", "name_ru": "Остров Вознесения", "desc_ru": "" }, { "mask": "+376-###-###", "cc": "AD", "name_en": "Andorra", "desc_en": "", "name_ru": "Андорра", "desc_ru": "" }, { "mask": "+971-5#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "mobile", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "мобильные" }, { "mask": "+971-#-###-####", "cc": "AE", "name_en": "United Arab Emirates", "desc_en": "", "name_ru": "Объединенные Арабские Эмираты", "desc_ru": "" }, { "mask": "+93-##-###-####", "cc": "AF", "name_en": "Afghanistan", "desc_en": "", "name_ru": "Афганистан", "desc_ru": "" }, { "mask": "+1(268)###-####", "cc": "AG", "name_en": "Antigua & Barbuda", "desc_en": "", "name_ru": "Антигуа и Барбуда", "desc_ru": "" }, { "mask": "+1(264)###-####", "cc": "AI", "name_en": "Anguilla", "desc_en": "", "name_ru": "Ангилья", "desc_ru": "" }, { "mask": "+355(###)###-###", "cc": "AL", "name_en": "Albania", "desc_en": "", "name_ru": "Албания", "desc_ru": "" }, { "mask": "+374-##-###-###", "cc": "AM", "name_en": "Armenia", "desc_en": "", "name_ru": "Армения", "desc_ru": "" }, { "mask": "+599-###-####", "cc": "AN", "name_en": "Caribbean Netherlands", "desc_en": "", "name_ru": "Карибские Нидерланды", "desc_ru": "" }, { "mask": "+599-###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "", "name_ru": "Нидерландские Антильские острова", "desc_ru": "" }, { "mask": "+599-9###-####", "cc": "AN", "name_en": "Netherlands Antilles", "desc_en": "Curacao", "name_ru": "Нидерландские Антильские острова", "desc_ru": "Кюрасао" }, { "mask": "+244(###)###-###", "cc": "AO", "name_en": "Angola", "desc_en": "", "name_ru": "Ангола", "desc_ru": "" }, { "mask": "+672-1##-###", "cc": "AQ", "name_en": "Australian bases in Antarctica", "desc_en": "", "name_ru": "Австралийская антарктическая база", "desc_ru": "" }, { "mask": "+54(###)###-####", "cc": "AR", "name_en": "Argentina", "desc_en": "", "name_ru": "Аргентина", "desc_ru": "" }, { "mask": "+1(684)###-####", "cc": "AS", "name_en": "American Samoa", "desc_en": "", "name_ru": "Американское Самоа", "desc_ru": "" }, { "mask": "+43(###)###-####", "cc": "AT", "name_en": "Austria", "desc_en": "", "name_ru": "Австрия", "desc_ru": "" }, { "mask": "+61-#-####-####", "cc": "AU", "name_en": "Australia", "desc_en": "", "name_ru": "Австралия", "desc_ru": "" }, { "mask": "+297-###-####", "cc": "AW", "name_en": "Aruba", "desc_en": "", "name_ru": "Аруба", "desc_ru": "" }, { "mask": "+994-##-###-##-##", "cc": "AZ", "name_en": "Azerbaijan", "desc_en": "", "name_ru": "Азербайджан", "desc_ru": "" }, { "mask": "+387-##-#####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" }, { "mask": "+387-##-####", "cc": "BA", "name_en": "Bosnia and Herzegovina", "desc_en": "", "name_ru": "Босния и Герцеговина", "desc_ru": "" }, { "mask": "+1(246)###-####", "cc": "BB", "name_en": "Barbados", "desc_en": "", "name_ru": "Барбадос", "desc_ru": "" }, { "mask": "+880-##-###-###", "cc": "BD", "name_en": "Bangladesh", "desc_en": "", "name_ru": "Бангладеш", "desc_ru": "" }, { "mask": "+32(###)###-###", "cc": "BE", "name_en": "Belgium", "desc_en": "", "name_ru": "Бельгия", "desc_ru": "" }, { "mask": "+226-##-##-####", "cc": "BF", "name_en": "Burkina Faso", "desc_en": "", "name_ru": "Буркина Фасо", "desc_ru": "" }, { "mask": "+359(###)###-###", "cc": "BG", "name_en": "Bulgaria", "desc_en": "", "name_ru": "Болгария", "desc_ru": "" }, { "mask": "+973-####-####", "cc": "BH", "name_en": "Bahrain", "desc_en": "", "name_ru": "Бахрейн", "desc_ru": "" }, { "mask": "+257-##-##-####", "cc": "BI", "name_en": "Burundi", "desc_en": "", "name_ru": "Бурунди", "desc_ru": "" }, { "mask": "+229-##-##-####", "cc": "BJ", "name_en": "Benin", "desc_en": "", "name_ru": "Бенин", "desc_ru": "" }, { "mask": "+1(441)###-####", "cc": "BM", "name_en": "Bermuda", "desc_en": "", "name_ru": "Бермудские острова", "desc_ru": "" }, { "mask": "+673-###-####", "cc": "BN", "name_en": "Brunei Darussalam", "desc_en": "", "name_ru": "Бруней-Даруссалам", "desc_ru": "" }, { "mask": "+591-#-###-####", "cc": "BO", "name_en": "Bolivia", "desc_en": "", "name_ru": "Боливия", "desc_ru": "" }, { "mask": "+55-##-####[#]-####", "cc": "BR", "name_en": "Brazil", "desc_en": "", "name_ru": "Бразилия", "desc_ru": "" }, { "mask": "+1(242)###-####", "cc": "BS", "name_en": "Bahamas", "desc_en": "", "name_ru": "Багамские Острова", "desc_ru": "" }, { "mask": "+975-17-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" }, { "mask": "+975-#-###-###", "cc": "BT", "name_en": "Bhutan", "desc_en": "", "name_ru": "Бутан", "desc_ru": "" }, { "mask": "+267-##-###-###", "cc": "BW", "name_en": "Botswana", "desc_en": "", "name_ru": "Ботсвана", "desc_ru": "" }, { "mask": "+375(##)###-##-##", "cc": "BY", "name_en": "Belarus", "desc_en": "", "name_ru": "Беларусь (Белоруссия)", "desc_ru": "" }, { "mask": "+501-###-####", "cc": "BZ", "name_en": "Belize", "desc_en": "", "name_ru": "Белиз", "desc_ru": "" }, { "mask": "+243(###)###-###", "cc": "CD", "name_en": "Dem. Rep. Congo", "desc_en": "", "name_ru": "Дем. Респ. Конго (Киншаса)", "desc_ru": "" }, { "mask": "+236-##-##-####", "cc": "CF", "name_en": "Central African Republic", "desc_en": "", "name_ru": "Центральноафриканская Республика", "desc_ru": "" }, { "mask": "+242-##-###-####", "cc": "CG", "name_en": "Congo (Brazzaville)", "desc_en": "", "name_ru": "Конго (Браззавиль)", "desc_ru": "" }, { "mask": "+41-##-###-####", "cc": "CH", "name_en": "Switzerland", "desc_en": "", "name_ru": "Швейцария", "desc_ru": "" }, { "mask": "+225-##-###-###", "cc": "CI", "name_en": "Cote d’Ivoire (Ivory Coast)", "desc_en": "", "name_ru": "Кот-д’Ивуар", "desc_ru": "" }, { "mask": "+682-##-###", "cc": "CK", "name_en": "Cook Islands", "desc_en": "", "name_ru": "Острова Кука", "desc_ru": "" }, { "mask": "+56-#-####-####", "cc": "CL", "name_en": "Chile", "desc_en": "", "name_ru": "Чили", "desc_ru": "" }, { "mask": "+237-####-####", "cc": "CM", "name_en": "Cameroon", "desc_en": "", "name_ru": "Камерун", "desc_ru": "" }, { "mask": "+86(###)####-####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, { "mask": "+86(###)####-###", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, { "mask": "+86-##-#####-#####", "cc": "CN", "name_en": "China (PRC)", "desc_en": "", "name_ru": "Китайская Н.Р.", "desc_ru": "" }, { "mask": "+57(###)###-####", "cc": "CO", "name_en": "Colombia", "desc_en": "", "name_ru": "Колумбия", "desc_ru": "" }, { "mask": "+506-####-####", "cc": "CR", "name_en": "Costa Rica", "desc_en": "", "name_ru": "Коста-Рика", "desc_ru": "" }, { "mask": "+53-#-###-####", "cc": "CU", "name_en": "Cuba", "desc_en": "", "name_ru": "Куба", "desc_ru": "" }, { "mask": "+238(###)##-##", "cc": "CV", "name_en": "Cape Verde", "desc_en": "", "name_ru": "Кабо-Верде", "desc_ru": "" }, { "mask": "+599-###-####", "cc": "CW", "name_en": "Curacao", "desc_en": "", "name_ru": "Кюрасао", "desc_ru": "" }, { "mask": "+357-##-###-###", "cc": "CY", "name_en": "Cyprus", "desc_en": "", "name_ru": "Кипр", "desc_ru": "" }, { "mask": "+420(###)###-###", "cc": "CZ", "name_en": "Czech Republic", "desc_en": "", "name_ru": "Чехия", "desc_ru": "" }, { "mask": "+49(####)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, { "mask": "+49(###)###-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, { "mask": "+49(###)##-####", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, { "mask": "+49(###)##-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, { "mask": "+49(###)##-##", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, { "mask": "+49-###-###", "cc": "DE", "name_en": "Germany", "desc_en": "", "name_ru": "Германия", "desc_ru": "" }, { "mask": "+253-##-##-##-##", "cc": "DJ", "name_en": "Djibouti", "desc_en": "", "name_ru": "Джибути", "desc_ru": "" }, { "mask": "+45-##-##-##-##", "cc": "DK", "name_en": "Denmark", "desc_en": "", "name_ru": "Дания", "desc_ru": "" }, { "mask": "+1(767)###-####", "cc": "DM", "name_en": "Dominica", "desc_en": "", "name_ru": "Доминика", "desc_ru": "" }, { "mask": "+1(809)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, { "mask": "+1(829)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, { "mask": "+1(849)###-####", "cc": "DO", "name_en": "Dominican Republic", "desc_en": "", "name_ru": "Доминиканская Республика", "desc_ru": "" }, { "mask": "+213-##-###-####", "cc": "DZ", "name_en": "Algeria", "desc_en": "", "name_ru": "Алжир", "desc_ru": "" }, { "mask": "+593-##-###-####", "cc": "EC", "name_en": "Ecuador ", "desc_en": "mobile", "name_ru": "Эквадор ", "desc_ru": "мобильные" }, { "mask": "+593-#-###-####", "cc": "EC", "name_en": "Ecuador", "desc_en": "", "name_ru": "Эквадор", "desc_ru": "" }, { "mask": "+372-####-####", "cc": "EE", "name_en": "Estonia ", "desc_en": "mobile", "name_ru": "Эстония ", "desc_ru": "мобильные" }, { "mask": "+372-###-####", "cc": "EE", "name_en": "Estonia", "desc_en": "", "name_ru": "Эстония", "desc_ru": "" }, { "mask": "+20(###)###-####", "cc": "EG", "name_en": "Egypt", "desc_en": "", "name_ru": "Египет", "desc_ru": "" }, { "mask": "+291-#-###-###", "cc": "ER", "name_en": "Eritrea", "desc_en": "", "name_ru": "Эритрея", "desc_ru": "" }, { "mask": "+34(###)###-###", "cc": "ES", "name_en": "Spain", "desc_en": "", "name_ru": "Испания", "desc_ru": "" }, { "mask": "+251-##-###-####", "cc": "ET", "name_en": "Ethiopia", "desc_en": "", "name_ru": "Эфиопия", "desc_ru": "" }, { "mask": "+358(###)###-##-##", "cc": "FI", "name_en": "Finland", "desc_en": "", "name_ru": "Финляндия", "desc_ru": "" }, { "mask": "+679-##-#####", "cc": "FJ", "name_en": "Fiji", "desc_en": "", "name_ru": "Фиджи", "desc_ru": "" }, { "mask": "+500-#####", "cc": "FK", "name_en": "Falkland Islands", "desc_en": "", "name_ru": "Фолклендские острова", "desc_ru": "" }, { "mask": "+691-###-####", "cc": "FM", "name_en": "F.S. Micronesia", "desc_en": "", "name_ru": "Ф.Ш. Микронезии", "desc_ru": "" }, { "mask": "+298-###-###", "cc": "FO", "name_en": "Faroe Islands", "desc_en": "", "name_ru": "Фарерские острова", "desc_ru": "" }, { "mask": "+262-#####-####", "cc": "FR", "name_en": "Mayotte", "desc_en": "", "name_ru": "Майотта", "desc_ru": "" }, { "mask": "+33(###)###-###", "cc": "FR", "name_en": "France", "desc_en": "", "name_ru": "Франция", "desc_ru": "" }, { "mask": "+508-##-####", "cc": "FR", "name_en": "St Pierre & Miquelon", "desc_en": "", "name_ru": "Сен-Пьер и Микелон", "desc_ru": "" }, { "mask": "+590(###)###-###", "cc": "FR", "name_en": "Guadeloupe", "desc_en": "", "name_ru": "Гваделупа", "desc_ru": "" }, { "mask": "+241-#-##-##-##", "cc": "GA", "name_en": "Gabon", "desc_en": "", "name_ru": "Габон", "desc_ru": "" }, { "mask": "+1(473)###-####", "cc": "GD", "name_en": "Grenada", "desc_en": "", "name_ru": "Гренада", "desc_ru": "" }, { "mask": "+995(###)###-###", "cc": "GE", "name_en": "Rep. of Georgia", "desc_en": "", "name_ru": "Грузия", "desc_ru": "" }, { "mask": "+594-#####-####", "cc": "GF", "name_en": "Guiana (French)", "desc_en": "", "name_ru": "Фр. Гвиана", "desc_ru": "" }, { "mask": "+233(###)###-###", "cc": "GH", "name_en": "Ghana", "desc_en": "", "name_ru": "Гана", "desc_ru": "" }, { "mask": "+350-###-#####", "cc": "GI", "name_en": "Gibraltar", "desc_en": "", "name_ru": "Гибралтар", "desc_ru": "" }, { "mask": "+299-##-##-##", "cc": "GL", "name_en": "Greenland", "desc_en": "", "name_ru": "Гренландия", "desc_ru": "" }, { "mask": "+220(###)##-##", "cc": "GM", "name_en": "Gambia", "desc_en": "", "name_ru": "Гамбия", "desc_ru": "" }, { "mask": "+224-##-###-###", "cc": "GN", "name_en": "Guinea", "desc_en": "", "name_ru": "Гвинея", "desc_ru": "" }, { "mask": "+240-##-###-####", "cc": "GQ", "name_en": "Equatorial Guinea", "desc_en": "", "name_ru": "Экваториальная Гвинея", "desc_ru": "" }, { "mask": "+30(###)###-####", "cc": "GR", "name_en": "Greece", "desc_en": "", "name_ru": "Греция", "desc_ru": "" }, { "mask": "+502-#-###-####", "cc": "GT", "name_en": "Guatemala", "desc_en": "", "name_ru": "Гватемала", "desc_ru": "" }, { "mask": "+1(671)###-####", "cc": "GU", "name_en": "Guam", "desc_en": "", "name_ru": "Гуам", "desc_ru": "" }, { "mask": "+245-#-######", "cc": "GW", "name_en": "Guinea-Bissau", "desc_en": "", "name_ru": "Гвинея-Бисау", "desc_ru": "" }, { "mask": "+592-###-####", "cc": "GY", "name_en": "Guyana", "desc_en": "", "name_ru": "Гайана", "desc_ru": "" }, { "mask": "+852-####-####", "cc": "HK", "name_en": "Hong Kong", "desc_en": "", "name_ru": "Гонконг", "desc_ru": "" }, { "mask": "+504-####-####", "cc": "HN", "name_en": "Honduras", "desc_en": "", "name_ru": "Гондурас", "desc_ru": "" }, { "mask": "+385-##-###-###", "cc": "HR", "name_en": "Croatia", "desc_en": "", "name_ru": "Хорватия", "desc_ru": "" }, { "mask": "+509-##-##-####", "cc": "HT", "name_en": "Haiti", "desc_en": "", "name_ru": "Гаити", "desc_ru": "" }, { "mask": "+36(###)###-###", "cc": "HU", "name_en": "Hungary", "desc_en": "", "name_ru": "Венгрия", "desc_ru": "" }, { "mask": "+62(8##)###-####", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, { "mask": "+62-##-###-##", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, { "mask": "+62-##-###-###", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, { "mask": "+62-##-###-####", "cc": "ID", "name_en": "Indonesia", "desc_en": "", "name_ru": "Индонезия", "desc_ru": "" }, { "mask": "+62(8##)###-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, { "mask": "+62(8##)###-##-###", "cc": "ID", "name_en": "Indonesia ", "desc_en": "mobile", "name_ru": "Индонезия ", "desc_ru": "мобильные" }, { "mask": "+353(###)###-###", "cc": "IE", "name_en": "Ireland", "desc_en": "", "name_ru": "Ирландия", "desc_ru": "" }, { "mask": "+972-5#-###-####", "cc": "IL", "name_en": "Israel ", "desc_en": "mobile", "name_ru": "Израиль ", "desc_ru": "мобильные" }, { "mask": "+972-#-###-####", "cc": "IL", "name_en": "Israel", "desc_en": "", "name_ru": "Израиль", "desc_ru": "" }, { "mask": "+91(####)###-###", "cc": "IN", "name_en": "India", "desc_en": "", "name_ru": "Индия", "desc_ru": "" }, { "mask": "+246-###-####", "cc": "IO", "name_en": "Diego Garcia", "desc_en": "", "name_ru": "Диего-Гарсия", "desc_ru": "" }, { "mask": "+964(###)###-####", "cc": "IQ", "name_en": "Iraq", "desc_en": "", "name_ru": "Ирак", "desc_ru": "" }, { "mask": "+98(###)###-####", "cc": "IR", "name_en": "Iran", "desc_en": "", "name_ru": "Иран", "desc_ru": "" }, { "mask": "+354-###-####", "cc": "IS", "name_en": "Iceland", "desc_en": "", "name_ru": "Исландия", "desc_ru": "" }, { "mask": "+39(###)####-###", "cc": "IT", "name_en": "Italy", "desc_en": "", "name_ru": "Италия", "desc_ru": "" }, { "mask": "+1(876)###-####", "cc": "JM", "name_en": "Jamaica", "desc_en": "", "name_ru": "Ямайка", "desc_ru": "" }, { "mask": "+962-#-####-####", "cc": "JO", "name_en": "Jordan", "desc_en": "", "name_ru": "Иордания", "desc_ru": "" }, { "mask": "+81-##-####-####", "cc": "JP", "name_en": "Japan ", "desc_en": "mobile", "name_ru": "Япония ", "desc_ru": "мобильные" }, { "mask": "+81(###)###-###", "cc": "JP", "name_en": "Japan", "desc_en": "", "name_ru": "Япония", "desc_ru": "" }, { "mask": "+254-###-######", "cc": "KE", "name_en": "Kenya", "desc_en": "", "name_ru": "Кения", "desc_ru": "" }, { "mask": "+996(###)###-###", "cc": "KG", "name_en": "Kyrgyzstan", "desc_en": "", "name_ru": "Киргизия", "desc_ru": "" }, { "mask": "+855-##-###-###", "cc": "KH", "name_en": "Cambodia", "desc_en": "", "name_ru": "Камбоджа", "desc_ru": "" }, { "mask": "+686-##-###", "cc": "KI", "name_en": "Kiribati", "desc_en": "", "name_ru": "Кирибати", "desc_ru": "" }, { "mask": "+269-##-#####", "cc": "KM", "name_en": "Comoros", "desc_en": "", "name_ru": "Коморы", "desc_ru": "" }, { "mask": "+1(869)###-####", "cc": "KN", "name_en": "Saint Kitts & Nevis", "desc_en": "", "name_ru": "Сент-Китс и Невис", "desc_ru": "" }, { "mask": "+850-191-###-####", "cc": "KP", "name_en": "DPR Korea (North) ", "desc_en": "mobile", "name_ru": "Корейская НДР ", "desc_ru": "мобильные" }, { "mask": "+850-##-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, { "mask": "+850-###-####-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, { "mask": "+850-###-###", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, { "mask": "+850-####-####", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, { "mask": "+850-####-#############", "cc": "KP", "name_en": "DPR Korea (North)", "desc_en": "", "name_ru": "Корейская НДР", "desc_ru": "" }, { "mask": "+82-##-###-####", "cc": "KR", "name_en": "Korea (South)", "desc_en": "", "name_ru": "Респ. Корея", "desc_ru": "" }, { "mask": "+965-####-####", "cc": "KW", "name_en": "Kuwait", "desc_en": "", "name_ru": "Кувейт", "desc_ru": "" }, { "mask": "+1(345)###-####", "cc": "KY", "name_en": "Cayman Islands", "desc_en": "", "name_ru": "Каймановы острова", "desc_ru": "" }, { "mask": "+7(6##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" }, { "mask": "+7(7##)###-##-##", "cc": "KZ", "name_en": "Kazakhstan", "desc_en": "", "name_ru": "Казахстан", "desc_ru": "" }, { "mask": "+856(20##)###-###", "cc": "LA", "name_en": "Laos ", "desc_en": "mobile", "name_ru": "Лаос ", "desc_ru": "мобильные" }, { "mask": "+856-##-###-###", "cc": "LA", "name_en": "Laos", "desc_en": "", "name_ru": "Лаос", "desc_ru": "" }, { "mask": "+961-##-###-###", "cc": "LB", "name_en": "Lebanon ", "desc_en": "mobile", "name_ru": "Ливан ", "desc_ru": "мобильные" }, { "mask": "+961-#-###-###", "cc": "LB", "name_en": "Lebanon", "desc_en": "", "name_ru": "Ливан", "desc_ru": "" }, { "mask": "+1(758)###-####", "cc": "LC", "name_en": "Saint Lucia", "desc_en": "", "name_ru": "Сент-Люсия", "desc_ru": "" }, { "mask": "+423(###)###-####", "cc": "LI", "name_en": "Liechtenstein", "desc_en": "", "name_ru": "Лихтенштейн", "desc_ru": "" }, { "mask": "+94-##-###-####", "cc": "LK", "name_en": "Sri Lanka", "desc_en": "", "name_ru": "Шри-Ланка", "desc_ru": "" }, { "mask": "+231-##-###-###", "cc": "LR", "name_en": "Liberia", "desc_en": "", "name_ru": "Либерия", "desc_ru": "" }, { "mask": "+266-#-###-####", "cc": "LS", "name_en": "Lesotho", "desc_en": "", "name_ru": "Лесото", "desc_ru": "" }, { "mask": "+370(###)##-###", "cc": "LT", "name_en": "Lithuania", "desc_en": "", "name_ru": "Литва", "desc_ru": "" }, { "mask": "+352(###)###-###", "cc": "LU", "name_en": "Luxembourg", "desc_en": "", "name_ru": "Люксембург", "desc_ru": "" }, { "mask": "+371-##-###-###", "cc": "LV", "name_en": "Latvia", "desc_en": "", "name_ru": "Латвия", "desc_ru": "" }, { "mask": "+218-##-###-###", "cc": "LY", "name_en": "Libya", "desc_en": "", "name_ru": "Ливия", "desc_ru": "" }, { "mask": "+218-21-###-####", "cc": "LY", "name_en": "Libya", "desc_en": "Tripoli", "name_ru": "Ливия", "desc_ru": "Триполи" }, { "mask": "+212-##-####-###", "cc": "MA", "name_en": "Morocco", "desc_en": "", "name_ru": "Марокко", "desc_ru": "" }, { "mask": "+377(###)###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" }, { "mask": "+377-##-###-###", "cc": "MC", "name_en": "Monaco", "desc_en": "", "name_ru": "Монако", "desc_ru": "" }, { "mask": "+373-####-####", "cc": "MD", "name_en": "Moldova", "desc_en": "", "name_ru": "Молдова", "desc_ru": "" }, { "mask": "+382-##-###-###", "cc": "ME", "name_en": "Montenegro", "desc_en": "", "name_ru": "Черногория", "desc_ru": "" }, { "mask": "+261-##-##-#####", "cc": "MG", "name_en": "Madagascar", "desc_en": "", "name_ru": "Мадагаскар", "desc_ru": "" }, { "mask": "+692-###-####", "cc": "MH", "name_en": "Marshall Islands", "desc_en": "", "name_ru": "Маршалловы Острова", "desc_ru": "" }, { "mask": "+389-##-###-###", "cc": "MK", "name_en": "Republic of Macedonia", "desc_en": "", "name_ru": "Респ. Македония", "desc_ru": "" }, { "mask": "+223-##-##-####", "cc": "ML", "name_en": "Mali", "desc_en": "", "name_ru": "Мали", "desc_ru": "" }, { "mask": "+95-##-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, { "mask": "+95-#-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, { "mask": "+95-###-###", "cc": "MM", "name_en": "Burma (Myanmar)", "desc_en": "", "name_ru": "Бирма (Мьянма)", "desc_ru": "" }, { "mask": "+976-##-##-####", "cc": "MN", "name_en": "Mongolia", "desc_en": "", "name_ru": "Монголия", "desc_ru": "" }, { "mask": "+853-####-####", "cc": "MO", "name_en": "Macau", "desc_en": "", "name_ru": "Макао", "desc_ru": "" }, { "mask": "+1(670)###-####", "cc": "MP", "name_en": "Northern Mariana Islands", "desc_en": "", "name_ru": "Северные Марианские острова Сайпан", "desc_ru": "" }, { "mask": "+596(###)##-##-##", "cc": "MQ", "name_en": "Martinique", "desc_en": "", "name_ru": "Мартиника", "desc_ru": "" }, { "mask": "+222-##-##-####", "cc": "MR", "name_en": "Mauritania", "desc_en": "", "name_ru": "Мавритания", "desc_ru": "" }, { "mask": "+1(664)###-####", "cc": "MS", "name_en": "Montserrat", "desc_en": "", "name_ru": "Монтсеррат", "desc_ru": "" }, { "mask": "+356-####-####", "cc": "MT", "name_en": "Malta", "desc_en": "", "name_ru": "Мальта", "desc_ru": "" }, { "mask": "+230-###-####", "cc": "MU", "name_en": "Mauritius", "desc_en": "", "name_ru": "Маврикий", "desc_ru": "" }, { "mask": "+960-###-####", "cc": "MV", "name_en": "Maldives", "desc_en": "", "name_ru": "Мальдивские острова", "desc_ru": "" }, { "mask": "+265-1-###-###", "cc": "MW", "name_en": "Malawi", "desc_en": "Telecom Ltd", "name_ru": "Малави", "desc_ru": "Telecom Ltd" }, { "mask": "+265-#-####-####", "cc": "MW", "name_en": "Malawi", "desc_en": "", "name_ru": "Малави", "desc_ru": "" }, { "mask": "+52(###)###-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" }, { "mask": "+52-##-##-####", "cc": "MX", "name_en": "Mexico", "desc_en": "", "name_ru": "Мексика", "desc_ru": "" }, { "mask": "+60-##-###-####", "cc": "MY", "name_en": "Malaysia ", "desc_en": "mobile", "name_ru": "Малайзия ", "desc_ru": "мобильные" }, { "mask": "+60(###)###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, { "mask": "+60-##-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, { "mask": "+60-#-###-###", "cc": "MY", "name_en": "Malaysia", "desc_en": "", "name_ru": "Малайзия", "desc_ru": "" }, { "mask": "+258-##-###-###", "cc": "MZ", "name_en": "Mozambique", "desc_en": "", "name_ru": "Мозамбик", "desc_ru": "" }, { "mask": "+264-##-###-####", "cc": "NA", "name_en": "Namibia", "desc_en": "", "name_ru": "Намибия", "desc_ru": "" }, { "mask": "+687-##-####", "cc": "NC", "name_en": "New Caledonia", "desc_en": "", "name_ru": "Новая Каледония", "desc_ru": "" }, { "mask": "+227-##-##-####", "cc": "NE", "name_en": "Niger", "desc_en": "", "name_ru": "Нигер", "desc_ru": "" }, { "mask": "+672-3##-###", "cc": "NF", "name_en": "Norfolk Island", "desc_en": "", "name_ru": "Норфолк (остров)", "desc_ru": "" }, { "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, { "mask": "+234-##-###-###", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, { "mask": "+234-##-###-##", "cc": "NG", "name_en": "Nigeria", "desc_en": "", "name_ru": "Нигерия", "desc_ru": "" }, { "mask": "+234(###)###-####", "cc": "NG", "name_en": "Nigeria ", "desc_en": "mobile", "name_ru": "Нигерия ", "desc_ru": "мобильные" }, { "mask": "+505-####-####", "cc": "NI", "name_en": "Nicaragua", "desc_en": "", "name_ru": "Никарагуа", "desc_ru": "" }, { "mask": "+31-##-###-####", "cc": "NL", "name_en": "Netherlands", "desc_en": "", "name_ru": "Нидерланды", "desc_ru": "" }, { "mask": "+47(###)##-###", "cc": "NO", "name_en": "Norway", "desc_en": "", "name_ru": "Норвегия", "desc_ru": "" }, { "mask": "+977-##-###-###", "cc": "NP", "name_en": "Nepal", "desc_en": "", "name_ru": "Непал", "desc_ru": "" }, { "mask": "+674-###-####", "cc": "NR", "name_en": "Nauru", "desc_en": "", "name_ru": "Науру", "desc_ru": "" }, { "mask": "+683-####", "cc": "NU", "name_en": "Niue", "desc_en": "", "name_ru": "Ниуэ", "desc_ru": "" }, { "mask": "+64(###)###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, { "mask": "+64-##-###-###", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, { "mask": "+64(###)###-####", "cc": "NZ", "name_en": "New Zealand", "desc_en": "", "name_ru": "Новая Зеландия", "desc_ru": "" }, { "mask": "+968-##-###-###", "cc": "OM", "name_en": "Oman", "desc_en": "", "name_ru": "Оман", "desc_ru": "" }, { "mask": "+507-###-####", "cc": "PA", "name_en": "Panama", "desc_en": "", "name_ru": "Панама", "desc_ru": "" }, { "mask": "+51(###)###-###", "cc": "PE", "name_en": "Peru", "desc_en": "", "name_ru": "Перу", "desc_ru": "" }, { "mask": "+689-##-##-##", "cc": "PF", "name_en": "French Polynesia", "desc_en": "", "name_ru": "Французская Полинезия (Таити)", "desc_ru": "" }, { "mask": "+675(###)##-###", "cc": "PG", "name_en": "Papua New Guinea", "desc_en": "", "name_ru": "Папуа-Новая Гвинея", "desc_ru": "" }, { "mask": "+63(###)###-####", "cc": "PH", "name_en": "Philippines", "desc_en": "", "name_ru": "Филиппины", "desc_ru": "" }, { "mask": "+92(###)###-####", "cc": "PK", "name_en": "Pakistan", "desc_en": "", "name_ru": "Пакистан", "desc_ru": "" }, { "mask": "+48(###)###-###", "cc": "PL", "name_en": "Poland", "desc_en": "", "name_ru": "Польша", "desc_ru": "" }, { "mask": "+970-##-###-####", "cc": "PS", "name_en": "Palestine", "desc_en": "", "name_ru": "Палестина", "desc_ru": "" }, { "mask": "+351-##-###-####", "cc": "PT", "name_en": "Portugal", "desc_en": "", "name_ru": "Португалия", "desc_ru": "" }, { "mask": "+680-###-####", "cc": "PW", "name_en": "Palau", "desc_en": "", "name_ru": "Палау", "desc_ru": "" }, { "mask": "+595(###)###-###", "cc": "PY", "name_en": "Paraguay", "desc_en": "", "name_ru": "Парагвай", "desc_ru": "" }, { "mask": "+974-####-####", "cc": "QA", "name_en": "Qatar", "desc_en": "", "name_ru": "Катар", "desc_ru": "" }, { "mask": "+262-#####-####", "cc": "RE", "name_en": "Reunion", "desc_en": "", "name_ru": "Реюньон", "desc_ru": "" }, { "mask": "+40-##-###-####", "cc": "RO", "name_en": "Romania", "desc_en": "", "name_ru": "Румыния", "desc_ru": "" }, { "mask": "+381-##-###-####", "cc": "RS", "name_en": "Serbia", "desc_en": "", "name_ru": "Сербия", "desc_ru": "" }, { "mask": "+7(###)###-##-##", "cc": "RU", "name_en": "Russia", "desc_en": "", "name_ru": "Россия", "desc_ru": "" }, { "mask": "+250(###)###-###", "cc": "RW", "name_en": "Rwanda", "desc_en": "", "name_ru": "Руанда", "desc_ru": "" }, { "mask": "+966-5-####-####", "cc": "SA", "name_en": "Saudi Arabia ", "desc_en": "mobile", "name_ru": "Саудовская Аравия ", "desc_ru": "мобильные" }, { "mask": "+966-#-###-####", "cc": "SA", "name_en": "Saudi Arabia", "desc_en": "", "name_ru": "Саудовская Аравия", "desc_ru": "" }, { "mask": "+677-###-####", "cc": "SB", "name_en": "Solomon Islands ", "desc_en": "mobile", "name_ru": "Соломоновы Острова ", "desc_ru": "мобильные" }, { "mask": "+677-#####", "cc": "SB", "name_en": "Solomon Islands", "desc_en": "", "name_ru": "Соломоновы Острова", "desc_ru": "" }, { "mask": "+248-#-###-###", "cc": "SC", "name_en": "Seychelles", "desc_en": "", "name_ru": "Сейшелы", "desc_ru": "" }, { "mask": "+249-##-###-####", "cc": "SD", "name_en": "Sudan", "desc_en": "", "name_ru": "Судан", "desc_ru": "" }, { "mask": "+46-##-###-####", "cc": "SE", "name_en": "Sweden", "desc_en": "", "name_ru": "Швеция", "desc_ru": "" }, { "mask": "+65-####-####", "cc": "SG", "name_en": "Singapore", "desc_en": "", "name_ru": "Сингапур", "desc_ru": "" }, { "mask": "+290-####", "cc": "SH", "name_en": "Saint Helena", "desc_en": "", "name_ru": "Остров Святой Елены", "desc_ru": "" }, { "mask": "+290-####", "cc": "SH", "name_en": "Tristan da Cunha", "desc_en": "", "name_ru": "Тристан-да-Кунья", "desc_ru": "" }, { "mask": "+386-##-###-###", "cc": "SI", "name_en": "Slovenia", "desc_en": "", "name_ru": "Словения", "desc_ru": "" }, { "mask": "+421(###)###-###", "cc": "SK", "name_en": "Slovakia", "desc_en": "", "name_ru": "Словакия", "desc_ru": "" }, { "mask": "+232-##-######", "cc": "SL", "name_en": "Sierra Leone", "desc_en": "", "name_ru": "Сьерра-Леоне", "desc_ru": "" }, { "mask": "+378-####-######", "cc": "SM", "name_en": "San Marino", "desc_en": "", "name_ru": "Сан-Марино", "desc_ru": "" }, { "mask": "+221-##-###-####", "cc": "SN", "name_en": "Senegal", "desc_en": "", "name_ru": "Сенегал", "desc_ru": "" }, { "mask": "+252-##-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" }, { "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia", "desc_en": "", "name_ru": "Сомали", "desc_ru": "" }, { "mask": "+252-#-###-###", "cc": "SO", "name_en": "Somalia ", "desc_en": "mobile", "name_ru": "Сомали ", "desc_ru": "мобильные" }, { "mask": "+597-###-####", "cc": "SR", "name_en": "Suriname ", "desc_en": "mobile", "name_ru": "Суринам ", "desc_ru": "мобильные" }, { "mask": "+597-###-###", "cc": "SR", "name_en": "Suriname", "desc_en": "", "name_ru": "Суринам", "desc_ru": "" }, { "mask": "+211-##-###-####", "cc": "SS", "name_en": "South Sudan", "desc_en": "", "name_ru": "Южный Судан", "desc_ru": "" }, { "mask": "+239-##-#####", "cc": "ST", "name_en": "Sao Tome and Principe", "desc_en": "", "name_ru": "Сан-Томе и Принсипи", "desc_ru": "" }, { "mask": "+503-##-##-####", "cc": "SV", "name_en": "El Salvador", "desc_en": "", "name_ru": "Сальвадор", "desc_ru": "" }, { "mask": "+1(721)###-####", "cc": "SX", "name_en": "Sint Maarten", "desc_en": "", "name_ru": "Синт-Маартен", "desc_ru": "" }, { "mask": "+963-##-####-###", "cc": "SY", "name_en": "Syrian Arab Republic", "desc_en": "", "name_ru": "Сирийская арабская республика", "desc_ru": "" }, { "mask": "+268-##-##-####", "cc": "SZ", "name_en": "Swaziland", "desc_en": "", "name_ru": "Свазиленд", "desc_ru": "" }, { "mask": "+1(649)###-####", "cc": "TC", "name_en": "Turks & Caicos", "desc_en": "", "name_ru": "Тёркс и Кайкос", "desc_ru": "" }, { "mask": "+235-##-##-##-##", "cc": "TD", "name_en": "Chad", "desc_en": "", "name_ru": "Чад", "desc_ru": "" }, { "mask": "+228-##-###-###", "cc": "TG", "name_en": "Togo", "desc_en": "", "name_ru": "Того", "desc_ru": "" }, { "mask": "+66-##-###-####", "cc": "TH", "name_en": "Thailand ", "desc_en": "mobile", "name_ru": "Таиланд ", "desc_ru": "мобильные" }, { "mask": "+66-##-###-###", "cc": "TH", "name_en": "Thailand", "desc_en": "", "name_ru": "Таиланд", "desc_ru": "" }, { "mask": "+992-##-###-####", "cc": "TJ", "name_en": "Tajikistan", "desc_en": "", "name_ru": "Таджикистан", "desc_ru": "" }, { "mask": "+690-####", "cc": "TK", "name_en": "Tokelau", "desc_en": "", "name_ru": "Токелау", "desc_ru": "" }, { "mask": "+670-###-####", "cc": "TL", "name_en": "East Timor", "desc_en": "", "name_ru": "Восточный Тимор", "desc_ru": "" }, { "mask": "+670-77#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" }, { "mask": "+670-78#-#####", "cc": "TL", "name_en": "East Timor", "desc_en": "Timor Telecom", "name_ru": "Восточный Тимор", "desc_ru": "Timor Telecom" }, { "mask": "+993-#-###-####", "cc": "TM", "name_en": "Turkmenistan", "desc_en": "", "name_ru": "Туркменистан", "desc_ru": "" }, { "mask": "+216-##-###-###", "cc": "TN", "name_en": "Tunisia", "desc_en": "", "name_ru": "Тунис", "desc_ru": "" }, { "mask": "+676-#####", "cc": "TO", "name_en": "Tonga", "desc_en": "", "name_ru": "Тонга", "desc_ru": "" }, { "mask": "+90(###)###-####", "cc": "TR", "name_en": "Turkey", "desc_en": "", "name_ru": "Турция", "desc_ru": "" }, { "mask": "+1(868)###-####", "cc": "TT", "name_en": "Trinidad & Tobago", "desc_en": "", "name_ru": "Тринидад и Тобаго", "desc_ru": "" }, { "mask": "+688-90####", "cc": "TV", "name_en": "Tuvalu ", "desc_en": "mobile", "name_ru": "Тувалу ", "desc_ru": "мобильные" }, { "mask": "+688-2####", "cc": "TV", "name_en": "Tuvalu", "desc_en": "", "name_ru": "Тувалу", "desc_ru": "" }, { "mask": "+886-#-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" }, { "mask": "+886-####-####", "cc": "TW", "name_en": "Taiwan", "desc_en": "", "name_ru": "Тайвань", "desc_ru": "" }, { "mask": "+255-##-###-####", "cc": "TZ", "name_en": "Tanzania", "desc_en": "", "name_ru": "Танзания", "desc_ru": "" }, { "mask": "+380(##)###-##-##", "cc": "UA", "name_en": "Ukraine", "desc_en": "", "name_ru": "Украина", "desc_ru": "" }, { "mask": "+256(###)###-###", "cc": "UG", "name_en": "Uganda", "desc_en": "", "name_ru": "Уганда", "desc_ru": "" }, { "mask": "+44-##-####-####", "cc": "UK", "name_en": "United Kingdom", "desc_en": "", "name_ru": "Великобритания", "desc_ru": "" }, { "mask": "+598-#-###-##-##", "cc": "UY", "name_en": "Uruguay", "desc_en": "", "name_ru": "Уругвай", "desc_ru": "" }, { "mask": "+998-##-###-####", "cc": "UZ", "name_en": "Uzbekistan", "desc_en": "", "name_ru": "Узбекистан", "desc_ru": "" }, { "mask": "+39-6-698-#####", "cc": "VA", "name_en": "Vatican City", "desc_en": "", "name_ru": "Ватикан", "desc_ru": "" }, { "mask": "+1(784)###-####", "cc": "VC", "name_en": "Saint Vincent & the Grenadines", "desc_en": "", "name_ru": "Сент-Винсент и Гренадины", "desc_ru": "" }, { "mask": "+58(###)###-####", "cc": "VE", "name_en": "Venezuela", "desc_en": "", "name_ru": "Венесуэла", "desc_ru": "" }, { "mask": "+1(284)###-####", "cc": "VG", "name_en": "British Virgin Islands", "desc_en": "", "name_ru": "Британские Виргинские острова", "desc_ru": "" }, { "mask": "+1(340)###-####", "cc": "VI", "name_en": "US Virgin Islands", "desc_en": "", "name_ru": "Американские Виргинские острова", "desc_ru": "" }, { "mask": "+84-##-####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" }, { "mask": "+84(###)####-###", "cc": "VN", "name_en": "Vietnam", "desc_en": "", "name_ru": "Вьетнам", "desc_ru": "" }, { "mask": "+678-##-#####", "cc": "VU", "name_en": "Vanuatu ", "desc_en": "mobile", "name_ru": "Вануату ", "desc_ru": "мобильные" }, { "mask": "+678-#####", "cc": "VU", "name_en": "Vanuatu", "desc_en": "", "name_ru": "Вануату", "desc_ru": "" }, { "mask": "+681-##-####", "cc": "WF", "name_en": "Wallis and Futuna", "desc_en": "", "name_ru": "Уоллис и Футуна", "desc_ru": "" }, { "mask": "+685-##-####", "cc": "WS", "name_en": "Samoa", "desc_en": "", "name_ru": "Самоа", "desc_ru": "" }, { "mask": "+967-###-###-###", "cc": "YE", "name_en": "Yemen ", "desc_en": "mobile", "name_ru": "Йемен ", "desc_ru": "мобильные" }, { "mask": "+967-#-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" }, { "mask": "+967-##-###-###", "cc": "YE", "name_en": "Yemen", "desc_en": "", "name_ru": "Йемен", "desc_ru": "" }, { "mask": "+27-##-###-####", "cc": "ZA", "name_en": "South Africa", "desc_en": "", "name_ru": "Южно-Африканская Респ.", "desc_ru": "" }, { "mask": "+260-##-###-####", "cc": "ZM", "name_en": "Zambia", "desc_en": "", "name_ru": "Замбия", "desc_ru": "" }, { "mask": "+263-#-######", "cc": "ZW", "name_en": "Zimbabwe", "desc_en": "", "name_ru": "Зимбабве", "desc_ru": "" }, { "mask": "+1(###)###-####", "cc": ["US", "CA"], "name_en": "USA and Canada", "desc_en": "", "name_ru": "США и Канада", "desc_ru": "" } ] AdminLTE/plugins/input-mask/jquery.inputmask.date.extensions.js 0000644 00000054436 15002261751 0020726 0 ustar 00 /* Input Mask plugin extensions http://github.com/RobinHerbots/jquery.inputmask Copyright (c) 2010 - 2014 Robin Herbots Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) Version: 0.0.0 Optional extensions on the jquery.inputmask base */ (function ($) { //date & time aliases $.extend($.inputmask.defaults.definitions, { 'h': { //hours validator: "[01][0-9]|2[0-3]", cardinality: 2, prevalidator: [{ validator: "[0-2]", cardinality: 1 }] }, 's': { //seconds || minutes validator: "[0-5][0-9]", cardinality: 2, prevalidator: [{ validator: "[0-5]", cardinality: 1 }] }, 'd': { //basic day validator: "0[1-9]|[12][0-9]|3[01]", cardinality: 2, prevalidator: [{ validator: "[0-3]", cardinality: 1 }] }, 'm': { //basic month validator: "0[1-9]|1[012]", cardinality: 2, prevalidator: [{ validator: "[01]", cardinality: 1 }] }, 'y': { //basic year validator: "(19|20)\\d{2}", cardinality: 4, prevalidator: [ { validator: "[12]", cardinality: 1 }, { validator: "(19|20)", cardinality: 2 }, { validator: "(19|20)\\d", cardinality: 3 } ] } }); $.extend($.inputmask.defaults.aliases, { 'dd/mm/yyyy': { mask: "1/2/y", placeholder: "dd/mm/yyyy", regex: { val1pre: new RegExp("[0-3]"), //daypre val1: new RegExp("0[1-9]|[12][0-9]|3[01]"), //day val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|[12][0-9]|3[01])" + escapedSeparator + "[01])"); }, //monthpre val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|[12][0-9])" + escapedSeparator + "(0[1-9]|1[012]))|(30" + escapedSeparator + "(0[13-9]|1[012]))|(31" + escapedSeparator + "(0[13578]|1[02]))"); }//month }, leapday: "29/02/", separator: '/', yearrange: { minyear: 1900, maxyear: 2099 }, isInYearRange: function (chrs, minyear, maxyear) { var enteredyear = parseInt(chrs.concat(minyear.toString().slice(chrs.length))); var enteredyear2 = parseInt(chrs.concat(maxyear.toString().slice(chrs.length))); return (enteredyear != NaN ? minyear <= enteredyear && enteredyear <= maxyear : false) || (enteredyear2 != NaN ? minyear <= enteredyear2 && enteredyear2 <= maxyear : false); }, determinebaseyear: function (minyear, maxyear, hint) { var currentyear = (new Date()).getFullYear(); if (minyear > currentyear) return minyear; if (maxyear < currentyear) { var maxYearPrefix = maxyear.toString().slice(0, 2); var maxYearPostfix = maxyear.toString().slice(2, 4); while (maxyear < maxYearPrefix + hint) { maxYearPrefix--; } var maxxYear = maxYearPrefix + maxYearPostfix; return minyear > maxxYear ? minyear : maxxYear; } return currentyear; }, onKeyUp: function (e, buffer, opts) { var $input = $(this); if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { var today = new Date(); $input.val(today.getDate().toString() + (today.getMonth() + 1).toString() + today.getFullYear().toString()); } }, definitions: { '1': { //val1 ~ day or month validator: function (chrs, buffer, pos, strict, opts) { var isValid = opts.regex.val1.test(chrs); if (!strict && !isValid) { if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { isValid = opts.regex.val1.test("0" + chrs.charAt(0)); if (isValid) { buffer[pos - 1] = "0"; return { "pos": pos, "c": chrs.charAt(0) }; } } } return isValid; }, cardinality: 2, prevalidator: [{ validator: function (chrs, buffer, pos, strict, opts) { var isValid = opts.regex.val1pre.test(chrs); if (!strict && !isValid) { isValid = opts.regex.val1.test("0" + chrs); if (isValid) { buffer[pos] = "0"; pos++; return { "pos": pos }; } } return isValid; }, cardinality: 1 }] }, '2': { //val2 ~ day or month validator: function (chrs, buffer, pos, strict, opts) { var frontValue = buffer.join('').substr(0, 3); if (frontValue.indexOf(opts.placeholder[0]) != -1) frontValue = "01" + opts.separator; var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); if (!strict && !isValid) { if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)); if (isValid) { buffer[pos - 1] = "0"; return { "pos": pos, "c": chrs.charAt(0) }; } } } return isValid; }, cardinality: 2, prevalidator: [{ validator: function (chrs, buffer, pos, strict, opts) { var frontValue = buffer.join('').substr(0, 3); if (frontValue.indexOf(opts.placeholder[0]) != -1) frontValue = "01" + opts.separator; var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs); if (!strict && !isValid) { isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs); if (isValid) { buffer[pos] = "0"; pos++; return { "pos": pos }; } } return isValid; }, cardinality: 1 }] }, 'y': { //year validator: function (chrs, buffer, pos, strict, opts) { if (opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { var dayMonthValue = buffer.join('').substr(0, 6); if (dayMonthValue != opts.leapday) return true; else { var year = parseInt(chrs, 10);//detect leap year if (year % 4 === 0) if (year % 100 === 0) if (year % 400 === 0) return true; else return false; else return true; else return false; } } else return false; }, cardinality: 4, prevalidator: [ { validator: function (chrs, buffer, pos, strict, opts) { var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); if (!strict && !isValid) { var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 1); isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear); if (isValid) { buffer[pos++] = yearPrefix[0]; return { "pos": pos }; } yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs + "0").toString().slice(0, 2); isValid = opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear); if (isValid) { buffer[pos++] = yearPrefix[0]; buffer[pos++] = yearPrefix[1]; return { "pos": pos }; } } return isValid; }, cardinality: 1 }, { validator: function (chrs, buffer, pos, strict, opts) { var isValid = opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); if (!strict && !isValid) { var yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); isValid = opts.isInYearRange(chrs[0] + yearPrefix[1] + chrs[1], opts.yearrange.minyear, opts.yearrange.maxyear); if (isValid) { buffer[pos++] = yearPrefix[1]; return { "pos": pos }; } yearPrefix = opts.determinebaseyear(opts.yearrange.minyear, opts.yearrange.maxyear, chrs).toString().slice(0, 2); if (opts.isInYearRange(yearPrefix + chrs, opts.yearrange.minyear, opts.yearrange.maxyear)) { var dayMonthValue = buffer.join('').substr(0, 6); if (dayMonthValue != opts.leapday) isValid = true; else { var year = parseInt(chrs, 10);//detect leap year if (year % 4 === 0) if (year % 100 === 0) if (year % 400 === 0) isValid = true; else isValid = false; else isValid = true; else isValid = false; } } else isValid = false; if (isValid) { buffer[pos - 1] = yearPrefix[0]; buffer[pos++] = yearPrefix[1]; buffer[pos++] = chrs[0]; return { "pos": pos }; } } return isValid; }, cardinality: 2 }, { validator: function (chrs, buffer, pos, strict, opts) { return opts.isInYearRange(chrs, opts.yearrange.minyear, opts.yearrange.maxyear); }, cardinality: 3 } ] } }, insertMode: false, autoUnmask: false }, 'mm/dd/yyyy': { placeholder: "mm/dd/yyyy", alias: "dd/mm/yyyy", //reuse functionality of dd/mm/yyyy alias regex: { val2pre: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[13-9]|1[012])" + escapedSeparator + "[0-3])|(02" + escapedSeparator + "[0-2])"); }, //daypre val2: function (separator) { var escapedSeparator = $.inputmask.escapeRegex.call(this, separator); return new RegExp("((0[1-9]|1[012])" + escapedSeparator + "(0[1-9]|[12][0-9]))|((0[13-9]|1[012])" + escapedSeparator + "30)|((0[13578]|1[02])" + escapedSeparator + "31)"); }, //day val1pre: new RegExp("[01]"), //monthpre val1: new RegExp("0[1-9]|1[012]") //month }, leapday: "02/29/", onKeyUp: function (e, buffer, opts) { var $input = $(this); if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { var today = new Date(); $input.val((today.getMonth() + 1).toString() + today.getDate().toString() + today.getFullYear().toString()); } } }, 'yyyy/mm/dd': { mask: "y/1/2", placeholder: "yyyy/mm/dd", alias: "mm/dd/yyyy", leapday: "/02/29", onKeyUp: function (e, buffer, opts) { var $input = $(this); if (e.ctrlKey && e.keyCode == opts.keyCode.RIGHT) { var today = new Date(); $input.val(today.getFullYear().toString() + (today.getMonth() + 1).toString() + today.getDate().toString()); } }, definitions: { '2': { //val2 ~ day or month validator: function (chrs, buffer, pos, strict, opts) { var frontValue = buffer.join('').substr(5, 3); if (frontValue.indexOf(opts.placeholder[5]) != -1) frontValue = "01" + opts.separator; var isValid = opts.regex.val2(opts.separator).test(frontValue + chrs); if (!strict && !isValid) { if (chrs.charAt(1) == opts.separator || "-./".indexOf(chrs.charAt(1)) != -1) { isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs.charAt(0)); if (isValid) { buffer[pos - 1] = "0"; return { "pos": pos, "c": chrs.charAt(0) }; } } } //check leap yeap if (isValid) { var dayMonthValue = buffer.join('').substr(4, 4) + chrs; if (dayMonthValue != opts.leapday) return true; else { var year = parseInt(buffer.join('').substr(0, 4), 10); //detect leap year if (year % 4 === 0) if (year % 100 === 0) if (year % 400 === 0) return true; else return false; else return true; else return false; } } return isValid; }, cardinality: 2, prevalidator: [{ validator: function (chrs, buffer, pos, strict, opts) { var frontValue = buffer.join('').substr(5, 3); if (frontValue.indexOf(opts.placeholder[5]) != -1) frontValue = "01" + opts.separator; var isValid = opts.regex.val2pre(opts.separator).test(frontValue + chrs); if (!strict && !isValid) { isValid = opts.regex.val2(opts.separator).test(frontValue + "0" + chrs); if (isValid) { buffer[pos] = "0"; pos++; return { "pos": pos }; } } return isValid; }, cardinality: 1 }] } } }, 'dd.mm.yyyy': { mask: "1.2.y", placeholder: "dd.mm.yyyy", leapday: "29.02.", separator: '.', alias: "dd/mm/yyyy" }, 'dd-mm-yyyy': { mask: "1-2-y", placeholder: "dd-mm-yyyy", leapday: "29-02-", separator: '-', alias: "dd/mm/yyyy" }, 'mm.dd.yyyy': { mask: "1.2.y", placeholder: "mm.dd.yyyy", leapday: "02.29.", separator: '.', alias: "mm/dd/yyyy" }, 'mm-dd-yyyy': { mask: "1-2-y", placeholder: "mm-dd-yyyy", leapday: "02-29-", separator: '-', alias: "mm/dd/yyyy" }, 'yyyy.mm.dd': { mask: "y.1.2", placeholder: "yyyy.mm.dd", leapday: ".02.29", separator: '.', alias: "yyyy/mm/dd" }, 'yyyy-mm-dd': { mask: "y-1-2", placeholder: "yyyy-mm-dd", leapday: "-02-29", separator: '-', alias: "yyyy/mm/dd" }, 'datetime': { mask: "1/2/y h:s", placeholder: "dd/mm/yyyy hh:mm", alias: "dd/mm/yyyy", regex: { hrspre: new RegExp("[012]"), //hours pre hrs24: new RegExp("2[0-9]|1[3-9]"), hrs: new RegExp("[01][0-9]|2[0-3]"), //hours ampm: new RegExp("^[a|p|A|P][m|M]") }, timeseparator: ':', hourFormat: "24", // or 12 definitions: { 'h': { //hours validator: function (chrs, buffer, pos, strict, opts) { var isValid = opts.regex.hrs.test(chrs); if (!strict && !isValid) { if (chrs.charAt(1) == opts.timeseparator || "-.:".indexOf(chrs.charAt(1)) != -1) { isValid = opts.regex.hrs.test("0" + chrs.charAt(0)); if (isValid) { buffer[pos - 1] = "0"; buffer[pos] = chrs.charAt(0); pos++; return { "pos": pos }; } } } if (isValid && opts.hourFormat !== "24" && opts.regex.hrs24.test(chrs)) { var tmp = parseInt(chrs, 10); if (tmp == 24) { buffer[pos + 5] = "a"; buffer[pos + 6] = "m"; } else { buffer[pos + 5] = "p"; buffer[pos + 6] = "m"; } tmp = tmp - 12; if (tmp < 10) { buffer[pos] = tmp.toString(); buffer[pos - 1] = "0"; } else { buffer[pos] = tmp.toString().charAt(1); buffer[pos - 1] = tmp.toString().charAt(0); } return { "pos": pos, "c": buffer[pos] }; } return isValid; }, cardinality: 2, prevalidator: [{ validator: function (chrs, buffer, pos, strict, opts) { var isValid = opts.regex.hrspre.test(chrs); if (!strict && !isValid) { isValid = opts.regex.hrs.test("0" + chrs); if (isValid) { buffer[pos] = "0"; pos++; return { "pos": pos }; } } return isValid; }, cardinality: 1 }] }, 't': { //am/pm validator: function (chrs, buffer, pos, strict, opts) { return opts.regex.ampm.test(chrs + "m"); }, casing: "lower", cardinality: 1 } }, insertMode: false, autoUnmask: false }, 'datetime12': { mask: "1/2/y h:s t\\m", placeholder: "dd/mm/yyyy hh:mm xm", alias: "datetime", hourFormat: "12" }, 'hh:mm t': { mask: "h:s t\\m", placeholder: "hh:mm xm", alias: "datetime", hourFormat: "12" }, 'h:s t': { mask: "h:s t\\m", placeholder: "hh:mm xm", alias: "datetime", hourFormat: "12" }, 'hh:mm:ss': { mask: "h:s:s", autoUnmask: false }, 'hh:mm': { mask: "h:s", autoUnmask: false }, 'date': { alias: "dd/mm/yyyy" // "mm/dd/yyyy" }, 'mm/yyyy': { mask: "1/y", placeholder: "mm/yyyy", leapday: "donotuse", separator: '/', alias: "mm/dd/yyyy" } }); })(jQuery); AdminLTE/plugins/input-mask/jquery.inputmask.phone.extensions.js 0000644 00000003050 15002261751 0021104 0 ustar 00 /* Input Mask plugin extensions http://github.com/RobinHerbots/jquery.inputmask Copyright (c) 2010 - 2014 Robin Herbots Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) Version: 0.0.0 Phone extension. When using this extension make sure you specify the correct url to get the masks $(selector).inputmask("phone", { url: "Scripts/jquery.inputmask/phone-codes/phone-codes.json", onKeyValidation: function () { //show some metadata in the console console.log($(this).inputmask("getmetadata")["name_en"]); } }); */ (function ($) { $.extend($.inputmask.defaults.aliases, { 'phone': { url: "phone-codes/phone-codes.json", mask: function (opts) { opts.definitions = { 'p': { validator: function () { return false; }, cardinality: 1 }, '#': { validator: "[0-9]", cardinality: 1 } }; var maskList = []; $.ajax({ url: opts.url, async: false, dataType: 'json', success: function (response) { maskList = response; } }); maskList.splice(0, 0, "+p(ppp)ppp-pppp"); return maskList; } } }); })(jQuery); AdminLTE/plugins/input-mask/jquery.inputmask.js 0000644 00000260653 15002261751 0015614 0 ustar 00 /** * @license Input Mask plugin for jquery * http://github.com/RobinHerbots/jquery.inputmask * Copyright (c) 2010 - 2014 Robin Herbots * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) * Version: 0.0.0 */ (function ($) { if ($.fn.inputmask === undefined) { //helper functions function isInputEventSupported(eventName) { var el = document.createElement('input'), eventName = 'on' + eventName, isSupported = (eventName in el); if (!isSupported) { el.setAttribute(eventName, 'return;'); isSupported = typeof el[eventName] == 'function'; } el = null; return isSupported; } function resolveAlias(aliasStr, options, opts) { var aliasDefinition = opts.aliases[aliasStr]; if (aliasDefinition) { if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts); //alias is another alias $.extend(true, opts, aliasDefinition); //merge alias definition in the options $.extend(true, opts, options); //reapply extra given options return true; } return false; } function generateMaskSets(opts) { var ms = []; var genmasks = []; //used to keep track of the masks that where processed, to avoid duplicates function getMaskTemplate(mask) { if (opts.numericInput) { mask = mask.split('').reverse().join(''); } var escaped = false, outCount = 0, greedy = opts.greedy, repeat = opts.repeat; if (repeat == "*") greedy = false; //if (greedy == true && opts.placeholder == "") opts.placeholder = " "; if (mask.length == 1 && greedy == false && repeat != 0) { opts.placeholder = ""; } //hide placeholder with single non-greedy mask var singleMask = $.map(mask.split(""), function (element, index) { var outElem = []; if (element == opts.escapeChar) { escaped = true; } else if ((element != opts.optionalmarker.start && element != opts.optionalmarker.end) || escaped) { var maskdef = opts.definitions[element]; if (maskdef && !escaped) { for (var i = 0; i < maskdef.cardinality; i++) { outElem.push(opts.placeholder.charAt((outCount + i) % opts.placeholder.length)); } } else { outElem.push(element); escaped = false; } outCount += outElem.length; return outElem; } }); //allocate repetitions var repeatedMask = singleMask.slice(); for (var i = 1; i < repeat && greedy; i++) { repeatedMask = repeatedMask.concat(singleMask.slice()); } return { "mask": repeatedMask, "repeat": repeat, "greedy": greedy }; } //test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol} function getTestingChain(mask) { if (opts.numericInput) { mask = mask.split('').reverse().join(''); } var isOptional = false, escaped = false; var newBlockMarker = false; //indicates wheter the begin/ending of a block should be indicated return $.map(mask.split(""), function (element, index) { var outElem = []; if (element == opts.escapeChar) { escaped = true; } else if (element == opts.optionalmarker.start && !escaped) { isOptional = true; newBlockMarker = true; } else if (element == opts.optionalmarker.end && !escaped) { isOptional = false; newBlockMarker = true; } else { var maskdef = opts.definitions[element]; if (maskdef && !escaped) { var prevalidators = maskdef["prevalidator"], prevalidatorsL = prevalidators ? prevalidators.length : 0; for (var i = 1; i < maskdef.cardinality; i++) { var prevalidator = prevalidatorsL >= i ? prevalidators[i - 1] : [], validator = prevalidator["validator"], cardinality = prevalidator["cardinality"]; outElem.push({ fn: validator ? typeof validator == 'string' ? new RegExp(validator) : new function () { this.test = validator; } : new RegExp("."), cardinality: cardinality ? cardinality : 1, optionality: isOptional, newBlockMarker: isOptional == true ? newBlockMarker : false, offset: 0, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element }); if (isOptional == true) //reset newBlockMarker newBlockMarker = false; } outElem.push({ fn: maskdef.validator ? typeof maskdef.validator == 'string' ? new RegExp(maskdef.validator) : new function () { this.test = maskdef.validator; } : new RegExp("."), cardinality: maskdef.cardinality, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: maskdef["casing"], def: maskdef["definitionSymbol"] || element }); } else { outElem.push({ fn: null, cardinality: 0, optionality: isOptional, newBlockMarker: newBlockMarker, offset: 0, casing: null, def: element }); escaped = false; } //reset newBlockMarker newBlockMarker = false; return outElem; } }); } function markOptional(maskPart) { //needed for the clearOptionalTail functionality return opts.optionalmarker.start + maskPart + opts.optionalmarker.end; } function splitFirstOptionalEndPart(maskPart) { var optionalStartMarkers = 0, optionalEndMarkers = 0, mpl = maskPart.length; for (var i = 0; i < mpl; i++) { if (maskPart.charAt(i) == opts.optionalmarker.start) { optionalStartMarkers++; } if (maskPart.charAt(i) == opts.optionalmarker.end) { optionalEndMarkers++; } if (optionalStartMarkers > 0 && optionalStartMarkers == optionalEndMarkers) break; } var maskParts = [maskPart.substring(0, i)]; if (i < mpl) { maskParts.push(maskPart.substring(i + 1, mpl)); } return maskParts; } function splitFirstOptionalStartPart(maskPart) { var mpl = maskPart.length; for (var i = 0; i < mpl; i++) { if (maskPart.charAt(i) == opts.optionalmarker.start) { break; } } var maskParts = [maskPart.substring(0, i)]; if (i < mpl) { maskParts.push(maskPart.substring(i + 1, mpl)); } return maskParts; } function generateMask(maskPrefix, maskPart, metadata) { var maskParts = splitFirstOptionalEndPart(maskPart); var newMask, maskTemplate; var masks = splitFirstOptionalStartPart(maskParts[0]); if (masks.length > 1) { newMask = maskPrefix + masks[0] + markOptional(masks[1]) + (maskParts.length > 1 ? maskParts[1] : ""); if ($.inArray(newMask, genmasks) == -1 && newMask != "") { genmasks.push(newMask); maskTemplate = getMaskTemplate(newMask); ms.push({ "mask": newMask, "_buffer": maskTemplate["mask"], "buffer": maskTemplate["mask"].slice(), "tests": getTestingChain(newMask), "lastValidPosition": -1, "greedy": maskTemplate["greedy"], "repeat": maskTemplate["repeat"], "metadata": metadata }); } newMask = maskPrefix + masks[0] + (maskParts.length > 1 ? maskParts[1] : ""); if ($.inArray(newMask, genmasks) == -1 && newMask != "") { genmasks.push(newMask); maskTemplate = getMaskTemplate(newMask); ms.push({ "mask": newMask, "_buffer": maskTemplate["mask"], "buffer": maskTemplate["mask"].slice(), "tests": getTestingChain(newMask), "lastValidPosition": -1, "greedy": maskTemplate["greedy"], "repeat": maskTemplate["repeat"], "metadata": metadata }); } if (splitFirstOptionalStartPart(masks[1]).length > 1) { //optional contains another optional generateMask(maskPrefix + masks[0], masks[1] + maskParts[1], metadata); } if (maskParts.length > 1 && splitFirstOptionalStartPart(maskParts[1]).length > 1) { generateMask(maskPrefix + masks[0] + markOptional(masks[1]), maskParts[1], metadata); generateMask(maskPrefix + masks[0], maskParts[1], metadata); } } else { newMask = maskPrefix + maskParts; if ($.inArray(newMask, genmasks) == -1 && newMask != "") { genmasks.push(newMask); maskTemplate = getMaskTemplate(newMask); ms.push({ "mask": newMask, "_buffer": maskTemplate["mask"], "buffer": maskTemplate["mask"].slice(), "tests": getTestingChain(newMask), "lastValidPosition": -1, "greedy": maskTemplate["greedy"], "repeat": maskTemplate["repeat"], "metadata": metadata }); } } } if ($.isFunction(opts.mask)) { //allow mask to be a preprocessing fn - should return a valid mask opts.mask = opts.mask.call(this, opts); } if ($.isArray(opts.mask)) { $.each(opts.mask, function (ndx, msk) { if (msk["mask"] != undefined) { generateMask("", msk["mask"].toString(), msk); } else generateMask("", msk.toString()); }); } else generateMask("", opts.mask.toString()); return opts.greedy ? ms : ms.sort(function (a, b) { return a["mask"].length - b["mask"].length; }); } var msie10 = navigator.userAgent.match(new RegExp("msie 10", "i")) !== null, iphone = navigator.userAgent.match(new RegExp("iphone", "i")) !== null, android = navigator.userAgent.match(new RegExp("android.*safari.*", "i")) !== null, androidchrome = navigator.userAgent.match(new RegExp("android.*chrome.*", "i")) !== null, pasteEvent = isInputEventSupported('paste') ? 'paste' : isInputEventSupported('input') ? 'input' : "propertychange"; //masking scope //actionObj definition see below function maskScope(masksets, activeMasksetIndex, opts, actionObj) { var isRTL = false, valueOnFocus = getActiveBuffer().join(''), $el, chromeValueOnInput, skipKeyPressEvent = false, //Safari 5.1.x - modal dialog fires keypress twice workaround skipInputEvent = false, //skip when triggered from within inputmask ignorable = false; //maskset helperfunctions function getActiveMaskSet() { return masksets[activeMasksetIndex]; } function getActiveTests() { return getActiveMaskSet()['tests']; } function getActiveBufferTemplate() { return getActiveMaskSet()['_buffer']; } function getActiveBuffer() { return getActiveMaskSet()['buffer']; } function isValid(pos, c, strict) { //strict true ~ no correction or autofill strict = strict === true; //always set a value to strict to prevent possible strange behavior in the extensions function _isValid(position, activeMaskset, c, strict) { var testPos = determineTestPosition(position), loopend = c ? 1 : 0, chrs = '', buffer = activeMaskset["buffer"]; for (var i = activeMaskset['tests'][testPos].cardinality; i > loopend; i--) { chrs += getBufferElement(buffer, testPos - (i - 1)); } if (c) { chrs += c; } //return is false or a json object => { pos: ??, c: ??} or true return activeMaskset['tests'][testPos].fn != null ? activeMaskset['tests'][testPos].fn.test(chrs, buffer, position, strict, opts) : (c == getBufferElement(activeMaskset['_buffer'], position, true) || c == opts.skipOptionalPartCharacter) ? { "refresh": true, c: getBufferElement(activeMaskset['_buffer'], position, true), pos: position } : false; } function PostProcessResults(maskForwards, results) { var hasValidActual = false; $.each(results, function (ndx, rslt) { hasValidActual = $.inArray(rslt["activeMasksetIndex"], maskForwards) == -1 && rslt["result"] !== false; if (hasValidActual) return false; }); if (hasValidActual) { //strip maskforwards results = $.map(results, function (rslt, ndx) { if ($.inArray(rslt["activeMasksetIndex"], maskForwards) == -1) { return rslt; } else { masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = actualLVP; } }); } else { //keep maskforwards with the least forward var lowestPos = -1, lowestIndex = -1, rsltValid; $.each(results, function (ndx, rslt) { if ($.inArray(rslt["activeMasksetIndex"], maskForwards) != -1 && rslt["result"] !== false & (lowestPos == -1 || lowestPos > rslt["result"]["pos"])) { lowestPos = rslt["result"]["pos"]; lowestIndex = rslt["activeMasksetIndex"]; } }); results = $.map(results, function (rslt, ndx) { if ($.inArray(rslt["activeMasksetIndex"], maskForwards) != -1) { if (rslt["result"]["pos"] == lowestPos) { return rslt; } else if (rslt["result"] !== false) { for (var i = pos; i < lowestPos; i++) { rsltValid = _isValid(i, masksets[rslt["activeMasksetIndex"]], masksets[lowestIndex]["buffer"][i], true); if (rsltValid === false) { masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = lowestPos - 1; break; } else { setBufferElement(masksets[rslt["activeMasksetIndex"]]["buffer"], i, masksets[lowestIndex]["buffer"][i], true); masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = i; } } //also check check for the lowestpos with the new input rsltValid = _isValid(lowestPos, masksets[rslt["activeMasksetIndex"]], c, true); if (rsltValid !== false) { setBufferElement(masksets[rslt["activeMasksetIndex"]]["buffer"], lowestPos, c, true); masksets[rslt["activeMasksetIndex"]]["lastValidPosition"] = lowestPos; } //console.log("ndx " + rslt["activeMasksetIndex"] + " validate " + masksets[rslt["activeMasksetIndex"]]["buffer"].join('') + " lv " + masksets[rslt["activeMasksetIndex"]]['lastValidPosition']); return rslt; } } }); } return results; } if (strict) { var result = _isValid(pos, getActiveMaskSet(), c, strict); //only check validity in current mask when validating strict if (result === true) { result = { "pos": pos }; //always take a possible corrected maskposition into account } return result; } var results = [], result = false, currentActiveMasksetIndex = activeMasksetIndex, actualBuffer = getActiveBuffer().slice(), actualLVP = getActiveMaskSet()["lastValidPosition"], actualPrevious = seekPrevious(pos), maskForwards = []; $.each(masksets, function (index, value) { if (typeof (value) == "object") { activeMasksetIndex = index; var maskPos = pos; var lvp = getActiveMaskSet()['lastValidPosition'], rsltValid; if (lvp == actualLVP) { if ((maskPos - actualLVP) > 1) { for (var i = lvp == -1 ? 0 : lvp; i < maskPos; i++) { rsltValid = _isValid(i, getActiveMaskSet(), actualBuffer[i], true); if (rsltValid === false) { break; } else { setBufferElement(getActiveBuffer(), i, actualBuffer[i], true); if (rsltValid === true) { rsltValid = { "pos": i }; //always take a possible corrected maskposition into account } var newValidPosition = rsltValid.pos || i; if (getActiveMaskSet()['lastValidPosition'] < newValidPosition) getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid } } } //does the input match on a further position? if (!isMask(maskPos) && !_isValid(maskPos, getActiveMaskSet(), c, strict)) { var maxForward = seekNext(maskPos) - maskPos; for (var fw = 0; fw < maxForward; fw++) { if (_isValid(++maskPos, getActiveMaskSet(), c, strict) !== false) break; } maskForwards.push(activeMasksetIndex); //console.log('maskforward ' + activeMasksetIndex + " pos " + pos + " maskPos " + maskPos); } } if (getActiveMaskSet()['lastValidPosition'] >= actualLVP || activeMasksetIndex == currentActiveMasksetIndex) { if (maskPos >= 0 && maskPos < getMaskLength()) { result = _isValid(maskPos, getActiveMaskSet(), c, strict); if (result !== false) { if (result === true) { result = { "pos": maskPos }; //always take a possible corrected maskposition into account } var newValidPosition = result.pos || maskPos; if (getActiveMaskSet()['lastValidPosition'] < newValidPosition) getActiveMaskSet()['lastValidPosition'] = newValidPosition; //set new position from isValid } //console.log("pos " + pos + " ndx " + activeMasksetIndex + " validate " + getActiveBuffer().join('') + " lv " + getActiveMaskSet()['lastValidPosition']); results.push({ "activeMasksetIndex": index, "result": result }); } } } }); activeMasksetIndex = currentActiveMasksetIndex; //reset activeMasksetIndex return PostProcessResults(maskForwards, results); //return results of the multiple mask validations } function determineActiveMasksetIndex() { var currentMasksetIndex = activeMasksetIndex, highestValid = { "activeMasksetIndex": 0, "lastValidPosition": -1, "next": -1 }; $.each(masksets, function (index, value) { if (typeof (value) == "object") { activeMasksetIndex = index; if (getActiveMaskSet()['lastValidPosition'] > highestValid['lastValidPosition']) { highestValid["activeMasksetIndex"] = index; highestValid["lastValidPosition"] = getActiveMaskSet()['lastValidPosition']; highestValid["next"] = seekNext(getActiveMaskSet()['lastValidPosition']); } else if (getActiveMaskSet()['lastValidPosition'] == highestValid['lastValidPosition'] && (highestValid['next'] == -1 || highestValid['next'] > seekNext(getActiveMaskSet()['lastValidPosition']))) { highestValid["activeMasksetIndex"] = index; highestValid["lastValidPosition"] = getActiveMaskSet()['lastValidPosition']; highestValid["next"] = seekNext(getActiveMaskSet()['lastValidPosition']); } } }); activeMasksetIndex = highestValid["lastValidPosition"] != -1 && masksets[currentMasksetIndex]["lastValidPosition"] == highestValid["lastValidPosition"] ? currentMasksetIndex : highestValid["activeMasksetIndex"]; if (currentMasksetIndex != activeMasksetIndex) { clearBuffer(getActiveBuffer(), seekNext(highestValid["lastValidPosition"]), getMaskLength()); getActiveMaskSet()["writeOutBuffer"] = true; } $el.data('_inputmask')['activeMasksetIndex'] = activeMasksetIndex; //store the activeMasksetIndex } function isMask(pos) { var testPos = determineTestPosition(pos); var test = getActiveTests()[testPos]; return test != undefined ? test.fn : false; } function determineTestPosition(pos) { return pos % getActiveTests().length; } function getMaskLength() { return opts.getMaskLength(getActiveBufferTemplate(), getActiveMaskSet()['greedy'], getActiveMaskSet()['repeat'], getActiveBuffer(), opts); } //pos: from position function seekNext(pos) { var maskL = getMaskLength(); if (pos >= maskL) return maskL; var position = pos; while (++position < maskL && !isMask(position)) { } return position; } //pos: from position function seekPrevious(pos) { var position = pos; if (position <= 0) return 0; while (--position > 0 && !isMask(position)) { } return position; } function setBufferElement(buffer, position, element, autoPrepare) { if (autoPrepare) position = prepareBuffer(buffer, position); var test = getActiveTests()[determineTestPosition(position)]; var elem = element; if (elem != undefined && test != undefined) { switch (test.casing) { case "upper": elem = element.toUpperCase(); break; case "lower": elem = element.toLowerCase(); break; } } buffer[position] = elem; } function getBufferElement(buffer, position, autoPrepare) { if (autoPrepare) position = prepareBuffer(buffer, position); return buffer[position]; } //needed to handle the non-greedy mask repetitions function prepareBuffer(buffer, position) { var j; while (buffer[position] == undefined && buffer.length < getMaskLength()) { j = 0; while (getActiveBufferTemplate()[j] !== undefined) { //add a new buffer buffer.push(getActiveBufferTemplate()[j++]); } } return position; } function writeBuffer(input, buffer, caretPos) { input._valueSet(buffer.join('')); if (caretPos != undefined) { caret(input, caretPos); } } function clearBuffer(buffer, start, end, stripNomasks) { for (var i = start, maskL = getMaskLength() ; i < end && i < maskL; i++) { if (stripNomasks === true) { if (!isMask(i)) setBufferElement(buffer, i, ""); } else setBufferElement(buffer, i, getBufferElement(getActiveBufferTemplate().slice(), i, true)); } } function setReTargetPlaceHolder(buffer, pos) { var testPos = determineTestPosition(pos); setBufferElement(buffer, pos, getBufferElement(getActiveBufferTemplate(), testPos)); } function getPlaceHolder(pos) { return opts.placeholder.charAt(pos % opts.placeholder.length); } function checkVal(input, writeOut, strict, nptvl, intelliCheck) { var inputValue = nptvl != undefined ? nptvl.slice() : truncateInput(input._valueGet()).split(''); $.each(masksets, function (ndx, ms) { if (typeof (ms) == "object") { ms["buffer"] = ms["_buffer"].slice(); ms["lastValidPosition"] = -1; ms["p"] = -1; } }); if (strict !== true) activeMasksetIndex = 0; if (writeOut) input._valueSet(""); //initial clear var ml = getMaskLength(); $.each(inputValue, function (ndx, charCode) { if (intelliCheck === true) { var p = getActiveMaskSet()["p"], lvp = p == -1 ? p : seekPrevious(p), pos = lvp == -1 ? ndx : seekNext(lvp); if ($.inArray(charCode, getActiveBufferTemplate().slice(lvp + 1, pos)) == -1) { keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx); } } else { keypressEvent.call(input, undefined, true, charCode.charCodeAt(0), writeOut, strict, ndx); } }); if (strict === true && getActiveMaskSet()["p"] != -1) { getActiveMaskSet()["lastValidPosition"] = seekPrevious(getActiveMaskSet()["p"]); } } function escapeRegex(str) { return $.inputmask.escapeRegex.call(this, str); } function truncateInput(inputValue) { return inputValue.replace(new RegExp("(" + escapeRegex(getActiveBufferTemplate().join('')) + ")*$"), ""); } function clearOptionalTail(input) { var buffer = getActiveBuffer(), tmpBuffer = buffer.slice(), testPos, pos; for (var pos = tmpBuffer.length - 1; pos >= 0; pos--) { var testPos = determineTestPosition(pos); if (getActiveTests()[testPos].optionality) { if (!isMask(pos) || !isValid(pos, buffer[pos], true)) tmpBuffer.pop(); else break; } else break; } writeBuffer(input, tmpBuffer); } function unmaskedvalue($input, skipDatepickerCheck) { if (getActiveTests() && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) { //checkVal(input, false, true); var umValue = $.map(getActiveBuffer(), function (element, index) { return isMask(index) && isValid(index, element, true) ? element : null; }); var unmaskedValue = (isRTL ? umValue.reverse() : umValue).join(''); return opts.onUnMask != undefined ? opts.onUnMask.call(this, getActiveBuffer().join(''), unmaskedValue) : unmaskedValue; } else { return $input[0]._valueGet(); } } function TranslatePosition(pos) { if (isRTL && typeof pos == 'number' && (!opts.greedy || opts.placeholder != "")) { var bffrLght = getActiveBuffer().length; pos = bffrLght - pos; } return pos; } function caret(input, begin, end) { var npt = input.jquery && input.length > 0 ? input[0] : input, range; if (typeof begin == 'number') { begin = TranslatePosition(begin); end = TranslatePosition(end); if (!$(input).is(':visible')) { return; } end = (typeof end == 'number') ? end : begin; npt.scrollLeft = npt.scrollWidth; if (opts.insertMode == false && begin == end) end++; //set visualization for insert/overwrite mode if (npt.setSelectionRange) { npt.selectionStart = begin; npt.selectionEnd = android ? begin : end; } else if (npt.createTextRange) { range = npt.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', begin); range.select(); } } else { if (!$(input).is(':visible')) { return { "begin": 0, "end": 0 }; } if (npt.setSelectionRange) { begin = npt.selectionStart; end = npt.selectionEnd; } else if (document.selection && document.selection.createRange) { range = document.selection.createRange(); begin = 0 - range.duplicate().moveStart('character', -100000); end = begin + range.text.length; } begin = TranslatePosition(begin); end = TranslatePosition(end); return { "begin": begin, "end": end }; } } function isComplete(buffer) { //return true / false / undefined (repeat *) if (opts.repeat == "*") return undefined; var complete = false, highestValidPosition = 0, currentActiveMasksetIndex = activeMasksetIndex; $.each(masksets, function (ndx, ms) { if (typeof (ms) == "object") { activeMasksetIndex = ndx; var aml = seekPrevious(getMaskLength()); if (ms["lastValidPosition"] >= highestValidPosition && ms["lastValidPosition"] == aml) { var msComplete = true; for (var i = 0; i <= aml; i++) { var mask = isMask(i), testPos = determineTestPosition(i); if ((mask && (buffer[i] == undefined || buffer[i] == getPlaceHolder(i))) || (!mask && buffer[i] != getActiveBufferTemplate()[testPos])) { msComplete = false; break; } } complete = complete || msComplete; if (complete) //break loop return false; } highestValidPosition = ms["lastValidPosition"]; } }); activeMasksetIndex = currentActiveMasksetIndex; //reset activeMaskset return complete; } function isSelection(begin, end) { return isRTL ? (begin - end) > 1 || ((begin - end) == 1 && opts.insertMode) : (end - begin) > 1 || ((end - begin) == 1 && opts.insertMode); } //private functions function installEventRuler(npt) { var events = $._data(npt).events; $.each(events, function (eventType, eventHandlers) { $.each(eventHandlers, function (ndx, eventHandler) { if (eventHandler.namespace == "inputmask") { if (eventHandler.type != "setvalue") { var handler = eventHandler.handler; eventHandler.handler = function (e) { if (this.readOnly || this.disabled) e.preventDefault; else return handler.apply(this, arguments); }; } } }); }); } function patchValueProperty(npt) { var valueProperty; if (Object.getOwnPropertyDescriptor) valueProperty = Object.getOwnPropertyDescriptor(npt, "value"); if (valueProperty && valueProperty.get) { if (!npt._valueGet) { var valueGet = valueProperty.get; var valueSet = valueProperty.set; npt._valueGet = function () { return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this); }; npt._valueSet = function (value) { valueSet.call(this, isRTL ? value.split('').reverse().join('') : value); }; Object.defineProperty(npt, "value", { get: function () { var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'], activeMasksetIndex = inputData['activeMasksetIndex']; return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : ''; }, set: function (value) { valueSet.call(this, value); $(this).triggerHandler('setvalue.inputmask'); } }); } } else if (document.__lookupGetter__ && npt.__lookupGetter__("value")) { if (!npt._valueGet) { var valueGet = npt.__lookupGetter__("value"); var valueSet = npt.__lookupSetter__("value"); npt._valueGet = function () { return isRTL ? valueGet.call(this).split('').reverse().join('') : valueGet.call(this); }; npt._valueSet = function (value) { valueSet.call(this, isRTL ? value.split('').reverse().join('') : value); }; npt.__defineGetter__("value", function () { var $self = $(this), inputData = $(this).data('_inputmask'), masksets = inputData['masksets'], activeMasksetIndex = inputData['activeMasksetIndex']; return inputData && inputData['opts'].autoUnmask ? $self.inputmask('unmaskedvalue') : valueGet.call(this) != masksets[activeMasksetIndex]['_buffer'].join('') ? valueGet.call(this) : ''; }); npt.__defineSetter__("value", function (value) { valueSet.call(this, value); $(this).triggerHandler('setvalue.inputmask'); }); } } else { if (!npt._valueGet) { npt._valueGet = function () { return isRTL ? this.value.split('').reverse().join('') : this.value; }; npt._valueSet = function (value) { this.value = isRTL ? value.split('').reverse().join('') : value; }; } if ($.valHooks.text == undefined || $.valHooks.text.inputmaskpatch != true) { var valueGet = $.valHooks.text && $.valHooks.text.get ? $.valHooks.text.get : function (elem) { return elem.value; }; var valueSet = $.valHooks.text && $.valHooks.text.set ? $.valHooks.text.set : function (elem, value) { elem.value = value; return elem; }; jQuery.extend($.valHooks, { text: { get: function (elem) { var $elem = $(elem); if ($elem.data('_inputmask')) { if ($elem.data('_inputmask')['opts'].autoUnmask) return $elem.inputmask('unmaskedvalue'); else { var result = valueGet(elem), inputData = $elem.data('_inputmask'), masksets = inputData['masksets'], activeMasksetIndex = inputData['activeMasksetIndex']; return result != masksets[activeMasksetIndex]['_buffer'].join('') ? result : ''; } } else return valueGet(elem); }, set: function (elem, value) { var $elem = $(elem); var result = valueSet(elem, value); if ($elem.data('_inputmask')) $elem.triggerHandler('setvalue.inputmask'); return result; }, inputmaskpatch: true } }); } } } //shift chars to left from start to end and put c at end position if defined function shiftL(start, end, c, maskJumps) { var buffer = getActiveBuffer(); if (maskJumps !== false) //jumping over nonmask position while (!isMask(start) && start - 1 >= 0) start--; for (var i = start; i < end && i < getMaskLength() ; i++) { if (isMask(i)) { setReTargetPlaceHolder(buffer, i); var j = seekNext(i); var p = getBufferElement(buffer, j); if (p != getPlaceHolder(j)) { if (j < getMaskLength() && isValid(i, p, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) { setBufferElement(buffer, i, p, true); } else { if (isMask(i)) break; } } } else { setReTargetPlaceHolder(buffer, i); } } if (c != undefined) setBufferElement(buffer, seekPrevious(end), c); if (getActiveMaskSet()["greedy"] == false) { var trbuffer = truncateInput(buffer.join('')).split(''); buffer.length = trbuffer.length; for (var i = 0, bl = buffer.length; i < bl; i++) { buffer[i] = trbuffer[i]; } if (buffer.length == 0) getActiveMaskSet()["buffer"] = getActiveBufferTemplate().slice(); } return start; //return the used start position } function shiftR(start, end, c) { var buffer = getActiveBuffer(); if (getBufferElement(buffer, start, true) != getPlaceHolder(start)) { for (var i = seekPrevious(end) ; i > start && i >= 0; i--) { if (isMask(i)) { var j = seekPrevious(i); var t = getBufferElement(buffer, j); if (t != getPlaceHolder(j)) { if (isValid(j, t, true) !== false && getActiveTests()[determineTestPosition(i)].def == getActiveTests()[determineTestPosition(j)].def) { setBufferElement(buffer, i, t, true); setReTargetPlaceHolder(buffer, j); } //else break; } } else setReTargetPlaceHolder(buffer, i); } } if (c != undefined && getBufferElement(buffer, start) == getPlaceHolder(start)) setBufferElement(buffer, start, c); var lengthBefore = buffer.length; if (getActiveMaskSet()["greedy"] == false) { var trbuffer = truncateInput(buffer.join('')).split(''); buffer.length = trbuffer.length; for (var i = 0, bl = buffer.length; i < bl; i++) { buffer[i] = trbuffer[i]; } if (buffer.length == 0) getActiveMaskSet()["buffer"] = getActiveBufferTemplate().slice(); } return end - (lengthBefore - buffer.length); //return new start position } function HandleRemove(input, k, pos) { if (opts.numericInput || isRTL) { switch (k) { case opts.keyCode.BACKSPACE: k = opts.keyCode.DELETE; break; case opts.keyCode.DELETE: k = opts.keyCode.BACKSPACE; break; } if (isRTL) { var pend = pos.end; pos.end = pos.begin; pos.begin = pend; } } var isSelection = true; if (pos.begin == pos.end) { var posBegin = k == opts.keyCode.BACKSPACE ? pos.begin - 1 : pos.begin; if (opts.isNumeric && opts.radixPoint != "" && getActiveBuffer()[posBegin] == opts.radixPoint) { pos.begin = (getActiveBuffer().length - 1 == posBegin) /* radixPoint is latest? delete it */ ? pos.begin : k == opts.keyCode.BACKSPACE ? posBegin : seekNext(posBegin); pos.end = pos.begin; } isSelection = false; if (k == opts.keyCode.BACKSPACE) pos.begin--; else if (k == opts.keyCode.DELETE) pos.end++; } else if (pos.end - pos.begin == 1 && !opts.insertMode) { isSelection = false; if (k == opts.keyCode.BACKSPACE) pos.begin--; } clearBuffer(getActiveBuffer(), pos.begin, pos.end); var ml = getMaskLength(); if (opts.greedy == false) { shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection)); } else { var newpos = pos.begin; for (var i = pos.begin; i < pos.end; i++) { //seeknext to skip placeholders at start in selection if (isMask(i) || !isSelection) newpos = shiftL(pos.begin, ml, undefined, !isRTL && (k == opts.keyCode.BACKSPACE && !isSelection)); } if (!isSelection) pos.begin = newpos; } var firstMaskPos = seekNext(-1); clearBuffer(getActiveBuffer(), pos.begin, pos.end, true); checkVal(input, false, masksets[1] == undefined || firstMaskPos >= pos.end, getActiveBuffer()); if (getActiveMaskSet()['lastValidPosition'] < firstMaskPos) { getActiveMaskSet()["lastValidPosition"] = -1; getActiveMaskSet()["p"] = firstMaskPos; } else { getActiveMaskSet()["p"] = pos.begin; } } function keydownEvent(e) { //Safari 5.1.x - modal dialog fires keypress twice workaround skipKeyPressEvent = false; var input = this, $input = $(input), k = e.keyCode, pos = caret(input); //backspace, delete, and escape get special treatment if (k == opts.keyCode.BACKSPACE || k == opts.keyCode.DELETE || (iphone && k == 127) || e.ctrlKey && k == 88) { //backspace/delete e.preventDefault(); //stop default action but allow propagation if (k == 88) valueOnFocus = getActiveBuffer().join(''); HandleRemove(input, k, pos); determineActiveMasksetIndex(); writeBuffer(input, getActiveBuffer(), getActiveMaskSet()["p"]); if (input._valueGet() == getActiveBufferTemplate().join('')) $input.trigger('cleared'); if (opts.showTooltip) { //update tooltip $input.prop("title", getActiveMaskSet()["mask"]); } } else if (k == opts.keyCode.END || k == opts.keyCode.PAGE_DOWN) { //when END or PAGE_DOWN pressed set position at lastmatch setTimeout(function () { var caretPos = seekNext(getActiveMaskSet()["lastValidPosition"]); if (!opts.insertMode && caretPos == getMaskLength() && !e.shiftKey) caretPos--; caret(input, e.shiftKey ? pos.begin : caretPos, caretPos); }, 0); } else if ((k == opts.keyCode.HOME && !e.shiftKey) || k == opts.keyCode.PAGE_UP) { //Home or page_up caret(input, 0, e.shiftKey ? pos.begin : 0); } else if (k == opts.keyCode.ESCAPE || (k == 90 && e.ctrlKey)) { //escape && undo checkVal(input, true, false, valueOnFocus.split('')); $input.click(); } else if (k == opts.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) { //insert opts.insertMode = !opts.insertMode; caret(input, !opts.insertMode && pos.begin == getMaskLength() ? pos.begin - 1 : pos.begin); } else if (opts.insertMode == false && !e.shiftKey) { if (k == opts.keyCode.RIGHT) { setTimeout(function () { var caretPos = caret(input); caret(input, caretPos.begin); }, 0); } else if (k == opts.keyCode.LEFT) { setTimeout(function () { var caretPos = caret(input); caret(input, caretPos.begin - 1); }, 0); } } var currentCaretPos = caret(input); if (opts.onKeyDown.call(this, e, getActiveBuffer(), opts) === true) //extra stuff to execute on keydown caret(input, currentCaretPos.begin, currentCaretPos.end); ignorable = $.inArray(k, opts.ignorables) != -1; } function keypressEvent(e, checkval, k, writeOut, strict, ndx) { //Safari 5.1.x - modal dialog fires keypress twice workaround if (k == undefined && skipKeyPressEvent) return false; skipKeyPressEvent = true; var input = this, $input = $(input); e = e || window.event; var k = checkval ? k : (e.which || e.charCode || e.keyCode); if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) { return true; } else { if (k) { //special treat the decimal separator if (checkval !== true && k == 46 && e.shiftKey == false && opts.radixPoint == ",") k = 44; var pos, results, result, c = String.fromCharCode(k); if (checkval) { var pcaret = strict ? ndx : getActiveMaskSet()["lastValidPosition"] + 1; pos = { begin: pcaret, end: pcaret }; } else { pos = caret(input); } //should we clear a possible selection?? var isSlctn = isSelection(pos.begin, pos.end), redetermineLVP = false, initialIndex = activeMasksetIndex; if (isSlctn) { activeMasksetIndex = initialIndex; $.each(masksets, function (ndx, lmnt) { //init undobuffer for recovery when not valid if (typeof (lmnt) == "object") { activeMasksetIndex = ndx; getActiveMaskSet()["undoBuffer"] = getActiveBuffer().join(''); } }); HandleRemove(input, opts.keyCode.DELETE, pos); if (!opts.insertMode) { //preserve some space $.each(masksets, function (ndx, lmnt) { if (typeof (lmnt) == "object") { activeMasksetIndex = ndx; shiftR(pos.begin, getMaskLength()); getActiveMaskSet()["lastValidPosition"] = seekNext(getActiveMaskSet()["lastValidPosition"]); } }); } activeMasksetIndex = initialIndex; //restore index } var radixPosition = getActiveBuffer().join('').indexOf(opts.radixPoint); if (opts.isNumeric && checkval !== true && radixPosition != -1) { if (opts.greedy && pos.begin <= radixPosition) { pos.begin = seekPrevious(pos.begin); pos.end = pos.begin; } else if (c == opts.radixPoint) { pos.begin = radixPosition; pos.end = pos.begin; } } var p = pos.begin; results = isValid(p, c, strict); if (strict === true) results = [{ "activeMasksetIndex": activeMasksetIndex, "result": results }]; var minimalForwardPosition = -1; $.each(results, function (index, result) { activeMasksetIndex = result["activeMasksetIndex"]; getActiveMaskSet()["writeOutBuffer"] = true; var np = result["result"]; if (np !== false) { var refresh = false, buffer = getActiveBuffer(); if (np !== true) { refresh = np["refresh"]; //only rewrite buffer from isValid p = np.pos != undefined ? np.pos : p; //set new position from isValid c = np.c != undefined ? np.c : c; //set new char from isValid } if (refresh !== true) { if (opts.insertMode == true) { var lastUnmaskedPosition = getMaskLength(); var bfrClone = buffer.slice(); while (getBufferElement(bfrClone, lastUnmaskedPosition, true) != getPlaceHolder(lastUnmaskedPosition) && lastUnmaskedPosition >= p) { lastUnmaskedPosition = lastUnmaskedPosition == 0 ? -1 : seekPrevious(lastUnmaskedPosition); } if (lastUnmaskedPosition >= p) { shiftR(p, getMaskLength(), c); //shift the lvp if needed var lvp = getActiveMaskSet()["lastValidPosition"], nlvp = seekNext(lvp); if (nlvp != getMaskLength() && lvp >= p && (getBufferElement(getActiveBuffer(), nlvp, true) != getPlaceHolder(nlvp))) { getActiveMaskSet()["lastValidPosition"] = nlvp; } } else getActiveMaskSet()["writeOutBuffer"] = false; } else setBufferElement(buffer, p, c, true); if (minimalForwardPosition == -1 || minimalForwardPosition > seekNext(p)) { minimalForwardPosition = seekNext(p); } } else if (!strict) { var nextPos = p < getMaskLength() ? p + 1 : p; if (minimalForwardPosition == -1 || minimalForwardPosition > nextPos) { minimalForwardPosition = nextPos; } } if (minimalForwardPosition > getActiveMaskSet()["p"]) getActiveMaskSet()["p"] = minimalForwardPosition; //needed for checkval strict } }); if (strict !== true) { activeMasksetIndex = initialIndex; determineActiveMasksetIndex(); } if (writeOut !== false) { $.each(results, function (ndx, rslt) { if (rslt["activeMasksetIndex"] == activeMasksetIndex) { result = rslt; return false; } }); if (result != undefined) { var self = this; setTimeout(function () { opts.onKeyValidation.call(self, result["result"], opts); }, 0); if (getActiveMaskSet()["writeOutBuffer"] && result["result"] !== false) { var buffer = getActiveBuffer(); var newCaretPosition; if (checkval) { newCaretPosition = undefined; } else if (opts.numericInput) { if (p > radixPosition) { newCaretPosition = seekPrevious(minimalForwardPosition); } else if (c == opts.radixPoint) { newCaretPosition = minimalForwardPosition - 1; } else newCaretPosition = seekPrevious(minimalForwardPosition - 1); } else { newCaretPosition = minimalForwardPosition; } writeBuffer(input, buffer, newCaretPosition); if (checkval !== true) { setTimeout(function () { //timeout needed for IE if (isComplete(buffer) === true) $input.trigger("complete"); skipInputEvent = true; $input.trigger("input"); }, 0); } } else if (isSlctn) { getActiveMaskSet()["buffer"] = getActiveMaskSet()["undoBuffer"].split(''); } } } if (opts.showTooltip) { //update tooltip $input.prop("title", getActiveMaskSet()["mask"]); } //needed for IE8 and below if (e) e.preventDefault ? e.preventDefault() : e.returnValue = false; } } } function keyupEvent(e) { var $input = $(this), input = this, k = e.keyCode, buffer = getActiveBuffer(); if (androidchrome && k == opts.keyCode.BACKSPACE) { if (chromeValueOnInput == input._valueGet()) keydownEvent.call(this, e); } opts.onKeyUp.call(this, e, buffer, opts); //extra stuff to execute on keyup if (k == opts.keyCode.TAB && opts.showMaskOnFocus) { if ($input.hasClass('focus.inputmask') && input._valueGet().length == 0) { buffer = getActiveBufferTemplate().slice(); writeBuffer(input, buffer); caret(input, 0); valueOnFocus = getActiveBuffer().join(''); } else { writeBuffer(input, buffer); if (buffer.join('') == getActiveBufferTemplate().join('') && $.inArray(opts.radixPoint, buffer) != -1) { caret(input, TranslatePosition(0)); $input.click(); } else caret(input, TranslatePosition(0), TranslatePosition(getMaskLength())); } } } function inputEvent(e) { if (skipInputEvent === true) { skipInputEvent = false; return true; } var input = this, $input = $(input); chromeValueOnInput = getActiveBuffer().join(''); checkVal(input, false, false); writeBuffer(input, getActiveBuffer()); if (isComplete(getActiveBuffer()) === true) $input.trigger("complete"); $input.click(); } function mask(el) { $el = $(el); if ($el.is(":input")) { //store tests & original buffer in the input element - used to get the unmasked value $el.data('_inputmask', { 'masksets': masksets, 'activeMasksetIndex': activeMasksetIndex, 'opts': opts, 'isRTL': false }); //show tooltip if (opts.showTooltip) { $el.prop("title", getActiveMaskSet()["mask"]); } //correct greedy setting if needed getActiveMaskSet()['greedy'] = getActiveMaskSet()['greedy'] ? getActiveMaskSet()['greedy'] : getActiveMaskSet()['repeat'] == 0; //handle maxlength attribute if ($el.attr("maxLength") != null) //only when the attribute is set { var maxLength = $el.prop('maxLength'); if (maxLength > -1) { //handle *-repeat $.each(masksets, function (ndx, ms) { if (typeof (ms) == "object") { if (ms["repeat"] == "*") { ms["repeat"] = maxLength; } } }); } if (getMaskLength() >= maxLength && maxLength > -1) { //FF sets no defined max length to -1 if (maxLength < getActiveBufferTemplate().length) getActiveBufferTemplate().length = maxLength; if (getActiveMaskSet()['greedy'] == false) { getActiveMaskSet()['repeat'] = Math.round(maxLength / getActiveBufferTemplate().length); } $el.prop('maxLength', getMaskLength() * 2); } } patchValueProperty(el); if (opts.numericInput) opts.isNumeric = opts.numericInput; if (el.dir == "rtl" || (opts.numericInput && opts.rightAlignNumerics) || (opts.isNumeric && opts.rightAlignNumerics)) $el.css("text-align", "right"); if (el.dir == "rtl" || opts.numericInput) { el.dir = "ltr"; $el.removeAttr("dir"); var inputData = $el.data('_inputmask'); inputData['isRTL'] = true; $el.data('_inputmask', inputData); isRTL = true; } //unbind all events - to make sure that no other mask will interfere when re-masking $el.unbind(".inputmask"); $el.removeClass('focus.inputmask'); //bind events $el.closest('form').bind("submit", function () { //trigger change on submit if any if (valueOnFocus != getActiveBuffer().join('')) { $el.change(); } }).bind('reset', function () { setTimeout(function () { $el.trigger("setvalue"); }, 0); }); $el.bind("mouseenter.inputmask", function () { var $input = $(this), input = this; if (!$input.hasClass('focus.inputmask') && opts.showMaskOnHover) { if (input._valueGet() != getActiveBuffer().join('')) { writeBuffer(input, getActiveBuffer()); } } }).bind("blur.inputmask", function () { var $input = $(this), input = this, nptValue = input._valueGet(), buffer = getActiveBuffer(); $input.removeClass('focus.inputmask'); if (valueOnFocus != getActiveBuffer().join('')) { $input.change(); } if (opts.clearMaskOnLostFocus && nptValue != '') { if (nptValue == getActiveBufferTemplate().join('')) input._valueSet(''); else { //clearout optional tail of the mask clearOptionalTail(input); } } if (isComplete(buffer) === false) { $input.trigger("incomplete"); if (opts.clearIncomplete) { $.each(masksets, function (ndx, ms) { if (typeof (ms) == "object") { ms["buffer"] = ms["_buffer"].slice(); ms["lastValidPosition"] = -1; } }); activeMasksetIndex = 0; if (opts.clearMaskOnLostFocus) input._valueSet(''); else { buffer = getActiveBufferTemplate().slice(); writeBuffer(input, buffer); } } } }).bind("focus.inputmask", function () { var $input = $(this), input = this, nptValue = input._valueGet(); if (opts.showMaskOnFocus && !$input.hasClass('focus.inputmask') && (!opts.showMaskOnHover || (opts.showMaskOnHover && nptValue == ''))) { if (input._valueGet() != getActiveBuffer().join('')) { writeBuffer(input, getActiveBuffer(), seekNext(getActiveMaskSet()["lastValidPosition"])); } } $input.addClass('focus.inputmask'); valueOnFocus = getActiveBuffer().join(''); }).bind("mouseleave.inputmask", function () { var $input = $(this), input = this; if (opts.clearMaskOnLostFocus) { if (!$input.hasClass('focus.inputmask') && input._valueGet() != $input.attr("placeholder")) { if (input._valueGet() == getActiveBufferTemplate().join('') || input._valueGet() == '') input._valueSet(''); else { //clearout optional tail of the mask clearOptionalTail(input); } } } }).bind("click.inputmask", function () { var input = this; setTimeout(function () { var selectedCaret = caret(input), buffer = getActiveBuffer(); if (selectedCaret.begin == selectedCaret.end) { var clickPosition = isRTL ? TranslatePosition(selectedCaret.begin) : selectedCaret.begin, lvp = getActiveMaskSet()["lastValidPosition"], lastPosition; if (opts.isNumeric) { lastPosition = opts.skipRadixDance === false && opts.radixPoint != "" && $.inArray(opts.radixPoint, buffer) != -1 ? (opts.numericInput ? seekNext($.inArray(opts.radixPoint, buffer)) : $.inArray(opts.radixPoint, buffer)) : seekNext(lvp); } else { lastPosition = seekNext(lvp); } if (clickPosition < lastPosition) { if (isMask(clickPosition)) caret(input, clickPosition); else caret(input, seekNext(clickPosition)); } else caret(input, lastPosition); } }, 0); }).bind('dblclick.inputmask', function () { var input = this; setTimeout(function () { caret(input, 0, seekNext(getActiveMaskSet()["lastValidPosition"])); }, 0); }).bind(pasteEvent + ".inputmask dragdrop.inputmask drop.inputmask", function (e) { if (skipInputEvent === true) { skipInputEvent = false; return true; } var input = this, $input = $(input); //paste event for IE8 and lower I guess ;-) if (e.type == "propertychange" && input._valueGet().length <= getMaskLength()) { return true; } setTimeout(function () { var pasteValue = opts.onBeforePaste != undefined ? opts.onBeforePaste.call(this, input._valueGet()) : input._valueGet(); checkVal(input, true, false, pasteValue.split(''), true); if (isComplete(getActiveBuffer()) === true) $input.trigger("complete"); $input.click(); }, 0); }).bind('setvalue.inputmask', function () { var input = this; checkVal(input, true); valueOnFocus = getActiveBuffer().join(''); if (input._valueGet() == getActiveBufferTemplate().join('')) input._valueSet(''); }).bind('complete.inputmask', opts.oncomplete ).bind('incomplete.inputmask', opts.onincomplete ).bind('cleared.inputmask', opts.oncleared ).bind("keyup.inputmask", keyupEvent); if (androidchrome) { $el.bind("input.inputmask", inputEvent); } else { $el.bind("keydown.inputmask", keydownEvent ).bind("keypress.inputmask", keypressEvent); } if (msie10) $el.bind("input.inputmask", inputEvent); //apply mask checkVal(el, true, false); valueOnFocus = getActiveBuffer().join(''); // Wrap document.activeElement in a try/catch block since IE9 throw "Unspecified error" if document.activeElement is undefined when we are in an IFrame. var activeElement; try { activeElement = document.activeElement; } catch (e) { } if (activeElement === el) { //position the caret when in focus $el.addClass('focus.inputmask'); caret(el, seekNext(getActiveMaskSet()["lastValidPosition"])); } else if (opts.clearMaskOnLostFocus) { if (getActiveBuffer().join('') == getActiveBufferTemplate().join('')) { el._valueSet(''); } else { clearOptionalTail(el); } } else { writeBuffer(el, getActiveBuffer()); } installEventRuler(el); } } //action object if (actionObj != undefined) { switch (actionObj["action"]) { case "isComplete": return isComplete(actionObj["buffer"]); case "unmaskedvalue": isRTL = actionObj["$input"].data('_inputmask')['isRTL']; return unmaskedvalue(actionObj["$input"], actionObj["skipDatepickerCheck"]); case "mask": mask(actionObj["el"]); break; case "format": $el = $({}); $el.data('_inputmask', { 'masksets': masksets, 'activeMasksetIndex': activeMasksetIndex, 'opts': opts, 'isRTL': opts.numericInput }); if (opts.numericInput) { opts.isNumeric = opts.numericInput; isRTL = true; } checkVal($el, false, false, actionObj["value"].split(''), true); return getActiveBuffer().join(''); } } } $.inputmask = { //options default defaults: { placeholder: "_", optionalmarker: { start: "[", end: "]" }, quantifiermarker: { start: "{", end: "}" }, groupmarker: { start: "(", end: ")" }, escapeChar: "\\", mask: null, oncomplete: $.noop, //executes when the mask is complete onincomplete: $.noop, //executes when the mask is incomplete and focus is lost oncleared: $.noop, //executes when the mask is cleared repeat: 0, //repetitions of the mask: * ~ forever, otherwise specify an integer greedy: true, //true: allocated buffer for the mask and repetitions - false: allocate only if needed autoUnmask: false, //automatically unmask when retrieving the value with $.fn.val or value if the browser supports __lookupGetter__ or getOwnPropertyDescriptor clearMaskOnLostFocus: true, insertMode: true, //insert the input or overwrite the input clearIncomplete: false, //clear the incomplete input on blur aliases: {}, //aliases definitions => see jquery.inputmask.extensions.js onKeyUp: $.noop, //override to implement autocomplete on certain keys for example onKeyDown: $.noop, //override to implement autocomplete on certain keys for example onBeforePaste: undefined, //executes before masking the pasted value to allow preprocessing of the pasted value. args => pastedValue => return processedValue onUnMask: undefined, //executes after unmasking to allow postprocessing of the unmaskedvalue. args => maskedValue, unmaskedValue showMaskOnFocus: true, //show the mask-placeholder when the input has focus showMaskOnHover: true, //show the mask-placeholder when hovering the empty input onKeyValidation: $.noop, //executes on every key-press with the result of isValid. Params: result, opts skipOptionalPartCharacter: " ", //a character which can be used to skip an optional part of a mask showTooltip: false, //show the activemask as tooltip numericInput: false, //numericInput input direction style (input shifts to the left while holding the caret position) //numeric basic properties isNumeric: false, //enable numeric features radixPoint: "", //".", // | "," skipRadixDance: false, //disable radixpoint caret positioning rightAlignNumerics: true, //align numerics to the right //numeric basic properties definitions: { '9': { validator: "[0-9]", cardinality: 1 }, 'a': { validator: "[A-Za-z\u0410-\u044F\u0401\u0451]", cardinality: 1 }, '*': { validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]", cardinality: 1 } }, keyCode: { ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91 }, //specify keycodes which should not be considered in the keypress event, otherwise the preventDefault will stop their default behavior especially in FF ignorables: [8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], getMaskLength: function (buffer, greedy, repeat, currentBuffer, opts) { var calculatedLength = buffer.length; if (!greedy) { if (repeat == "*") { calculatedLength = currentBuffer.length + 1; } else if (repeat > 1) { calculatedLength += (buffer.length * (repeat - 1)); } } return calculatedLength; } }, escapeRegex: function (str) { var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\']; return str.replace(new RegExp('(\\' + specials.join('|\\') + ')', 'gim'), '\\$1'); }, format: function (value, options) { var opts = $.extend(true, {}, $.inputmask.defaults, options); resolveAlias(opts.alias, options, opts); return maskScope(generateMaskSets(opts), 0, opts, { "action": "format", "value": value }); } }; $.fn.inputmask = function (fn, options) { var opts = $.extend(true, {}, $.inputmask.defaults, options), masksets, activeMasksetIndex = 0; if (typeof fn === "string") { switch (fn) { case "mask": //resolve possible aliases given by options resolveAlias(opts.alias, options, opts); masksets = generateMaskSets(opts); if (masksets.length == 0) { return this; } return this.each(function () { maskScope($.extend(true, {}, masksets), 0, opts, { "action": "mask", "el": this }); }); case "unmaskedvalue": var $input = $(this), input = this; if ($input.data('_inputmask')) { masksets = $input.data('_inputmask')['masksets']; activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; opts = $input.data('_inputmask')['opts']; return maskScope(masksets, activeMasksetIndex, opts, { "action": "unmaskedvalue", "$input": $input }); } else return $input.val(); case "remove": return this.each(function () { var $input = $(this), input = this; if ($input.data('_inputmask')) { masksets = $input.data('_inputmask')['masksets']; activeMasksetIndex = $input.data('_inputmask')['activeMasksetIndex']; opts = $input.data('_inputmask')['opts']; //writeout the unmaskedvalue input._valueSet(maskScope(masksets, activeMasksetIndex, opts, { "action": "unmaskedvalue", "$input": $input, "skipDatepickerCheck": true })); //clear data $input.removeData('_inputmask'); //unbind all events $input.unbind(".inputmask"); $input.removeClass('focus.inputmask'); //restore the value property var valueProperty; if (Object.getOwnPropertyDescriptor) valueProperty = Object.getOwnPropertyDescriptor(input, "value"); if (valueProperty && valueProperty.get) { if (input._valueGet) { Object.defineProperty(input, "value", { get: input._valueGet, set: input._valueSet }); } } else if (document.__lookupGetter__ && input.__lookupGetter__("value")) { if (input._valueGet) { input.__defineGetter__("value", input._valueGet); input.__defineSetter__("value", input._valueSet); } } try { //try catch needed for IE7 as it does not supports deleting fns delete input._valueGet; delete input._valueSet; } catch (e) { input._valueGet = undefined; input._valueSet = undefined; } } }); break; case "getemptymask": //return the default (empty) mask value, usefull for setting the default value in validation if (this.data('_inputmask')) { masksets = this.data('_inputmask')['masksets']; activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; return masksets[activeMasksetIndex]['_buffer'].join(''); } else return ""; case "hasMaskedValue": //check wheter the returned value is masked or not; currently only works reliable when using jquery.val fn to retrieve the value return this.data('_inputmask') ? !this.data('_inputmask')['opts'].autoUnmask : false; case "isComplete": masksets = this.data('_inputmask')['masksets']; activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; opts = this.data('_inputmask')['opts']; return maskScope(masksets, activeMasksetIndex, opts, { "action": "isComplete", "buffer": this[0]._valueGet().split('') }); case "getmetadata": //return mask metadata if exists if (this.data('_inputmask')) { masksets = this.data('_inputmask')['masksets']; activeMasksetIndex = this.data('_inputmask')['activeMasksetIndex']; return masksets[activeMasksetIndex]['metadata']; } else return undefined; default: //check if the fn is an alias if (!resolveAlias(fn, options, opts)) { //maybe fn is a mask so we try //set mask opts.mask = fn; } masksets = generateMaskSets(opts); if (masksets.length == 0) { return this; } return this.each(function () { maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { "action": "mask", "el": this }); }); break; } } else if (typeof fn == "object") { opts = $.extend(true, {}, $.inputmask.defaults, fn); resolveAlias(opts.alias, fn, opts); //resolve aliases masksets = generateMaskSets(opts); if (masksets.length == 0) { return this; } return this.each(function () { maskScope($.extend(true, {}, masksets), activeMasksetIndex, opts, { "action": "mask", "el": this }); }); } else if (fn == undefined) { //look for data-inputmask atribute - the attribute should only contain optipns return this.each(function () { var attrOptions = $(this).attr("data-inputmask"); if (attrOptions && attrOptions != "") { try { attrOptions = attrOptions.replace(new RegExp("'", "g"), '"'); var dataoptions = $.parseJSON("{" + attrOptions + "}"); $.extend(true, dataoptions, options); opts = $.extend(true, {}, $.inputmask.defaults, dataoptions); resolveAlias(opts.alias, dataoptions, opts); opts.alias = undefined; $(this).inputmask(opts); } catch (ex) { } //need a more relax parseJSON } }); } }; } })(jQuery); AdminLTE/plugins/input-mask/jquery.inputmask.regex.extensions.js 0000644 00000022260 15002261751 0021111 0 ustar 00 /* Input Mask plugin extensions http://github.com/RobinHerbots/jquery.inputmask Copyright (c) 2010 - 2014 Robin Herbots Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) Version: 0.0.0 Regex extensions on the jquery.inputmask base Allows for using regular expressions as a mask */ (function ($) { $.extend($.inputmask.defaults.aliases, { // $(selector).inputmask("Regex", { regex: "[0-9]*"} 'Regex': { mask: "r", greedy: false, repeat: "*", regex: null, regexTokens: null, //Thx to https://github.com/slevithan/regex-colorizer for the tokenizer regex tokenizer: /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g, quantifierFilter: /[0-9]+[^,]/, definitions: { 'r': { validator: function (chrs, buffer, pos, strict, opts) { function regexToken() { this.matches = []; this.isGroup = false; this.isQuantifier = false; this.isLiteral = false; } function analyseRegex() { var currentToken = new regexToken(), match, m, opengroups = []; opts.regexTokens = []; // The tokenizer regex does most of the tokenization grunt work while (match = opts.tokenizer.exec(opts.regex)) { m = match[0]; switch (m.charAt(0)) { case "[": // Character class case "\\": // Escape or backreference if (opengroups.length > 0) { opengroups[opengroups.length - 1]["matches"].push(m); } else { currentToken.matches.push(m); } break; case "(": // Group opening if (!currentToken.isGroup && currentToken.matches.length > 0) opts.regexTokens.push(currentToken); currentToken = new regexToken(); currentToken.isGroup = true; opengroups.push(currentToken); break; case ")": // Group closing var groupToken = opengroups.pop(); if (opengroups.length > 0) { opengroups[opengroups.length - 1]["matches"].push(groupToken); } else { opts.regexTokens.push(groupToken); currentToken = new regexToken(); } break; case "{": //Quantifier var quantifier = new regexToken(); quantifier.isQuantifier = true; quantifier.matches.push(m); if (opengroups.length > 0) { opengroups[opengroups.length - 1]["matches"].push(quantifier); } else { currentToken.matches.push(quantifier); } break; default: // Vertical bar (alternator) // ^ or $ anchor // Dot (.) // Literal character sequence var literal = new regexToken(); literal.isLiteral = true; literal.matches.push(m); if (opengroups.length > 0) { opengroups[opengroups.length - 1]["matches"].push(literal); } else { currentToken.matches.push(literal); } } } if (currentToken.matches.length > 0) opts.regexTokens.push(currentToken); } function validateRegexToken(token, fromGroup) { var isvalid = false; if (fromGroup) { regexPart += "("; openGroupCount++; } for (var mndx = 0; mndx < token["matches"].length; mndx++) { var matchToken = token["matches"][mndx]; if (matchToken["isGroup"] == true) { isvalid = validateRegexToken(matchToken, true); } else if (matchToken["isQuantifier"] == true) { matchToken = matchToken["matches"][0]; var quantifierMax = opts.quantifierFilter.exec(matchToken)[0].replace("}", ""); var testExp = regexPart + "{1," + quantifierMax + "}"; //relax quantifier validation for (var j = 0; j < openGroupCount; j++) { testExp += ")"; } var exp = new RegExp("^(" + testExp + ")$"); isvalid = exp.test(bufferStr); regexPart += matchToken; } else if (matchToken["isLiteral"] == true) { matchToken = matchToken["matches"][0]; var testExp = regexPart, openGroupCloser = ""; for (var j = 0; j < openGroupCount; j++) { openGroupCloser += ")"; } for (var k = 0; k < matchToken.length; k++) { //relax literal validation testExp = (testExp + matchToken[k]).replace(/\|$/, ""); var exp = new RegExp("^(" + testExp + openGroupCloser + ")$"); isvalid = exp.test(bufferStr); if (isvalid) break; } regexPart += matchToken; //console.log(bufferStr + " " + exp + " " + isvalid); } else { regexPart += matchToken; var testExp = regexPart.replace(/\|$/, ""); for (var j = 0; j < openGroupCount; j++) { testExp += ")"; } var exp = new RegExp("^(" + testExp + ")$"); isvalid = exp.test(bufferStr); //console.log(bufferStr + " " + exp + " " + isvalid); } if (isvalid) break; } if (fromGroup) { regexPart += ")"; openGroupCount--; } return isvalid; } if (opts.regexTokens == null) { analyseRegex(); } var cbuffer = buffer.slice(), regexPart = "", isValid = false, openGroupCount = 0; cbuffer.splice(pos, 0, chrs); var bufferStr = cbuffer.join(''); for (var i = 0; i < opts.regexTokens.length; i++) { var regexToken = opts.regexTokens[i]; isValid = validateRegexToken(regexToken, regexToken["isGroup"]); if (isValid) break; } return isValid; }, cardinality: 1 } } } }); })(jQuery); AdminLTE/plugins/datepicker/.travis.yml 0000644 00000000122 15002261751 0014040 0 ustar 00 language: node_js node_js: - "12" before_script: - npm install -g grunt-cli AdminLTE/plugins/datepicker/.gitignore 0000644 00000000162 15002261751 0013723 0 ustar 00 docs/_build *-dist.zip # OS or Editor folders .DS_Store .idea # Folders to ignore bower_components node_modules AdminLTE/plugins/datepicker/bootstrap-datepicker.min.js 0000644 00000101635 15002261751 0017210 0 ustar 00 /*! * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker) * * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) */ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(c,d){return function(){return d!==b&&a.fn.datepicker.deprecated(d),this[c].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;c<d;c++)if(0<=this[c].valueOf()-b&&this[c].valueOf()-b<864e5)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a.data(b,"datepicker",this),this._events=[],this._secondaryEvents=[],this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInput=this.element.is("input"),this.inputField=this.isInput?this.element:this.element.find("input"),this.component=!!this.element.hasClass("date")&&this.element.find(".add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn"),this.component&&0===this.component.length&&(this.component=!1),this.isInline=!this.component&&this.element.is("div"),this.picker=a(r.template),this._check_template(this.o.templates.leftArrow)&&this.picker.find(".prev").html(this.o.templates.leftArrow),this._check_template(this.o.templates.rightArrow)&&this.picker.find(".next").html(this.o.templates.rightArrow),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.o.calendarWeeks&&this.picker.find(".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return Number(b)+1}),this._process_options({startDate:this._o.startDate,endDate:this._o.endDate,daysOfWeekDisabled:this.o.daysOfWeekDisabled,daysOfWeekHighlighted:this.o.daysOfWeekHighlighted,datesDisabled:this.o.datesDisabled}),this._allow_update=!1,this.setViewMode(this.o.startView),this._allow_update=!0,this.fillDow(),this.fillMonths(),this.update(),this.isInline&&this.show()};k.prototype={constructor:k,_resolveViewName:function(b){return a.each(r.viewModes,function(c,d){if(b===c||-1!==a.inArray(b,d.names))return b=c,!1}),b},_resolveDaysOfWeek:function(b){return a.isArray(b)||(b=b.split(/[,\s]*/)),a.map(b,Number)},_check_template:function(c){try{if(c===b||""===c)return!1;if((c.match(/[<>]/g)||[]).length<=0)return!0;return a(c).length>0}catch(a){return!1}},_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView=this._resolveViewName(e.startView),e.minViewMode=this._resolveViewName(e.minViewMode),e.maxViewMode=this._resolveViewName(e.maxViewMode),e.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,e.startView)),!0!==e.multidate&&(e.multidate=Number(e.multidate)||!1,!1!==e.multidate&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);e.startDate!==-1/0&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language,e.assumeNearbyYear):e.startDate=-1/0),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language,e.assumeNearbyYear):e.endDate=1/0),e.daysOfWeekDisabled=this._resolveDaysOfWeek(e.daysOfWeekDisabled||[]),e.daysOfWeekHighlighted=this._resolveDaysOfWeek(e.daysOfWeekHighlighted||[]),e.datesDisabled=e.datesDisabled||[],a.isArray(e.datesDisabled)||(e.datesDisabled=e.datesDisabled.split(",")),e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language,e.assumeNearbyYear)});var h=String(e.orientation).toLowerCase().split(/\s+/g),i=e.orientation.toLowerCase();if(h=a.grep(h,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},i&&"auto"!==i)if(1===h.length)switch(h[0]){case"top":case"bottom":e.orientation.y=h[0];break;case"left":case"right":e.orientation.x=h[0]}else i=a.grep(h,function(a){return/^left|right$/.test(a)}),e.orientation.x=i[0]||"auto",i=a.grep(h,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=i[0]||"auto";else;if(e.defaultViewDate instanceof Date||"string"==typeof e.defaultViewDate)e.defaultViewDate=r.parseDate(e.defaultViewDate,g,e.language,e.assumeNearbyYear);else if(e.defaultViewDate){var j=e.defaultViewDate.year||(new Date).getFullYear(),k=e.defaultViewDate.month||0,l=e.defaultViewDate.day||1;e.defaultViewDate=c(j,k,l)}else e.defaultViewDate=d()},_applyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(d=b,e=a[f][1]):3===a[f].length&&(d=a[f][1],e=a[f][2]),c.on(e,d)},_unapplyEvents:function(a){for(var c,d,e,f=0;f<a.length;f++)c=a[f][0],2===a[f].length?(e=b,d=a[f][1]):3===a[f].length&&(e=a[f][1],d=a[f][2]),c.off(d,e)},_buildEvents:function(){var b={keyup:a.proxy(function(b){-1===a.inArray(b.keyCode,[27,37,39,38,40,32,13,9])&&this.update()},this),keydown:a.proxy(this.keydown,this),paste:a.proxy(this.paste,this)};!0===this.o.showOnFocus&&(b.focus=a.proxy(this.show,this)),this.isInput?this._events=[[this.element,b]]:this.component&&this.inputField.length?this._events=[[this.inputField,b],[this.component,{click:a.proxy(this.show,this)}]]:this._events=[[this.element,{click:a.proxy(this.show,this),keydown:a.proxy(this.keydown,this)}]],this._events.push([this.element,"*",{blur:a.proxy(function(a){this._focused_from=a.target},this)}],[this.element,{blur:a.proxy(function(a){this._focused_from=a.target},this)}]),this.o.immediateUpdates&&this._events.push([this.element,{"changeYear changeMonth":a.proxy(function(a){this.update(a.date)},this)}]),this._secondaryEvents=[[this.picker,{click:a.proxy(this.click,this)}],[this.picker,".prev, .next",{click:a.proxy(this.navArrowsClick,this)}],[this.picker,".day:not(.disabled)",{click:a.proxy(this.dayCellClick,this)}],[a(window),{resize:a.proxy(this.place,this)}],[a(document),{"mousedown touchstart":a.proxy(function(a){this.element.is(a.target)||this.element.find(a.target).length||this.picker.is(a.target)||this.picker.find(a.target).length||this.isInline||this.hide()},this)}]]},_attachEvents:function(){this._detachEvents(),this._applyEvents(this._events)},_detachEvents:function(){this._unapplyEvents(this._events)},_attachSecondaryEvents:function(){this._detachSecondaryEvents(),this._applyEvents(this._secondaryEvents)},_detachSecondaryEvents:function(){this._unapplyEvents(this._secondaryEvents)},_trigger:function(b,c){var d=c||this.dates.get(-1),e=this._utc_to_local(d);this.element.trigger({type:b,date:e,viewMode:this.viewMode,dates:a.map(this.dates,this._utc_to_local),format:a.proxy(function(a,b){0===arguments.length?(a=this.dates.length-1,b=this.o.format):"string"==typeof a&&(b=a,a=this.dates.length-1),b=b||this.o.format;var c=this.dates.get(a);return r.formatDate(c,b,this.o.language)},this)})},show:function(){if(!(this.inputField.is(":disabled")||this.inputField.prop("readonly")&&!1===this.o.enableOnReadonly))return this.isInline||this.picker.appendTo(this.o.container),this.place(),this.picker.show(),this._attachSecondaryEvents(),this._trigger("show"),(window.navigator.msMaxTouchPoints||"ontouchstart"in document)&&this.o.disableTouchKeyboard&&a(this.element).blur(),this},hide:function(){return this.isInline||!this.picker.is(":visible")?this:(this.focusDate=null,this.picker.hide().detach(),this._detachSecondaryEvents(),this.setViewMode(this.o.startView),this.o.forceParse&&this.inputField.val()&&this.setValue(),this._trigger("hide"),this)},destroy:function(){return this.hide(),this._detachEvents(),this._detachSecondaryEvents(),this.picker.remove(),delete this.element.data().datepicker,this.isInput||delete this.element.data().date,this},paste:function(b){var c;if(b.originalEvent.clipboardData&&b.originalEvent.clipboardData.types&&-1!==a.inArray("text/plain",b.originalEvent.clipboardData.types))c=b.originalEvent.clipboardData.getData("text/plain");else{if(!window.clipboardData)return;c=window.clipboardData.getData("Text")}this.setDate(c),this.update(),b.preventDefault()},_utc_to_local:function(a){if(!a)return a;var b=new Date(a.getTime()+6e4*a.getTimezoneOffset());return b.getTimezoneOffset()!==a.getTimezoneOffset()&&(b=new Date(a.getTime()+6e4*b.getTimezoneOffset())),b},_local_to_utc:function(a){return a&&new Date(a.getTime()-6e4*a.getTimezoneOffset())},_zero_time:function(a){return a&&new Date(a.getFullYear(),a.getMonth(),a.getDate())},_zero_utc_time:function(a){return a&&c(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate())},getDates:function(){return a.map(this.dates,this._utc_to_local)},getUTCDates:function(){return a.map(this.dates,function(a){return new Date(a)})},getDate:function(){return this._utc_to_local(this.getUTCDate())},getUTCDate:function(){var a=this.dates.get(-1);return a!==b?new Date(a):null},clearDates:function(){this.inputField.val(""),this.update(),this._trigger("changeDate"),this.o.autoclose&&this.hide()},setDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.update.apply(this,b),this._trigger("changeDate"),this.setValue(),this},setUTCDates:function(){var b=a.isArray(arguments[0])?arguments[0]:arguments;return this.setDates.apply(this,a.map(b,this._utc_to_local)),this},setDate:f("setDates"),setUTCDate:f("setUTCDates"),remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead"),setValue:function(){var a=this.getFormattedDate();return this.inputField.val(a),this},getFormattedDate:function(c){c===b&&(c=this.o.format);var d=this.o.language;return a.map(this.dates,function(a){return r.formatDate(a,c,d)}).join(this.o.multidateSeparator)},getStartDate:function(){return this.o.startDate},setStartDate:function(a){return this._process_options({startDate:a}),this.update(),this.updateNavArrows(),this},getEndDate:function(){return this.o.endDate},setEndDate:function(a){return this._process_options({endDate:a}),this.update(),this.updateNavArrows(),this},setDaysOfWeekDisabled:function(a){return this._process_options({daysOfWeekDisabled:a}),this.update(),this},setDaysOfWeekHighlighted:function(a){return this._process_options({daysOfWeekHighlighted:a}),this.update(),this},setDatesDisabled:function(a){return this._process_options({datesDisabled:a}),this.update(),this},place:function(){if(this.isInline)return this;var b=this.picker.outerWidth(),c=this.picker.outerHeight(),d=a(this.o.container),e=d.width(),f="body"===this.o.container?a(document).scrollTop():d.scrollTop(),g=d.offset(),h=[0];this.element.parents().each(function(){var b=a(this).css("z-index");"auto"!==b&&0!==Number(b)&&h.push(Number(b))});var i=Math.max.apply(Math,h)+this.o.zIndexOffset,j=this.component?this.component.parent().offset():this.element.offset(),k=this.component?this.component.outerHeight(!0):this.element.outerHeight(!1),l=this.component?this.component.outerWidth(!0):this.element.outerWidth(!1),m=j.left-g.left,n=j.top-g.top;"body"!==this.o.container&&(n+=f),this.picker.removeClass("datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left"),"auto"!==this.o.orientation.x?(this.picker.addClass("datepicker-orient-"+this.o.orientation.x),"right"===this.o.orientation.x&&(m-=b-l)):j.left<0?(this.picker.addClass("datepicker-orient-left"),m-=j.left-10):m+b>e?(this.picker.addClass("datepicker-orient-right"),m+=l-b):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var o,p=this.o.orientation.y;if("auto"===p&&(o=-f+n-c,p=o<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+p),"top"===p?n-=c+parseInt(this.picker.css("padding-top")):n+=k,this.o.rtl){var q=e-(m+l);this.picker.css({top:n,right:q,zIndex:i})}else this.picker.css({top:n,left:m,zIndex:i});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDate<this.o.startDate?this.viewDate=new Date(this.o.startDate):this.viewDate>this.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),d?(this.setValue(),this.element.change()):this.dates.length&&String(b)!==String(this.dates)&&d&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&b.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var b=this.o.weekStart,c="<tr>";for(this.o.calendarWeeks&&(c+='<th class="cw"> </th>');b<this.o.weekStart+7;)c+='<th class="dow',-1!==a.inArray(b,this.o.daysOfWeekDisabled)&&(c+=" disabled"),c+='">'+q[this.o.language].daysMin[b++%7]+"</th>";c+="</tr>",this.picker.find(".datepicker-days thead").append(c)}},fillMonths:function(){for(var a,b=this._utc_to_local(this.viewDate),c="",d=0;d<12;d++)a=b&&b.getMonth()===d?" focused":"",c+='<span class="month'+a+'">'+q[this.o.language].monthsShort[d]+"</span>";this.picker.find(".datepicker-months td").html(c)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],f=this.viewDate.getUTCFullYear(),g=this.viewDate.getUTCMonth(),h=d();return b.getUTCFullYear()<f||b.getUTCFullYear()===f&&b.getUTCMonth()<g?c.push("old"):(b.getUTCFullYear()>f||b.getUTCFullYear()===f&&b.getUTCMonth()>g)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&e(b,h)&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),this.dateWithinRange(b)||c.push("disabled"),this.dateIsDisabled(b)&&c.push("disabled","disabled-date"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&b<this.range[this.range.length-1]&&c.push("range"),-1!==a.inArray(b.valueOf(),this.range)&&c.push("selected"),b.valueOf()===this.range[0]&&c.push("range-start"),b.valueOf()===this.range[this.range.length-1]&&c.push("range-end")),c},_fill_yearsView:function(c,d,e,f,g,h,i){for(var j,k,l,m="",n=e/10,o=this.picker.find(c),p=Math.floor(f/e)*e,q=p+9*n,r=Math.floor(this.viewDate.getFullYear()/n)*n,s=a.map(this.dates,function(a){return Math.floor(a.getUTCFullYear()/n)*n}),t=p-n;t<=q+n;t+=n)j=[d],k=null,t===p-n?j.push("old"):t===q+n&&j.push("new"),-1!==a.inArray(t,s)&&j.push("active"),(t<g||t>h)&&j.push("disabled"),t===r&&j.push("focused"),i!==a.noop&&(l=i(new Date(t,0,1)),l===b?l={}:"boolean"==typeof l?l={enabled:l}:"string"==typeof l&&(l={classes:l}),!1===l.enabled&&j.push("disabled"),l.classes&&(j=j.concat(l.classes.split(/\s+/))),l.tooltip&&(k=l.tooltip)),m+='<span class="'+j.join(" ")+'"'+(k?' title="'+k+'"':"")+">"+t+"</span>";o.find(".datepicker-switch").text(p+"-"+q),o.find("td").html(m)},fill:function(){var e,f,g=new Date(this.viewDate),h=g.getUTCFullYear(),i=g.getUTCMonth(),j=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,k=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,m=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,n=q[this.o.language].today||q.en.today||"",o=q[this.o.language].clear||q.en.clear||"",p=q[this.o.language].titleFormat||q.en.titleFormat,s=d(),t=(!0===this.o.todayBtn||"linked"===this.o.todayBtn)&&s>=this.o.startDate&&s<=this.o.endDate&&!this.weekOfDateIsDisabled(s);if(!isNaN(h)&&!isNaN(i)){this.picker.find(".datepicker-days .datepicker-switch").text(r.formatDate(g,p,this.o.language)),this.picker.find("tfoot .today").text(n).css("display",t?"table-cell":"none"),this.picker.find("tfoot .clear").text(o).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var u=c(h,i,0),v=u.getUTCDate();u.setUTCDate(v-(u.getUTCDay()-this.o.weekStart+7)%7);var w=new Date(u);u.getUTCFullYear()<100&&w.setUTCFullYear(u.getUTCFullYear()),w.setUTCDate(w.getUTCDate()+42),w=w.valueOf();for(var x,y,z=[];u.valueOf()<w;){if((x=u.getUTCDay())===this.o.weekStart&&(z.push("<tr>"),this.o.calendarWeeks)){var A=new Date(+u+(this.o.weekStart-x-7)%7*864e5),B=new Date(Number(A)+(11-A.getUTCDay())%7*864e5),C=new Date(Number(C=c(B.getUTCFullYear(),0,1))+(11-C.getUTCDay())%7*864e5),D=(B-C)/864e5/7+1;z.push('<td class="cw">'+D+"</td>")}y=this.getClassNames(u),y.push("day");var E=u.getUTCDate();this.o.beforeShowDay!==a.noop&&(f=this.o.beforeShowDay(this._utc_to_local(u)),f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1===f.enabled&&y.push("disabled"),f.classes&&(y=y.concat(f.classes.split(/\s+/))),f.tooltip&&(e=f.tooltip),f.content&&(E=f.content)),y=a.isFunction(a.uniqueSort)?a.uniqueSort(y):a.unique(y),z.push('<td class="'+y.join(" ")+'"'+(e?' title="'+e+'"':"")+' data-date="'+u.getTime().toString()+'">'+E+"</td>"),e=null,x===this.o.weekEnd&&z.push("</tr>"),u.setUTCDate(u.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(z.join(""));var F=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",G=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?F:h).end().find("tbody span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===h&&G.eq(b.getUTCMonth()).addClass("active")}),(h<j||h>l)&&G.addClass("disabled"),h===j&&G.slice(0,k).addClass("disabled"),h===l&&G.slice(m+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var H=this;a.each(G,function(c,d){var e=new Date(h,c,1),f=H.o.beforeShowMonth(e);f===b?f={}:"boolean"==typeof f?f={enabled:f}:"string"==typeof f&&(f={classes:f}),!1!==f.enabled||a(d).hasClass("disabled")||a(d).addClass("disabled"),f.classes&&a(d).addClass(f.classes),f.tooltip&&a(d).prop("title",f.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,h,j,l,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,h,j,l,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,h,j,l,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var a,b,c=new Date(this.viewDate),d=c.getUTCFullYear(),e=c.getUTCMonth(),f=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,g=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,h=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,i=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,j=1;switch(this.viewMode){case 4:j*=10;case 3:j*=10;case 2:j*=10;case 1:a=Math.floor(d/j)*j<=f,b=Math.floor(d/j)*j+j>h;break;case 0:a=d<=f&&e<=g,b=d>=h&&e>=i}this.picker.find(".prev").toggleClass("disabled",a),this.picker.find(".next").toggleClass("disabled",b)}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h;e=a(b.target),e.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),e.hasClass("today")&&!e.hasClass("day")&&(this.setViewMode(0),this._setDate(d(),"linked"===this.o.todayBtn?null:"view")),e.hasClass("clear")&&this.clearDates(),e.hasClass("disabled")||(e.hasClass("month")||e.hasClass("year")||e.hasClass("decade")||e.hasClass("century"))&&(this.viewDate.setUTCDate(1),f=1,1===this.viewMode?(h=e.parent().find("span").index(e),g=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(h)):(h=0,g=Number(e.text()),this.viewDate.setUTCFullYear(g)),this._trigger(r.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(c(g,h,f)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(b){var c=a(b.currentTarget),d=c.data("date"),e=new Date(d);this.o.updateViewDate&&(e.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),e.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(e)},navArrowsClick:function(b){var c=a(b.currentTarget),d=c.hasClass("prev")?-1:1;0!==this.viewMode&&(d*=12*r.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,d),this._trigger(r.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):!1===this.o.multidate?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),(!b&&this.o.updateViewDate||"view"===b)&&(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),c=(c+12)%12;else{for(var j=0;j<i;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void(40!==a.keyCode&&27!==a.keyCode||(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,0===this.viewMode?a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"))&&this._trigger("changeYear",this.viewDate):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")):1===this.viewMode?(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveMonth")):2===this.viewMode&&(38!==a.keyCode&&40!==a.keyCode||(b*=4),c=this.moveAvailableDate(e,b,"moveYear")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}d&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(a){this.viewMode=a,this.picker.children("div").hide().filter(".datepicker-"+r.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var l=function(b,c){a.data(b,"datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,this.keepEmptyValues=c.keepEmptyValues,delete c.keepEmptyValues,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a.data(b,"datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},clearDates:function(){a.each(this.pickers,function(a,b){b.clearDates()})},dateUpdated:function(c){if(!this.updating){this.updating=!0;var d=a.data(c.target,"datepicker");if(d!==b){var e=d.getUTCDate(),f=this.keepEmptyValues,g=a.inArray(c.target,this.inputs),h=g-1,i=g+1,j=this.inputs.length;if(-1!==g){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b!==d&&f||b.setUTCDate(e)}),e<this.dates[h])for(;h>=0&&e<this.dates[h];)this.pickers[h--].setUTCDate(e);else if(e>this.dates[i])for(;i<j&&e>this.dates[i];)this.pickers[i++].setUTCDate(e);this.updateDates(),delete this.updating}}}},destroy:function(){a.map(this.pickers,function(a){a.destroy()}),a(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:f("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,beforeShowDecade:a.noop,beforeShowCentury:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\0").split("\0"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(c,e,f,g){function h(a,b){return!0===b&&(b=10),a<100&&(a+=2e3)>(new Date).getFullYear()+b&&(a-=100),a}function i(){var a=this.slice(0,j[n].length),b=j[n].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!c)return b;if(c instanceof Date)return c;if("string"==typeof e&&(e=r.parseFormat(e)),e.toValue)return e.toValue(c,e,f);var j,l,m,n,o,p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},s={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(c in s&&(c=s[c]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(c)){for(j=c.match(/([\-+]\d+)([dmwy])/gi),c=new Date,n=0;n<j.length;n++)l=j[n].match(/([\-+]\d+)([dmwy])/i),m=Number(l[1]),o=p[l[2].toLowerCase()],c=k.prototype[o](c,m);return k.prototype._zero_utc_time(c)}j=c&&c.match(this.nonpunctuation)||[];var t,u,v={},w=["yyyy","yy","M","MM","m","mm","d","dd"],x={yyyy:function(a,b){return a.setUTCFullYear(g?h(b,g):b)},m:function(a,b){if(isNaN(a))return a;for(b-=1;b<0;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};x.yy=x.yyyy,x.M=x.MM=x.mm=x.m,x.dd=x.d,c=d();var y=e.parts.slice();if(j.length!==y.length&&(y=a(y).filter(function(b,c){return-1!==a.inArray(c,w)}).toArray()),j.length===y.length){var z;for(n=0,z=y.length;n<z;n++){if(t=parseInt(j[n],10),l=y[n],isNaN(t))switch(l){case"MM":u=a(q[f].months).filter(i),t=a.inArray(u[0],q[f].months)+1;break;case"M":u=a(q[f].monthsShort).filter(i),t=a.inArray(u[0],q[f].monthsShort)+1}v[l]=t}var A,B;for(n=0;n<w.length;n++)(B=w[n])in v&&!isNaN(v[B])&&(A=new Date(c),x[B](A,v[B]),isNaN(A)||(c=A))}return c},formatDate:function(b,c,d){if(!b)return"";if("string"==typeof c&&(c=r.parseFormat(c)),c.toDisplay)return c.toDisplay(b,c,d);var e={d:b.getUTCDate(),D:q[d].daysShort[b.getUTCDay()],DD:q[d].days[b.getUTCDay()],m:b.getUTCMonth()+1,M:q[d].monthsShort[b.getUTCMonth()],MM:q[d].months[b.getUTCMonth()],yy:b.getUTCFullYear().toString().substring(2),yyyy:b.getUTCFullYear()};e.dd=(e.d<10?"0":"")+e.d,e.mm=(e.m<10?"0":"")+e.m,b=[];for(var f=a.extend([],c.separators),g=0,h=c.parts.length;g<=h;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")}, headTemplate:'<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">'+o.templates.leftArrow+'</th><th colspan="5" class="datepicker-switch"></th><th class="next">'+o.templates.rightArrow+"</th></tr></thead>",contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};r.template='<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">'+r.headTemplate+"<tbody></tbody>"+r.footTemplate+'</table></div><div class="datepicker-months"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-years"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-decades"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+'</table></div><div class="datepicker-centuries"><table class="table-condensed">'+r.headTemplate+r.contTemplate+r.footTemplate+"</table></div></div>",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.9.0",a.fn.datepicker.deprecated=function(a){var b=window.console;b&&b.warn&&b.warn("DEPRECATED: "+a)},a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); AdminLTE/plugins/datepicker/bootstrap-datepicker.min.css 0000644 00000036563 15002261751 0017373 0 ustar 00 /*! * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker) * * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) */ .datepicker{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker-rtl{direction:rtl}.datepicker-rtl.dropdown-menu{left:auto}.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #999;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker td,.datepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.highlighted{background:#d9edf7;border-radius:0}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{background-color:#fde19a;background-image:-moz-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:-o-linear-gradient(to bottom,#fdd49a,#fdf59a);background-image:linear-gradient(to bottom,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#000}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today[disabled]{background-color:#fdf59a}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active{background-color:#fbf069\9}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{background-color:#f3d17a;background-image:-moz-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-ms-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f3c17a),to(#f3e97a));background-image:-webkit-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:-o-linear-gradient(to bottom,#f3c17a,#f3e97a);background-image:linear-gradient(to bottom,#f3c17a,#f3e97a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);border-color:#f3e97a #f3e97a #edde34;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today[disabled]{background-color:#f3e97a}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active{background-color:#efe24b\9}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{background-color:#9e9e9e;background-image:-moz-linear-gradient(to bottom,#b3b3b3,grey);background-image:-ms-linear-gradient(to bottom,#b3b3b3,grey);background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3b3b3),to(grey));background-image:-webkit-linear-gradient(to bottom,#b3b3b3,grey);background-image:-o-linear-gradient(to bottom,#b3b3b3,grey);background-image:linear-gradient(to bottom,#b3b3b3,grey);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);border-color:grey grey #595959;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected[disabled]{background-color:grey}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active{background-color:#666\9}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active[disabled]{background-color:#04c}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active{background-color:#039\9}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datepicker table tr td span.focused,.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{background-color:#006dcc;background-image:-moz-linear-gradient(to bottom,#08c,#04c);background-image:-ms-linear-gradient(to bottom,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(to bottom,#08c,#04c);background-image:-o-linear-gradient(to bottom,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active[disabled]{background-color:#04c}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active{background-color:#039\9}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th{cursor:pointer}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .next.disabled,.datepicker .prev.disabled{visibility:hidden}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-append.date .add-on,.input-prepend.date .add-on{cursor:pointer}.input-append.date .add-on i,.input-prepend.date .add-on i{margin-top:3px}.input-daterange input{text-align:center}.input-daterange input:first-child{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.input-daterange input:last-child{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.input-daterange .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:400;line-height:18px;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:1px solid #ccc;margin-left:-5px;margin-right:-5px} AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.tk.min.js 0000644 00000001022 15002261751 0021234 0 ustar 00 !function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ja.min.js 0000644 00000000766 15002261751 0021226 0 ustar 00 !function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.bg.min.js 0000644 00000001164 15002261751 0021215 0 ustar 00 !function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес",weekStart:1}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.pl.min.js 0000644 00000001050 15002261751 0021232 0 ustar 00 !function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],daysShort:["Niedz.","Pon.","Wt.","Śr.","Czw.","Piąt.","Sob."],daysMin:["Ndz.","Pn.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty.","Lut.","Mar.","Kwi.","Maj","Cze.","Lip.","Sie.","Wrz.","Paź.","Lis.","Gru."],today:"Dzisiaj",weekStart:1,clear:"Wyczyść",format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ar.min.js 0000644 00000001312 15002261751 0021222 0 ustar 00 !function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.cs.min.js 0000644 00000001030 15002261751 0021222 0 ustar 00 !function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.mk.min.js 0000644 00000001221 15002261751 0021226 0 ustar 00 !function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.en-ZA.min.js 0000644 00000001005 15002261751 0021531 0 ustar 00 !function(a){a.fn.datepicker.dates["en-ZA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"yyyy/mm/d"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.is.min.js 0000644 00000000760 15002261751 0021241 0 ustar 00 !function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.zh-TW.min.js 0000644 00000001066 15002261751 0021577 0 ustar 00 !function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1,clear:"清除"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.it-CH.min.js 0000644 00000000772 15002261751 0021535 0 ustar 00 !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.en-CA.min.js 0000644 00000001006 15002261751 0021503 0 ustar 00 !function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.bm.min.js 0000644 00000001062 15002261751 0021220 0 ustar 00 !function(a){a.fn.datepicker.dates.bm={days:["Kari","Ntɛnɛn","Tarata","Araba","Alamisa","Juma","Sibiri"],daysShort:["Kar","Ntɛ","Tar","Ara","Ala","Jum","Sib"],daysMin:["Ka","Nt","Ta","Ar","Al","Ju","Si"],months:["Zanwuyekalo","Fewuruyekalo","Marisikalo","Awirilikalo","Mɛkalo","Zuwɛnkalo","Zuluyekalo","Utikalo","Sɛtanburukalo","ɔkutɔburukalo","Nowanburukalo","Desanburukalo"],monthsShort:["Zan","Few","Mar","Awi","Mɛ","Zuw","Zul","Uti","Sɛt","ɔku","Now","Des"],today:"Bi",monthsTitle:"Kalo",clear:"Ka jɔsi",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sq.min.js 0000644 00000001006 15002261751 0021243 0 ustar 00 !function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sl.min.js 0000644 00000000707 15002261751 0021245 0 ustar 00 !function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.bn.min.js 0000644 00000002272 15002261751 0021225 0 ustar 00 !function(a){a.fn.datepicker.dates.bn={days:["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],daysShort:["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার","শুক্রবার","শনিবার"],daysMin:["রবি","সোম","মঙ্গল","বুধ","বৃহস্পতি","শুক্র","শনি"],months:["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],monthsShort:["জানুয়ারী","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","অগাস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"],today:"আজ",monthsTitle:"মাস",clear:"পরিষ্কার",weekStart:0,format:"mm/dd/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.de.min.js 0000644 00000001005 15002261751 0021207 0 ustar 00 !function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.si.min.js 0000644 00000001734 15002261751 0021243 0 ustar 00 !function(a){a.fn.datepicker.dates.si={days:["ඉරිදා","සඳුදා","අඟහරුවාදා","බදාදා","බ්රහස්පතින්දා","සිකුරාදා","සෙනසුරාදා"],daysShort:["ඉරි","සඳු","අඟ","බදා","බ්රහ","සිකු","සෙන"],daysMin:["ඉ","ස","අ","බ","බ්ර","සි","සෙ"],months:["ජනවාරි","පෙබරවාරි","මාර්තු","අප්රේල්","මැයි","ජුනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"],monthsShort:["ජන","පෙබ","මාර්","අප්රේ","මැයි","ජුනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],today:"අද",monthsTitle:"මාස",clear:"මකන්න",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.pt.min.js 0000644 00000000762 15002261751 0021253 0 ustar 00 !function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.lt.min.js 0000644 00000001065 15002261751 0021244 0 ustar 00 !function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ro.min.js 0000644 00000000771 15002261751 0021250 0 ustar 00 !function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ar-tn.min.js 0000644 00000001300 15002261751 0021636 0 ustar 00 !function(a){a.fn.datepicker.dates["ar-tn"]={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.en-NZ.min.js 0000644 00000001005 15002261751 0021546 0 ustar 00 !function(a){a.fn.datepicker.dates["en-NZ"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker-en-CA.min.js 0000644 00000001174 15002261751 0021510 0 ustar 00 !function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"},a.fn.datepicker.deprecated("This filename doesn't follow the convention, use bootstrap-datepicker.en-CA.js instead.")}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.kk.min.js 0000644 00000001211 15002261751 0021223 0 ustar 00 !function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.gl.min.js 0000644 00000000751 15002261751 0021230 0 ustar 00 !function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.br.min.js 0000644 00000000776 15002261751 0021240 0 ustar 00 !function(a){a.fn.datepicker.dates.br={days:["Sul","Lun","Meurzh","Merc'her","Yaou","Gwener","Sadorn"],daysShort:["Sul","Lun","Meu.","Mer.","Yao.","Gwe.","Sad."],daysMin:["Su","L","Meu","Mer","Y","G","Sa"],months:["Genver","C'hwevrer","Meurzh","Ebrel","Mae","Mezheven","Gouere","Eost","Gwengolo","Here","Du","Kerzu"],monthsShort:["Genv.","C'hw.","Meur.","Ebre.","Mae","Mezh.","Goue.","Eost","Gwen.","Here","Du","Kerz."],today:"Hiziv",monthsTitle:"Miz",clear:"Dilemel",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.hy.min.js 0000644 00000001365 15002261751 0021250 0 ustar 00 !function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js 0000644 00000001277 15002261751 0022237 0 ustar 00 !function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.nl.min.js 0000644 00000001001 15002261751 0021224 0 ustar 00 !function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.es.min.js 0000644 00000001001 15002261751 0021222 0 ustar 00 !function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.bs.min.js 0000644 00000000733 15002261751 0021232 0 ustar 00 !function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.pt-BR.min.js 0000644 00000000770 15002261751 0021553 0 ustar 00 !function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.hi.min.js 0000644 00000001660 15002261751 0021226 0 ustar 00 !function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.da.min.js 0000644 00000001002 15002261751 0021200 0 ustar 00 !function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",weekStart:1,clear:"Nulstil",format:"dd/mm/yyyy",monthsTitle:"Måneder"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fa.min.js 0000644 00000001236 15002261751 0021213 0 ustar 00 !function(a){a.fn.datepicker.dates.fa={days:["یکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.nl-BE.min.js 0000644 00000001012 15002261751 0021512 0 ustar 00 !function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sk.min.js 0000644 00000000761 15002261751 0021244 0 ustar 00 !function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.tr.min.js 0000644 00000000757 15002261751 0021261 0 ustar 00 !function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.eu.min.js 0000644 00000001020 15002261751 0021225 0 ustar 00 !function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur",monthsTitle:"Hilabeteak",clear:"Ezabatu",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.no.min.js 0000644 00000001003 15002261751 0021231 0 ustar 00 !function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.cy.min.js 0000644 00000000661 15002261751 0021241 0 ustar 00 !function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.vi.min.js 0000644 00000001047 15002261751 0021243 0 ustar 00 !function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fi.min.js 0000644 00000001020 15002261751 0021212 0 ustar 00 !function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.az.min.js 0000644 00000001023 15002261751 0021231 0 ustar 00 !function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1,clear:"Təmizlə",monthsTitle:"Aylar"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.rs-latin.min.js 0000644 00000001226 15002261751 0022355 0 ustar 00 !function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs-latin" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use "sr-latin" instead.')}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ca.min.js 0000644 00000001001 15002261751 0021176 0 ustar 00 !function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.min.js 0000644 00000001145 15002261751 0021543 0 ustar 00 !function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sr.min.js 0000644 00000001213 15002261751 0021244 0 ustar 00 !function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.uz-latn.min.js 0000644 00000001004 15002261751 0022210 0 ustar 00 !function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.en-GB.min.js 0000644 00000001006 15002261751 0021510 0 ustar 00 !function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.me.min.js 0000644 00000000755 15002261751 0021233 0 ustar 00 !function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sv.min.js 0000644 00000000754 15002261751 0021261 0 ustar 00 !function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sw.min.js 0000644 00000000657 15002261751 0021264 0 ustar 00 !function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.sr-latin.min.js 0000644 00000000736 15002261751 0022362 0 ustar 00 !function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.oc.min.js 0000644 00000001003 15002261751 0021216 0 ustar 00 !function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.lv.min.js 0000644 00000001016 15002261751 0021242 0 ustar 00 !function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.km.min.js 0000644 00000001661 15002261751 0021236 0 ustar 00 !function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.kh.min.js 0000644 00000002064 15002261751 0021227 0 ustar 00 !function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"},a.fn.datepicker.deprecated('The language code "kh" is deprecated and will be removed in 2.0. For Khmer support use "km" instead.')}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ta.min.js 0000644 00000001646 15002261751 0021236 0 ustar 00 !function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.it.min.js 0000644 00000001015 15002261751 0021234 0 ustar 00 !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.mn.min.js 0000644 00000001176 15002261751 0021242 0 ustar 00 !function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.kr.min.js 0000644 00000001077 15002261751 0021244 0 ustar 00 !function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fr.min.js 0000644 00000001030 15002261751 0021224 0 ustar 00 !function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],daysMin:["d","l","ma","me","j","v","s"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.id.min.js 0000644 00000000705 15002261751 0021221 0 ustar 00 !function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.et.min.js 0000644 00000001031 15002261751 0021226 0 ustar 00 !function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.eo.min.js 0000644 00000001003 15002261751 0021220 0 ustar 00 !function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.hu.min.js 0000644 00000001035 15002261751 0021236 0 ustar 00 !function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.tg.min.js 0000644 00000001274 15002261751 0021241 0 ustar 00 !function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.el.min.js 0000644 00000001374 15002261751 0021230 0 ustar 00 !function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fo.min.js 0000644 00000000750 15002261751 0021231 0 ustar 00 !function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ka.min.js 0000644 00000001712 15002261751 0021217 0 ustar 00 !function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.uk.min.js 0000644 00000001322 15002261751 0021240 0 ustar 00 !function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ms.min.js 0000644 00000000700 15002261751 0021237 0 ustar 00 !function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.hr.min.js 0000644 00000000716 15002261751 0021240 0 ustar 00 !function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ko.min.js 0000644 00000001024 15002261751 0021231 0 ustar 00 !function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.rs.min.js 0000644 00000001461 15002261751 0021251 0 ustar 00 !function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use "sr" instead.')}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.fr-CH.min.js 0000644 00000001000 15002261751 0021511 0 ustar 00 !function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.en-AU.min.js 0000644 00000001005 15002261751 0021524 0 ustar 00 !function(a){a.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.th.min.js 0000644 00000001501 15002261751 0021233 0 ustar 00 !function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.en-IE.min.js 0000644 00000001006 15002261751 0021515 0 ustar 00 !function(a){a.fn.datepicker.dates["en-IE"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.ru.min.js 0000644 00000001333 15002261751 0021251 0 ustar 00 !function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery); AdminLTE/plugins/datepicker/locales/bootstrap-datepicker.he.min.js 0000644 00000001063 15002261751 0021217 0 ustar 00 !function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery); AdminLTE/plugins/datepicker/.github/ISSUE_TEMPLATE.md 0000644 00000000316 15002261751 0016001 0 ustar 00 ### Expected behaviour Tell us what should happen. ### Actual behaviour Tell us what happens instead. ### Datepicker version used ex. 1.6.1. ### Example code Jsfiddle example to reproduce the problem. AdminLTE/plugins/datepicker/.github/PULL_REQUEST_TEMPLATE.md 0000644 00000000323 15002261751 0017073 0 ustar 00 | Q | A | --------------- | --- | Bug fix? | no|yes | New feature? | no|yes | BC breaks? | no|yes | Related tickets | fixes #X, partially #Y, mentioned in #Z | License | MIT AdminLTE/plugins/datepicker/.editorconfig 0000644 00000000310 15002261751 0014403 0 ustar 00 # EditorConfig is awesome: https://editorconfig.org root = true [*] charset = utf-8 end_of_line = lf indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true AdminLTE/plugins/slimScroll/jquery.slimscroll.min.js 0000644 00000011164 15002261751 0016570 0 ustar 00 /*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. * * Version: 1.3.8 * */ (function(e){e.fn.extend({slimScroll:function(f){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},f);this.each(function(){function v(d){if(r){d=d||window.event; var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);e(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&n(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function n(d,g,e){k=!1;var f=b.outerHeight()-c.outerHeight();g&&(g=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),g=Math.min(Math.max(g,0),f),g=0<d?Math.ceil(g):Math.floor(g),c.css({top:g+"px"}));l=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());g= l*(b[0].scrollHeight-b.outerHeight());e&&(g=d,d=g/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),f),c.css({top:d+"px"}));b.scrollTop(g);b.trigger("slimscrolling",~~g);w();p()}function x(){u=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),30);c.css({height:u+"px"});var a=u==b.outerHeight()?"none":"block";c.css({display:a})}function w(){x();clearTimeout(B);l==~~l?(k=a.allowPageScroll,C!=l&&b.trigger("slimscroll",0==~~l?"top":"bottom")):k=!1;C=l;u>=b.outerHeight()?k=!0:(c.stop(!0, !0).fadeIn("fast"),a.railVisible&&m.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(B=setTimeout(function(){a.disableFadeOut&&r||y||z||(c.fadeOut("slow"),m.fadeOut("slow"))},1E3))}var r,y,z,B,A,u,l,C,k=!1,b=e(this);if(b.parent().hasClass(a.wrapperClass)){var q=b.scrollTop(),c=b.siblings("."+a.barClass),m=b.siblings("."+a.railClass);x();if(e.isPlainObject(f)){if("height"in f&&"auto"==f.height){b.parent().css("height","auto");b.css("height","auto");var h=b.parent().parent().height();b.parent().css("height", h);b.css("height",h)}else"height"in f&&(h=f.height,b.parent().css("height",h),b.css("height",h));if("scrollTo"in f)q=parseInt(a.scrollTo);else if("scrollBy"in f)q+=parseInt(a.scrollBy);else if("destroy"in f){c.remove();m.remove();b.unwrap();return}n(q,!1,!0)}}else if(!(e.isPlainObject(f)&&"destroy"in f)){a.height="auto"==a.height?b.parent().height():a.height;q=e("<div></div>").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden", width:a.width,height:a.height});var m=e("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=e("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius, WebkitBorderRadius:a.borderRadius,zIndex:99}),h="right"==a.position?{right:a.distance}:{left:a.distance};m.css(h);c.css(h);b.wrap(q);b.parent().append(c);b.parent().append(m);a.railDraggable&&c.bind("mousedown",function(a){var b=e(document);z=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);n(0,c.position().top,!1)});b.bind("mouseup.slimscroll",function(a){z=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll", function(a){a.stopPropagation();a.preventDefault();return!1});m.hover(function(){w()},function(){p()});c.hover(function(){y=!0},function(){y=!1});b.hover(function(){r=!0;w();p()},function(){r=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(A=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&(n((A-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),A=b.originalEvent.touches[0].pageY)}); x();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),n(0,!0)):"top"!==a.start&&(n(e(a.start).position().top,null,!0),a.alwaysVisible||c.hide());window.addEventListener?(this.addEventListener("DOMMouseScroll",v,!1),this.addEventListener("mousewheel",v,!1)):document.attachEvent("onmousewheel",v)}});return this}});e.fn.extend({slimscroll:e.fn.slimScroll})})(jQuery); AdminLTE/plugins/slimScroll/jquery.slimscroll.js 0000644 00000033010 15002261751 0016000 0 ustar 00 /*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. * * Version: 1.3.8 * */ (function($) { $.fn.extend({ slimScroll: function(options) { var defaults = { // width in pixels of the visible scroll area width : 'auto', // height in pixels of the visible scroll area height : '250px', // width in pixels of the scrollbar and rail size : '7px', // scrollbar color, accepts any hex/color value color: '#000', // scrollbar position - left/right position : 'right', // distance in pixels between the side edge and the scrollbar distance : '1px', // default scroll position on load - top / bottom / $('selector') start : 'top', // sets scrollbar opacity opacity : .4, // enables always-on mode for the scrollbar alwaysVisible : false, // check if we should hide the scrollbar when user is hovering over disableFadeOut : false, // sets visibility of the rail railVisible : false, // sets rail color railColor : '#333', // sets rail opacity railOpacity : .2, // whether we should use jQuery UI Draggable to enable bar dragging railDraggable : true, // defautlt CSS class of the slimscroll rail railClass : 'slimScrollRail', // defautlt CSS class of the slimscroll bar barClass : 'slimScrollBar', // defautlt CSS class of the slimscroll wrapper wrapperClass : 'slimScrollDiv', // check if mousewheel should scroll the window if we reach top/bottom allowPageScroll : false, // scroll amount applied to each mouse wheel step wheelStep : 20, // scroll amount applied when user is using gestures touchScrollStep : 200, // sets border radius borderRadius: '7px', // sets border radius of the rail railBorderRadius : '7px' }; var o = $.extend(defaults, options); // do it for every element that matches selector this.each(function(){ var isOverPanel, isOverBar, isDragg, queueHide, touchDif, barHeight, percentScroll, lastScroll, divS = '<div></div>', minBarHeight = 30, releaseScroll = false; // used in event handlers and for better minification var me = $(this); // ensure we are not binding it again if (me.parent().hasClass(o.wrapperClass)) { // start from last bar position var offset = me.scrollTop(); // find bar and rail bar = me.siblings('.' + o.barClass); rail = me.siblings('.' + o.railClass); getBarHeight(); // check if we should scroll existing instance if ($.isPlainObject(options)) { // Pass height: auto to an existing slimscroll object to force a resize after contents have changed if ( 'height' in options && options.height == 'auto' ) { me.parent().css('height', 'auto'); me.css('height', 'auto'); var height = me.parent().parent().height(); me.parent().css('height', height); me.css('height', height); } else if ('height' in options) { var h = options.height; me.parent().css('height', h); me.css('height', h); } if ('scrollTo' in options) { // jump to a static point offset = parseInt(o.scrollTo); } else if ('scrollBy' in options) { // jump by value pixels offset += parseInt(o.scrollBy); } else if ('destroy' in options) { // remove slimscroll elements bar.remove(); rail.remove(); me.unwrap(); return; } // scroll content by the given offset scrollContent(offset, false, true); } return; } else if ($.isPlainObject(options)) { if ('destroy' in options) { return; } } // optionally set height to the parent's height o.height = (o.height == 'auto') ? me.parent().height() : o.height; // wrap content var wrapper = $(divS) .addClass(o.wrapperClass) .css({ position: 'relative', overflow: 'hidden', width: o.width, height: o.height }); // update style for the div me.css({ overflow: 'hidden', width: o.width, height: o.height }); // create scrollbar rail var rail = $(divS) .addClass(o.railClass) .css({ width: o.size, height: '100%', position: 'absolute', top: 0, display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none', 'border-radius': o.railBorderRadius, background: o.railColor, opacity: o.railOpacity, zIndex: 90 }); // create scrollbar var bar = $(divS) .addClass(o.barClass) .css({ background: o.color, width: o.size, position: 'absolute', top: 0, opacity: o.opacity, display: o.alwaysVisible ? 'block' : 'none', 'border-radius' : o.borderRadius, BorderRadius: o.borderRadius, MozBorderRadius: o.borderRadius, WebkitBorderRadius: o.borderRadius, zIndex: 99 }); // set position var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance }; rail.css(posCss); bar.css(posCss); // wrap it me.wrap(wrapper); // append to parent div me.parent().append(bar); me.parent().append(rail); // make it draggable and no longer dependent on the jqueryUI if (o.railDraggable){ bar.bind("mousedown", function(e) { var $doc = $(document); isDragg = true; t = parseFloat(bar.css('top')); pageY = e.pageY; $doc.bind("mousemove.slimscroll", function(e){ currTop = t + e.pageY - pageY; bar.css('top', currTop); scrollContent(0, bar.position().top, false);// scroll content }); $doc.bind("mouseup.slimscroll", function(e) { isDragg = false;hideBar(); $doc.unbind('.slimscroll'); }); return false; }).bind("selectstart.slimscroll", function(e){ e.stopPropagation(); e.preventDefault(); return false; }); } // on rail over rail.hover(function(){ showBar(); }, function(){ hideBar(); }); // on bar over bar.hover(function(){ isOverBar = true; }, function(){ isOverBar = false; }); // show on parent mouseover me.hover(function(){ isOverPanel = true; showBar(); hideBar(); }, function(){ isOverPanel = false; hideBar(); }); // support for mobile me.bind('touchstart', function(e,b){ if (e.originalEvent.touches.length) { // record where touch started touchDif = e.originalEvent.touches[0].pageY; } }); me.bind('touchmove', function(e){ // prevent scrolling the page if necessary if(!releaseScroll) { e.originalEvent.preventDefault(); } if (e.originalEvent.touches.length) { // see how far user swiped var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep; // scroll content scrollContent(diff, true); touchDif = e.originalEvent.touches[0].pageY; } }); // set up initial height getBarHeight(); // check start position if (o.start === 'bottom') { // scroll content to bottom bar.css({ top: me.outerHeight() - bar.outerHeight() }); scrollContent(0, true); } else if (o.start !== 'top') { // assume jQuery selector scrollContent($(o.start).position().top, null, true); // make sure bar stays hidden if (!o.alwaysVisible) { bar.hide(); } } // attach scroll events attachWheel(this); function _onWheel(e) { // use mouse wheel only when mouse is over if (!isOverPanel) { return; } var e = e || window.event; var delta = 0; if (e.wheelDelta) { delta = -e.wheelDelta/120; } if (e.detail) { delta = e.detail / 3; } var target = e.target || e.srcTarget || e.srcElement; if ($(target).closest('.' + o.wrapperClass).is(me.parent())) { // scroll content scrollContent(delta, true); } // stop window scroll if (e.preventDefault && !releaseScroll) { e.preventDefault(); } if (!releaseScroll) { e.returnValue = false; } } function scrollContent(y, isWheel, isJump) { releaseScroll = false; var delta = y; var maxTop = me.outerHeight() - bar.outerHeight(); if (isWheel) { // move bar with mouse wheel delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight(); // move bar, make sure it doesn't go out delta = Math.min(Math.max(delta, 0), maxTop); // if scrolling down, make sure a fractional change to the // scroll position isn't rounded away when the scrollbar's CSS is set // this flooring of delta would happened automatically when // bar.css is set below, but we floor here for clarity delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta); // scroll the scrollbar bar.css({ top: delta + 'px' }); } // calculate actual scroll amount percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight()); delta = percentScroll * (me[0].scrollHeight - me.outerHeight()); if (isJump) { delta = y; var offsetTop = delta / me[0].scrollHeight * me.outerHeight(); offsetTop = Math.min(Math.max(offsetTop, 0), maxTop); bar.css({ top: offsetTop + 'px' }); } // scroll content me.scrollTop(delta); // fire scrolling event me.trigger('slimscrolling', ~~delta); // ensure bar is visible showBar(); // trigger hide when scroll is stopped hideBar(); } function attachWheel(target) { if (window.addEventListener) { target.addEventListener('DOMMouseScroll', _onWheel, false ); target.addEventListener('mousewheel', _onWheel, false ); } else { document.attachEvent("onmousewheel", _onWheel) } } function getBarHeight() { // calculate scrollbar height and make sure it is not too small barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight); bar.css({ height: barHeight + 'px' }); // hide scrollbar if content is not long enough var display = barHeight == me.outerHeight() ? 'none' : 'block'; bar.css({ display: display }); } function showBar() { // recalculate bar height getBarHeight(); clearTimeout(queueHide); // when bar reached top or bottom if (percentScroll == ~~percentScroll) { //release wheel releaseScroll = o.allowPageScroll; // publish approporiate event if (lastScroll != percentScroll) { var msg = (~~percentScroll == 0) ? 'top' : 'bottom'; me.trigger('slimscroll', msg); } } else { releaseScroll = false; } lastScroll = percentScroll; // show only when required if(barHeight >= me.outerHeight()) { //allow window scroll releaseScroll = true; return; } bar.stop(true,true).fadeIn('fast'); if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); } } function hideBar() { // only hide when options allow it if (!o.alwaysVisible) { queueHide = setTimeout(function(){ if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg) { bar.fadeOut('slow'); rail.fadeOut('slow'); } }, 1000); } } }); // maintain chainability return this; } }); $.fn.extend({ slimscroll: $.fn.slimScroll }); })(jQuery); AdminLTE/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js 0000644 00000101053 15002261751 0017240 0 ustar 00 /** * jVectorMap version 1.2.2 * * Copyright 2011-2013, Kirill Lebedev * Licensed under the MIT license. * */(function(e){var t={set:{colors:1,values:1,backgroundColor:1,scaleColors:1,normalizeFunction:1,focus:1},get:{selectedRegions:1,selectedMarkers:1,mapObject:1,regionName:1}};e.fn.vectorMap=function(e){var n,r,i,n=this.children(".jvectormap-container").data("mapObject");if(e==="addMap")jvm.WorldMap.maps[arguments[1]]=arguments[2];else{if(!(e!=="set"&&e!=="get"||!t[e][arguments[1]]))return r=arguments[1].charAt(0).toUpperCase()+arguments[1].substr(1),n[e+r].apply(n,Array.prototype.slice.call(arguments,2));e=e||{},e.container=this,n=new jvm.WorldMap(e)}return this}})(jQuery),function(e){function r(t){var n=t||window.event,r=[].slice.call(arguments,1),i=0,s=!0,o=0,u=0;return t=e.event.fix(n),t.type="mousewheel",n.wheelDelta&&(i=n.wheelDelta/120),n.detail&&(i=-n.detail/3),u=i,n.axis!==undefined&&n.axis===n.HORIZONTAL_AXIS&&(u=0,o=-1*i),n.wheelDeltaY!==undefined&&(u=n.wheelDeltaY/120),n.wheelDeltaX!==undefined&&(o=-1*n.wheelDeltaX/120),r.unshift(t,i,o,u),(e.event.dispatch||e.event.handle).apply(this,r)}var t=["DOMMouseScroll","mousewheel"];if(e.event.fixHooks)for(var n=t.length;n;)e.event.fixHooks[t[--n]]=e.event.mouseHooks;e.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],r,!1);else this.onmousewheel=r},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],r,!1);else this.onmousewheel=null}},e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}(jQuery);var jvm={inherits:function(e,t){function n(){}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e.parentClass=t},mixin:function(e,t){var n;for(n in t.prototype)t.prototype.hasOwnProperty(n)&&(e.prototype[n]=t.prototype[n])},min:function(e){var t=Number.MAX_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]<t&&(t=e[n]);else for(n in e)e[n]<t&&(t=e[n]);return t},max:function(e){var t=Number.MIN_VALUE,n;if(e instanceof Array)for(n=0;n<e.length;n++)e[n]>t&&(t=e[n]);else for(n in e)e[n]>t&&(t=e[n]);return t},keys:function(e){var t=[],n;for(n in e)t.push(n);return t},values:function(e){var t=[],n,r;for(r=0;r<arguments.length;r++){e=arguments[r];for(n in e)t.push(e[n])}return t}};jvm.$=jQuery,jvm.AbstractElement=function(e,t){this.node=this.createElement(e),this.name=e,this.properties={},t&&this.set(t)},jvm.AbstractElement.prototype.set=function(e,t){var n;if(typeof e=="object")for(n in e)this.properties[n]=e[n],this.applyAttr(n,e[n]);else this.properties[e]=t,this.applyAttr(e,t)},jvm.AbstractElement.prototype.get=function(e){return this.properties[e]},jvm.AbstractElement.prototype.applyAttr=function(e,t){this.node.setAttribute(e,t)},jvm.AbstractElement.prototype.remove=function(){jvm.$(this.node).remove()},jvm.AbstractCanvasElement=function(e,t,n){this.container=e,this.setSize(t,n),this.rootElement=new jvm[this.classPrefix+"GroupElement"],this.node.appendChild(this.rootElement.node),this.container.appendChild(this.node)},jvm.AbstractCanvasElement.prototype.add=function(e,t){t=t||this.rootElement,t.add(e),e.canvas=this},jvm.AbstractCanvasElement.prototype.addPath=function(e,t,n){var r=new jvm[this.classPrefix+"PathElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addCircle=function(e,t,n){var r=new jvm[this.classPrefix+"CircleElement"](e,t);return this.add(r,n),r},jvm.AbstractCanvasElement.prototype.addGroup=function(e){var t=new jvm[this.classPrefix+"GroupElement"];return e?e.node.appendChild(t.node):this.node.appendChild(t.node),t.canvas=this,t},jvm.AbstractShapeElement=function(e,t,n){this.style=n||{},this.style.current={},this.isHovered=!1,this.isSelected=!1,this.updateStyle()},jvm.AbstractShapeElement.prototype.setHovered=function(e){this.isHovered!==e&&(this.isHovered=e,this.updateStyle())},jvm.AbstractShapeElement.prototype.setSelected=function(e){this.isSelected!==e&&(this.isSelected=e,this.updateStyle(),jvm.$(this.node).trigger("selected",[e]))},jvm.AbstractShapeElement.prototype.setStyle=function(e,t){var n={};typeof e=="object"?n=e:n[e]=t,jvm.$.extend(this.style.current,n),this.updateStyle()},jvm.AbstractShapeElement.prototype.updateStyle=function(){var e={};jvm.AbstractShapeElement.mergeStyles(e,this.style.initial),jvm.AbstractShapeElement.mergeStyles(e,this.style.current),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.hover),this.isSelected&&(jvm.AbstractShapeElement.mergeStyles(e,this.style.selected),this.isHovered&&jvm.AbstractShapeElement.mergeStyles(e,this.style.selectedHover)),this.set(e)},jvm.AbstractShapeElement.mergeStyles=function(e,t){var n;t=t||{};for(n in t)t[n]===null?delete e[n]:e[n]=t[n]},jvm.SVGElement=function(e,t){jvm.SVGElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.SVGElement,jvm.AbstractElement),jvm.SVGElement.svgns="http://www.w3.org/2000/svg",jvm.SVGElement.prototype.createElement=function(e){return document.createElementNS(jvm.SVGElement.svgns,e)},jvm.SVGElement.prototype.addClass=function(e){this.node.setAttribute("class",e)},jvm.SVGElement.prototype.getElementCtr=function(e){return jvm["SVG"+e]},jvm.SVGElement.prototype.getBBox=function(){return this.node.getBBox()},jvm.SVGGroupElement=function(){jvm.SVGGroupElement.parentClass.call(this,"g")},jvm.inherits(jvm.SVGGroupElement,jvm.SVGElement),jvm.SVGGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.SVGCanvasElement=function(e,t,n){this.classPrefix="SVG",jvm.SVGCanvasElement.parentClass.call(this,"svg"),jvm.AbstractCanvasElement.apply(this,arguments)},jvm.inherits(jvm.SVGCanvasElement,jvm.SVGElement),jvm.mixin(jvm.SVGCanvasElement,jvm.AbstractCanvasElement),jvm.SVGCanvasElement.prototype.setSize=function(e,t){this.width=e,this.height=t,this.node.setAttribute("width",e),this.node.setAttribute("height",t)},jvm.SVGCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.setAttribute("transform","scale("+e+") translate("+t+", "+n+")")},jvm.SVGShapeElement=function(e,t,n){jvm.SVGShapeElement.parentClass.call(this,e,t),jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.SVGShapeElement,jvm.SVGElement),jvm.mixin(jvm.SVGShapeElement,jvm.AbstractShapeElement),jvm.SVGPathElement=function(e,t){jvm.SVGPathElement.parentClass.call(this,"path",e,t),this.node.setAttribute("fill-rule","evenodd")},jvm.inherits(jvm.SVGPathElement,jvm.SVGShapeElement),jvm.SVGCircleElement=function(e,t){jvm.SVGCircleElement.parentClass.call(this,"circle",e,t)},jvm.inherits(jvm.SVGCircleElement,jvm.SVGShapeElement),jvm.VMLElement=function(e,t){jvm.VMLElement.VMLInitialized||jvm.VMLElement.initializeVML(),jvm.VMLElement.parentClass.apply(this,arguments)},jvm.inherits(jvm.VMLElement,jvm.AbstractElement),jvm.VMLElement.VMLInitialized=!1,jvm.VMLElement.initializeVML=function(){try{document.namespaces.rvml||document.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<rvml:"+e+' class="rvml">')}}catch(e){jvm.VMLElement.prototype.createElement=function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}document.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"),jvm.VMLElement.VMLInitialized=!0},jvm.VMLElement.prototype.getElementCtr=function(e){return jvm["VML"+e]},jvm.VMLElement.prototype.addClass=function(e){jvm.$(this.node).addClass(e)},jvm.VMLElement.prototype.applyAttr=function(e,t){this.node[e]=t},jvm.VMLElement.prototype.getBBox=function(){var e=jvm.$(this.node);return{x:e.position().left/this.canvas.scale,y:e.position().top/this.canvas.scale,width:e.width()/this.canvas.scale,height:e.height()/this.canvas.scale}},jvm.VMLGroupElement=function(){jvm.VMLGroupElement.parentClass.call(this,"group"),this.node.style.left="0px",this.node.style.top="0px",this.node.coordorigin="0 0"},jvm.inherits(jvm.VMLGroupElement,jvm.VMLElement),jvm.VMLGroupElement.prototype.add=function(e){this.node.appendChild(e.node)},jvm.VMLCanvasElement=function(e,t,n){this.classPrefix="VML",jvm.VMLCanvasElement.parentClass.call(this,"group"),jvm.AbstractCanvasElement.apply(this,arguments),this.node.style.position="absolute"},jvm.inherits(jvm.VMLCanvasElement,jvm.VMLElement),jvm.mixin(jvm.VMLCanvasElement,jvm.AbstractCanvasElement),jvm.VMLCanvasElement.prototype.setSize=function(e,t){var n,r,i,s;this.width=e,this.height=t,this.node.style.width=e+"px",this.node.style.height=t+"px",this.node.coordsize=e+" "+t,this.node.coordorigin="0 0";if(this.rootElement){n=this.rootElement.node.getElementsByTagName("shape");for(i=0,s=n.length;i<s;i++)n[i].coordsize=e+" "+t,n[i].style.width=e+"px",n[i].style.height=t+"px";r=this.node.getElementsByTagName("group");for(i=0,s=r.length;i<s;i++)r[i].coordsize=e+" "+t,r[i].style.width=e+"px",r[i].style.height=t+"px"}},jvm.VMLCanvasElement.prototype.applyTransformParams=function(e,t,n){this.scale=e,this.transX=t,this.transY=n,this.rootElement.node.coordorigin=this.width-t-this.width/100+","+(this.height-n-this.height/100),this.rootElement.node.coordsize=this.width/e+","+this.height/e},jvm.VMLShapeElement=function(e,t){jvm.VMLShapeElement.parentClass.call(this,e,t),this.fillElement=new jvm.VMLElement("fill"),this.strokeElement=new jvm.VMLElement("stroke"),this.node.appendChild(this.fillElement.node),this.node.appendChild(this.strokeElement.node),this.node.stroked=!1,jvm.AbstractShapeElement.apply(this,arguments)},jvm.inherits(jvm.VMLShapeElement,jvm.VMLElement),jvm.mixin(jvm.VMLShapeElement,jvm.AbstractShapeElement),jvm.VMLShapeElement.prototype.applyAttr=function(e,t){switch(e){case"fill":this.node.fillcolor=t;break;case"fill-opacity":this.fillElement.node.opacity=Math.round(t*100)+"%";break;case"stroke":t==="none"?this.node.stroked=!1:this.node.stroked=!0,this.node.strokecolor=t;break;case"stroke-opacity":this.strokeElement.node.opacity=Math.round(t*100)+"%";break;case"stroke-width":parseInt(t,10)===0?this.node.stroked=!1:this.node.stroked=!0,this.node.strokeweight=t;break;case"d":this.node.path=jvm.VMLPathElement.pathSvgToVml(t);break;default:jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this,arguments)}},jvm.VMLPathElement=function(e,t){var n=new jvm.VMLElement("skew");jvm.VMLPathElement.parentClass.call(this,"shape",e,t),this.node.coordorigin="0 0",n.node.on=!0,n.node.matrix="0.01,0,0,0.01,0,0",n.node.offset="0,0",this.node.appendChild(n.node)},jvm.inherits(jvm.VMLPathElement,jvm.VMLShapeElement),jvm.VMLPathElement.prototype.applyAttr=function(e,t){e==="d"?this.node.path=jvm.VMLPathElement.pathSvgToVml(t):jvm.VMLShapeElement.prototype.applyAttr.call(this,e,t)},jvm.VMLPathElement.pathSvgToVml=function(e){var t="",n=0,r=0,i,s;return e=e.replace(/(-?\d+)e(-?\d+)/g,"0"),e.replace(/([MmLlHhVvCcSs])\s*((?:-?\d*(?:\.\d+)?\s*,?\s*)+)/g,function(e,t,o,u){o=o.replace(/(\d)-/g,"$1,-").replace(/^\s+/g,"").replace(/\s+$/g,"").replace(/\s+/g,",").split(","),o[0]||o.shift();for(var a=0,f=o.length;a<f;a++)o[a]=Math.round(100*o[a]);switch(t){case"m":return n+=o[0],r+=o[1],"t"+o.join(",");case"M":return n=o[0],r=o[1],"m"+o.join(",");case"l":return n+=o[0],r+=o[1],"r"+o.join(",");case"L":return n=o[0],r=o[1],"l"+o.join(",");case"h":return n+=o[0],"r"+o[0]+",0";case"H":return n=o[0],"l"+n+","+r;case"v":return r+=o[0],"r0,"+o[0];case"V":return r=o[0],"l"+n+","+r;case"c":return i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"C":return i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",");case"s":return o.unshift(r-s),o.unshift(n-i),i=n+o[o.length-4],s=r+o[o.length-3],n+=o[o.length-2],r+=o[o.length-1],"v"+o.join(",");case"S":return o.unshift(r+r-s),o.unshift(n+n-i),i=o[o.length-4],s=o[o.length-3],n=o[o.length-2],r=o[o.length-1],"c"+o.join(",")}return""}).replace(/z/g,"e")},jvm.VMLCircleElement=function(e,t){jvm.VMLCircleElement.parentClass.call(this,"oval",e,t)},jvm.inherits(jvm.VMLCircleElement,jvm.VMLShapeElement),jvm.VMLCircleElement.prototype.applyAttr=function(e,t){switch(e){case"r":this.node.style.width=t*2+"px",this.node.style.height=t*2+"px",this.applyAttr("cx",this.get("cx")||0),this.applyAttr("cy",this.get("cy")||0);break;case"cx":if(!t)return;this.node.style.left=t-(this.get("r")||0)+"px";break;case"cy":if(!t)return;this.node.style.top=t-(this.get("r")||0)+"px";break;default:jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this,e,t)}},jvm.VectorCanvas=function(e,t,n){return this.mode=window.SVGAngle?"svg":"vml",this.mode=="svg"?this.impl=new jvm.SVGCanvasElement(e,t,n):this.impl=new jvm.VMLCanvasElement(e,t,n),this.impl},jvm.SimpleScale=function(e){this.scale=e},jvm.SimpleScale.prototype.getValue=function(e){return e},jvm.OrdinalScale=function(e){this.scale=e},jvm.OrdinalScale.prototype.getValue=function(e){return this.scale[e]},jvm.NumericScale=function(e,t,n,r){this.scale=[],t=t||"linear",e&&this.setScale(e),t&&this.setNormalizeFunction(t),n&&this.setMin(n),r&&this.setMax(r)},jvm.NumericScale.prototype={setMin:function(e){this.clearMinValue=e,typeof this.normalize=="function"?this.minValue=this.normalize(e):this.minValue=e},setMax:function(e){this.clearMaxValue=e,typeof this.normalize=="function"?this.maxValue=this.normalize(e):this.maxValue=e},setScale:function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=[e[t]]},setNormalizeFunction:function(e){e==="polynomial"?this.normalize=function(e){return Math.pow(e,.2)}:e==="linear"?delete this.normalize:this.normalize=e,this.setMin(this.clearMinValue),this.setMax(this.clearMaxValue)},getValue:function(e){var t=[],n=0,r,i=0,s;typeof this.normalize=="function"&&(e=this.normalize(e));for(i=0;i<this.scale.length-1;i++)r=this.vectorLength(this.vectorSubtract(this.scale[i+1],this.scale[i])),t.push(r),n+=r;s=(this.maxValue-this.minValue)/n;for(i=0;i<t.length;i++)t[i]*=s;i=0,e-=this.minValue;while(e-t[i]>=0)e-=t[i],i++;return i==this.scale.length-1?e=this.vectorToNum(this.scale[i]):e=this.vectorToNum(this.vectorAdd(this.scale[i],this.vectorMult(this.vectorSubtract(this.scale[i+1],this.scale[i]),e/t[i]))),e},vectorToNum:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=Math.round(e[n])*Math.pow(256,e.length-n-1);return t},vectorSubtract:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]-t[r];return n},vectorAdd:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]+t[r];return n},vectorMult:function(e,t){var n=[],r;for(r=0;r<e.length;r++)n[r]=e[r]*t;return n},vectorLength:function(e){var t=0,n;for(n=0;n<e.length;n++)t+=e[n]*e[n];return Math.sqrt(t)}},jvm.ColorScale=function(e,t,n,r){jvm.ColorScale.parentClass.apply(this,arguments)},jvm.inherits(jvm.ColorScale,jvm.NumericScale),jvm.ColorScale.prototype.setScale=function(e){var t;for(t=0;t<e.length;t++)this.scale[t]=jvm.ColorScale.rgbToArray(e[t])},jvm.ColorScale.prototype.getValue=function(e){return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this,e))},jvm.ColorScale.arrayToRgb=function(e){var t="#",n,r;for(r=0;r<e.length;r++)n=e[r].toString(16),t+=n.length==1?"0"+n:n;return t},jvm.ColorScale.numToRgb=function(e){e=e.toString(16);while(e.length<6)e="0"+e;return"#"+e},jvm.ColorScale.rgbToArray=function(e){return e=e.substr(1),[parseInt(e.substr(0,2),16),parseInt(e.substr(2,2),16),parseInt(e.substr(4,2),16)]},jvm.DataSeries=function(e,t){var n;e=e||{},e.attribute=e.attribute||"fill",this.elements=t,this.params=e,e.attributes&&this.setAttributes(e.attributes),jvm.$.isArray(e.scale)?(n=e.attribute==="fill"||e.attribute==="stroke"?jvm.ColorScale:jvm.NumericScale,this.scale=new n(e.scale,e.normalizeFunction,e.min,e.max)):e.scale?this.scale=new jvm.OrdinalScale(e.scale):this.scale=new jvm.SimpleScale(e.scale),this.values=e.values||{},this.setValues(this.values)},jvm.DataSeries.prototype={setAttributes:function(e,t){var n=e,r;if(typeof e=="string")this.elements[e]&&this.elements[e].setStyle(this.params.attribute,t);else for(r in n)this.elements[r]&&this.elements[r].element.setStyle(this.params.attribute,n[r])},setValues:function(e){var t=Number.MIN_VALUE,n=Number.MAX_VALUE,r,i,s={};if(this.scale instanceof jvm.OrdinalScale||this.scale instanceof jvm.SimpleScale)for(i in e)e[i]?s[i]=this.scale.getValue(e[i]):s[i]=this.elements[i].element.style.initial[this.params.attribute];else{if(!this.params.min||!this.params.max){for(i in e)r=parseFloat(e[i]),r>t&&(t=e[i]),r<n&&(n=r);this.params.min||this.scale.setMin(n),this.params.max||this.scale.setMax(t),this.params.min=n,this.params.max=t}for(i in e)r=parseFloat(e[i]),isNaN(r)?s[i]=this.elements[i].element.style.initial[this.params.attribute]:s[i]=this.scale.getValue(r)}this.setAttributes(s),jvm.$.extend(this.values,e)},clear:function(){var e,t={};for(e in this.values)this.elements[e]&&(t[e]=this.elements[e].element.style.initial[this.params.attribute]);this.setAttributes(t),this.values={}},setScale:function(e){this.scale.setScale(e),this.values&&this.setValues(this.values)},setNormalizeFunction:function(e){this.scale.setNormalizeFunction(e),this.values&&this.setValues(this.values)}},jvm.Proj={degRad:180/Math.PI,radDeg:Math.PI/180,radius:6381372,sgn:function(e){return e>0?1:e<0?-1:e},mill:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan((45+.4*e)*this.radDeg))/.8}},mill_inv:function(e,t,n){return{lat:(2.5*Math.atan(Math.exp(.8*t/this.radius))-5*Math.PI/8)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},merc:function(e,t,n){return{x:this.radius*(t-n)*this.radDeg,y:-this.radius*Math.log(Math.tan(Math.PI/4+e*Math.PI/360))}},merc_inv:function(e,t,n){return{lat:(2*Math.atan(Math.exp(t/this.radius))-Math.PI/2)*this.degRad,lng:(n*this.radDeg+e/this.radius)*this.degRad}},aea:function(e,t,n){var r=0,i=n*this.radDeg,s=29.5*this.radDeg,o=45.5*this.radDeg,u=e*this.radDeg,a=t*this.radDeg,f=(Math.sin(s)+Math.sin(o))/2,l=Math.cos(s)*Math.cos(s)+2*f*Math.sin(s),c=f*(a-i),h=Math.sqrt(l-2*f*Math.sin(u))/f,p=Math.sqrt(l-2*f*Math.sin(r))/f;return{x:h*Math.sin(c)*this.radius,y:-(p-h*Math.cos(c))*this.radius}},aea_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=29.5*this.radDeg,a=45.5*this.radDeg,f=(Math.sin(u)+Math.sin(a))/2,l=Math.cos(u)*Math.cos(u)+2*f*Math.sin(u),c=Math.sqrt(l-2*f*Math.sin(s))/f,h=Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:Math.asin((l-h*h*f*f)/(2*f))*this.degRad,lng:(o+p/f)*this.degRad}},lcc:function(e,t,n){var r=0,i=n*this.radDeg,s=t*this.radDeg,o=33*this.radDeg,u=45*this.radDeg,a=e*this.radDeg,f=Math.log(Math.cos(o)*(1/Math.cos(u)))/Math.log(Math.tan(Math.PI/4+u/2)*(1/Math.tan(Math.PI/4+o/2))),l=Math.cos(o)*Math.pow(Math.tan(Math.PI/4+o/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+a/2),f),h=l*Math.pow(1/Math.tan(Math.PI/4+r/2),f);return{x:c*Math.sin(f*(s-i))*this.radius,y:-(h-c*Math.cos(f*(s-i)))*this.radius}},lcc_inv:function(e,t,n){var r=e/this.radius,i=t/this.radius,s=0,o=n*this.radDeg,u=33*this.radDeg,a=45*this.radDeg,f=Math.log(Math.cos(u)*(1/Math.cos(a)))/Math.log(Math.tan(Math.PI/4+a/2)*(1/Math.tan(Math.PI/4+u/2))),l=Math.cos(u)*Math.pow(Math.tan(Math.PI/4+u/2),f)/f,c=l*Math.pow(1/Math.tan(Math.PI/4+s/2),f),h=this.sgn(f)*Math.sqrt(r*r+(c-i)*(c-i)),p=Math.atan(r/(c-i));return{lat:(2*Math.atan(Math.pow(l/h,1/f))-Math.PI/2)*this.degRad,lng:(o+p/f)*this.degRad}}},jvm.WorldMap=function(e){var t=this,n;this.params=jvm.$.extend(!0,{},jvm.WorldMap.defaultParams,e);if(!jvm.WorldMap.maps[this.params.map])throw new Error("Attempt to use map which was not loaded: "+this.params.map);this.mapData=jvm.WorldMap.maps[this.params.map],this.markers={},this.regions={},this.regionsColors={},this.regionsData={},this.container=jvm.$("<div>").css({width:"100%",height:"100%"}).addClass("jvectormap-container"),this.params.container.append(this.container),this.container.data("mapObject",this),this.container.css({position:"relative",overflow:"hidden"}),this.defaultWidth=this.mapData.width,this.defaultHeight=this.mapData.height,this.setBackgroundColor(this.params.backgroundColor),this.onResize=function(){t.setSize()},jvm.$(window).resize(this.onResize);for(n in jvm.WorldMap.apiEvents)this.params[n]&&this.container.bind(jvm.WorldMap.apiEvents[n]+".jvectormap",this.params[n]);this.canvas=new jvm.VectorCanvas(this.container[0],this.width,this.height),"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch?this.params.bindTouchEvents&&this.bindContainerTouchEvents():this.bindContainerEvents(),this.bindElementEvents(),this.createLabel(),this.params.zoomButtons&&this.bindZoomButtons(),this.createRegions(),this.createMarkers(this.params.markers||{}),this.setSize(),this.params.focusOn&&(typeof this.params.focusOn=="object"?this.setFocus.call(this,this.params.focusOn.scale,this.params.focusOn.x,this.params.focusOn.y):this.setFocus.call(this,this.params.focusOn)),this.params.selectedRegions&&this.setSelectedRegions(this.params.selectedRegions),this.params.selectedMarkers&&this.setSelectedMarkers(this.params.selectedMarkers),this.params.series&&this.createSeries()},jvm.WorldMap.prototype={transX:0,transY:0,scale:1,baseTransX:0,baseTransY:0,baseScale:1,width:0,height:0,setBackgroundColor:function(e){this.container.css("background-color",e)},resize:function(){var e=this.baseScale;this.width/this.height>this.defaultWidth/this.defaultHeight?(this.baseScale=this.height/this.defaultHeight,this.baseTransX=Math.abs(this.width-this.defaultWidth*this.baseScale)/(2*this.baseScale)):(this.baseScale=this.width/this.defaultWidth,this.baseTransY=Math.abs(this.height-this.defaultHeight*this.baseScale)/(2*this.baseScale)),this.scale*=this.baseScale/e,this.transX*=this.baseScale/e,this.transY*=this.baseScale/e},setSize:function(){this.width=this.container.width(),this.height=this.container.height(),this.resize(),this.canvas.setSize(this.width,this.height),this.applyTransform()},reset:function(){var e,t;for(e in this.series)for(t=0;t<this.series[e].length;t++)this.series[e][t].clear();this.scale=this.baseScale,this.transX=this.baseTransX,this.transY=this.baseTransY,this.applyTransform()},applyTransform:function(){var e,t,n,r;this.defaultWidth*this.scale<=this.width?(e=(this.width-this.defaultWidth*this.scale)/(2*this.scale),n=(this.width-this.defaultWidth*this.scale)/(2*this.scale)):(e=0,n=(this.width-this.defaultWidth*this.scale)/this.scale),this.defaultHeight*this.scale<=this.height?(t=(this.height-this.defaultHeight*this.scale)/(2*this.scale),r=(this.height-this.defaultHeight*this.scale)/(2*this.scale)):(t=0,r=(this.height-this.defaultHeight*this.scale)/this.scale),this.transY>t?this.transY=t:this.transY<r&&(this.transY=r),this.transX>e?this.transX=e:this.transX<n&&(this.transX=n),this.canvas.applyTransformParams(this.scale,this.transX,this.transY),this.markers&&this.repositionMarkers(),this.container.trigger("viewportChange",[this.scale/this.baseScale,this.transX,this.transY])},bindContainerEvents:function(){var e=!1,t,n,r=this;this.container.mousemove(function(i){return e&&(r.transX-=(t-i.pageX)/r.scale,r.transY-=(n-i.pageY)/r.scale,r.applyTransform(),t=i.pageX,n=i.pageY),!1}).mousedown(function(r){return e=!0,t=r.pageX,n=r.pageY,!1}),jvm.$("body").mouseup(function(){e=!1}),this.params.zoomOnScroll&&this.container.mousewheel(function(e,t,n,i){var s=jvm.$(r.container).offset(),o=e.pageX-s.left,u=e.pageY-s.top,a=Math.pow(1.3,i);r.label.hide(),r.setScale(r.scale*a,o,u),e.preventDefault()})},bindContainerTouchEvents:function(){var e,t,n=this,r,i,s,o,u,a=function(a){var f=a.originalEvent.touches,l,c,h,p;a.type=="touchstart"&&(u=0),f.length==1?(u==1&&(h=n.transX,p=n.transY,n.transX-=(r-f[0].pageX)/n.scale,n.transY-=(i-f[0].pageY)/n.scale,n.applyTransform(),n.label.hide(),(h!=n.transX||p!=n.transY)&&a.preventDefault()),r=f[0].pageX,i=f[0].pageY):f.length==2&&(u==2?(c=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2))/t,n.setScale(e*c,s,o),n.label.hide(),a.preventDefault()):(l=jvm.$(n.container).offset(),f[0].pageX>f[1].pageX?s=f[1].pageX+(f[0].pageX-f[1].pageX)/2:s=f[0].pageX+(f[1].pageX-f[0].pageX)/2,f[0].pageY>f[1].pageY?o=f[1].pageY+(f[0].pageY-f[1].pageY)/2:o=f[0].pageY+(f[1].pageY-f[0].pageY)/2,s-=l.left,o-=l.top,e=n.scale,t=Math.sqrt(Math.pow(f[0].pageX-f[1].pageX,2)+Math.pow(f[0].pageY-f[1].pageY,2)))),u=f.length};jvm.$(this.container).bind("touchstart",a),jvm.$(this.container).bind("touchmove",a)},bindElementEvents:function(){var e=this,t;this.container.mousemove(function(){t=!0}),this.container.delegate("[class~='jvectormap-element']","mouseover mouseout",function(t){var n=this,r=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),i=r.indexOf("jvectormap-region")===-1?"marker":"region",s=i=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),o=i=="region"?e.regions[s].element:e.markers[s].element,u=i=="region"?e.mapData.paths[s].name:e.markers[s].config.name||"",a=jvm.$.Event(i+"LabelShow.jvectormap"),f=jvm.$.Event(i+"Over.jvectormap");t.type=="mouseover"?(e.container.trigger(f,[s]),f.isDefaultPrevented()||o.setHovered(!0),e.label.text(u),e.container.trigger(a,[e.label,s]),a.isDefaultPrevented()||(e.label.show(),e.labelWidth=e.label.width(),e.labelHeight=e.label.height())):(o.setHovered(!1),e.label.hide(),e.container.trigger(i+"Out.jvectormap",[s]))}),this.container.delegate("[class~='jvectormap-element']","mousedown",function(e){t=!1}),this.container.delegate("[class~='jvectormap-element']","mouseup",function(n){var r=this,i=jvm.$(this).attr("class").baseVal?jvm.$(this).attr("class").baseVal:jvm.$(this).attr("class"),s=i.indexOf("jvectormap-region")===-1?"marker":"region",o=s=="region"?jvm.$(this).attr("data-code"):jvm.$(this).attr("data-index"),u=jvm.$.Event(s+"Click.jvectormap"),a=s=="region"?e.regions[o].element:e.markers[o].element;if(!t){e.container.trigger(u,[o]);if(s==="region"&&e.params.regionsSelectable||s==="marker"&&e.params.markersSelectable)u.isDefaultPrevented()||(e.params[s+"sSelectableOne"]&&e.clearSelected(s+"s"),a.setSelected(!a.isSelected))}})},bindZoomButtons:function(){var e=this;jvm.$("<div/>").addClass("jvectormap-zoomin").text("+").appendTo(this.container),jvm.$("<div/>").addClass("jvectormap-zoomout").html("−").appendTo(this.container),this.container.find(".jvectormap-zoomin").click(function(){e.setScale(e.scale*e.params.zoomStep,e.width/2,e.height/2)}),this.container.find(".jvectormap-zoomout").click(function(){e.setScale(e.scale/e.params.zoomStep,e.width/2,e.height/2)})},createLabel:function(){var e=this;this.label=jvm.$("<div/>").addClass("jvectormap-label").appendTo(jvm.$("body")),this.container.mousemove(function(t){var n=t.pageX-15-e.labelWidth,r=t.pageY-15-e.labelHeight;n<5&&(n=t.pageX+15),r<5&&(r=t.pageY+15),e.label.is(":visible")&&e.label.css({left:n,top:r})})},setScale:function(e,t,n,r){var i,s=jvm.$.Event("zoom.jvectormap");e>this.params.zoomMax*this.baseScale?e=this.params.zoomMax*this.baseScale:e<this.params.zoomMin*this.baseScale&&(e=this.params.zoomMin*this.baseScale),typeof t!="undefined"&&typeof n!="undefined"&&(i=e/this.scale,r?(this.transX=t+this.defaultWidth*(this.width/(this.defaultWidth*e))/2,this.transY=n+this.defaultHeight*(this.height/(this.defaultHeight*e))/2):(this.transX-=(i-1)/e*t,this.transY-=(i-1)/e*n)),this.scale=e,this.applyTransform(),this.container.trigger(s,[e/this.baseScale])},setFocus:function(e,t,n){var r,i,s,o,u;if(jvm.$.isArray(e)||this.regions[e]){jvm.$.isArray(e)?o=e:o=[e];for(u=0;u<o.length;u++)this.regions[o[u]]&&(i=this.regions[o[u]].element.getBBox(),i&&(typeof r=="undefined"?r=i:(s={x:Math.min(r.x,i.x),y:Math.min(r.y,i.y),width:Math.max(r.x+r.width,i.x+i.width)-Math.min(r.x,i.x),height:Math.max(r.y+r.height,i.y+i.height)-Math.min(r.y,i.y)},r=s)));this.setScale(Math.min(this.width/r.width,this.height/r.height),-(r.x+r.width/2),-(r.y+r.height/2),!0)}else e*=this.baseScale,this.setScale(e,-t*this.defaultWidth,-n*this.defaultHeight,!0)},getSelected:function(e){var t,n=[];for(t in this[e])this[e][t].element.isSelected&&n.push(t);return n},getSelectedRegions:function(){return this.getSelected("regions")},getSelectedMarkers:function(){return this.getSelected("markers")},setSelected:function(e,t){var n;typeof t!="object"&&(t=[t]);if(jvm.$.isArray(t))for(n=0;n<t.length;n++)this[e][t[n]].element.setSelected(!0);else for(n in t)this[e][n].element.setSelected(!!t[n])},setSelectedRegions:function(e){this.setSelected("regions",e)},setSelectedMarkers:function(e){this.setSelected("markers",e)},clearSelected:function(e){var t={},n=this.getSelected(e),r;for(r=0;r<n.length;r++)t[n[r]]=!1;this.setSelected(e,t)},clearSelectedRegions:function(){this.clearSelected("regions")},clearSelectedMarkers:function(){this.clearSelected("markers")},getMapObject:function(){return this},getRegionName:function(e){return this.mapData.paths[e].name},createRegions:function(){var e,t,n=this;for(e in this.mapData.paths)t=this.canvas.addPath({d:this.mapData.paths[e].path,"data-code":e},jvm.$.extend(!0,{},this.params.regionStyle)),jvm.$(t.node).bind("selected",function(e,t){n.container.trigger("regionSelected.jvectormap",[jvm.$(this).attr("data-code"),t,n.getSelectedRegions()])}),t.addClass("jvectormap-region jvectormap-element"),this.regions[e]={element:t,config:this.mapData.paths[e]}},createMarkers:function(e){var t,n,r,i,s,o=this;this.markersGroup=this.markersGroup||this.canvas.addGroup();if(jvm.$.isArray(e)){s=e.slice(),e={};for(t=0;t<s.length;t++)e[t]=s[t]}for(t in e)i=e[t]instanceof Array?{latLng:e[t]}:e[t],r=this.getMarkerPosition(i),r!==!1&&(n=this.canvas.addCircle({"data-index":t,cx:r.x,cy:r.y},jvm.$.extend(!0,{},this.params.markerStyle,{initial:i.style||{}}),this.markersGroup),n.addClass("jvectormap-marker jvectormap-element"),jvm.$(n.node).bind("selected",function(e,t){o.container.trigger("markerSelected.jvectormap",[jvm.$(this).attr("data-index"),t,o.getSelectedMarkers()])}),this.markers[t]&&this.removeMarkers([t]),this.markers[t]={element:n,config:i})},repositionMarkers:function(){var e,t;for(e in this.markers)t=this.getMarkerPosition(this.markers[e].config),t!==!1&&this.markers[e].element.setStyle({cx:t.x,cy:t.y})},getMarkerPosition:function(e){return jvm.WorldMap.maps[this.params.map].projection?this.latLngToPoint.apply(this,e.latLng||[0,0]):{x:e.coords[0]*this.scale+this.transX*this.scale,y:e.coords[1]*this.scale+this.transY*this.scale}},addMarker:function(e,t,n){var r={},i=[],s,o,n=n||[];r[e]=t;for(o=0;o<n.length;o++)s={},s[e]=n[o],i.push(s);this.addMarkers(r,i)},addMarkers:function(e,t){var n;t=t||[],this.createMarkers(e);for(n=0;n<t.length;n++)this.series.markers[n].setValues(t[n]||{})},removeMarkers:function(e){var t;for(t=0;t<e.length;t++)this.markers[e[t]].element.remove(),delete this.markers[e[t]]},removeAllMarkers:function(){var e,t=[];for(e in this.markers)t.push(e);this.removeMarkers(t)},latLngToPoint:function(e,t){var n,r=jvm.WorldMap.maps[this.params.map].projection,i=r.centralMeridian,s=this.width-this.baseTransX*2*this.baseScale,o=this.height-this.baseTransY*2*this.baseScale,u,a,f=this.scale/this.baseScale;return t<-180+i&&(t+=360),n=jvm.Proj[r.type](e,t,i),u=this.getInsetForPoint(n.x,n.y),u?(a=u.bbox,n.x=(n.x-a[0].x)/(a[1].x-a[0].x)*u.width*this.scale,n.y=(n.y-a[0].y)/(a[1].y-a[0].y)*u.height*this.scale,{x:n.x+this.transX*this.scale+u.left*this.scale,y:n.y+this.transY*this.scale+u.top*this.scale}):!1},pointToLatLng:function(e,t){var n=jvm.WorldMap.maps[this.params.map].projection,r=n.centralMeridian,i=jvm.WorldMap.maps[this.params.map].insets,s,o,u,a,f;for(s=0;s<i.length;s++){o=i[s],u=o.bbox,a=e-(this.transX*this.scale+o.left*this.scale),f=t-(this.transY*this.scale+o.top*this.scale),a=a/(o.width*this.scale)*(u[1].x-u[0].x)+u[0].x,f=f/(o.height*this.scale)*(u[1].y-u[0].y)+u[0].y;if(a>u[0].x&&a<u[1].x&&f>u[0].y&&f<u[1].y)return jvm.Proj[n.type+"_inv"](a,-f,r)}return!1},getInsetForPoint:function(e,t){var n=jvm.WorldMap.maps[this.params.map].insets,r,i;for(r=0;r<n.length;r++){i=n[r].bbox;if(e>i[0].x&&e<i[1].x&&t>i[0].y&&t<i[1].y)return n[r]}},createSeries:function(){var e,t;this.series={markers:[],regions:[]};for(t in this.params.series)for(e=0;e<this.params.series[t].length;e++)this.series[t][e]=new jvm.DataSeries(this.params.series[t][e],this[t])},remove:function(){this.label.remove(),this.container.remove(),jvm.$(window).unbind("resize",this.onResize)}},jvm.WorldMap.maps={},jvm.WorldMap.defaultParams={map:"world_mill_en",backgroundColor:"#505050",zoomButtons:!0,zoomOnScroll:!0,zoomMax:8,zoomMin:1,zoomStep:1.6,regionsSelectable:!1,markersSelectable:!1,bindTouchEvents:!0,regionStyle:{initial:{fill:"white","fill-opacity":1,stroke:"none","stroke-width":0,"stroke-opacity":1},hover:{"fill-opacity":.8},selected:{fill:"yellow"},selectedHover :{}},markerStyle:{initial:{fill:"grey",stroke:"#505050","fill-opacity":1,"stroke-width":1,"stroke-opacity":1,r:5},hover:{stroke:"black","stroke-width":2},selected:{fill:"blue"},selectedHover:{}}},jvm.WorldMap.apiEvents={onRegionLabelShow:"regionLabelShow",onRegionOver:"regionOver",onRegionOut:"regionOut",onRegionClick:"regionClick",onRegionSelected:"regionSelected",onMarkerLabelShow:"markerLabelShow",onMarkerOver:"markerOver",onMarkerOut:"markerOut",onMarkerClick:"markerClick",onMarkerSelected:"markerSelected",onViewportChange:"viewportChange"}; AdminLTE/plugins/jvectormap/jquery-jvectormap-usa-en.js 0000644 00000271526 15002261751 0017223 0 ustar 00 jQuery.fn.vectorMap('addMap', 'us_aea',{"insets": [{"width": 220, "top": 440, "height": 172.3954126857679, "bbox": [{"y": -8441276.54251503, "x": -4774054.664881943}, {"y": -6227982.667213126, "x": -1949590.5739843722}], "left": 0}, {"width": 80, "top": 460, "height": 151.48337407091987, "bbox": [{"y": -4196208.652471859, "x": -5906305.806252358}, {"y": -3657293.3059425415, "x": -5621698.812337889}], "left": 245}, {"width": 900, "top": 0, "height": 550.1122047105795, "bbox": [{"y": -5490816.561605522, "x": -2029882.6485830692}, {"y": -2690009.0242363815, "x": 2552322.14899711}], "left": 0}], "paths": {"US-VA": {"path": "M682.42,289.98l1.61,-0.93l1.65,-0.48l1.12,-0.95l3.57,-1.69l0.74,-2.33l0.82,-0.19l2.32,-1.53l0.05,-1.81l2.04,-1.86l-0.13,-1.58l0.26,-0.41l5.0,-4.09l4.76,-6.0l0.09,0.63l0.96,0.54l0.33,1.37l1.32,0.74l0.71,0.81l1.46,0.09l2.09,1.13l1.41,-0.09l0.79,-0.41l0.76,-1.22l1.17,-0.57l0.53,-1.38l2.72,1.49l1.42,-1.1l2.25,-0.99l0.76,0.06l1.08,-0.97l0.33,-0.82l-0.48,-0.96l0.23,-0.42l1.9,0.58l3.26,-2.62l0.3,-0.1l0.51,0.73l0.66,-0.07l2.38,-2.34l0.17,-0.85l-0.49,-0.51l0.99,-1.12l0.1,-0.6l-0.28,-0.51l-1.0,-0.46l0.71,-3.03l2.6,-4.8l0.55,-2.15l-0.01,-1.91l1.61,-2.55l-0.22,-0.94l0.24,-0.84l0.5,-0.48l0.39,-1.7l-0.0,-3.18l1.22,0.19l1.18,1.73l3.8,0.43l0.59,-0.28l1.05,-2.52l0.2,-2.36l0.71,-1.05l-0.04,-1.61l0.76,-2.3l1.78,0.75l0.65,-0.17l1.3,-3.3l0.57,0.05l0.59,-0.39l0.52,-1.2l0.81,-0.68l0.44,-1.8l1.38,-2.43l-0.35,-2.57l0.54,-1.76l-0.3,-2.01l9.18,4.57l0.59,-0.29l0.63,-4.0l2.6,-0.07l0.63,0.57l1.05,0.23l-0.5,1.74l0.6,0.88l1.61,0.85l2.52,-0.04l1.03,1.18l1.49,0.13l2.24,1.73l-0.0,1.31l0.44,1.27l-1.67,0.96l-0.12,0.65l-0.64,0.14l-0.27,0.45l-0.47,5.03l-0.36,0.13l-0.04,0.48l1.17,0.97l-0.29,0.11l-0.04,0.76l2.03,-0.01l2.41,-1.45l0.49,-0.72l0.34,0.74l-0.52,0.63l1.21,0.88l0.69,0.13l0.42,1.11l1.62,0.52l1.94,-0.2l0.84,0.43l0.82,-0.65l0.89,0.02l0.23,0.6l1.33,0.48l0.46,1.1l1.12,-0.05l0.02,0.3l1.18,0.42l2.84,0.65l0.4,1.01l-0.85,-0.41l-0.57,0.45l0.89,1.74l-0.35,0.57l0.62,0.79l-0.43,0.89l0.24,0.59l-1.36,-0.36l-0.59,-0.72l-0.67,0.18l-0.1,0.43l-2.44,-2.29l-0.56,0.05l-0.37,-0.56l-0.52,0.32l-1.47,-1.32l-1.19,-0.38l-0.43,-0.64l-0.9,-0.39l-0.7,-1.29l-0.77,-0.64l-1.34,-0.12l-1.11,-0.81l-1.17,0.05l-0.39,0.52l0.47,0.71l1.1,-0.01l0.63,0.68l1.33,0.07l0.59,0.42l0.38,1.52l2.73,1.56l1.86,1.88l1.95,0.61l1.59,2.1l0.98,0.24l1.35,-0.45l1.28,0.47l-0.61,0.7l0.3,0.49l2.03,0.34l0.26,0.72l0.47,0.12l0.31,1.96l-0.57,-0.83l-0.52,-0.22l-0.39,0.21l-1.13,-1.0l-0.58,0.3l0.1,0.82l-0.31,0.68l0.7,0.7l-0.18,0.59l0.51,0.28l0.43,-0.14l0.28,0.35l-1.39,0.72l-6.15,-4.74l-0.58,0.11l-0.19,0.81l0.24,0.54l2.28,1.53l2.09,2.14l2.77,1.18l1.26,-0.68l0.45,1.05l1.27,0.26l-0.44,0.67l0.29,0.56l0.93,-0.19l-0.0,1.24l-0.92,0.41l-0.57,0.73l-0.64,-0.88l-3.14,-1.26l-0.42,-1.53l-0.59,-0.59l-0.87,-0.12l-1.2,0.67l-1.71,-0.44l-0.36,-1.15l-0.71,-0.05l-0.05,1.31l-0.33,0.41l-1.42,-1.32l-0.51,0.09l-0.49,0.57l-0.64,-0.4l-0.99,0.45l-2.23,-0.1l-0.37,0.94l0.34,0.46l1.9,0.22l1.4,-0.31l0.85,0.24l0.56,-0.69l0.63,0.88l1.34,0.43l1.95,-0.31l0.82,0.72l0.84,0.12l0.51,-0.55l0.77,2.44l1.35,0.13l0.23,0.43l1.68,0.71l0.45,0.68l-0.57,1.03l0.56,0.44l1.72,-1.32l0.88,-0.02l0.83,0.65l0.8,-0.26l-0.61,-0.9l0.0,-0.82l-0.46,-0.34l3.99,0.08l0.93,-0.73l2.07,3.53l-0.4,0.7l0.65,3.09l-1.19,-0.58l-0.02,0.88l-30.94,7.83l-37.18,8.41l-19.51,3.35l-11.78,1.24l-0.82,0.62l-28.2,5.01ZM781.17,223.48l0.11,0.08l-0.08,0.06l0.0,-0.03l-0.03,-0.11ZM808.02,244.55l0.53,-1.15l-0.62,-0.62l0.58,-0.97l-0.39,-0.71l-0.03,-0.49l0.44,-0.35l-0.17,-0.73l0.62,-0.3l0.23,-0.6l0.14,-2.33l1.01,-0.39l-0.12,-0.9l0.48,-0.14l-0.26,-1.53l-0.79,-0.4l0.87,-0.57l0.1,-0.96l2.64,-1.01l0.31,2.47l-0.97,2.12l-2.32,7.36l-0.58,1.0l0.17,1.12l-0.48,0.31l-0.33,1.09l0.25,4.27l-1.1,-1.81l0.23,-0.94l-0.33,-1.57l0.28,-0.97l-0.38,-0.29Z", "name": "Virginia"}, "US-PA": {"path": "M716.45,159.95l0.63,-0.19l4.3,-3.73l1.12,5.19l0.48,0.31l34.84,-7.93l34.27,-8.64l1.42,0.58l0.71,1.39l0.63,0.13l0.77,-0.33l1.24,0.59l0.14,0.85l0.81,0.41l-0.16,0.58l0.89,2.69l1.9,2.07l2.12,0.75l2.2,-0.2l0.72,0.79l-0.89,0.87l-0.73,1.48l-0.17,2.25l-1.41,3.35l-1.37,1.58l0.04,0.79l1.79,1.72l-0.31,1.65l-0.84,0.43l-0.22,0.66l0.14,1.48l1.04,2.87l0.52,0.25l1.2,-0.18l1.18,2.39l0.95,0.58l0.66,-0.26l0.6,0.9l4.23,2.75l0.12,0.41l-1.29,0.93l-3.71,4.22l-0.23,0.75l0.17,0.9l-1.36,1.13l-0.84,0.15l-1.33,1.08l-0.31,0.66l-1.72,-0.12l-2.03,0.84l-1.15,1.37l-0.41,1.39l-37.22,9.21l-39.1,8.66l-10.03,-48.2l1.92,-1.22l3.07,-3.04Z", "name": "Pennsylvania"}, "US-TN": {"path": "M571.74,341.02l0.86,-0.84l0.29,-1.37l1.0,0.04l0.65,-0.79l-0.99,-4.89l1.41,-1.93l0.06,-1.32l1.18,-0.46l0.36,-0.48l-0.63,-1.31l0.57,-1.21l-0.89,-1.33l2.55,-1.57l1.09,-1.13l-0.14,-0.84l-0.85,-0.53l0.14,-0.19l0.34,-0.16l0.85,0.37l0.46,-0.33l-0.27,-1.31l-0.85,-0.9l0.06,-0.71l0.51,-1.43l1.0,-1.11l-1.35,-2.06l1.37,-0.21l0.61,-0.55l-0.13,-0.64l-1.17,-0.82l0.82,-0.15l0.58,-0.54l0.13,-0.69l-0.58,-1.38l0.02,-0.36l0.37,0.53l0.47,0.08l1.18,-1.15l23.66,-2.81l0.35,-0.41l-0.1,-1.34l-0.84,-2.39l2.98,-0.08l0.82,0.58l22.78,-3.54l7.64,-0.46l7.5,-0.86l8.82,-1.42l24.01,-3.09l1.11,-0.6l29.29,-5.2l0.73,-0.6l3.56,-0.54l-0.4,1.44l0.43,0.85l-0.4,2.0l0.36,0.82l-1.15,-0.03l-1.71,1.79l-1.21,3.89l-0.55,0.7l-0.56,0.08l-0.63,-0.74l-1.44,-0.02l-2.66,1.73l-1.42,2.73l-0.96,0.89l-0.34,-0.34l-0.13,-1.05l-0.73,-0.54l-0.53,0.15l-2.3,1.81l-0.29,1.32l-0.93,-0.24l-0.9,0.48l-0.16,0.77l0.32,0.73l-0.85,2.18l-1.28,0.06l-1.75,1.14l-1.89,2.3l-0.78,0.27l-2.28,2.46l-4.04,0.78l-2.58,1.7l-0.49,1.09l-0.88,0.55l-0.55,0.81l-0.18,2.88l-0.35,0.6l-1.65,0.52l-0.89,-0.16l-1.06,1.14l0.21,5.24l-20.21,3.32l-21.61,3.04l-25.56,2.95l-0.34,0.31l-7.39,0.9l-28.72,3.17Z", "name": "Tennessee"}, "US-WV": {"path": "M693.03,248.37l3.95,-1.54l0.35,-0.71l0.12,-2.77l1.15,-0.22l0.4,-0.61l-0.57,-2.49l-0.61,-1.24l0.49,-0.64l0.36,-2.77l0.68,-1.66l0.45,-0.39l1.24,0.55l0.41,0.71l-0.14,1.13l0.71,0.46l0.78,-0.44l0.48,-1.42l0.49,0.21l0.57,-0.2l0.2,-0.44l-0.63,-2.09l-0.75,-0.55l0.81,-0.79l-0.26,-1.71l0.74,-2.0l1.65,-0.51l0.17,-1.6l1.02,-1.42l0.43,-0.08l0.65,0.79l0.67,0.19l2.28,-1.59l1.5,-1.64l0.79,-1.83l2.45,-2.67l0.37,-2.41l-0.73,-1.0l0.71,-2.33l-0.25,-0.76l0.59,-0.58l-0.27,-3.43l0.47,-3.93l0.53,-0.8l0.08,-1.11l-0.38,-1.21l-0.39,-0.33l-0.04,-2.0l-1.57,-1.9l0.44,-0.54l0.85,-0.1l0.3,-0.33l4.03,19.33l0.47,0.31l16.59,-3.55l2.17,10.68l0.5,0.37l2.06,-2.5l0.97,-0.56l0.34,-1.03l1.63,-1.99l0.25,-1.05l0.52,-0.4l1.19,0.45l0.74,-0.32l1.32,-2.6l0.6,-0.46l-0.04,-0.85l0.42,0.59l1.81,0.52l3.2,-0.57l0.78,-0.86l0.08,-1.46l2.0,-0.74l1.02,-1.69l0.67,-0.1l3.16,1.5l1.8,-0.71l-0.45,1.02l0.56,0.92l1.27,0.42l0.09,0.96l1.13,0.43l0.09,1.2l0.33,0.42l-0.58,3.64l-9.0,-4.48l-0.64,0.24l-0.31,1.14l0.38,1.61l-0.52,1.62l0.41,2.28l-1.36,2.4l-0.42,1.76l-0.72,0.53l-0.42,1.11l-0.27,0.21l-0.61,-0.23l-0.37,0.33l-1.25,3.28l-1.84,-0.78l-0.64,0.25l-0.94,2.77l0.08,1.46l-0.73,1.14l-0.19,2.33l-0.89,2.2l-3.25,-0.36l-1.44,-1.76l-1.71,-0.24l-0.5,0.41l-0.26,2.17l0.19,1.3l-0.32,1.45l-0.49,0.45l-0.31,1.04l0.23,0.92l-1.58,2.44l-0.04,2.1l-0.52,2.0l-2.58,4.73l-0.75,3.16l0.14,0.76l1.13,0.55l-1.08,1.38l0.06,0.6l0.45,0.4l-2.16,2.13l-0.55,-0.7l-0.84,0.15l-3.12,2.53l-1.03,-0.56l-1.32,0.26l-0.44,0.91l0.45,1.17l-0.91,0.91l-0.73,-0.05l-2.27,1.0l-1.21,0.96l-2.18,-1.36l-0.73,-0.01l-0.82,1.58l-1.1,0.49l-1.22,1.46l-1.08,0.08l-1.98,-1.09l-1.3,-0.01l-0.61,-0.74l-1.19,-0.6l-0.31,-1.33l-0.89,-0.55l0.36,-0.67l-0.3,-0.81l-0.85,-0.37l-0.84,0.25l-1.33,-0.17l-1.26,-1.19l-2.06,-0.79l-0.76,-1.43l-1.58,-1.24l-0.7,-1.49l-1.0,-0.6l-0.12,-1.09l-1.38,-0.95l-2.0,-2.27l0.71,-2.03l-0.25,-1.62l-0.66,-1.46Z", "name": "West Virginia"}, "US-NV": {"path": "M139.46,329.14l-12.69,-16.93l-36.58,-51.09l-25.34,-34.51l13.7,-64.18l46.88,9.24l46.98,7.74l-18.71,125.81l-0.9,1.16l-0.99,2.19l-0.44,0.17l-1.34,-0.22l-0.98,-2.24l-0.7,-0.63l-1.41,0.22l-1.95,-1.02l-1.6,0.23l-1.78,0.96l-0.76,2.48l0.88,2.59l-0.6,0.97l-0.24,1.3l0.38,3.12l-0.76,2.54l0.77,3.71l-0.13,3.07l-0.3,1.07l-1.04,0.31l0.2,1.31l-0.52,0.62Z", "name": "Nevada"}, "US-TX": {"path": "M276.24,412.51l33.07,1.98l32.79,1.35l0.41,-0.39l3.6,-98.69l25.86,0.61l26.29,0.22l0.05,42.08l0.44,0.4l1.02,-0.13l0.78,0.28l3.74,3.82l1.66,0.21l0.88,-0.58l2.49,0.64l0.6,-0.68l0.11,-1.05l0.6,0.76l0.92,0.22l0.38,0.93l0.77,0.78l-0.01,1.64l0.52,0.83l2.85,0.42l1.25,-0.2l1.38,0.89l2.78,0.69l1.82,-0.56l0.62,0.1l1.89,1.8l1.4,-0.11l1.25,-1.43l2.43,0.26l1.67,-0.46l0.1,2.28l0.91,0.67l1.62,0.4l-0.04,2.08l1.56,0.79l1.82,-0.66l1.57,-1.67l1.02,-0.65l0.41,0.19l0.45,1.64l2.01,0.2l0.24,1.05l0.72,0.48l1.47,-0.21l0.88,-0.93l0.39,0.33l0.59,-0.08l0.61,-0.99l0.26,0.41l-0.45,1.23l0.14,0.76l0.67,1.14l0.78,0.42l0.57,-0.04l0.6,-0.5l0.68,-2.36l0.91,-0.65l0.35,-1.54l0.57,-0.14l0.4,0.14l0.29,0.99l0.57,0.64l1.21,0.02l0.83,0.5l1.25,-0.2l0.68,-1.34l0.48,0.15l-0.13,0.7l0.49,0.69l1.21,0.45l0.49,0.72l1.52,-0.05l1.49,1.74l0.52,0.02l0.63,-0.62l0.08,-0.71l1.49,-0.1l0.93,-1.43l1.88,-0.41l1.66,-1.13l1.52,0.83l1.51,-0.22l0.29,-0.83l2.29,-0.73l0.52,-0.55l0.5,0.32l0.38,0.88l1.82,0.42l1.69,-0.06l1.86,-1.14l0.41,-1.05l1.06,0.31l2.24,1.56l1.16,0.17l1.79,2.08l2.14,0.41l1.04,0.92l0.76,-0.11l2.48,0.85l1.04,0.04l0.37,0.79l1.38,0.97l1.45,-0.12l0.39,-0.72l0.8,0.36l0.88,-0.4l0.92,0.35l0.76,-0.15l0.64,0.36l2.22,34.02l1.51,1.67l1.3,0.82l1.25,1.87l0.57,1.63l-0.1,2.64l1.0,1.21l0.85,0.4l-0.12,0.85l0.75,0.54l0.28,0.87l0.65,0.7l-0.19,1.17l1.0,1.02l0.59,1.63l0.5,0.34l0.55,-0.1l-0.16,1.71l0.81,1.22l-0.64,0.25l-0.35,0.68l0.77,1.27l-0.55,0.89l0.19,1.39l-0.75,2.69l-0.74,0.85l-0.36,1.54l-0.79,1.13l0.64,2.0l-0.83,2.28l0.17,1.07l0.83,1.2l-0.19,1.01l0.49,1.6l-0.24,1.41l-1.18,1.78l-1.18,0.4l-1.16,2.72l-0.03,2.1l1.39,1.67l-3.43,0.08l-7.37,3.78l-0.02,-0.43l-0.69,-0.24l-0.23,0.23l-0.78,-0.43l-3.38,1.13l0.65,-1.31l0.35,-2.04l-0.34,-1.36l-0.8,-0.78l-1.79,0.16l-1.18,2.58l-0.42,0.15l-0.36,-0.65l-2.38,-1.23l-0.4,0.31l-0.18,0.82l0.23,0.45l1.07,0.38l-0.3,0.82l0.54,0.81l-0.47,0.64l0.04,0.99l1.48,0.76l-0.44,0.47l0.5,1.12l0.91,0.23l0.28,0.37l-0.4,1.25l-0.45,-0.12l-0.97,0.81l-1.72,2.25l-1.18,-0.4l-0.49,0.12l0.32,1.0l0.08,2.54l-1.85,1.49l-1.91,2.11l-0.96,0.37l-4.1,2.9l-3.3,0.44l-2.54,1.07l-0.2,1.12l-0.75,-0.34l-2.04,0.89l-0.33,-0.34l-1.11,0.18l0.43,-0.87l-0.52,-0.6l-1.43,0.22l-1.22,1.08l-0.6,-0.62l-0.11,-1.2l-1.38,-0.81l-0.5,0.44l0.65,1.44l0.01,1.12l-0.71,0.09l-0.54,-0.44l-0.75,-0.0l-0.55,-1.34l-1.46,-0.37l-0.58,0.39l0.04,0.54l0.94,1.7l0.03,1.23l0.58,0.37l0.37,-0.16l1.13,0.78l-0.75,0.37l-0.12,0.9l0.7,0.23l1.08,-0.55l0.96,0.6l-4.27,2.42l-0.57,-0.13l-0.37,-1.44l-0.5,-0.19l-1.13,-1.47l-0.48,-0.03l-1.05,1.99l1.19,1.61l-0.31,1.04l0.33,0.85l-1.66,1.79l-0.37,0.2l0.37,-0.63l-0.18,-0.72l0.25,-0.73l-0.46,-0.67l-0.52,0.17l-0.71,1.1l0.26,0.72l-0.39,0.95l-0.07,-1.13l-0.52,-0.55l-1.95,1.29l-0.78,-0.33l-0.69,0.51l0.07,0.75l-0.81,0.99l0.02,0.49l1.25,0.63l0.03,0.56l0.78,0.29l0.7,-1.41l0.86,-0.41l0.01,0.62l-2.82,4.36l-1.23,-1.0l-1.36,0.39l-0.32,-0.34l-2.4,0.39l-0.46,-0.31l-0.65,0.16l-0.18,0.58l0.41,0.61l0.55,0.38l1.53,0.03l0.54,1.55l2.07,1.03l-2.7,7.63l-0.2,0.1l-0.39,-0.54l-0.33,0.1l0.18,-0.75l-0.57,-0.43l-2.35,1.95l-1.67,-2.31l-1.23,-0.97l-0.61,0.4l0.09,0.52l1.44,2.0l-0.24,0.46l0.36,0.47l-1.17,-0.21l-0.33,0.63l0.5,0.56l0.89,0.23l1.12,-0.16l0.66,0.62l1.37,0.18l1.0,-0.03l0.99,-0.62l-0.34,1.59l0.24,0.77l-0.98,0.7l0.37,1.59l-1.12,0.14l-0.43,0.41l0.4,2.11l-0.33,1.6l0.45,0.64l0.84,0.24l0.87,2.86l0.71,2.8l-0.91,0.82l0.62,0.49l-0.08,1.28l0.71,0.3l0.18,0.61l0.58,0.29l0.4,1.79l0.68,0.31l0.45,3.21l1.46,0.62l-0.52,1.1l0.31,1.08l-0.62,0.77l-0.84,-0.05l-0.54,0.44l0.09,1.3l-0.49,-0.33l-0.49,0.25l-0.39,-0.67l-1.49,-0.45l-2.92,-2.53l-2.2,-0.18l-0.81,-0.51l-4.2,0.09l-0.9,0.42l-0.79,-0.62l-1.64,0.24l-2.12,-0.89l-0.73,-0.97l-0.6,-0.14l-0.21,-0.72l-1.17,-0.49l-0.99,-0.02l-1.98,-0.87l-1.45,0.39l-0.83,-1.09l-0.6,-0.21l-1.43,-1.38l-1.96,0.01l-1.47,-0.64l-0.86,0.11l-1.62,-0.41l0.35,-0.9l-0.3,-0.97l-1.11,-0.7l0.3,-0.29l-0.26,-1.44l0.56,-1.21l-0.35,-0.67l0.88,-0.38l0.12,-0.54l-1.04,-0.54l-0.91,0.67l-0.32,-0.31l0.03,-1.09l-0.59,-0.83l0.31,-0.09l0.53,-1.43l-0.22,-0.71l-0.71,0.09l-1.03,0.96l-0.57,-0.89l-0.85,-0.28l-0.26,-1.34l-1.51,-0.77l0.29,-0.65l-0.24,-0.76l0.34,-2.18l-0.45,-0.96l-1.04,-1.01l0.65,-1.99l0.05,-1.19l-0.18,-0.7l-0.54,-0.33l-0.15,-1.81l-1.85,-1.44l-0.86,0.21l-0.3,-0.41l-0.81,-0.11l-0.74,-1.31l-2.22,-1.71l0.01,-0.69l-0.51,-0.58l0.12,-0.87l-0.97,-0.92l-0.08,-0.75l-1.12,-0.61l-1.3,-2.88l-2.66,-1.48l-0.38,-0.91l-1.13,-0.59l-0.06,-1.16l-0.82,-1.19l-0.59,-1.95l0.41,-0.22l-0.04,-0.72l-1.03,-0.49l-0.26,-1.29l-0.82,-0.58l-0.94,-1.73l-0.61,-2.38l-1.85,-2.36l-0.87,-4.24l-1.81,-1.34l0.05,-0.7l-0.75,-1.21l-4.07,-2.82l-0.29,-1.39l1.68,-0.02l0.79,-0.84l-0.29,-0.39l-0.65,-0.06l-0.09,-0.72l0.08,-0.89l0.64,-0.7l-0.11,-0.74l-0.48,0.05l-0.77,0.72l-0.45,0.69l0.01,0.66l-0.88,0.15l-0.39,1.07l-0.54,-0.04l-1.81,-1.75l0.06,-0.67l-0.41,-0.68l-0.77,-0.2l-0.64,0.29l-0.33,-0.53l-0.73,-0.13l-0.89,-2.16l-1.49,-0.8l-0.85,0.27l-0.44,-0.87l-0.61,0.1l-0.25,0.61l-1.05,0.16l-2.88,-0.47l-0.39,-0.38l-1.48,-0.03l-0.79,0.29l-0.77,-0.44l-2.66,0.27l-2.42,-1.08l-1.14,-0.89l-0.68,-0.07l-1.03,0.82l-0.64,1.61l-1.99,-0.17l-0.51,0.44l-0.49,-0.17l-2.52,0.78l-3.07,6.25l-0.18,1.77l-0.76,0.67l-0.38,1.8l0.35,0.59l-1.97,0.98l-0.75,1.32l-1.07,0.61l-0.62,0.83l-0.29,1.09l-2.91,-0.34l-1.04,-0.87l-0.54,0.3l-1.69,-1.21l-1.31,-1.63l-2.9,-0.85l-1.15,-0.95l-0.02,-0.67l-0.42,-0.4l-2.75,-0.51l-2.28,-1.03l-1.89,-1.75l-0.91,-1.53l-0.96,-0.91l-1.53,-0.29l-1.76,-1.26l-0.22,-0.56l-1.14,-0.97l-0.83,-2.9l-0.86,-1.01l-0.24,-1.1l-0.76,-1.27l-0.26,-2.34l0.52,-3.04l-3.0,-5.07l-0.06,-1.94l-1.26,-2.51l-0.99,-0.44l-0.43,-1.24l-1.43,-0.81l-2.15,-2.17l-1.02,-0.1l-2.01,-1.25l-3.18,-3.35l-0.59,-1.55l-3.13,-2.55l-1.59,-2.45l-1.19,-0.95l-0.61,-1.05l-4.42,-2.6l-2.4,-5.42l-1.37,-1.08l-1.12,-0.08l-1.76,-1.68l-0.79,-3.05ZM502.12,468.09l-0.33,0.17l0.18,-0.16l0.15,-0.02ZM498.72,470.76l-0.09,0.12l-0.04,0.02l0.13,-0.14ZM467.58,489.09l0.03,0.02l-0.02,0.02l-0.0,-0.03ZM453.97,547.08l0.76,-0.5l0.25,-0.68l0.11,1.08l-1.11,0.1Z", "name": "Texas"}, "US-NH": {"path": "M829.91,105.39l0.2,-1.33l-1.43,-5.38l0.53,-1.45l-0.28,-2.22l1.0,-1.86l-0.13,-2.3l0.64,-2.28l-0.44,-0.62l0.29,-2.3l-0.93,-3.8l0.08,-0.7l0.3,-0.45l1.83,-0.8l0.7,-1.39l1.43,-1.62l0.74,-1.8l-0.25,-1.13l0.52,-0.62l-2.34,-3.49l0.87,-3.26l-0.11,-0.78l-0.81,-1.29l0.28,-0.59l-0.23,-0.7l0.48,-3.2l-0.36,-0.82l0.91,-1.49l2.44,0.33l0.65,-0.86l12.99,34.86l0.84,3.65l2.6,2.21l0.88,0.34l0.36,1.6l1.71,1.31l0.0,0.35l0.77,0.23l-0.06,0.58l-0.46,3.09l-1.57,0.24l-1.32,1.19l-0.51,0.94l-0.96,0.37l-0.5,1.68l-1.1,1.44l-17.61,4.74l-1.7,-1.43l-0.41,-0.89l-0.1,-2.0l0.54,-0.59l0.03,-0.52l-1.02,-5.18Z", "name": "New Hampshire"}, "US-NY": {"path": "M821.95,168.59l-0.84,-0.72l0.83,-3.23l1.03,-0.3l0.37,-0.48l0.74,0.21l0.64,-0.32l-0.06,-0.58l0.43,-0.05l0.28,-0.66l0.72,-0.32l-0.21,-1.42l0.73,-0.47l0.35,0.56l1.04,-0.16l0.49,-0.33l0.01,-0.54l1.46,-0.18l0.24,-0.74l1.66,0.02l0.91,-0.54l0.45,-1.21l0.62,0.24l0.43,-0.5l4.32,-1.28l2.35,-1.12l2.36,-2.84l0.18,0.17l-2.53,3.41l-0.01,0.46l0.56,0.38l1.59,-0.33l0.28,0.61l-1.3,1.19l-2.05,0.53l-0.37,0.58l-1.16,0.41l0.23,0.43l-0.24,0.3l-0.68,-0.16l-0.74,0.7l-1.04,0.17l-0.37,0.55l-1.42,0.45l-0.26,0.67l-1.34,0.19l-0.44,0.7l-1.35,0.96l-2.77,1.33l-1.02,0.88l-1.04,0.09l-0.32,0.93l-0.28,0.03l-0.26,-0.68l-1.45,-0.25l-0.88,0.74l0.07,0.96l-0.94,0.56ZM844.29,155.03l0.88,-2.14l1.18,-0.48l0.6,-0.93l0.81,0.34l0.13,-0.83l0.75,0.63l-3.84,3.68l-0.51,-0.28ZM845.16,149.15l0.06,-0.06l0.18,-0.06l-0.11,0.19l-0.13,-0.07ZM722.08,155.52l3.76,-3.85l1.27,-2.19l1.75,-1.86l1.16,-0.78l1.28,-3.35l2.09,-2.13l-0.21,-1.84l-1.61,-2.42l0.42,-1.13l-0.17,-0.78l-0.83,-0.53l-2.09,-0.0l0.04,-0.99l-0.58,-2.23l4.98,-2.94l4.48,-1.79l2.38,-0.2l1.84,-0.74l5.64,-0.24l3.12,1.25l3.16,-1.68l5.49,-1.06l0.59,0.45l0.68,-0.2l0.12,-0.99l3.23,-1.85l0.69,-2.05l1.87,-1.76l0.78,-1.26l1.12,0.03l1.13,-0.52l1.07,-1.63l-0.46,-0.69l0.36,-1.2l-0.25,-0.51l-0.64,0.02l-0.17,-1.18l-0.94,-1.58l-1.01,-0.62l0.12,-0.18l0.59,0.39l0.53,-0.27l0.75,-1.43l-0.01,-0.92l0.81,-0.64l-0.01,-0.98l-0.93,-0.19l-0.6,0.7l-0.28,0.12l0.56,-1.3l-0.81,-0.63l-1.26,0.05l-0.87,0.77l-0.98,-0.7l2.05,-2.51l1.78,-1.47l1.67,-2.63l0.7,-0.56l0.89,-1.54l0.07,-0.56l-0.49,-0.94l0.78,-1.9l4.82,-7.61l4.76,-4.5l2.84,-0.51l19.65,-5.66l0.4,0.87l-0.08,2.01l1.02,1.22l0.43,3.79l2.29,3.25l-0.09,1.89l0.85,2.41l-0.59,1.07l-0.0,3.41l0.71,0.89l1.32,2.76l0.19,1.09l0.62,0.84l0.12,3.92l0.55,0.85l0.54,0.07l0.53,-0.61l0.06,-0.87l0.33,-0.07l1.05,1.12l3.87,14.48l0.11,1.59l0.62,1.09l0.33,14.92l0.6,0.62l3.57,16.23l1.26,1.34l-2.82,3.18l0.03,0.54l1.74,1.62l-1.86,3.37l0.21,1.06l-1.03,0.45l-0.24,-4.26l-0.56,-2.23l-0.74,-1.62l-1.46,-1.1l-0.17,-1.13l-0.7,-0.09l-0.42,1.33l0.8,1.45l0.94,0.69l0.95,2.79l-13.74,-4.06l-1.28,-1.47l-2.39,0.24l-0.63,-0.43l-1.06,-0.15l-1.74,-1.91l-0.75,-2.33l0.12,-0.72l-0.36,-0.63l-0.56,-0.21l0.09,-0.46l-0.35,-0.42l-1.64,-0.68l-1.08,0.32l-0.53,-1.22l-1.92,-0.93l-34.6,8.73l-34.43,7.84l-1.11,-5.15Z", "name": "New York"}, "US-HI": {"path": "M293.44,610.32l-0.16,-1.33l-1.79,-3.5l-1.21,-1.37l0.23,-0.95l-0.21,-0.49l0.64,-1.68l4.55,-5.05l0.88,-5.09l0.45,-0.65l0.48,-2.22l-0.34,-2.5l0.41,-1.79l1.19,-0.79l1.55,-0.08l1.27,-0.5l1.51,0.3l2.68,-1.18l1.51,-0.07l1.15,-1.13l-0.03,-3.17l0.35,-1.25l0.99,-1.6l1.21,-0.53l2.67,2.45l-0.1,1.68l1.07,1.67l0.81,2.19l1.64,1.05l2.04,2.64l3.96,7.75l0.59,3.31l-2.1,3.31l0.14,0.54l0.73,0.44l1.2,0.23l0.29,0.68l-0.01,0.53l-0.8,1.13l-0.09,1.86l0.56,2.06l1.01,1.51l0.17,1.18l-0.37,0.44l-2.35,0.67l-1.45,-0.32l-2.49,0.4l-1.2,-0.39l-2.49,-0.11l-3.15,-1.01l-0.9,-0.94l-1.39,-0.68l-2.87,0.15l-4.73,-0.64l-1.91,0.32l-1.08,1.21l-1.89,0.33l-1.22,0.8l-1.62,0.21ZM302.97,554.35l1.47,-2.4l0.62,-1.93l-0.3,-0.8l-0.55,-0.42l-1.1,0.04l-1.49,-2.22l-0.31,-2.64l0.31,-0.99l0.92,-0.89l0.88,-0.53l1.05,-0.12l0.9,0.44l0.73,1.4l0.05,3.78l1.07,0.23l1.89,1.04l1.66,0.12l1.88,1.67l0.65,3.28l0.56,0.34l0.11,1.09l2.18,2.69l-0.14,1.17l-1.45,1.15l-0.84,-0.19l-0.81,0.3l-0.68,-0.4l-1.7,-0.23l-1.91,-1.3l-3.1,-0.5l-0.96,-1.02l-1.42,-0.79l-0.16,-1.4ZM273.53,509.24l-0.16,-0.35l0.54,-1.85l-0.3,-1.63l0.39,-1.12l-0.31,-1.61l0.83,-1.4l-0.26,-1.26l3.14,2.06l2.55,-0.17l1.08,-0.64l1.25,-0.12l0.77,0.28l0.39,1.22l-0.11,1.03l-0.4,0.54l0.01,2.42l0.41,1.21l-0.78,0.43l-0.61,1.27l0.64,2.46l0.61,0.41l0.56,-0.16l-0.24,0.78l0.3,0.88l-0.35,0.37l-0.14,1.04l0.56,1.3l-1.15,0.14l-0.29,-0.77l-2.67,-0.85l-0.05,-0.86l-0.79,-1.25l0.15,-0.76l-0.26,-0.63l-1.05,0.24l-0.45,-0.78l0.16,-0.27l1.0,0.06l0.45,-0.62l-0.42,-0.96l-0.64,-0.2l-0.35,-0.61l-0.47,0.25l-0.47,-0.55l-0.38,0.32l0.14,1.95l-2.85,-1.22ZM284.15,511.85l0.1,-0.21l-0.0,-0.01l0.1,0.09l-0.19,0.14ZM246.14,461.52l2.01,-0.42l1.12,-0.67l1.33,0.51l3.66,0.37l0.71,1.4l1.04,-0.06l1.12,1.14l0.89,0.21l0.72,0.89l0.28,1.56l-0.23,1.15l-0.51,0.62l-2.05,0.87l-1.37,1.99l-0.6,-0.19l-0.46,0.49l-2.84,0.16l-3.61,-3.83l-0.24,-1.91l-1.68,-2.24l0.05,-1.26l0.66,-0.81Z", "name": "Hawaii"}, "US-VT": {"path": "M805.54,72.68l26.02,-7.96l0.89,1.85l-0.74,2.37l-0.03,1.54l2.22,2.75l-0.51,0.58l0.26,1.13l-0.67,1.6l-1.35,1.49l-0.64,1.32l-1.72,0.7l-0.62,0.92l-0.1,0.98l0.93,3.74l-0.29,2.44l0.4,0.54l-0.6,2.11l0.15,2.19l-1.0,1.87l0.27,2.36l-0.53,1.54l1.43,5.44l-0.22,1.22l1.05,5.3l-0.58,0.85l0.11,2.31l0.6,1.26l1.51,1.1l-11.72,3.08l-4.31,-16.79l-1.72,-1.59l-0.91,0.25l-0.3,1.19l-0.12,-0.26l-0.11,-3.91l-0.68,-1.0l-0.14,-0.98l-1.37,-2.85l-0.63,-0.68l0.01,-3.15l0.6,-1.15l-0.86,-2.57l0.08,-1.93l-0.39,-0.91l-1.55,-1.63l-0.38,-0.81l-0.41,-3.71l-1.03,-1.27l0.11,-1.87l-0.42,-1.0Z", "name": "Vermont"}, "US-NM": {"path": "M230.94,422.8l11.82,-123.64l25.66,2.24l26.09,1.86l26.12,1.45l25.74,1.02l-0.31,10.24l-0.74,0.39l-3.59,98.67l-32.38,-1.34l-33.52,-2.02l-0.44,0.76l0.54,2.31l0.44,1.26l1.0,0.77l-30.53,-2.46l-0.43,0.36l-0.81,9.46l-14.64,-1.33Z", "name": "New Mexico"}, "US-NC": {"path": "M676.72,321.71l0.92,0.17l1.52,-0.39l0.42,-0.39l0.52,-0.97l0.13,-2.7l1.34,-1.19l0.47,-1.05l2.24,-1.47l2.12,-0.52l0.76,0.18l1.32,-0.52l2.36,-2.52l0.78,-0.25l1.84,-2.29l1.48,-1.0l1.55,-0.19l1.15,-2.65l-0.28,-1.22l1.65,0.06l0.51,-1.65l0.93,-0.77l1.08,-0.77l0.51,1.52l1.07,0.33l1.34,-1.17l1.35,-2.64l2.49,-1.59l0.79,0.08l0.82,0.8l1.06,-0.21l0.84,-1.07l1.47,-4.18l1.08,-1.1l1.47,0.09l0.44,-0.31l-0.69,-1.26l0.4,-2.0l-0.42,-0.9l0.38,-1.25l7.42,-0.86l19.54,-3.36l37.21,-8.42l31.11,-7.87l0.4,1.21l3.54,3.24l1.0,1.53l-1.2,-1.0l-0.16,-0.63l-0.92,-0.41l-0.52,0.05l-0.24,0.65l0.66,0.54l0.59,1.56l-0.53,0.01l-0.91,-0.75l-2.31,-0.8l-0.4,-0.48l-0.55,0.13l-0.31,0.69l0.14,0.64l1.37,0.44l1.69,1.38l-1.1,0.66l-2.49,-1.2l-0.35,0.5l0.14,0.42l1.6,1.18l-1.84,-0.33l-2.23,-0.87l-0.46,0.14l0.01,0.48l0.6,0.7l1.7,0.83l-0.97,0.58l0.0,0.6l-0.43,0.53l-1.48,0.75l-0.89,-0.77l-0.61,0.22l-0.1,0.35l-0.2,-0.13l-1.31,-2.32l0.21,-2.63l-0.42,-0.48l-0.89,-0.22l-0.37,0.64l0.62,0.71l-0.43,0.99l-0.02,1.03l0.49,1.73l1.6,2.2l-0.31,1.28l0.48,0.29l2.97,-0.59l2.1,-1.49l0.27,0.01l0.37,0.79l0.76,-0.34l1.56,0.05l0.16,-0.72l-0.57,-0.32l1.29,-0.76l2.04,-0.46l-0.1,1.19l0.64,0.29l-0.6,0.88l0.88,1.19l-0.84,0.1l-0.19,0.66l1.38,0.46l0.26,0.94l-1.21,0.05l-0.19,0.66l0.66,0.59l1.25,-0.16l0.52,0.26l0.41,-0.38l0.18,-1.95l-0.75,-3.33l0.41,-0.48l0.56,0.43l0.94,0.06l0.28,-0.58l-0.29,-0.44l0.48,-0.57l1.71,1.84l-0.01,1.4l0.62,0.9l-0.78,0.65l0.9,1.14l-0.08,0.37l-0.42,0.55l-0.78,0.09l-0.91,-0.86l-0.32,0.34l0.13,1.26l-1.08,1.62l0.2,0.57l-0.33,0.22l-0.15,0.98l-0.74,0.55l0.1,0.91l-0.9,0.97l-1.06,0.21l-0.6,-0.37l-0.52,0.52l-0.93,-0.81l-0.86,0.1l-0.4,-0.82l-0.59,-0.21l-0.52,0.38l0.08,0.94l-0.52,0.22l-1.42,-1.24l1.31,-0.4l0.23,-0.88l-0.57,-0.42l-2.02,0.31l-1.14,1.01l0.29,0.67l0.44,0.16l-0.06,0.39l0.15,0.43l0.35,0.25l-0.03,0.12l-0.57,-0.34l-1.69,0.83l-1.12,-0.43l-1.45,0.06l-3.32,-0.7l0.42,1.08l0.97,0.45l0.36,0.64l1.51,-0.21l4.03,1.02l3.51,0.11l0.47,0.42l-0.06,0.52l-0.99,0.05l-0.25,0.72l-1.62,1.44l0.32,0.58l1.85,0.01l-2.56,3.5l-1.67,0.04l-1.6,-0.98l-0.9,-0.19l-1.21,-1.02l-1.12,0.07l0.07,0.47l1.04,1.14l2.32,2.09l2.68,0.26l1.31,0.49l1.7,-2.16l0.51,0.47l1.17,0.33l0.4,-0.57l-0.55,-0.9l0.87,0.16l0.19,0.57l0.66,0.23l1.63,-1.2l-0.18,0.61l0.29,0.57l-0.29,0.38l-0.43,-0.21l-0.41,0.37l0.03,0.9l-0.97,1.72l0.01,0.78l-0.71,-0.07l-0.06,-0.74l-1.12,-0.61l-0.42,0.47l0.27,1.45l-0.52,-1.1l-0.65,-0.15l-1.22,1.08l-0.21,0.53l0.25,0.27l-2.03,0.32l-2.75,1.84l-0.67,-1.03l-0.75,-0.3l-0.37,0.49l0.43,1.26l-0.57,-0.01l-0.09,0.82l-0.94,1.73l-0.91,0.84l-0.59,-0.26l0.49,-0.69l-0.02,-0.77l-1.06,-0.93l-0.08,-0.52l-1.69,-0.41l-0.16,0.47l0.43,1.16l0.2,0.33l0.58,0.07l0.3,0.61l-0.88,0.37l-0.08,0.71l0.65,0.64l0.77,0.18l-0.01,0.37l-2.12,1.67l-1.91,2.65l-2.0,4.31l-0.34,2.13l0.12,1.33l-0.15,-1.03l-1.0,-1.6l-0.55,-0.17l-0.3,0.48l1.17,3.95l-0.63,2.27l-3.9,0.19l-1.43,0.65l-0.35,-0.52l-0.58,-0.18l-0.54,1.07l-1.9,1.14l-0.61,-0.02l-23.25,-15.36l-1.05,-0.02l-18.68,3.49l-0.65,-2.77l-3.25,-2.84l-0.47,0.08l-1.23,1.31l-0.01,-1.29l-0.82,-0.54l-22.82,3.35l-0.64,-0.27l-0.62,0.46l-0.25,0.65l-3.98,1.92l-0.89,1.23l-1.01,0.08l-4.78,2.66l-20.95,3.93l-0.34,-4.55l0.7,-0.95ZM816.97,271.42l0.19,0.35l0.24,0.38l-0.45,-0.41l0.02,-0.32ZM807.5,290.22l0.2,0.32l-0.16,-0.09l-0.04,-0.24ZM815.28,299.09l0.16,-0.36l0.16,0.07l-0.13,0.29l-0.19,0.01ZM812.72,299.05l-0.06,-0.29l-0.03,-0.11l0.3,0.26l-0.21,0.13Z", "name": "North Carolina"}, "US-ND": {"path": "M438.58,42.78l2.06,6.89l-0.73,2.53l0.57,2.36l-0.27,1.17l0.47,1.99l0.01,3.26l1.42,3.95l0.45,0.54l-0.08,0.97l0.39,1.52l0.62,0.74l1.48,3.74l-0.06,3.9l0.42,0.7l0.5,8.35l0.51,1.54l0.51,0.25l-0.47,2.64l0.36,1.63l-0.14,1.75l0.69,1.1l0.2,2.16l0.49,1.13l1.8,2.56l0.15,2.2l0.51,1.08l0.17,1.39l-0.24,1.36l0.28,1.74l-27.89,0.73l-28.38,0.19l-28.38,-0.37l-28.48,-0.93l2.75,-65.45l23.09,0.78l25.56,0.42l25.56,-0.06l24.09,-0.49Z", "name": "North Dakota"}, "US-NE": {"path": "M422.62,173.98l3.92,2.71l3.93,1.9l1.33,-0.22l0.51,-0.47l0.36,-1.08l0.48,-0.2l2.49,0.34l1.32,-0.47l1.58,0.25l3.45,-0.65l2.37,1.98l1.4,0.14l1.55,0.77l1.45,0.08l0.88,1.1l1.49,0.17l-0.06,0.98l1.68,2.08l3.32,0.6l-0.02,2.55l1.13,1.94l0.01,2.29l1.15,1.07l0.34,1.72l1.73,1.46l0.07,1.88l1.5,2.11l-0.49,2.33l0.44,3.09l0.52,0.54l0.93,-0.2l-0.04,1.25l1.21,0.5l-0.41,2.36l0.21,0.44l1.12,0.4l-0.6,0.77l-0.09,1.01l0.13,0.59l0.82,0.5l0.16,1.45l-0.26,0.92l0.26,1.27l0.55,0.61l0.3,1.93l-0.22,1.33l0.23,0.72l-0.57,0.92l0.02,0.79l0.45,0.88l1.23,0.63l0.25,2.5l1.1,0.51l0.03,0.79l1.18,2.75l-0.23,0.96l1.16,0.21l0.8,0.99l1.1,0.24l-0.15,0.96l1.31,1.68l-0.21,1.12l0.51,0.91l-26.14,1.05l-27.83,0.63l-27.84,0.14l-27.88,-0.35l0.46,-21.65l-0.39,-0.41l-32.35,-1.04l1.85,-43.23l43.35,1.22l44.66,-0.04Z", "name": "Nebraska"}, "US-LA": {"path": "M509.0,412.88l-1.33,-21.76l51.43,-4.07l0.34,0.83l1.48,0.65l-0.92,1.35l-0.25,2.13l0.49,0.72l1.18,0.31l-1.21,0.47l-0.45,0.78l0.45,1.36l1.04,0.84l0.08,2.15l0.46,0.54l1.51,0.74l0.45,1.05l1.42,0.44l-0.87,1.22l-0.85,2.34l-0.75,0.04l-0.52,0.51l-0.02,0.73l0.63,0.72l-0.22,1.16l-1.34,0.96l-1.08,1.89l-1.37,0.67l-0.68,0.83l-0.79,2.42l-0.25,3.52l-1.55,1.74l0.13,1.2l0.62,0.96l-0.35,2.38l-1.61,0.29l-0.6,0.57l0.28,0.97l0.64,0.59l-0.26,1.41l0.98,1.51l-1.18,1.18l-0.08,0.45l0.4,0.23l6.18,-0.55l29.23,-2.92l-0.68,3.47l-0.52,1.02l-0.2,2.24l0.69,0.98l-0.09,0.66l0.6,1.0l1.31,0.7l1.22,1.42l0.14,0.88l0.89,1.39l0.14,1.05l1.11,1.84l-1.85,0.39l-0.38,-0.08l-0.01,-0.56l-0.53,-0.57l-1.28,0.27l-1.18,-0.59l-1.51,0.17l-0.61,-0.98l-1.24,-0.86l-2.84,-0.47l-1.24,0.63l-1.39,2.3l-1.3,1.42l-0.42,0.91l0.07,1.2l0.55,0.89l0.82,0.57l4.25,0.82l3.35,-1.0l1.32,-1.19l0.68,-1.2l0.34,0.59l1.08,0.43l0.59,-0.4l0.81,0.03l0.51,-0.46l-0.76,1.21l-1.12,-0.12l-0.57,0.32l-0.38,0.62l0.0,0.83l0.76,1.22l1.48,-0.02l0.65,0.89l1.1,0.48l1.44,-0.66l0.46,-1.11l-0.02,-1.37l0.93,-0.57l0.42,-0.99l0.23,0.05l0.1,1.16l-0.24,0.25l0.19,0.57l0.42,0.15l-0.07,0.75l1.34,1.08l0.35,-0.16l-0.48,0.59l0.18,0.63l-0.24,0.17l-0.84,-0.72l-0.71,-0.08l-1.0,1.89l-0.84,0.14l-0.46,0.53l0.16,1.19l-1.59,-0.6l-0.43,0.19l0.04,0.46l1.14,1.06l-1.17,-0.14l-0.92,0.6l0.68,0.43l1.26,2.04l2.74,0.97l-0.08,1.2l0.33,0.4l2.07,-0.31l0.77,0.17l0.17,0.53l0.73,0.32l1.35,-0.34l0.53,0.78l1.08,-0.46l1.13,0.73l0.14,0.3l-0.41,0.63l1.54,0.86l-0.39,0.65l0.39,0.58l-0.18,0.62l-0.95,1.49l-1.3,-1.56l-0.68,0.34l0.1,0.66l-0.38,0.12l0.41,-1.88l-1.32,-0.76l-0.51,0.5l0.2,1.17l-0.54,0.45l-0.27,-1.02l-0.57,-0.25l-0.89,-1.27l0.03,-0.77l-0.96,-0.14l-0.47,0.5l-1.41,-0.17l-0.74,-0.77l-2.31,-0.09l0.38,-0.86l-0.13,-0.66l-0.64,-0.69l-0.91,0.04l0.1,-0.96l-0.37,-0.36l-0.91,-0.03l-0.22,0.59l-0.85,-0.38l-0.48,0.27l-2.61,-1.26l-1.24,-0.02l-0.67,-0.64l-0.61,0.18l-0.3,0.56l-0.05,1.25l1.72,0.94l1.67,0.35l-0.16,0.92l0.28,0.4l-0.34,0.34l0.23,0.68l-0.76,0.94l-0.03,0.66l0.81,0.97l-0.95,1.43l-1.33,0.94l-0.76,-1.15l0.22,-1.5l-0.35,-0.92l-0.49,-0.18l-0.4,0.36l-1.15,-1.08l-0.6,0.42l-0.76,-1.05l-0.62,-0.2l-0.64,1.33l-0.85,0.26l-0.89,-0.53l-0.85,0.53l-0.1,0.62l0.48,0.41l-0.67,0.56l-0.13,1.44l-0.46,0.13l-0.4,0.84l-0.92,0.08l-0.11,-0.68l-1.6,-0.4l-0.76,0.97l-1.92,-0.93l-0.3,-0.54l-0.99,0.01l-0.35,0.6l-1.15,-0.51l0.42,-0.4l0.0,-1.46l-0.38,-0.57l-1.9,-1.19l-0.08,-0.54l-0.83,-0.71l-0.09,-0.91l0.73,-1.15l-0.34,-1.14l-0.88,-0.19l-0.34,0.57l0.16,0.43l-0.58,0.81l0.04,0.91l-1.8,-0.4l0.07,-0.39l-0.47,-0.54l-1.97,0.76l-0.7,-2.22l-1.32,0.23l-0.18,-2.12l-1.31,-0.35l-1.89,0.3l-1.08,0.66l-0.21,-0.71l0.84,-0.26l-0.05,-0.8l-0.6,-0.58l-1.03,-0.1l-0.85,0.42l-0.94,-0.15l-0.4,0.8l-2.0,1.11l-0.63,-0.31l-1.29,0.71l0.54,1.37l0.81,0.31l1.04,1.55l-1.27,0.36l-1.82,1.06l-7.63,-0.92l-6.7,-2.31l-3.46,-0.65l-6.85,0.69l-3.41,0.8l-1.57,0.73l-0.91,-1.41l1.2,-0.46l0.79,-0.98l0.27,-2.3l-0.59,-0.84l1.15,-1.62l0.23,-1.59l-0.5,-1.83l0.07,-1.46l-0.66,-0.7l-0.21,-1.04l0.83,-2.21l-0.64,-1.95l0.76,-0.84l0.3,-1.49l0.78,-0.94l0.79,-2.83l-0.18,-1.42l0.58,-0.97l-0.75,-1.33l0.84,-0.39l0.2,-0.44l-0.89,-1.36l0.03,-2.13l-1.07,-0.23l-0.57,-1.57l-0.92,-0.84l0.28,-1.27l-0.81,-0.76l-0.33,-0.95l-0.64,-0.34l0.22,-0.98l-1.16,-0.58l-0.81,-0.93l0.16,-2.46l-0.68,-1.93l-1.33,-1.98l-2.63,-2.21ZM548.97,462.65l0.0,-0.0l0.0,0.0l-0.0,0.0ZM607.49,467.36l-0.03,-0.03l-0.08,-0.04l0.13,-0.01l-0.03,0.08ZM607.51,465.75l-0.02,-0.01l0.03,-0.01l-0.02,0.02ZM567.05,468.89l-2.0,-0.42l-0.66,-0.5l0.73,-0.43l0.35,-0.75l0.39,0.49l0.83,0.21l-0.14,0.6l0.5,0.81Z", "name": "Louisiana"}, "US-SD": {"path": "M336.43,128.81l0.3,-0.53l0.75,-19.92l28.49,0.93l28.39,0.37l28.39,-0.19l27.77,-0.73l-0.18,1.71l-0.73,1.71l-2.9,2.46l-0.42,1.27l1.59,2.13l1.06,2.06l0.55,0.36l1.74,0.24l1.01,0.84l0.57,1.02l1.45,38.83l-1.84,0.09l-0.42,0.56l0.24,1.44l0.88,1.14l0.01,1.45l-0.65,0.36l0.17,1.48l0.48,0.43l1.09,0.04l0.34,1.68l-0.16,0.91l-0.62,0.83l0.02,1.73l-0.68,2.45l-0.49,0.44l-0.67,1.88l0.5,1.1l1.33,1.08l-0.16,0.62l0.64,0.66l0.35,1.15l-1.65,-0.28l-0.34,-0.94l-0.85,-0.73l0.19,-0.61l-0.28,-0.59l-1.58,-0.23l-1.03,-1.18l-1.57,-0.11l-1.51,-0.75l-1.34,-0.12l-2.38,-1.99l-3.78,0.6l-1.65,-0.25l-1.19,0.46l-2.62,-0.33l-0.98,0.48l-0.76,1.45l-0.72,0.05l-3.66,-1.82l-4.13,-2.8l-44.82,0.05l-43.33,-1.22l1.79,-43.19Z", "name": "South Dakota"}, "US-DC": {"path": "M783.1,218.48l-0.45,-0.64l-1.55,-0.67l0.58,-1.01l2.03,1.26l-0.61,1.06Z", "name": "District of Columbia"}, "US-DE": {"path": "M798.42,195.12l0.48,-1.56l0.92,-1.11l1.72,-0.71l1.12,0.06l-0.33,0.56l-0.08,1.38l-0.46,1.09l-0.6,0.54l-0.09,0.77l0.13,0.61l1.03,0.85l0.11,2.31l3.98,3.32l1.13,3.99l1.96,1.68l0.47,1.26l3.17,2.27l1.35,-0.08l0.48,1.21l-0.58,0.27l-0.31,0.67l0.03,0.76l0.36,0.19l-0.82,0.57l-0.08,1.21l0.66,0.21l0.85,-0.73l0.72,0.34l0.3,-0.21l0.59,1.55l-9.84,2.64l-8.37,-25.89Z", "name": "Delaware"}, "US-FL": {"path": "M630.29,423.61l47.18,-6.86l1.52,1.91l0.86,2.72l1.47,1.0l48.78,-5.11l1.03,1.38l0.03,1.09l0.55,1.05l1.04,0.48l1.64,-0.28l0.85,-0.75l-0.14,-4.57l-0.98,-1.49l-0.22,-1.77l0.28,-0.74l0.62,-0.3l0.12,-0.7l5.59,0.96l4.03,-0.16l0.14,1.24l-0.75,-0.12l-0.32,0.43l0.25,1.54l2.11,1.81l0.22,1.01l0.42,0.38l0.3,1.92l5.3,11.5l1.81,3.07l7.14,10.22l0.63,0.36l6.82,7.53l-0.48,-0.02l-0.27,0.61l-1.35,-0.02l-0.34,-0.65l0.38,-1.38l-0.16,-0.56l-2.3,-0.92l-0.46,0.53l1.0,2.8l0.78,0.97l2.14,4.77l9.92,13.71l1.37,3.11l3.66,5.34l-1.38,-0.35l-0.43,0.74l0.8,0.65l0.85,0.24l0.56,-0.22l1.46,0.94l2.05,3.05l-0.5,0.34l-0.12,0.53l1.16,0.53l0.89,1.83l-0.08,1.06l0.59,0.95l0.61,2.64l-0.27,0.75l0.93,8.98l-0.31,1.07l0.46,0.67l0.5,3.1l-0.78,1.26l0.03,2.43l-0.84,0.74l-0.22,1.8l-0.48,0.85l0.21,1.47l-0.31,1.74l0.54,1.74l0.45,0.23l-1.15,1.8l-0.39,1.28l-0.94,0.24l-0.53,-0.22l-1.37,0.45l-0.35,1.06l-0.89,0.3l-0.18,0.58l-0.85,0.67l-1.44,0.14l-0.27,-0.32l-1.23,-0.1l-0.9,1.05l-3.17,1.13l-1.06,-0.59l-0.7,-1.04l0.06,-1.8l1.0,0.84l1.64,0.47l0.26,0.63l0.52,0.07l1.35,-0.72l0.2,-0.69l-0.26,-0.64l-1.58,-1.11l-2.4,-0.26l-0.91,-0.46l-0.85,-1.67l-0.89,-0.72l0.22,-0.98l-0.48,-0.28l-0.53,0.15l-1.38,-2.51l-0.44,-0.3l-0.64,0.07l-0.44,-0.61l0.22,-0.89l-0.7,-0.65l-1.21,-0.6l-1.06,-0.08l-0.75,-0.54l-0.57,0.18l-2.8,-0.59l-0.5,0.64l0.25,-0.91l-0.46,-0.42l-0.87,0.12l-0.26,-0.72l-0.88,-0.65l-0.61,-1.41l-0.55,-0.11l-0.73,-2.95l-0.77,-0.98l-0.16,-1.52l-0.44,-0.83l-0.71,-0.89l-0.49,-0.15l-0.12,0.93l-1.29,-0.26l1.07,-1.3l0.18,-1.37l0.86,-1.46l0.65,-0.34l0.28,-0.83l-0.61,-0.38l-1.42,0.93l-1.03,1.67l-0.28,1.79l-1.37,0.35l-0.2,-1.33l-0.79,-1.33l-0.27,-4.04l-0.86,-0.6l1.63,-1.33l0.22,-0.97l-0.58,-0.42l-3.05,1.92l-0.75,-0.66l-0.4,0.26l-1.27,-0.89l-0.37,0.74l1.13,1.09l0.52,0.1l1.26,2.0l-1.04,0.24l-1.43,-0.38l-0.84,-1.6l-1.13,-0.6l-1.94,-2.54l-1.04,-2.28l-1.28,-0.87l0.1,-0.87l-0.97,-1.8l-1.77,-0.98l0.09,-0.67l0.99,-0.41l-0.35,-0.49l0.44,-0.73l-0.39,-0.35l0.4,-1.21l2.47,-4.47l-1.05,-2.41l-0.68,-0.46l-0.92,0.42l-0.28,0.93l0.29,1.19l-0.24,0.03l-0.73,-2.44l-0.99,-0.28l-1.18,-0.87l-1.52,-0.31l0.29,1.94l-0.48,0.61l0.27,0.59l2.21,0.56l0.24,0.97l-0.37,2.46l-0.31,-0.58l-0.8,-0.21l-2.13,-1.53l-0.41,0.2l-0.29,-0.62l0.59,-2.11l0.07,-2.97l-0.66,-1.97l0.42,-0.51l0.48,-1.91l-0.24,-0.54l0.66,-3.04l-0.37,-5.41l-0.69,-1.56l0.35,-0.47l-0.47,-2.18l-2.1,-1.33l-0.05,-0.53l-0.55,-0.43l-0.1,-1.01l-0.92,-0.73l-0.55,-1.51l-0.64,-0.25l-1.44,0.32l-1.02,-0.2l-1.57,0.54l-1.15,-1.74l-1.5,-0.47l-0.19,-0.6l-1.35,-1.51l-3.81,-1.88l-0.51,-2.75l-3.06,-1.14l-0.65,-0.59l-0.52,-1.23l-2.15,-1.93l-2.19,-1.09l-1.45,-0.12l-3.44,-1.68l-2.85,0.98l-1.01,-0.4l-1.04,0.42l-0.36,0.68l-1.33,0.68l-0.5,0.71l0.03,0.64l-0.73,-0.22l-0.59,0.6l0.67,0.94l1.51,0.08l0.41,0.21l-3.03,0.23l-1.58,1.51l-0.91,0.45l-1.3,1.56l-1.56,1.03l-0.32,0.13l0.2,-0.48l-0.26,-0.54l-0.67,-0.04l-2.07,2.24l-2.2,0.23l-2.11,1.06l-0.78,0.03l-0.27,-2.03l-1.71,-2.23l-2.21,-1.0l-0.18,-0.41l-2.51,-1.5l2.8,1.33l1.21,-0.74l-0.0,-0.74l-1.32,-0.34l-0.35,0.55l-0.21,-1.01l-0.34,-0.1l0.12,-0.52l-0.49,-0.33l-1.4,0.61l-2.3,-0.76l0.65,-1.08l0.83,-0.1l1.03,-1.45l-0.91,-0.96l-0.46,0.13l-0.49,1.02l-0.44,-0.04l-0.81,0.56l-0.72,-0.9l-0.7,0.09l-0.17,0.38l-1.34,0.73l-0.14,0.68l0.28,0.46l-3.95,-1.35l-5.05,-0.71l0.11,-0.24l1.27,0.29l0.61,-0.53l2.1,0.39l0.23,-0.78l-0.94,-1.02l0.09,-0.69l-0.62,-0.29l-0.5,0.32l-0.28,-0.47l-1.9,0.19l-2.25,1.1l0.3,-0.64l-0.41,-0.58l-0.96,0.35l-0.58,-0.25l-0.23,0.44l0.2,0.71l-1.45,0.79l-0.4,0.64l-5.17,0.97l0.32,-0.52l-0.4,-0.52l-1.35,-0.28l-0.72,-0.53l0.69,-0.53l0.01,-0.78l-0.68,-0.13l-0.81,-0.66l-0.46,0.11l0.14,0.76l-0.42,1.77l-1.05,-1.39l-0.69,-0.45l-0.55,0.07l-0.3,0.71l0.82,1.77l-0.25,0.79l-1.39,0.99l-0.05,1.04l-0.6,0.22l-0.17,0.57l-1.48,0.55l0.28,-0.66l-0.22,-0.45l1.14,-1.03l0.07,-0.74l-0.4,-0.58l-1.18,-0.24l-0.42,-0.84l0.3,-1.7l-0.18,-1.61l-2.17,-1.12l-2.39,-2.46l0.32,-1.44l-0.15,-1.04ZM644.36,434.04l-0.94,0.26l0.4,-0.44l0.53,0.18ZM665.13,435.61l0.98,-0.28l0.35,0.31l0.08,0.72l-1.42,-0.75ZM770.53,454.92l0.42,0.56l-0.43,0.75l0.0,-1.31Z", "name": "Florida"}, "US-CT": {"path": "M823.41,156.51l2.83,-3.23l-0.07,-0.54l-1.31,-1.25l-3.5,-15.89l9.81,-2.41l0.6,0.46l0.65,-0.26l0.23,-0.58l14.16,-4.0l3.2,10.18l0.47,1.96l-0.04,1.69l-1.66,0.32l-0.92,0.81l-0.69,-0.36l-0.5,0.1l-0.18,0.91l-1.14,0.07l-1.27,1.27l-0.62,-0.14l-0.56,-1.02l-0.89,-0.09l-0.21,0.67l0.75,0.64l0.08,0.54l-0.89,-0.02l-1.02,0.87l-1.65,0.07l-1.15,0.94l-1.44,0.13l-1.21,0.93l-0.65,-1.0l-0.61,0.11l-1.01,2.46l-1.06,0.61l-0.25,1.02l-0.77,-0.26l-0.96,0.56l-0.09,0.85l-1.72,0.98l-1.94,2.27l-1.19,0.46l-0.24,0.38l-1.4,-1.23Z", "name": "Connecticut"}, "US-WA": {"path": "M38.51,55.06l0.37,-1.08l0.93,0.65l0.55,-0.14l0.54,-0.65l0.49,0.67l0.71,-0.01l0.17,-0.77l-0.98,-1.47l0.85,-0.83l-0.09,-1.36l0.49,-0.39l-0.1,-1.03l0.81,-0.27l0.05,0.5l0.48,0.41l0.95,-0.31l-0.09,-0.68l-1.44,-1.82l-1.84,-0.1l-0.15,0.32l-0.78,-0.82l0.26,-1.62l0.66,0.53l0.52,-0.07l0.29,-0.56l-0.17,-0.68l3.33,-0.52l0.25,-0.68l-2.59,-1.29l-0.05,-0.79l-0.67,-0.57l-1.3,-0.31l0.37,-4.73l-0.5,-1.29l0.25,-0.72l-0.52,-0.48l0.55,-3.93l0.04,-4.38l-0.56,-1.02l-0.04,-0.98l-1.56,-2.34l0.33,-4.24l-0.21,-1.29l0.78,-0.79l0.04,-0.71l0.97,-1.44l-0.6,-1.43l1.04,0.8l0.44,0.0l3.35,3.31l0.99,0.35l2.18,2.41l3.73,1.49l1.21,0.07l0.79,0.71l0.67,0.31l0.6,-0.15l1.57,1.07l1.49,0.47l1.28,0.28l1.22,-0.61l0.53,0.31l0.46,0.71l-0.05,1.24l0.55,0.74l0.8,-0.24l0.07,-0.75l0.44,0.03l0.63,1.39l-0.4,0.58l0.34,0.49l0.56,-0.04l0.73,-0.84l-0.38,-1.7l1.03,-0.24l-0.44,0.23l-0.22,0.69l1.27,4.41l-0.46,0.1l-1.67,1.72l0.22,-1.29l-0.22,-0.41l-1.31,0.31l-0.38,0.81l0.09,0.95l-1.37,1.7l-1.98,1.38l-1.06,1.41l-0.96,0.69l-1.1,1.67l-0.06,0.71l0.62,0.6l0.96,0.12l2.77,-0.48l1.22,-0.58l-0.03,-0.7l-0.64,-0.23l-2.94,0.79l-0.35,-0.3l3.23,-3.42l3.06,-0.88l0.89,-1.51l1.73,-1.54l0.53,0.57l0.54,-0.19l0.22,-1.81l-0.06,2.25l0.26,0.91l-0.98,-0.21l-0.64,0.77l-0.41,-0.73l-0.53,-0.19l-0.39,0.64l0.32,2.34l-0.21,-1.07l-0.67,-0.21l-0.46,0.69l-0.07,0.75l0.46,0.66l-0.63,0.58l-0.0,0.45l0.42,0.17l1.67,-0.57l0.25,1.09l-1.08,1.79l-0.08,1.05l-0.83,0.7l0.13,1.0l-0.85,-0.68l1.12,-1.44l-0.23,-0.96l-1.96,1.08l-0.38,0.64l-0.05,-2.11l-0.52,0.02l-1.03,1.59l-1.26,0.53l-1.14,1.87l-1.51,0.3l-0.46,0.44l-0.21,1.18l1.11,-0.03l-0.25,0.36l0.27,0.37l0.93,0.02l0.06,0.68l0.53,0.47l0.52,-0.27l0.35,-1.76l0.15,0.42l0.83,-0.15l1.11,1.48l1.31,-0.61l1.64,-1.48l0.98,-1.56l0.63,0.78l0.73,0.14l0.44,-0.23l-0.06,-0.86l1.56,-0.55l0.35,-0.94l-0.33,-1.26l0.22,-1.19l-0.18,-1.35l0.83,0.2l0.3,-0.92l-0.19,-0.75l-0.72,-0.63l0.89,-1.13l0.07,-1.75l1.24,-1.24l0.61,-1.37l1.61,-0.49l0.78,-1.15l-0.45,-0.66l-0.51,-0.02l-0.86,-1.3l0.16,-2.09l-0.26,-0.87l0.49,-0.79l0.06,-0.84l-1.15,-1.73l-0.63,-0.4l-0.17,-0.64l0.18,-0.5l0.59,0.24l0.53,-0.33l0.24,-1.8l0.79,-0.24l0.3,-1.0l-0.61,-2.32l0.44,-0.53l-0.03,-0.86l-0.96,-0.88l-0.95,0.3l-1.09,-2.65l0.93,-1.82l41.31,9.4l38.95,7.65l-10.13,55.39l1.04,3.0l0.13,2.0l-1.0,1.3l0.73,1.88l-31.18,-5.92l-1.67,0.79l-7.24,-1.02l-1.68,0.92l-4.19,-0.12l-3.18,0.45l-1.64,0.75l-0.88,-0.26l-1.2,0.3l-1.51,-0.23l-2.43,-0.94l-0.91,0.46l-3.45,0.51l-2.11,-0.71l-1.65,0.3l-0.31,-1.36l-1.09,-0.88l-4.34,-1.46l-2.32,-0.11l-1.15,-0.51l-1.27,0.21l-1.89,0.86l-4.49,0.58l-2.26,-1.01l-1.61,-1.15l-1.84,-0.51l-0.63,-0.81l0.64,-6.82l-0.46,-0.95l-0.22,-1.9l-0.98,-1.35l-1.96,-1.67l-1.59,-0.23l-1.31,0.28l-1.95,-3.24l-2.07,-0.23l-0.56,-0.3l-0.1,-0.52l-0.55,-0.47l-1.22,0.28l-0.81,-0.15l-1.0,0.52l-1.03,-1.77l-0.93,-0.23ZM61.97,39.77l0.16,0.74l-0.42,0.48l0.0,-0.91l0.26,-0.31ZM71.38,20.37l-0.61,0.87l-0.15,0.52l0.18,-1.38l0.58,-0.01ZM71.25,15.62l-0.09,-0.05l0.05,-0.04l0.04,0.1ZM70.48,15.47l-0.77,0.39l0.37,-0.68l-0.07,-0.6l0.22,-0.07l0.25,0.97ZM57.68,42.43l0.04,-0.02l-0.01,0.0l-0.03,0.01Z", "name": "Washington"}, "US-KS": {"path": "M477.93,239.62l0.44,0.63l0.76,0.18l1.04,0.8l2.19,-1.08l-0.0,0.75l1.08,0.79l0.23,1.44l-0.95,-0.15l-0.6,0.31l-0.17,0.97l-1.14,1.37l-0.06,1.14l-0.79,0.5l0.04,0.64l1.56,2.1l2.0,1.49l0.2,1.13l0.42,0.86l0.74,0.56l0.32,1.11l1.89,0.91l1.54,0.26l2.67,46.81l-31.54,1.48l-31.97,0.88l-31.98,0.26l-32.04,-0.37l1.21,-65.46l27.89,0.35l27.85,-0.14l27.84,-0.64l27.67,-1.12l1.65,1.23Z", "name": "Kansas"}, "US-WI": {"path": "M510.09,124.06l0.41,-0.27l0.28,-0.9l-0.45,-1.48l0.04,-1.91l0.7,-1.16l0.53,-2.25l-1.61,-2.91l-0.83,-0.36l-1.28,-0.01l-0.21,-2.31l1.67,-2.26l-0.05,-0.77l0.77,-1.55l1.95,-1.09l0.48,-0.75l0.97,-0.25l0.45,-0.75l1.16,-0.14l1.04,-1.56l-0.97,-12.11l1.03,-0.35l0.22,-1.1l0.73,-0.97l0.78,0.7l1.68,0.64l2.61,-0.56l3.27,-1.57l2.65,-0.82l2.22,-2.12l0.31,0.29l1.39,-0.11l1.25,-1.48l0.79,-0.58l1.04,-0.1l0.4,-0.52l1.07,0.99l-0.48,1.68l-0.67,1.01l0.23,1.61l-1.21,2.21l0.64,0.66l2.5,-1.09l0.72,-0.87l2.15,1.22l2.34,0.47l0.44,0.53l0.86,-0.13l1.6,0.7l2.23,3.54l15.47,2.52l4.65,1.96l1.67,-0.16l1.63,0.42l1.33,-0.59l3.17,0.71l2.18,0.09l0.85,0.41l0.56,0.89l-0.42,1.09l0.41,0.77l3.4,0.63l1.4,1.13l-0.16,0.71l0.59,1.11l-0.36,0.81l0.43,1.25l-0.78,1.25l-0.03,1.76l0.91,0.63l1.38,-0.26l1.02,-0.72l0.2,0.26l-0.79,2.44l0.04,1.31l1.32,1.46l0.84,0.35l-0.24,2.02l-2.42,1.2l-0.51,0.78l0.04,1.26l-1.61,3.49l-0.4,3.5l1.11,0.83l0.91,-0.04l0.5,-0.37l0.49,-1.37l1.82,-1.47l0.66,-2.54l1.06,-1.7l0.59,0.18l0.58,-0.71l0.87,-0.4l1.12,1.12l0.59,0.2l-0.28,2.18l-1.19,2.85l-0.57,5.58l0.23,1.11l0.8,0.93l0.07,0.52l-0.51,0.98l-1.3,1.34l-0.86,3.88l0.15,2.57l0.72,1.2l0.06,1.24l-1.07,3.23l0.12,2.11l-0.73,2.11l-0.28,2.46l0.59,2.02l-0.04,1.32l0.49,0.53l-0.21,1.7l0.92,0.78l0.54,2.44l1.2,1.54l0.08,1.69l-0.33,1.45l0.48,2.95l-44.2,4.6l-0.19,-0.79l-1.56,-2.19l-4.94,-0.84l-1.06,-1.35l-0.36,-1.68l-0.9,-1.21l-0.86,-4.89l1.04,-2.61l-0.09,-0.99l-0.71,-0.79l-1.44,-0.48l-0.71,-1.76l-0.47,-6.02l-0.7,-1.4l-0.52,-2.56l-1.15,-0.6l-1.1,-1.56l-0.93,-0.11l-1.17,-0.75l-1.71,0.09l-2.67,-1.79l-2.3,-3.5l-2.64,-2.1l-2.94,-0.53l-0.73,-1.24l-1.12,-1.0l-3.12,-0.45l-3.53,-2.74l0.45,-1.24l-0.12,-1.61l0.25,-0.81l-0.88,-3.11Z", "name": "Wisconsin"}, "US-OR": {"path": "M10.81,140.09l0.63,-3.94l1.32,-2.52l0.23,-1.22l-0.01,-1.26l-0.46,-0.66l-0.14,-1.12l-0.42,-0.32l-0.11,-1.85l2.73,-3.63l2.2,-4.73l0.1,-1.09l0.42,-0.27l0.01,0.79l0.73,0.1l0.42,-1.11l0.88,-0.84l0.23,0.94l1.39,0.27l-0.51,-2.64l-0.92,0.08l2.09,-3.81l1.11,-0.76l0.8,0.4l0.55,-0.33l-0.66,-1.35l-0.6,-0.3l1.71,-4.39l0.41,-0.38l0.04,-0.96l1.74,-5.49l0.97,-1.98l0.4,0.33l0.67,-0.29l-0.12,-0.97l-0.56,-0.32l0.96,-2.74l0.81,0.17l0.23,-0.45l-0.16,-0.52l-0.52,-0.28l0.54,-2.86l1.58,-2.7l0.83,-3.02l1.14,-1.76l0.97,-3.1l-0.08,-1.04l1.21,-1.1l0.04,-0.6l-0.46,-0.65l0.14,-0.52l0.51,0.64l0.45,0.05l0.39,-0.63l0.17,-1.39l-0.74,-0.72l0.5,-1.2l1.28,-0.78l0.05,-0.46l-0.86,-0.5l-0.26,-1.11l0.86,-2.17l-0.06,-1.44l0.92,-0.59l0.4,-0.85l0.07,-3.75l0.49,0.86l0.9,0.41l-0.04,0.91l0.55,0.53l0.43,-0.82l0.39,-0.14l-0.27,-0.98l1.12,0.84l1.53,0.0l1.45,-0.68l1.44,2.36l1.99,0.78l1.39,-0.67l0.91,0.06l1.72,1.51l0.77,1.04l0.21,1.9l0.43,0.78l-0.03,2.05l-0.39,1.24l0.19,0.93l-0.43,1.74l0.26,1.45l0.79,0.85l1.94,0.56l1.44,1.05l2.4,1.1l4.98,-0.53l2.9,-1.06l1.14,0.51l2.23,0.09l4.24,1.43l0.69,0.54l0.19,1.15l0.57,0.58l1.86,-0.27l2.11,0.71l3.79,-0.55l0.69,-0.42l2.19,0.93l1.64,0.24l1.19,-0.3l0.88,0.26l1.89,-0.78l3.07,-0.43l4.16,0.13l1.61,-0.91l7.16,1.02l0.96,-0.19l0.79,-0.58l31.27,5.93l0.23,1.81l0.93,1.82l1.16,0.63l1.96,1.86l0.57,2.45l-0.16,1.0l-3.69,4.54l-0.4,1.41l-1.39,2.63l-2.21,2.42l-0.65,2.68l-1.49,1.84l-2.23,1.5l-1.92,3.35l-1.49,1.27l-0.62,2.02l-0.12,1.87l0.28,0.92l0.56,0.61l0.54,0.04l0.39,-0.35l0.63,0.76l0.89,-0.05l0.07,0.88l0.8,0.95l-0.46,1.0l-0.65,0.06l-0.33,0.4l0.21,1.8l-1.03,2.56l-1.22,1.41l-6.86,39.15l-26.21,-4.99l-28.89,-6.05l-28.8,-6.61l-28.87,-7.22l-1.54,-2.51l0.26,-2.47l-0.29,-0.87Z", "name": "Oregon"}, "US-KY": {"path": "M583.03,306.53l0.35,-2.18l1.13,0.96l0.72,0.2l0.75,-0.36l0.46,-0.88l0.87,-3.55l-0.54,-1.75l0.38,-0.86l-0.1,-1.87l-1.27,-2.04l1.79,-3.21l1.24,-0.51l0.73,0.06l7.03,2.56l0.81,-0.2l0.65,-0.72l0.24,-1.93l-1.48,-2.14l-0.24,-1.44l0.2,-0.87l0.4,-0.52l1.1,-0.18l1.24,-0.83l3.0,-0.95l0.64,-0.51l0.15,-1.13l-1.53,-2.05l-0.08,-0.68l1.33,-1.97l0.14,-1.16l1.25,0.42l1.12,-1.33l-0.68,-2.0l1.92,0.9l1.72,-0.84l0.03,1.18l1.0,0.46l0.99,-0.94l0.02,-1.36l0.51,0.16l1.9,-0.96l4.41,1.52l0.64,0.94l0.86,0.18l0.59,-0.59l0.73,-2.53l1.38,-0.55l1.39,-1.34l0.86,1.29l0.77,0.42l1.16,-0.13l0.11,0.75l0.95,0.19l0.67,-0.62l0.03,-1.0l0.84,-0.38l0.26,-0.48l-0.25,-2.09l0.84,-0.4l0.34,-0.56l-0.06,-0.69l1.25,-0.56l0.34,-0.72l0.38,1.47l0.61,0.6l1.46,0.64l1.25,-0.0l1.11,0.81l0.53,-0.11l0.26,-0.55l1.1,-0.46l0.53,-0.69l0.04,-3.47l0.85,-2.18l1.02,0.18l1.55,-1.19l0.75,-3.46l1.04,-0.37l1.65,-2.23l0.0,-0.81l-1.18,-2.88l2.78,-0.59l1.54,0.81l3.85,-2.82l2.23,-0.46l-0.18,-1.07l0.36,-1.47l-0.32,-0.36l-1.22,-0.04l0.58,-1.39l-1.09,-1.54l1.65,-1.83l1.81,1.18l0.92,-0.11l1.93,-1.01l0.78,0.88l1.75,0.54l0.57,1.28l0.94,0.92l0.79,1.84l2.6,0.67l1.87,-0.57l1.63,0.27l2.18,1.85l0.96,0.43l1.28,-0.18l0.61,-1.31l0.99,-0.54l1.35,0.5l1.34,0.04l1.33,1.09l1.26,-0.69l1.41,-0.15l1.81,-2.55l1.72,-1.03l0.92,2.35l0.7,0.83l2.45,0.81l1.35,0.97l0.75,1.05l0.93,3.35l-0.37,0.45l0.09,0.72l-0.44,0.61l0.02,0.53l2.24,2.62l1.35,0.92l-0.08,0.89l1.34,0.97l0.58,1.35l1.55,1.2l0.98,1.62l2.14,0.84l1.09,1.12l2.14,0.25l-4.86,6.13l-5.06,4.15l-0.42,0.86l0.22,1.25l-2.07,1.93l0.04,1.64l-3.06,1.63l-0.8,2.38l-1.71,0.6l-2.7,1.83l-1.66,0.48l-3.39,2.42l-23.95,3.09l-8.8,1.42l-7.47,0.86l-7.68,0.46l-22.71,3.52l-0.64,-0.56l-3.63,0.09l-0.41,0.6l1.03,3.57l-22.99,2.73Z", "name": "Kentucky"}, "US-ME": {"path": "M837.01,56.27l0.87,-1.15l1.42,1.7l0.84,0.04l0.39,-2.12l-0.46,-2.19l1.7,0.36l0.73,-0.42l0.21,-0.52l-0.32,-0.7l-1.18,-0.47l-0.44,-0.62l0.19,-1.42l0.86,-2.02l2.08,-2.25l0.01,-0.98l-0.52,-0.93l1.02,-1.64l0.39,-1.51l-0.22,-0.92l-1.02,-0.35l-0.07,-1.42l-0.4,-0.43l0.55,-0.96l-0.04,-0.63l-1.0,-1.26l0.13,-1.73l0.37,-0.63l-0.15,-0.97l1.22,-1.93l-0.96,-6.17l5.58,-18.87l2.25,-0.23l1.14,3.18l0.55,0.43l2.54,0.56l1.83,-1.73l1.68,-0.83l1.24,-1.72l1.25,-0.12l0.64,-0.47l0.25,-1.43l0.42,-0.3l1.36,0.04l3.68,1.41l1.14,0.96l2.36,1.05l8.38,22.7l0.64,0.65l-0.19,1.26l0.64,0.86l-0.1,1.52l-0.33,0.05l-0.24,0.66l1.72,1.13l1.79,0.22l0.82,0.41l1.88,-0.19l1.25,-0.64l0.34,0.86l-0.59,1.43l1.69,1.86l0.28,2.69l2.72,1.68l0.98,-0.1l0.47,-0.74l-0.06,-0.5l0.36,0.08l0.25,0.49l0.64,0.07l1.41,1.11l0.27,0.75l1.27,0.94l0.04,0.47l-0.52,-0.14l-0.39,0.41l0.18,0.77l-0.76,-0.15l-0.35,0.4l0.16,0.63l0.81,0.53l0.55,0.92l0.48,0.17l0.16,-0.88l0.39,-0.17l0.8,0.32l0.25,-0.83l0.34,0.41l-0.31,0.85l-0.53,0.19l-1.21,3.24l-0.63,-0.04l-0.31,0.44l-0.55,-1.05l-0.72,0.03l-0.3,0.5l-0.56,0.06l-0.02,0.49l0.58,0.85l-0.9,-0.45l-0.33,0.63l0.26,0.52l-1.2,-0.28l-0.36,0.3l-0.37,0.78l0.07,0.45l0.44,0.08l0.07,1.21l-0.37,-0.57l-0.55,-0.06l-0.39,0.45l-0.2,1.09l-0.48,-1.53l-1.14,0.01l-0.68,0.75l-0.36,1.48l0.59,0.63l-0.83,0.63l-0.69,-0.46l-0.73,1.04l0.1,0.64l0.99,0.63l-0.35,0.21l-0.1,0.82l-0.46,-0.21l-0.85,-1.82l-1.03,-0.46l-0.39,0.22l-0.45,-0.41l-0.57,0.63l-1.24,-0.19l-0.26,0.85l0.78,0.4l0.01,0.37l-0.51,-0.05l-0.56,0.4l-0.09,0.7l-0.49,-1.02l-1.17,-0.02l-0.16,0.64l0.52,0.88l-1.44,0.96l0.84,1.11l0.08,1.06l0.53,0.65l-0.97,-0.41l-0.96,0.22l-1.2,-0.42l-0.17,-0.91l0.74,-0.28l-0.08,-0.56l-0.42,-0.49l-0.67,-0.12l-0.3,0.33l-0.23,-2.37l-0.37,-0.22l-1.1,0.27l0.04,1.96l-1.85,1.92l0.02,0.49l1.25,1.47l-0.64,0.96l-0.19,3.87l0.77,1.41l-1.08,1.72l-0.8,-0.19l-0.45,0.93l-0.62,-0.06l-0.41,-1.15l-0.73,-0.21l-0.52,1.03l0.11,0.69l-0.45,0.59l0.12,2.41l-0.95,-1.01l0.14,-1.28l-0.24,-0.59l-0.82,0.29l-0.08,2.01l-0.44,-0.25l0.15,-1.54l-0.47,-0.4l-0.68,0.49l-0.76,3.04l-0.77,-1.97l0.17,-1.21l-0.4,-0.27l-0.46,0.21l-1.05,2.59l0.35,0.53l0.85,-0.15l0.95,2.08l-0.28,-0.59l-0.51,-0.23l-0.66,0.3l-0.07,0.64l-1.38,-0.1l-2.16,3.17l-0.53,1.86l0.29,0.6l-0.68,0.65l0.51,0.43l0.91,-0.21l0.37,0.92l-0.77,0.3l-0.2,0.39l-0.4,-0.04l-0.51,0.57l-0.14,1.03l0.67,1.37l-0.08,0.68l-0.79,1.29l-0.94,0.61l-0.54,1.29l0.44,1.56l-0.4,2.81l-0.8,-0.33l-0.42,0.59l-1.02,-0.76l-0.57,-1.85l-0.93,-0.37l-2.36,-1.99l-0.76,-3.45l-13.24,-35.53ZM863.91,81.24l0.08,0.26l-0.08,0.23l0.03,-0.29l-0.04,-0.2ZM865.32,81.46l0.47,0.7l-0.04,0.47l-0.32,-0.25l-0.1,-0.93ZM867.66,78.32l0.42,0.82l-0.16,0.14l-0.42,-0.19l0.16,-0.77ZM877.03,64.89l-0.14,0.2l-0.03,-0.24l0.17,0.04ZM873.08,75.23l0.01,0.02l-0.03,0.03l0.01,-0.06Z", "name": "Maine"}, "US-OH": {"path": "M665.07,178.88l1.66,0.36l0.97,-0.31l1.75,1.07l2.07,0.26l1.47,1.17l1.7,0.24l-2.17,1.18l-0.12,0.47l0.42,0.24l2.45,0.19l1.39,-1.1l1.76,-0.25l3.39,0.96l0.92,-0.08l1.48,-1.3l1.73,-0.59l1.15,-0.97l1.91,-0.97l2.61,-0.03l1.09,-0.62l1.24,-0.06l1.07,-0.8l4.24,-5.46l4.53,-3.47l6.92,-4.36l5.83,28.04l-0.51,0.54l-1.28,0.43l-0.41,0.95l1.65,2.23l0.02,2.11l0.41,0.26l0.31,0.94l-0.04,0.76l-0.54,0.83l-0.5,4.08l0.18,3.21l-0.58,0.41l0.34,1.11l-0.35,1.74l-0.39,0.54l0.76,1.23l-0.25,1.87l-2.41,2.65l-0.82,1.86l-1.37,1.5l-1.24,0.67l-0.6,0.7l-0.87,-0.92l-1.18,0.14l-1.32,1.74l-0.09,1.32l-1.78,0.85l-0.78,2.25l0.28,1.58l-0.94,0.85l0.3,0.67l0.63,0.41l0.27,1.3l-0.8,0.17l-0.5,1.6l0.06,-0.93l-0.91,-1.26l-1.53,-0.55l-1.07,0.71l-0.82,1.98l-0.34,2.69l-0.53,0.82l1.22,3.58l-1.27,0.39l-0.28,0.42l-0.25,3.12l-2.66,1.2l-1.0,0.05l-0.76,-1.06l-1.51,-1.1l-2.34,-0.73l-1.16,-1.92l-0.31,-1.14l-0.42,-0.33l-0.73,0.13l-1.84,1.17l-1.1,1.28l-0.4,1.05l-1.43,0.15l-0.87,0.61l-1.11,-1.0l-3.14,-0.59l-1.37,0.72l-0.53,1.25l-0.71,0.05l-3.04,-2.26l-1.93,-0.29l-1.77,0.56l-2.14,-0.52l-0.55,-1.54l-0.96,-0.97l-0.63,-1.38l-2.03,-0.76l-1.14,-1.01l-0.97,0.26l-1.31,0.89l-0.46,0.03l-1.79,-1.23l-0.61,0.2l-0.6,0.7l-8.67,-55.57l20.65,-4.25ZM675.61,181.3l0.53,-0.79l0.67,0.41l-0.48,0.35l-0.72,0.03Z", "name": "Ohio"}, "US-OK": {"path": "M399.11,359.23l-0.05,-42.02l-0.39,-0.4l-51.81,-0.82l0.31,-10.23l36.69,0.74l35.99,-0.07l35.98,-0.86l35.56,-1.62l0.6,10.68l4.55,24.34l1.41,37.87l-1.2,-0.22l-0.29,-0.36l-2.13,-0.21l-0.82,-0.79l-2.11,-0.39l-1.77,-2.05l-1.23,-0.22l-2.25,-1.56l-1.5,-0.4l-0.8,0.46l-0.23,0.88l-0.82,0.24l-0.46,0.62l-2.47,-0.14l-1.79,-1.48l-2.3,1.29l-1.16,0.2l-0.19,0.56l-0.63,0.28l-2.12,-0.77l-1.7,1.18l-2.06,0.51l-0.83,1.37l-1.48,0.06l-0.57,1.25l-1.26,-1.55l-1.7,-0.1l-0.32,-0.58l-1.21,-0.46l-0.02,-0.96l-0.44,-0.5l-1.24,-0.18l-0.73,1.38l-0.66,0.11l-0.84,-0.5l-0.97,0.07l-0.71,-1.51l-1.09,-0.35l-1.17,0.57l-0.45,1.7l-0.7,-0.08l-0.49,0.43l0.29,0.73l-0.51,1.68l-0.43,0.19l-0.86,-1.45l0.39,-1.65l-0.75,-0.86l-0.8,0.18l-0.49,0.76l-0.84,-0.18l-0.92,0.98l-1.07,0.13l-0.53,-1.36l-1.99,-0.19l-0.3,-1.48l-1.19,-0.53l-0.82,0.33l-2.12,2.15l-1.21,0.51l-0.97,-0.38l0.19,-1.25l-0.28,-1.13l-2.33,-0.67l-0.07,-2.18l-0.43,-0.55l-2.11,0.39l-2.52,-0.25l-0.64,0.26l-0.81,1.21l-0.95,0.06l-1.76,-1.77l-0.97,-0.12l-1.5,0.56l-2.68,-0.63l-1.86,-1.0l-1.05,0.25l-2.46,-0.3l-0.17,-2.12l-0.85,-0.87l-0.43,-1.02l-1.16,-0.41l-0.7,-0.83l-0.83,0.08l-0.44,1.64l-2.22,-0.68l-1.07,0.6l-0.96,-0.09l-3.79,-3.78l-1.12,-0.43l-0.8,0.08Z", "name": "Oklahoma"}, "US-ID": {"path": "M132.48,121.36l-0.34,-0.44l0.08,-1.99l0.53,-1.74l1.42,-1.22l2.11,-3.59l1.68,-0.92l1.39,-1.52l1.08,-2.15l0.05,-1.22l2.21,-2.41l1.43,-2.7l0.37,-1.37l2.04,-2.26l1.89,-2.81l0.03,-1.01l-0.79,-2.95l-2.13,-1.94l-0.87,-0.36l-0.85,-1.61l-0.41,-3.02l-0.59,-1.19l0.94,-1.19l-0.12,-2.35l-1.04,-2.69l10.12,-55.42l13.39,2.35l-3.54,20.71l1.29,2.89l1.0,1.27l0.27,1.55l1.17,1.76l-0.12,0.83l0.39,1.14l-0.99,0.95l0.83,1.76l-0.83,0.11l-0.28,0.71l1.93,1.68l1.03,2.04l2.24,1.22l0.54,1.58l1.09,1.33l1.49,2.79l0.08,0.68l1.64,1.81l0.01,1.88l1.79,1.71l-0.07,1.35l0.74,0.19l0.9,-0.58l0.36,0.46l-0.36,0.55l0.07,0.54l1.11,0.96l1.61,0.15l1.81,-0.36l-0.63,2.61l-0.99,0.54l0.25,1.14l-1.83,3.73l0.06,1.72l-0.81,0.07l-0.37,0.54l0.6,1.33l-0.62,0.9l-0.03,1.16l0.96,0.93l-0.37,0.81l0.28,1.01l-1.57,0.43l-1.21,1.41l0.1,1.11l0.46,0.77l-0.13,0.73l-0.83,0.77l-0.2,1.52l1.48,0.63l1.38,1.79l0.78,0.27l1.08,-0.35l0.56,-0.8l1.85,-0.41l1.21,-1.28l0.81,-0.29l0.15,-0.76l0.78,0.81l0.23,0.71l1.05,0.64l-0.42,1.23l0.73,0.95l-0.34,1.38l0.57,1.34l-0.21,1.61l1.54,2.64l0.31,1.73l0.82,0.37l0.67,2.08l-0.18,0.98l-0.76,0.64l0.51,1.89l1.24,1.16l0.3,0.79l0.81,0.08l0.86,-0.37l1.04,0.93l1.06,2.79l-0.5,0.81l0.89,1.83l-0.28,0.6l0.11,0.98l2.29,2.41l0.97,-0.14l-0.01,-1.14l1.07,-0.89l0.93,-0.22l4.53,1.62l0.69,-0.32l0.67,-1.35l1.19,-0.39l2.25,0.93l3.3,-0.1l0.96,0.88l2.29,-0.58l3.23,0.78l0.45,-0.49l-0.67,-0.76l0.26,-1.06l0.74,-0.48l-0.07,-0.96l1.23,-0.51l0.48,0.37l1.07,2.11l0.12,1.11l1.36,1.95l0.73,0.45l-6.27,53.85l-47.47,-6.31l-46.96,-7.72l6.88,-39.16l1.12,-1.18l1.07,-2.67l-0.21,-1.74l0.74,-0.15l0.77,-1.62l-0.9,-1.27l-0.18,-1.2l-1.24,-0.08l-0.64,-0.81l-0.88,0.29Z", "name": "Idaho"}, "US-WY": {"path": "M218.62,206.98l10.1,-86.59l25.45,2.74l26.79,2.4l26.83,1.91l27.84,1.46l-3.67,87.1l-27.31,-1.41l-28.2,-1.97l-29.69,-2.63l-28.14,-3.02Z", "name": "Wyoming"}, "US-UT": {"path": "M220.28,185.78l-2.51,21.5l0.35,0.45l32.23,3.42l-8.32,87.13l-42.53,-4.67l-42.4,-5.77l16.08,-108.32l47.1,6.26Z", "name": "Utah"}, "US-IN": {"path": "M600.87,189.59l1.42,0.87l2.1,0.15l1.52,-0.38l2.63,-1.39l2.73,-2.1l32.14,-4.8l8.96,57.41l-0.66,1.15l0.3,0.92l0.81,0.79l-0.66,1.14l0.49,0.8l1.12,0.04l-0.36,1.14l0.18,0.51l-1.81,0.29l-3.18,2.55l-0.43,0.17l-1.4,-0.81l-3.46,0.91l-0.09,0.78l1.19,3.1l-1.4,1.88l-1.18,0.49l-0.45,0.89l-0.31,2.6l-1.11,0.88l-1.06,-0.24l-0.47,0.47l-0.85,1.95l0.05,3.13l-0.39,1.0l-1.38,0.85l-0.93,-0.68l-1.24,0.01l-1.47,-0.69l-0.62,-1.84l-1.89,-0.73l-0.44,0.3l-0.04,0.5l0.83,0.68l-0.62,0.31l-0.89,-0.35l-0.36,0.29l0.5,1.42l-1.08,0.68l0.14,2.37l-1.06,0.65l-0.0,0.83l-0.16,0.37l-0.25,-1.01l-1.6,0.18l-1.4,-1.69l-0.5,-0.08l-1.67,1.5l-1.57,0.69l-1.07,2.89l-0.81,-1.07l-2.79,-0.77l-1.11,-0.61l-1.08,-0.18l-1.76,0.92l-0.64,-1.02l-0.58,-0.18l-0.53,0.56l0.64,1.86l-0.34,0.84l-0.28,0.09l-0.02,-1.18l-0.42,-0.4l-0.58,0.01l-1.46,0.79l-1.41,-0.84l-0.85,0.0l-0.48,0.95l0.71,1.55l-0.49,0.74l-1.15,-0.39l-0.07,-0.54l-0.53,-0.44l0.55,-0.63l-0.35,-3.09l0.96,-0.78l-0.07,-0.58l-0.44,-0.23l0.69,-0.46l0.25,-0.61l-1.17,-1.47l0.46,-1.16l0.32,0.19l1.39,-0.55l0.33,-1.8l0.55,-0.4l0.44,-0.92l-0.06,-0.83l1.52,-1.07l0.06,-0.69l-0.41,-0.93l0.57,-0.86l0.14,-1.29l0.87,-0.51l0.4,-1.91l-1.08,-2.54l0.06,-1.91l-0.93,-0.91l-0.61,-1.5l-1.05,-0.78l-0.04,-0.58l0.92,-1.39l-0.63,-2.25l1.27,-1.31l-6.5,-50.67Z", "name": "Indiana"}, "US-IL": {"path": "M540.1,225.5l0.86,-0.35l0.37,-0.67l-0.23,-2.33l-0.73,-0.93l0.15,-0.41l0.72,-0.69l2.42,-0.98l0.71,-0.65l0.63,-1.68l0.17,-2.11l1.65,-2.47l0.27,-0.94l-0.03,-1.22l-0.59,-1.95l-2.23,-1.88l-0.11,-1.77l0.67,-2.38l0.45,-0.37l4.6,-0.85l0.81,-0.41l0.82,-1.12l2.55,-1.0l1.43,-1.56l0.39,-3.28l1.42,-1.46l0.29,-0.74l0.33,-4.37l-0.76,-2.14l-4.02,-2.47l-0.28,-1.5l-0.48,-0.82l-3.64,-2.48l44.57,-4.64l-0.01,2.65l0.57,2.59l1.38,2.49l1.3,0.95l0.76,2.6l1.26,2.71l1.42,1.85l6.6,51.47l-1.22,1.13l-0.1,0.69l0.67,1.76l-0.84,1.09l-0.03,1.11l1.19,1.09l0.56,1.41l0.89,0.82l-0.1,1.8l1.06,2.31l-0.28,1.49l-0.87,0.56l-0.21,1.47l-0.59,0.93l0.34,1.2l-1.48,1.13l-0.23,0.41l0.28,0.7l-0.93,1.17l-0.31,1.19l-1.64,0.67l-0.63,1.67l0.15,0.8l0.97,0.83l-1.27,1.15l0.42,0.76l-0.49,0.23l-0.13,0.54l0.43,2.94l-1.15,0.19l0.08,0.45l0.91,0.78l-0.48,0.17l-0.03,0.64l0.83,0.29l0.04,0.42l-1.31,1.97l-0.25,1.19l0.59,1.22l0.7,0.64l0.37,1.08l-3.31,1.22l-1.19,0.82l-1.24,0.24l-0.77,1.01l-0.18,2.04l1.7,2.81l0.07,0.54l-0.53,1.19l-0.96,0.03l-6.3,-2.43l-1.08,-0.08l-1.57,0.64l-0.68,0.72l-1.44,2.95l0.06,0.66l-1.18,-1.2l-0.79,0.14l-0.35,0.47l0.59,1.13l-1.24,-0.79l-0.01,-0.68l-1.6,-2.21l-0.4,-1.12l-0.75,-0.37l-0.05,-0.49l0.94,-1.35l0.2,-1.03l-0.32,-1.01l-1.44,-2.02l-0.47,-3.18l-2.26,-0.99l-1.55,-2.14l-1.95,-0.82l-1.72,-1.34l-1.56,-0.14l-1.82,-0.96l-2.32,-1.78l-2.34,-2.44l-0.36,-1.95l2.37,-6.85l-0.25,-2.32l0.98,-2.06l-0.38,-0.84l-2.66,-1.45l-2.59,-0.67l-1.29,0.45l-0.86,1.45l-0.9,0.15l-1.3,-1.9l-0.43,-1.52l0.16,-0.87l-0.54,-0.91l-0.29,-1.65l-0.83,-1.36l-0.94,-0.9l-4.11,-2.52l-1.01,-1.64l-4.53,-3.53l-0.73,-1.9l-1.04,-1.21l-0.04,-1.6l-0.96,-1.48l-0.75,-3.54l0.1,-2.94l0.6,-1.28ZM585.53,295.46l0.05,0.05l0.04,0.04l-0.05,-0.0l-0.04,-0.09Z", "name": "Illinois"}, "US-AK": {"path": "M64.88,530.75l0.06,-0.04l0.04,0.06l-0.06,-0.01l-0.05,-0.0ZM66.64,530.24l1.13,0.16l0.11,0.52l-1.21,0.78l-0.23,-0.24l0.3,-0.47l-0.09,-0.76ZM69.51,530.52l0.7,-0.13l0.3,-0.66l2.1,-0.44l2.68,0.09l1.86,0.74l0.99,0.81l0.04,2.23l0.65,0.89l0.77,-0.37l-0.07,-0.76l0.56,0.36l-0.1,0.53l1.05,1.08l-1.24,-0.51l-0.68,0.56l-0.08,-0.76l-1.26,-0.01l-0.76,-0.43l-0.82,0.28l-1.12,-0.26l-0.44,-0.54l0.4,-0.34l0.95,0.84l0.47,-0.03l0.2,-0.5l-0.7,-1.62l-1.11,-0.6l-1.17,0.32l-0.66,0.82l-1.29,0.37l-0.52,-0.37l-0.59,0.38l-0.74,-0.26l-0.58,0.37l0.21,-2.07ZM81.1,534.87l0.81,-0.72l-0.68,-1.59l0.14,-0.29l1.83,-1.05l3.86,-0.11l2.68,0.81l0.57,-0.32l1.04,0.3l0.88,1.1l0.7,-0.06l0.9,-1.66l2.68,-0.78l1.06,0.33l1.28,-0.46l0.86,0.05l-0.14,0.54l0.5,0.59l1.15,0.33l0.6,-0.91l-0.56,-0.35l-0.31,0.15l0.28,-0.7l-0.2,-0.46l2.24,-2.37l1.05,0.07l0.63,0.82l0.66,-0.29l-0.11,-0.63l-1.04,-0.94l0.19,-0.63l0.96,-0.57l3.31,-0.22l-0.15,-0.63l0.81,-0.73l0.76,-0.04l1.14,-1.23l-0.94,-0.25l-0.69,0.62l-0.61,-0.12l-0.59,0.33l-5.45,-1.21l0.08,-1.16l-0.36,-0.69l0.61,-0.46l0.52,-0.18l0.49,0.51l-0.04,1.27l0.91,-0.05l0.15,-0.75l-0.06,-0.85l-0.98,-1.22l0.01,-0.82l-0.67,-0.19l-0.29,0.86l-0.73,0.37l-0.19,0.06l0.24,-0.27l-0.27,-0.52l-0.4,-0.11l-0.76,0.98l-0.97,0.24l-0.67,2.38l-0.33,0.05l-0.36,-0.33l0.03,-4.92l-0.66,-0.64l-1.23,0.46l0.07,-0.72l-0.68,-0.92l0.27,-0.42l-0.12,-1.01l-2.89,-0.21l-0.54,-0.39l-1.37,-0.13l-0.43,-0.56l-1.2,0.69l-0.99,-0.27l-0.29,-0.65l1.23,-0.02l-0.05,-0.92l0.46,-0.72l1.47,-0.11l-0.03,-0.81l-1.33,-0.74l0.14,-0.43l0.85,-0.72l1.34,-0.01l0.43,-0.43l0.58,-4.63l1.27,-1.41l-0.84,-0.73l1.97,-1.03l1.58,0.21l0.44,-0.55l-0.81,-0.46l-0.34,-0.75l-0.6,0.5l-0.57,-0.1l-1.3,0.72l-2.17,0.25l-0.12,0.5l0.5,0.82l-0.72,0.78l-0.48,-0.47l-2.21,-0.3l-2.19,-1.17l-1.56,-1.56l0.03,-0.37l0.7,-0.05l0.04,-0.67l-0.61,-1.28l-0.09,-1.54l0.39,-0.61l-0.72,-0.34l-0.58,-1.19l0.93,-0.28l0.14,-0.6l-1.09,-0.61l1.52,0.14l0.51,-0.46l0.88,0.03l0.05,0.6l1.07,1.2l-1.21,0.44l-0.39,0.39l0.31,0.47l1.11,-0.1l0.47,0.28l1.12,-0.22l0.18,0.15l-0.72,1.13l0.74,0.73l1.63,0.09l0.68,-0.64l-0.26,-0.92l0.44,-0.39l-0.14,-1.27l-0.59,-0.28l-1.31,0.1l-1.81,-1.44l0.01,-0.63l-0.97,-1.12l0.81,0.16l0.53,-0.4l-1.18,-1.08l0.63,-0.51l-0.14,-0.67l1.25,-0.21l0.53,0.32l0.83,-0.05l0.73,-0.46l-0.08,-0.52l-3.03,-0.29l-1.91,0.63l-0.4,0.68l-0.19,-0.22l0.72,-1.02l-0.63,-1.4l0.68,0.09l0.47,-0.54l-0.48,-1.21l0.96,0.46l0.42,-0.51l-0.63,-0.98l1.73,1.01l0.42,-1.53l0.59,-0.35l3.77,-0.6l0.5,0.35l0.25,0.85l-0.36,0.21l0.14,0.47l1.2,0.19l0.3,-0.42l-0.18,-1.0l1.6,-0.11l0.29,-0.63l-1.51,-0.29l0.59,-0.27l0.16,-0.74l0.9,-0.32l1.37,1.16l0.47,-0.57l-0.32,-0.84l0.37,-0.03l1.02,0.42l1.03,1.2l-0.04,0.6l-0.87,-0.06l-0.35,0.64l1.72,0.3l0.1,0.67l1.21,0.8l3.02,0.17l1.92,-0.37l0.11,0.59l2.89,1.88l2.0,0.37l1.83,-0.33l0.67,-0.63l0.41,-1.78l0.72,-1.29l-0.14,-1.81l0.74,0.39l1.24,-0.12l0.86,-0.71l-0.17,-1.62l0.3,-0.04l0.11,-0.44l-0.25,-0.34l-0.83,-0.45l-1.45,0.34l-0.98,-1.22l-1.22,0.1l-0.5,-0.38l-2.79,-0.15l-0.75,0.51l0.35,-0.85l-0.56,-1.94l-1.57,-0.24l-3.01,-2.71l-1.14,-0.28l-0.95,-0.93l-0.77,0.17l-3.27,-3.98l-0.31,-1.07l0.73,-0.34l0.39,-0.82l-0.53,-1.14l0.14,-0.32l0.52,0.26l1.05,-0.26l1.2,1.12l0.36,-0.78l-2.39,-3.21l-1.44,-1.39l-1.03,-2.33l0.73,0.11l1.02,0.72l1.24,-0.42l0.31,0.63l0.57,0.29l1.08,0.2l0.98,-0.22l1.81,0.53l1.37,1.81l1.19,0.53l0.56,-0.47l-0.6,-1.16l1.94,0.62l0.58,0.79l2.66,0.53l1.79,1.18l0.34,0.64l-0.69,0.11l-0.63,0.77l-1.35,-0.42l-0.12,0.69l0.75,0.66l0.19,1.01l2.13,1.87l1.3,0.71l-0.16,0.68l2.13,1.1l0.66,1.36l0.45,0.21l2.16,-0.88l0.7,1.0l-0.4,0.08l0.01,0.51l0.87,0.33l0.96,-0.71l-0.06,-1.11l-0.58,-0.85l0.4,0.0l1.01,2.11l1.88,1.12l0.85,-0.28l0.74,-1.61l-0.17,-0.25l-1.34,-0.47l-0.61,-1.11l-1.03,-0.61l-1.16,0.14l-0.44,-0.38l-0.48,-1.61l1.18,-0.54l0.78,0.4l0.37,-0.59l-0.87,-1.38l-1.35,-0.8l0.0,-1.23l-0.47,-0.25l-1.01,0.43l-3.2,-3.27l0.71,-1.39l0.04,-2.41l-2.35,-5.81l-1.25,-1.7l-0.54,-1.91l1.29,-0.66l1.24,-1.29l3.37,2.86l2.53,1.62l1.6,0.63l4.17,0.25l2.43,-1.65l1.96,0.17l1.51,-0.27l4.46,2.3l3.16,0.43l0.14,0.68l-0.34,0.08l-0.14,0.66l0.53,0.23l0.34,1.4l0.55,-0.29l0.38,-1.21l1.25,0.75l0.88,0.14l0.29,-0.35l-0.22,-0.39l-1.5,-1.03l0.05,-0.38l0.97,-0.06l0.34,0.13l0.34,1.14l0.55,0.33l0.18,-0.22l0.76,0.21l3.84,2.25l2.9,0.43l2.71,-0.19l0.31,0.85l0.85,0.61l0.02,0.66l1.47,0.88l-0.91,-0.04l-0.91,-0.49l-0.93,0.25l0.42,0.83l-0.26,0.43l0.18,0.59l0.73,-0.04l1.12,0.51l1.03,-0.39l1.07,0.65l0.92,-0.02l0.21,0.47l-0.71,0.01l-0.29,0.34l1.75,2.14l1.64,0.18l2.21,1.14l1.47,1.72l0.67,-0.07l0.41,0.37l-1.57,0.55l-0.18,0.63l2.16,1.28l-0.22,0.75l1.74,1.13l0.58,0.79l0.82,-0.05l1.56,0.52l0.51,0.45l0.14,0.61l2.14,0.56l1.96,1.16l1.82,1.63l0.39,0.96l1.19,0.37l1.05,0.92l-0.12,0.41l0.45,0.47l1.93,1.39l4.48,2.43l1.5,1.94l1.21,0.76l1.38,0.67l0.93,0.04l0.77,0.37l0.03,0.38l1.6,0.03l1.23,0.61l0.47,0.58l0.29,-0.26l1.69,1.44l1.68,2.36l1.24,0.84l0.65,1.11l1.25,0.49l-27.91,60.77l0.17,0.48l1.69,1.44l0.83,-0.19l1.44,1.5l2.05,-0.3l2.16,0.82l-0.98,1.08l-0.15,0.61l0.53,1.11l1.01,1.05l0.05,1.28l2.81,5.56l-0.47,2.71l0.54,0.33l1.98,-0.35l0.06,0.23l-1.19,0.71l0.29,0.54l0.84,-0.22l1.03,0.71l0.36,1.46l-0.28,0.03l-0.1,0.51l0.26,0.36l1.11,0.26l-0.24,0.59l0.49,0.49l-0.11,0.51l-0.36,-0.03l-0.12,-0.59l-0.85,-0.8l-0.47,-0.03l-1.0,0.68l-0.32,-0.86l-1.11,-0.57l-1.15,-1.83l0.58,-0.48l-0.09,-0.3l-0.99,-0.27l-0.56,-1.13l-0.02,-1.29l-1.34,-2.12l0.09,-0.76l-1.17,-0.46l-1.47,-1.72l-0.33,-0.8l-1.65,-1.66l1.58,-0.72l-0.4,0.98l0.71,0.53l0.48,-0.34l0.48,-1.49l0.98,0.8l0.73,-0.31l-0.53,-0.92l-0.81,-0.46l-0.73,-1.81l-0.41,-0.17l-2.16,1.02l-2.27,-0.06l-1.73,-1.01l-1.8,-1.85l0.52,-0.4l0.26,-0.96l-0.45,-1.04l-0.92,0.09l-0.12,0.64l-0.81,-0.05l-1.0,-1.05l-3.3,-2.31l-5.2,-1.56l-0.48,-1.29l0.16,-0.55l-1.83,-0.99l-0.64,-1.23l0.85,-0.63l0.26,-0.77l1.16,-0.21l0.15,-0.7l-0.98,-0.3l-2.56,1.0l-1.03,-0.01l-0.22,-0.7l-0.85,-0.75l1.1,-0.51l0.19,-0.4l-0.31,-0.45l-0.64,-0.02l-0.47,-0.8l0.14,-0.59l-0.49,-1.17l-0.45,-0.22l-0.62,0.19l-0.57,-0.49l0.25,-0.73l0.46,-0.09l1.22,0.53l0.42,-0.5l-0.16,-0.48l-1.49,-0.88l-1.82,0.34l-0.6,-0.61l-1.17,-0.28l-0.22,-0.32l0.32,-1.1l-0.72,-0.3l0.35,-0.97l-0.33,-0.29l-2.04,0.78l-0.28,-0.64l-1.38,-0.22l-0.75,0.57l0.31,0.89l-1.75,-0.34l-0.8,0.99l0.26,0.62l0.9,-0.03l-0.2,0.34l-1.52,0.34l-0.23,0.63l0.38,0.29l1.02,-0.16l0.49,0.83l-0.47,0.61l-0.59,-0.24l-0.7,0.58l0.05,0.63l-0.31,0.35l-0.27,-0.15l-0.68,0.39l-1.38,-1.05l0.03,-0.72l-1.08,-0.12l0.11,-0.8l-0.55,-0.46l-1.0,1.06l-1.09,-0.68l-0.44,0.5l-0.48,-0.1l-0.2,0.41l-0.8,-0.43l-0.29,0.55l-0.7,-0.52l-1.3,0.56l-0.16,-0.45l-0.91,-0.04l-0.56,0.81l-1.73,0.25l-1.02,-0.92l-0.6,0.32l-0.44,-0.36l-1.29,0.01l-0.44,-1.08l0.64,0.17l0.17,-0.48l0.68,0.04l0.89,0.91l0.56,-0.11l0.11,-0.54l0.9,0.16l1.67,-0.74l0.32,-0.52l-0.22,-0.4l-2.72,-0.16l-0.79,-1.25l1.54,-1.19l1.91,-0.52l0.81,-0.85l0.52,-0.09l0.76,-1.03l0.15,-1.27l1.37,0.34l3.53,-0.14l0.24,1.07l0.66,0.57l1.41,0.31l2.69,2.59l0.5,-0.37l-0.13,-0.93l-0.99,-0.67l-1.76,-2.54l1.94,-0.66l2.25,0.33l0.05,-0.75l-1.75,-0.86l-1.62,0.15l-0.71,0.63l-1.07,-0.92l-0.7,-0.18l0.17,-0.32l-0.28,-0.7l-1.24,0.32l-1.57,-0.23l-0.99,0.48l-1.49,-0.52l-1.37,0.05l-0.78,0.4l-0.2,0.55l-1.24,-0.08l-1.92,0.49l-0.59,0.81l-0.62,0.26l-0.75,-0.02l-0.97,-1.32l-1.1,-0.29l-0.3,0.28l0.16,0.51l0.44,0.07l0.66,2.11l-0.91,0.44l-2.4,-0.95l-0.46,0.21l0.03,0.68l0.78,0.42l-0.2,0.15l-0.56,0.01l-0.54,-1.57l-0.76,0.74l-0.24,-0.5l-0.88,0.16l-0.13,0.57l-0.85,-0.44l-0.36,0.28l0.3,0.67l-1.93,-0.49l-0.81,1.18l-0.83,0.28l-0.17,1.22l0.33,0.36l0.71,-0.05l1.13,0.82l0.76,1.64l-0.81,0.65l-1.11,0.16l-1.09,-0.54l-0.98,0.53l-0.75,-0.18l-0.37,0.73l-1.4,-0.13l-0.46,0.82l-0.5,-0.62l-0.4,0.44l-1.47,0.04l-1.12,-0.71l-1.09,0.61l-0.67,-0.22l-0.91,0.37l-0.64,-0.78l-0.94,0.73l-0.49,-0.21l-0.32,0.36l-0.62,-0.1l-0.41,-0.5l-0.83,0.37l-2.51,-0.14l-0.57,0.44l0.28,1.17l-0.59,0.14l-1.31,-0.59l-0.58,0.52l-0.3,-0.46l-2.04,0.38l-0.15,-0.68l-0.48,-0.37l-0.79,0.47l-0.83,0.0l-0.29,0.61l-0.03,-0.62l-0.42,-0.3l-1.95,-0.18l-0.77,0.39l-0.34,-0.37l-0.72,-0.1l-1.8,0.43l-0.28,0.75l-0.4,-0.03l-0.82,0.77l-2.9,-0.76l-0.87,-0.79l-0.66,0.16l-0.84,-0.82l-1.36,-0.26l-0.93,0.26ZM89.01,536.65l-0.02,0.01l-0.0,0.03l0.02,-0.04ZM89.06,536.61l0.02,-0.01l-0.01,0.01l-0.0,0.01ZM91.61,484.22l-0.0,0.01l-0.0,-0.01l0.01,0.0ZM87.17,484.0l-0.0,-0.0l0.01,-0.0l-0.0,0.01l-0.01,-0.0ZM186.66,475.29l-0.0,0.02l-0.01,-0.01l0.01,-0.0ZM156.69,531.75l-0.95,1.06l-0.87,0.02l-0.13,-0.28l0.69,-0.51l1.26,-0.28ZM151.45,532.97l-0.11,0.02l0.12,-0.04l-0.01,0.02ZM152.06,535.54l-0.09,-0.14l0.41,-0.11l-0.1,0.3l-0.22,-0.05ZM116.92,535.18l-0.13,0.11l-0.06,-0.02l0.04,-0.19l0.16,0.1ZM90.72,536.66l0.27,-0.19l0.07,0.3l-0.17,0.07l-0.17,-0.19ZM121.46,528.8l-0.0,-0.02l0.04,0.01l-0.03,0.01ZM186.96,558.95l-0.09,-1.09l0.4,-0.11l0.13,0.57l-0.44,0.62ZM196.09,568.76l2.06,0.17l0.88,-0.72l0.4,-0.93l0.62,0.05l0.66,-0.45l0.12,-0.56l3.59,0.11l1.22,2.1l-0.59,0.6l0.11,1.69l1.05,0.86l0.25,0.97l0.46,0.34l0.11,1.76l1.72,2.25l0.24,1.0l-1.26,-0.23l-0.94,0.69l-0.72,1.06l-0.71,-1.34l-1.02,-0.73l0.15,-0.58l-0.32,-1.25l0.48,-1.41l-0.8,-0.55l0.41,-2.32l-0.18,-1.24l0.62,-1.53l-0.66,-0.25l-0.62,0.87l-0.78,-0.09l0.03,0.58l-0.38,0.41l0.37,1.24l-0.41,0.99l0.15,1.56l-0.41,1.27l0.03,2.19l-0.37,0.45l-0.41,-0.46l0.02,-1.59l-0.29,-0.45l-0.66,0.28l-1.11,-0.29l0.47,-0.38l0.24,-0.99l-0.35,-1.47l1.14,0.14l0.45,-0.45l-0.11,-0.36l-0.86,-0.52l-0.27,0.12l-0.01,-1.01l-0.61,-0.4l-0.96,1.15l0.46,0.38l-0.33,0.4l-0.04,-0.54l-0.68,-0.29l0.29,-0.67l-0.28,-0.54l-0.39,-0.02l-0.2,-0.62l-0.47,-0.15l-0.26,0.42l-0.35,-0.7ZM209.19,578.54l0.61,1.19l-0.23,0.77l0.66,1.82l0.05,1.22l1.73,7.29l-0.66,0.56l0.03,0.64l1.0,0.69l-0.59,0.84l0.05,0.52l0.72,0.67l-0.2,1.56l0.37,0.44l1.07,0.31l1.71,2.17l1.4,0.95l0.39,0.88l0.67,0.5l0.09,0.91l1.53,1.02l-0.19,0.84l-1.17,1.01l-0.41,1.68l-0.0,2.19l-2.07,1.87l-1.09,0.57l-0.63,-0.13l-0.02,-1.13l-0.64,0.07l-0.3,1.04l-0.22,0.05l0.16,-1.54l1.09,0.23l2.31,-1.69l-0.23,-0.63l-0.64,0.13l-0.33,-0.61l-0.71,0.13l0.71,-2.09l0.22,-1.84l-0.43,-0.29l-0.4,-1.06l0.62,-0.2l0.58,-0.88l-0.43,-0.27l-1.78,0.52l-0.59,-0.36l-2.75,0.29l-0.13,0.71l0.35,0.37l-0.57,0.72l-0.64,-0.46l-0.2,1.01l-0.3,-0.39l0.1,-0.81l0.89,-0.27l0.51,-0.97l0.54,-0.2l0.43,-1.37l1.49,0.53l1.01,-0.36l-0.17,-0.59l-1.8,-0.6l0.03,-1.02l-0.82,-0.63l0.03,-0.53l-0.51,-0.72l0.35,-0.41l-0.16,-0.68l-0.59,-0.0l0.81,-0.68l0.22,-0.62l-0.41,-0.27l-0.79,0.23l-0.68,-1.21l0.4,-0.26l0.21,-1.19l-0.39,-0.3l-0.8,0.09l-0.48,-1.2l-0.52,-0.26l-0.49,0.27l-0.37,-0.39l0.13,-0.25l1.84,0.29l0.62,-0.37l-0.23,-0.67l-1.19,-0.13l0.23,-0.72l-0.6,-0.28l0.07,-0.27l0.81,-0.01l0.81,1.13l0.62,-0.14l0.04,-0.52l-1.77,-2.58l0.17,-0.56l1.59,1.01l0.37,-0.69l-0.4,-0.48l-1.89,-0.89l0.24,-0.34l-0.2,-0.47l0.54,-0.81l-0.81,-0.3l-0.88,0.87l-0.2,-0.58l0.08,-0.72l0.74,-0.62l0.17,-0.66l0.54,-0.5l0.92,-0.14ZM214.84,608.68l-0.72,0.37l-0.3,-0.26l-0.82,0.1l0.74,-0.58l1.09,0.36ZM207.55,585.56l-0.21,-0.06l0.0,-0.24l0.08,0.17l0.13,0.13ZM124.33,461.82l-0.72,-0.79l0.08,-0.62l0.61,0.33l0.02,1.08ZM96.68,478.86l-0.08,-0.01l0.0,-0.01l0.08,0.02ZM87.61,480.71l-0.14,-0.07l0.02,0.0l0.12,0.07ZM87.75,487.21l-0.01,0.0l-0.04,-0.04l0.05,0.04ZM210.21,605.25l0.95,-0.39l0.15,-0.88l1.01,-0.37l0.59,-1.12l0.76,0.04l0.47,2.53l-1.46,2.49l0.34,-0.93l-0.25,-0.46l0.16,-1.74l-0.39,-0.42l-0.42,0.19l-0.21,0.58l-0.85,0.26l-0.29,1.23l-0.57,-1.01ZM204.53,604.41l0.23,-0.52l-0.58,-0.47l0.16,-0.56l-0.41,-0.26l1.05,-0.38l0.21,-0.67l-2.13,-0.56l1.59,-0.9l0.16,-0.86l-0.36,-0.08l0.35,-1.05l0.21,0.49l1.38,0.95l0.65,1.87l-0.18,0.82l-0.68,0.31l-0.12,0.51l-0.79,0.23l-0.06,0.42l0.07,0.51l0.76,-0.09l-0.11,0.29l0.38,0.45l0.87,0.16l0.31,0.67l-0.54,-0.15l-0.4,0.8l0.23,0.39l0.85,0.22l-1.39,0.74l0.11,0.7l0.57,0.32l-0.22,0.31l0.26,0.63l-0.39,0.4l-0.4,-0.2l0.24,-0.39l-0.45,-1.27l0.19,-0.92l-0.49,-0.5l-0.25,-1.87l-0.67,0.18l-0.2,-0.66ZM204.7,605.12l-0.02,0.03l0.0,-0.0l0.02,-0.03ZM204.91,597.51l-0.15,-0.81l-1.16,-0.79l0.71,0.03l0.44,0.61l0.43,-0.21l0.17,0.98l-0.44,0.18ZM204.03,589.42l1.73,1.0l0.58,0.52l0.11,0.57l0.56,0.15l0.24,-0.39l0.54,0.65l-0.54,1.63l-0.36,-1.55l-0.5,-0.5l-0.56,0.05l-0.21,0.96l0.31,0.54l-0.25,0.39l0.51,0.85l-0.29,0.21l-0.99,-0.68l-0.46,0.33l-0.4,-0.11l0.95,-2.9l-0.98,-1.74ZM204.3,590.82l0.01,0.01l0.01,0.01l-0.01,-0.0l-0.01,-0.01ZM201.28,587.91l0.24,-0.68l0.52,-0.17l-0.03,-0.45l0.42,-0.22l0.35,0.32l0.6,-0.35l-0.0,-0.8l-0.62,-0.4l0.7,-0.07l0.24,-0.65l-1.03,-0.28l-0.02,-1.43l0.48,-2.46l0.45,-0.43l0.87,0.22l0.37,0.4l-0.69,2.23l0.41,0.23l0.08,1.49l0.51,0.53l-0.12,0.39l-0.62,-0.22l-0.31,0.8l-0.69,0.34l0.04,0.32l-0.11,0.42l-0.22,0.32l-1.81,0.61ZM204.42,586.23l0.02,0.16l-0.19,-0.27l0.07,0.06l0.09,0.05ZM203.16,578.77l0.02,-0.02l0.01,0.06l-0.01,0.0l-0.03,-0.05ZM202.08,593.81l-0.03,-0.32l0.05,-0.01l0.09,0.19l-0.11,0.14ZM202.25,593.0l-0.25,-0.54l0.16,-0.07l0.34,0.48l-0.24,0.13ZM201.87,592.45l-0.2,-0.02l-0.02,-0.03l0.04,-0.01l0.17,0.06ZM201.97,591.45l-0.19,-0.44l-0.52,-0.05l0.08,-0.24l1.42,-0.09l-0.01,0.81l-0.39,0.25l-0.38,-0.25ZM195.26,578.67l0.22,-0.17l0.78,1.25l0.56,-0.45l-0.67,-1.58l0.86,0.26l0.05,-1.05l0.36,0.52l1.18,-0.42l0.77,0.97l-0.44,0.2l-0.8,-0.21l-0.17,0.33l-0.79,0.06l0.06,0.48l1.78,2.24l-0.07,0.74l0.9,0.5l1.08,0.01l-0.34,1.59l-0.43,-0.2l-2.75,-3.68l-0.61,0.35l0.09,0.44l-0.28,0.18l0.52,0.86l-0.19,0.56l0.29,0.37l-0.52,0.14l-0.52,-1.4l0.33,-0.19l-0.16,-0.49l-1.1,-2.22ZM197.81,583.65l0.03,-0.01l-0.01,0.04l-0.02,-0.02l-0.0,-0.0ZM197.98,583.86l0.65,0.02l0.94,0.95l0.23,2.78l-0.4,2.69l-0.3,0.89l-0.47,0.37l-0.63,1.95l-0.37,-2.3l1.14,-0.59l-0.06,-0.73l-0.28,-0.06l0.01,-0.56l-0.47,-0.3l-0.19,-0.68l-0.71,-0.04l0.39,-0.63l0.81,-0.06l0.22,-0.32l-0.13,-0.54l-0.66,-0.34l0.68,-0.34l-0.35,-1.27l-0.73,-0.27l0.59,-0.15l0.09,-0.48ZM196.56,583.11l-0.06,-0.04l0.15,-0.08l-0.09,0.12ZM199.05,579.52l1.11,-0.49l0.92,0.47l0.59,0.75l-0.17,0.31l-0.56,-0.63l-0.63,-0.07l-0.13,0.57l0.35,0.67l-1.49,-1.58ZM121.86,538.8l-0.0,-0.01l0.02,0.02l-0.02,-0.01ZM122.16,539.2l0.38,0.41l0.59,-0.1l-0.04,-0.62l0.83,0.53l0.61,-1.11l0.62,0.04l-0.13,0.7l0.46,0.88l-0.67,0.48l-0.23,-0.84l-0.37,-0.03l-0.81,0.68l-0.2,-0.29l-0.67,0.31l-0.36,-1.02ZM125.68,539.91l0.02,-0.0l-0.01,0.0l-0.01,-0.0ZM126.24,540.18l-0.05,-0.09l0.07,0.07l-0.02,0.02ZM126.1,539.97l-0.36,-0.07l0.27,-0.16l0.09,0.23ZM111.97,541.9l0.13,-1.11l-0.41,-0.51l0.57,-0.47l0.58,-0.31l0.5,0.27l1.58,-0.22l0.55,0.47l-0.75,0.07l0.02,0.5l0.56,0.37l-0.31,0.99l0.56,1.75l0.45,0.16l0.28,-0.39l-0.23,-0.7l0.33,-1.09l0.38,0.2l0.37,-0.33l1.06,0.15l0.41,-0.28l0.62,0.17l0.21,0.41l0.91,-0.72l0.49,0.31l-0.22,0.73l0.26,0.4l0.49,-0.02l0.33,-0.47l1.39,0.19l-0.09,0.39l-0.85,0.24l-0.21,0.41l0.21,1.1l0.75,0.33l-0.77,0.3l-2.35,-2.03l-0.88,0.42l-0.02,0.69l-0.56,-0.49l-0.44,0.12l-0.27,0.58l-1.74,-0.5l-0.49,0.58l-0.32,-0.15l-0.13,-0.86l-0.79,-0.03l-1.07,-1.18l-1.1,-0.44ZM119.11,544.38l0.82,0.17l0.33,0.72l-0.52,-0.07l-0.2,-0.66l-0.42,-0.16ZM117.78,540.47l-0.76,-0.83l0.17,-0.28l0.83,0.02l-0.24,1.09ZM121.13,540.99l0.32,0.07l-0.59,0.51l0.31,-0.44l-0.03,-0.14ZM113.0,545.5l-0.71,0.24l-0.07,-0.11l0.36,-0.03l0.42,-0.1ZM111.68,543.33l0.69,-0.15l0.23,0.13l-0.51,0.43l-0.41,-0.41ZM76.93,452.59l0.44,-0.56l0.74,-0.21l0.04,0.98l0.81,0.62l0.81,1.25l1.59,0.48l1.11,0.77l0.29,0.97l-0.62,0.7l1.28,1.78l-0.03,0.76l0.83,0.73l0.06,0.6l-0.76,-0.35l-1.49,0.03l-0.08,-1.15l-0.71,-1.29l0.16,-0.62l-1.2,-2.9l-0.96,-0.77l-1.79,-0.42l-0.51,-1.4ZM84.52,461.74l0.69,0.18l0.56,0.73l-0.43,0.12l-0.82,-1.03ZM75.58,485.5l0.07,-0.44l1.7,1.61l0.78,-0.27l0.53,0.4l0.88,-0.0l-0.06,0.37l0.83,0.24l0.29,0.89l1.02,0.89l-0.67,0.62l-0.55,1.49l-2.66,-1.39l-0.92,-0.99l-0.64,-2.06l-0.55,-0.58l-0.06,-0.77ZM55.82,528.18l0.22,-0.57l1.29,0.26l2.05,-0.81l0.73,0.9l0.76,-0.1l1.99,0.58l0.55,0.5l0.05,0.8l-0.49,1.14l-1.03,0.31l-2.5,-1.87l-2.52,0.16l-1.15,-0.81l0.05,-0.5ZM37.73,525.86l0.44,0.13l0.4,0.44l-0.66,-0.33l-0.17,-0.24ZM43.99,527.71l-0.32,-0.33l-0.55,0.04l0.82,-0.2l0.41,-0.61l-1.11,-1.43l0.35,-0.53l1.55,0.81l-0.4,0.52l0.03,0.83l-0.39,0.13l-0.39,0.76ZM42.84,527.18l-0.0,-0.0l0.0,0.0l0.0,0.0ZM43.98,526.54l0.02,-0.01l0.01,0.01l-0.02,0.0l-0.0,-0.0ZM42.63,527.12l-0.35,0.44l-0.22,-0.21l0.3,-0.36l-0.18,-0.32l0.39,-0.07l0.05,0.51ZM42.72,526.39l-0.0,-0.06l0.01,0.01l-0.01,0.05ZM31.87,524.21l0.91,-0.8l0.8,0.02l0.72,0.69l-1.15,0.35l-1.28,-0.25ZM35.31,524.02l0.44,-0.89l0.8,-0.04l0.97,0.45l0.25,0.65l-0.43,0.37l-2.04,-0.54ZM4.9,508.63l0.28,0.1l-0.04,0.24l-0.12,0.03l-0.12,-0.37ZM6.12,508.53l-0.05,-0.66l0.53,0.07l0.12,0.71l-0.59,-0.13Z", "name": "Alaska"}, "US-NJ": {"path": "M801.65,165.2l1.31,-1.55l0.48,-1.57l0.5,-0.62l0.54,-1.45l0.11,-2.05l0.67,-1.35l0.92,-0.71l14.12,4.16l-0.4,6.03l-0.35,0.55l-0.23,-0.44l-0.7,0.11l-0.26,1.18l-0.76,0.97l0.12,1.42l-0.46,0.6l0.08,1.71l0.58,0.62l1.2,0.29l1.38,-0.43l2.3,0.24l0.9,6.92l-0.56,0.39l0.18,0.66l-0.61,0.95l0.46,0.58l-0.21,0.6l0.53,1.94l-0.47,2.0l0.11,0.61l0.62,0.64l-0.39,1.13l-0.49,0.45l-0.01,0.59l-0.93,1.13l0.02,0.52l-1.07,0.1l0.09,1.21l0.64,0.83l-0.82,0.56l-0.18,1.15l1.05,0.77l-0.31,0.29l-0.17,-0.44l-0.53,-0.18l-0.5,0.22l-0.44,1.51l-1.28,0.61l-0.2,0.45l0.46,0.55l0.8,0.06l-0.66,1.26l-0.26,1.5l-0.68,0.65l0.19,0.48l0.4,0.04l-0.89,1.57l0.07,0.95l-1.65,1.72l-0.12,-1.34l0.36,-2.44l-0.11,-0.87l-0.58,-0.82l-0.89,-0.28l-1.11,0.34l-0.81,-0.35l-1.51,0.88l-0.31,-0.7l-1.62,-0.96l-1.0,0.04l-0.65,-0.71l-0.7,0.07l-3.24,-2.03l-0.06,-1.73l-1.02,-0.94l0.48,-0.68l0.0,-0.87l0.43,-0.83l-0.12,-0.73l0.51,-1.18l1.2,-1.16l2.6,-1.49l0.54,-0.86l-0.38,-0.85l0.5,-0.37l0.47,-1.44l1.24,-1.7l2.52,-2.22l0.18,-0.67l-0.47,-0.82l-4.26,-2.78l-0.75,-1.05l-0.9,0.24l-0.48,-0.33l-1.24,-2.46l-1.62,-0.02l-1.0,-3.44l1.02,-1.03l0.36,-2.23l-1.87,-1.91Z", "name": "New Jersey"}, "US-CO": {"path": "M364.23,239.52l-1.22,65.86l-29.29,-0.9l-29.38,-1.43l-29.35,-1.95l-32.17,-2.75l8.32,-87.13l27.79,2.39l28.22,1.92l29.58,1.46l27.95,0.87l-0.46,21.65Z", "name": "Colorado"}, "US-MD": {"path": "M740.67,219.62l-2.04,-10.06l19.85,-4.49l-0.66,1.29l-0.94,0.08l-1.54,0.81l0.16,0.7l-0.42,0.49l0.23,0.78l-1.76,0.5l-1.48,0.03l-1.14,-0.39l0.21,-0.36l-0.3,-0.49l-1.11,-0.31l-0.47,1.8l-1.63,2.84l-1.37,-0.39l-1.03,0.62l-0.41,1.26l-1.6,1.93l-0.36,1.04l-0.88,0.45l-1.3,1.87ZM760.74,204.54l36.93,-9.13l8.48,26.19l0.45,0.26l1.06,-0.21l8.18,-2.08l-0.9,0.53l0.31,0.64l0.52,0.01l0.37,0.76l0.52,-0.05l-0.38,1.96l-0.12,-0.26l-0.47,0.07l-0.73,0.86l-0.17,2.7l-0.6,0.19l-0.36,0.71l-0.02,1.66l-3.62,1.37l-0.45,0.7l-2.2,0.43l-0.56,0.65l-0.3,-1.09l0.5,-0.31l0.86,-1.84l-0.4,-0.51l-0.45,0.12l0.08,-0.5l-0.44,-0.42l-2.29,0.63l0.3,-0.6l1.15,-0.83l-0.17,-0.69l-1.36,-0.18l0.38,-2.24l-0.18,-1.02l-0.91,0.16l-0.53,1.76l-0.34,-0.68l-0.62,-0.07l-0.44,0.47l-0.5,1.39l0.53,1.02l-2.87,-2.14l-0.43,-0.19l-0.61,0.36l-0.73,-0.76l0.33,-1.67l0.76,-0.6l-0.08,-1.35l2.55,0.23l0.78,-1.5l-0.32,-1.42l-0.72,0.27l-0.28,1.29l-0.98,-0.25l-0.38,-1.07l-0.52,-0.28l-0.55,0.23l-0.22,-0.68l-0.63,0.08l1.0,-0.82l0.22,-1.04l-0.54,-0.55l-0.75,0.83l-0.21,-0.61l1.06,-0.92l-0.25,-0.65l-0.54,-0.08l-0.51,-0.75l-0.42,0.22l-0.53,-0.37l0.83,-1.03l-0.24,-1.02l0.84,-1.95l-0.07,-0.86l-0.46,0.02l-0.66,0.66l-0.56,-0.16l-0.48,0.45l-0.19,0.97l-0.95,-1.2l0.75,-3.46l0.59,-0.51l0.07,-0.74l3.89,-0.78l0.49,-0.41l-0.23,-0.67l-0.45,-0.07l-2.38,0.56l0.88,-1.55l1.42,-0.05l0.35,-0.5l-0.99,-0.67l0.44,-1.9l-0.63,-0.32l-0.48,0.39l-0.87,1.96l0.21,-2.02l-0.59,-0.34l-0.88,1.43l-1.42,0.34l-0.31,1.65l0.39,0.53l0.65,0.12l-1.45,1.92l-0.2,-1.64l-0.64,-0.42l-0.61,0.73l0.07,1.45l-0.85,-0.29l-1.16,0.64l0.02,0.71l1.01,0.27l-0.37,0.54l-0.83,0.22l-0.05,0.34l-0.44,-0.04l-0.35,0.64l1.2,1.22l-0.29,0.17l-1.52,-0.76l-1.33,0.48l0.16,0.69l0.82,0.1l1.26,1.21l1.49,0.58l0.1,0.28l-0.44,0.33l-1.37,0.5l-0.12,1.19l1.83,1.04l0.47,0.63l-0.66,-0.43l-1.05,0.29l0.2,0.64l0.92,0.48l-0.34,0.47l0.4,1.15l0.6,0.09l-0.63,1.26l0.13,0.43l0.63,0.65l1.28,4.18l2.83,2.58l-0.01,0.35l-0.38,0.54l-0.67,-1.23l-1.21,-0.22l-1.69,-0.87l-1.51,-3.64l-0.74,-0.68l-0.28,0.69l1.17,3.94l0.65,0.92l1.45,0.81l1.3,0.31l1.49,1.39l0.89,-0.33l0.37,1.32l1.47,1.47l0.1,1.07l-1.08,-0.68l-0.33,-1.23l-0.63,-0.45l-0.45,0.04l-0.13,0.44l0.27,0.78l-0.74,0.13l-0.62,-0.73l-1.16,-0.38l-1.53,0.0l-0.92,0.43l-0.55,-0.2l-1.0,-2.19l-1.26,-0.71l-0.46,0.14l0.01,0.48l1.19,2.0l-0.67,-0.12l-0.28,-0.5l-0.89,-0.4l-1.61,-2.6l-0.48,-0.14l-0.43,1.47l-0.25,-0.74l-0.62,-0.04l-0.4,0.46l0.33,0.72l-0.18,0.69l-0.64,0.59l-0.57,-0.26l-0.63,-1.86l0.25,-1.14l0.71,-0.37l0.2,-0.51l-0.37,-0.52l0.83,-0.52l0.21,-1.61l1.06,-0.35l0.07,-0.66l-0.33,-0.42l0.23,-0.42l-0.38,-0.38l-0.04,-0.7l1.27,-2.2l-0.14,-0.54l-2.72,-1.68l-0.56,0.14l-0.69,1.19l-1.81,-0.37l-1.09,-1.19l-2.96,-0.09l-1.25,-0.91l0.61,-1.35l-0.4,-0.97l-1.19,-0.3l-0.89,-0.66l-2.69,0.07l-0.36,-0.23l-0.11,-1.26l-1.04,-0.6l0.09,-1.2l-0.51,-0.29l-0.49,0.19l-0.23,-0.64l-0.52,-0.13l0.26,-0.83l-0.45,-0.58l-0.69,-0.12l-1.81,0.67l-2.24,-1.27ZM790.07,212.25l0.29,-0.0l0.93,0.21l-0.44,0.4l-0.78,-0.61ZM796.79,218.15l0.0,0.16l-0.13,-0.11l0.13,-0.06ZM803.02,225.62l-0.02,0.33l-0.21,-0.15l0.23,-0.19ZM806.99,229.08l-0.16,0.3l-0.12,0.07l0.02,-0.25l0.26,-0.12ZM797.54,220.57l-0.06,0.01l-0.09,0.03l0.12,-0.06l0.03,0.02ZM797.21,220.69l-0.26,0.57l-0.18,0.12l0.15,-0.61l0.29,-0.07ZM796.09,217.04l-0.61,0.32l-0.58,-0.42l0.02,-0.53l0.16,-0.23l0.68,0.3l0.32,0.56ZM794.46,213.09l-0.25,0.5l-0.8,0.39l0.15,-1.17l0.9,0.27Z", "name": "Maryland"}, "US-MA": {"path": "M820.4,120.02l30.04,-8.0l1.53,-1.8l0.34,-1.48l0.95,-0.35l0.61,-1.04l1.17,-1.05l1.35,-0.1l-0.44,1.05l1.03,0.32l0.21,1.55l1.17,0.55l-0.06,0.32l0.39,0.28l1.31,0.19l-0.17,0.56l-2.29,1.79l-0.05,1.07l0.45,0.16l-1.11,1.41l0.23,1.08l-1.01,0.96l0.58,1.41l1.4,0.45l0.5,0.63l1.36,-0.57l0.33,-0.59l1.2,0.09l0.79,0.47l0.23,0.68l1.79,1.37l-0.07,1.25l-0.56,0.55l0.12,0.6l1.23,0.66l1.73,-0.23l0.68,1.2l0.21,1.14l0.89,0.68l1.33,0.41l1.48,-0.12l0.43,0.38l1.05,-0.23l2.92,-2.34l0.82,-1.11l0.54,0.02l0.56,1.86l-3.32,1.52l-0.94,0.82l-2.75,0.98l-0.49,1.64l-1.93,1.37l-0.82,-2.64l0.11,-1.34l-0.55,-0.31l-0.5,0.39l-0.93,-0.1l-0.3,0.51l0.25,0.92l-0.26,0.79l-0.4,0.06l-0.63,1.1l-0.6,-0.2l-0.5,0.48l0.22,1.86l-0.9,0.87l-0.63,-0.8l-0.47,0.01l-0.11,0.55l-0.26,0.03l-0.71,-2.03l-1.02,-0.35l0.44,-2.5l-0.21,-0.4l-0.78,0.4l-0.29,1.47l-0.69,0.2l-1.4,-0.64l-0.78,-2.12l-0.8,-0.22l-0.78,-2.15l-0.49,-0.24l-6.13,2.0l-0.3,-0.15l-14.84,4.19l-0.28,0.5l-0.46,-0.28l-0.86,0.17l-9.54,2.36l-0.25,-0.18l-0.32,-14.66ZM860.63,110.12l-0.02,-0.37l-0.14,-0.48l0.51,0.23l-0.35,0.62ZM876.24,122.86l-0.12,-0.42l0.25,0.35l-0.13,0.06ZM875.23,121.15l-0.78,0.0l-0.55,-1.2l0.56,0.44l0.77,0.76ZM871.43,119.57l-0.08,0.14l-0.09,-0.07l0.0,-0.0l0.17,-0.07Z", "name": "Massachusetts"}, "US-AL": {"path": "M608.67,337.4l25.17,-2.91l19.4,-2.75l14.04,43.29l1.01,2.45l1.17,1.59l0.59,1.87l2.24,2.5l0.92,1.8l-0.11,2.13l1.8,1.13l-0.17,0.74l-0.63,0.1l-0.16,0.7l-0.98,0.84l-0.22,2.29l0.25,1.48l-0.76,2.3l-0.14,1.84l1.1,2.94l1.21,1.52l0.53,1.6l-0.08,5.02l-0.25,0.81l0.48,2.03l1.35,1.16l1.14,2.07l-47.64,6.92l-0.42,0.61l-0.08,2.99l2.64,2.75l2.0,0.96l-0.34,2.7l0.56,1.61l0.43,0.39l-0.94,1.69l-1.24,1.0l-1.13,-0.75l-0.34,0.49l0.66,1.46l-2.81,1.05l0.29,-0.63l-0.45,-0.86l-0.99,-0.76l-0.1,-1.11l-0.57,-0.22l-0.52,0.61l-0.32,-0.1l-0.89,-1.53l0.41,-1.67l-0.97,-2.21l-1.32,-0.65l-0.3,-0.89l-0.56,-0.17l-0.37,0.61l0.15,0.35l-0.77,3.1l-0.01,5.08l-0.59,0.0l-0.24,-0.71l-2.22,-0.44l-1.64,0.31l-5.46,-31.98l-0.99,-66.48l-0.02,-0.37l-1.07,-0.63l-0.69,-1.02Z", "name": "Alabama"}, "US-MO": {"path": "M468.72,225.49l24.71,-0.73l18.94,-1.42l22.1,-2.58l0.42,0.35l0.39,0.91l2.43,1.65l0.29,0.74l1.21,0.87l-0.51,1.36l-0.1,3.21l0.78,3.65l0.95,1.44l0.03,1.59l1.11,1.37l0.46,1.55l4.96,4.1l1.06,1.69l4.93,3.31l0.7,1.15l0.27,1.62l0.5,0.82l-0.18,0.69l0.47,1.8l0.97,1.63l0.77,0.73l1.04,0.16l0.83,-0.56l0.84,-1.4l0.57,-0.19l2.41,0.61l1.68,0.76l0.84,0.77l-0.97,1.95l0.26,2.28l-2.37,6.86l0.01,1.02l0.7,1.92l4.67,4.05l1.99,1.05l1.46,0.09l1.66,1.3l1.92,0.8l1.5,2.11l2.04,0.83l0.42,2.96l1.72,2.9l-1.1,1.94l0.18,1.38l0.75,0.33l2.31,4.25l1.94,0.92l0.55,-0.32l0.0,-0.65l0.87,1.1l1.07,-0.08l0.14,1.85l-0.37,1.07l0.53,1.59l-1.07,3.86l-0.51,0.07l-1.37,-1.13l-0.65,0.13l-0.78,3.34l-0.52,0.74l0.13,-1.06l-0.56,-1.09l-0.97,-0.2l-0.74,0.63l0.02,1.05l0.53,0.66l-0.04,0.7l0.58,1.34l-0.2,0.4l-1.2,0.39l-0.17,0.41l0.15,0.55l0.86,0.84l-1.71,0.37l-0.14,0.62l1.53,1.97l-0.89,0.75l-0.63,2.13l-10.61,1.42l1.06,-2.28l0.87,-0.61l0.18,-0.87l1.43,-0.96l0.25,-0.96l0.63,-0.37l0.29,-0.59l-0.22,-2.28l-1.05,-0.75l-0.2,-0.77l-1.09,-1.18l-39.24,3.6l-37.71,2.58l-3.21,-58.18l-1.03,-0.63l-1.2,-0.02l-1.52,-0.73l-0.19,-0.93l-1.11,-1.3l-0.36,-1.55l-0.55,-0.09l-0.3,-0.56l-1.13,-0.66l-1.4,-1.84l0.73,-0.51l0.09,-1.24l1.12,-1.27l0.09,-0.79l1.01,0.16l0.56,-0.43l-0.2,-2.24l-1.02,-0.74l-0.32,-1.1l-1.17,-0.01l-1.31,0.96l-0.81,-0.7l-0.73,-0.17l-2.67,-2.35l-1.05,-0.28l0.13,-1.6l-1.32,-1.72l0.1,-1.01l-0.37,-0.36l-1.01,-0.18l-0.59,-0.85l-0.84,-0.26l0.07,-0.52l-1.24,-2.88l-0.0,-0.74l-0.4,-0.49l-0.85,-0.29l-0.05,-0.54ZM583.78,294.53l-0.1,-0.1l-0.08,-0.15l0.11,-0.01l0.07,0.26Z", "name": "Missouri"}, "US-MN": {"path": "M443.67,67.68l-0.4,-1.37l0.05,-1.19l-0.48,-0.53l-1.36,-3.77l0.0,-3.22l-0.47,-1.97l0.27,-1.12l-0.57,-2.32l0.73,-2.56l-2.06,-6.89l29.55,-1.22l0.47,-0.81l-0.38,-7.12l2.84,0.15l1.24,0.82l0.38,2.69l1.73,5.31l0.13,2.3l0.52,0.86l1.46,1.05l1.3,0.49l3.23,-0.36l0.39,0.85l0.54,0.38l5.25,0.04l0.38,0.24l0.54,1.58l0.72,0.61l4.27,-0.78l0.77,-0.65l0.07,-0.69l0.69,-0.35l1.74,-0.44l3.97,-0.02l1.42,0.7l3.38,0.66l-1.01,0.79l0.0,0.82l0.51,0.45l2.91,-0.06l0.52,2.08l1.58,2.29l0.71,0.05l1.03,-0.78l-0.04,-1.73l2.67,-0.46l1.43,2.16l2.01,0.79l1.54,0.18l0.54,0.57l-0.03,0.83l0.58,0.35l1.32,0.06l0.19,0.75l0.41,0.1l1.2,-0.22l1.12,0.22l2.21,-0.85l2.78,-2.55l2.49,-1.54l1.24,2.52l0.96,0.51l2.23,-0.66l0.87,0.36l5.98,-1.3l0.56,0.18l1.32,1.64l1.24,0.59l0.62,-0.01l1.61,-0.83l1.3,0.1l-0.89,1.0l-4.69,3.07l-6.35,2.82l-3.68,2.47l-2.15,2.49l-0.96,0.57l-6.62,8.67l-0.95,0.61l-1.07,1.56l-1.96,1.97l-4.18,3.55l-0.86,1.78l-0.55,0.44l-0.14,0.96l-0.78,-0.01l-0.46,0.51l0.98,12.22l-0.79,1.2l-1.04,0.08l-0.52,0.82l-0.83,0.15l-0.61,0.83l-2.06,1.19l-0.94,1.86l0.06,0.72l-1.69,2.39l-0.01,2.06l0.38,0.91l2.15,0.39l1.42,2.49l-0.52,1.92l-0.71,1.25l-0.05,2.12l0.45,1.32l-0.71,1.23l0.91,3.14l-0.51,4.08l3.95,3.03l3.02,0.4l1.89,2.25l2.87,0.5l2.45,1.93l2.39,3.59l2.63,1.8l2.09,0.09l1.07,0.71l0.88,0.1l0.82,1.36l1.26,0.84l0.28,2.03l0.68,1.3l0.39,4.82l-40.62,3.2l-40.63,2.09l-1.46,-38.98l-1.52,-2.05l-2.57,-0.79l-0.94,-1.91l-1.46,-1.79l0.21,-0.68l2.82,-2.34l0.93,-2.03l0.43,-2.53l-0.35,-1.58l0.23,-1.86l-0.18,-1.51l-0.5,-1.03l-0.18,-2.33l-1.81,-2.59l-0.47,-1.13l-0.21,-2.16l-0.66,-0.98l0.15,-1.66l-0.35,-1.52l0.53,-2.69l-1.08,-1.85l-0.49,-8.32l-0.42,-0.79l0.06,-3.92l-1.58,-3.95l-0.53,-0.65Z", "name": "Minnesota"}, "US-CA": {"path": "M3.07,175.36l0.87,-1.1l0.96,0.24l1.21,-2.15l0.92,0.12l0.64,-0.23l0.41,-0.57l-0.27,-0.82l-0.71,-0.36l1.52,-2.68l0.12,-0.78l-0.43,-0.48l0.1,-1.34l0.85,-0.88l1.17,-2.25l1.26,-3.01l0.39,-2.1l-0.28,-1.0l0.05,-3.89l-1.25,-1.24l0.92,-1.24l0.94,-2.81l32.73,8.13l32.57,7.34l-13.67,64.67l25.44,34.66l36.59,51.09l13.3,17.72l-0.19,2.73l0.73,0.94l0.21,1.71l0.85,0.63l0.81,2.56l-0.07,0.91l0.63,1.46l-0.16,1.36l3.8,3.82l0.01,0.5l-1.95,1.53l-3.11,1.26l-1.2,1.99l-1.72,1.14l-0.33,0.81l0.38,1.03l-0.51,0.51l-0.1,0.9l0.08,2.29l-0.6,0.72l-0.64,2.44l-2.02,2.47l-1.6,0.14l-0.42,0.51l0.33,0.89l-0.59,1.34l0.54,1.11l-0.01,1.19l-0.78,2.68l0.57,1.02l2.74,1.13l0.34,0.83l-0.19,2.4l-1.18,0.78l-0.42,1.37l-2.27,-0.62l-1.26,0.61l-43.36,-3.35l0.04,-0.76l0.39,-0.07l0.3,-0.56l-0.12,-1.38l-1.1,-1.65l-1.08,0.02l0.16,-1.13l-0.24,-1.11l0.35,-0.13l0.36,-0.93l0.05,-2.47l-0.39,-2.64l-2.46,-5.66l-3.47,-4.07l-1.29,-1.98l-2.42,-2.12l-2.07,-2.86l-2.01,-1.04l-1.23,0.18l-0.29,0.88l-1.56,-0.95l-0.11,-0.38l0.63,-0.52l0.22,-0.95l-0.46,-2.65l-1.0,-1.95l-0.7,-0.58l-2.17,-0.43l-1.45,-0.13l-1.11,0.3l-0.49,-0.59l-1.66,-0.65l-3.05,-1.95l-1.24,-1.35l-0.54,-2.64l-0.89,-0.66l-1.77,-2.24l-1.66,-1.3l-1.92,-0.51l-1.09,0.24l-1.1,-0.72l-1.51,-0.14l-2.0,-1.52l-2.34,-0.84l-5.72,-0.67l-0.4,-1.69l-1.01,-0.93l-0.92,-0.35l1.28,-2.62l-0.33,-1.38l0.84,-2.21l-0.65,-1.27l1.18,-2.39l0.32,-2.41l-0.99,-1.24l-1.32,-0.26l-1.34,-1.39l-0.08,-0.75l1.44,-1.4l-0.5,-2.3l-0.34,-0.54l-1.68,-0.76l-1.88,-4.27l-1.79,-1.16l-0.32,-2.63l-1.62,-2.61l-0.22,-2.75l-1.01,-0.76l-1.13,-3.38l-2.16,-2.3l-0.75,-1.6l0.04,-3.93l0.55,-1.46l-0.54,-0.6l0.52,-0.53l0.56,0.71l0.58,-0.1l0.8,-0.59l0.9,-1.64l0.83,0.01l0.08,-0.52l-0.51,-0.5l0.4,-0.88l-0.05,-0.93l-0.49,-2.22l-0.61,-1.2l-0.6,-0.44l-0.92,0.25l-2.02,-0.43l-1.45,-1.81l-0.86,-2.15l-0.53,-0.38l-0.32,-1.18l-0.46,-0.5l0.04,-1.12l0.85,-2.26l-0.21,-2.94l-0.89,-1.29l1.1,-2.74l0.21,-2.34l1.33,-0.2l0.23,1.52l-0.62,0.31l-0.1,2.71l1.73,1.17l0.7,1.42l1.0,0.72l0.4,1.01l0.89,0.41l0.85,-0.4l-0.19,-1.18l-0.68,-0.51l-0.37,-1.53l0.13,-1.99l-0.54,-1.26l-0.37,-0.02l-0.11,-0.14l0.62,-0.35l-0.0,-0.34l-1.62,-1.2l0.69,-0.67l-0.17,-1.88l-0.94,-0.36l-0.3,-0.61l1.07,-0.66l0.99,-0.01l0.96,-0.71l1.25,1.03l2.63,-0.1l5.01,2.23l0.53,-0.22l0.04,-0.59l0.61,-0.67l-0.3,0.75l0.39,0.76l0.81,-0.06l0.35,-0.49l1.35,1.6l0.7,-0.16l0.02,-0.38l-0.53,-1.14l-0.97,-0.74l-0.27,-0.8l-0.66,-0.38l-1.09,-0.07l0.27,-0.58l-0.25,-0.54l-2.48,1.29l-0.7,-0.34l-0.75,0.18l-0.18,-0.55l-1.09,-0.25l0.28,-0.66l-0.36,-0.69l-1.09,-0.17l-1.86,1.57l-0.34,-0.46l-1.36,-0.54l-0.36,-0.88l-1.36,-1.35l-2.59,0.52l0.1,0.92l-0.7,1.21l0.53,0.72l-0.88,0.92l-0.07,2.28l-0.37,-0.09l-1.52,-2.07l-1.18,-0.34l-1.16,-2.44l-1.41,-1.2l0.09,-0.69l-0.68,-0.18l0.73,-1.18l0.93,2.05l0.44,0.25l0.33,-0.38l-1.77,-5.65l-0.41,-0.59l-0.57,-0.2l0.2,-0.84l-0.53,-2.28l-2.72,-3.32l-1.0,-2.99l-3.45,-6.17l-0.03,-0.38l1.14,-1.43l0.12,-0.85l-0.51,-6.75l0.61,-1.87l1.33,-2.02l0.4,-3.04l-0.36,-1.21l0.19,-2.39l-0.7,-1.04l-1.24,-3.68l-0.57,-0.53l0.1,-0.93l-0.32,-0.88l-1.04,-0.88l-2.01,-3.32l0.52,-1.23l-0.26,-2.71l2.38,-3.44ZM33.36,240.61l0.01,-0.01l0.01,0.01l-0.02,-0.01ZM45.67,326.22l-0.02,0.03l0.02,-0.03l0.01,0.01ZM31.63,240.38l-0.09,0.14l-0.63,0.23l-0.2,-0.07l0.92,-0.3Z", "name": "California"}, "US-IA": {"path": "M452.94,162.22l42.82,-2.19l40.55,-3.19l0.96,2.52l2.0,1.0l0.08,0.59l-0.9,1.8l-0.16,1.04l0.9,5.09l0.92,1.26l0.39,1.75l1.46,1.72l4.94,0.85l1.27,2.03l-0.3,1.03l0.29,0.66l3.61,2.37l0.85,2.41l3.84,2.31l0.62,1.68l-0.31,4.21l-1.64,1.98l-0.5,1.94l0.13,1.28l-1.26,1.36l-2.51,0.97l-0.89,1.18l-0.55,0.25l-4.56,0.83l-0.89,0.73l-0.61,1.71l-0.15,2.55l0.4,1.08l2.01,1.47l0.54,2.65l-1.87,3.25l-0.22,2.24l-0.52,1.42l-2.88,1.39l-1.02,1.02l-0.2,0.99l0.72,0.87l0.2,2.15l-0.58,0.23l-1.34,-0.82l-0.31,-0.76l-1.29,-0.82l-0.29,-0.51l-0.88,-0.36l-0.3,-0.82l-0.95,-0.68l-22.3,2.61l-15.12,1.17l-7.59,0.51l-20.78,0.47l-0.22,-1.06l-1.3,-0.73l-0.33,-0.67l0.58,-1.16l-0.21,-0.95l0.22,-1.39l-0.36,-2.19l-0.6,-0.73l0.07,-3.65l-1.05,-0.5l0.05,-0.91l0.71,-1.02l-0.05,-0.44l-1.31,-0.56l0.33,-2.54l-0.41,-0.45l-0.89,-0.16l0.23,-0.8l-0.3,-0.58l-0.51,-0.25l-0.74,0.23l-0.42,-2.81l0.5,-2.36l-0.2,-0.67l-1.36,-1.71l-0.08,-1.92l-1.78,-1.54l-0.36,-1.74l-1.09,-0.94l0.03,-2.18l-1.1,-1.87l0.21,-1.7l-0.27,-1.08l-1.38,-0.67l-0.87,-2.17l0.05,-0.63l-1.81,-1.82l0.56,-1.61l0.54,-0.47l0.73,-2.68l0.0,-1.68l0.55,-0.69l0.21,-1.19l-0.51,-2.24l-1.33,-0.29l-0.05,-0.73l0.45,-0.56l-0.0,-1.71l-0.95,-1.42l-0.05,-0.87Z", "name": "Iowa"}, "US-MI": {"path": "M612.25,185.8l1.83,-2.17l0.7,-1.59l1.18,-4.4l1.43,-3.05l1.01,-5.05l0.09,-5.37l-0.86,-5.54l-2.4,-5.17l0.6,-0.5l0.3,-0.79l-0.57,-0.42l-1.08,0.55l-3.82,-7.03l-0.21,-1.1l1.13,-2.68l-0.01,-0.97l-0.74,-3.13l-1.29,-1.65l-0.05,-0.62l1.73,-2.73l1.22,-4.14l-0.21,-5.35l-0.77,-1.59l1.09,-1.15l0.81,-0.02l0.56,-0.47l-0.27,-3.49l1.08,-0.11l0.67,-1.43l1.18,0.47l0.66,-0.33l0.76,-2.59l0.82,-1.2l0.56,-1.68l0.55,-0.18l-0.58,0.87l0.6,1.65l-0.71,1.8l0.71,0.42l-0.48,2.61l0.88,1.43l0.73,-0.05l0.52,0.56l0.64,-0.24l0.89,-2.26l0.67,-3.51l-0.08,-2.07l-0.76,-3.42l0.58,-1.02l2.13,-1.64l2.74,-0.55l0.98,-0.63l0.28,-0.64l-0.25,-0.54l-1.76,-0.11l-0.96,-0.86l-0.52,-1.98l1.85,-2.98l-0.1,-0.73l1.72,-0.23l0.74,-0.94l4.16,2.0l0.83,0.12l1.98,-0.4l1.37,0.4l1.19,1.04l0.53,1.15l0.77,0.49l2.41,-0.29l1.7,1.01l1.92,0.09l0.8,0.64l3.27,0.45l1.1,0.77l-0.01,1.12l1.04,1.31l0.64,0.21l0.37,0.91l-0.14,0.55l-0.67,-0.25l-0.94,0.57l-0.23,1.83l0.81,1.29l1.6,0.98l0.69,1.37l0.65,2.26l-0.12,1.73l0.77,5.57l-0.14,0.59l-0.58,0.21l-0.48,0.96l-0.74,0.07l-0.8,0.81l-0.17,4.47l-1.12,0.49l-0.18,0.82l-1.86,0.43l-0.72,0.6l-0.58,2.61l0.26,0.45l-0.21,0.52l0.25,2.57l1.38,1.31l2.89,0.84l0.91,-0.08l1.08,-1.23l0.6,-1.44l0.62,0.19l0.39,-0.24l1.01,-3.59l0.6,-1.06l-0.08,-0.51l0.97,-1.45l1.39,-0.39l1.07,-0.69l0.83,-1.1l0.87,-0.44l2.06,0.59l1.13,0.7l1.0,1.09l1.21,2.16l2.01,5.91l0.82,1.6l1.03,3.71l1.49,3.63l1.29,1.74l-0.34,3.92l0.45,2.48l-0.48,2.79l-0.36,0.45l-0.57,-1.21l0.03,-0.85l-1.46,-0.52l-0.47,0.08l-1.48,1.36l-0.06,0.83l0.55,0.67l-0.82,0.57l-0.29,0.79l0.28,2.94l-0.48,0.75l-1.62,0.92l-1.06,1.85l-0.43,3.73l0.27,1.56l-0.33,0.93l-0.42,0.19l0.02,0.91l-0.64,0.3l-0.89,1.6l-0.5,1.29l-0.02,1.05l-0.52,0.91l-20.5,4.22l-0.15,-0.92l-0.45,-0.33l-31.44,4.71ZM621.47,115.84l0.0,-0.07l0.11,-0.12l-0.01,0.03l-0.11,0.16ZM621.73,114.93l-0.07,-0.16l0.07,-0.14l-0.0,0.3ZM543.5,88.02l4.87,-2.38l3.55,-3.62l5.77,-1.36l1.39,-0.84l2.36,-2.71l0.98,0.04l1.52,-0.73l1.0,-2.24l2.82,-2.85l0.23,1.72l1.85,0.59l0.05,1.44l0.67,0.14l0.51,0.6l-0.17,3.14l0.44,0.95l-0.34,0.47l0.2,0.47l0.74,-0.02l1.08,-2.21l1.08,-0.89l-0.42,1.15l0.58,0.45l0.83,-0.67l0.52,-1.22l1.0,-0.43l3.09,-0.25l1.5,0.21l1.18,0.93l1.54,0.44l0.47,1.05l2.31,2.58l1.17,0.55l0.53,1.55l0.73,0.34l1.87,0.07l0.73,-0.4l1.06,-0.06l1.4,-1.09l1.0,1.11l1.1,0.64l1.01,-0.25l0.68,-0.82l1.87,1.06l0.64,-0.34l1.65,-2.58l2.81,-1.89l1.7,-1.65l0.92,0.11l3.27,-1.21l5.17,-0.25l3.25,-2.09l2.28,-0.88l1.52,-0.11l-0.01,3.24l0.29,0.71l-0.36,1.1l0.46,0.7l0.68,0.28l0.91,-0.41l2.2,0.7l1.14,-0.43l1.03,-0.87l0.66,0.48l0.21,0.7l0.85,0.22l1.22,-0.76l0.79,-1.57l0.69,-0.28l1.06,0.23l1.35,-1.15l0.53,-0.01l0.22,0.08l-0.3,2.02l0.75,1.32l-1.11,-0.04l-0.36,0.5l0.84,1.83l-0.87,1.04l0.12,0.45l0.83,0.79l1.37,-0.42l0.6,0.47l0.62,0.04l0.18,1.19l0.98,0.87l1.53,0.51l-1.17,0.68l-4.96,-0.15l-0.53,0.3l-1.35,-0.17l-0.88,0.41l-0.66,-0.75l-1.63,-0.07l-0.59,0.47l-0.07,1.22l-0.49,0.76l0.38,2.05l-0.92,-0.22l-0.89,-0.92l-0.77,-0.13l-1.96,-1.65l-2.41,-0.6l-1.6,0.04l-1.04,-0.5l-2.89,0.47l-0.61,0.45l-1.18,2.52l-3.47,0.73l-0.57,0.77l-2.06,-0.33l-2.82,0.93l-0.68,0.83l-0.56,2.51l-0.78,0.28l-0.81,0.87l-0.65,0.28l0.16,-1.95l-0.74,-0.91l-1.02,0.34l-0.77,0.92l-0.97,-0.39l-0.68,0.17l-0.37,0.4l0.1,0.82l-0.73,2.01l-1.2,0.59l-0.1,-1.37l-0.46,-1.06l0.34,-1.69l-0.17,-0.37l-0.66,-0.17l-0.45,0.57l-0.6,2.13l-0.22,2.57l-1.12,0.91l-1.26,3.03l-0.62,2.65l-2.55,5.33l-0.69,0.73l0.12,0.91l-1.4,-1.28l0.18,-1.74l0.63,-1.69l-0.41,-0.81l-0.62,-0.31l-1.36,0.85l-1.16,0.1l0.04,-1.29l0.81,-1.45l-0.41,-1.34l0.3,-1.09l-0.58,-0.98l0.15,-0.83l-1.9,-1.55l-1.1,-0.06l-0.59,-0.44l-1.48,-0.0l0.3,-1.36l-0.94,-1.45l-1.13,-0.51l-2.23,-0.1l-3.2,-0.71l-1.55,0.59l-1.43,-0.42l-1.62,0.17l-4.56,-1.94l-15.37,-2.5l-1.99,-3.39l-1.88,-0.96l-0.76,0.26l-0.1,-0.29ZM603.39,98.63l-0.0,0.52l-0.46,0.32l-0.7,1.39l0.08,0.57l-0.65,-0.58l0.91,-2.15l0.83,-0.06ZM570.53,72.73l-0.51,-0.27l-1.16,0.06l-0.04,-1.56l1.0,-1.02l1.18,-2.09l1.83,-1.5l0.63,-0.0l0.53,-0.58l2.08,-0.89l3.34,-0.42l1.1,0.66l-0.54,0.38l-1.32,-0.12l-2.26,0.78l0.15,0.87l0.71,0.13l-1.19,0.98l-1.4,1.89l-0.69,0.28l-0.36,1.45l-1.15,1.36l-0.66,2.04l-0.67,-0.87l0.75,-0.97l0.14,-1.95l-0.84,-0.23l-0.6,0.92l-0.05,0.67Z", "name": "Michigan"}, "US-GA": {"path": "M654.05,331.64l22.02,-3.57l20.65,-3.86l-0.07,0.58l-2.59,3.35l-0.41,1.73l0.11,1.23l0.82,0.78l1.84,0.8l1.03,0.12l2.7,2.03l0.84,0.24l1.9,-0.37l0.6,0.25l0.8,1.64l1.51,1.6l1.04,2.5l1.33,0.82l0.84,1.16l0.56,0.26l1.0,1.77l1.07,0.3l1.17,0.99l3.81,1.85l2.41,3.16l2.25,0.58l2.53,1.67l0.5,2.34l1.25,1.01l0.47,-0.16l0.31,0.49l-0.1,0.62l0.79,0.73l0.79,0.09l0.56,1.2l4.99,1.88l0.4,1.78l1.54,1.73l1.02,2.01l-0.07,0.8l0.48,0.69l0.11,1.24l1.04,0.79l1.16,0.17l1.25,0.62l0.28,0.53l0.57,0.23l1.12,2.56l0.76,0.57l0.08,2.68l0.77,1.48l1.38,0.9l1.52,-0.27l1.44,0.76l1.45,0.12l-0.59,0.78l-0.55,-0.35l-0.47,0.28l-0.4,0.99l0.62,0.91l-0.38,0.48l-1.38,-0.16l-0.77,-0.55l-0.65,0.44l0.26,0.71l-0.49,0.52l0.36,0.6l1.44,0.25l-0.58,1.35l-1.43,0.27l-1.08,-0.44l-0.6,0.21l0.03,0.82l1.45,0.6l-1.76,3.73l0.36,1.73l-0.48,0.97l0.85,1.48l-2.29,-0.19l-0.46,0.29l0.06,0.63l0.55,0.34l2.76,0.24l1.07,0.66l-0.02,0.34l-0.56,0.22l-0.88,1.95l-0.5,-1.41l-0.45,-0.13l-0.6,0.33l-0.15,0.84l0.34,0.96l-0.6,0.12l-0.03,0.84l-0.3,0.16l0.07,0.46l1.34,1.15l-1.09,1.03l0.32,0.47l0.77,0.08l-0.39,0.92l0.06,0.88l-0.46,0.51l1.1,1.66l0.03,0.76l-0.79,0.33l-2.64,-0.17l-4.06,-0.96l-1.31,0.35l-0.18,0.74l-0.68,0.26l-0.35,1.25l0.28,2.08l0.95,1.36l0.13,4.25l-1.97,0.4l-0.54,-0.92l-0.12,-1.3l-1.33,-1.82l-49.21,5.14l-0.72,-0.56l-0.86,-2.7l-0.94,-1.51l-0.56,-0.38l0.16,-0.68l-0.73,-1.51l-1.82,-1.81l-0.43,-1.75l0.25,-0.8l0.06,-5.18l-0.6,-1.81l-1.19,-1.47l-1.03,-2.65l0.12,-1.65l0.78,-2.36l-0.25,-1.53l0.19,-2.11l1.62,-1.33l0.46,-1.47l-0.55,-0.61l-1.42,-0.69l0.09,-2.15l-0.97,-1.87l-2.18,-2.42l-1.03,-2.81l-0.75,-0.68l-0.17,-0.96l-0.77,-1.37l-13.99,-43.11Z", "name": "Georgia"}, "US-AZ": {"path": "M128.51,384.14l0.44,-1.81l1.29,-1.29l0.53,-1.12l0.48,-0.25l1.66,0.62l0.96,-0.03l0.52,-0.46l0.28,-1.17l1.31,-1.0l0.24,-2.73l-0.46,-1.24l-0.84,-0.66l-2.07,-0.66l-0.3,-0.61l0.8,-2.4l0.0,-1.39l-0.52,-1.19l0.57,-0.86l-0.2,-0.87l1.57,-0.27l2.29,-2.81l0.65,-2.43l0.65,-0.81l0.02,-3.17l0.55,-0.62l-0.29,-1.43l1.71,-1.14l1.03,-1.85l3.16,-1.29l2.03,-1.58l0.26,-0.53l-0.13,-1.04l-3.25,-3.49l-0.51,-0.22l0.22,-1.26l-0.66,-1.46l0.07,-0.91l-0.88,-2.76l-0.84,-0.56l-0.19,-1.65l-0.69,-0.8l0.19,-3.54l0.58,-0.87l-0.3,-0.86l1.03,-0.4l0.4,-1.42l0.14,-3.2l-0.76,-3.66l0.76,-2.55l-0.4,-3.0l0.85,-2.56l-0.8,-1.87l-0.03,-0.92l0.78,-1.88l2.54,-0.63l1.75,0.99l1.43,-0.19l0.96,2.24l0.79,0.71l1.54,0.14l1.01,-0.5l1.02,-2.27l0.94,-1.19l2.57,-16.94l42.42,5.78l42.56,4.67l-11.82,123.64l-36.87,-4.05l-36.33,-18.97l-28.43,-15.56Z", "name": "Arizona"}, "US-MT": {"path": "M166.39,57.3l0.69,-0.1l0.33,-0.38l-0.9,-1.99l0.83,-0.96l-0.39,-1.3l0.09,-0.96l-1.24,-1.93l-0.24,-1.49l-1.03,-1.33l-1.19,-2.44l3.53,-20.64l43.67,6.71l43.04,5.23l42.75,3.84l43.13,2.53l-3.53,86.04l-28.1,-1.47l-26.82,-1.91l-26.78,-2.4l-25.83,-2.79l-0.44,0.35l-1.22,10.41l-1.51,-2.01l-0.03,-0.91l-1.18,-2.35l-1.25,-0.74l-1.8,0.92l0.03,1.05l-0.72,0.42l-0.34,1.56l-2.42,-0.41l-1.91,0.57l-0.92,-0.85l-3.36,0.09l-2.38,-0.96l-1.68,0.58l-0.84,1.49l-4.66,-1.6l-1.3,0.37l-1.12,0.9l-0.31,0.67l-1.65,-1.4l0.22,-1.43l-0.9,-1.71l0.4,-0.36l0.07,-0.62l-1.17,-3.08l-1.45,-1.25l-1.44,0.36l-0.21,-0.64l-1.08,-0.9l-0.41,-1.37l0.68,-0.61l0.2,-1.41l-0.77,-2.38l-0.77,-0.35l-0.31,-1.58l-1.51,-2.54l0.23,-1.51l-0.56,-1.26l0.34,-1.4l-0.73,-0.86l0.48,-0.98l-0.21,-0.74l-1.14,-0.75l-0.13,-0.59l-0.85,-0.91l-0.8,-0.4l-0.51,0.37l-0.07,0.74l-0.7,0.27l-1.13,1.22l-1.75,0.37l-1.21,1.07l-1.08,-0.85l-0.64,-1.01l-1.06,-0.44l0.02,-0.86l0.74,-0.63l0.24,-1.06l-0.61,-1.6l0.9,-1.09l1.07,-0.08l0.83,-0.8l-0.26,-1.14l0.38,-1.07l-0.95,-0.81l-0.04,-0.81l0.66,-1.28l-0.59,-1.07l0.74,-0.07l0.38,-0.42l-0.04,-1.77l1.83,-3.73l-0.14,-1.05l0.89,-0.62l0.6,-3.16l-0.78,-0.5l-1.8,0.37l-1.33,-0.11l-0.64,-0.55l0.37,-0.83l-0.62,-0.97l-0.66,-0.23l-0.72,0.35l-0.07,-0.95l-1.74,-1.62l0.04,-1.84l-1.68,-1.82l-0.08,-0.69l-1.55,-2.88l-1.07,-1.29l-0.57,-1.63l-2.35,-1.34l-0.95,-1.95l-1.43,-1.19Z", "name": "Montana"}, "US-MS": {"path": "M555.51,431.02l0.67,-0.97l-1.05,-1.76l0.18,-1.63l-0.81,-0.87l1.69,-0.25l0.47,-0.54l0.4,-2.74l-0.77,-1.82l1.56,-1.79l0.25,-3.58l0.74,-2.26l1.89,-1.25l1.15,-1.97l1.4,-1.04l0.34,-0.78l-0.04,-0.99l-0.63,-0.96l1.14,-0.28l0.96,-2.58l0.91,-1.31l-0.16,-0.86l-1.54,-0.43l-0.35,-0.96l-1.83,-1.04l-0.07,-2.14l-0.93,-0.74l-0.45,-0.84l-0.02,-0.37l1.14,-0.29l0.46,-0.69l-0.26,-0.89l-1.41,-0.49l0.23,-1.77l0.98,-1.54l-0.77,-1.06l-1.08,-0.31l-0.15,-2.82l0.9,-0.54l0.23,-0.8l-0.62,-2.52l-1.25,-0.66l0.7,-1.33l-0.07,-2.22l-2.02,-1.52l1.13,-0.47l0.12,-1.41l-1.34,-0.89l1.58,-2.04l0.93,-0.31l0.36,-0.69l-0.52,-1.56l0.42,-1.35l-0.9,-0.89l2.84,-1.1l0.59,-0.76l-0.09,-1.07l-1.41,-0.95l1.39,-1.08l0.62,-1.77l0.94,-0.17l0.34,-0.97l-0.2,-0.77l1.48,-0.43l1.22,-1.21l0.07,-3.53l-0.46,-1.53l0.36,-1.78l0.73,0.09l0.68,-0.33l0.42,-0.87l-0.41,-1.06l2.72,-1.71l0.58,-1.06l-0.29,-1.28l36.44,-4.1l0.86,1.26l0.85,0.45l0.99,66.49l5.52,32.95l-0.73,0.69l-1.53,-0.3l-0.9,-0.94l-1.32,1.06l-1.23,0.17l-2.17,-1.26l-1.85,-0.19l-0.83,0.36l-0.34,0.44l0.32,0.41l-0.56,0.36l-3.96,1.66l-0.05,-0.5l-0.96,-0.52l-1.0,0.05l-0.58,1.0l0.76,0.61l-1.59,1.21l-0.33,1.28l-0.69,0.3l-1.33,-0.06l-1.16,-1.86l-0.08,-0.89l-0.92,-1.47l-0.21,-1.0l-1.4,-1.63l-1.16,-0.54l-0.47,-0.77l0.1,-0.62l-0.69,-0.92l0.21,-1.99l0.5,-0.93l0.66,-2.98l-0.06,-1.22l-0.43,-0.29l-34.66,3.41Z", "name": "Mississippi"}, "US-SC": {"path": "M697.55,324.05l4.86,-2.69l1.02,-0.05l1.11,-1.38l3.93,-1.9l0.45,-0.88l0.63,0.22l22.71,-3.36l0.07,1.22l0.42,0.57l0.71,0.01l1.21,-1.3l2.82,2.54l0.46,2.48l0.55,0.52l19.74,-3.49l22.74,15.07l0.02,0.55l-2.48,2.18l-2.44,3.67l-2.41,5.72l-0.09,2.74l-1.08,-0.21l0.85,-2.72l-0.63,-0.23l-0.76,0.87l-0.56,1.38l-0.11,1.55l0.83,0.95l1.05,0.23l0.44,0.91l-0.75,0.08l-0.41,0.56l-0.87,0.02l-0.24,0.68l0.94,0.45l-1.1,1.13l-0.07,1.02l-1.34,0.63l-0.5,-0.61l-0.5,-0.08l-1.06,0.87l-0.56,1.77l0.43,0.87l-1.19,1.23l-0.61,1.44l-1.2,1.01l-0.9,-0.4l0.27,-0.6l-0.53,-0.74l-1.37,0.31l0.25,1.2l-0.52,0.03l0.05,0.76l2.02,1.01l-0.12,0.39l-0.88,0.94l-1.22,0.23l-0.24,0.51l0.33,0.45l-2.29,1.34l-1.42,-0.84l-0.56,0.11l-0.1,0.67l1.19,0.78l-1.54,1.57l-0.72,-0.75l-0.5,0.52l-0.0,0.74l-1.54,-0.37l-1.34,-0.84l-0.44,0.5l0.16,0.53l-1.73,0.17l-0.44,0.37l-0.06,0.78l2.07,0.05l-0.26,0.55l0.42,0.25l1.91,-0.15l0.11,0.22l-0.97,0.86l-0.32,0.78l0.57,0.49l0.94,-0.53l0.03,0.21l-1.12,1.09l-0.99,0.43l-0.21,-2.04l-0.69,-0.27l-0.22,-1.54l-0.88,-0.15l-0.3,0.58l0.86,2.69l-1.12,-0.66l-0.63,-1.0l-0.39,-1.76l-0.65,-0.21l-0.52,-0.63l-0.69,0.0l-0.27,0.6l0.84,1.02l0.01,0.68l1.11,1.83l-0.02,0.86l1.22,1.17l-0.62,0.35l0.03,0.98l-1.2,3.56l-1.51,-0.78l-1.52,0.26l-0.97,-0.68l-0.54,-1.03l-0.17,-2.93l-0.86,-0.75l-1.06,-2.47l-1.04,-0.95l-3.23,-1.33l-0.49,-2.65l-1.12,-2.17l-1.43,-1.58l-0.06,-1.07l-0.76,-1.21l-4.81,-1.69l-0.58,-1.27l-1.21,-0.37l0.02,-0.7l-0.53,-0.87l-0.87,0.0l-0.73,-0.61l0.03,-1.21l-0.66,-1.26l-2.7,-1.78l-2.16,-0.52l-2.36,-3.12l-3.93,-1.93l-1.22,-1.03l-0.83,-0.12l-1.04,-1.81l-0.51,-0.22l-0.91,-1.21l-1.18,-0.68l-0.99,-2.42l-1.54,-1.65l-1.02,-1.87l-1.06,-0.37l-1.93,0.37l-0.46,-0.16l-2.75,-2.19l-1.06,0.02l-2.23,-1.27l0.36,-2.22l2.6,-3.31l0.15,-1.07ZM750.36,375.19l0.73,-0.08l0.51,0.45l-1.23,1.9l0.28,-1.22l-0.3,-1.06Z", "name": "South Carolina"}, "US-RI": {"path": "M851.1,141.46l0.22,-0.46l-0.53,-2.22l-3.14,-10.0l5.61,-1.84l0.76,2.06l0.8,0.25l0.19,0.73l0.08,0.42l-0.77,0.25l0.03,0.29l0.51,1.45l0.59,0.5l-0.75,0.28l-0.3,0.6l0.87,0.97l-0.14,1.23l0.89,1.9l0.03,1.67l-0.27,0.71l-0.9,0.16l-3.59,2.35l-0.18,-1.31ZM855.89,131.53l0.26,0.1l0.01,0.1l-0.17,-0.08l-0.1,-0.12ZM857.28,132.21l0.25,0.54l-0.05,0.32l-0.15,0.01l-0.05,-0.87Z", "name": "Rhode Island"}, "US-AR": {"path": "M498.76,376.91l-1.42,-38.01l-4.48,-23.98l37.68,-2.58l39.02,-3.58l0.8,1.6l1.01,0.7l0.11,1.77l-0.77,0.57l-0.22,0.94l-1.42,0.93l-0.29,1.04l-0.83,0.54l-1.19,2.59l0.02,0.7l0.53,0.26l10.94,-1.46l0.86,0.93l-1.18,0.37l-0.52,0.96l0.25,0.49l0.84,0.41l-3.6,2.7l0.02,0.84l0.83,1.04l-0.6,1.15l0.62,0.97l-1.42,0.74l-0.11,1.44l-1.45,2.09l0.12,1.64l0.91,3.1l-0.15,0.27l-1.08,-0.01l-0.33,0.26l-0.51,1.73l-1.52,0.95l-0.04,0.51l0.79,0.91l0.05,0.65l-1.11,1.21l-2.02,1.13l-0.21,0.62l0.43,1.0l-0.19,0.27l-1.23,0.03l-0.42,0.67l-0.32,1.89l0.47,1.57l0.02,3.08l-1.27,1.09l-1.54,0.13l0.23,1.49l-0.21,0.48l-0.93,0.25l-0.59,1.77l-1.49,1.19l-0.02,0.93l1.39,0.76l-0.03,0.7l-1.23,0.3l-2.24,1.23l0.03,0.67l0.99,0.82l-0.45,1.14l0.53,1.38l-1.09,0.62l-1.9,2.57l0.52,0.7l1.0,0.49l0.01,0.58l-0.98,0.29l-0.42,0.64l0.51,0.84l1.63,1.01l0.06,1.77l-0.59,0.98l-0.09,0.84l1.34,0.79l0.5,2.17l-1.09,1.01l0.06,2.11l-51.45,4.07l-0.83,-11.53l-1.18,-0.85l-0.9,0.16l-0.83,-0.35l-0.93,0.39l-1.22,-0.33l-0.57,0.72l-0.47,0.01l-0.49,-0.48l-0.82,-0.15l-0.63,-1.0Z", "name": "Arkansas"}}, "height": 612.395412685768, "projection": {"type": "aea", "centralMeridian": -100.0}, "width": 900.0}); AdminLTE/plugins/jvectormap/jquery-jvectormap-world-mill-en.js 0000644 00000431671 15002261751 0020514 0 ustar 00 $.fn.vectorMap('addMap', 'world_mill_en',{"insets": [{"width": 900.0, "top": 0, "height": 440.7063107441331, "bbox": [{"y": -12671671.123330014, "x": -20004297.151525836}, {"y": 6930392.02513512, "x": 20026572.394749384}], "left": 0}], "paths": {"BD": {"path": "M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z", "name": "Bangladesh"}, "BE": {"path": "M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z", "name": "Belgium"}, "BF": {"path": "M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z", "name": "Burkina Faso"}, "BG": {"path": "M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z", "name": "Bulgaria"}, "BA": {"path": "M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z", "name": "Bosnia and Herzegovina"}, "BN": {"path": "M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z", "name": "Brunei"}, "BO": {"path": "M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z", "name": "Bolivia"}, "JP": {"path": "M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z", "name": "Japan"}, "BI": {"path": "M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z", "name": "Burundi"}, "BJ": {"path": "M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z", "name": "Benin"}, "BT": {"path": "M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z", "name": "Bhutan"}, "JM": {"path": "M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z", "name": "Jamaica"}, "BW": {"path": "M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z", "name": "Botswana"}, "BR": {"path": "M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z", "name": "Brazil"}, "BS": {"path": "M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z", "name": "The Bahamas"}, "BY": {"path": "M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z", "name": "Belarus"}, "BZ": {"path": "M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z", "name": "Belize"}, "RU": {"path": "M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z", "name": "Russia"}, "RW": {"path": "M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z", "name": "Rwanda"}, "RS": {"path": "M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z", "name": "Republic of Serbia"}, "LT": {"path": "M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z", "name": "Lithuania"}, "LU": {"path": "M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z", "name": "Luxembourg"}, "LR": {"path": "M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z", "name": "Liberia"}, "RO": {"path": "M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z", "name": "Romania"}, "GW": {"path": "M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z", "name": "Guinea Bissau"}, "GT": {"path": "M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z", "name": "Guatemala"}, "GR": {"path": "M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z", "name": "Greece"}, "GQ": {"path": "M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z", "name": "Equatorial Guinea"}, "GY": {"path": "M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z", "name": "Guyana"}, "GE": {"path": "M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z", "name": "Georgia"}, "GB": {"path": "M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z", "name": "United Kingdom"}, "GA": {"path": "M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z", "name": "Gabon"}, "GN": {"path": "M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z", "name": "Guinea"}, "GM": {"path": "M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z", "name": "Gambia"}, "GL": {"path": "M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z", "name": "Greenland"}, "KW": {"path": "M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z", "name": "Kuwait"}, "GH": {"path": "M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z", "name": "Ghana"}, "OM": {"path": "M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z", "name": "Oman"}, "_3": {"path": "M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z", "name": "Somaliland"}, "_2": {"path": "M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z", "name": "Western Sahara"}, "_1": {"path": "M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z", "name": "Kosovo"}, "_0": {"path": "M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z", "name": "Northern Cyprus"}, "JO": {"path": "M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z", "name": "Jordan"}, "HR": {"path": "M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z", "name": "Croatia"}, "HT": {"path": "M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z", "name": "Haiti"}, "HU": {"path": "M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z", "name": "Hungary"}, "HN": {"path": "M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z", "name": "Honduras"}, "PR": {"path": "M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z", "name": "Puerto Rico"}, "PS": {"path": "M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z", "name": "West Bank"}, "PT": {"path": "M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z", "name": "Portugal"}, "PY": {"path": "M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z", "name": "Paraguay"}, "PA": {"path": "M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z", "name": "Panama"}, "PG": {"path": "M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z", "name": "Papua New Guinea"}, "PE": {"path": "M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z", "name": "Peru"}, "PK": {"path": "M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z", "name": "Pakistan"}, "PH": {"path": "M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z", "name": "Philippines"}, "PL": {"path": "M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z", "name": "Poland"}, "ZM": {"path": "M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z", "name": "Zambia"}, "EE": {"path": "M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z", "name": "Estonia"}, "EG": {"path": "M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z", "name": "Egypt"}, "ZA": {"path": "M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z", "name": "South Africa"}, "EC": {"path": "M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z", "name": "Ecuador"}, "AL": {"path": "M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z", "name": "Albania"}, "AO": {"path": "M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z", "name": "Angola"}, "KZ": {"path": "M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z", "name": "Kazakhstan"}, "ET": {"path": "M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z", "name": "Ethiopia"}, "ZW": {"path": "M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z", "name": "Zimbabwe"}, "ES": {"path": "M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z", "name": "Spain"}, "ER": {"path": "M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z", "name": "Eritrea"}, "ME": {"path": "M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z", "name": "Montenegro"}, "MD": {"path": "M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z", "name": "Moldova"}, "MG": {"path": "M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z", "name": "Madagascar"}, "MA": {"path": "M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z", "name": "Morocco"}, "UZ": {"path": "M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z", "name": "Uzbekistan"}, "MM": {"path": "M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z", "name": "Myanmar"}, "ML": {"path": "M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z", "name": "Mali"}, "MN": {"path": "M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z", "name": "Mongolia"}, "MK": {"path": "M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z", "name": "Macedonia"}, "MW": {"path": "M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z", "name": "Malawi"}, "MR": {"path": "M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z", "name": "Mauritania"}, "UG": {"path": "M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z", "name": "Uganda"}, "MY": {"path": "M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z", "name": "Malaysia"}, "MX": {"path": "M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z", "name": "Mexico"}, "VU": {"path": "M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z", "name": "Vanuatu"}, "FR": {"path": "M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z", "name": "France"}, "FI": {"path": "M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z", "name": "Finland"}, "FJ": {"path": "M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z", "name": "Fiji"}, "FK": {"path": "M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z", "name": "Falkland Islands"}, "NI": {"path": "M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z", "name": "Nicaragua"}, "NL": {"path": "M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z", "name": "Netherlands"}, "NO": {"path": "M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z", "name": "Norway"}, "NA": {"path": "M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z", "name": "Namibia"}, "NC": {"path": "M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z", "name": "New Caledonia"}, "NE": {"path": "M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z", "name": "Niger"}, "NG": {"path": "M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z", "name": "Nigeria"}, "NZ": {"path": "M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z", "name": "New Zealand"}, "NP": {"path": "M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z", "name": "Nepal"}, "CI": {"path": "M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z", "name": "Ivory Coast"}, "CH": {"path": "M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z", "name": "Switzerland"}, "CO": {"path": "M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z", "name": "Colombia"}, "CN": {"path": "M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z", "name": "China"}, "CM": {"path": "M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z", "name": "Cameroon"}, "CL": {"path": "M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z", "name": "Chile"}, "CA": {"path": "M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z", "name": "Canada"}, "CG": {"path": "M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z", "name": "Republic of the Congo"}, "CF": {"path": "M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z", "name": "Central African Republic"}, "CD": {"path": "M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z", "name": "Democratic Republic of the Congo"}, "CZ": {"path": "M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z", "name": "Czech Republic"}, "CY": {"path": "M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z", "name": "Cyprus"}, "CR": {"path": "M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z", "name": "Costa Rica"}, "CU": {"path": "M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z", "name": "Cuba"}, "SZ": {"path": "M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z", "name": "Swaziland"}, "SY": {"path": "M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z", "name": "Syria"}, "KG": {"path": "M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z", "name": "Kyrgyzstan"}, "KE": {"path": "M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z", "name": "Kenya"}, "SS": {"path": "M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z", "name": "South Sudan"}, "SR": {"path": "M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z", "name": "Suriname"}, "KH": {"path": "M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z", "name": "Cambodia"}, "SV": {"path": "M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z", "name": "El Salvador"}, "SK": {"path": "M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z", "name": "Slovakia"}, "KR": {"path": "M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z", "name": "South Korea"}, "SI": {"path": "M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z", "name": "Slovenia"}, "KP": {"path": "M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z", "name": "North Korea"}, "SO": {"path": "M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z", "name": "Somalia"}, "SN": {"path": "M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z", "name": "Senegal"}, "SL": {"path": "M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z", "name": "Sierra Leone"}, "SB": {"path": "M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z", "name": "Solomon Islands"}, "SA": {"path": "M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z", "name": "Saudi Arabia"}, "SE": {"path": "M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z", "name": "Sweden"}, "SD": {"path": "M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z", "name": "Sudan"}, "DO": {"path": "M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z", "name": "Dominican Republic"}, "DJ": {"path": "M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z", "name": "Djibouti"}, "DK": {"path": "M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z", "name": "Denmark"}, "DE": {"path": "M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z", "name": "Germany"}, "YE": {"path": "M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z", "name": "Yemen"}, "AT": {"path": "M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z", "name": "Austria"}, "DZ": {"path": "M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z", "name": "Algeria"}, "US": {"path": "M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z", "name": "United States of America"}, "LV": {"path": "M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z", "name": "Latvia"}, "UY": {"path": "M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z", "name": "Uruguay"}, "LB": {"path": "M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z", "name": "Lebanon"}, "LA": {"path": "M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z", "name": "Laos"}, "TW": {"path": "M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z", "name": "Taiwan"}, "TT": {"path": "M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z", "name": "Trinidad and Tobago"}, "TR": {"path": "M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z", "name": "Turkey"}, "LK": {"path": "M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z", "name": "Sri Lanka"}, "TN": {"path": "M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z", "name": "Tunisia"}, "TL": {"path": "M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z", "name": "East Timor"}, "TM": {"path": "M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z", "name": "Turkmenistan"}, "TJ": {"path": "M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z", "name": "Tajikistan"}, "LS": {"path": "M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z", "name": "Lesotho"}, "TH": {"path": "M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z", "name": "Thailand"}, "TF": {"path": "M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z", "name": "French Southern and Antarctic Lands"}, "TG": {"path": "M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z", "name": "Togo"}, "TD": {"path": "M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z", "name": "Chad"}, "LY": {"path": "M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z", "name": "Libya"}, "AE": {"path": "M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z", "name": "United Arab Emirates"}, "VE": {"path": "M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z", "name": "Venezuela"}, "AF": {"path": "M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z", "name": "Afghanistan"}, "IQ": {"path": "M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z", "name": "Iraq"}, "IS": {"path": "M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z", "name": "Iceland"}, "IR": {"path": "M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z", "name": "Iran"}, "AM": {"path": "M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z", "name": "Armenia"}, "IT": {"path": "M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z", "name": "Italy"}, "VN": {"path": "M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z", "name": "Vietnam"}, "AR": {"path": "M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z", "name": "Argentina"}, "AU": {"path": "M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z", "name": "Australia"}, "IL": {"path": "M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z", "name": "Israel"}, "IN": {"path": "M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z", "name": "India"}, "TZ": {"path": "M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z", "name": "Tanzania"}, "AZ": {"path": "M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z", "name": "Azerbaijan"}, "IE": {"path": "M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z", "name": "Ireland"}, "ID": {"path": "M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z", "name": "Indonesia"}, "UA": {"path": "M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z", "name": "Ukraine"}, "QA": {"path": "M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z", "name": "Qatar"}, "MZ": {"path": "M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z", "name": "Mozambique"}}, "height": 440.7063107441331, "projection": {"type": "mill", "centralMeridian": 11.5}, "width": 900.0}); AdminLTE/plugins/jvectormap/jquery-jvectormap-1.2.2.css 0000644 00000001472 15002261751 0016636 0 ustar 00 .jvectormap-label { position: absolute; display: none; border: solid 1px #CDCDCD; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; background: #292929; color: white; font-size: 10px!important; padding: 3px; z-index: 9999; } .jvectormap-zoomin, .jvectormap-zoomout { position: absolute; top: 100%; margin-top: -25px; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; background: #d2d6de;/*rgba(0,0,0,0.4)*/; padding: 5px; color: #444; cursor: pointer; line-height: 10px; text-align: center; font-weight: bold; box-shadow: 0 1px 2px rgba(0,0,0,0.2); } .jvectormap-zoomin { left: 100%; margin-left: -50px; } .jvectormap-zoomout { left: 100%; margin-left: -30px; } AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.css 0000644 00000040170 15002261751 0021657 0 ustar 00 /* * Table styles */ table.dataTable { width: 100%; margin: 0 auto; clear: both; border-collapse: separate; border-spacing: 0; /* * Header and footer styles */ /* * Body styles */ } table.dataTable thead th, table.dataTable tfoot th { font-weight: bold; } table.dataTable thead th, table.dataTable thead td { padding: 10px 18px; } table.dataTable thead th:active, table.dataTable thead td:active { outline: none; } table.dataTable tfoot th, table.dataTable tfoot td { padding: 10px 18px 6px 18px; } table.dataTable tbody tr { background-color: #ffffff; } table.dataTable tbody tr.selected { background-color: #B0BED9; } table.dataTable tbody th, table.dataTable tbody td { padding: 8px 10px; } table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { border-top: 1px solid #ddd; } table.dataTable.row-border tbody tr:first-child th, table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, table.dataTable.display tbody tr:first-child td { border-top: none; } table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { border-top: 1px solid #ddd; border-right: 1px solid #ddd; } table.dataTable.cell-border tbody tr th:first-child, table.dataTable.cell-border tbody tr td:first-child { border-left: 1px solid #ddd; } table.dataTable.cell-border tbody tr:first-child th, table.dataTable.cell-border tbody tr:first-child td { border-top: none; } table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { background-color: #f9f9f9; } table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { background-color: #acbad4; } table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { background-color: #f6f6f6; } table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { background-color: #aab7d1; } table.dataTable.order-column tbody tr > .sorting_1, table.dataTable.order-column tbody tr > .sorting_2, table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, table.dataTable.display tbody tr > .sorting_2, table.dataTable.display tbody tr > .sorting_3 { background-color: #fafafa; } table.dataTable.order-column tbody tr.selected > .sorting_1, table.dataTable.order-column tbody tr.selected > .sorting_2, table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, table.dataTable.display tbody tr.selected > .sorting_2, table.dataTable.display tbody tr.selected > .sorting_3 { background-color: #acbad5; } table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { background-color: #f1f1f1; } table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { background-color: #f3f3f3; } table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { background-color: whitesmoke; } table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { background-color: #a6b4cd; } table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { background-color: #a8b5cf; } table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { background-color: #a9b7d1; } table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { background-color: #fafafa; } table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { background-color: #fcfcfc; } table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { background-color: #fefefe; } table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { background-color: #acbad5; } table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { background-color: #aebcd6; } table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { background-color: #afbdd8; } table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { background-color: #eaeaea; } table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { background-color: #ececec; } table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { background-color: #efefef; } table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { background-color: #a2aec7; } table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { background-color: #a3b0c9; } table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { background-color: #a5b2cb; } table.dataTable.no-footer { border-bottom: 1px solid #111; } table.dataTable.nowrap th, table.dataTable.nowrap td { white-space: nowrap; } table.dataTable.compact thead th, table.dataTable.compact thead td { padding: 4px 17px 4px 4px; } table.dataTable.compact tfoot th, table.dataTable.compact tfoot td { padding: 4px; } table.dataTable.compact tbody th, table.dataTable.compact tbody td { padding: 4px; } table.dataTable th.dt-left, table.dataTable td.dt-left { text-align: left; } table.dataTable th.dt-center, table.dataTable td.dt-center, table.dataTable td.dataTables_empty { text-align: center; } table.dataTable th.dt-right, table.dataTable td.dt-right { text-align: right; } table.dataTable th.dt-justify, table.dataTable td.dt-justify { text-align: justify; } table.dataTable th.dt-nowrap, table.dataTable td.dt-nowrap { white-space: nowrap; } table.dataTable thead th.dt-head-left, table.dataTable thead td.dt-head-left, table.dataTable tfoot th.dt-head-left, table.dataTable tfoot td.dt-head-left { text-align: left; } table.dataTable thead th.dt-head-center, table.dataTable thead td.dt-head-center, table.dataTable tfoot th.dt-head-center, table.dataTable tfoot td.dt-head-center { text-align: center; } table.dataTable thead th.dt-head-right, table.dataTable thead td.dt-head-right, table.dataTable tfoot th.dt-head-right, table.dataTable tfoot td.dt-head-right { text-align: right; } table.dataTable thead th.dt-head-justify, table.dataTable thead td.dt-head-justify, table.dataTable tfoot th.dt-head-justify, table.dataTable tfoot td.dt-head-justify { text-align: justify; } table.dataTable thead th.dt-head-nowrap, table.dataTable thead td.dt-head-nowrap, table.dataTable tfoot th.dt-head-nowrap, table.dataTable tfoot td.dt-head-nowrap { white-space: nowrap; } table.dataTable tbody th.dt-body-left, table.dataTable tbody td.dt-body-left { text-align: left; } table.dataTable tbody th.dt-body-center, table.dataTable tbody td.dt-body-center { text-align: center; } table.dataTable tbody th.dt-body-right, table.dataTable tbody td.dt-body-right { text-align: right; } table.dataTable tbody th.dt-body-justify, table.dataTable tbody td.dt-body-justify { text-align: justify; } table.dataTable tbody th.dt-body-nowrap, table.dataTable tbody td.dt-body-nowrap { white-space: nowrap; } table.dataTable, table.dataTable th, table.dataTable td { box-sizing: content-box; } /* * Control feature layout */ .dataTables_wrapper { position: relative; clear: both; *zoom: 1; zoom: 1; } .dataTables_wrapper .dataTables_length { float: left; } .dataTables_wrapper .dataTables_filter { float: right; text-align: right; } .dataTables_wrapper .dataTables_filter input { margin-left: 0.5em; } .dataTables_wrapper .dataTables_info { clear: both; float: left; padding-top: 0.755em; } .dataTables_wrapper .dataTables_paginate { float: right; text-align: right; padding-top: 0.25em; } .dataTables_wrapper .dataTables_paginate .paginate_button { box-sizing: border-box; display: inline-block; min-width: 1.5em; padding: 0.5em 1em; margin-left: 2px; text-align: center; text-decoration: none !important; cursor: pointer; *cursor: hand; color: #333 !important; border: 1px solid transparent; border-radius: 2px; } .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { color: #333 !important; border: 1px solid #979797; background-color: white; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); /* Chrome10+,Safari5.1+ */ background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); /* FF3.6+ */ background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); /* IE10+ */ background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); /* Opera 11.10+ */ background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); /* W3C */ } .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { cursor: default; color: #666 !important; border: 1px solid transparent; background: transparent; box-shadow: none; } .dataTables_wrapper .dataTables_paginate .paginate_button:hover { color: white !important; border: 1px solid #111; background-color: #585858; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */ background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */ background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */ background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */ background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */ } .dataTables_wrapper .dataTables_paginate .paginate_button:active { outline: none; background-color: #2b2b2b; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */ background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */ background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */ background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */ background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */ box-shadow: inset 0 0 3px #111; } .dataTables_wrapper .dataTables_paginate .ellipsis { padding: 0 1em; } .dataTables_wrapper .dataTables_processing { position: absolute; top: 50%; left: 50%; width: 100%; height: 40px; margin-left: -50%; margin-top: -25px; padding-top: 20px; text-align: center; font-size: 1.2em; background-color: white; background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); } .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { color: #333; } .dataTables_wrapper .dataTables_scroll { clear: both; } .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { *margin-top: -1px; -webkit-overflow-scrolling: touch; } .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { vertical-align: middle; } .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { height: 0; overflow: hidden; margin: 0 !important; padding: 0 !important; } .dataTables_wrapper.no-footer .dataTables_scrollBody { border-bottom: 1px solid #111; } .dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, .dataTables_wrapper.no-footer div.dataTables_scrollBody > table { border-bottom: none; } .dataTables_wrapper:after { visibility: hidden; display: block; content: ""; clear: both; height: 0; } @media screen and (max-width: 767px) { .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_paginate { float: none; text-align: center; } .dataTables_wrapper .dataTables_paginate { margin-top: 0.5em; } } @media screen and (max-width: 640px) { .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter { float: none; text-align: center; } .dataTables_wrapper .dataTables_filter { margin-top: 0.5em; } } table.dataTable thead th div.DataTables_sort_wrapper { position: relative; } table.dataTable thead th div.DataTables_sort_wrapper span { position: absolute; top: 50%; margin-top: -8px; right: -18px; } table.dataTable thead th.ui-state-default, table.dataTable tfoot th.ui-state-default { border-left-width: 0; } table.dataTable thead th.ui-state-default:first-child, table.dataTable tfoot th.ui-state-default:first-child { border-left-width: 1px; } /* * Control feature layout */ .dataTables_wrapper .dataTables_paginate .fg-button { box-sizing: border-box; display: inline-block; min-width: 1.5em; padding: 0.5em; margin-left: 2px; text-align: center; text-decoration: none !important; cursor: pointer; *cursor: hand; border: 1px solid transparent; } .dataTables_wrapper .dataTables_paginate .fg-button:active { outline: none; } .dataTables_wrapper .dataTables_paginate .fg-button:first-child { border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .dataTables_wrapper .dataTables_paginate .fg-button:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .dataTables_wrapper .ui-widget-header { font-weight: normal; } .dataTables_wrapper .ui-toolbar { padding: 8px; } .dataTables_wrapper.no-footer .dataTables_scrollBody { border-bottom: none; } .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { color: inherit; } AdminLTE/plugins/DataTables/DataTables-1.10.16/css/jquery.dataTables.min.css 0000644 00000033114 15002261751 0022103 0 ustar 00 table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.semanticui.css 0000644 00000005571 15002261751 0022151 0 ustar 00 /* * Styling for DataTables with Semantic UI */ table.dataTable.table { margin: 0; } table.dataTable.table thead th, table.dataTable.table thead td { position: relative; } table.dataTable.table thead th.sorting, table.dataTable.table thead th.sorting_asc, table.dataTable.table thead th.sorting_desc, table.dataTable.table thead td.sorting, table.dataTable.table thead td.sorting_asc, table.dataTable.table thead td.sorting_desc { padding-right: 20px; } table.dataTable.table thead th.sorting:after, table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead th.sorting_desc:after, table.dataTable.table thead td.sorting:after, table.dataTable.table thead td.sorting_asc:after, table.dataTable.table thead td.sorting_desc:after { position: absolute; top: 12px; right: 8px; display: block; font-family: Icons; } table.dataTable.table thead th.sorting:after, table.dataTable.table thead td.sorting:after { content: "\f0dc"; color: #ddd; font-size: 0.8em; } table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead td.sorting_asc:after { content: "\f0de"; } table.dataTable.table thead th.sorting_desc:after, table.dataTable.table thead td.sorting_desc:after { content: "\f0dd"; } table.dataTable.table td, table.dataTable.table th { -webkit-box-sizing: content-box; box-sizing: content-box; } table.dataTable.table td.dataTables_empty, table.dataTable.table th.dataTables_empty { text-align: center; } table.dataTable.table.nowrap th, table.dataTable.table.nowrap td { white-space: nowrap; } div.dataTables_wrapper div.dataTables_length select { vertical-align: middle; min-height: 2.7142em; } div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown { min-width: 0; } div.dataTables_wrapper div.dataTables_filter input { margin-left: 0.5em; } div.dataTables_wrapper div.dataTables_info { padding-top: 13px; white-space: nowrap; } div.dataTables_wrapper div.dataTables_processing { position: absolute; top: 50%; left: 50%; width: 200px; margin-left: -100px; text-align: center; } div.dataTables_wrapper div.row.dt-table { padding: 0; } div.dataTables_wrapper div.dataTables_scrollHead table.dataTable { border-bottom-right-radius: 0; border-bottom-left-radius: 0; border-bottom: none; } div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after, div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after, div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after { display: none; } div.dataTables_wrapper div.dataTables_scrollBody table.dataTable { border-radius: 0; border-top: none; border-bottom-width: 0; } div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer { border-bottom-width: 1px; } div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable { border-top-right-radius: 0; border-top-left-radius: 0; border-top: none; } AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.foundation.min.css 0000644 00000005155 15002261751 0022736 0 ustar 00 table.dataTable{clear:both;margin:0.5em 0 !important;max-width:none !important;width:100%}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper{position:relative}div.dataTables_wrapper div.dataTables_length label{float:left;text-align:left;margin-bottom:0}div.dataTables_wrapper div.dataTables_length select{width:75px;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter label{float:right;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter input{display:inline-block !important;width:auto !important;margin-bottom:0;margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:2px}div.dataTables_wrapper div.dataTables_paginate{float:right;margin:0}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1rem 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:1.5rem}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}div.dataTables_scrollHead table{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none} AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.min.css 0000644 00000011652 15002261751 0022670 0 ustar 00 table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.bootstrap4.css 0000644 00000012744 15002261751 0022111 0 ustar 00 table.dataTable { clear: both; margin-top: 6px !important; margin-bottom: 6px !important; max-width: none !important; border-collapse: separate !important; } table.dataTable td, table.dataTable th { -webkit-box-sizing: content-box; box-sizing: content-box; } table.dataTable td.dataTables_empty, table.dataTable th.dataTables_empty { text-align: center; } table.dataTable.nowrap th, table.dataTable.nowrap td { white-space: nowrap; } div.dataTables_wrapper div.dataTables_length label { font-weight: normal; text-align: left; white-space: nowrap; } div.dataTables_wrapper div.dataTables_length select { width: 75px; display: inline-block; } div.dataTables_wrapper div.dataTables_filter { text-align: right; } div.dataTables_wrapper div.dataTables_filter label { font-weight: normal; white-space: nowrap; text-align: left; } div.dataTables_wrapper div.dataTables_filter input { margin-left: 0.5em; display: inline-block; width: auto; } div.dataTables_wrapper div.dataTables_info { padding-top: 0.85em; white-space: nowrap; } div.dataTables_wrapper div.dataTables_paginate { margin: 0; white-space: nowrap; text-align: right; } div.dataTables_wrapper div.dataTables_paginate ul.pagination { margin: 2px 0; white-space: nowrap; justify-content: flex-end; } div.dataTables_wrapper div.dataTables_processing { position: absolute; top: 50%; left: 50%; width: 200px; margin-left: -100px; margin-top: -26px; text-align: center; padding: 1em 0; } table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > td.sorting_asc, table.dataTable thead > tr > td.sorting_desc, table.dataTable thead > tr > td.sorting { padding-right: 30px; } table.dataTable thead > tr > th:active, table.dataTable thead > tr > td:active { outline: none; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { cursor: pointer; position: relative; } table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_asc:after, table.dataTable thead .sorting_desc:before, table.dataTable thead .sorting_desc:after, table.dataTable thead .sorting_asc_disabled:before, table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:before, table.dataTable thead .sorting_desc_disabled:after { position: absolute; bottom: 0.9em; display: block; opacity: 0.3; } table.dataTable thead .sorting:before, table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_desc:before, table.dataTable thead .sorting_asc_disabled:before, table.dataTable thead .sorting_desc_disabled:before { right: 1em; content: "\2191"; } table.dataTable thead .sorting:after, table.dataTable thead .sorting_asc:after, table.dataTable thead .sorting_desc:after, table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:after { right: 0.5em; content: "\2193"; } table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_desc:after { opacity: 1; } table.dataTable thead .sorting_asc_disabled:before, table.dataTable thead .sorting_desc_disabled:after { opacity: 0; } div.dataTables_scrollHead table.dataTable { margin-bottom: 0 !important; } div.dataTables_scrollBody table { border-top: none; margin-top: 0 !important; margin-bottom: 0 !important; } div.dataTables_scrollBody table thead .sorting:after, div.dataTables_scrollBody table thead .sorting_asc:after, div.dataTables_scrollBody table thead .sorting_desc:after { display: none; } div.dataTables_scrollBody table tbody tr:first-child th, div.dataTables_scrollBody table tbody tr:first-child td { border-top: none; } div.dataTables_scrollFoot > .dataTables_scrollFootInner { box-sizing: content-box; } div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { margin-top: 0 !important; border-top: none; } @media screen and (max-width: 767px) { div.dataTables_wrapper div.dataTables_length, div.dataTables_wrapper div.dataTables_filter, div.dataTables_wrapper div.dataTables_info, div.dataTables_wrapper div.dataTables_paginate { text-align: center; } } table.dataTable.table-sm > thead > tr > th { padding-right: 20px; } table.dataTable.table-sm .sorting:before, table.dataTable.table-sm .sorting_asc:before, table.dataTable.table-sm .sorting_desc:before { top: 5px; right: 0.85em; } table.dataTable.table-sm .sorting:after, table.dataTable.table-sm .sorting_asc:after, table.dataTable.table-sm .sorting_desc:after { top: 5px; } table.table-bordered.dataTable th, table.table-bordered.dataTable td { border-left-width: 0; } table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable td:last-child, table.table-bordered.dataTable td:last-child { border-right-width: 0; } table.table-bordered.dataTable tbody th, table.table-bordered.dataTable tbody td { border-bottom-width: 0; } div.dataTables_scrollHead table.table-bordered { border-bottom-width: 0; } div.table-responsive > div.dataTables_wrapper > div.row { margin: 0; } div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { padding-left: 0; } div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { padding-right: 0; } AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.css 0000644 00000011514 15002261751 0022017 0 ustar 00 table.dataTable { clear: both; margin-top: 6px !important; margin-bottom: 6px !important; max-width: none !important; border-collapse: separate !important; } table.dataTable td, table.dataTable th { -webkit-box-sizing: content-box; box-sizing: content-box; } table.dataTable td.dataTables_empty, table.dataTable th.dataTables_empty { text-align: center; } table.dataTable.nowrap th, table.dataTable.nowrap td { white-space: nowrap; } div.dataTables_wrapper div.dataTables_length label { font-weight: normal; text-align: left; white-space: nowrap; } div.dataTables_wrapper div.dataTables_length select { width: 75px; display: inline-block; } div.dataTables_wrapper div.dataTables_filter { text-align: right; } div.dataTables_wrapper div.dataTables_filter label { font-weight: normal; white-space: nowrap; text-align: left; } div.dataTables_wrapper div.dataTables_filter input { margin-left: 0.5em; display: inline-block; width: auto; } div.dataTables_wrapper div.dataTables_info { padding-top: 8px; white-space: nowrap; } div.dataTables_wrapper div.dataTables_paginate { margin: 0; white-space: nowrap; text-align: right; } div.dataTables_wrapper div.dataTables_paginate ul.pagination { margin: 2px 0; white-space: nowrap; } div.dataTables_wrapper div.dataTables_processing { position: absolute; top: 50%; left: 50%; width: 200px; margin-left: -100px; margin-top: -26px; text-align: center; padding: 1em 0; } table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > td.sorting_asc, table.dataTable thead > tr > td.sorting_desc, table.dataTable thead > tr > td.sorting { padding-right: 30px; } table.dataTable thead > tr > th:active, table.dataTable thead > tr > td:active { outline: none; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { cursor: pointer; position: relative; } table.dataTable thead .sorting:after, table.dataTable thead .sorting_asc:after, table.dataTable thead .sorting_desc:after, table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:after { position: absolute; bottom: 8px; right: 8px; display: block; font-family: 'Glyphicons Halflings'; opacity: 0.5; } table.dataTable thead .sorting:after { opacity: 0.2; content: "\e150"; /* sort */ } table.dataTable thead .sorting_asc:after { content: "\e155"; /* sort-by-attributes */ } table.dataTable thead .sorting_desc:after { content: "\e156"; /* sort-by-attributes-alt */ } table.dataTable thead .sorting_asc_disabled:after, table.dataTable thead .sorting_desc_disabled:after { color: #eee; } div.dataTables_scrollHead table.dataTable { margin-bottom: 0 !important; } div.dataTables_scrollBody > table { border-top: none; margin-top: 0 !important; margin-bottom: 0 !important; } div.dataTables_scrollBody > table > thead .sorting:after, div.dataTables_scrollBody > table > thead .sorting_asc:after, div.dataTables_scrollBody > table > thead .sorting_desc:after { display: none; } div.dataTables_scrollBody > table > tbody > tr:first-child > th, div.dataTables_scrollBody > table > tbody > tr:first-child > td { border-top: none; } div.dataTables_scrollFoot > .dataTables_scrollFootInner { box-sizing: content-box; } div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { margin-top: 0 !important; border-top: none; } @media screen and (max-width: 767px) { div.dataTables_wrapper div.dataTables_length, div.dataTables_wrapper div.dataTables_filter, div.dataTables_wrapper div.dataTables_info, div.dataTables_wrapper div.dataTables_paginate { text-align: center; } } table.dataTable.table-condensed > thead > tr > th { padding-right: 20px; } table.dataTable.table-condensed .sorting:after, table.dataTable.table-condensed .sorting_asc:after, table.dataTable.table-condensed .sorting_desc:after { top: 6px; right: 6px; } table.table-bordered.dataTable th, table.table-bordered.dataTable td { border-left-width: 0; } table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable td:last-child, table.table-bordered.dataTable td:last-child { border-right-width: 0; } table.table-bordered.dataTable tbody th, table.table-bordered.dataTable tbody td { border-bottom-width: 0; } div.dataTables_scrollHead table.table-bordered { border-bottom-width: 0; } div.table-responsive > div.dataTables_wrapper > div.row { margin: 0; } div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { padding-left: 0; } div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { padding-right: 0; } AdminLTE/plugins/DataTables/DataTables-1.10.16/css/jquery.dataTables.css 0000644 00000036670 15002261751 0021333 0 ustar 00 /* * Table styles */ table.dataTable { width: 100%; margin: 0 auto; clear: both; border-collapse: separate; border-spacing: 0; /* * Header and footer styles */ /* * Body styles */ } table.dataTable thead th, table.dataTable tfoot th { font-weight: bold; } table.dataTable thead th, table.dataTable thead td { padding: 10px 18px; border-bottom: 1px solid #111; } table.dataTable thead th:active, table.dataTable thead td:active { outline: none; } table.dataTable tfoot th, table.dataTable tfoot td { padding: 10px 18px 6px 18px; border-top: 1px solid #111; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { cursor: pointer; *cursor: hand; background-repeat: no-repeat; background-position: center right; } table.dataTable thead .sorting { background-image: url("../images/sort_both.png"); } table.dataTable thead .sorting_asc { background-image: url("../images/sort_asc.png"); } table.dataTable thead .sorting_desc { background-image: url("../images/sort_desc.png"); } table.dataTable thead .sorting_asc_disabled { background-image: url("../images/sort_asc_disabled.png"); } table.dataTable thead .sorting_desc_disabled { background-image: url("../images/sort_desc_disabled.png"); } table.dataTable tbody tr { background-color: #ffffff; } table.dataTable tbody tr.selected { background-color: #B0BED9; } table.dataTable tbody th, table.dataTable tbody td { padding: 8px 10px; } table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { border-top: 1px solid #ddd; } table.dataTable.row-border tbody tr:first-child th, table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, table.dataTable.display tbody tr:first-child td { border-top: none; } table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { border-top: 1px solid #ddd; border-right: 1px solid #ddd; } table.dataTable.cell-border tbody tr th:first-child, table.dataTable.cell-border tbody tr td:first-child { border-left: 1px solid #ddd; } table.dataTable.cell-border tbody tr:first-child th, table.dataTable.cell-border tbody tr:first-child td { border-top: none; } table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { background-color: #f9f9f9; } table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { background-color: #acbad4; } table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { background-color: #f6f6f6; } table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { background-color: #aab7d1; } table.dataTable.order-column tbody tr > .sorting_1, table.dataTable.order-column tbody tr > .sorting_2, table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, table.dataTable.display tbody tr > .sorting_2, table.dataTable.display tbody tr > .sorting_3 { background-color: #fafafa; } table.dataTable.order-column tbody tr.selected > .sorting_1, table.dataTable.order-column tbody tr.selected > .sorting_2, table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, table.dataTable.display tbody tr.selected > .sorting_2, table.dataTable.display tbody tr.selected > .sorting_3 { background-color: #acbad5; } table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { background-color: #f1f1f1; } table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { background-color: #f3f3f3; } table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { background-color: whitesmoke; } table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { background-color: #a6b4cd; } table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { background-color: #a8b5cf; } table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { background-color: #a9b7d1; } table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { background-color: #fafafa; } table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { background-color: #fcfcfc; } table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { background-color: #fefefe; } table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { background-color: #acbad5; } table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { background-color: #aebcd6; } table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { background-color: #afbdd8; } table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { background-color: #eaeaea; } table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { background-color: #ececec; } table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { background-color: #efefef; } table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { background-color: #a2aec7; } table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { background-color: #a3b0c9; } table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { background-color: #a5b2cb; } table.dataTable.no-footer { border-bottom: 1px solid #111; } table.dataTable.nowrap th, table.dataTable.nowrap td { white-space: nowrap; } table.dataTable.compact thead th, table.dataTable.compact thead td { padding: 4px 17px 4px 4px; } table.dataTable.compact tfoot th, table.dataTable.compact tfoot td { padding: 4px; } table.dataTable.compact tbody th, table.dataTable.compact tbody td { padding: 4px; } table.dataTable th.dt-left, table.dataTable td.dt-left { text-align: left; } table.dataTable th.dt-center, table.dataTable td.dt-center, table.dataTable td.dataTables_empty { text-align: center; } table.dataTable th.dt-right, table.dataTable td.dt-right { text-align: right; } table.dataTable th.dt-justify, table.dataTable td.dt-justify { text-align: justify; } table.dataTable th.dt-nowrap, table.dataTable td.dt-nowrap { white-space: nowrap; } table.dataTable thead th.dt-head-left, table.dataTable thead td.dt-head-left, table.dataTable tfoot th.dt-head-left, table.dataTable tfoot td.dt-head-left { text-align: left; } table.dataTable thead th.dt-head-center, table.dataTable thead td.dt-head-center, table.dataTable tfoot th.dt-head-center, table.dataTable tfoot td.dt-head-center { text-align: center; } table.dataTable thead th.dt-head-right, table.dataTable thead td.dt-head-right, table.dataTable tfoot th.dt-head-right, table.dataTable tfoot td.dt-head-right { text-align: right; } table.dataTable thead th.dt-head-justify, table.dataTable thead td.dt-head-justify, table.dataTable tfoot th.dt-head-justify, table.dataTable tfoot td.dt-head-justify { text-align: justify; } table.dataTable thead th.dt-head-nowrap, table.dataTable thead td.dt-head-nowrap, table.dataTable tfoot th.dt-head-nowrap, table.dataTable tfoot td.dt-head-nowrap { white-space: nowrap; } table.dataTable tbody th.dt-body-left, table.dataTable tbody td.dt-body-left { text-align: left; } table.dataTable tbody th.dt-body-center, table.dataTable tbody td.dt-body-center { text-align: center; } table.dataTable tbody th.dt-body-right, table.dataTable tbody td.dt-body-right { text-align: right; } table.dataTable tbody th.dt-body-justify, table.dataTable tbody td.dt-body-justify { text-align: justify; } table.dataTable tbody th.dt-body-nowrap, table.dataTable tbody td.dt-body-nowrap { white-space: nowrap; } table.dataTable, table.dataTable th, table.dataTable td { box-sizing: content-box; } /* * Control feature layout */ .dataTables_wrapper { position: relative; clear: both; *zoom: 1; zoom: 1; } .dataTables_wrapper .dataTables_length { float: left; } .dataTables_wrapper .dataTables_filter { float: right; text-align: right; } .dataTables_wrapper .dataTables_filter input { margin-left: 0.5em; } .dataTables_wrapper .dataTables_info { clear: both; float: left; padding-top: 0.755em; } .dataTables_wrapper .dataTables_paginate { float: right; text-align: right; padding-top: 0.25em; } .dataTables_wrapper .dataTables_paginate .paginate_button { box-sizing: border-box; display: inline-block; min-width: 1.5em; padding: 0.5em 1em; margin-left: 2px; text-align: center; text-decoration: none !important; cursor: pointer; *cursor: hand; color: #333 !important; border: 1px solid transparent; border-radius: 2px; } .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { color: #333 !important; border: 1px solid #979797; background-color: white; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); /* Chrome10+,Safari5.1+ */ background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); /* FF3.6+ */ background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); /* IE10+ */ background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); /* Opera 11.10+ */ background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); /* W3C */ } .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { cursor: default; color: #666 !important; border: 1px solid transparent; background: transparent; box-shadow: none; } .dataTables_wrapper .dataTables_paginate .paginate_button:hover { color: white !important; border: 1px solid #111; background-color: #585858; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */ background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */ background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */ background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */ background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */ } .dataTables_wrapper .dataTables_paginate .paginate_button:active { outline: none; background-color: #2b2b2b; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */ background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */ background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */ background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */ background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */ box-shadow: inset 0 0 3px #111; } .dataTables_wrapper .dataTables_paginate .ellipsis { padding: 0 1em; } .dataTables_wrapper .dataTables_processing { position: absolute; top: 50%; left: 50%; width: 100%; height: 40px; margin-left: -50%; margin-top: -25px; padding-top: 20px; text-align: center; font-size: 1.2em; background-color: white; background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); } .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { color: #333; } .dataTables_wrapper .dataTables_scroll { clear: both; } .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { *margin-top: -1px; -webkit-overflow-scrolling: touch; } .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { vertical-align: middle; } .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { height: 0; overflow: hidden; margin: 0 !important; padding: 0 !important; } .dataTables_wrapper.no-footer .dataTables_scrollBody { border-bottom: 1px solid #111; } .dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, .dataTables_wrapper.no-footer div.dataTables_scrollBody > table { border-bottom: none; } .dataTables_wrapper:after { visibility: hidden; display: block; content: ""; clear: both; height: 0; } @media screen and (max-width: 767px) { .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_paginate { float: none; text-align: center; } .dataTables_wrapper .dataTables_paginate { margin-top: 0.5em; } } @media screen and (max-width: 640px) { .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter { float: none; text-align: center; } .dataTables_wrapper .dataTables_filter { margin-top: 0.5em; } } AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.bootstrap.min.css 0000644 00000010305 15002261751 0022576 0 ustar 00 table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.semanticui.min.css 0000644 00000005074 15002261751 0022731 0 ustar 00 table.dataTable.table{margin:0}table.dataTable.table thead th,table.dataTable.table thead td{position:relative}table.dataTable.table thead th.sorting,table.dataTable.table thead th.sorting_asc,table.dataTable.table thead th.sorting_desc,table.dataTable.table thead td.sorting,table.dataTable.table thead td.sorting_asc,table.dataTable.table thead td.sorting_desc{padding-right:20px}table.dataTable.table thead th.sorting:after,table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting:after,table.dataTable.table thead td.sorting_asc:after,table.dataTable.table thead td.sorting_desc:after{position:absolute;top:12px;right:8px;display:block;font-family:Icons}table.dataTable.table thead th.sorting:after,table.dataTable.table thead td.sorting:after{content:"\f0dc";color:#ddd;font-size:0.8em}table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead td.sorting_asc:after{content:"\f0de"}table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting_desc:after{content:"\f0dd"}table.dataTable.table td,table.dataTable.table th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable.table td.dataTables_empty,table.dataTable.table th.dataTables_empty{text-align:center}table.dataTable.table.nowrap th,table.dataTable.table.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{vertical-align:middle;min-height:2.7142em}div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown{min-width:0}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:13px;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;text-align:center}div.dataTables_wrapper div.row.dt-table{padding:0}div.dataTables_wrapper div.dataTables_scrollHead table.dataTable{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none}div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after{display:none}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable{border-radius:0;border-top:none;border-bottom-width:0}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer{border-bottom-width:1px}div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable{border-top-right-radius:0;border-top-left-radius:0;border-top:none} AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.foundation.css 0000644 00000005707 15002261751 0022157 0 ustar 00 table.dataTable { clear: both; margin: 0.5em 0 !important; max-width: none !important; width: 100%; } table.dataTable td, table.dataTable th { -webkit-box-sizing: content-box; box-sizing: content-box; } table.dataTable td.dataTables_empty, table.dataTable th.dataTables_empty { text-align: center; } table.dataTable.nowrap th, table.dataTable.nowrap td { white-space: nowrap; } div.dataTables_wrapper { position: relative; } div.dataTables_wrapper div.dataTables_length label { float: left; text-align: left; margin-bottom: 0; } div.dataTables_wrapper div.dataTables_length select { width: 75px; margin-bottom: 0; } div.dataTables_wrapper div.dataTables_filter label { float: right; margin-bottom: 0; } div.dataTables_wrapper div.dataTables_filter input { display: inline-block !important; width: auto !important; margin-bottom: 0; margin-left: 0.5em; } div.dataTables_wrapper div.dataTables_info { padding-top: 2px; } div.dataTables_wrapper div.dataTables_paginate { float: right; margin: 0; } div.dataTables_wrapper div.dataTables_processing { position: absolute; top: 50%; left: 50%; width: 200px; margin-left: -100px; margin-top: -26px; text-align: center; padding: 1rem 0; } table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > td.sorting_asc, table.dataTable thead > tr > td.sorting_desc, table.dataTable thead > tr > td.sorting { padding-right: 1.5rem; } table.dataTable thead > tr > th:active, table.dataTable thead > tr > td:active { outline: none; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { cursor: pointer; } table.dataTable thead .sorting, table.dataTable thead .sorting_asc, table.dataTable thead .sorting_desc, table.dataTable thead .sorting_asc_disabled, table.dataTable thead .sorting_desc_disabled { background-repeat: no-repeat; background-position: center right; } table.dataTable thead .sorting { background-image: url("../images/sort_both.png"); } table.dataTable thead .sorting_asc { background-image: url("../images/sort_asc.png"); } table.dataTable thead .sorting_desc { background-image: url("../images/sort_desc.png"); } table.dataTable thead .sorting_asc_disabled { background-image: url("../images/sort_asc_disabled.png"); } table.dataTable thead .sorting_desc_disabled { background-image: url("../images/sort_desc_disabled.png"); } div.dataTables_scrollHead table { margin-bottom: 0 !important; } div.dataTables_scrollBody table { border-top: none; margin-top: 0 !important; margin-bottom: 0 !important; } div.dataTables_scrollBody table tbody tr:first-child th, div.dataTables_scrollBody table tbody tr:first-child td { border-top: none; } div.dataTables_scrollFoot table { margin-top: 0 !important; border-top: none; } AdminLTE/plugins/DataTables/DataTables-1.10.16/css/dataTables.jqueryui.min.css 0000644 00000034224 15002261751 0022444 0 ustar 00 table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable thead th.ui-state-default,table.dataTable tfoot th.ui-state-default{border-left-width:0}table.dataTable thead th.ui-state-default:first-child,table.dataTable tfoot th.ui-state-default:first-child{border-left-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:active{outline:none}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:normal}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit} AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.bootstrap4.min.js 0000644 00000004026 15002261751 0022335 0 ustar 00 /*! DataTables Bootstrap 3 integration ©2011-2015 SpryMedia Ltd - datatables.net/license */ (function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>", renderer:"bootstrap"});b.extend(f.ext.classes,{sWrapper:"dataTables_wrapper container-fluid dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&& o.page()!=a.data.action&&o.page(a.data.action).draw("page")};l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="…";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",{"class":t.sPageButton+" "+g,id:0===r&& "string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#","aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex,"class":"page-link"}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f}); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.bootstrap4.js 0000644 00000011106 15002261751 0021550 0 ustar 00 /*! DataTables Bootstrap 3 integration * ©2011-2015 SpryMedia Ltd - datatables.net/license */ /** * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and * DataTables 1.10 or newer. * * This file sets the defaults and adds options to DataTables to style its * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap * for further information. */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { // Require DataTables, which attaches to jQuery, including // jQuery if needed and have a $ property so we can access the // jQuery object that is used $ = require('datatables.net')(root, $).$; } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; /* Set the defaults for DataTables initialisation */ $.extend( true, DataTable.defaults, { dom: "<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" + "<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>", renderer: 'bootstrap' } ); /* Default class modification */ $.extend( DataTable.ext.classes, { sWrapper: "dataTables_wrapper container-fluid dt-bootstrap4", sFilterInput: "form-control form-control-sm", sLengthSelect: "form-control form-control-sm", sProcessing: "dataTables_processing card", sPageButton: "paginate_button page-item" } ); /* Bootstrap paging button renderer */ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { var api = new DataTable.Api( settings ); var classes = settings.oClasses; var lang = settings.oLanguage.oPaginate; var aria = settings.oLanguage.oAria.paginate || {}; var btnDisplay, btnClass, counter=0; var attach = function( container, buttons ) { var i, ien, node, button; var clickHandler = function ( e ) { e.preventDefault(); if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) { api.page( e.data.action ).draw( 'page' ); } }; for ( i=0, ien=buttons.length ; i<ien ; i++ ) { button = buttons[i]; if ( $.isArray( button ) ) { attach( container, button ); } else { btnDisplay = ''; btnClass = ''; switch ( button ) { case 'ellipsis': btnDisplay = '…'; btnClass = 'disabled'; break; case 'first': btnDisplay = lang.sFirst; btnClass = button + (page > 0 ? '' : ' disabled'); break; case 'previous': btnDisplay = lang.sPrevious; btnClass = button + (page > 0 ? '' : ' disabled'); break; case 'next': btnDisplay = lang.sNext; btnClass = button + (page < pages-1 ? '' : ' disabled'); break; case 'last': btnDisplay = lang.sLast; btnClass = button + (page < pages-1 ? '' : ' disabled'); break; default: btnDisplay = button + 1; btnClass = page === button ? 'active' : ''; break; } if ( btnDisplay ) { node = $('<li>', { 'class': classes.sPageButton+' '+btnClass, 'id': idx === 0 && typeof button === 'string' ? settings.sTableId +'_'+ button : null } ) .append( $('<a>', { 'href': '#', 'aria-controls': settings.sTableId, 'aria-label': aria[ button ], 'data-dt-idx': counter, 'tabindex': settings.iTabIndex, 'class': 'page-link' } ) .html( btnDisplay ) ) .appendTo( container ); settings.oApi._fnBindAction( node, {action: button}, clickHandler ); counter++; } } } }; // IE9 throws an 'unknown error' if document.activeElement is used // inside an iframe or frame. var activeEl; try { // Because this approach is destroying and recreating the paging // elements, focus is lost on the select button which is bad for // accessibility. So we want to restore focus once the draw has // completed activeEl = $(host).find(document.activeElement).data('dt-idx'); } catch (e) {} attach( $(host).empty().html('<ul class="pagination"/>').children('ul'), buttons ); if ( activeEl !== undefined ) { $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); } }; return DataTable; })); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.bootstrap.js 0000644 00000010717 15002261751 0021473 0 ustar 00 /*! DataTables Bootstrap 3 integration * ©2011-2015 SpryMedia Ltd - datatables.net/license */ /** * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and * DataTables 1.10 or newer. * * This file sets the defaults and adds options to DataTables to style its * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap * for further information. */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { // Require DataTables, which attaches to jQuery, including // jQuery if needed and have a $ property so we can access the // jQuery object that is used $ = require('datatables.net')(root, $).$; } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; /* Set the defaults for DataTables initialisation */ $.extend( true, DataTable.defaults, { dom: "<'row'<'col-sm-6'l><'col-sm-6'f>>" + "<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-5'i><'col-sm-7'p>>", renderer: 'bootstrap' } ); /* Default class modification */ $.extend( DataTable.ext.classes, { sWrapper: "dataTables_wrapper form-inline dt-bootstrap", sFilterInput: "form-control input-sm", sLengthSelect: "form-control input-sm", sProcessing: "dataTables_processing panel panel-default" } ); /* Bootstrap paging button renderer */ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { var api = new DataTable.Api( settings ); var classes = settings.oClasses; var lang = settings.oLanguage.oPaginate; var aria = settings.oLanguage.oAria.paginate || {}; var btnDisplay, btnClass, counter=0; var attach = function( container, buttons ) { var i, ien, node, button; var clickHandler = function ( e ) { e.preventDefault(); if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) { api.page( e.data.action ).draw( 'page' ); } }; for ( i=0, ien=buttons.length ; i<ien ; i++ ) { button = buttons[i]; if ( $.isArray( button ) ) { attach( container, button ); } else { btnDisplay = ''; btnClass = ''; switch ( button ) { case 'ellipsis': btnDisplay = '…'; btnClass = 'disabled'; break; case 'first': btnDisplay = lang.sFirst; btnClass = button + (page > 0 ? '' : ' disabled'); break; case 'previous': btnDisplay = lang.sPrevious; btnClass = button + (page > 0 ? '' : ' disabled'); break; case 'next': btnDisplay = lang.sNext; btnClass = button + (page < pages-1 ? '' : ' disabled'); break; case 'last': btnDisplay = lang.sLast; btnClass = button + (page < pages-1 ? '' : ' disabled'); break; default: btnDisplay = button + 1; btnClass = page === button ? 'active' : ''; break; } if ( btnDisplay ) { node = $('<li>', { 'class': classes.sPageButton+' '+btnClass, 'id': idx === 0 && typeof button === 'string' ? settings.sTableId +'_'+ button : null } ) .append( $('<a>', { 'href': '#', 'aria-controls': settings.sTableId, 'aria-label': aria[ button ], 'data-dt-idx': counter, 'tabindex': settings.iTabIndex } ) .html( btnDisplay ) ) .appendTo( container ); settings.oApi._fnBindAction( node, {action: button}, clickHandler ); counter++; } } } }; // IE9 throws an 'unknown error' if document.activeElement is used // inside an iframe or frame. var activeEl; try { // Because this approach is destroying and recreating the paging // elements, focus is lost on the select button which is bad for // accessibility. So we want to restore focus once the draw has // completed activeEl = $(host).find(document.activeElement).data('dt-idx'); } catch (e) {} attach( $(host).empty().html('<ul class="pagination"/>').children('ul'), buttons ); if ( activeEl !== undefined ) { $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); } }; return DataTable; })); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.semanticui.js 0000644 00000011743 15002261751 0021617 0 ustar 00 /*! DataTables Bootstrap 3 integration * ©2011-2015 SpryMedia Ltd - datatables.net/license */ /** * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and * DataTables 1.10 or newer. * * This file sets the defaults and adds options to DataTables to style its * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap * for further information. */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { // Require DataTables, which attaches to jQuery, including // jQuery if needed and have a $ property so we can access the // jQuery object that is used $ = require('datatables.net')(root, $).$; } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; /* Set the defaults for DataTables initialisation */ $.extend( true, DataTable.defaults, { dom: "<'ui stackable grid'"+ "<'row'"+ "<'eight wide column'l>"+ "<'right aligned eight wide column'f>"+ ">"+ "<'row dt-table'"+ "<'sixteen wide column'tr>"+ ">"+ "<'row'"+ "<'seven wide column'i>"+ "<'right aligned nine wide column'p>"+ ">"+ ">", renderer: 'semanticUI' } ); /* Default class modification */ $.extend( DataTable.ext.classes, { sWrapper: "dataTables_wrapper dt-semanticUI", sFilter: "dataTables_filter ui input", sProcessing: "dataTables_processing ui segment", sPageButton: "paginate_button item" } ); /* Bootstrap paging button renderer */ DataTable.ext.renderer.pageButton.semanticUI = function ( settings, host, idx, buttons, page, pages ) { var api = new DataTable.Api( settings ); var classes = settings.oClasses; var lang = settings.oLanguage.oPaginate; var aria = settings.oLanguage.oAria.paginate || {}; var btnDisplay, btnClass, counter=0; var attach = function( container, buttons ) { var i, ien, node, button; var clickHandler = function ( e ) { e.preventDefault(); if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) { api.page( e.data.action ).draw( 'page' ); } }; for ( i=0, ien=buttons.length ; i<ien ; i++ ) { button = buttons[i]; if ( $.isArray( button ) ) { attach( container, button ); } else { btnDisplay = ''; btnClass = ''; switch ( button ) { case 'ellipsis': btnDisplay = '…'; btnClass = 'disabled'; break; case 'first': btnDisplay = lang.sFirst; btnClass = button + (page > 0 ? '' : ' disabled'); break; case 'previous': btnDisplay = lang.sPrevious; btnClass = button + (page > 0 ? '' : ' disabled'); break; case 'next': btnDisplay = lang.sNext; btnClass = button + (page < pages-1 ? '' : ' disabled'); break; case 'last': btnDisplay = lang.sLast; btnClass = button + (page < pages-1 ? '' : ' disabled'); break; default: btnDisplay = button + 1; btnClass = page === button ? 'active' : ''; break; } var tag = btnClass.indexOf( 'disabled' ) === -1 ? 'a' : 'div'; if ( btnDisplay ) { node = $('<'+tag+'>', { 'class': classes.sPageButton+' '+btnClass, 'id': idx === 0 && typeof button === 'string' ? settings.sTableId +'_'+ button : null, 'href': '#', 'aria-controls': settings.sTableId, 'aria-label': aria[ button ], 'data-dt-idx': counter, 'tabindex': settings.iTabIndex } ) .html( btnDisplay ) .appendTo( container ); settings.oApi._fnBindAction( node, {action: button}, clickHandler ); counter++; } } } }; // IE9 throws an 'unknown error' if document.activeElement is used // inside an iframe or frame. var activeEl; try { // Because this approach is destroying and recreating the paging // elements, focus is lost on the select button which is bad for // accessibility. So we want to restore focus once the draw has // completed activeEl = $(host).find(document.activeElement).data('dt-idx'); } catch (e) {} attach( $(host).empty().html('<div class="ui stackable pagination menu"/>').children(), buttons ); if ( activeEl !== undefined ) { $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); } }; // Javascript enhancements on table initialisation $(document).on( 'init.dt', function (e, ctx) { if ( e.namespace !== 'dt' ) { return; } // Length menu drop down if ( $.fn.dropdown ) { var api = new $.fn.dataTable.Api( ctx ); $( 'div.dataTables_length select', api.table().container() ).dropdown(); } } ); return DataTable; })); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.jqueryui.min.js 0000644 00000005127 15002261751 0022114 0 ustar 00 /*! DataTables jQuery UI integration ©2011-2014 SpryMedia Ltd - datatables.net/license */ (function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,d){b||(b=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(b,d).$;return a(d,b,b.document)}:a(jQuery,window,document)})(function(a){var b=a.fn.dataTable;a.extend(!0,b.defaults,{dom:'<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-tl ui-corner-tr"lfr>t<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-bl ui-corner-br"ip>', renderer:"jqueryui"});a.extend(b.ext.classes,{sWrapper:"dataTables_wrapper dt-jqueryui",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:"ui-state-default sorting_asc",sSortDesc:"ui-state-default sorting_desc",sSortable:"ui-state-default sorting",sSortableAsc:"ui-state-default sorting_asc_disabled",sSortableDesc:"ui-state-default sorting_desc_disabled", sSortableNone:"ui-state-default sorting_disabled",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sHeaderTH:"ui-state-default",sFooterTH:"ui-state-default"});b.ext.renderer.header.jqueryui=function(b,h,e,c){var f="css_right ui-icon ui-icon-caret-2-n-s",g=-1!==a.inArray("asc",e.asSorting),i=-1!==a.inArray("desc",e.asSorting);!e.bSortable||!g&&!i?f="":g&&!i?f="css_right ui-icon ui-icon-caret-1-n":!g&&i&&(f="css_right ui-icon ui-icon-caret-1-s"); a("<div/>").addClass("DataTables_sort_wrapper").append(h.contents()).append(a("<span/>").addClass(c.sSortIcon+" "+f)).appendTo(h);a(b.nTable).on("order.dt",function(a,g,i,j){b===g&&(a=e.idx,h.removeClass(c.sSortAsc+" "+c.sSortDesc).addClass("asc"==j[a]?c.sSortAsc:"desc"==j[a]?c.sSortDesc:e.sSortingClass),h.find("span."+c.sSortIcon).removeClass("css_right ui-icon ui-icon-triangle-1-n css_right ui-icon ui-icon-triangle-1-s css_right ui-icon ui-icon-caret-2-n-s css_right ui-icon ui-icon-caret-1-n css_right ui-icon ui-icon-caret-1-s").addClass("asc"== j[a]?"css_right ui-icon ui-icon-triangle-1-n":"desc"==j[a]?"css_right ui-icon ui-icon-triangle-1-s":f))})};b.TableTools&&a.extend(!0,b.TableTools.classes,{container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}});return b}); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.semanticui.min.js 0000644 00000004323 15002261751 0022375 0 ustar 00 /*! DataTables Bootstrap 3 integration ©2011-2015 SpryMedia Ltd - datatables.net/license */ (function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var e=b.fn.dataTable;b.extend(!0,e.defaults,{dom:"<'ui stackable grid'<'row'<'eight wide column'l><'right aligned eight wide column'f>><'row dt-table'<'sixteen wide column'tr>><'row'<'seven wide column'i><'right aligned nine wide column'p>>>", renderer:"semanticUI"});b.extend(e.ext.classes,{sWrapper:"dataTables_wrapper dt-semanticUI",sFilter:"dataTables_filter ui input",sProcessing:"dataTables_processing ui segment",sPageButton:"paginate_button item"});e.ext.renderer.pageButton.semanticUI=function(h,a,r,s,j,n){var o=new e.Api(h),t=h.oClasses,k=h.oLanguage.oPaginate,u=h.oLanguage.oAria.paginate||{},f,g,p=0,q=function(a,d){var e,i,l,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")}; e=0;for(i=d.length;e<i;e++)if(c=d[e],b.isArray(c))q(a,c);else{g=f="";switch(c){case "ellipsis":f="…";g="disabled";break;case "first":f=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":f=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":f=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":f=k.sLast;g=c+(j<n-1?"":" disabled");break;default:f=c+1,g=j===c?"active":""}l=-1===g.indexOf("disabled")?"a":"div";f&&(l=b("<"+l+">",{"class":t.sPageButton+" "+g,id:0===r&&"string"===typeof c? h.sTableId+"_"+c:null,href:"#","aria-controls":h.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:h.iTabIndex}).html(f).appendTo(a),h.oApi._fnBindAction(l,{action:c},m),p++)}},i;try{i=b(a).find(d.activeElement).data("dt-idx")}catch(v){}q(b(a).empty().html('<div class="ui stackable pagination menu"/>').children(),s);i!==m&&b(a).find("[data-dt-idx="+i+"]").focus()};b(d).on("init.dt",function(a,d){if("dt"===a.namespace&&b.fn.dropdown){var e=new b.fn.dataTable.Api(d);b("div.dataTables_length select", e.table().container()).dropdown()}});return e}); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.bootstrap.min.js 0000644 00000003656 15002261751 0022261 0 ustar 00 /*! DataTables Bootstrap 3 integration ©2011-2015 SpryMedia Ltd - datatables.net/license */ (function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(f.ext.classes, {sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")}; l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="…";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",{"class":t.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#", "aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f}); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.foundation.js 0000644 00000010363 15002261751 0021621 0 ustar 00 /*! DataTables Foundation integration * ©2011-2015 SpryMedia Ltd - datatables.net/license */ /** * DataTables integration for Foundation. This requires Foundation 5 and * DataTables 1.10 or newer. * * This file sets the defaults and adds options to DataTables to style its * controls using Foundation. See http://datatables.net/manual/styling/foundation * for further information. */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net')(root, $).$; } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; // Detect Foundation 5 / 6 as they have different element and class requirements var meta = $('<meta class="foundation-mq"/>').appendTo('head'); DataTable.ext.foundationVersion = meta.css('font-family').match(/small|medium|large/) ? 6 : 5; meta.remove(); $.extend( DataTable.ext.classes, { sWrapper: "dataTables_wrapper dt-foundation", sProcessing: "dataTables_processing panel callout" } ); /* Set the defaults for DataTables initialisation */ $.extend( true, DataTable.defaults, { dom: "<'row'<'small-6 columns'l><'small-6 columns'f>r>"+ "t"+ "<'row'<'small-6 columns'i><'small-6 columns'p>>", renderer: 'foundation' } ); /* Page button renderer */ DataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) { var api = new DataTable.Api( settings ); var classes = settings.oClasses; var lang = settings.oLanguage.oPaginate; var aria = settings.oLanguage.oAria.paginate || {}; var btnDisplay, btnClass; var tag; var v5 = DataTable.ext.foundationVersion === 5; var attach = function( container, buttons ) { var i, ien, node, button; var clickHandler = function ( e ) { e.preventDefault(); if ( !$(e.currentTarget).hasClass('unavailable') && api.page() != e.data.action ) { api.page( e.data.action ).draw( 'page' ); } }; for ( i=0, ien=buttons.length ; i<ien ; i++ ) { button = buttons[i]; if ( $.isArray( button ) ) { attach( container, button ); } else { btnDisplay = ''; btnClass = ''; tag = null; switch ( button ) { case 'ellipsis': btnDisplay = '…'; btnClass = 'unavailable disabled'; tag = null; break; case 'first': btnDisplay = lang.sFirst; btnClass = button + (page > 0 ? '' : ' unavailable disabled'); tag = page > 0 ? 'a' : null; break; case 'previous': btnDisplay = lang.sPrevious; btnClass = button + (page > 0 ? '' : ' unavailable disabled'); tag = page > 0 ? 'a' : null; break; case 'next': btnDisplay = lang.sNext; btnClass = button + (page < pages-1 ? '' : ' unavailable disabled'); tag = page < pages-1 ? 'a' : null; break; case 'last': btnDisplay = lang.sLast; btnClass = button + (page < pages-1 ? '' : ' unavailable disabled'); tag = page < pages-1 ? 'a' : null; break; default: btnDisplay = button + 1; btnClass = page === button ? 'current' : ''; tag = page === button ? null : 'a'; break; } if ( v5 ) { tag = 'a'; } if ( btnDisplay ) { node = $('<li>', { 'class': classes.sPageButton+' '+btnClass, 'aria-controls': settings.sTableId, 'aria-label': aria[ button ], 'tabindex': settings.iTabIndex, 'id': idx === 0 && typeof button === 'string' ? settings.sTableId +'_'+ button : null } ) .append( tag ? $('<'+tag+'/>', {'href': '#'} ).html( btnDisplay ) : btnDisplay ) .appendTo( container ); settings.oApi._fnBindAction( node, {action: button}, clickHandler ); } } } }; attach( $(host).empty().html('<ul class="pagination"/>').children('ul'), buttons ); }; return DataTable; })); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/jquery.dataTables.js 0000644 00001546541 15002261751 0021007 0 ustar 00 /*! DataTables 1.10.16 * ©2008-2017 SpryMedia Ltd - datatables.net/license */ /** * @summary DataTables * @description Paginate, search and order HTML tables * @version 1.10.16 * @file jquery.dataTables.js * @author SpryMedia Ltd * @contact www.datatables.net * @copyright Copyright 2008-2017 SpryMedia Ltd. * * This source file is free software, available under the following license: * MIT license - http://datatables.net/license * * This source file is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. * * For details please refer to: http://www.datatables.net */ /*jslint evil: true, undef: true, browser: true */ /*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ (function( factory ) { "use strict"; if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { // CommonJS environments without a window global must pass a // root. This will give an error otherwise root = window; } if ( ! $ ) { $ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window require('jquery') : require('jquery')( root ); } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } } (function( $, window, document, undefined ) { "use strict"; /** * DataTables is a plug-in for the jQuery Javascript library. It is a highly * flexible tool, based upon the foundations of progressive enhancement, * which will add advanced interaction controls to any HTML table. For a * full list of features please refer to * [DataTables.net](href="http://datatables.net). * * Note that the `DataTable` object is not a global variable but is aliased * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may * be accessed. * * @class * @param {object} [init={}] Configuration object for DataTables. Options * are defined by {@link DataTable.defaults} * @requires jQuery 1.7+ * * @example * // Basic initialisation * $(document).ready( function { * $('#example').dataTable(); * } ); * * @example * // Initialisation with configuration options - in this case, disable * // pagination and sorting. * $(document).ready( function { * $('#example').dataTable( { * "paginate": false, * "sort": false * } ); * } ); */ var DataTable = function ( options ) { /** * Perform a jQuery selector action on the table's TR elements (from the tbody) and * return the resulting jQuery object. * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on * @param {object} [oOpts] Optional parameters for modifying the rows to be included * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter * criterion ("applied") or all TR elements (i.e. no filter). * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. * Can be either 'current', whereby the current sorting of the table is used, or * 'original' whereby the original order the data was read into the table is used. * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page * ("current") or not ("all"). If 'current' is given, then order is assumed to be * 'current' and filter is 'applied', regardless of what they might be given as. * @returns {object} jQuery object, filtered by the given selector. * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Highlight every second row * oTable.$('tr:odd').css('backgroundColor', 'blue'); * } ); * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Filter to rows with 'Webkit' in them, add a background colour and then * // remove the filter, thus highlighting the 'Webkit' rows only. * oTable.fnFilter('Webkit'); * oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue'); * oTable.fnFilter(''); * } ); */ this.$ = function ( sSelector, oOpts ) { return this.api(true).$( sSelector, oOpts ); }; /** * Almost identical to $ in operation, but in this case returns the data for the matched * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes * rather than any descendants, so the data can be obtained for the row/cell. If matching * rows are found, the data returned is the original data array/object that was used to * create the row (or a generated array if from a DOM source). * * This method is often useful in-combination with $ where both functions are given the * same parameters and the array indexes will match identically. * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on * @param {object} [oOpts] Optional parameters for modifying the rows to be included * @param {string} [oOpts.filter=none] Select elements that meet the current filter * criterion ("applied") or all elements (i.e. no filter). * @param {string} [oOpts.order=current] Order of the data in the processed array. * Can be either 'current', whereby the current sorting of the table is used, or * 'original' whereby the original order the data was read into the table is used. * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page * ("current") or not ("all"). If 'current' is given, then order is assumed to be * 'current' and filter is 'applied', regardless of what they might be given as. * @returns {array} Data for the matched elements. If any elements, as a result of the * selector, were not TR, TD or TH elements in the DataTable, they will have a null * entry in the array. * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Get the data from the first row in the table * var data = oTable._('tr:first'); * * // Do something useful with the data * alert( "First cell is: "+data[0] ); * } ); * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Filter to 'Webkit' and get all data for * oTable.fnFilter('Webkit'); * var data = oTable._('tr', {"search": "applied"}); * * // Do something with the data * alert( data.length+" rows matched the search" ); * } ); */ this._ = function ( sSelector, oOpts ) { return this.api(true).rows( sSelector, oOpts ).data(); }; /** * Create a DataTables Api instance, with the currently selected tables for * the Api's context. * @param {boolean} [traditional=false] Set the API instance's context to be * only the table referred to by the `DataTable.ext.iApiIndex` option, as was * used in the API presented by DataTables 1.9- (i.e. the traditional mode), * or if all tables captured in the jQuery object should be used. * @return {DataTables.Api} */ this.api = function ( traditional ) { return traditional ? new _Api( _fnSettingsFromNode( this[ _ext.iApiIndex ] ) ) : new _Api( this ); }; /** * Add a single new row or multiple rows of data to the table. Please note * that this is suitable for client-side processing only - if you are using * server-side processing (i.e. "bServerSide": true), then to add data, you * must add it to the data source, i.e. the server-side, through an Ajax call. * @param {array|object} data The data to be added to the table. This can be: * <ul> * <li>1D array of data - add a single row with the data provided</li> * <li>2D array of arrays - add multiple rows in a single call</li> * <li>object - data object when using <i>mData</i></li> * <li>array of objects - multiple data objects when using <i>mData</i></li> * </ul> * @param {bool} [redraw=true] redraw the table or not * @returns {array} An array of integers, representing the list of indexes in * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to * the table. * @dtopt API * @deprecated Since v1.10 * * @example * // Global var for counter * var giCount = 2; * * $(document).ready(function() { * $('#example').dataTable(); * } ); * * function fnClickAddRow() { * $('#example').dataTable().fnAddData( [ * giCount+".1", * giCount+".2", * giCount+".3", * giCount+".4" ] * ); * * giCount++; * } */ this.fnAddData = function( data, redraw ) { var api = this.api( true ); /* Check if we want to add multiple rows or not */ var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? api.rows.add( data ) : api.row.add( data ); if ( redraw === undefined || redraw ) { api.draw(); } return rows.flatten().toArray(); }; /** * This function will make DataTables recalculate the column sizes, based on the data * contained in the table and the sizes applied to the columns (in the DOM, CSS or * through the sWidth parameter). This can be useful when the width of the table's * parent element changes (for example a window resize). * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable( { * "sScrollY": "200px", * "bPaginate": false * } ); * * $(window).on('resize', function () { * oTable.fnAdjustColumnSizing(); * } ); * } ); */ this.fnAdjustColumnSizing = function ( bRedraw ) { var api = this.api( true ).columns.adjust(); var settings = api.settings()[0]; var scroll = settings.oScroll; if ( bRedraw === undefined || bRedraw ) { api.draw( false ); } else if ( scroll.sX !== "" || scroll.sY !== "" ) { /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ _fnScrollDraw( settings ); } }; /** * Quickly and simply clear a table * @param {bool} [bRedraw=true] redraw the table or not * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...) * oTable.fnClearTable(); * } ); */ this.fnClearTable = function( bRedraw ) { var api = this.api( true ).clear(); if ( bRedraw === undefined || bRedraw ) { api.draw(); } }; /** * The exact opposite of 'opening' a row, this function will close any rows which * are currently 'open'. * @param {node} nTr the table row to 'close' * @returns {int} 0 on success, or 1 if failed (can't find the row) * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable; * * // 'open' an information row when a row is clicked on * $('#example tbody tr').click( function () { * if ( oTable.fnIsOpen(this) ) { * oTable.fnClose( this ); * } else { * oTable.fnOpen( this, "Temporary row opened", "info_row" ); * } * } ); * * oTable = $('#example').dataTable(); * } ); */ this.fnClose = function( nTr ) { this.api( true ).row( nTr ).child.hide(); }; /** * Remove a row for the table * @param {mixed} target The index of the row from aoData to be deleted, or * the TR element you want to delete * @param {function|null} [callBack] Callback function * @param {bool} [redraw=true] Redraw the table or not * @returns {array} The row that was deleted * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Immediately remove the first row * oTable.fnDeleteRow( 0 ); * } ); */ this.fnDeleteRow = function( target, callback, redraw ) { var api = this.api( true ); var rows = api.rows( target ); var settings = rows.settings()[0]; var data = settings.aoData[ rows[0][0] ]; rows.remove(); if ( callback ) { callback.call( this, settings, data ); } if ( redraw === undefined || redraw ) { api.draw(); } return data; }; /** * Restore the table to it's original state in the DOM by removing all of DataTables * enhancements, alterations to the DOM structure of the table and event listeners. * @param {boolean} [remove=false] Completely remove the table from the DOM * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * // This example is fairly pointless in reality, but shows how fnDestroy can be used * var oTable = $('#example').dataTable(); * oTable.fnDestroy(); * } ); */ this.fnDestroy = function ( remove ) { this.api( true ).destroy( remove ); }; /** * Redraw the table * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Re-draw the table - you wouldn't want to do it here, but it's an example :-) * oTable.fnDraw(); * } ); */ this.fnDraw = function( complete ) { // Note that this isn't an exact match to the old call to _fnDraw - it takes // into account the new data, but can hold position. this.api( true ).draw( complete ); }; /** * Filter the input based on data * @param {string} sInput String to filter the table on * @param {int|null} [iColumn] Column to limit filtering to * @param {bool} [bRegex=false] Treat as regular expression or not * @param {bool} [bSmart=true] Perform smart filtering or not * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es) * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false) * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Sometime later - filter... * oTable.fnFilter( 'test string' ); * } ); */ this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) { var api = this.api( true ); if ( iColumn === null || iColumn === undefined ) { api.search( sInput, bRegex, bSmart, bCaseInsensitive ); } else { api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); } api.draw(); }; /** * Get the data for the whole table, an individual row or an individual cell based on the * provided parameters. * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as * a TR node then the data source for the whole row will be returned. If given as a * TD/TH cell node then iCol will be automatically calculated and the data for the * cell returned. If given as an integer, then this is treated as the aoData internal * data index for the row (see fnGetPosition) and the data for that row used. * @param {int} [col] Optional column index that you want the data of. * @returns {array|object|string} If mRow is undefined, then the data for all rows is * returned. If mRow is defined, just data for that row, and is iCol is * defined, only data for the designated cell is returned. * @dtopt API * @deprecated Since v1.10 * * @example * // Row data * $(document).ready(function() { * oTable = $('#example').dataTable(); * * oTable.$('tr').click( function () { * var data = oTable.fnGetData( this ); * // ... do something with the array / object of data for the row * } ); * } ); * * @example * // Individual cell data * $(document).ready(function() { * oTable = $('#example').dataTable(); * * oTable.$('td').click( function () { * var sData = oTable.fnGetData( this ); * alert( 'The cell clicked on had the value of '+sData ); * } ); * } ); */ this.fnGetData = function( src, col ) { var api = this.api( true ); if ( src !== undefined ) { var type = src.nodeName ? src.nodeName.toLowerCase() : ''; return col !== undefined || type == 'td' || type == 'th' ? api.cell( src, col ).data() : api.row( src ).data() || null; } return api.data().toArray(); }; /** * Get an array of the TR nodes that are used in the table's body. Note that you will * typically want to use the '$' API method in preference to this as it is more * flexible. * @param {int} [iRow] Optional row index for the TR element you want * @returns {array|node} If iRow is undefined, returns an array of all TR elements * in the table's body, or iRow is defined, just the TR element requested. * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Get the nodes from the table * var nNodes = oTable.fnGetNodes( ); * } ); */ this.fnGetNodes = function( iRow ) { var api = this.api( true ); return iRow !== undefined ? api.row( iRow ).node() : api.rows().nodes().flatten().toArray(); }; /** * Get the array indexes of a particular cell from it's DOM element * and column index including hidden columns * @param {node} node this can either be a TR, TD or TH in the table's body * @returns {int} If nNode is given as a TR, then a single index is returned, or * if given as a cell, an array of [row index, column index (visible), * column index (all)] is given. * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * $('#example tbody td').click( function () { * // Get the position of the current data from the node * var aPos = oTable.fnGetPosition( this ); * * // Get the data array for this row * var aData = oTable.fnGetData( aPos[0] ); * * // Update the data array and return the value * aData[ aPos[1] ] = 'clicked'; * this.innerHTML = 'clicked'; * } ); * * // Init DataTables * oTable = $('#example').dataTable(); * } ); */ this.fnGetPosition = function( node ) { var api = this.api( true ); var nodeName = node.nodeName.toUpperCase(); if ( nodeName == 'TR' ) { return api.row( node ).index(); } else if ( nodeName == 'TD' || nodeName == 'TH' ) { var cell = api.cell( node ).index(); return [ cell.row, cell.columnVisible, cell.column ]; } return null; }; /** * Check to see if a row is 'open' or not. * @param {node} nTr the table row to check * @returns {boolean} true if the row is currently open, false otherwise * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable; * * // 'open' an information row when a row is clicked on * $('#example tbody tr').click( function () { * if ( oTable.fnIsOpen(this) ) { * oTable.fnClose( this ); * } else { * oTable.fnOpen( this, "Temporary row opened", "info_row" ); * } * } ); * * oTable = $('#example').dataTable(); * } ); */ this.fnIsOpen = function( nTr ) { return this.api( true ).row( nTr ).child.isShown(); }; /** * This function will place a new row directly after a row which is currently * on display on the page, with the HTML contents that is passed into the * function. This can be used, for example, to ask for confirmation that a * particular record should be deleted. * @param {node} nTr The table row to 'open' * @param {string|node|jQuery} mHtml The HTML to put into the row * @param {string} sClass Class to give the new TD cell * @returns {node} The row opened. Note that if the table row passed in as the * first parameter, is not found in the table, this method will silently * return. * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable; * * // 'open' an information row when a row is clicked on * $('#example tbody tr').click( function () { * if ( oTable.fnIsOpen(this) ) { * oTable.fnClose( this ); * } else { * oTable.fnOpen( this, "Temporary row opened", "info_row" ); * } * } ); * * oTable = $('#example').dataTable(); * } ); */ this.fnOpen = function( nTr, mHtml, sClass ) { return this.api( true ) .row( nTr ) .child( mHtml, sClass ) .show() .child()[0]; }; /** * Change the pagination - provides the internal logic for pagination in a simple API * function. With this function you can have a DataTables table go to the next, * previous, first or last pages. * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" * or page number to jump to (integer), note that page 0 is the first page. * @param {bool} [bRedraw=true] Redraw the table or not * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * oTable.fnPageChange( 'next' ); * } ); */ this.fnPageChange = function ( mAction, bRedraw ) { var api = this.api( true ).page( mAction ); if ( bRedraw === undefined || bRedraw ) { api.draw(false); } }; /** * Show a particular column * @param {int} iCol The column whose display should be changed * @param {bool} bShow Show (true) or hide (false) the column * @param {bool} [bRedraw=true] Redraw the table or not * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Hide the second column after initialisation * oTable.fnSetColumnVis( 1, false ); * } ); */ this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) { var api = this.api( true ).column( iCol ).visible( bShow ); if ( bRedraw === undefined || bRedraw ) { api.columns.adjust().draw(); } }; /** * Get the settings for a particular table for external manipulation * @returns {object} DataTables settings object. See * {@link DataTable.models.oSettings} * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * var oSettings = oTable.fnSettings(); * * // Show an example parameter from the settings * alert( oSettings._iDisplayStart ); * } ); */ this.fnSettings = function() { return _fnSettingsFromNode( this[_ext.iApiIndex] ); }; /** * Sort the table by a particular column * @param {int} iCol the data index to sort on. Note that this will not match the * 'display index' if you have hidden data entries * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Sort immediately with columns 0 and 1 * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] ); * } ); */ this.fnSort = function( aaSort ) { this.api( true ).order( aaSort ).draw(); }; /** * Attach a sort listener to an element for a given column * @param {node} nNode the element to attach the sort listener to * @param {int} iColumn the column that a click on this node will sort on * @param {function} [fnCallback] callback function when sort is run * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * * // Sort on column 1, when 'sorter' is clicked on * oTable.fnSortListener( document.getElementById('sorter'), 1 ); * } ); */ this.fnSortListener = function( nNode, iColumn, fnCallback ) { this.api( true ).order.listener( nNode, iColumn, fnCallback ); }; /** * Update a table cell or row - this method will accept either a single value to * update the cell with, an array of values with one element for each column or * an object in the same format as the original data source. The function is * self-referencing in order to make the multi column updates easier. * @param {object|array|string} mData Data to update the cell/row with * @param {node|int} mRow TR element you want to update or the aoData index * @param {int} [iColumn] The column to update, give as null or undefined to * update a whole row. * @param {bool} [bRedraw=true] Redraw the table or not * @param {bool} [bAction=true] Perform pre-draw actions or not * @returns {int} 0 on success, 1 on error * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row * } ); */ this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) { var api = this.api( true ); if ( iColumn === undefined || iColumn === null ) { api.row( mRow ).data( mData ); } else { api.cell( mRow, iColumn ).data( mData ); } if ( bAction === undefined || bAction ) { api.columns.adjust(); } if ( bRedraw === undefined || bRedraw ) { api.draw(); } return 0; }; /** * Provide a common method for plug-ins to check the version of DataTables being used, in order * to ensure compatibility. * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the * formats "X" and "X.Y" are also acceptable. * @returns {boolean} true if this version of DataTables is greater or equal to the required * version, or false if this version of DataTales is not suitable * @method * @dtopt API * @deprecated Since v1.10 * * @example * $(document).ready(function() { * var oTable = $('#example').dataTable(); * alert( oTable.fnVersionCheck( '1.9.0' ) ); * } ); */ this.fnVersionCheck = _ext.fnVersionCheck; var _that = this; var emptyInit = options === undefined; var len = this.length; if ( emptyInit ) { options = {}; } this.oApi = this.internal = _ext.internal; // Extend with old style plug-in API methods for ( var fn in DataTable.ext.internal ) { if ( fn ) { this[fn] = _fnExternApiFunc(fn); } } this.each(function() { // For each initialisation we want to give it a clean initialisation // object that can be bashed around var o = {}; var oInit = len > 1 ? // optimisation for single table case _fnExtend( o, options, true ) : options; /*global oInit,_that,emptyInit*/ var i=0, iLen, j, jLen, k, kLen; var sId = this.getAttribute( 'id' ); var bInitHandedOff = false; var defaults = DataTable.defaults; var $this = $(this); /* Sanity check */ if ( this.nodeName.toLowerCase() != 'table' ) { _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); return; } /* Backwards compatibility for the defaults */ _fnCompatOpts( defaults ); _fnCompatCols( defaults.column ); /* Convert the camel-case defaults to Hungarian */ _fnCamelToHungarian( defaults, defaults, true ); _fnCamelToHungarian( defaults.column, defaults.column, true ); /* Setting up the initialisation object */ _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) ); /* Check to see if we are re-initialising a table */ var allSettings = DataTable.settings; for ( i=0, iLen=allSettings.length ; i<iLen ; i++ ) { var s = allSettings[i]; /* Base check on table node */ if ( s.nTable == this || s.nTHead.parentNode == this || (s.nTFoot && s.nTFoot.parentNode == this) ) { var bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve; var bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy; if ( emptyInit || bRetrieve ) { return s.oInstance; } else if ( bDestroy ) { s.oInstance.fnDestroy(); break; } else { _fnLog( s, 0, 'Cannot reinitialise DataTable', 3 ); return; } } /* If the element we are initialising has the same ID as a table which was previously * initialised, but the table nodes don't match (from before) then we destroy the old * instance by simply deleting it. This is under the assumption that the table has been * destroyed by other methods. Anyone using non-id selectors will need to do this manually */ if ( s.sTableId == this.id ) { allSettings.splice( i, 1 ); break; } } /* Ensure the table has an ID - required for accessibility */ if ( sId === null || sId === "" ) { sId = "DataTables_Table_"+(DataTable.ext._unique++); this.id = sId; } /* Create the settings object for this table and set some of the default parameters */ var oSettings = $.extend( true, {}, DataTable.models.oSettings, { "sDestroyWidth": $this[0].style.width, "sInstance": sId, "sTableId": sId } ); oSettings.nTable = this; oSettings.oApi = _that.internal; oSettings.oInit = oInit; allSettings.push( oSettings ); // Need to add the instance after the instance after the settings object has been added // to the settings array, so we can self reference the table instance if more than one oSettings.oInstance = (_that.length===1) ? _that : $this.dataTable(); // Backwards compatibility, before we apply all the defaults _fnCompatOpts( oInit ); if ( oInit.oLanguage ) { _fnLanguageCompat( oInit.oLanguage ); } // If the length menu is given, but the init display length is not, use the length menu if ( oInit.aLengthMenu && ! oInit.iDisplayLength ) { oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ? oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; } // Apply the defaults and init options to make a single init object will all // options defined from defaults and instance options. oInit = _fnExtend( $.extend( true, {}, defaults ), oInit ); // Map the initialisation options onto the settings object _fnMap( oSettings.oFeatures, oInit, [ "bPaginate", "bLengthChange", "bFilter", "bSort", "bSortMulti", "bInfo", "bProcessing", "bAutoWidth", "bSortClasses", "bServerSide", "bDeferRender" ] ); _fnMap( oSettings, oInit, [ "asStripeClasses", "ajax", "fnServerData", "fnFormatNumber", "sServerMethod", "aaSorting", "aaSortingFixed", "aLengthMenu", "sPaginationType", "sAjaxSource", "sAjaxDataProp", "iStateDuration", "sDom", "bSortCellsTop", "iTabIndex", "fnStateLoadCallback", "fnStateSaveCallback", "renderer", "searchDelay", "rowId", [ "iCookieDuration", "iStateDuration" ], // backwards compat [ "oSearch", "oPreviousSearch" ], [ "aoSearchCols", "aoPreSearchCols" ], [ "iDisplayLength", "_iDisplayLength" ] ] ); _fnMap( oSettings.oScroll, oInit, [ [ "sScrollX", "sX" ], [ "sScrollXInner", "sXInner" ], [ "sScrollY", "sY" ], [ "bScrollCollapse", "bCollapse" ] ] ); _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" ); /* Callback functions which are array driven */ _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' ); _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' ); _fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' ); _fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' ); _fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' ); _fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' ); _fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' ); _fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' ); _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' ); _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' ); _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' ); oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId ); /* Browser support detection */ _fnBrowserDetect( oSettings ); var oClasses = oSettings.oClasses; $.extend( oClasses, DataTable.ext.classes, oInit.oClasses ); $this.addClass( oClasses.sTable ); if ( oSettings.iInitDisplayStart === undefined ) { /* Display start point, taking into account the save saving */ oSettings.iInitDisplayStart = oInit.iDisplayStart; oSettings._iDisplayStart = oInit.iDisplayStart; } if ( oInit.iDeferLoading !== null ) { oSettings.bDeferLoading = true; var tmp = $.isArray( oInit.iDeferLoading ); oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; } /* Language definitions */ var oLanguage = oSettings.oLanguage; $.extend( true, oLanguage, oInit.oLanguage ); if ( oLanguage.sUrl ) { /* Get the language definitions from a file - because this Ajax call makes the language * get async to the remainder of this function we use bInitHandedOff to indicate that * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor */ $.ajax( { dataType: 'json', url: oLanguage.sUrl, success: function ( json ) { _fnLanguageCompat( json ); _fnCamelToHungarian( defaults.oLanguage, json ); $.extend( true, oLanguage, json ); _fnInitialise( oSettings ); }, error: function () { // Error occurred loading language file, continue on as best we can _fnInitialise( oSettings ); } } ); bInitHandedOff = true; } /* * Stripes */ if ( oInit.asStripeClasses === null ) { oSettings.asStripeClasses =[ oClasses.sStripeOdd, oClasses.sStripeEven ]; } /* Remove row stripe classes if they are already on the table row */ var stripeClasses = oSettings.asStripeClasses; var rowOne = $this.children('tbody').find('tr').eq(0); if ( $.inArray( true, $.map( stripeClasses, function(el, i) { return rowOne.hasClass(el); } ) ) !== -1 ) { $('tbody tr', this).removeClass( stripeClasses.join(' ') ); oSettings.asDestroyStripes = stripeClasses.slice(); } /* * Columns * See if we should load columns automatically or use defined ones */ var anThs = []; var aoColumnsInit; var nThead = this.getElementsByTagName('thead'); if ( nThead.length !== 0 ) { _fnDetectHeader( oSettings.aoHeader, nThead[0] ); anThs = _fnGetUniqueThs( oSettings ); } /* If not given a column array, generate one with nulls */ if ( oInit.aoColumns === null ) { aoColumnsInit = []; for ( i=0, iLen=anThs.length ; i<iLen ; i++ ) { aoColumnsInit.push( null ); } } else { aoColumnsInit = oInit.aoColumns; } /* Add the columns */ for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ ) { _fnAddColumn( oSettings, anThs ? anThs[i] : null ); } /* Apply the column definitions */ _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) { _fnColumnOptions( oSettings, iCol, oDef ); } ); /* HTML5 attribute detection - build an mData object automatically if the * attributes are found */ if ( rowOne.length ) { var a = function ( cell, name ) { return cell.getAttribute( 'data-'+name ) !== null ? name : null; }; $( rowOne[0] ).children('th, td').each( function (i, cell) { var col = oSettings.aoColumns[i]; if ( col.mData === i ) { var sort = a( cell, 'sort' ) || a( cell, 'order' ); var filter = a( cell, 'filter' ) || a( cell, 'search' ); if ( sort !== null || filter !== null ) { col.mData = { _: i+'.display', sort: sort !== null ? i+'.@data-'+sort : undefined, type: sort !== null ? i+'.@data-'+sort : undefined, filter: filter !== null ? i+'.@data-'+filter : undefined }; _fnColumnOptions( oSettings, i ); } } } ); } var features = oSettings.oFeatures; var loadedInit = function () { /* * Sorting * @todo For modularisation (1.11) this needs to do into a sort start up handler */ // If aaSorting is not defined, then we use the first indicator in asSorting // in case that has been altered, so the default sort reflects that option if ( oInit.aaSorting === undefined ) { var sorting = oSettings.aaSorting; for ( i=0, iLen=sorting.length ; i<iLen ; i++ ) { sorting[i][1] = oSettings.aoColumns[ i ].asSorting[0]; } } /* Do a first pass on the sorting classes (allows any size changes to be taken into * account, and also will apply sorting disabled classes if disabled */ _fnSortingClasses( oSettings ); if ( features.bSort ) { _fnCallbackReg( oSettings, 'aoDrawCallback', function () { if ( oSettings.bSorted ) { var aSort = _fnSortFlatten( oSettings ); var sortedColumns = {}; $.each( aSort, function (i, val) { sortedColumns[ val.src ] = val.dir; } ); _fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] ); _fnSortAria( oSettings ); } } ); } _fnCallbackReg( oSettings, 'aoDrawCallback', function () { if ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) { _fnSortingClasses( oSettings ); } }, 'sc' ); /* * Final init * Cache the header, body and footer as required, creating them if needed */ // Work around for Webkit bug 83867 - store the caption-side before removing from doc var captions = $this.children('caption').each( function () { this._captionSide = $(this).css('caption-side'); } ); var thead = $this.children('thead'); if ( thead.length === 0 ) { thead = $('<thead/>').appendTo($this); } oSettings.nTHead = thead[0]; var tbody = $this.children('tbody'); if ( tbody.length === 0 ) { tbody = $('<tbody/>').appendTo($this); } oSettings.nTBody = tbody[0]; var tfoot = $this.children('tfoot'); if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) { // If we are a scrolling table, and no footer has been given, then we need to create // a tfoot element for the caption element to be appended to tfoot = $('<tfoot/>').appendTo($this); } if ( tfoot.length === 0 || tfoot.children().length === 0 ) { $this.addClass( oClasses.sNoFooter ); } else if ( tfoot.length > 0 ) { oSettings.nTFoot = tfoot[0]; _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); } /* Check if there is data passing into the constructor */ if ( oInit.aaData ) { for ( i=0 ; i<oInit.aaData.length ; i++ ) { _fnAddData( oSettings, oInit.aaData[ i ] ); } } else if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) { /* Grab the data from the page - only do this when deferred loading or no Ajax * source since there is no point in reading the DOM data if we are then going * to replace it with Ajax data */ _fnAddTr( oSettings, $(oSettings.nTBody).children('tr') ); } /* Copy the data index array */ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); /* Initialisation complete - table can be drawn */ oSettings.bInitialised = true; /* Check if we need to initialise the table (it might not have been handed off to the * language processor) */ if ( bInitHandedOff === false ) { _fnInitialise( oSettings ); } }; /* Must be done after everything which can be overridden by the state saving! */ if ( oInit.bStateSave ) { features.bStateSave = true; _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' ); _fnLoadState( oSettings, oInit, loadedInit ); } else { loadedInit(); } } ); _that = null; return this; }; /* * It is useful to have variables which are scoped locally so only the * DataTables functions can access them and they don't leak into global space. * At the same time these functions are often useful over multiple files in the * core and API, so we list, or at least document, all variables which are used * by DataTables as private variables here. This also ensures that there is no * clashing of variable names and that they can easily referenced for reuse. */ // Defined else where // _selector_run // _selector_opts // _selector_first // _selector_row_indexes var _ext; // DataTable.ext var _Api; // DataTable.Api var _api_register; // DataTable.Api.register var _api_registerPlural; // DataTable.Api.registerPlural var _re_dic = {}; var _re_new_lines = /[\r\n]/g; var _re_html = /<.*?>/g; // This is not strict ISO8601 - Date.parse() is quite lax, although // implementations differ between browsers. var _re_date = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/; // Escape regular expression special characters var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); // http://en.wikipedia.org/wiki/Foreign_exchange_market // - \u20BD - Russian ruble. // - \u20a9 - South Korean Won // - \u20BA - Turkish Lira // - \u20B9 - Indian Rupee // - R - Brazil (R$) and South Africa // - fr - Swiss Franc // - kr - Swedish krona, Norwegian krone and Danish krone // - \u2009 is thin space and \u202F is narrow no-break space, both used in many // standards as thousands separators. var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; var _empty = function ( d ) { return !d || d === true || d === '-' ? true : false; }; var _intVal = function ( s ) { var integer = parseInt( s, 10 ); return !isNaN(integer) && isFinite(s) ? integer : null; }; // Convert from a formatted number with characters other than `.` as the // decimal place, to a Javascript number var _numToDecimal = function ( num, decimalPoint ) { // Cache created regular expressions for speed as this function is called often if ( ! _re_dic[ decimalPoint ] ) { _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' ); } return typeof num === 'string' && decimalPoint !== '.' ? num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : num; }; var _isNumber = function ( d, decimalPoint, formatted ) { var strType = typeof d === 'string'; // If empty return immediately so there must be a number if it is a // formatted string (this stops the string "k", or "kr", etc being detected // as a formatted number for currency if ( _empty( d ) ) { return true; } if ( decimalPoint && strType ) { d = _numToDecimal( d, decimalPoint ); } if ( formatted && strType ) { d = d.replace( _re_formatted_numeric, '' ); } return !isNaN( parseFloat(d) ) && isFinite( d ); }; // A string without HTML in it can be considered to be HTML still var _isHtml = function ( d ) { return _empty( d ) || typeof d === 'string'; }; var _htmlNumeric = function ( d, decimalPoint, formatted ) { if ( _empty( d ) ) { return true; } var html = _isHtml( d ); return ! html ? null : _isNumber( _stripHtml( d ), decimalPoint, formatted ) ? true : null; }; var _pluck = function ( a, prop, prop2 ) { var out = []; var i=0, ien=a.length; // Could have the test in the loop for slightly smaller code, but speed // is essential here if ( prop2 !== undefined ) { for ( ; i<ien ; i++ ) { if ( a[i] && a[i][ prop ] ) { out.push( a[i][ prop ][ prop2 ] ); } } } else { for ( ; i<ien ; i++ ) { if ( a[i] ) { out.push( a[i][ prop ] ); } } } return out; }; // Basically the same as _pluck, but rather than looping over `a` we use `order` // as the indexes to pick from `a` var _pluck_order = function ( a, order, prop, prop2 ) { var out = []; var i=0, ien=order.length; // Could have the test in the loop for slightly smaller code, but speed // is essential here if ( prop2 !== undefined ) { for ( ; i<ien ; i++ ) { if ( a[ order[i] ][ prop ] ) { out.push( a[ order[i] ][ prop ][ prop2 ] ); } } } else { for ( ; i<ien ; i++ ) { out.push( a[ order[i] ][ prop ] ); } } return out; }; var _range = function ( len, start ) { var out = []; var end; if ( start === undefined ) { start = 0; end = len; } else { end = start; start = len; } for ( var i=start ; i<end ; i++ ) { out.push( i ); } return out; }; var _removeEmpty = function ( a ) { var out = []; for ( var i=0, ien=a.length ; i<ien ; i++ ) { if ( a[i] ) { // careful - will remove all falsy values! out.push( a[i] ); } } return out; }; var _stripHtml = function ( d ) { return d.replace( _re_html, '' ); }; /** * Determine if all values in the array are unique. This means we can short * cut the _unique method at the cost of a single loop. A sorted array is used * to easily check the values. * * @param {array} src Source array * @return {boolean} true if all unique, false otherwise * @ignore */ var _areAllUnique = function ( src ) { if ( src.length < 2 ) { return true; } var sorted = src.slice().sort(); var last = sorted[0]; for ( var i=1, ien=sorted.length ; i<ien ; i++ ) { if ( sorted[i] === last ) { return false; } last = sorted[i]; } return true; }; /** * Find the unique elements in a source array. * * @param {array} src Source array * @return {array} Array of unique items * @ignore */ var _unique = function ( src ) { if ( _areAllUnique( src ) ) { return src.slice(); } // A faster unique method is to use object keys to identify used values, // but this doesn't work with arrays or objects, which we must also // consider. See jsperf.com/compare-array-unique-versions/4 for more // information. var out = [], val, i, ien=src.length, j, k=0; again: for ( i=0 ; i<ien ; i++ ) { val = src[i]; for ( j=0 ; j<k ; j++ ) { if ( out[j] === val ) { continue again; } } out.push( val ); k++; } return out; }; /** * DataTables utility methods * * This namespace provides helper methods that DataTables uses internally to * create a DataTable, but which are not exclusively used only for DataTables. * These methods can be used by extension authors to save the duplication of * code. * * @namespace */ DataTable.util = { /** * Throttle the calls to a function. Arguments and context are maintained * for the throttled function. * * @param {function} fn Function to be called * @param {integer} freq Call frequency in mS * @return {function} Wrapped function */ throttle: function ( fn, freq ) { var frequency = freq !== undefined ? freq : 200, last, timer; return function () { var that = this, now = +new Date(), args = arguments; if ( last && now < last + frequency ) { clearTimeout( timer ); timer = setTimeout( function () { last = undefined; fn.apply( that, args ); }, frequency ); } else { last = now; fn.apply( that, args ); } }; }, /** * Escape a string such that it can be used in a regular expression * * @param {string} val string to escape * @returns {string} escaped string */ escapeRegex: function ( val ) { return val.replace( _re_escape_regex, '\\$1' ); } }; /** * Create a mapping object that allows camel case parameters to be looked up * for their Hungarian counterparts. The mapping is stored in a private * parameter called `_hungarianMap` which can be accessed on the source object. * @param {object} o * @memberof DataTable#oApi */ function _fnHungarianMap ( o ) { var hungarian = 'a aa ai ao as b fn i m o s ', match, newKey, map = {}; $.each( o, function (key, val) { match = key.match(/^([^A-Z]+?)([A-Z])/); if ( match && hungarian.indexOf(match[1]+' ') !== -1 ) { newKey = key.replace( match[0], match[2].toLowerCase() ); map[ newKey ] = key; if ( match[1] === 'o' ) { _fnHungarianMap( o[key] ); } } } ); o._hungarianMap = map; } /** * Convert from camel case parameters to Hungarian, based on a Hungarian map * created by _fnHungarianMap. * @param {object} src The model object which holds all parameters that can be * mapped. * @param {object} user The object to convert from camel case to Hungarian. * @param {boolean} force When set to `true`, properties which already have a * Hungarian value in the `user` object will be overwritten. Otherwise they * won't be. * @memberof DataTable#oApi */ function _fnCamelToHungarian ( src, user, force ) { if ( ! src._hungarianMap ) { _fnHungarianMap( src ); } var hungarianKey; $.each( user, function (key, val) { hungarianKey = src._hungarianMap[ key ]; if ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) ) { // For objects, we need to buzz down into the object to copy parameters if ( hungarianKey.charAt(0) === 'o' ) { // Copy the camelCase options over to the hungarian if ( ! user[ hungarianKey ] ) { user[ hungarianKey ] = {}; } $.extend( true, user[hungarianKey], user[key] ); _fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force ); } else { user[hungarianKey] = user[ key ]; } } } ); } /** * Language compatibility - when certain options are given, and others aren't, we * need to duplicate the values over, in order to provide backwards compatibility * with older language files. * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnLanguageCompat( lang ) { var defaults = DataTable.defaults.oLanguage; var zeroRecords = lang.sZeroRecords; /* Backwards compatibility - if there is no sEmptyTable given, then use the same as * sZeroRecords - assuming that is given. */ if ( ! lang.sEmptyTable && zeroRecords && defaults.sEmptyTable === "No data available in table" ) { _fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' ); } /* Likewise with loading records */ if ( ! lang.sLoadingRecords && zeroRecords && defaults.sLoadingRecords === "Loading..." ) { _fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' ); } // Old parameter name of the thousands separator mapped onto the new if ( lang.sInfoThousands ) { lang.sThousands = lang.sInfoThousands; } var decimal = lang.sDecimal; if ( decimal ) { _addNumericSort( decimal ); } } /** * Map one parameter onto another * @param {object} o Object to map * @param {*} knew The new parameter name * @param {*} old The old parameter name */ var _fnCompatMap = function ( o, knew, old ) { if ( o[ knew ] !== undefined ) { o[ old ] = o[ knew ]; } }; /** * Provide backwards compatibility for the main DT options. Note that the new * options are mapped onto the old parameters, so this is an external interface * change only. * @param {object} init Object to map */ function _fnCompatOpts ( init ) { _fnCompatMap( init, 'ordering', 'bSort' ); _fnCompatMap( init, 'orderMulti', 'bSortMulti' ); _fnCompatMap( init, 'orderClasses', 'bSortClasses' ); _fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' ); _fnCompatMap( init, 'order', 'aaSorting' ); _fnCompatMap( init, 'orderFixed', 'aaSortingFixed' ); _fnCompatMap( init, 'paging', 'bPaginate' ); _fnCompatMap( init, 'pagingType', 'sPaginationType' ); _fnCompatMap( init, 'pageLength', 'iDisplayLength' ); _fnCompatMap( init, 'searching', 'bFilter' ); // Boolean initialisation of x-scrolling if ( typeof init.sScrollX === 'boolean' ) { init.sScrollX = init.sScrollX ? '100%' : ''; } if ( typeof init.scrollX === 'boolean' ) { init.scrollX = init.scrollX ? '100%' : ''; } // Column search objects are in an array, so it needs to be converted // element by element var searchCols = init.aoSearchCols; if ( searchCols ) { for ( var i=0, ien=searchCols.length ; i<ien ; i++ ) { if ( searchCols[i] ) { _fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] ); } } } } /** * Provide backwards compatibility for column options. Note that the new options * are mapped onto the old parameters, so this is an external interface change * only. * @param {object} init Object to map */ function _fnCompatCols ( init ) { _fnCompatMap( init, 'orderable', 'bSortable' ); _fnCompatMap( init, 'orderData', 'aDataSort' ); _fnCompatMap( init, 'orderSequence', 'asSorting' ); _fnCompatMap( init, 'orderDataType', 'sortDataType' ); // orderData can be given as an integer var dataSort = init.aDataSort; if ( typeof dataSort === 'number' && ! $.isArray( dataSort ) ) { init.aDataSort = [ dataSort ]; } } /** * Browser feature detection for capabilities, quirks * @param {object} settings dataTables settings object * @memberof DataTable#oApi */ function _fnBrowserDetect( settings ) { // We don't need to do this every time DataTables is constructed, the values // calculated are specific to the browser and OS configuration which we // don't expect to change between initialisations if ( ! DataTable.__browser ) { var browser = {}; DataTable.__browser = browser; // Scrolling feature / quirks detection var n = $('<div/>') .css( { position: 'fixed', top: 0, left: $(window).scrollLeft()*-1, // allow for scrolling height: 1, width: 1, overflow: 'hidden' } ) .append( $('<div/>') .css( { position: 'absolute', top: 1, left: 1, width: 100, overflow: 'scroll' } ) .append( $('<div/>') .css( { width: '100%', height: 10 } ) ) ) .appendTo( 'body' ); var outer = n.children(); var inner = outer.children(); // Numbers below, in order, are: // inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth // // IE6 XP: 100 100 100 83 // IE7 Vista: 100 100 100 83 // IE 8+ Windows: 83 83 100 83 // Evergreen Windows: 83 83 100 83 // Evergreen Mac with scrollbars: 85 85 100 85 // Evergreen Mac without scrollbars: 100 100 100 100 // Get scrollbar width browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth; // IE6/7 will oversize a width 100% element inside a scrolling element, to // include the width of the scrollbar, while other browsers ensure the inner // element is contained without forcing scrolling browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100; // In rtl text layout, some browsers (most, but not all) will place the // scrollbar on the left, rather than the right. browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1; // IE8- don't provide height and width for getBoundingClientRect browser.bBounding = n[0].getBoundingClientRect().width ? true : false; n.remove(); } $.extend( settings.oBrowser, DataTable.__browser ); settings.oScroll.iBarWidth = DataTable.__browser.barWidth; } /** * Array.prototype reduce[Right] method, used for browsers which don't support * JS 1.6. Done this way to reduce code size, since we iterate either way * @param {object} settings dataTables settings object * @memberof DataTable#oApi */ function _fnReduce ( that, fn, init, start, end, inc ) { var i = start, value, isSet = false; if ( init !== undefined ) { value = init; isSet = true; } while ( i !== end ) { if ( ! that.hasOwnProperty(i) ) { continue; } value = isSet ? fn( value, that[i], i, that ) : that[i]; isSet = true; i += inc; } return value; } /** * Add a column to the list used for the table with default values * @param {object} oSettings dataTables settings object * @param {node} nTh The th element for this column * @memberof DataTable#oApi */ function _fnAddColumn( oSettings, nTh ) { // Add column to aoColumns array var oDefaults = DataTable.defaults.column; var iCol = oSettings.aoColumns.length; var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { "nTh": nTh ? nTh : document.createElement('th'), "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], "mData": oDefaults.mData ? oDefaults.mData : iCol, idx: iCol } ); oSettings.aoColumns.push( oCol ); // Add search object for column specific search. Note that the `searchCols[ iCol ]` // passed into extend can be undefined. This allows the user to give a default // with only some of the parameters defined, and also not give a default var searchCols = oSettings.aoPreSearchCols; searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); // Use the default column options function to initialise classes etc _fnColumnOptions( oSettings, iCol, $(nTh).data() ); } /** * Apply options for a column * @param {object} oSettings dataTables settings object * @param {int} iCol column index to consider * @param {object} oOptions object with sType, bVisible and bSearchable etc * @memberof DataTable#oApi */ function _fnColumnOptions( oSettings, iCol, oOptions ) { var oCol = oSettings.aoColumns[ iCol ]; var oClasses = oSettings.oClasses; var th = $(oCol.nTh); // Try to get width information from the DOM. We can't get it from CSS // as we'd need to parse the CSS stylesheet. `width` option can override if ( ! oCol.sWidthOrig ) { // Width attribute oCol.sWidthOrig = th.attr('width') || null; // Style attribute var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); if ( t ) { oCol.sWidthOrig = t[1]; } } /* User specified column options */ if ( oOptions !== undefined && oOptions !== null ) { // Backwards compatibility _fnCompatCols( oOptions ); // Map camel case parameters to their Hungarian counterparts _fnCamelToHungarian( DataTable.defaults.column, oOptions ); /* Backwards compatibility for mDataProp */ if ( oOptions.mDataProp !== undefined && !oOptions.mData ) { oOptions.mData = oOptions.mDataProp; } if ( oOptions.sType ) { oCol._sManualType = oOptions.sType; } // `class` is a reserved word in Javascript, so we need to provide // the ability to use a valid name for the camel case input if ( oOptions.className && ! oOptions.sClass ) { oOptions.sClass = oOptions.className; } if ( oOptions.sClass ) { th.addClass( oOptions.sClass ); } $.extend( oCol, oOptions ); _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); /* iDataSort to be applied (backwards compatibility), but aDataSort will take * priority if defined */ if ( oOptions.iDataSort !== undefined ) { oCol.aDataSort = [ oOptions.iDataSort ]; } _fnMap( oCol, oOptions, "aDataSort" ); } /* Cache the data get and set functions for speed */ var mDataSrc = oCol.mData; var mData = _fnGetObjectDataFn( mDataSrc ); var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; var attrTest = function( src ) { return typeof src === 'string' && src.indexOf('@') !== -1; }; oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) ); oCol._setter = null; oCol.fnGetData = function (rowData, type, meta) { var innerData = mData( rowData, type, undefined, meta ); return mRender && type ? mRender( innerData, type, rowData, meta ) : innerData; }; oCol.fnSetData = function ( rowData, val, meta ) { return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); }; // Indicate if DataTables should read DOM data as an object or array // Used in _fnGetRowElements if ( typeof mDataSrc !== 'number' ) { oSettings._rowReadObject = true; } /* Feature sorting overrides column specific when off */ if ( !oSettings.oFeatures.bSort ) { oCol.bSortable = false; th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called } /* Check that the class assignment is correct for sorting */ var bAsc = $.inArray('asc', oCol.asSorting) !== -1; var bDesc = $.inArray('desc', oCol.asSorting) !== -1; if ( !oCol.bSortable || (!bAsc && !bDesc) ) { oCol.sSortingClass = oClasses.sSortableNone; oCol.sSortingClassJUI = ""; } else if ( bAsc && !bDesc ) { oCol.sSortingClass = oClasses.sSortableAsc; oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; } else if ( !bAsc && bDesc ) { oCol.sSortingClass = oClasses.sSortableDesc; oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; } else { oCol.sSortingClass = oClasses.sSortable; oCol.sSortingClassJUI = oClasses.sSortJUI; } } /** * Adjust the table column widths for new data. Note: you would probably want to * do a redraw after calling this function! * @param {object} settings dataTables settings object * @memberof DataTable#oApi */ function _fnAdjustColumnSizing ( settings ) { /* Not interested in doing column width calculation if auto-width is disabled */ if ( settings.oFeatures.bAutoWidth !== false ) { var columns = settings.aoColumns; _fnCalculateColumnWidths( settings ); for ( var i=0 , iLen=columns.length ; i<iLen ; i++ ) { columns[i].nTh.style.width = columns[i].sWidth; } } var scroll = settings.oScroll; if ( scroll.sY !== '' || scroll.sX !== '') { _fnScrollDraw( settings ); } _fnCallbackFire( settings, null, 'column-sizing', [settings] ); } /** * Covert the index of a visible column to the index in the data array (take account * of hidden columns) * @param {object} oSettings dataTables settings object * @param {int} iMatch Visible column index to lookup * @returns {int} i the data index * @memberof DataTable#oApi */ function _fnVisibleToColumnIndex( oSettings, iMatch ) { var aiVis = _fnGetColumns( oSettings, 'bVisible' ); return typeof aiVis[iMatch] === 'number' ? aiVis[iMatch] : null; } /** * Covert the index of an index in the data array and convert it to the visible * column index (take account of hidden columns) * @param {int} iMatch Column index to lookup * @param {object} oSettings dataTables settings object * @returns {int} i the data index * @memberof DataTable#oApi */ function _fnColumnIndexToVisible( oSettings, iMatch ) { var aiVis = _fnGetColumns( oSettings, 'bVisible' ); var iPos = $.inArray( iMatch, aiVis ); return iPos !== -1 ? iPos : null; } /** * Get the number of visible columns * @param {object} oSettings dataTables settings object * @returns {int} i the number of visible columns * @memberof DataTable#oApi */ function _fnVisbleColumns( oSettings ) { var vis = 0; // No reduce in IE8, use a loop for now $.each( oSettings.aoColumns, function ( i, col ) { if ( col.bVisible && $(col.nTh).css('display') !== 'none' ) { vis++; } } ); return vis; } /** * Get an array of column indexes that match a given property * @param {object} oSettings dataTables settings object * @param {string} sParam Parameter in aoColumns to look for - typically * bVisible or bSearchable * @returns {array} Array of indexes with matched properties * @memberof DataTable#oApi */ function _fnGetColumns( oSettings, sParam ) { var a = []; $.map( oSettings.aoColumns, function(val, i) { if ( val[sParam] ) { a.push( i ); } } ); return a; } /** * Calculate the 'type' of a column * @param {object} settings dataTables settings object * @memberof DataTable#oApi */ function _fnColumnTypes ( settings ) { var columns = settings.aoColumns; var data = settings.aoData; var types = DataTable.ext.type.detect; var i, ien, j, jen, k, ken; var col, cell, detectedType, cache; // For each column, spin over the for ( i=0, ien=columns.length ; i<ien ; i++ ) { col = columns[i]; cache = []; if ( ! col.sType && col._sManualType ) { col.sType = col._sManualType; } else if ( ! col.sType ) { for ( j=0, jen=types.length ; j<jen ; j++ ) { for ( k=0, ken=data.length ; k<ken ; k++ ) { // Use a cache array so we only need to get the type data // from the formatter once (when using multiple detectors) if ( cache[k] === undefined ) { cache[k] = _fnGetCellData( settings, k, i, 'type' ); } detectedType = types[j]( cache[k], settings ); // If null, then this type can't apply to this column, so // rather than testing all cells, break out. There is an // exception for the last type which is `html`. We need to // scan all rows since it is possible to mix string and HTML // types if ( ! detectedType && j !== types.length-1 ) { break; } // Only a single match is needed for html type since it is // bottom of the pile and very similar to string if ( detectedType === 'html' ) { break; } } // Type is valid for all data points in the column - use this // type if ( detectedType ) { col.sType = detectedType; break; } } // Fall back - if no type was detected, always use string if ( ! col.sType ) { col.sType = 'string'; } } } } /** * Take the column definitions and static columns arrays and calculate how * they relate to column indexes. The callback function will then apply the * definition found for a column to a suitable configuration object. * @param {object} oSettings dataTables settings object * @param {array} aoColDefs The aoColumnDefs array that is to be applied * @param {array} aoCols The aoColumns array that defines columns individually * @param {function} fn Callback function - takes two parameters, the calculated * column index and the definition for that column. * @memberof DataTable#oApi */ function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn ) { var i, iLen, j, jLen, k, kLen, def; var columns = oSettings.aoColumns; // Column definitions with aTargets if ( aoColDefs ) { /* Loop over the definitions array - loop in reverse so first instance has priority */ for ( i=aoColDefs.length-1 ; i>=0 ; i-- ) { def = aoColDefs[i]; /* Each definition can target multiple columns, as it is an array */ var aTargets = def.targets !== undefined ? def.targets : def.aTargets; if ( ! $.isArray( aTargets ) ) { aTargets = [ aTargets ]; } for ( j=0, jLen=aTargets.length ; j<jLen ; j++ ) { if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 ) { /* Add columns that we don't yet know about */ while( columns.length <= aTargets[j] ) { _fnAddColumn( oSettings ); } /* Integer, basic index */ fn( aTargets[j], def ); } else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 ) { /* Negative integer, right to left column counting */ fn( columns.length+aTargets[j], def ); } else if ( typeof aTargets[j] === 'string' ) { /* Class name matching on TH element */ for ( k=0, kLen=columns.length ; k<kLen ; k++ ) { if ( aTargets[j] == "_all" || $(columns[k].nTh).hasClass( aTargets[j] ) ) { fn( k, def ); } } } } } } // Statically defined columns array if ( aoCols ) { for ( i=0, iLen=aoCols.length ; i<iLen ; i++ ) { fn( i, aoCols[i] ); } } } /** * Add a data array to the table, creating DOM node etc. This is the parallel to * _fnGatherData, but for adding rows from a Javascript source, rather than a * DOM source. * @param {object} oSettings dataTables settings object * @param {array} aData data array to be added * @param {node} [nTr] TR element to add to the table - optional. If not given, * DataTables will create a row automatically * @param {array} [anTds] Array of TD|TH elements for the row - must be given * if nTr is. * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed * @memberof DataTable#oApi */ function _fnAddData ( oSettings, aDataIn, nTr, anTds ) { /* Create the object for storing information about this new row */ var iRow = oSettings.aoData.length; var oData = $.extend( true, {}, DataTable.models.oRow, { src: nTr ? 'dom' : 'data', idx: iRow } ); oData._aData = aDataIn; oSettings.aoData.push( oData ); /* Create the cells */ var nTd, sThisType; var columns = oSettings.aoColumns; // Invalidate the column types as the new data needs to be revalidated for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) { columns[i].sType = null; } /* Add to the display array */ oSettings.aiDisplayMaster.push( iRow ); var id = oSettings.rowIdFn( aDataIn ); if ( id !== undefined ) { oSettings.aIds[ id ] = oData; } /* Create the DOM information, or register it if already present */ if ( nTr || ! oSettings.oFeatures.bDeferRender ) { _fnCreateTr( oSettings, iRow, nTr, anTds ); } return iRow; } /** * Add one or more TR elements to the table. Generally we'd expect to * use this for reading data from a DOM sourced table, but it could be * used for an TR element. Note that if a TR is given, it is used (i.e. * it is not cloned). * @param {object} settings dataTables settings object * @param {array|node|jQuery} trs The TR element(s) to add to the table * @returns {array} Array of indexes for the added rows * @memberof DataTable#oApi */ function _fnAddTr( settings, trs ) { var row; // Allow an individual node to be passed in if ( ! (trs instanceof $) ) { trs = $(trs); } return trs.map( function (i, el) { row = _fnGetRowElements( settings, el ); return _fnAddData( settings, row.data, el, row.cells ); } ); } /** * Take a TR element and convert it to an index in aoData * @param {object} oSettings dataTables settings object * @param {node} n the TR element to find * @returns {int} index if the node is found, null if not * @memberof DataTable#oApi */ function _fnNodeToDataIndex( oSettings, n ) { return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null; } /** * Take a TD element and convert it into a column data index (not the visible index) * @param {object} oSettings dataTables settings object * @param {int} iRow The row number the TD/TH can be found in * @param {node} n The TD/TH element to find * @returns {int} index if the node is found, -1 if not * @memberof DataTable#oApi */ function _fnNodeToColumnIndex( oSettings, iRow, n ) { return $.inArray( n, oSettings.aoData[ iRow ].anCells ); } /** * Get the data for a given cell from the internal cache, taking into account data mapping * @param {object} settings dataTables settings object * @param {int} rowIdx aoData row id * @param {int} colIdx Column index * @param {string} type data get type ('display', 'type' 'filter' 'sort') * @returns {*} Cell data * @memberof DataTable#oApi */ function _fnGetCellData( settings, rowIdx, colIdx, type ) { var draw = settings.iDraw; var col = settings.aoColumns[colIdx]; var rowData = settings.aoData[rowIdx]._aData; var defaultContent = col.sDefaultContent; var cellData = col.fnGetData( rowData, type, { settings: settings, row: rowIdx, col: colIdx } ); if ( cellData === undefined ) { if ( settings.iDrawError != draw && defaultContent === null ) { _fnLog( settings, 0, "Requested unknown parameter "+ (typeof col.mData=='function' ? '{function}' : "'"+col.mData+"'")+ " for row "+rowIdx+", column "+colIdx, 4 ); settings.iDrawError = draw; } return defaultContent; } // When the data source is null and a specific data type is requested (i.e. // not the original data), we can use default column data if ( (cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined ) { cellData = defaultContent; } else if ( typeof cellData === 'function' ) { // If the data source is a function, then we run it and use the return, // executing in the scope of the data object (for instances) return cellData.call( rowData ); } if ( cellData === null && type == 'display' ) { return ''; } return cellData; } /** * Set the value for a specific cell, into the internal data cache * @param {object} settings dataTables settings object * @param {int} rowIdx aoData row id * @param {int} colIdx Column index * @param {*} val Value to set * @memberof DataTable#oApi */ function _fnSetCellData( settings, rowIdx, colIdx, val ) { var col = settings.aoColumns[colIdx]; var rowData = settings.aoData[rowIdx]._aData; col.fnSetData( rowData, val, { settings: settings, row: rowIdx, col: colIdx } ); } // Private variable that is used to match action syntax in the data property object var __reArray = /\[.*?\]$/; var __reFn = /\(\)$/; /** * Split string on periods, taking into account escaped periods * @param {string} str String to split * @return {array} Split string */ function _fnSplitObjNotation( str ) { return $.map( str.match(/(\\.|[^\.])+/g) || [''], function ( s ) { return s.replace(/\\\./g, '.'); } ); } /** * Return a function that can be used to get data from a source object, taking * into account the ability to use nested objects as a source * @param {string|int|function} mSource The data source for the object * @returns {function} Data get function * @memberof DataTable#oApi */ function _fnGetObjectDataFn( mSource ) { if ( $.isPlainObject( mSource ) ) { /* Build an object of get functions, and wrap them in a single call */ var o = {}; $.each( mSource, function (key, val) { if ( val ) { o[key] = _fnGetObjectDataFn( val ); } } ); return function (data, type, row, meta) { var t = o[type] || o._; return t !== undefined ? t(data, type, row, meta) : data; }; } else if ( mSource === null ) { /* Give an empty string for rendering / sorting etc */ return function (data) { // type, row and meta also passed, but not used return data; }; } else if ( typeof mSource === 'function' ) { return function (data, type, row, meta) { return mSource( data, type, row, meta ); }; } else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) { /* If there is a . in the source string then the data source is in a * nested object so we loop over the data for each level to get the next * level down. On each loop we test for undefined, and if found immediately * return. This allows entire objects to be missing and sDefaultContent to * be used if defined, rather than throwing an error */ var fetchData = function (data, type, src) { var arrayNotation, funcNotation, out, innerSrc; if ( src !== "" ) { var a = _fnSplitObjNotation( src ); for ( var i=0, iLen=a.length ; i<iLen ; i++ ) { // Check if we are dealing with special notation arrayNotation = a[i].match(__reArray); funcNotation = a[i].match(__reFn); if ( arrayNotation ) { // Array notation a[i] = a[i].replace(__reArray, ''); // Condition allows simply [] to be passed in if ( a[i] !== "" ) { data = data[ a[i] ]; } out = []; // Get the remainder of the nested object to get a.splice( 0, i+1 ); innerSrc = a.join('.'); // Traverse each entry in the array getting the properties requested if ( $.isArray( data ) ) { for ( var j=0, jLen=data.length ; j<jLen ; j++ ) { out.push( fetchData( data[j], type, innerSrc ) ); } } // If a string is given in between the array notation indicators, that // is used to join the strings together, otherwise an array is returned var join = arrayNotation[0].substring(1, arrayNotation[0].length-1); data = (join==="") ? out : out.join(join); // The inner call to fetchData has already traversed through the remainder // of the source requested, so we exit from the loop break; } else if ( funcNotation ) { // Function call a[i] = a[i].replace(__reFn, ''); data = data[ a[i] ](); continue; } if ( data === null || data[ a[i] ] === undefined ) { return undefined; } data = data[ a[i] ]; } } return data; }; return function (data, type) { // row and meta also passed, but not used return fetchData( data, type, mSource ); }; } else { /* Array or flat object mapping */ return function (data, type) { // row and meta also passed, but not used return data[mSource]; }; } } /** * Return a function that can be used to set data from a source object, taking * into account the ability to use nested objects as a source * @param {string|int|function} mSource The data source for the object * @returns {function} Data set function * @memberof DataTable#oApi */ function _fnSetObjectDataFn( mSource ) { if ( $.isPlainObject( mSource ) ) { /* Unlike get, only the underscore (global) option is used for for * setting data since we don't know the type here. This is why an object * option is not documented for `mData` (which is read/write), but it is * for `mRender` which is read only. */ return _fnSetObjectDataFn( mSource._ ); } else if ( mSource === null ) { /* Nothing to do when the data source is null */ return function () {}; } else if ( typeof mSource === 'function' ) { return function (data, val, meta) { mSource( data, 'set', val, meta ); }; } else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) ) { /* Like the get, we need to get data from a nested object */ var setData = function (data, val, src) { var a = _fnSplitObjNotation( src ), b; var aLast = a[a.length-1]; var arrayNotation, funcNotation, o, innerSrc; for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) { // Check if we are dealing with an array notation request arrayNotation = a[i].match(__reArray); funcNotation = a[i].match(__reFn); if ( arrayNotation ) { a[i] = a[i].replace(__reArray, ''); data[ a[i] ] = []; // Get the remainder of the nested object to set so we can recurse b = a.slice(); b.splice( 0, i+1 ); innerSrc = b.join('.'); // Traverse each entry in the array setting the properties requested if ( $.isArray( val ) ) { for ( var j=0, jLen=val.length ; j<jLen ; j++ ) { o = {}; setData( o, val[j], innerSrc ); data[ a[i] ].push( o ); } } else { // We've been asked to save data to an array, but it // isn't array data to be saved. Best that can be done // is to just save the value. data[ a[i] ] = val; } // The inner call to setData has already traversed through the remainder // of the source and has set the data, thus we can exit here return; } else if ( funcNotation ) { // Function call a[i] = a[i].replace(__reFn, ''); data = data[ a[i] ]( val ); } // If the nested object doesn't currently exist - since we are // trying to set the value - create it if ( data[ a[i] ] === null || data[ a[i] ] === undefined ) { data[ a[i] ] = {}; } data = data[ a[i] ]; } // Last item in the input - i.e, the actual set if ( aLast.match(__reFn ) ) { // Function call data = data[ aLast.replace(__reFn, '') ]( val ); } else { // If array notation is used, we just want to strip it and use the property name // and assign the value. If it isn't used, then we get the result we want anyway data[ aLast.replace(__reArray, '') ] = val; } }; return function (data, val) { // meta is also passed in, but not used return setData( data, val, mSource ); }; } else { /* Array or flat object mapping */ return function (data, val) { // meta is also passed in, but not used data[mSource] = val; }; } } /** * Return an array with the full table data * @param {object} oSettings dataTables settings object * @returns array {array} aData Master data array * @memberof DataTable#oApi */ function _fnGetDataMaster ( settings ) { return _pluck( settings.aoData, '_aData' ); } /** * Nuke the table * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnClearTable( settings ) { settings.aoData.length = 0; settings.aiDisplayMaster.length = 0; settings.aiDisplay.length = 0; settings.aIds = {}; } /** * Take an array of integers (index array) and remove a target integer (value - not * the key!) * @param {array} a Index array to target * @param {int} iTarget value to find * @memberof DataTable#oApi */ function _fnDeleteIndex( a, iTarget, splice ) { var iTargetIndex = -1; for ( var i=0, iLen=a.length ; i<iLen ; i++ ) { if ( a[i] == iTarget ) { iTargetIndex = i; } else if ( a[i] > iTarget ) { a[i]--; } } if ( iTargetIndex != -1 && splice === undefined ) { a.splice( iTargetIndex, 1 ); } } /** * Mark cached data as invalid such that a re-read of the data will occur when * the cached data is next requested. Also update from the data source object. * * @param {object} settings DataTables settings object * @param {int} rowIdx Row index to invalidate * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom' * or 'data' * @param {int} [colIdx] Column index to invalidate. If undefined the whole * row will be invalidated * @memberof DataTable#oApi * * @todo For the modularisation of v1.11 this will need to become a callback, so * the sort and filter methods can subscribe to it. That will required * initialisation options for sorting, which is why it is not already baked in */ function _fnInvalidate( settings, rowIdx, src, colIdx ) { var row = settings.aoData[ rowIdx ]; var i, ien; var cellWrite = function ( cell, col ) { // This is very frustrating, but in IE if you just write directly // to innerHTML, and elements that are overwritten are GC'ed, // even if there is a reference to them elsewhere while ( cell.childNodes.length ) { cell.removeChild( cell.firstChild ); } cell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' ); }; // Are we reading last data from DOM or the data object? if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) { // Read the data from the DOM row._aData = _fnGetRowElements( settings, row, colIdx, colIdx === undefined ? undefined : row._aData ) .data; } else { // Reading from data object, update the DOM var cells = row.anCells; if ( cells ) { if ( colIdx !== undefined ) { cellWrite( cells[colIdx], colIdx ); } else { for ( i=0, ien=cells.length ; i<ien ; i++ ) { cellWrite( cells[i], i ); } } } } // For both row and cell invalidation, the cached data for sorting and // filtering is nulled out row._aSortData = null; row._aFilterData = null; // Invalidate the type for a specific column (if given) or all columns since // the data might have changed var cols = settings.aoColumns; if ( colIdx !== undefined ) { cols[ colIdx ].sType = null; } else { for ( i=0, ien=cols.length ; i<ien ; i++ ) { cols[i].sType = null; } // Update DataTables special `DT_*` attributes for the row _fnRowAttributes( settings, row ); } } /** * Build a data source object from an HTML row, reading the contents of the * cells that are in the row. * * @param {object} settings DataTables settings object * @param {node|object} TR element from which to read data or existing row * object from which to re-read the data from the cells * @param {int} [colIdx] Optional column index * @param {array|object} [d] Data source object. If `colIdx` is given then this * parameter should also be given and will be used to write the data into. * Only the column in question will be written * @returns {object} Object with two parameters: `data` the data read, in * document order, and `cells` and array of nodes (they can be useful to the * caller, so rather than needing a second traversal to get them, just return * them from here). * @memberof DataTable#oApi */ function _fnGetRowElements( settings, row, colIdx, d ) { var tds = [], td = row.firstChild, name, col, o, i=0, contents, columns = settings.aoColumns, objectRead = settings._rowReadObject; // Allow the data object to be passed in, or construct d = d !== undefined ? d : objectRead ? {} : []; var attr = function ( str, td ) { if ( typeof str === 'string' ) { var idx = str.indexOf('@'); if ( idx !== -1 ) { var attr = str.substring( idx+1 ); var setter = _fnSetObjectDataFn( str ); setter( d, td.getAttribute( attr ) ); } } }; // Read data from a cell and store into the data object var cellProcess = function ( cell ) { if ( colIdx === undefined || colIdx === i ) { col = columns[i]; contents = $.trim(cell.innerHTML); if ( col && col._bAttrSrc ) { var setter = _fnSetObjectDataFn( col.mData._ ); setter( d, contents ); attr( col.mData.sort, cell ); attr( col.mData.type, cell ); attr( col.mData.filter, cell ); } else { // Depending on the `data` option for the columns the data can // be read to either an object or an array. if ( objectRead ) { if ( ! col._setter ) { // Cache the setter function col._setter = _fnSetObjectDataFn( col.mData ); } col._setter( d, contents ); } else { d[i] = contents; } } } i++; }; if ( td ) { // `tr` element was passed in while ( td ) { name = td.nodeName.toUpperCase(); if ( name == "TD" || name == "TH" ) { cellProcess( td ); tds.push( td ); } td = td.nextSibling; } } else { // Existing row object passed in tds = row.anCells; for ( var j=0, jen=tds.length ; j<jen ; j++ ) { cellProcess( tds[j] ); } } // Read the ID from the DOM if present var rowNode = row.firstChild ? row : row.nTr; if ( rowNode ) { var id = rowNode.getAttribute( 'id' ); if ( id ) { _fnSetObjectDataFn( settings.rowId )( d, id ); } } return { data: d, cells: tds }; } /** * Create a new TR element (and it's TD children) for a row * @param {object} oSettings dataTables settings object * @param {int} iRow Row to consider * @param {node} [nTrIn] TR element to add to the table - optional. If not given, * DataTables will create a row automatically * @param {array} [anTds] Array of TD|TH elements for the row - must be given * if nTr is. * @memberof DataTable#oApi */ function _fnCreateTr ( oSettings, iRow, nTrIn, anTds ) { var row = oSettings.aoData[iRow], rowData = row._aData, cells = [], nTr, nTd, oCol, i, iLen; if ( row.nTr === null ) { nTr = nTrIn || document.createElement('tr'); row.nTr = nTr; row.anCells = cells; /* Use a private property on the node to allow reserve mapping from the node * to the aoData array for fast look up */ nTr._DT_RowIndex = iRow; /* Special parameters can be given by the data source to be used on the row */ _fnRowAttributes( oSettings, row ); /* Process each column */ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ ) { oCol = oSettings.aoColumns[i]; nTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType ); nTd._DT_CellIndex = { row: iRow, column: i }; cells.push( nTd ); // Need to create the HTML if new, or if a rendering function is defined if ( (!nTrIn || oCol.mRender || oCol.mData !== i) && (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i+'.display') ) { nTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' ); } /* Add user defined class */ if ( oCol.sClass ) { nTd.className += ' '+oCol.sClass; } // Visibility - add or remove as required if ( oCol.bVisible && ! nTrIn ) { nTr.appendChild( nTd ); } else if ( ! oCol.bVisible && nTrIn ) { nTd.parentNode.removeChild( nTd ); } if ( oCol.fnCreatedCell ) { oCol.fnCreatedCell.call( oSettings.oInstance, nTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i ); } } _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] ); } // Remove once webkit bug 131819 and Chromium bug 365619 have been resolved // and deployed row.nTr.setAttribute( 'role', 'row' ); } /** * Add attributes to a row based on the special `DT_*` parameters in a data * source object. * @param {object} settings DataTables settings object * @param {object} DataTables row object for the row to be modified * @memberof DataTable#oApi */ function _fnRowAttributes( settings, row ) { var tr = row.nTr; var data = row._aData; if ( tr ) { var id = settings.rowIdFn( data ); if ( id ) { tr.id = id; } if ( data.DT_RowClass ) { // Remove any classes added by DT_RowClass before var a = data.DT_RowClass.split(' '); row.__rowc = row.__rowc ? _unique( row.__rowc.concat( a ) ) : a; $(tr) .removeClass( row.__rowc.join(' ') ) .addClass( data.DT_RowClass ); } if ( data.DT_RowAttr ) { $(tr).attr( data.DT_RowAttr ); } if ( data.DT_RowData ) { $(tr).data( data.DT_RowData ); } } } /** * Create the HTML header for the table * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnBuildHead( oSettings ) { var i, ien, cell, row, column; var thead = oSettings.nTHead; var tfoot = oSettings.nTFoot; var createHeader = $('th, td', thead).length === 0; var classes = oSettings.oClasses; var columns = oSettings.aoColumns; if ( createHeader ) { row = $('<tr/>').appendTo( thead ); } for ( i=0, ien=columns.length ; i<ien ; i++ ) { column = columns[i]; cell = $( column.nTh ).addClass( column.sClass ); if ( createHeader ) { cell.appendTo( row ); } // 1.11 move into sorting if ( oSettings.oFeatures.bSort ) { cell.addClass( column.sSortingClass ); if ( column.bSortable !== false ) { cell .attr( 'tabindex', oSettings.iTabIndex ) .attr( 'aria-controls', oSettings.sTableId ); _fnSortAttachListener( oSettings, column.nTh, i ); } } if ( column.sTitle != cell[0].innerHTML ) { cell.html( column.sTitle ); } _fnRenderer( oSettings, 'header' )( oSettings, cell, column, classes ); } if ( createHeader ) { _fnDetectHeader( oSettings.aoHeader, thead ); } /* ARIA role for the rows */ $(thead).find('>tr').attr('role', 'row'); /* Deal with the footer - add classes if required */ $(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH ); $(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH ); // Cache the footer cells. Note that we only take the cells from the first // row in the footer. If there is more than one row the user wants to // interact with, they need to use the table().foot() method. Note also this // allows cells to be used for multiple columns using colspan if ( tfoot !== null ) { var cells = oSettings.aoFooter[0]; for ( i=0, ien=cells.length ; i<ien ; i++ ) { column = columns[i]; column.nTf = cells[i].cell; if ( column.sClass ) { $(column.nTf).addClass( column.sClass ); } } } } /** * Draw the header (or footer) element based on the column visibility states. The * methodology here is to use the layout array from _fnDetectHeader, modified for * the instantaneous column visibility, to construct the new layout. The grid is * traversed over cell at a time in a rows x columns grid fashion, although each * cell insert can cover multiple elements in the grid - which is tracks using the * aApplied array. Cell inserts in the grid will only occur where there isn't * already a cell in that position. * @param {object} oSettings dataTables settings object * @param array {objects} aoSource Layout array from _fnDetectHeader * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc, * @memberof DataTable#oApi */ function _fnDrawHead( oSettings, aoSource, bIncludeHidden ) { var i, iLen, j, jLen, k, kLen, n, nLocalTr; var aoLocal = []; var aApplied = []; var iColumns = oSettings.aoColumns.length; var iRowspan, iColspan; if ( ! aoSource ) { return; } if ( bIncludeHidden === undefined ) { bIncludeHidden = false; } /* Make a copy of the master layout array, but without the visible columns in it */ for ( i=0, iLen=aoSource.length ; i<iLen ; i++ ) { aoLocal[i] = aoSource[i].slice(); aoLocal[i].nTr = aoSource[i].nTr; /* Remove any columns which are currently hidden */ for ( j=iColumns-1 ; j>=0 ; j-- ) { if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden ) { aoLocal[i].splice( j, 1 ); } } /* Prep the applied array - it needs an element for each row */ aApplied.push( [] ); } for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ ) { nLocalTr = aoLocal[i].nTr; /* All cells are going to be replaced, so empty out the row */ if ( nLocalTr ) { while( (n = nLocalTr.firstChild) ) { nLocalTr.removeChild( n ); } } for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ ) { iRowspan = 1; iColspan = 1; /* Check to see if there is already a cell (row/colspan) covering our target * insert point. If there is, then there is nothing to do. */ if ( aApplied[i][j] === undefined ) { nLocalTr.appendChild( aoLocal[i][j].cell ); aApplied[i][j] = 1; /* Expand the cell to cover as many rows as needed */ while ( aoLocal[i+iRowspan] !== undefined && aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell ) { aApplied[i+iRowspan][j] = 1; iRowspan++; } /* Expand the cell to cover as many columns as needed */ while ( aoLocal[i][j+iColspan] !== undefined && aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell ) { /* Must update the applied array over the rows for the columns */ for ( k=0 ; k<iRowspan ; k++ ) { aApplied[i+k][j+iColspan] = 1; } iColspan++; } /* Do the actual expansion in the DOM */ $(aoLocal[i][j].cell) .attr('rowspan', iRowspan) .attr('colspan', iColspan); } } } } /** * Insert the required TR nodes into the table for display * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnDraw( oSettings ) { /* Provide a pre-callback function which can be used to cancel the draw is false is returned */ var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] ); if ( $.inArray( false, aPreDraw ) !== -1 ) { _fnProcessingDisplay( oSettings, false ); return; } var i, iLen, n; var anRows = []; var iRowCount = 0; var asStripeClasses = oSettings.asStripeClasses; var iStripes = asStripeClasses.length; var iOpenRows = oSettings.aoOpenRows.length; var oLang = oSettings.oLanguage; var iInitDisplayStart = oSettings.iInitDisplayStart; var bServerSide = _fnDataSource( oSettings ) == 'ssp'; var aiDisplay = oSettings.aiDisplay; oSettings.bDrawing = true; /* Check and see if we have an initial draw position from state saving */ if ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 ) { oSettings._iDisplayStart = bServerSide ? iInitDisplayStart : iInitDisplayStart >= oSettings.fnRecordsDisplay() ? 0 : iInitDisplayStart; oSettings.iInitDisplayStart = -1; } var iDisplayStart = oSettings._iDisplayStart; var iDisplayEnd = oSettings.fnDisplayEnd(); /* Server-side processing draw intercept */ if ( oSettings.bDeferLoading ) { oSettings.bDeferLoading = false; oSettings.iDraw++; _fnProcessingDisplay( oSettings, false ); } else if ( !bServerSide ) { oSettings.iDraw++; } else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) ) { return; } if ( aiDisplay.length !== 0 ) { var iStart = bServerSide ? 0 : iDisplayStart; var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd; for ( var j=iStart ; j<iEnd ; j++ ) { var iDataIndex = aiDisplay[j]; var aoData = oSettings.aoData[ iDataIndex ]; if ( aoData.nTr === null ) { _fnCreateTr( oSettings, iDataIndex ); } var nRow = aoData.nTr; /* Remove the old striping classes and then add the new one */ if ( iStripes !== 0 ) { var sStripe = asStripeClasses[ iRowCount % iStripes ]; if ( aoData._sRowStripe != sStripe ) { $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe ); aoData._sRowStripe = sStripe; } } // Row callback functions - might want to manipulate the row // iRowCount and j are not currently documented. Are they at all // useful? _fnCallbackFire( oSettings, 'aoRowCallback', null, [nRow, aoData._aData, iRowCount, j] ); anRows.push( nRow ); iRowCount++; } } else { /* Table is empty - create a row with an empty message in it */ var sZero = oLang.sZeroRecords; if ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' ) { sZero = oLang.sLoadingRecords; } else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 ) { sZero = oLang.sEmptyTable; } anRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } ) .append( $('<td />', { 'valign': 'top', 'colSpan': _fnVisbleColumns( oSettings ), 'class': oSettings.oClasses.sRowEmpty } ).html( sZero ) )[0]; } /* Header and footer callbacks */ _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0], _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0], _fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] ); var body = $(oSettings.nTBody); body.children().detach(); body.append( $(anRows) ); /* Call all required callback functions for the end of a draw */ _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] ); /* Draw is complete, sorting and filtering must be as well */ oSettings.bSorted = false; oSettings.bFiltered = false; oSettings.bDrawing = false; } /** * Redraw the table - taking account of the various features which are enabled * @param {object} oSettings dataTables settings object * @param {boolean} [holdPosition] Keep the current paging position. By default * the paging is reset to the first page * @memberof DataTable#oApi */ function _fnReDraw( settings, holdPosition ) { var features = settings.oFeatures, sort = features.bSort, filter = features.bFilter; if ( sort ) { _fnSort( settings ); } if ( filter ) { _fnFilterComplete( settings, settings.oPreviousSearch ); } else { // No filtering, so we want to just use the display master settings.aiDisplay = settings.aiDisplayMaster.slice(); } if ( holdPosition !== true ) { settings._iDisplayStart = 0; } // Let any modules know about the draw hold position state (used by // scrolling internally) settings._drawHold = holdPosition; _fnDraw( settings ); settings._drawHold = false; } /** * Add the options to the page HTML for the table * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnAddOptionsHtml ( oSettings ) { var classes = oSettings.oClasses; var table = $(oSettings.nTable); var holding = $('<div/>').insertBefore( table ); // Holding element for speed var features = oSettings.oFeatures; // All DataTables are wrapped in a div var insert = $('<div/>', { id: oSettings.sTableId+'_wrapper', 'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter) } ); oSettings.nHolding = holding[0]; oSettings.nTableWrapper = insert[0]; oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling; /* Loop over the user set positioning and place the elements as needed */ var aDom = oSettings.sDom.split(''); var featureNode, cOption, nNewNode, cNext, sAttr, j; for ( var i=0 ; i<aDom.length ; i++ ) { featureNode = null; cOption = aDom[i]; if ( cOption == '<' ) { /* New container div */ nNewNode = $('<div/>')[0]; /* Check to see if we should append an id and/or a class name to the container */ cNext = aDom[i+1]; if ( cNext == "'" || cNext == '"' ) { sAttr = ""; j = 2; while ( aDom[i+j] != cNext ) { sAttr += aDom[i+j]; j++; } /* Replace jQuery UI constants @todo depreciated */ if ( sAttr == "H" ) { sAttr = classes.sJUIHeader; } else if ( sAttr == "F" ) { sAttr = classes.sJUIFooter; } /* The attribute can be in the format of "#id.class", "#id" or "class" This logic * breaks the string into parts and applies them as needed */ if ( sAttr.indexOf('.') != -1 ) { var aSplit = sAttr.split('.'); nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1); nNewNode.className = aSplit[1]; } else if ( sAttr.charAt(0) == "#" ) { nNewNode.id = sAttr.substr(1, sAttr.length-1); } else { nNewNode.className = sAttr; } i += j; /* Move along the position array */ } insert.append( nNewNode ); insert = $(nNewNode); } else if ( cOption == '>' ) { /* End container div */ insert = insert.parent(); } // @todo Move options into their own plugins? else if ( cOption == 'l' && features.bPaginate && features.bLengthChange ) { /* Length */ featureNode = _fnFeatureHtmlLength( oSettings ); } else if ( cOption == 'f' && features.bFilter ) { /* Filter */ featureNode = _fnFeatureHtmlFilter( oSettings ); } else if ( cOption == 'r' && features.bProcessing ) { /* pRocessing */ featureNode = _fnFeatureHtmlProcessing( oSettings ); } else if ( cOption == 't' ) { /* Table */ featureNode = _fnFeatureHtmlTable( oSettings ); } else if ( cOption == 'i' && features.bInfo ) { /* Info */ featureNode = _fnFeatureHtmlInfo( oSettings ); } else if ( cOption == 'p' && features.bPaginate ) { /* Pagination */ featureNode = _fnFeatureHtmlPaginate( oSettings ); } else if ( DataTable.ext.feature.length !== 0 ) { /* Plug-in features */ var aoFeatures = DataTable.ext.feature; for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ ) { if ( cOption == aoFeatures[k].cFeature ) { featureNode = aoFeatures[k].fnInit( oSettings ); break; } } } /* Add to the 2D features array */ if ( featureNode ) { var aanFeatures = oSettings.aanFeatures; if ( ! aanFeatures[cOption] ) { aanFeatures[cOption] = []; } aanFeatures[cOption].push( featureNode ); insert.append( featureNode ); } } /* Built our DOM structure - replace the holding div with what we want */ holding.replaceWith( insert ); oSettings.nHolding = null; } /** * Use the DOM source to create up an array of header cells. The idea here is to * create a layout grid (array) of rows x columns, which contains a reference * to the cell that that point in the grid (regardless of col/rowspan), such that * any column / row could be removed and the new grid constructed * @param array {object} aLayout Array to store the calculated layout in * @param {node} nThead The header/footer element for the table * @memberof DataTable#oApi */ function _fnDetectHeader ( aLayout, nThead ) { var nTrs = $(nThead).children('tr'); var nTr, nCell; var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan; var bUnique; var fnShiftCol = function ( a, i, j ) { var k = a[i]; while ( k[j] ) { j++; } return j; }; aLayout.splice( 0, aLayout.length ); /* We know how many rows there are in the layout - so prep it */ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) { aLayout.push( [] ); } /* Calculate a layout array */ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ ) { nTr = nTrs[i]; iColumn = 0; /* For every cell in the row... */ nCell = nTr.firstChild; while ( nCell ) { if ( nCell.nodeName.toUpperCase() == "TD" || nCell.nodeName.toUpperCase() == "TH" ) { /* Get the col and rowspan attributes from the DOM and sanitise them */ iColspan = nCell.getAttribute('colspan') * 1; iRowspan = nCell.getAttribute('rowspan') * 1; iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan; iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan; /* There might be colspan cells already in this row, so shift our target * accordingly */ iColShifted = fnShiftCol( aLayout, i, iColumn ); /* Cache calculation for unique columns */ bUnique = iColspan === 1 ? true : false; /* If there is col / rowspan, copy the information into the layout grid */ for ( l=0 ; l<iColspan ; l++ ) { for ( k=0 ; k<iRowspan ; k++ ) { aLayout[i+k][iColShifted+l] = { "cell": nCell, "unique": bUnique }; aLayout[i+k].nTr = nTr; } } } nCell = nCell.nextSibling; } } } /** * Get an array of unique th elements, one for each column * @param {object} oSettings dataTables settings object * @param {node} nHeader automatically detect the layout from this node - optional * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional * @returns array {node} aReturn list of unique th's * @memberof DataTable#oApi */ function _fnGetUniqueThs ( oSettings, nHeader, aLayout ) { var aReturn = []; if ( !aLayout ) { aLayout = oSettings.aoHeader; if ( nHeader ) { aLayout = []; _fnDetectHeader( aLayout, nHeader ); } } for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ ) { for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ ) { if ( aLayout[i][j].unique && (!aReturn[j] || !oSettings.bSortCellsTop) ) { aReturn[j] = aLayout[i][j].cell; } } } return aReturn; } /** * Create an Ajax call based on the table's settings, taking into account that * parameters can have multiple forms, and backwards compatibility. * * @param {object} oSettings dataTables settings object * @param {array} data Data to send to the server, required by * DataTables - may be augmented by developer callbacks * @param {function} fn Callback function to run when data is obtained */ function _fnBuildAjax( oSettings, data, fn ) { // Compatibility with 1.9-, allow fnServerData and event to manipulate _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] ); // Convert to object based for 1.10+ if using the old array scheme which can // come from server-side processing or serverParams if ( data && $.isArray(data) ) { var tmp = {}; var rbracket = /(.*?)\[\]$/; $.each( data, function (key, val) { var match = val.name.match(rbracket); if ( match ) { // Support for arrays var name = match[0]; if ( ! tmp[ name ] ) { tmp[ name ] = []; } tmp[ name ].push( val.value ); } else { tmp[val.name] = val.value; } } ); data = tmp; } var ajaxData; var ajax = oSettings.ajax; var instance = oSettings.oInstance; var callback = function ( json ) { _fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] ); fn( json ); }; if ( $.isPlainObject( ajax ) && ajax.data ) { ajaxData = ajax.data; var newData = $.isFunction( ajaxData ) ? ajaxData( data, oSettings ) : // fn can manipulate data or return ajaxData; // an object object or array to merge // If the function returned something, use that alone data = $.isFunction( ajaxData ) && newData ? newData : $.extend( true, data, newData ); // Remove the data property as we've resolved it already and don't want // jQuery to do it again (it is restored at the end of the function) delete ajax.data; } var baseAjax = { "data": data, "success": function (json) { var error = json.error || json.sError; if ( error ) { _fnLog( oSettings, 0, error ); } oSettings.json = json; callback( json ); }, "dataType": "json", "cache": false, "type": oSettings.sServerMethod, "error": function (xhr, error, thrown) { var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] ); if ( $.inArray( true, ret ) === -1 ) { if ( error == "parsererror" ) { _fnLog( oSettings, 0, 'Invalid JSON response', 1 ); } else if ( xhr.readyState === 4 ) { _fnLog( oSettings, 0, 'Ajax error', 7 ); } } _fnProcessingDisplay( oSettings, false ); } }; // Store the data submitted for the API oSettings.oAjaxData = data; // Allow plug-ins and external processes to modify the data _fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] ); if ( oSettings.fnServerData ) { // DataTables 1.9- compatibility oSettings.fnServerData.call( instance, oSettings.sAjaxSource, $.map( data, function (val, key) { // Need to convert back to 1.9 trad format return { name: key, value: val }; } ), callback, oSettings ); } else if ( oSettings.sAjaxSource || typeof ajax === 'string' ) { // DataTables 1.9- compatibility oSettings.jqXHR = $.ajax( $.extend( baseAjax, { url: ajax || oSettings.sAjaxSource } ) ); } else if ( $.isFunction( ajax ) ) { // Is a function - let the caller define what needs to be done oSettings.jqXHR = ajax.call( instance, data, callback, oSettings ); } else { // Object to extend the base settings oSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) ); // Restore for next time around ajax.data = ajaxData; } } /** * Update the table using an Ajax call * @param {object} settings dataTables settings object * @returns {boolean} Block the table drawing or not * @memberof DataTable#oApi */ function _fnAjaxUpdate( settings ) { if ( settings.bAjaxDataGet ) { settings.iDraw++; _fnProcessingDisplay( settings, true ); _fnBuildAjax( settings, _fnAjaxParameters( settings ), function(json) { _fnAjaxUpdateDraw( settings, json ); } ); return false; } return true; } /** * Build up the parameters in an object needed for a server-side processing * request. Note that this is basically done twice, is different ways - a modern * method which is used by default in DataTables 1.10 which uses objects and * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if * the sAjaxSource option is used in the initialisation, or the legacyAjax * option is set. * @param {object} oSettings dataTables settings object * @returns {bool} block the table drawing or not * @memberof DataTable#oApi */ function _fnAjaxParameters( settings ) { var columns = settings.aoColumns, columnCount = columns.length, features = settings.oFeatures, preSearch = settings.oPreviousSearch, preColSearch = settings.aoPreSearchCols, i, data = [], dataProp, column, columnSearch, sort = _fnSortFlatten( settings ), displayStart = settings._iDisplayStart, displayLength = features.bPaginate !== false ? settings._iDisplayLength : -1; var param = function ( name, value ) { data.push( { 'name': name, 'value': value } ); }; // DataTables 1.9- compatible method param( 'sEcho', settings.iDraw ); param( 'iColumns', columnCount ); param( 'sColumns', _pluck( columns, 'sName' ).join(',') ); param( 'iDisplayStart', displayStart ); param( 'iDisplayLength', displayLength ); // DataTables 1.10+ method var d = { draw: settings.iDraw, columns: [], order: [], start: displayStart, length: displayLength, search: { value: preSearch.sSearch, regex: preSearch.bRegex } }; for ( i=0 ; i<columnCount ; i++ ) { column = columns[i]; columnSearch = preColSearch[i]; dataProp = typeof column.mData=="function" ? 'function' : column.mData ; d.columns.push( { data: dataProp, name: column.sName, searchable: column.bSearchable, orderable: column.bSortable, search: { value: columnSearch.sSearch, regex: columnSearch.bRegex } } ); param( "mDataProp_"+i, dataProp ); if ( features.bFilter ) { param( 'sSearch_'+i, columnSearch.sSearch ); param( 'bRegex_'+i, columnSearch.bRegex ); param( 'bSearchable_'+i, column.bSearchable ); } if ( features.bSort ) { param( 'bSortable_'+i, column.bSortable ); } } if ( features.bFilter ) { param( 'sSearch', preSearch.sSearch ); param( 'bRegex', preSearch.bRegex ); } if ( features.bSort ) { $.each( sort, function ( i, val ) { d.order.push( { column: val.col, dir: val.dir } ); param( 'iSortCol_'+i, val.col ); param( 'sSortDir_'+i, val.dir ); } ); param( 'iSortingCols', sort.length ); } // If the legacy.ajax parameter is null, then we automatically decide which // form to use, based on sAjaxSource var legacy = DataTable.ext.legacy.ajax; if ( legacy === null ) { return settings.sAjaxSource ? data : d; } // Otherwise, if legacy has been specified then we use that to decide on the // form return legacy ? data : d; } /** * Data the data from the server (nuking the old) and redraw the table * @param {object} oSettings dataTables settings object * @param {object} json json data return from the server. * @param {string} json.sEcho Tracking flag for DataTables to match requests * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering * @param {array} json.aaData The data to display on this page * @param {string} [json.sColumns] Column ordering (sName, comma separated) * @memberof DataTable#oApi */ function _fnAjaxUpdateDraw ( settings, json ) { // v1.10 uses camelCase variables, while 1.9 uses Hungarian notation. // Support both var compat = function ( old, modern ) { return json[old] !== undefined ? json[old] : json[modern]; }; var data = _fnAjaxDataSrc( settings, json ); var draw = compat( 'sEcho', 'draw' ); var recordsTotal = compat( 'iTotalRecords', 'recordsTotal' ); var recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' ); if ( draw ) { // Protect against out of sequence returns if ( draw*1 < settings.iDraw ) { return; } settings.iDraw = draw * 1; } _fnClearTable( settings ); settings._iRecordsTotal = parseInt(recordsTotal, 10); settings._iRecordsDisplay = parseInt(recordsFiltered, 10); for ( var i=0, ien=data.length ; i<ien ; i++ ) { _fnAddData( settings, data[i] ); } settings.aiDisplay = settings.aiDisplayMaster.slice(); settings.bAjaxDataGet = false; _fnDraw( settings ); if ( ! settings._bInitComplete ) { _fnInitComplete( settings, json ); } settings.bAjaxDataGet = true; _fnProcessingDisplay( settings, false ); } /** * Get the data from the JSON data source to use for drawing a table. Using * `_fnGetObjectDataFn` allows the data to be sourced from a property of the * source object, or from a processing function. * @param {object} oSettings dataTables settings object * @param {object} json Data source object / array from the server * @return {array} Array of data to use */ function _fnAjaxDataSrc ( oSettings, json ) { var dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ? oSettings.ajax.dataSrc : oSettings.sAjaxDataProp; // Compatibility with 1.9-. // Compatibility with 1.9-. In order to read from aaData, check if the // default has been changed, if not, check for aaData if ( dataSrc === 'data' ) { return json.aaData || json[dataSrc]; } return dataSrc !== "" ? _fnGetObjectDataFn( dataSrc )( json ) : json; } /** * Generate the node required for filtering text * @returns {node} Filter control element * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnFeatureHtmlFilter ( settings ) { var classes = settings.oClasses; var tableId = settings.sTableId; var language = settings.oLanguage; var previousSearch = settings.oPreviousSearch; var features = settings.aanFeatures; var input = '<input type="search" class="'+classes.sFilterInput+'"/>'; var str = language.sSearch; str = str.match(/_INPUT_/) ? str.replace('_INPUT_', input) : str+input; var filter = $('<div/>', { 'id': ! features.f ? tableId+'_filter' : null, 'class': classes.sFilter } ) .append( $('<label/>' ).append( str ) ); var searchFn = function() { /* Update all other filter input elements for the new display */ var n = features.f; var val = !this.value ? "" : this.value; // mental IE8 fix :-( /* Now do the filter */ if ( val != previousSearch.sSearch ) { _fnFilterComplete( settings, { "sSearch": val, "bRegex": previousSearch.bRegex, "bSmart": previousSearch.bSmart , "bCaseInsensitive": previousSearch.bCaseInsensitive } ); // Need to redraw, without resorting settings._iDisplayStart = 0; _fnDraw( settings ); } }; var searchDelay = settings.searchDelay !== null ? settings.searchDelay : _fnDataSource( settings ) === 'ssp' ? 400 : 0; var jqFilter = $('input', filter) .val( previousSearch.sSearch ) .attr( 'placeholder', language.sSearchPlaceholder ) .on( 'keyup.DT search.DT input.DT paste.DT cut.DT', searchDelay ? _fnThrottle( searchFn, searchDelay ) : searchFn ) .on( 'keypress.DT', function(e) { /* Prevent form submission */ if ( e.keyCode == 13 ) { return false; } } ) .attr('aria-controls', tableId); // Update the input elements whenever the table is filtered $(settings.nTable).on( 'search.dt.DT', function ( ev, s ) { if ( settings === s ) { // IE9 throws an 'unknown error' if document.activeElement is used // inside an iframe or frame... try { if ( jqFilter[0] !== document.activeElement ) { jqFilter.val( previousSearch.sSearch ); } } catch ( e ) {} } } ); return filter[0]; } /** * Filter the table using both the global filter and column based filtering * @param {object} oSettings dataTables settings object * @param {object} oSearch search information * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0) * @memberof DataTable#oApi */ function _fnFilterComplete ( oSettings, oInput, iForce ) { var oPrevSearch = oSettings.oPreviousSearch; var aoPrevSearch = oSettings.aoPreSearchCols; var fnSaveFilter = function ( oFilter ) { /* Save the filtering values */ oPrevSearch.sSearch = oFilter.sSearch; oPrevSearch.bRegex = oFilter.bRegex; oPrevSearch.bSmart = oFilter.bSmart; oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive; }; var fnRegex = function ( o ) { // Backwards compatibility with the bEscapeRegex option return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex; }; // Resolve any column types that are unknown due to addition or invalidation // @todo As per sort - can this be moved into an event handler? _fnColumnTypes( oSettings ); /* In server-side processing all filtering is done by the server, so no point hanging around here */ if ( _fnDataSource( oSettings ) != 'ssp' ) { /* Global filter */ _fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive ); fnSaveFilter( oInput ); /* Now do the individual column filter */ for ( var i=0 ; i<aoPrevSearch.length ; i++ ) { _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]), aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive ); } /* Custom filtering */ _fnFilterCustom( oSettings ); } else { fnSaveFilter( oInput ); } /* Tell the draw function we have been filtering */ oSettings.bFiltered = true; _fnCallbackFire( oSettings, null, 'search', [oSettings] ); } /** * Apply custom filtering functions * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnFilterCustom( settings ) { var filters = DataTable.ext.search; var displayRows = settings.aiDisplay; var row, rowIdx; for ( var i=0, ien=filters.length ; i<ien ; i++ ) { var rows = []; // Loop over each row and see if it should be included for ( var j=0, jen=displayRows.length ; j<jen ; j++ ) { rowIdx = displayRows[ j ]; row = settings.aoData[ rowIdx ]; if ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) { rows.push( rowIdx ); } } // So the array reference doesn't break set the results into the // existing array displayRows.length = 0; $.merge( displayRows, rows ); } } /** * Filter the table on a per-column basis * @param {object} oSettings dataTables settings object * @param {string} sInput string to filter on * @param {int} iColumn column to filter * @param {bool} bRegex treat search string as a regular expression or not * @param {bool} bSmart use smart filtering or not * @param {bool} bCaseInsensitive Do case insenstive matching or not * @memberof DataTable#oApi */ function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive ) { if ( searchStr === '' ) { return; } var data; var out = []; var display = settings.aiDisplay; var rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive ); for ( var i=0 ; i<display.length ; i++ ) { data = settings.aoData[ display[i] ]._aFilterData[ colIdx ]; if ( rpSearch.test( data ) ) { out.push( display[i] ); } } settings.aiDisplay = out; } /** * Filter the data table based on user input and draw the table * @param {object} settings dataTables settings object * @param {string} input string to filter on * @param {int} force optional - force a research of the master array (1) or not (undefined or 0) * @param {bool} regex treat as a regular expression or not * @param {bool} smart perform smart filtering or not * @param {bool} caseInsensitive Do case insenstive matching or not * @memberof DataTable#oApi */ function _fnFilter( settings, input, force, regex, smart, caseInsensitive ) { var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive ); var prevSearch = settings.oPreviousSearch.sSearch; var displayMaster = settings.aiDisplayMaster; var display, invalidated, i; var filtered = []; // Need to take account of custom filtering functions - always filter if ( DataTable.ext.search.length !== 0 ) { force = true; } // Check if any of the rows were invalidated invalidated = _fnFilterData( settings ); // If the input is blank - we just want the full data set if ( input.length <= 0 ) { settings.aiDisplay = displayMaster.slice(); } else { // New search - start from the master array if ( invalidated || force || prevSearch.length > input.length || input.indexOf(prevSearch) !== 0 || settings.bSorted // On resort, the display master needs to be // re-filtered since indexes will have changed ) { settings.aiDisplay = displayMaster.slice(); } // Search the display array display = settings.aiDisplay; for ( i=0 ; i<display.length ; i++ ) { if ( rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) { filtered.push( display[i] ); } } settings.aiDisplay = filtered; } } /** * Build a regular expression object suitable for searching a table * @param {string} sSearch string to search for * @param {bool} bRegex treat as a regular expression or not * @param {bool} bSmart perform smart filtering or not * @param {bool} bCaseInsensitive Do case insensitive matching or not * @returns {RegExp} constructed object * @memberof DataTable#oApi */ function _fnFilterCreateSearch( search, regex, smart, caseInsensitive ) { search = regex ? search : _fnEscapeRegex( search ); if ( smart ) { /* For smart filtering we want to allow the search to work regardless of * word order. We also want double quoted text to be preserved, so word * order is important - a la google. So this is what we want to * generate: * * ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$ */ var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) { if ( word.charAt(0) === '"' ) { var m = word.match( /^"(.*)"$/ ); word = m ? m[1] : word; } return word.replace('"', ''); } ); search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$'; } return new RegExp( search, caseInsensitive ? 'i' : '' ); } /** * Escape a string such that it can be used in a regular expression * @param {string} sVal string to escape * @returns {string} escaped string * @memberof DataTable#oApi */ var _fnEscapeRegex = DataTable.util.escapeRegex; var __filter_div = $('<div>')[0]; var __filter_div_textContent = __filter_div.textContent !== undefined; // Update the filtering data for each row if needed (by invalidation or first run) function _fnFilterData ( settings ) { var columns = settings.aoColumns; var column; var i, j, ien, jen, filterData, cellData, row; var fomatters = DataTable.ext.type.search; var wasInvalidated = false; for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { row = settings.aoData[i]; if ( ! row._aFilterData ) { filterData = []; for ( j=0, jen=columns.length ; j<jen ; j++ ) { column = columns[j]; if ( column.bSearchable ) { cellData = _fnGetCellData( settings, i, j, 'filter' ); if ( fomatters[ column.sType ] ) { cellData = fomatters[ column.sType ]( cellData ); } // Search in DataTables 1.10 is string based. In 1.11 this // should be altered to also allow strict type checking. if ( cellData === null ) { cellData = ''; } if ( typeof cellData !== 'string' && cellData.toString ) { cellData = cellData.toString(); } } else { cellData = ''; } // If it looks like there is an HTML entity in the string, // attempt to decode it so sorting works as expected. Note that // we could use a single line of jQuery to do this, but the DOM // method used here is much faster http://jsperf.com/html-decode if ( cellData.indexOf && cellData.indexOf('&') !== -1 ) { __filter_div.innerHTML = cellData; cellData = __filter_div_textContent ? __filter_div.textContent : __filter_div.innerText; } if ( cellData.replace ) { cellData = cellData.replace(/[\r\n]/g, ''); } filterData.push( cellData ); } row._aFilterData = filterData; row._sFilterRow = filterData.join(' '); wasInvalidated = true; } } return wasInvalidated; } /** * Convert from the internal Hungarian notation to camelCase for external * interaction * @param {object} obj Object to convert * @returns {object} Inverted object * @memberof DataTable#oApi */ function _fnSearchToCamel ( obj ) { return { search: obj.sSearch, smart: obj.bSmart, regex: obj.bRegex, caseInsensitive: obj.bCaseInsensitive }; } /** * Convert from camelCase notation to the internal Hungarian. We could use the * Hungarian convert function here, but this is cleaner * @param {object} obj Object to convert * @returns {object} Inverted object * @memberof DataTable#oApi */ function _fnSearchToHung ( obj ) { return { sSearch: obj.search, bSmart: obj.smart, bRegex: obj.regex, bCaseInsensitive: obj.caseInsensitive }; } /** * Generate the node required for the info display * @param {object} oSettings dataTables settings object * @returns {node} Information element * @memberof DataTable#oApi */ function _fnFeatureHtmlInfo ( settings ) { var tid = settings.sTableId, nodes = settings.aanFeatures.i, n = $('<div/>', { 'class': settings.oClasses.sInfo, 'id': ! nodes ? tid+'_info' : null } ); if ( ! nodes ) { // Update display on each draw settings.aoDrawCallback.push( { "fn": _fnUpdateInfo, "sName": "information" } ); n .attr( 'role', 'status' ) .attr( 'aria-live', 'polite' ); // Table is described by our info div $(settings.nTable).attr( 'aria-describedby', tid+'_info' ); } return n[0]; } /** * Update the information elements in the display * @param {object} settings dataTables settings object * @memberof DataTable#oApi */ function _fnUpdateInfo ( settings ) { /* Show information about the table */ var nodes = settings.aanFeatures.i; if ( nodes.length === 0 ) { return; } var lang = settings.oLanguage, start = settings._iDisplayStart+1, end = settings.fnDisplayEnd(), max = settings.fnRecordsTotal(), total = settings.fnRecordsDisplay(), out = total ? lang.sInfo : lang.sInfoEmpty; if ( total !== max ) { /* Record set after filtering */ out += ' ' + lang.sInfoFiltered; } // Convert the macros out += lang.sInfoPostFix; out = _fnInfoMacros( settings, out ); var callback = lang.fnInfoCallback; if ( callback !== null ) { out = callback.call( settings.oInstance, settings, start, end, max, total, out ); } $(nodes).html( out ); } function _fnInfoMacros ( settings, str ) { // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only // internally var formatter = settings.fnFormatNumber, start = settings._iDisplayStart+1, len = settings._iDisplayLength, vis = settings.fnRecordsDisplay(), all = len === -1; return str. replace(/_START_/g, formatter.call( settings, start ) ). replace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ). replace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ). replace(/_TOTAL_/g, formatter.call( settings, vis ) ). replace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ). replace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) ); } /** * Draw the table for the first time, adding all required features * @param {object} settings dataTables settings object * @memberof DataTable#oApi */ function _fnInitialise ( settings ) { var i, iLen, iAjaxStart=settings.iInitDisplayStart; var columns = settings.aoColumns, column; var features = settings.oFeatures; var deferLoading = settings.bDeferLoading; // value modified by the draw /* Ensure that the table data is fully initialised */ if ( ! settings.bInitialised ) { setTimeout( function(){ _fnInitialise( settings ); }, 200 ); return; } /* Show the display HTML options */ _fnAddOptionsHtml( settings ); /* Build and draw the header / footer for the table */ _fnBuildHead( settings ); _fnDrawHead( settings, settings.aoHeader ); _fnDrawHead( settings, settings.aoFooter ); /* Okay to show that something is going on now */ _fnProcessingDisplay( settings, true ); /* Calculate sizes for columns */ if ( features.bAutoWidth ) { _fnCalculateColumnWidths( settings ); } for ( i=0, iLen=columns.length ; i<iLen ; i++ ) { column = columns[i]; if ( column.sWidth ) { column.nTh.style.width = _fnStringToCss( column.sWidth ); } } _fnCallbackFire( settings, null, 'preInit', [settings] ); // If there is default sorting required - let's do it. The sort function // will do the drawing for us. Otherwise we draw the table regardless of the // Ajax source - this allows the table to look initialised for Ajax sourcing // data (show 'loading' message possibly) _fnReDraw( settings ); // Server-side processing init complete is done by _fnAjaxUpdateDraw var dataSrc = _fnDataSource( settings ); if ( dataSrc != 'ssp' || deferLoading ) { // if there is an ajax source load the data if ( dataSrc == 'ajax' ) { _fnBuildAjax( settings, [], function(json) { var aData = _fnAjaxDataSrc( settings, json ); // Got the data - add it to the table for ( i=0 ; i<aData.length ; i++ ) { _fnAddData( settings, aData[i] ); } // Reset the init display for cookie saving. We've already done // a filter, and therefore cleared it before. So we need to make // it appear 'fresh' settings.iInitDisplayStart = iAjaxStart; _fnReDraw( settings ); _fnProcessingDisplay( settings, false ); _fnInitComplete( settings, json ); }, settings ); } else { _fnProcessingDisplay( settings, false ); _fnInitComplete( settings ); } } } /** * Draw the table for the first time, adding all required features * @param {object} oSettings dataTables settings object * @param {object} [json] JSON from the server that completed the table, if using Ajax source * with client-side processing (optional) * @memberof DataTable#oApi */ function _fnInitComplete ( settings, json ) { settings._bInitComplete = true; // When data was added after the initialisation (data or Ajax) we need to // calculate the column sizing if ( json || settings.oInit.aaData ) { _fnAdjustColumnSizing( settings ); } _fnCallbackFire( settings, null, 'plugin-init', [settings, json] ); _fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] ); } function _fnLengthChange ( settings, val ) { var len = parseInt( val, 10 ); settings._iDisplayLength = len; _fnLengthOverflow( settings ); // Fire length change event _fnCallbackFire( settings, null, 'length', [settings, len] ); } /** * Generate the node required for user display length changing * @param {object} settings dataTables settings object * @returns {node} Display length feature node * @memberof DataTable#oApi */ function _fnFeatureHtmlLength ( settings ) { var classes = settings.oClasses, tableId = settings.sTableId, menu = settings.aLengthMenu, d2 = $.isArray( menu[0] ), lengths = d2 ? menu[0] : menu, language = d2 ? menu[1] : menu; var select = $('<select/>', { 'name': tableId+'_length', 'aria-controls': tableId, 'class': classes.sLengthSelect } ); for ( var i=0, ien=lengths.length ; i<ien ; i++ ) { select[0][ i ] = new Option( typeof language[i] === 'number' ? settings.fnFormatNumber( language[i] ) : language[i], lengths[i] ); } var div = $('<div><label/></div>').addClass( classes.sLength ); if ( ! settings.aanFeatures.l ) { div[0].id = tableId+'_length'; } div.children().append( settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML ) ); // Can't use `select` variable as user might provide their own and the // reference is broken by the use of outerHTML $('select', div) .val( settings._iDisplayLength ) .on( 'change.DT', function(e) { _fnLengthChange( settings, $(this).val() ); _fnDraw( settings ); } ); // Update node value whenever anything changes the table's length $(settings.nTable).on( 'length.dt.DT', function (e, s, len) { if ( settings === s ) { $('select', div).val( len ); } } ); return div[0]; } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Note that most of the paging logic is done in * DataTable.ext.pager */ /** * Generate the node required for default pagination * @param {object} oSettings dataTables settings object * @returns {node} Pagination feature node * @memberof DataTable#oApi */ function _fnFeatureHtmlPaginate ( settings ) { var type = settings.sPaginationType, plugin = DataTable.ext.pager[ type ], modern = typeof plugin === 'function', redraw = function( settings ) { _fnDraw( settings ); }, node = $('<div/>').addClass( settings.oClasses.sPaging + type )[0], features = settings.aanFeatures; if ( ! modern ) { plugin.fnInit( settings, node, redraw ); } /* Add a draw callback for the pagination on first instance, to update the paging display */ if ( ! features.p ) { node.id = settings.sTableId+'_paginate'; settings.aoDrawCallback.push( { "fn": function( settings ) { if ( modern ) { var start = settings._iDisplayStart, len = settings._iDisplayLength, visRecords = settings.fnRecordsDisplay(), all = len === -1, page = all ? 0 : Math.ceil( start / len ), pages = all ? 1 : Math.ceil( visRecords / len ), buttons = plugin(page, pages), i, ien; for ( i=0, ien=features.p.length ; i<ien ; i++ ) { _fnRenderer( settings, 'pageButton' )( settings, features.p[i], i, buttons, page, pages ); } } else { plugin.fnUpdate( settings, redraw ); } }, "sName": "pagination" } ); } return node; } /** * Alter the display settings to change the page * @param {object} settings DataTables settings object * @param {string|int} action Paging action to take: "first", "previous", * "next" or "last" or page number to jump to (integer) * @param [bool] redraw Automatically draw the update or not * @returns {bool} true page has changed, false - no change * @memberof DataTable#oApi */ function _fnPageChange ( settings, action, redraw ) { var start = settings._iDisplayStart, len = settings._iDisplayLength, records = settings.fnRecordsDisplay(); if ( records === 0 || len === -1 ) { start = 0; } else if ( typeof action === "number" ) { start = action * len; if ( start > records ) { start = 0; } } else if ( action == "first" ) { start = 0; } else if ( action == "previous" ) { start = len >= 0 ? start - len : 0; if ( start < 0 ) { start = 0; } } else if ( action == "next" ) { if ( start + len < records ) { start += len; } } else if ( action == "last" ) { start = Math.floor( (records-1) / len) * len; } else { _fnLog( settings, 0, "Unknown paging action: "+action, 5 ); } var changed = settings._iDisplayStart !== start; settings._iDisplayStart = start; if ( changed ) { _fnCallbackFire( settings, null, 'page', [settings] ); if ( redraw ) { _fnDraw( settings ); } } return changed; } /** * Generate the node required for the processing node * @param {object} settings dataTables settings object * @returns {node} Processing element * @memberof DataTable#oApi */ function _fnFeatureHtmlProcessing ( settings ) { return $('<div/>', { 'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null, 'class': settings.oClasses.sProcessing } ) .html( settings.oLanguage.sProcessing ) .insertBefore( settings.nTable )[0]; } /** * Display or hide the processing indicator * @param {object} settings dataTables settings object * @param {bool} show Show the processing indicator (true) or not (false) * @memberof DataTable#oApi */ function _fnProcessingDisplay ( settings, show ) { if ( settings.oFeatures.bProcessing ) { $(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' ); } _fnCallbackFire( settings, null, 'processing', [settings, show] ); } /** * Add any control elements for the table - specifically scrolling * @param {object} settings dataTables settings object * @returns {node} Node to add to the DOM * @memberof DataTable#oApi */ function _fnFeatureHtmlTable ( settings ) { var table = $(settings.nTable); // Add the ARIA grid role to the table table.attr( 'role', 'grid' ); // Scrolling from here on in var scroll = settings.oScroll; if ( scroll.sX === '' && scroll.sY === '' ) { return settings.nTable; } var scrollX = scroll.sX; var scrollY = scroll.sY; var classes = settings.oClasses; var caption = table.children('caption'); var captionSide = caption.length ? caption[0]._captionSide : null; var headerClone = $( table[0].cloneNode(false) ); var footerClone = $( table[0].cloneNode(false) ); var footer = table.children('tfoot'); var _div = '<div/>'; var size = function ( s ) { return !s ? null : _fnStringToCss( s ); }; if ( ! footer.length ) { footer = null; } /* * The HTML structure that we want to generate in this function is: * div - scroller * div - scroll head * div - scroll head inner * table - scroll head table * thead - thead * div - scroll body * table - table (master table) * thead - thead clone for sizing * tbody - tbody * div - scroll foot * div - scroll foot inner * table - scroll foot table * tfoot - tfoot */ var scroller = $( _div, { 'class': classes.sScrollWrapper } ) .append( $(_div, { 'class': classes.sScrollHead } ) .css( { overflow: 'hidden', position: 'relative', border: 0, width: scrollX ? size(scrollX) : '100%' } ) .append( $(_div, { 'class': classes.sScrollHeadInner } ) .css( { 'box-sizing': 'content-box', width: scroll.sXInner || '100%' } ) .append( headerClone .removeAttr('id') .css( 'margin-left', 0 ) .append( captionSide === 'top' ? caption : null ) .append( table.children('thead') ) ) ) ) .append( $(_div, { 'class': classes.sScrollBody } ) .css( { position: 'relative', overflow: 'auto', width: size( scrollX ) } ) .append( table ) ); if ( footer ) { scroller.append( $(_div, { 'class': classes.sScrollFoot } ) .css( { overflow: 'hidden', border: 0, width: scrollX ? size(scrollX) : '100%' } ) .append( $(_div, { 'class': classes.sScrollFootInner } ) .append( footerClone .removeAttr('id') .css( 'margin-left', 0 ) .append( captionSide === 'bottom' ? caption : null ) .append( table.children('tfoot') ) ) ) ); } var children = scroller.children(); var scrollHead = children[0]; var scrollBody = children[1]; var scrollFoot = footer ? children[2] : null; // When the body is scrolled, then we also want to scroll the headers if ( scrollX ) { $(scrollBody).on( 'scroll.DT', function (e) { var scrollLeft = this.scrollLeft; scrollHead.scrollLeft = scrollLeft; if ( footer ) { scrollFoot.scrollLeft = scrollLeft; } } ); } $(scrollBody).css( scrollY && scroll.bCollapse ? 'max-height' : 'height', scrollY ); settings.nScrollHead = scrollHead; settings.nScrollBody = scrollBody; settings.nScrollFoot = scrollFoot; // On redraw - align columns settings.aoDrawCallback.push( { "fn": _fnScrollDraw, "sName": "scrolling" } ); return scroller[0]; } /** * Update the header, footer and body tables for resizing - i.e. column * alignment. * * Welcome to the most horrible function DataTables. The process that this * function follows is basically: * 1. Re-create the table inside the scrolling div * 2. Take live measurements from the DOM * 3. Apply the measurements to align the columns * 4. Clean up * * @param {object} settings dataTables settings object * @memberof DataTable#oApi */ function _fnScrollDraw ( settings ) { // Given that this is such a monster function, a lot of variables are use // to try and keep the minimised size as small as possible var scroll = settings.oScroll, scrollX = scroll.sX, scrollXInner = scroll.sXInner, scrollY = scroll.sY, barWidth = scroll.iBarWidth, divHeader = $(settings.nScrollHead), divHeaderStyle = divHeader[0].style, divHeaderInner = divHeader.children('div'), divHeaderInnerStyle = divHeaderInner[0].style, divHeaderTable = divHeaderInner.children('table'), divBodyEl = settings.nScrollBody, divBody = $(divBodyEl), divBodyStyle = divBodyEl.style, divFooter = $(settings.nScrollFoot), divFooterInner = divFooter.children('div'), divFooterTable = divFooterInner.children('table'), header = $(settings.nTHead), table = $(settings.nTable), tableEl = table[0], tableStyle = tableEl.style, footer = settings.nTFoot ? $(settings.nTFoot) : null, browser = settings.oBrowser, ie67 = browser.bScrollOversize, dtHeaderCells = _pluck( settings.aoColumns, 'nTh' ), headerTrgEls, footerTrgEls, headerSrcEls, footerSrcEls, headerCopy, footerCopy, headerWidths=[], footerWidths=[], headerContent=[], footerContent=[], idx, correction, sanityWidth, zeroOut = function(nSizer) { var style = nSizer.style; style.paddingTop = "0"; style.paddingBottom = "0"; style.borderTopWidth = "0"; style.borderBottomWidth = "0"; style.height = 0; }; // If the scrollbar visibility has changed from the last draw, we need to // adjust the column sizes as the table width will have changed to account // for the scrollbar var scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight; if ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) { settings.scrollBarVis = scrollBarVis; _fnAdjustColumnSizing( settings ); return; // adjust column sizing will call this function again } else { settings.scrollBarVis = scrollBarVis; } /* * 1. Re-create the table inside the scrolling div */ // Remove the old minimised thead and tfoot elements in the inner table table.children('thead, tfoot').remove(); if ( footer ) { footerCopy = footer.clone().prependTo( table ); footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized footerSrcEls = footerCopy.find('tr'); } // Clone the current header and footer elements and then place it into the inner table headerCopy = header.clone().prependTo( table ); headerTrgEls = header.find('tr'); // original header is in its own table headerSrcEls = headerCopy.find('tr'); headerCopy.find('th, td').removeAttr('tabindex'); /* * 2. Take live measurements from the DOM - do not alter the DOM itself! */ // Remove old sizing and apply the calculated column widths // Get the unique column headers in the newly created (cloned) header. We want to apply the // calculated sizes to this header if ( ! scrollX ) { divBodyStyle.width = '100%'; divHeader[0].style.width = '100%'; } $.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) { idx = _fnVisibleToColumnIndex( settings, i ); el.style.width = settings.aoColumns[idx].sWidth; } ); if ( footer ) { _fnApplyToChildren( function(n) { n.style.width = ""; }, footerSrcEls ); } // Size the table as a whole sanityWidth = table.outerWidth(); if ( scrollX === "" ) { // No x scrolling tableStyle.width = "100%"; // IE7 will make the width of the table when 100% include the scrollbar // - which is shouldn't. When there is a scrollbar we need to take this // into account. if ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll") ) { tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth); } // Recalculate the sanity width sanityWidth = table.outerWidth(); } else if ( scrollXInner !== "" ) { // legacy x scroll inner has been given - use it tableStyle.width = _fnStringToCss(scrollXInner); // Recalculate the sanity width sanityWidth = table.outerWidth(); } // Hidden header should have zero height, so remove padding and borders. Then // set the width based on the real headers // Apply all styles in one pass _fnApplyToChildren( zeroOut, headerSrcEls ); // Read all widths in next pass _fnApplyToChildren( function(nSizer) { headerContent.push( nSizer.innerHTML ); headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); }, headerSrcEls ); // Apply all widths in final pass _fnApplyToChildren( function(nToSize, i) { // Only apply widths to the DataTables detected header cells - this // prevents complex headers from having contradictory sizes applied if ( $.inArray( nToSize, dtHeaderCells ) !== -1 ) { nToSize.style.width = headerWidths[i]; } }, headerTrgEls ); $(headerSrcEls).height(0); /* Same again with the footer if we have one */ if ( footer ) { _fnApplyToChildren( zeroOut, footerSrcEls ); _fnApplyToChildren( function(nSizer) { footerContent.push( nSizer.innerHTML ); footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) ); }, footerSrcEls ); _fnApplyToChildren( function(nToSize, i) { nToSize.style.width = footerWidths[i]; }, footerTrgEls ); $(footerSrcEls).height(0); } /* * 3. Apply the measurements */ // "Hide" the header and footer that we used for the sizing. We need to keep // the content of the cell so that the width applied to the header and body // both match, but we want to hide it completely. We want to also fix their // width to what they currently are _fnApplyToChildren( function(nSizer, i) { nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+headerContent[i]+'</div>'; nSizer.style.width = headerWidths[i]; }, headerSrcEls ); if ( footer ) { _fnApplyToChildren( function(nSizer, i) { nSizer.innerHTML = '<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+footerContent[i]+'</div>'; nSizer.style.width = footerWidths[i]; }, footerSrcEls ); } // Sanity check that the table is of a sensible width. If not then we are going to get // misalignment - try to prevent this by not allowing the table to shrink below its min width if ( table.outerWidth() < sanityWidth ) { // The min width depends upon if we have a vertical scrollbar visible or not */ correction = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll")) ? sanityWidth+barWidth : sanityWidth; // IE6/7 are a law unto themselves... if ( ie67 && (divBodyEl.scrollHeight > divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll") ) { tableStyle.width = _fnStringToCss( correction-barWidth ); } // And give the user a warning that we've stopped the table getting too small if ( scrollX === "" || scrollXInner !== "" ) { _fnLog( settings, 1, 'Possible column misalignment', 6 ); } } else { correction = '100%'; } // Apply to the container elements divBodyStyle.width = _fnStringToCss( correction ); divHeaderStyle.width = _fnStringToCss( correction ); if ( footer ) { settings.nScrollFoot.style.width = _fnStringToCss( correction ); } /* * 4. Clean up */ if ( ! scrollY ) { /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting * the scrollbar height from the visible display, rather than adding it on. We need to * set the height in order to sort this. Don't want to do it in any other browsers. */ if ( ie67 ) { divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth ); } } /* Finally set the width's of the header and footer tables */ var iOuterWidth = table.outerWidth(); divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth ); divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth ); // Figure out if there are scrollbar present - if so then we need a the header and footer to // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar) var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll"; var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' ); divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px"; if ( footer ) { divFooterTable[0].style.width = _fnStringToCss( iOuterWidth ); divFooterInner[0].style.width = _fnStringToCss( iOuterWidth ); divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px"; } // Correct DOM ordering for colgroup - comes before the thead table.children('colgroup').insertBefore( table.children('thead') ); /* Adjust the position of the header in case we loose the y-scrollbar */ divBody.scroll(); // If sorting or filtering has occurred, jump the scrolling back to the top // only if we aren't holding the position if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) { divBodyEl.scrollTop = 0; } } /** * Apply a given function to the display child nodes of an element array (typically * TD children of TR rows * @param {function} fn Method to apply to the objects * @param array {nodes} an1 List of elements to look through for display children * @param array {nodes} an2 Another list (identical structure to the first) - optional * @memberof DataTable#oApi */ function _fnApplyToChildren( fn, an1, an2 ) { var index=0, i=0, iLen=an1.length; var nNode1, nNode2; while ( i < iLen ) { nNode1 = an1[i].firstChild; nNode2 = an2 ? an2[i].firstChild : null; while ( nNode1 ) { if ( nNode1.nodeType === 1 ) { if ( an2 ) { fn( nNode1, nNode2, index ); } else { fn( nNode1, index ); } index++; } nNode1 = nNode1.nextSibling; nNode2 = an2 ? nNode2.nextSibling : null; } i++; } } var __re_html_remove = /<.*?>/g; /** * Calculate the width of columns for the table * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnCalculateColumnWidths ( oSettings ) { var table = oSettings.nTable, columns = oSettings.aoColumns, scroll = oSettings.oScroll, scrollY = scroll.sY, scrollX = scroll.sX, scrollXInner = scroll.sXInner, columnCount = columns.length, visibleColumns = _fnGetColumns( oSettings, 'bVisible' ), headerCells = $('th', oSettings.nTHead), tableWidthAttr = table.getAttribute('width'), // from DOM element tableContainer = table.parentNode, userInputs = false, i, column, columnIdx, width, outerWidth, browser = oSettings.oBrowser, ie67 = browser.bScrollOversize; var styleWidth = table.style.width; if ( styleWidth && styleWidth.indexOf('%') !== -1 ) { tableWidthAttr = styleWidth; } /* Convert any user input sizes into pixel sizes */ for ( i=0 ; i<visibleColumns.length ; i++ ) { column = columns[ visibleColumns[i] ]; if ( column.sWidth !== null ) { column.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer ); userInputs = true; } } /* If the number of columns in the DOM equals the number that we have to * process in DataTables, then we can use the offsets that are created by * the web- browser. No custom sizes can be set in order for this to happen, * nor scrolling used */ if ( ie67 || ! userInputs && ! scrollX && ! scrollY && columnCount == _fnVisbleColumns( oSettings ) && columnCount == headerCells.length ) { for ( i=0 ; i<columnCount ; i++ ) { var colIdx = _fnVisibleToColumnIndex( oSettings, i ); if ( colIdx !== null ) { columns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() ); } } } else { // Otherwise construct a single row, worst case, table with the widest // node in the data, assign any user defined widths, then insert it into // the DOM and allow the browser to do all the hard work of calculating // table widths var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table .css( 'visibility', 'hidden' ) .removeAttr( 'id' ); // Clean up the table body tmpTable.find('tbody tr').remove(); var tr = $('<tr/>').appendTo( tmpTable.find('tbody') ); // Clone the table header and footer - we can't use the header / footer // from the cloned table, since if scrolling is active, the table's // real header and footer are contained in different table tags tmpTable.find('thead, tfoot').remove(); tmpTable .append( $(oSettings.nTHead).clone() ) .append( $(oSettings.nTFoot).clone() ); // Remove any assigned widths from the footer (from scrolling) tmpTable.find('tfoot th, tfoot td').css('width', ''); // Apply custom sizing to the cloned header headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] ); for ( i=0 ; i<visibleColumns.length ; i++ ) { column = columns[ visibleColumns[i] ]; headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ? _fnStringToCss( column.sWidthOrig ) : ''; // For scrollX we need to force the column width otherwise the // browser will collapse it. If this width is smaller than the // width the column requires, then it will have no effect if ( column.sWidthOrig && scrollX ) { $( headerCells[i] ).append( $('<div/>').css( { width: column.sWidthOrig, margin: 0, padding: 0, border: 0, height: 1 } ) ); } } // Find the widest cell for each column and put it into the table if ( oSettings.aoData.length ) { for ( i=0 ; i<visibleColumns.length ; i++ ) { columnIdx = visibleColumns[i]; column = columns[ columnIdx ]; $( _fnGetWidestNode( oSettings, columnIdx ) ) .clone( false ) .append( column.sContentPadding ) .appendTo( tr ); } } // Tidy the temporary table - remove name attributes so there aren't // duplicated in the dom (radio elements for example) $('[name]', tmpTable).removeAttr('name'); // Table has been built, attach to the document so we can work with it. // A holding element is used, positioned at the top of the container // with minimal height, so it has no effect on if the container scrolls // or not. Otherwise it might trigger scrolling when it actually isn't // needed var holder = $('<div/>').css( scrollX || scrollY ? { position: 'absolute', top: 0, left: 0, height: 1, right: 0, overflow: 'hidden' } : {} ) .append( tmpTable ) .appendTo( tableContainer ); // When scrolling (X or Y) we want to set the width of the table as // appropriate. However, when not scrolling leave the table width as it // is. This results in slightly different, but I think correct behaviour if ( scrollX && scrollXInner ) { tmpTable.width( scrollXInner ); } else if ( scrollX ) { tmpTable.css( 'width', 'auto' ); tmpTable.removeAttr('width'); // If there is no width attribute or style, then allow the table to // collapse if ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) { tmpTable.width( tableContainer.clientWidth ); } } else if ( scrollY ) { tmpTable.width( tableContainer.clientWidth ); } else if ( tableWidthAttr ) { tmpTable.width( tableWidthAttr ); } // Get the width of each column in the constructed table - we need to // know the inner width (so it can be assigned to the other table's // cells) and the outer width so we can calculate the full width of the // table. This is safe since DataTables requires a unique cell for each // column, but if ever a header can span multiple columns, this will // need to be modified. var total = 0; for ( i=0 ; i<visibleColumns.length ; i++ ) { var cell = $(headerCells[i]); var border = cell.outerWidth() - cell.width(); // Use getBounding... where possible (not IE8-) because it can give // sub-pixel accuracy, which we then want to round up! var bounding = browser.bBounding ? Math.ceil( headerCells[i].getBoundingClientRect().width ) : cell.outerWidth(); // Total is tracked to remove any sub-pixel errors as the outerWidth // of the table might not equal the total given here (IE!). total += bounding; // Width for each column to use columns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding - border ); } table.style.width = _fnStringToCss( total ); // Finished with the table - ditch it holder.remove(); } // If there is a width attr, we want to attach an event listener which // allows the table sizing to automatically adjust when the window is // resized. Use the width attr rather than CSS, since we can't know if the // CSS is a relative value or absolute - DOM read is always px. if ( tableWidthAttr ) { table.style.width = _fnStringToCss( tableWidthAttr ); } if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) { var bindResize = function () { $(window).on('resize.DT-'+oSettings.sInstance, _fnThrottle( function () { _fnAdjustColumnSizing( oSettings ); } ) ); }; // IE6/7 will crash if we bind a resize event handler on page load. // To be removed in 1.11 which drops IE6/7 support if ( ie67 ) { setTimeout( bindResize, 1000 ); } else { bindResize(); } oSettings._reszEvt = true; } } /** * Throttle the calls to a function. Arguments and context are maintained for * the throttled function * @param {function} fn Function to be called * @param {int} [freq=200] call frequency in mS * @returns {function} wrapped function * @memberof DataTable#oApi */ var _fnThrottle = DataTable.util.throttle; /** * Convert a CSS unit width to pixels (e.g. 2em) * @param {string} width width to be converted * @param {node} parent parent to get the with for (required for relative widths) - optional * @returns {int} width in pixels * @memberof DataTable#oApi */ function _fnConvertToWidth ( width, parent ) { if ( ! width ) { return 0; } var n = $('<div/>') .css( 'width', _fnStringToCss( width ) ) .appendTo( parent || document.body ); var val = n[0].offsetWidth; n.remove(); return val; } /** * Get the widest node * @param {object} settings dataTables settings object * @param {int} colIdx column of interest * @returns {node} widest table node * @memberof DataTable#oApi */ function _fnGetWidestNode( settings, colIdx ) { var idx = _fnGetMaxLenString( settings, colIdx ); if ( idx < 0 ) { return null; } var data = settings.aoData[ idx ]; return ! data.nTr ? // Might not have been created when deferred rendering $('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] : data.anCells[ colIdx ]; } /** * Get the maximum strlen for each data column * @param {object} settings dataTables settings object * @param {int} colIdx column of interest * @returns {string} max string length for each column * @memberof DataTable#oApi */ function _fnGetMaxLenString( settings, colIdx ) { var s, max=-1, maxIdx = -1; for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { s = _fnGetCellData( settings, i, colIdx, 'display' )+''; s = s.replace( __re_html_remove, '' ); s = s.replace( / /g, ' ' ); if ( s.length > max ) { max = s.length; maxIdx = i; } } return maxIdx; } /** * Append a CSS unit (only if required) to a string * @param {string} value to css-ify * @returns {string} value with css unit * @memberof DataTable#oApi */ function _fnStringToCss( s ) { if ( s === null ) { return '0px'; } if ( typeof s == 'number' ) { return s < 0 ? '0px' : s+'px'; } // Check it has a unit character already return s.match(/\d$/) ? s+'px' : s; } function _fnSortFlatten ( settings ) { var i, iLen, k, kLen, aSort = [], aiOrig = [], aoColumns = settings.aoColumns, aDataSort, iCol, sType, srcCol, fixed = settings.aaSortingFixed, fixedObj = $.isPlainObject( fixed ), nestedSort = [], add = function ( a ) { if ( a.length && ! $.isArray( a[0] ) ) { // 1D array nestedSort.push( a ); } else { // 2D array $.merge( nestedSort, a ); } }; // Build the sort array, with pre-fix and post-fix options if they have been // specified if ( $.isArray( fixed ) ) { add( fixed ); } if ( fixedObj && fixed.pre ) { add( fixed.pre ); } add( settings.aaSorting ); if (fixedObj && fixed.post ) { add( fixed.post ); } for ( i=0 ; i<nestedSort.length ; i++ ) { srcCol = nestedSort[i][0]; aDataSort = aoColumns[ srcCol ].aDataSort; for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ ) { iCol = aDataSort[k]; sType = aoColumns[ iCol ].sType || 'string'; if ( nestedSort[i]._idx === undefined ) { nestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting ); } aSort.push( { src: srcCol, col: iCol, dir: nestedSort[i][1], index: nestedSort[i]._idx, type: sType, formatter: DataTable.ext.type.order[ sType+"-pre" ] } ); } } return aSort; } /** * Change the order of the table * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi * @todo This really needs split up! */ function _fnSort ( oSettings ) { var i, ien, iLen, j, jLen, k, kLen, sDataType, nTh, aiOrig = [], oExtSort = DataTable.ext.type.order, aoData = oSettings.aoData, aoColumns = oSettings.aoColumns, aDataSort, data, iCol, sType, oSort, formatters = 0, sortCol, displayMaster = oSettings.aiDisplayMaster, aSort; // Resolve any column types that are unknown due to addition or invalidation // @todo Can this be moved into a 'data-ready' handler which is called when // data is going to be used in the table? _fnColumnTypes( oSettings ); aSort = _fnSortFlatten( oSettings ); for ( i=0, ien=aSort.length ; i<ien ; i++ ) { sortCol = aSort[i]; // Track if we can use the fast sort algorithm if ( sortCol.formatter ) { formatters++; } // Load the data needed for the sort, for each cell _fnSortData( oSettings, sortCol.col ); } /* No sorting required if server-side or no sorting array */ if ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 ) { // Create a value - key array of the current row positions such that we can use their // current position during the sort, if values match, in order to perform stable sorting for ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) { aiOrig[ displayMaster[i] ] = i; } /* Do the sort - here we want multi-column sorting based on a given data source (column) * and sorting function (from oSort) in a certain direction. It's reasonably complex to * follow on it's own, but this is what we want (example two column sorting): * fnLocalSorting = function(a,b){ * var iTest; * iTest = oSort['string-asc']('data11', 'data12'); * if (iTest !== 0) * return iTest; * iTest = oSort['numeric-desc']('data21', 'data22'); * if (iTest !== 0) * return iTest; * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] ); * } * Basically we have a test for each sorting column, if the data in that column is equal, * test the next column. If all columns match, then we use a numeric sort on the row * positions in the original data array to provide a stable sort. * * Note - I know it seems excessive to have two sorting methods, but the first is around * 15% faster, so the second is only maintained for backwards compatibility with sorting * methods which do not have a pre-sort formatting function. */ if ( formatters === aSort.length ) { // All sort types have formatting functions displayMaster.sort( function ( a, b ) { var x, y, k, test, sort, len=aSort.length, dataA = aoData[a]._aSortData, dataB = aoData[b]._aSortData; for ( k=0 ; k<len ; k++ ) { sort = aSort[k]; x = dataA[ sort.col ]; y = dataB[ sort.col ]; test = x<y ? -1 : x>y ? 1 : 0; if ( test !== 0 ) { return sort.dir === 'asc' ? test : -test; } } x = aiOrig[a]; y = aiOrig[b]; return x<y ? -1 : x>y ? 1 : 0; } ); } else { // Depreciated - remove in 1.11 (providing a plug-in option) // Not all sort types have formatting methods, so we have to call their sorting // methods. displayMaster.sort( function ( a, b ) { var x, y, k, l, test, sort, fn, len=aSort.length, dataA = aoData[a]._aSortData, dataB = aoData[b]._aSortData; for ( k=0 ; k<len ; k++ ) { sort = aSort[k]; x = dataA[ sort.col ]; y = dataB[ sort.col ]; fn = oExtSort[ sort.type+"-"+sort.dir ] || oExtSort[ "string-"+sort.dir ]; test = fn( x, y ); if ( test !== 0 ) { return test; } } x = aiOrig[a]; y = aiOrig[b]; return x<y ? -1 : x>y ? 1 : 0; } ); } } /* Tell the draw function that we have sorted the data */ oSettings.bSorted = true; } function _fnSortAria ( settings ) { var label; var nextSort; var columns = settings.aoColumns; var aSort = _fnSortFlatten( settings ); var oAria = settings.oLanguage.oAria; // ARIA attributes - need to loop all columns, to update all (removing old // attributes as needed) for ( var i=0, iLen=columns.length ; i<iLen ; i++ ) { var col = columns[i]; var asSorting = col.asSorting; var sTitle = col.sTitle.replace( /<.*?>/g, "" ); var th = col.nTh; // IE7 is throwing an error when setting these properties with jQuery's // attr() and removeAttr() methods... th.removeAttribute('aria-sort'); /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */ if ( col.bSortable ) { if ( aSort.length > 0 && aSort[0].col == i ) { th.setAttribute('aria-sort', aSort[0].dir=="asc" ? "ascending" : "descending" ); nextSort = asSorting[ aSort[0].index+1 ] || asSorting[0]; } else { nextSort = asSorting[0]; } label = sTitle + ( nextSort === "asc" ? oAria.sSortAscending : oAria.sSortDescending ); } else { label = sTitle; } th.setAttribute('aria-label', label); } } /** * Function to run on user sort request * @param {object} settings dataTables settings object * @param {node} attachTo node to attach the handler to * @param {int} colIdx column sorting index * @param {boolean} [append=false] Append the requested sort to the existing * sort if true (i.e. multi-column sort) * @param {function} [callback] callback function * @memberof DataTable#oApi */ function _fnSortListener ( settings, colIdx, append, callback ) { var col = settings.aoColumns[ colIdx ]; var sorting = settings.aaSorting; var asSorting = col.asSorting; var nextSortIdx; var next = function ( a, overflow ) { var idx = a._idx; if ( idx === undefined ) { idx = $.inArray( a[1], asSorting ); } return idx+1 < asSorting.length ? idx+1 : overflow ? null : 0; }; // Convert to 2D array if needed if ( typeof sorting[0] === 'number' ) { sorting = settings.aaSorting = [ sorting ]; } // If appending the sort then we are multi-column sorting if ( append && settings.oFeatures.bSortMulti ) { // Are we already doing some kind of sort on this column? var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') ); if ( sortIdx !== -1 ) { // Yes, modify the sort nextSortIdx = next( sorting[sortIdx], true ); if ( nextSortIdx === null && sorting.length === 1 ) { nextSortIdx = 0; // can't remove sorting completely } if ( nextSortIdx === null ) { sorting.splice( sortIdx, 1 ); } else { sorting[sortIdx][1] = asSorting[ nextSortIdx ]; sorting[sortIdx]._idx = nextSortIdx; } } else { // No sort on this column yet sorting.push( [ colIdx, asSorting[0], 0 ] ); sorting[sorting.length-1]._idx = 0; } } else if ( sorting.length && sorting[0][0] == colIdx ) { // Single column - already sorting on this column, modify the sort nextSortIdx = next( sorting[0] ); sorting.length = 1; sorting[0][1] = asSorting[ nextSortIdx ]; sorting[0]._idx = nextSortIdx; } else { // Single column - sort only on this column sorting.length = 0; sorting.push( [ colIdx, asSorting[0] ] ); sorting[0]._idx = 0; } // Run the sort by calling a full redraw _fnReDraw( settings ); // callback used for async user interaction if ( typeof callback == 'function' ) { callback( settings ); } } /** * Attach a sort handler (click) to a node * @param {object} settings dataTables settings object * @param {node} attachTo node to attach the handler to * @param {int} colIdx column sorting index * @param {function} [callback] callback function * @memberof DataTable#oApi */ function _fnSortAttachListener ( settings, attachTo, colIdx, callback ) { var col = settings.aoColumns[ colIdx ]; _fnBindAction( attachTo, {}, function (e) { /* If the column is not sortable - don't to anything */ if ( col.bSortable === false ) { return; } // If processing is enabled use a timeout to allow the processing // display to be shown - otherwise to it synchronously if ( settings.oFeatures.bProcessing ) { _fnProcessingDisplay( settings, true ); setTimeout( function() { _fnSortListener( settings, colIdx, e.shiftKey, callback ); // In server-side processing, the draw callback will remove the // processing display if ( _fnDataSource( settings ) !== 'ssp' ) { _fnProcessingDisplay( settings, false ); } }, 0 ); } else { _fnSortListener( settings, colIdx, e.shiftKey, callback ); } } ); } /** * Set the sorting classes on table's body, Note: it is safe to call this function * when bSort and bSortClasses are false * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnSortingClasses( settings ) { var oldSort = settings.aLastSort; var sortClass = settings.oClasses.sSortColumn; var sort = _fnSortFlatten( settings ); var features = settings.oFeatures; var i, ien, colIdx; if ( features.bSort && features.bSortClasses ) { // Remove old sorting classes for ( i=0, ien=oldSort.length ; i<ien ; i++ ) { colIdx = oldSort[i].src; // Remove column sorting $( _pluck( settings.aoData, 'anCells', colIdx ) ) .removeClass( sortClass + (i<2 ? i+1 : 3) ); } // Add new column sorting for ( i=0, ien=sort.length ; i<ien ; i++ ) { colIdx = sort[i].src; $( _pluck( settings.aoData, 'anCells', colIdx ) ) .addClass( sortClass + (i<2 ? i+1 : 3) ); } } settings.aLastSort = sort; } // Get the data to sort a column, be it from cache, fresh (populating the // cache), or from a sort formatter function _fnSortData( settings, idx ) { // Custom sorting function - provided by the sort data type var column = settings.aoColumns[ idx ]; var customSort = DataTable.ext.order[ column.sSortDataType ]; var customData; if ( customSort ) { customData = customSort.call( settings.oInstance, settings, idx, _fnColumnIndexToVisible( settings, idx ) ); } // Use / populate cache var row, cellData; var formatter = DataTable.ext.type.order[ column.sType+"-pre" ]; for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { row = settings.aoData[i]; if ( ! row._aSortData ) { row._aSortData = []; } if ( ! row._aSortData[idx] || customSort ) { cellData = customSort ? customData[i] : // If there was a custom sort function, use data from there _fnGetCellData( settings, i, idx, 'sort' ); row._aSortData[ idx ] = formatter ? formatter( cellData ) : cellData; } } } /** * Save the state of a table * @param {object} oSettings dataTables settings object * @memberof DataTable#oApi */ function _fnSaveState ( settings ) { if ( !settings.oFeatures.bStateSave || settings.bDestroying ) { return; } /* Store the interesting variables */ var state = { time: +new Date(), start: settings._iDisplayStart, length: settings._iDisplayLength, order: $.extend( true, [], settings.aaSorting ), search: _fnSearchToCamel( settings.oPreviousSearch ), columns: $.map( settings.aoColumns, function ( col, i ) { return { visible: col.bVisible, search: _fnSearchToCamel( settings.aoPreSearchCols[i] ) }; } ) }; _fnCallbackFire( settings, "aoStateSaveParams", 'stateSaveParams', [settings, state] ); settings.oSavedState = state; settings.fnStateSaveCallback.call( settings.oInstance, settings, state ); } /** * Attempt to load a saved table state * @param {object} oSettings dataTables settings object * @param {object} oInit DataTables init object so we can override settings * @param {function} callback Callback to execute when the state has been loaded * @memberof DataTable#oApi */ function _fnLoadState ( settings, oInit, callback ) { var i, ien; var columns = settings.aoColumns; var loaded = function ( s ) { if ( ! s || ! s.time ) { callback(); return; } // Allow custom and plug-in manipulation functions to alter the saved data set and // cancelling of loading by returning false var abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] ); if ( $.inArray( false, abStateLoad ) !== -1 ) { callback(); return; } // Reject old data var duration = settings.iStateDuration; if ( duration > 0 && s.time < +new Date() - (duration*1000) ) { callback(); return; } // Number of columns have changed - all bets are off, no restore of settings if ( s.columns && columns.length !== s.columns.length ) { callback(); return; } // Store the saved state so it might be accessed at any time settings.oLoadedState = $.extend( true, {}, s ); // Restore key features - todo - for 1.11 this needs to be done by // subscribed events if ( s.start !== undefined ) { settings._iDisplayStart = s.start; settings.iInitDisplayStart = s.start; } if ( s.length !== undefined ) { settings._iDisplayLength = s.length; } // Order if ( s.order !== undefined ) { settings.aaSorting = []; $.each( s.order, function ( i, col ) { settings.aaSorting.push( col[0] >= columns.length ? [ 0, col[1] ] : col ); } ); } // Search if ( s.search !== undefined ) { $.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) ); } // Columns // if ( s.columns ) { for ( i=0, ien=s.columns.length ; i<ien ; i++ ) { var col = s.columns[i]; // Visibility if ( col.visible !== undefined ) { columns[i].bVisible = col.visible; } // Search if ( col.search !== undefined ) { $.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) ); } } } _fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] ); callback(); } if ( ! settings.oFeatures.bStateSave ) { callback(); return; } var state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded ); if ( state !== undefined ) { loaded( state ); } // otherwise, wait for the loaded callback to be executed } /** * Return the settings object for a particular table * @param {node} table table we are using as a dataTable * @returns {object} Settings object - or null if not found * @memberof DataTable#oApi */ function _fnSettingsFromNode ( table ) { var settings = DataTable.settings; var idx = $.inArray( table, _pluck( settings, 'nTable' ) ); return idx !== -1 ? settings[ idx ] : null; } /** * Log an error message * @param {object} settings dataTables settings object * @param {int} level log error messages, or display them to the user * @param {string} msg error message * @param {int} tn Technical note id to get more information about the error. * @memberof DataTable#oApi */ function _fnLog( settings, level, msg, tn ) { msg = 'DataTables warning: '+ (settings ? 'table id='+settings.sTableId+' - ' : '')+msg; if ( tn ) { msg += '. For more information about this error, please see '+ 'http://datatables.net/tn/'+tn; } if ( ! level ) { // Backwards compatibility pre 1.10 var ext = DataTable.ext; var type = ext.sErrMode || ext.errMode; if ( settings ) { _fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] ); } if ( type == 'alert' ) { alert( msg ); } else if ( type == 'throw' ) { throw new Error(msg); } else if ( typeof type == 'function' ) { type( settings, tn, msg ); } } else if ( window.console && console.log ) { console.log( msg ); } } /** * See if a property is defined on one object, if so assign it to the other object * @param {object} ret target object * @param {object} src source object * @param {string} name property * @param {string} [mappedName] name to map too - optional, name used if not given * @memberof DataTable#oApi */ function _fnMap( ret, src, name, mappedName ) { if ( $.isArray( name ) ) { $.each( name, function (i, val) { if ( $.isArray( val ) ) { _fnMap( ret, src, val[0], val[1] ); } else { _fnMap( ret, src, val ); } } ); return; } if ( mappedName === undefined ) { mappedName = name; } if ( src[name] !== undefined ) { ret[mappedName] = src[name]; } } /** * Extend objects - very similar to jQuery.extend, but deep copy objects, and * shallow copy arrays. The reason we need to do this, is that we don't want to * deep copy array init values (such as aaSorting) since the dev wouldn't be * able to override them, but we do want to deep copy arrays. * @param {object} out Object to extend * @param {object} extender Object from which the properties will be applied to * out * @param {boolean} breakRefs If true, then arrays will be sliced to take an * independent copy with the exception of the `data` or `aaData` parameters * if they are present. This is so you can pass in a collection to * DataTables and have that used as your data source without breaking the * references * @returns {object} out Reference, just for convenience - out === the return. * @memberof DataTable#oApi * @todo This doesn't take account of arrays inside the deep copied objects. */ function _fnExtend( out, extender, breakRefs ) { var val; for ( var prop in extender ) { if ( extender.hasOwnProperty(prop) ) { val = extender[prop]; if ( $.isPlainObject( val ) ) { if ( ! $.isPlainObject( out[prop] ) ) { out[prop] = {}; } $.extend( true, out[prop], val ); } else if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) { out[prop] = val.slice(); } else { out[prop] = val; } } } return out; } /** * Bind an event handers to allow a click or return key to activate the callback. * This is good for accessibility since a return on the keyboard will have the * same effect as a click, if the element has focus. * @param {element} n Element to bind the action to * @param {object} oData Data object to pass to the triggered function * @param {function} fn Callback function for when the event is triggered * @memberof DataTable#oApi */ function _fnBindAction( n, oData, fn ) { $(n) .on( 'click.DT', oData, function (e) { n.blur(); // Remove focus outline for mouse users fn(e); } ) .on( 'keypress.DT', oData, function (e){ if ( e.which === 13 ) { e.preventDefault(); fn(e); } } ) .on( 'selectstart.DT', function () { /* Take the brutal approach to cancelling text selection */ return false; } ); } /** * Register a callback function. Easily allows a callback function to be added to * an array store of callback functions that can then all be called together. * @param {object} oSettings dataTables settings object * @param {string} sStore Name of the array storage for the callbacks in oSettings * @param {function} fn Function to be called back * @param {string} sName Identifying name for the callback (i.e. a label) * @memberof DataTable#oApi */ function _fnCallbackReg( oSettings, sStore, fn, sName ) { if ( fn ) { oSettings[sStore].push( { "fn": fn, "sName": sName } ); } } /** * Fire callback functions and trigger events. Note that the loop over the * callback array store is done backwards! Further note that you do not want to * fire off triggers in time sensitive applications (for example cell creation) * as its slow. * @param {object} settings dataTables settings object * @param {string} callbackArr Name of the array storage for the callbacks in * oSettings * @param {string} eventName Name of the jQuery custom event to trigger. If * null no trigger is fired * @param {array} args Array of arguments to pass to the callback function / * trigger * @memberof DataTable#oApi */ function _fnCallbackFire( settings, callbackArr, eventName, args ) { var ret = []; if ( callbackArr ) { ret = $.map( settings[callbackArr].slice().reverse(), function (val, i) { return val.fn.apply( settings.oInstance, args ); } ); } if ( eventName !== null ) { var e = $.Event( eventName+'.dt' ); $(settings.nTable).trigger( e, args ); ret.push( e.result ); } return ret; } function _fnLengthOverflow ( settings ) { var start = settings._iDisplayStart, end = settings.fnDisplayEnd(), len = settings._iDisplayLength; /* If we have space to show extra rows (backing up from the end point - then do so */ if ( start >= end ) { start = end - len; } // Keep the start record on the current page start -= (start % len); if ( len === -1 || start < 0 ) { start = 0; } settings._iDisplayStart = start; } function _fnRenderer( settings, type ) { var renderer = settings.renderer; var host = DataTable.ext.renderer[type]; if ( $.isPlainObject( renderer ) && renderer[type] ) { // Specific renderer for this type. If available use it, otherwise use // the default. return host[renderer[type]] || host._; } else if ( typeof renderer === 'string' ) { // Common renderer - if there is one available for this type use it, // otherwise use the default return host[renderer] || host._; } // Use the default return host._; } /** * Detect the data source being used for the table. Used to simplify the code * a little (ajax) and to make it compress a little smaller. * * @param {object} settings dataTables settings object * @returns {string} Data source * @memberof DataTable#oApi */ function _fnDataSource ( settings ) { if ( settings.oFeatures.bServerSide ) { return 'ssp'; } else if ( settings.ajax || settings.sAjaxSource ) { return 'ajax'; } return 'dom'; } /** * Computed structure of the DataTables API, defined by the options passed to * `DataTable.Api.register()` when building the API. * * The structure is built in order to speed creation and extension of the Api * objects since the extensions are effectively pre-parsed. * * The array is an array of objects with the following structure, where this * base array represents the Api prototype base: * * [ * { * name: 'data' -- string - Property name * val: function () {}, -- function - Api method (or undefined if just an object * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result * propExt: [ ... ] -- array - Array of Api object definitions to extend the property * }, * { * name: 'row' * val: {}, * methodExt: [ ... ], * propExt: [ * { * name: 'data' * val: function () {}, * methodExt: [ ... ], * propExt: [ ... ] * }, * ... * ] * } * ] * * @type {Array} * @ignore */ var __apiStruct = []; /** * `Array.prototype` reference. * * @type object * @ignore */ var __arrayProto = Array.prototype; /** * Abstraction for `context` parameter of the `Api` constructor to allow it to * take several different forms for ease of use. * * Each of the input parameter types will be converted to a DataTables settings * object where possible. * * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one * of: * * * `string` - jQuery selector. Any DataTables' matching the given selector * with be found and used. * * `node` - `TABLE` node which has already been formed into a DataTable. * * `jQuery` - A jQuery object of `TABLE` nodes. * * `object` - DataTables settings object * * `DataTables.Api` - API instance * @return {array|null} Matching DataTables settings objects. `null` or * `undefined` is returned if no matching DataTable is found. * @ignore */ var _toSettings = function ( mixed ) { var idx, jq; var settings = DataTable.settings; var tables = $.map( settings, function (el, i) { return el.nTable; } ); if ( ! mixed ) { return []; } else if ( mixed.nTable && mixed.oApi ) { // DataTables settings object return [ mixed ]; } else if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) { // Table node idx = $.inArray( mixed, tables ); return idx !== -1 ? [ settings[idx] ] : null; } else if ( mixed && typeof mixed.settings === 'function' ) { return mixed.settings().toArray(); } else if ( typeof mixed === 'string' ) { // jQuery selector jq = $(mixed); } else if ( mixed instanceof $ ) { // jQuery object (also DataTables instance) jq = mixed; } if ( jq ) { return jq.map( function(i) { idx = $.inArray( this, tables ); return idx !== -1 ? settings[idx] : null; } ).toArray(); } }; /** * DataTables API class - used to control and interface with one or more * DataTables enhanced tables. * * The API class is heavily based on jQuery, presenting a chainable interface * that you can use to interact with tables. Each instance of the API class has * a "context" - i.e. the tables that it will operate on. This could be a single * table, all tables on a page or a sub-set thereof. * * Additionally the API is designed to allow you to easily work with the data in * the tables, retrieving and manipulating it as required. This is done by * presenting the API class as an array like interface. The contents of the * array depend upon the actions requested by each method (for example * `rows().nodes()` will return an array of nodes, while `rows().data()` will * return an array of objects or arrays depending upon your table's * configuration). The API object has a number of array like methods (`push`, * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`, * `unique` etc) to assist your working with the data held in a table. * * Most methods (those which return an Api instance) are chainable, which means * the return from a method call also has all of the methods available that the * top level object had. For example, these two calls are equivalent: * * // Not chained * api.row.add( {...} ); * api.draw(); * * // Chained * api.row.add( {...} ).draw(); * * @class DataTable.Api * @param {array|object|string|jQuery} context DataTable identifier. This is * used to define which DataTables enhanced tables this API will operate on. * Can be one of: * * * `string` - jQuery selector. Any DataTables' matching the given selector * with be found and used. * * `node` - `TABLE` node which has already been formed into a DataTable. * * `jQuery` - A jQuery object of `TABLE` nodes. * * `object` - DataTables settings object * @param {array} [data] Data to initialise the Api instance with. * * @example * // Direct initialisation during DataTables construction * var api = $('#example').DataTable(); * * @example * // Initialisation using a DataTables jQuery object * var api = $('#example').dataTable().api(); * * @example * // Initialisation as a constructor * var api = new $.fn.DataTable.Api( 'table.dataTable' ); */ _Api = function ( context, data ) { if ( ! (this instanceof _Api) ) { return new _Api( context, data ); } var settings = []; var ctxSettings = function ( o ) { var a = _toSettings( o ); if ( a ) { settings = settings.concat( a ); } }; if ( $.isArray( context ) ) { for ( var i=0, ien=context.length ; i<ien ; i++ ) { ctxSettings( context[i] ); } } else { ctxSettings( context ); } // Remove duplicates this.context = _unique( settings ); // Initial data if ( data ) { $.merge( this, data ); } // selector this.selector = { rows: null, cols: null, opts: null }; _Api.extend( this, this, __apiStruct ); }; DataTable.Api = _Api; // Don't destroy the existing prototype, just extend it. Required for jQuery 2's // isPlainObject. $.extend( _Api.prototype, { any: function () { return this.count() !== 0; }, concat: __arrayProto.concat, context: [], // array of table settings objects count: function () { return this.flatten().length; }, each: function ( fn ) { for ( var i=0, ien=this.length ; i<ien; i++ ) { fn.call( this, this[i], i, this ); } return this; }, eq: function ( idx ) { var ctx = this.context; return ctx.length > idx ? new _Api( ctx[idx], this[idx] ) : null; }, filter: function ( fn ) { var a = []; if ( __arrayProto.filter ) { a = __arrayProto.filter.call( this, fn, this ); } else { // Compatibility for browsers without EMCA-252-5 (JS 1.6) for ( var i=0, ien=this.length ; i<ien ; i++ ) { if ( fn.call( this, this[i], i, this ) ) { a.push( this[i] ); } } } return new _Api( this.context, a ); }, flatten: function () { var a = []; return new _Api( this.context, a.concat.apply( a, this.toArray() ) ); }, join: __arrayProto.join, indexOf: __arrayProto.indexOf || function (obj, start) { for ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) { if ( this[i] === obj ) { return i; } } return -1; }, iterator: function ( flatten, type, fn, alwaysNew ) { var a = [], ret, i, ien, j, jen, context = this.context, rows, items, item, selector = this.selector; // Argument shifting if ( typeof flatten === 'string' ) { alwaysNew = fn; fn = type; type = flatten; flatten = false; } for ( i=0, ien=context.length ; i<ien ; i++ ) { var apiInst = new _Api( context[i] ); if ( type === 'table' ) { ret = fn.call( apiInst, context[i], i ); if ( ret !== undefined ) { a.push( ret ); } } else if ( type === 'columns' || type === 'rows' ) { // this has same length as context - one entry for each table ret = fn.call( apiInst, context[i], this[i], i ); if ( ret !== undefined ) { a.push( ret ); } } else if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) { // columns and rows share the same structure. // 'this' is an array of column indexes for each context items = this[i]; if ( type === 'column-rows' ) { rows = _selector_row_indexes( context[i], selector.opts ); } for ( j=0, jen=items.length ; j<jen ; j++ ) { item = items[j]; if ( type === 'cell' ) { ret = fn.call( apiInst, context[i], item.row, item.column, i, j ); } else { ret = fn.call( apiInst, context[i], item, i, j, rows ); } if ( ret !== undefined ) { a.push( ret ); } } } } if ( a.length || alwaysNew ) { var api = new _Api( context, flatten ? a.concat.apply( [], a ) : a ); var apiSelector = api.selector; apiSelector.rows = selector.rows; apiSelector.cols = selector.cols; apiSelector.opts = selector.opts; return api; } return this; }, lastIndexOf: __arrayProto.lastIndexOf || function (obj, start) { // Bit cheeky... return this.indexOf.apply( this.toArray.reverse(), arguments ); }, length: 0, map: function ( fn ) { var a = []; if ( __arrayProto.map ) { a = __arrayProto.map.call( this, fn, this ); } else { // Compatibility for browsers without EMCA-252-5 (JS 1.6) for ( var i=0, ien=this.length ; i<ien ; i++ ) { a.push( fn.call( this, this[i], i ) ); } } return new _Api( this.context, a ); }, pluck: function ( prop ) { return this.map( function ( el ) { return el[ prop ]; } ); }, pop: __arrayProto.pop, push: __arrayProto.push, // Does not return an API instance reduce: __arrayProto.reduce || function ( fn, init ) { return _fnReduce( this, fn, init, 0, this.length, 1 ); }, reduceRight: __arrayProto.reduceRight || function ( fn, init ) { return _fnReduce( this, fn, init, this.length-1, -1, -1 ); }, reverse: __arrayProto.reverse, // Object with rows, columns and opts selector: null, shift: __arrayProto.shift, slice: function () { return new _Api( this.context, this ); }, sort: __arrayProto.sort, // ? name - order? splice: __arrayProto.splice, toArray: function () { return __arrayProto.slice.call( this ); }, to$: function () { return $( this ); }, toJQuery: function () { return $( this ); }, unique: function () { return new _Api( this.context, _unique(this) ); }, unshift: __arrayProto.unshift } ); _Api.extend = function ( scope, obj, ext ) { // Only extend API instances and static properties of the API if ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) { return; } var i, ien, j, jen, struct, inner, methodScoping = function ( scope, fn, struc ) { return function () { var ret = fn.apply( scope, arguments ); // Method extension _Api.extend( ret, ret, struc.methodExt ); return ret; }; }; for ( i=0, ien=ext.length ; i<ien ; i++ ) { struct = ext[i]; // Value obj[ struct.name ] = typeof struct.val === 'function' ? methodScoping( scope, struct.val, struct ) : $.isPlainObject( struct.val ) ? {} : struct.val; obj[ struct.name ].__dt_wrapper = true; // Property extension _Api.extend( scope, obj[ struct.name ], struct.propExt ); } }; // @todo - Is there need for an augment function? // _Api.augment = function ( inst, name ) // { // // Find src object in the structure from the name // var parts = name.split('.'); // _Api.extend( inst, obj ); // }; // [ // { // name: 'data' -- string - Property name // val: function () {}, -- function - Api method (or undefined if just an object // methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result // propExt: [ ... ] -- array - Array of Api object definitions to extend the property // }, // { // name: 'row' // val: {}, // methodExt: [ ... ], // propExt: [ // { // name: 'data' // val: function () {}, // methodExt: [ ... ], // propExt: [ ... ] // }, // ... // ] // } // ] _Api.register = _api_register = function ( name, val ) { if ( $.isArray( name ) ) { for ( var j=0, jen=name.length ; j<jen ; j++ ) { _Api.register( name[j], val ); } return; } var i, ien, heir = name.split('.'), struct = __apiStruct, key, method; var find = function ( src, name ) { for ( var i=0, ien=src.length ; i<ien ; i++ ) { if ( src[i].name === name ) { return src[i]; } } return null; }; for ( i=0, ien=heir.length ; i<ien ; i++ ) { method = heir[i].indexOf('()') !== -1; key = method ? heir[i].replace('()', '') : heir[i]; var src = find( struct, key ); if ( ! src ) { src = { name: key, val: {}, methodExt: [], propExt: [] }; struct.push( src ); } if ( i === ien-1 ) { src.val = val; } else { struct = method ? src.methodExt : src.propExt; } } }; _Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) { _Api.register( pluralName, val ); _Api.register( singularName, function () { var ret = val.apply( this, arguments ); if ( ret === this ) { // Returned item is the API instance that was passed in, return it return this; } else if ( ret instanceof _Api ) { // New API instance returned, want the value from the first item // in the returned array for the singular result. return ret.length ? $.isArray( ret[0] ) ? new _Api( ret.context, ret[0] ) : // Array results are 'enhanced' ret[0] : undefined; } // Non-API return - just fire it back return ret; } ); }; /** * Selector for HTML tables. Apply the given selector to the give array of * DataTables settings objects. * * @param {string|integer} [selector] jQuery selector string or integer * @param {array} Array of DataTables settings objects to be filtered * @return {array} * @ignore */ var __table_selector = function ( selector, a ) { // Integer is used to pick out a table by index if ( typeof selector === 'number' ) { return [ a[ selector ] ]; } // Perform a jQuery selector on the table nodes var nodes = $.map( a, function (el, i) { return el.nTable; } ); return $(nodes) .filter( selector ) .map( function (i) { // Need to translate back from the table node to the settings var idx = $.inArray( this, nodes ); return a[ idx ]; } ) .toArray(); }; /** * Context selector for the API's context (i.e. the tables the API instance * refers to. * * @name DataTable.Api#tables * @param {string|integer} [selector] Selector to pick which tables the iterator * should operate on. If not given, all tables in the current context are * used. This can be given as a jQuery selector (for example `':gt(0)'`) to * select multiple tables or as an integer to select a single table. * @returns {DataTable.Api} Returns a new API instance if a selector is given. */ _api_register( 'tables()', function ( selector ) { // A new instance is created if there was a selector specified return selector ? new _Api( __table_selector( selector, this.context ) ) : this; } ); _api_register( 'table()', function ( selector ) { var tables = this.tables( selector ); var ctx = tables.context; // Truncate to the first matched table return ctx.length ? new _Api( ctx[0] ) : tables; } ); _api_registerPlural( 'tables().nodes()', 'table().node()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTable; }, 1 ); } ); _api_registerPlural( 'tables().body()', 'table().body()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTBody; }, 1 ); } ); _api_registerPlural( 'tables().header()', 'table().header()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTHead; }, 1 ); } ); _api_registerPlural( 'tables().footer()', 'table().footer()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTFoot; }, 1 ); } ); _api_registerPlural( 'tables().containers()', 'table().container()' , function () { return this.iterator( 'table', function ( ctx ) { return ctx.nTableWrapper; }, 1 ); } ); /** * Redraw the tables in the current context. */ _api_register( 'draw()', function ( paging ) { return this.iterator( 'table', function ( settings ) { if ( paging === 'page' ) { _fnDraw( settings ); } else { if ( typeof paging === 'string' ) { paging = paging === 'full-hold' ? false : true; } _fnReDraw( settings, paging===false ); } } ); } ); /** * Get the current page index. * * @return {integer} Current page index (zero based) *//** * Set the current page. * * Note that if you attempt to show a page which does not exist, DataTables will * not throw an error, but rather reset the paging. * * @param {integer|string} action The paging action to take. This can be one of: * * `integer` - The page index to jump to * * `string` - An action to take: * * `first` - Jump to first page. * * `next` - Jump to the next page * * `previous` - Jump to previous page * * `last` - Jump to the last page. * @returns {DataTables.Api} this */ _api_register( 'page()', function ( action ) { if ( action === undefined ) { return this.page.info().page; // not an expensive call } // else, have an action to take on all tables return this.iterator( 'table', function ( settings ) { _fnPageChange( settings, action ); } ); } ); /** * Paging information for the first table in the current context. * * If you require paging information for another table, use the `table()` method * with a suitable selector. * * @return {object} Object with the following properties set: * * `page` - Current page index (zero based - i.e. the first page is `0`) * * `pages` - Total number of pages * * `start` - Display index for the first record shown on the current page * * `end` - Display index for the last record shown on the current page * * `length` - Display length (number of records). Note that generally `start * + length = end`, but this is not always true, for example if there are * only 2 records to show on the final page, with a length of 10. * * `recordsTotal` - Full data set length * * `recordsDisplay` - Data set length once the current filtering criterion * are applied. */ _api_register( 'page.info()', function ( action ) { if ( this.context.length === 0 ) { return undefined; } var settings = this.context[0], start = settings._iDisplayStart, len = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1, visRecords = settings.fnRecordsDisplay(), all = len === -1; return { "page": all ? 0 : Math.floor( start / len ), "pages": all ? 1 : Math.ceil( visRecords / len ), "start": start, "end": settings.fnDisplayEnd(), "length": len, "recordsTotal": settings.fnRecordsTotal(), "recordsDisplay": visRecords, "serverSide": _fnDataSource( settings ) === 'ssp' }; } ); /** * Get the current page length. * * @return {integer} Current page length. Note `-1` indicates that all records * are to be shown. *//** * Set the current page length. * * @param {integer} Page length to set. Use `-1` to show all records. * @returns {DataTables.Api} this */ _api_register( 'page.len()', function ( len ) { // Note that we can't call this function 'length()' because `length` // is a Javascript property of functions which defines how many arguments // the function expects. if ( len === undefined ) { return this.context.length !== 0 ? this.context[0]._iDisplayLength : undefined; } // else, set the page length return this.iterator( 'table', function ( settings ) { _fnLengthChange( settings, len ); } ); } ); var __reload = function ( settings, holdPosition, callback ) { // Use the draw event to trigger a callback if ( callback ) { var api = new _Api( settings ); api.one( 'draw', function () { callback( api.ajax.json() ); } ); } if ( _fnDataSource( settings ) == 'ssp' ) { _fnReDraw( settings, holdPosition ); } else { _fnProcessingDisplay( settings, true ); // Cancel an existing request var xhr = settings.jqXHR; if ( xhr && xhr.readyState !== 4 ) { xhr.abort(); } // Trigger xhr _fnBuildAjax( settings, [], function( json ) { _fnClearTable( settings ); var data = _fnAjaxDataSrc( settings, json ); for ( var i=0, ien=data.length ; i<ien ; i++ ) { _fnAddData( settings, data[i] ); } _fnReDraw( settings, holdPosition ); _fnProcessingDisplay( settings, false ); } ); } }; /** * Get the JSON response from the last Ajax request that DataTables made to the * server. Note that this returns the JSON from the first table in the current * context. * * @return {object} JSON received from the server. */ _api_register( 'ajax.json()', function () { var ctx = this.context; if ( ctx.length > 0 ) { return ctx[0].json; } // else return undefined; } ); /** * Get the data submitted in the last Ajax request */ _api_register( 'ajax.params()', function () { var ctx = this.context; if ( ctx.length > 0 ) { return ctx[0].oAjaxData; } // else return undefined; } ); /** * Reload tables from the Ajax data source. Note that this function will * automatically re-draw the table when the remote data has been loaded. * * @param {boolean} [reset=true] Reset (default) or hold the current paging * position. A full re-sort and re-filter is performed when this method is * called, which is why the pagination reset is the default action. * @returns {DataTables.Api} this */ _api_register( 'ajax.reload()', function ( callback, resetPaging ) { return this.iterator( 'table', function (settings) { __reload( settings, resetPaging===false, callback ); } ); } ); /** * Get the current Ajax URL. Note that this returns the URL from the first * table in the current context. * * @return {string} Current Ajax source URL *//** * Set the Ajax URL. Note that this will set the URL for all tables in the * current context. * * @param {string} url URL to set. * @returns {DataTables.Api} this */ _api_register( 'ajax.url()', function ( url ) { var ctx = this.context; if ( url === undefined ) { // get if ( ctx.length === 0 ) { return undefined; } ctx = ctx[0]; return ctx.ajax ? $.isPlainObject( ctx.ajax ) ? ctx.ajax.url : ctx.ajax : ctx.sAjaxSource; } // set return this.iterator( 'table', function ( settings ) { if ( $.isPlainObject( settings.ajax ) ) { settings.ajax.url = url; } else { settings.ajax = url; } // No need to consider sAjaxSource here since DataTables gives priority // to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any // value of `sAjaxSource` redundant. } ); } ); /** * Load data from the newly set Ajax URL. Note that this method is only * available when `ajax.url()` is used to set a URL. Additionally, this method * has the same effect as calling `ajax.reload()` but is provided for * convenience when setting a new URL. Like `ajax.reload()` it will * automatically redraw the table once the remote data has been loaded. * * @returns {DataTables.Api} this */ _api_register( 'ajax.url().load()', function ( callback, resetPaging ) { // Same as a reload, but makes sense to present it for easy access after a // url change return this.iterator( 'table', function ( ctx ) { __reload( ctx, resetPaging===false, callback ); } ); } ); var _selector_run = function ( type, selector, selectFn, settings, opts ) { var out = [], res, a, i, ien, j, jen, selectorType = typeof selector; // Can't just check for isArray here, as an API or jQuery instance might be // given with their array like look if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) { selector = [ selector ]; } for ( i=0, ien=selector.length ; i<ien ; i++ ) { // Only split on simple strings - complex expressions will be jQuery selectors a = selector[i] && selector[i].split && ! selector[i].match(/[\[\(:]/) ? selector[i].split(',') : [ selector[i] ]; for ( j=0, jen=a.length ; j<jen ; j++ ) { res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] ); if ( res && res.length ) { out = out.concat( res ); } } } // selector extensions var ext = _ext.selector[ type ]; if ( ext.length ) { for ( i=0, ien=ext.length ; i<ien ; i++ ) { out = ext[i]( settings, opts, out ); } } return _unique( out ); }; var _selector_opts = function ( opts ) { if ( ! opts ) { opts = {}; } // Backwards compatibility for 1.9- which used the terminology filter rather // than search if ( opts.filter && opts.search === undefined ) { opts.search = opts.filter; } return $.extend( { search: 'none', order: 'current', page: 'all' }, opts ); }; var _selector_first = function ( inst ) { // Reduce the API instance to the first item found for ( var i=0, ien=inst.length ; i<ien ; i++ ) { if ( inst[i].length > 0 ) { // Assign the first element to the first item in the instance // and truncate the instance and context inst[0] = inst[i]; inst[0].length = 1; inst.length = 1; inst.context = [ inst.context[i] ]; return inst; } } // Not found - return an empty instance inst.length = 0; return inst; }; var _selector_row_indexes = function ( settings, opts ) { var i, ien, tmp, a=[], displayFiltered = settings.aiDisplay, displayMaster = settings.aiDisplayMaster; var search = opts.search, // none, applied, removed order = opts.order, // applied, current, index (original - compatibility with 1.9) page = opts.page; // all, current if ( _fnDataSource( settings ) == 'ssp' ) { // In server-side processing mode, most options are irrelevant since // rows not shown don't exist and the index order is the applied order // Removed is a special case - for consistency just return an empty // array return search === 'removed' ? [] : _range( 0, displayMaster.length ); } else if ( page == 'current' ) { // Current page implies that order=current and fitler=applied, since it is // fairly senseless otherwise, regardless of what order and search actually // are for ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) { a.push( displayFiltered[i] ); } } else if ( order == 'current' || order == 'applied' ) { a = search == 'none' ? displayMaster.slice() : // no search search == 'applied' ? displayFiltered.slice() : // applied search $.map( displayMaster, function (el, i) { // removed search return $.inArray( el, displayFiltered ) === -1 ? el : null; } ); } else if ( order == 'index' || order == 'original' ) { for ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) { if ( search == 'none' ) { a.push( i ); } else { // applied | removed tmp = $.inArray( i, displayFiltered ); if ((tmp === -1 && search == 'removed') || (tmp >= 0 && search == 'applied') ) { a.push( i ); } } } } return a; }; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Rows * * {} - no selector - use all available rows * {integer} - row aoData index * {node} - TR node * {string} - jQuery selector to apply to the TR elements * {array} - jQuery array of nodes, or simply an array of TR nodes * */ var __row_selector = function ( settings, selector, opts ) { var rows; var run = function ( sel ) { var selInt = _intVal( sel ); var i, ien; // Short cut - selector is a number and no options provided (default is // all records, so no need to check if the index is in there, since it // must be - dev error if the index doesn't exist). if ( selInt !== null && ! opts ) { return [ selInt ]; } if ( ! rows ) { rows = _selector_row_indexes( settings, opts ); } if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) { // Selector - integer return [ selInt ]; } else if ( sel === null || sel === undefined || sel === '' ) { // Selector - none return rows; } // Selector - function if ( typeof sel === 'function' ) { return $.map( rows, function (idx) { var row = settings.aoData[ idx ]; return sel( idx, row._aData, row.nTr ) ? idx : null; } ); } // Get nodes in the order from the `rows` array with null values removed var nodes = _removeEmpty( _pluck_order( settings.aoData, rows, 'nTr' ) ); // Selector - node if ( sel.nodeName ) { if ( sel._DT_RowIndex !== undefined ) { return [ sel._DT_RowIndex ]; // Property added by DT for fast lookup } else if ( sel._DT_CellIndex ) { return [ sel._DT_CellIndex.row ]; } else { var host = $(sel).closest('*[data-dt-row]'); return host.length ? [ host.data('dt-row') ] : []; } } // ID selector. Want to always be able to select rows by id, regardless // of if the tr element has been created or not, so can't rely upon // jQuery here - hence a custom implementation. This does not match // Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything, // but to select it using a CSS selector engine (like Sizzle or // querySelect) it would need to need to be escaped for some characters. // DataTables simplifies this for row selectors since you can select // only a row. A # indicates an id any anything that follows is the id - // unescaped. if ( typeof sel === 'string' && sel.charAt(0) === '#' ) { // get row index from id var rowObj = settings.aIds[ sel.replace( /^#/, '' ) ]; if ( rowObj !== undefined ) { return [ rowObj.idx ]; } // need to fall through to jQuery in case there is DOM id that // matches } // Selector - jQuery selector string, array of nodes or jQuery object/ // As jQuery's .filter() allows jQuery objects to be passed in filter, // it also allows arrays, so this will cope with all three options return $(nodes) .filter( sel ) .map( function () { return this._DT_RowIndex; } ) .toArray(); }; return _selector_run( 'row', selector, run, settings, opts ); }; _api_register( 'rows()', function ( selector, opts ) { // argument shifting if ( selector === undefined ) { selector = ''; } else if ( $.isPlainObject( selector ) ) { opts = selector; selector = ''; } opts = _selector_opts( opts ); var inst = this.iterator( 'table', function ( settings ) { return __row_selector( settings, selector, opts ); }, 1 ); // Want argument shifting here and in __row_selector? inst.selector.rows = selector; inst.selector.opts = opts; return inst; } ); _api_register( 'rows().nodes()', function () { return this.iterator( 'row', function ( settings, row ) { return settings.aoData[ row ].nTr || undefined; }, 1 ); } ); _api_register( 'rows().data()', function () { return this.iterator( true, 'rows', function ( settings, rows ) { return _pluck_order( settings.aoData, rows, '_aData' ); }, 1 ); } ); _api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) { return this.iterator( 'row', function ( settings, row ) { var r = settings.aoData[ row ]; return type === 'search' ? r._aFilterData : r._aSortData; }, 1 ); } ); _api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) { return this.iterator( 'row', function ( settings, row ) { _fnInvalidate( settings, row, src ); } ); } ); _api_registerPlural( 'rows().indexes()', 'row().index()', function () { return this.iterator( 'row', function ( settings, row ) { return row; }, 1 ); } ); _api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) { var a = []; var context = this.context; // `iterator` will drop undefined values, but in this case we want them for ( var i=0, ien=context.length ; i<ien ; i++ ) { for ( var j=0, jen=this[i].length ; j<jen ; j++ ) { var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData ); a.push( (hash === true ? '#' : '' )+ id ); } } return new _Api( context, a ); } ); _api_registerPlural( 'rows().remove()', 'row().remove()', function () { var that = this; this.iterator( 'row', function ( settings, row, thatIdx ) { var data = settings.aoData; var rowData = data[ row ]; var i, ien, j, jen; var loopRow, loopCells; data.splice( row, 1 ); // Update the cached indexes for ( i=0, ien=data.length ; i<ien ; i++ ) { loopRow = data[i]; loopCells = loopRow.anCells; // Rows if ( loopRow.nTr !== null ) { loopRow.nTr._DT_RowIndex = i; } // Cells if ( loopCells !== null ) { for ( j=0, jen=loopCells.length ; j<jen ; j++ ) { loopCells[j]._DT_CellIndex.row = i; } } } // Delete from the display arrays _fnDeleteIndex( settings.aiDisplayMaster, row ); _fnDeleteIndex( settings.aiDisplay, row ); _fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes // For server-side processing tables - subtract the deleted row from the count if ( settings._iRecordsDisplay > 0 ) { settings._iRecordsDisplay--; } // Check for an 'overflow' they case for displaying the table _fnLengthOverflow( settings ); // Remove the row's ID reference if there is one var id = settings.rowIdFn( rowData._aData ); if ( id !== undefined ) { delete settings.aIds[ id ]; } } ); this.iterator( 'table', function ( settings ) { for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) { settings.aoData[i].idx = i; } } ); return this; } ); _api_register( 'rows.add()', function ( rows ) { var newRows = this.iterator( 'table', function ( settings ) { var row, i, ien; var out = []; for ( i=0, ien=rows.length ; i<ien ; i++ ) { row = rows[i]; if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { out.push( _fnAddTr( settings, row )[0] ); } else { out.push( _fnAddData( settings, row ) ); } } return out; }, 1 ); // Return an Api.rows() extended instance, so rows().nodes() etc can be used var modRows = this.rows( -1 ); modRows.pop(); $.merge( modRows, newRows ); return modRows; } ); /** * */ _api_register( 'row()', function ( selector, opts ) { return _selector_first( this.rows( selector, opts ) ); } ); _api_register( 'row().data()', function ( data ) { var ctx = this.context; if ( data === undefined ) { // Get return ctx.length && this.length ? ctx[0].aoData[ this[0] ]._aData : undefined; } // Set ctx[0].aoData[ this[0] ]._aData = data; // Automatically invalidate _fnInvalidate( ctx[0], this[0], 'data' ); return this; } ); _api_register( 'row().node()', function () { var ctx = this.context; return ctx.length && this.length ? ctx[0].aoData[ this[0] ].nTr || null : null; } ); _api_register( 'row.add()', function ( row ) { // Allow a jQuery object to be passed in - only a single row is added from // it though - the first element in the set if ( row instanceof $ && row.length ) { row = row[0]; } var rows = this.iterator( 'table', function ( settings ) { if ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) { return _fnAddTr( settings, row )[0]; } return _fnAddData( settings, row ); } ); // Return an Api.rows() extended instance, with the newly added row selected return this.row( rows[0] ); } ); var __details_add = function ( ctx, row, data, klass ) { // Convert to array of TR elements var rows = []; var addRow = function ( r, k ) { // Recursion to allow for arrays of jQuery objects if ( $.isArray( r ) || r instanceof $ ) { for ( var i=0, ien=r.length ; i<ien ; i++ ) { addRow( r[i], k ); } return; } // If we get a TR element, then just add it directly - up to the dev // to add the correct number of columns etc if ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) { rows.push( r ); } else { // Otherwise create a row with a wrapper var created = $('<tr><td/></tr>').addClass( k ); $('td', created) .addClass( k ) .html( r ) [0].colSpan = _fnVisbleColumns( ctx ); rows.push( created[0] ); } }; addRow( data, klass ); if ( row._details ) { row._details.detach(); } row._details = $(rows); // If the children were already shown, that state should be retained if ( row._detailsShow ) { row._details.insertAfter( row.nTr ); } }; var __details_remove = function ( api, idx ) { var ctx = api.context; if ( ctx.length ) { var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ]; if ( row && row._details ) { row._details.remove(); row._detailsShow = undefined; row._details = undefined; } } }; var __details_display = function ( api, show ) { var ctx = api.context; if ( ctx.length && api.length ) { var row = ctx[0].aoData[ api[0] ]; if ( row._details ) { row._detailsShow = show; if ( show ) { row._details.insertAfter( row.nTr ); } else { row._details.detach(); } __details_events( ctx[0] ); } } }; var __details_events = function ( settings ) { var api = new _Api( settings ); var namespace = '.dt.DT_details'; var drawEvent = 'draw'+namespace; var colvisEvent = 'column-visibility'+namespace; var destroyEvent = 'destroy'+namespace; var data = settings.aoData; api.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent ); if ( _pluck( data, '_details' ).length > 0 ) { // On each draw, insert the required elements into the document api.on( drawEvent, function ( e, ctx ) { if ( settings !== ctx ) { return; } api.rows( {page:'current'} ).eq(0).each( function (idx) { // Internal data grab var row = data[ idx ]; if ( row._detailsShow ) { row._details.insertAfter( row.nTr ); } } ); } ); // Column visibility change - update the colspan api.on( colvisEvent, function ( e, ctx, idx, vis ) { if ( settings !== ctx ) { return; } // Update the colspan for the details rows (note, only if it already has // a colspan) var row, visible = _fnVisbleColumns( ctx ); for ( var i=0, ien=data.length ; i<ien ; i++ ) { row = data[i]; if ( row._details ) { row._details.children('td[colspan]').attr('colspan', visible ); } } } ); // Table destroyed - nuke any child rows api.on( destroyEvent, function ( e, ctx ) { if ( settings !== ctx ) { return; } for ( var i=0, ien=data.length ; i<ien ; i++ ) { if ( data[i]._details ) { __details_remove( api, i ); } } } ); } }; // Strings for the method names to help minification var _emp = ''; var _child_obj = _emp+'row().child'; var _child_mth = _child_obj+'()'; // data can be: // tr // string // jQuery or array of any of the above _api_register( _child_mth, function ( data, klass ) { var ctx = this.context; if ( data === undefined ) { // get return ctx.length && this.length ? ctx[0].aoData[ this[0] ]._details : undefined; } else if ( data === true ) { // show this.child.show(); } else if ( data === false ) { // remove __details_remove( this ); } else if ( ctx.length && this.length ) { // set __details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass ); } return this; } ); _api_register( [ _child_obj+'.show()', _child_mth+'.show()' // only when `child()` was called with parameters (without ], function ( show ) { // it returns an object and this method is not executed) __details_display( this, true ); return this; } ); _api_register( [ _child_obj+'.hide()', _child_mth+'.hide()' // only when `child()` was called with parameters (without ], function () { // it returns an object and this method is not executed) __details_display( this, false ); return this; } ); _api_register( [ _child_obj+'.remove()', _child_mth+'.remove()' // only when `child()` was called with parameters (without ], function () { // it returns an object and this method is not executed) __details_remove( this ); return this; } ); _api_register( _child_obj+'.isShown()', function () { var ctx = this.context; if ( ctx.length && this.length ) { // _detailsShown as false or undefined will fall through to return false return ctx[0].aoData[ this[0] ]._detailsShow || false; } return false; } ); /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Columns * * {integer} - column index (>=0 count from left, <0 count from right) * "{integer}:visIdx" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right) * "{integer}:visible" - alias for {integer}:visIdx (>=0 count from left, <0 count from right) * "{string}:name" - column name * "{string}" - jQuery selector on column header nodes * */ // can be an array of these items, comma separated list, or an array of comma // separated lists var __re_column_selector = /^([^:]+):(name|visIdx|visible)$/; // r1 and r2 are redundant - but it means that the parameters match for the // iterator callback in columns().data() var __columnData = function ( settings, column, r1, r2, rows ) { var a = []; for ( var row=0, ien=rows.length ; row<ien ; row++ ) { a.push( _fnGetCellData( settings, rows[row], column ) ); } return a; }; var __column_selector = function ( settings, selector, opts ) { var columns = settings.aoColumns, names = _pluck( columns, 'sName' ), nodes = _pluck( columns, 'nTh' ); var run = function ( s ) { var selInt = _intVal( s ); // Selector - all if ( s === '' ) { return _range( columns.length ); } // Selector - index if ( selInt !== null ) { return [ selInt >= 0 ? selInt : // Count from left columns.length + selInt // Count from right (+ because its a negative value) ]; } // Selector = function if ( typeof s === 'function' ) { var rows = _selector_row_indexes( settings, opts ); return $.map( columns, function (col, idx) { return s( idx, __columnData( settings, idx, 0, 0, rows ), nodes[ idx ] ) ? idx : null; } ); } // jQuery or string selector var match = typeof s === 'string' ? s.match( __re_column_selector ) : ''; if ( match ) { switch( match[2] ) { case 'visIdx': case 'visible': var idx = parseInt( match[1], 10 ); // Visible index given, convert to column index if ( idx < 0 ) { // Counting from the right var visColumns = $.map( columns, function (col,i) { return col.bVisible ? i : null; } ); return [ visColumns[ visColumns.length + idx ] ]; } // Counting from the left return [ _fnVisibleToColumnIndex( settings, idx ) ]; case 'name': // match by name. `names` is column index complete and in order return $.map( names, function (name, i) { return name === match[1] ? i : null; } ); default: return []; } } // Cell in the table body if ( s.nodeName && s._DT_CellIndex ) { return [ s._DT_CellIndex.column ]; } // jQuery selector on the TH elements for the columns var jqResult = $( nodes ) .filter( s ) .map( function () { return $.inArray( this, nodes ); // `nodes` is column index complete and in order } ) .toArray(); if ( jqResult.length || ! s.nodeName ) { return jqResult; } // Otherwise a node which might have a `dt-column` data attribute, or be // a child or such an element var host = $(s).closest('*[data-dt-column]'); return host.length ? [ host.data('dt-column') ] : []; }; return _selector_run( 'column', selector, run, settings, opts ); }; var __setColumnVis = function ( settings, column, vis ) { var cols = settings.aoColumns, col = cols[ column ], data = settings.aoData, row, cells, i, ien, tr; // Get if ( vis === undefined ) { return col.bVisible; } // Set // No change if ( col.bVisible === vis ) { return; } if ( vis ) { // Insert column // Need to decide if we should use appendChild or insertBefore var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 ); for ( i=0, ien=data.length ; i<ien ; i++ ) { tr = data[i].nTr; cells = data[i].anCells; if ( tr ) { // insertBefore can act like appendChild if 2nd arg is null tr.insertBefore( cells[ column ], cells[ insertBefore ] || null ); } } } else { // Remove column $( _pluck( settings.aoData, 'anCells', column ) ).detach(); } // Common actions col.bVisible = vis; _fnDrawHead( settings, settings.aoHeader ); _fnDrawHead( settings, settings.aoFooter ); _fnSaveState( settings ); }; _api_register( 'columns()', function ( selector, opts ) { // argument shifting if ( selector === undefined ) { selector = ''; } else if ( $.isPlainObject( selector ) ) { opts = selector; selector = ''; } opts = _selector_opts( opts ); var inst = this.iterator( 'table', function ( settings ) { return __column_selector( settings, selector, opts ); }, 1 ); // Want argument shifting here and in _row_selector? inst.selector.cols = selector; inst.selector.opts = opts; return inst; } ); _api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) { return this.iterator( 'column', function ( settings, column ) { return settings.aoColumns[column].nTh; }, 1 ); } ); _api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) { return this.iterator( 'column', function ( settings, column ) { return settings.aoColumns[column].nTf; }, 1 ); } ); _api_registerPlural( 'columns().data()', 'column().data()', function () { return this.iterator( 'column-rows', __columnData, 1 ); } ); _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () { return this.iterator( 'column', function ( settings, column ) { return settings.aoColumns[column].mData; }, 1 ); } ); _api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) { return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { return _pluck_order( settings.aoData, rows, type === 'search' ? '_aFilterData' : '_aSortData', column ); }, 1 ); } ); _api_registerPlural( 'columns().nodes()', 'column().nodes()', function () { return this.iterator( 'column-rows', function ( settings, column, i, j, rows ) { return _pluck_order( settings.aoData, rows, 'anCells', column ) ; }, 1 ); } ); _api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) { var ret = this.iterator( 'column', function ( settings, column ) { if ( vis === undefined ) { return settings.aoColumns[ column ].bVisible; } // else __setColumnVis( settings, column, vis ); } ); // Group the column visibility changes if ( vis !== undefined ) { // Second loop once the first is done for events this.iterator( 'column', function ( settings, column ) { _fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] ); } ); if ( calc === undefined || calc ) { this.columns.adjust(); } } return ret; } ); _api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) { return this.iterator( 'column', function ( settings, column ) { return type === 'visible' ? _fnColumnIndexToVisible( settings, column ) : column; }, 1 ); } ); _api_register( 'columns.adjust()', function () { return this.iterator( 'table', function ( settings ) { _fnAdjustColumnSizing( settings ); }, 1 ); } ); _api_register( 'column.index()', function ( type, idx ) { if ( this.context.length !== 0 ) { var ctx = this.context[0]; if ( type === 'fromVisible' || type === 'toData' ) { return _fnVisibleToColumnIndex( ctx, idx ); } else if ( type === 'fromData' || type === 'toVisible' ) { return _fnColumnIndexToVisible( ctx, idx ); } } } ); _api_register( 'column()', function ( selector, opts ) { return _selector_first( this.columns( selector, opts ) ); } ); var __cell_selector = function ( settings, selector, opts ) { var data = settings.aoData; var rows = _selector_row_indexes( settings, opts ); var cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) ); var allCells = $( [].concat.apply([], cells) ); var row; var columns = settings.aoColumns.length; var a, i, ien, j, o, host; var run = function ( s ) { var fnSelector = typeof s === 'function'; if ( s === null || s === undefined || fnSelector ) { // All cells and function selectors a = []; for ( i=0, ien=rows.length ; i<ien ; i++ ) { row = rows[i]; for ( j=0 ; j<columns ; j++ ) { o = { row: row, column: j }; if ( fnSelector ) { // Selector - function host = data[ row ]; if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) { a.push( o ); } } else { // Selector - all a.push( o ); } } } return a; } // Selector - index if ( $.isPlainObject( s ) ) { return [s]; } // Selector - jQuery filtered cells var jqResult = allCells .filter( s ) .map( function (i, el) { return { // use a new object, in case someone changes the values row: el._DT_CellIndex.row, column: el._DT_CellIndex.column }; } ) .toArray(); if ( jqResult.length || ! s.nodeName ) { return jqResult; } // Otherwise the selector is a node, and there is one last option - the // element might be a child of an element which has dt-row and dt-column // data attributes host = $(s).closest('*[data-dt-row]'); return host.length ? [ { row: host.data('dt-row'), column: host.data('dt-column') } ] : []; }; return _selector_run( 'cell', selector, run, settings, opts ); }; _api_register( 'cells()', function ( rowSelector, columnSelector, opts ) { // Argument shifting if ( $.isPlainObject( rowSelector ) ) { // Indexes if ( rowSelector.row === undefined ) { // Selector options in first parameter opts = rowSelector; rowSelector = null; } else { // Cell index objects in first parameter opts = columnSelector; columnSelector = null; } } if ( $.isPlainObject( columnSelector ) ) { opts = columnSelector; columnSelector = null; } // Cell selector if ( columnSelector === null || columnSelector === undefined ) { return this.iterator( 'table', function ( settings ) { return __cell_selector( settings, rowSelector, _selector_opts( opts ) ); } ); } // Row + column selector var columns = this.columns( columnSelector, opts ); var rows = this.rows( rowSelector, opts ); var a, i, ien, j, jen; var cells = this.iterator( 'table', function ( settings, idx ) { a = []; for ( i=0, ien=rows[idx].length ; i<ien ; i++ ) { for ( j=0, jen=columns[idx].length ; j<jen ; j++ ) { a.push( { row: rows[idx][i], column: columns[idx][j] } ); } } return a; }, 1 ); $.extend( cells.selector, { cols: columnSelector, rows: rowSelector, opts: opts } ); return cells; } ); _api_registerPlural( 'cells().nodes()', 'cell().node()', function () { return this.iterator( 'cell', function ( settings, row, column ) { var data = settings.aoData[ row ]; return data && data.anCells ? data.anCells[ column ] : undefined; }, 1 ); } ); _api_register( 'cells().data()', function () { return this.iterator( 'cell', function ( settings, row, column ) { return _fnGetCellData( settings, row, column ); }, 1 ); } ); _api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) { type = type === 'search' ? '_aFilterData' : '_aSortData'; return this.iterator( 'cell', function ( settings, row, column ) { return settings.aoData[ row ][ type ][ column ]; }, 1 ); } ); _api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) { return this.iterator( 'cell', function ( settings, row, column ) { return _fnGetCellData( settings, row, column, type ); }, 1 ); } ); _api_registerPlural( 'cells().indexes()', 'cell().index()', function () { return this.iterator( 'cell', function ( settings, row, column ) { return { row: row, column: column, columnVisible: _fnColumnIndexToVisible( settings, column ) }; }, 1 ); } ); _api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) { return this.iterator( 'cell', function ( settings, row, column ) { _fnInvalidate( settings, row, src, column ); } ); } ); _api_register( 'cell()', function ( rowSelector, columnSelector, opts ) { return _selector_first( this.cells( rowSelector, columnSelector, opts ) ); } ); _api_register( 'cell().data()', function ( data ) { var ctx = this.context; var cell = this[0]; if ( data === undefined ) { // Get return ctx.length && cell.length ? _fnGetCellData( ctx[0], cell[0].row, cell[0].column ) : undefined; } // Set _fnSetCellData( ctx[0], cell[0].row, cell[0].column, data ); _fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column ); return this; } ); /** * Get current ordering (sorting) that has been applied to the table. * * @returns {array} 2D array containing the sorting information for the first * table in the current context. Each element in the parent array represents * a column being sorted upon (i.e. multi-sorting with two columns would have * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is * the column index that the sorting condition applies to, the second is the * direction of the sort (`desc` or `asc`) and, optionally, the third is the * index of the sorting order from the `column.sorting` initialisation array. *//** * Set the ordering for the table. * * @param {integer} order Column index to sort upon. * @param {string} direction Direction of the sort to be applied (`asc` or `desc`) * @returns {DataTables.Api} this *//** * Set the ordering for the table. * * @param {array} order 1D array of sorting information to be applied. * @param {array} [...] Optional additional sorting conditions * @returns {DataTables.Api} this *//** * Set the ordering for the table. * * @param {array} order 2D array of sorting information to be applied. * @returns {DataTables.Api} this */ _api_register( 'order()', function ( order, dir ) { var ctx = this.context; if ( order === undefined ) { // get return ctx.length !== 0 ? ctx[0].aaSorting : undefined; } // set if ( typeof order === 'number' ) { // Simple column / direction passed in order = [ [ order, dir ] ]; } else if ( order.length && ! $.isArray( order[0] ) ) { // Arguments passed in (list of 1D arrays) order = Array.prototype.slice.call( arguments ); } // otherwise a 2D array was passed in return this.iterator( 'table', function ( settings ) { settings.aaSorting = order.slice(); } ); } ); /** * Attach a sort listener to an element for a given column * * @param {node|jQuery|string} node Identifier for the element(s) to attach the * listener to. This can take the form of a single DOM node, a jQuery * collection of nodes or a jQuery selector which will identify the node(s). * @param {integer} column the column that a click on this node will sort on * @param {function} [callback] callback function when sort is run * @returns {DataTables.Api} this */ _api_register( 'order.listener()', function ( node, column, callback ) { return this.iterator( 'table', function ( settings ) { _fnSortAttachListener( settings, node, column, callback ); } ); } ); _api_register( 'order.fixed()', function ( set ) { if ( ! set ) { var ctx = this.context; var fixed = ctx.length ? ctx[0].aaSortingFixed : undefined; return $.isArray( fixed ) ? { pre: fixed } : fixed; } return this.iterator( 'table', function ( settings ) { settings.aaSortingFixed = $.extend( true, {}, set ); } ); } ); // Order by the selected column(s) _api_register( [ 'columns().order()', 'column().order()' ], function ( dir ) { var that = this; return this.iterator( 'table', function ( settings, i ) { var sort = []; $.each( that[i], function (j, col) { sort.push( [ col, dir ] ); } ); settings.aaSorting = sort; } ); } ); _api_register( 'search()', function ( input, regex, smart, caseInsen ) { var ctx = this.context; if ( input === undefined ) { // get return ctx.length !== 0 ? ctx[0].oPreviousSearch.sSearch : undefined; } // set return this.iterator( 'table', function ( settings ) { if ( ! settings.oFeatures.bFilter ) { return; } _fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, { "sSearch": input+"", "bRegex": regex === null ? false : regex, "bSmart": smart === null ? true : smart, "bCaseInsensitive": caseInsen === null ? true : caseInsen } ), 1 ); } ); } ); _api_registerPlural( 'columns().search()', 'column().search()', function ( input, regex, smart, caseInsen ) { return this.iterator( 'column', function ( settings, column ) { var preSearch = settings.aoPreSearchCols; if ( input === undefined ) { // get return preSearch[ column ].sSearch; } // set if ( ! settings.oFeatures.bFilter ) { return; } $.extend( preSearch[ column ], { "sSearch": input+"", "bRegex": regex === null ? false : regex, "bSmart": smart === null ? true : smart, "bCaseInsensitive": caseInsen === null ? true : caseInsen } ); _fnFilterComplete( settings, settings.oPreviousSearch, 1 ); } ); } ); /* * State API methods */ _api_register( 'state()', function () { return this.context.length ? this.context[0].oSavedState : null; } ); _api_register( 'state.clear()', function () { return this.iterator( 'table', function ( settings ) { // Save an empty object settings.fnStateSaveCallback.call( settings.oInstance, settings, {} ); } ); } ); _api_register( 'state.loaded()', function () { return this.context.length ? this.context[0].oLoadedState : null; } ); _api_register( 'state.save()', function () { return this.iterator( 'table', function ( settings ) { _fnSaveState( settings ); } ); } ); /** * Provide a common method for plug-ins to check the version of DataTables being * used, in order to ensure compatibility. * * @param {string} version Version string to check for, in the format "X.Y.Z". * Note that the formats "X" and "X.Y" are also acceptable. * @returns {boolean} true if this version of DataTables is greater or equal to * the required version, or false if this version of DataTales is not * suitable * @static * @dtopt API-Static * * @example * alert( $.fn.dataTable.versionCheck( '1.9.0' ) ); */ DataTable.versionCheck = DataTable.fnVersionCheck = function( version ) { var aThis = DataTable.version.split('.'); var aThat = version.split('.'); var iThis, iThat; for ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) { iThis = parseInt( aThis[i], 10 ) || 0; iThat = parseInt( aThat[i], 10 ) || 0; // Parts are the same, keep comparing if (iThis === iThat) { continue; } // Parts are different, return immediately return iThis > iThat; } return true; }; /** * Check if a `<table>` node is a DataTable table already or not. * * @param {node|jquery|string} table Table node, jQuery object or jQuery * selector for the table to test. Note that if more than more than one * table is passed on, only the first will be checked * @returns {boolean} true the table given is a DataTable, or false otherwise * @static * @dtopt API-Static * * @example * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) { * $('#example').dataTable(); * } */ DataTable.isDataTable = DataTable.fnIsDataTable = function ( table ) { var t = $(table).get(0); var is = false; if ( table instanceof DataTable.Api ) { return true; } $.each( DataTable.settings, function (i, o) { var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null; var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null; if ( o.nTable === t || head === t || foot === t ) { is = true; } } ); return is; }; /** * Get all DataTable tables that have been initialised - optionally you can * select to get only currently visible tables. * * @param {boolean} [visible=false] Flag to indicate if you want all (default) * or visible tables only. * @returns {array} Array of `table` nodes (not DataTable instances) which are * DataTables * @static * @dtopt API-Static * * @example * $.each( $.fn.dataTable.tables(true), function () { * $(table).DataTable().columns.adjust(); * } ); */ DataTable.tables = DataTable.fnTables = function ( visible ) { var api = false; if ( $.isPlainObject( visible ) ) { api = visible.api; visible = visible.visible; } var a = $.map( DataTable.settings, function (o) { if ( !visible || (visible && $(o.nTable).is(':visible')) ) { return o.nTable; } } ); return api ? new _Api( a ) : a; }; /** * Convert from camel case parameters to Hungarian notation. This is made public * for the extensions to provide the same ability as DataTables core to accept * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase * parameters. * * @param {object} src The model object which holds all parameters that can be * mapped. * @param {object} user The object to convert from camel case to Hungarian. * @param {boolean} force When set to `true`, properties which already have a * Hungarian value in the `user` object will be overwritten. Otherwise they * won't be. */ DataTable.camelToHungarian = _fnCamelToHungarian; /** * */ _api_register( '$()', function ( selector, opts ) { var rows = this.rows( opts ).nodes(), // Get all rows jqRows = $(rows); return $( [].concat( jqRows.filter( selector ).toArray(), jqRows.find( selector ).toArray() ) ); } ); // jQuery functions to operate on the tables $.each( [ 'on', 'one', 'off' ], function (i, key) { _api_register( key+'()', function ( /* event, handler */ ) { var args = Array.prototype.slice.call(arguments); // Add the `dt` namespace automatically if it isn't already present args[0] = $.map( args[0].split( /\s/ ), function ( e ) { return ! e.match(/\.dt\b/) ? e+'.dt' : e; } ).join( ' ' ); var inst = $( this.tables().nodes() ); inst[key].apply( inst, args ); return this; } ); } ); _api_register( 'clear()', function () { return this.iterator( 'table', function ( settings ) { _fnClearTable( settings ); } ); } ); _api_register( 'settings()', function () { return new _Api( this.context, this.context ); } ); _api_register( 'init()', function () { var ctx = this.context; return ctx.length ? ctx[0].oInit : null; } ); _api_register( 'data()', function () { return this.iterator( 'table', function ( settings ) { return _pluck( settings.aoData, '_aData' ); } ).flatten(); } ); _api_register( 'destroy()', function ( remove ) { remove = remove || false; return this.iterator( 'table', function ( settings ) { var orig = settings.nTableWrapper.parentNode; var classes = settings.oClasses; var table = settings.nTable; var tbody = settings.nTBody; var thead = settings.nTHead; var tfoot = settings.nTFoot; var jqTable = $(table); var jqTbody = $(tbody); var jqWrapper = $(settings.nTableWrapper); var rows = $.map( settings.aoData, function (r) { return r.nTr; } ); var i, ien; // Flag to note that the table is currently being destroyed - no action // should be taken settings.bDestroying = true; // Fire off the destroy callbacks for plug-ins etc _fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] ); // If not being removed from the document, make all columns visible if ( ! remove ) { new _Api( settings ).columns().visible( true ); } // Blitz all `DT` namespaced events (these are internal events, the // lowercase, `dt` events are user subscribed and they are responsible // for removing them jqWrapper.off('.DT').find(':not(tbody *)').off('.DT'); $(window).off('.DT-'+settings.sInstance); // When scrolling we had to break the table up - restore it if ( table != thead.parentNode ) { jqTable.children('thead').detach(); jqTable.append( thead ); } if ( tfoot && table != tfoot.parentNode ) { jqTable.children('tfoot').detach(); jqTable.append( tfoot ); } settings.aaSorting = []; settings.aaSortingFixed = []; _fnSortingClasses( settings ); $( rows ).removeClass( settings.asStripeClasses.join(' ') ); $('th, td', thead).removeClass( classes.sSortable+' '+ classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone ); // Add the TR elements back into the table in their original order jqTbody.children().detach(); jqTbody.append( rows ); // Remove the DataTables generated nodes, events and classes var removedMethod = remove ? 'remove' : 'detach'; jqTable[ removedMethod ](); jqWrapper[ removedMethod ](); // If we need to reattach the table to the document if ( ! remove && orig ) { // insertBefore acts like appendChild if !arg[1] orig.insertBefore( table, settings.nTableReinsertBefore ); // Restore the width of the original table - was read from the style property, // so we can restore directly to that jqTable .css( 'width', settings.sDestroyWidth ) .removeClass( classes.sTable ); // If the were originally stripe classes - then we add them back here. // Note this is not fool proof (for example if not all rows had stripe // classes - but it's a good effort without getting carried away ien = settings.asDestroyStripes.length; if ( ien ) { jqTbody.children().each( function (i) { $(this).addClass( settings.asDestroyStripes[i % ien] ); } ); } } /* Remove the settings object from the settings array */ var idx = $.inArray( settings, DataTable.settings ); if ( idx !== -1 ) { DataTable.settings.splice( idx, 1 ); } } ); } ); // Add the `every()` method for rows, columns and cells in a compact form $.each( [ 'column', 'row', 'cell' ], function ( i, type ) { _api_register( type+'s().every()', function ( fn ) { var opts = this.selector.opts; var api = this; return this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) { // Rows and columns: // arg1 - index // arg2 - table counter // arg3 - loop counter // arg4 - undefined // Cells: // arg1 - row index // arg2 - column index // arg3 - table counter // arg4 - loop counter fn.call( api[ type ]( arg1, type==='cell' ? arg2 : opts, type==='cell' ? opts : undefined ), arg1, arg2, arg3, arg4 ); } ); } ); } ); // i18n method for extensions to be able to use the language object from the // DataTable _api_register( 'i18n()', function ( token, def, plural ) { var ctx = this.context[0]; var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage ); if ( resolved === undefined ) { resolved = def; } if ( plural !== undefined && $.isPlainObject( resolved ) ) { resolved = resolved[ plural ] !== undefined ? resolved[ plural ] : resolved._; } return resolved.replace( '%d', plural ); // nb: plural might be undefined, } ); /** * Version string for plug-ins to check compatibility. Allowed format is * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used * only for non-release builds. See http://semver.org/ for more information. * @member * @type string * @default Version number */ DataTable.version = "1.10.16"; /** * Private data store, containing all of the settings objects that are * created for the tables on a given page. * * Note that the `DataTable.settings` object is aliased to * `jQuery.fn.dataTableExt` through which it may be accessed and * manipulated, or `jQuery.fn.dataTable.settings`. * @member * @type array * @default [] * @private */ DataTable.settings = []; /** * Object models container, for the various models that DataTables has * available to it. These models define the objects that are used to hold * the active state and configuration of the table. * @namespace */ DataTable.models = {}; /** * Template object for the way in which DataTables holds information about * search information for the global filter and individual column filters. * @namespace */ DataTable.models.oSearch = { /** * Flag to indicate if the filtering should be case insensitive or not * @type boolean * @default true */ "bCaseInsensitive": true, /** * Applied search term * @type string * @default <i>Empty string</i> */ "sSearch": "", /** * Flag to indicate if the search term should be interpreted as a * regular expression (true) or not (false) and therefore and special * regex characters escaped. * @type boolean * @default false */ "bRegex": false, /** * Flag to indicate if DataTables is to use its smart filtering or not. * @type boolean * @default true */ "bSmart": true }; /** * Template object for the way in which DataTables holds information about * each individual row. This is the object format used for the settings * aoData array. * @namespace */ DataTable.models.oRow = { /** * TR element for the row * @type node * @default null */ "nTr": null, /** * Array of TD elements for each row. This is null until the row has been * created. * @type array nodes * @default [] */ "anCells": null, /** * Data object from the original data source for the row. This is either * an array if using the traditional form of DataTables, or an object if * using mData options. The exact type will depend on the passed in * data from the data source, or will be an array if using DOM a data * source. * @type array|object * @default [] */ "_aData": [], /** * Sorting data cache - this array is ostensibly the same length as the * number of columns (although each index is generated only as it is * needed), and holds the data that is used for sorting each column in the * row. We do this cache generation at the start of the sort in order that * the formatting of the sort data need be done only once for each cell * per sort. This array should not be read from or written to by anything * other than the master sorting methods. * @type array * @default null * @private */ "_aSortData": null, /** * Per cell filtering data cache. As per the sort data cache, used to * increase the performance of the filtering in DataTables * @type array * @default null * @private */ "_aFilterData": null, /** * Filtering data cache. This is the same as the cell filtering cache, but * in this case a string rather than an array. This is easily computed with * a join on `_aFilterData`, but is provided as a cache so the join isn't * needed on every search (memory traded for performance) * @type array * @default null * @private */ "_sFilterRow": null, /** * Cache of the class name that DataTables has applied to the row, so we * can quickly look at this variable rather than needing to do a DOM check * on className for the nTr property. * @type string * @default <i>Empty string</i> * @private */ "_sRowStripe": "", /** * Denote if the original data source was from the DOM, or the data source * object. This is used for invalidating data, so DataTables can * automatically read data from the original source, unless uninstructed * otherwise. * @type string * @default null * @private */ "src": null, /** * Index in the aoData array. This saves an indexOf lookup when we have the * object, but want to know the index * @type integer * @default -1 * @private */ "idx": -1 }; /** * Template object for the column information object in DataTables. This object * is held in the settings aoColumns array and contains all the information that * DataTables needs about each individual column. * * Note that this object is related to {@link DataTable.defaults.column} * but this one is the internal data store for DataTables's cache of columns. * It should NOT be manipulated outside of DataTables. Any configuration should * be done through the initialisation options. * @namespace */ DataTable.models.oColumn = { /** * Column index. This could be worked out on-the-fly with $.inArray, but it * is faster to just hold it as a variable * @type integer * @default null */ "idx": null, /** * A list of the columns that sorting should occur on when this column * is sorted. That this property is an array allows multi-column sorting * to be defined for a column (for example first name / last name columns * would benefit from this). The values are integers pointing to the * columns to be sorted on (typically it will be a single integer pointing * at itself, but that doesn't need to be the case). * @type array */ "aDataSort": null, /** * Define the sorting directions that are applied to the column, in sequence * as the column is repeatedly sorted upon - i.e. the first value is used * as the sorting direction when the column if first sorted (clicked on). * Sort it again (click again) and it will move on to the next index. * Repeat until loop. * @type array */ "asSorting": null, /** * Flag to indicate if the column is searchable, and thus should be included * in the filtering or not. * @type boolean */ "bSearchable": null, /** * Flag to indicate if the column is sortable or not. * @type boolean */ "bSortable": null, /** * Flag to indicate if the column is currently visible in the table or not * @type boolean */ "bVisible": null, /** * Store for manual type assignment using the `column.type` option. This * is held in store so we can manipulate the column's `sType` property. * @type string * @default null * @private */ "_sManualType": null, /** * Flag to indicate if HTML5 data attributes should be used as the data * source for filtering or sorting. True is either are. * @type boolean * @default false * @private */ "_bAttrSrc": false, /** * Developer definable function that is called whenever a cell is created (Ajax source, * etc) or processed for input (DOM source). This can be used as a compliment to mRender * allowing you to modify the DOM element (add background colour for example) when the * element is available. * @type function * @param {element} nTd The TD node that has been created * @param {*} sData The Data for the cell * @param {array|object} oData The data for the whole row * @param {int} iRow The row index for the aoData data store * @default null */ "fnCreatedCell": null, /** * Function to get data from a cell in a column. You should <b>never</b> * access data directly through _aData internally in DataTables - always use * the method attached to this property. It allows mData to function as * required. This function is automatically assigned by the column * initialisation method * @type function * @param {array|object} oData The data array/object for the array * (i.e. aoData[]._aData) * @param {string} sSpecific The specific data type you want to get - * 'display', 'type' 'filter' 'sort' * @returns {*} The data for the cell from the given row's data * @default null */ "fnGetData": null, /** * Function to set data for a cell in the column. You should <b>never</b> * set the data directly to _aData internally in DataTables - always use * this method. It allows mData to function as required. This function * is automatically assigned by the column initialisation method * @type function * @param {array|object} oData The data array/object for the array * (i.e. aoData[]._aData) * @param {*} sValue Value to set * @default null */ "fnSetData": null, /** * Property to read the value for the cells in the column from the data * source array / object. If null, then the default content is used, if a * function is given then the return from the function is used. * @type function|int|string|null * @default null */ "mData": null, /** * Partner property to mData which is used (only when defined) to get * the data - i.e. it is basically the same as mData, but without the * 'set' option, and also the data fed to it is the result from mData. * This is the rendering method to match the data method of mData. * @type function|int|string|null * @default null */ "mRender": null, /** * Unique header TH/TD element for this column - this is what the sorting * listener is attached to (if sorting is enabled.) * @type node * @default null */ "nTh": null, /** * Unique footer TH/TD element for this column (if there is one). Not used * in DataTables as such, but can be used for plug-ins to reference the * footer for each column. * @type node * @default null */ "nTf": null, /** * The class to apply to all TD elements in the table's TBODY for the column * @type string * @default null */ "sClass": null, /** * When DataTables calculates the column widths to assign to each column, * it finds the longest string in each column and then constructs a * temporary table and reads the widths from that. The problem with this * is that "mmm" is much wider then "iiii", but the latter is a longer * string - thus the calculation can go wrong (doing it properly and putting * it into an DOM object and measuring that is horribly(!) slow). Thus as * a "work around" we provide this option. It will append its value to the * text that is found to be the longest string for the column - i.e. padding. * @type string */ "sContentPadding": null, /** * Allows a default value to be given for a column's data, and will be used * whenever a null data source is encountered (this can be because mData * is set to null, or because the data source itself is null). * @type string * @default null */ "sDefaultContent": null, /** * Name for the column, allowing reference to the column by name as well as * by index (needs a lookup to work by name). * @type string */ "sName": null, /** * Custom sorting data type - defines which of the available plug-ins in * afnSortData the custom sorting will use - if any is defined. * @type string * @default std */ "sSortDataType": 'std', /** * Class to be applied to the header element when sorting on this column * @type string * @default null */ "sSortingClass": null, /** * Class to be applied to the header element when sorting on this column - * when jQuery UI theming is used. * @type string * @default null */ "sSortingClassJUI": null, /** * Title of the column - what is seen in the TH element (nTh). * @type string */ "sTitle": null, /** * Column sorting and filtering type * @type string * @default null */ "sType": null, /** * Width of the column * @type string * @default null */ "sWidth": null, /** * Width of the column when it was first "encountered" * @type string * @default null */ "sWidthOrig": null }; /* * Developer note: The properties of the object below are given in Hungarian * notation, that was used as the interface for DataTables prior to v1.10, however * from v1.10 onwards the primary interface is camel case. In order to avoid * breaking backwards compatibility utterly with this change, the Hungarian * version is still, internally the primary interface, but is is not documented * - hence the @name tags in each doc comment. This allows a Javascript function * to create a map from Hungarian notation to camel case (going the other direction * would require each property to be listed, which would at around 3K to the size * of DataTables, while this method is about a 0.5K hit. * * Ultimately this does pave the way for Hungarian notation to be dropped * completely, but that is a massive amount of work and will break current * installs (therefore is on-hold until v2). */ /** * Initialisation options that can be given to DataTables at initialisation * time. * @namespace */ DataTable.defaults = { /** * An array of data to use for the table, passed in at initialisation which * will be used in preference to any data which is already in the DOM. This is * particularly useful for constructing tables purely in Javascript, for * example with a custom Ajax call. * @type array * @default null * * @dtopt Option * @name DataTable.defaults.data * * @example * // Using a 2D array data source * $(document).ready( function () { * $('#example').dataTable( { * "data": [ * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'], * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'], * ], * "columns": [ * { "title": "Engine" }, * { "title": "Browser" }, * { "title": "Platform" }, * { "title": "Version" }, * { "title": "Grade" } * ] * } ); * } ); * * @example * // Using an array of objects as a data source (`data`) * $(document).ready( function () { * $('#example').dataTable( { * "data": [ * { * "engine": "Trident", * "browser": "Internet Explorer 4.0", * "platform": "Win 95+", * "version": 4, * "grade": "X" * }, * { * "engine": "Trident", * "browser": "Internet Explorer 5.0", * "platform": "Win 95+", * "version": 5, * "grade": "C" * } * ], * "columns": [ * { "title": "Engine", "data": "engine" }, * { "title": "Browser", "data": "browser" }, * { "title": "Platform", "data": "platform" }, * { "title": "Version", "data": "version" }, * { "title": "Grade", "data": "grade" } * ] * } ); * } ); */ "aaData": null, /** * If ordering is enabled, then DataTables will perform a first pass sort on * initialisation. You can define which column(s) the sort is performed * upon, and the sorting direction, with this variable. The `sorting` array * should contain an array for each column to be sorted initially containing * the column's index and a direction string ('asc' or 'desc'). * @type array * @default [[0,'asc']] * * @dtopt Option * @name DataTable.defaults.order * * @example * // Sort by 3rd column first, and then 4th column * $(document).ready( function() { * $('#example').dataTable( { * "order": [[2,'asc'], [3,'desc']] * } ); * } ); * * // No initial sorting * $(document).ready( function() { * $('#example').dataTable( { * "order": [] * } ); * } ); */ "aaSorting": [[0,'asc']], /** * This parameter is basically identical to the `sorting` parameter, but * cannot be overridden by user interaction with the table. What this means * is that you could have a column (visible or hidden) which the sorting * will always be forced on first - any sorting after that (from the user) * will then be performed as required. This can be useful for grouping rows * together. * @type array * @default null * * @dtopt Option * @name DataTable.defaults.orderFixed * * @example * $(document).ready( function() { * $('#example').dataTable( { * "orderFixed": [[0,'asc']] * } ); * } ) */ "aaSortingFixed": [], /** * DataTables can be instructed to load data to display in the table from a * Ajax source. This option defines how that Ajax call is made and where to. * * The `ajax` property has three different modes of operation, depending on * how it is defined. These are: * * * `string` - Set the URL from where the data should be loaded from. * * `object` - Define properties for `jQuery.ajax`. * * `function` - Custom data get function * * `string` * -------- * * As a string, the `ajax` property simply defines the URL from which * DataTables will load data. * * `object` * -------- * * As an object, the parameters in the object are passed to * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control * of the Ajax request. DataTables has a number of default parameters which * you can override using this option. Please refer to the jQuery * documentation for a full description of the options available, although * the following parameters provide additional options in DataTables or * require special consideration: * * * `data` - As with jQuery, `data` can be provided as an object, but it * can also be used as a function to manipulate the data DataTables sends * to the server. The function takes a single parameter, an object of * parameters with the values that DataTables has readied for sending. An * object may be returned which will be merged into the DataTables * defaults, or you can add the items to the object that was passed in and * not return anything from the function. This supersedes `fnServerParams` * from DataTables 1.9-. * * * `dataSrc` - By default DataTables will look for the property `data` (or * `aaData` for compatibility with DataTables 1.9-) when obtaining data * from an Ajax source or for server-side processing - this parameter * allows that property to be changed. You can use Javascript dotted * object notation to get a data source for multiple levels of nesting, or * it my be used as a function. As a function it takes a single parameter, * the JSON returned from the server, which can be manipulated as * required, with the returned value being that used by DataTables as the * data source for the table. This supersedes `sAjaxDataProp` from * DataTables 1.9-. * * * `success` - Should not be overridden it is used internally in * DataTables. To manipulate / transform the data returned by the server * use `ajax.dataSrc`, or use `ajax` as a function (see below). * * `function` * ---------- * * As a function, making the Ajax call is left up to yourself allowing * complete control of the Ajax request. Indeed, if desired, a method other * than Ajax could be used to obtain the required data, such as Web storage * or an AIR database. * * The function is given four parameters and no return is required. The * parameters are: * * 1. _object_ - Data to send to the server * 2. _function_ - Callback function that must be executed when the required * data has been obtained. That data should be passed into the callback * as the only parameter * 3. _object_ - DataTables settings object for the table * * Note that this supersedes `fnServerData` from DataTables 1.9-. * * @type string|object|function * @default null * * @dtopt Option * @name DataTable.defaults.ajax * @since 1.10.0 * * @example * // Get JSON data from a file via Ajax. * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default). * $('#example').dataTable( { * "ajax": "data.json" * } ); * * @example * // Get JSON data from a file via Ajax, using `dataSrc` to change * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`) * $('#example').dataTable( { * "ajax": { * "url": "data.json", * "dataSrc": "tableData" * } * } ); * * @example * // Get JSON data from a file via Ajax, using `dataSrc` to read data * // from a plain array rather than an array in an object * $('#example').dataTable( { * "ajax": { * "url": "data.json", * "dataSrc": "" * } * } ); * * @example * // Manipulate the data returned from the server - add a link to data * // (note this can, should, be done using `render` for the column - this * // is just a simple example of how the data can be manipulated). * $('#example').dataTable( { * "ajax": { * "url": "data.json", * "dataSrc": function ( json ) { * for ( var i=0, ien=json.length ; i<ien ; i++ ) { * json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>'; * } * return json; * } * } * } ); * * @example * // Add data to the request * $('#example').dataTable( { * "ajax": { * "url": "data.json", * "data": function ( d ) { * return { * "extra_search": $('#extra').val() * }; * } * } * } ); * * @example * // Send request as POST * $('#example').dataTable( { * "ajax": { * "url": "data.json", * "type": "POST" * } * } ); * * @example * // Get the data from localStorage (could interface with a form for * // adding, editing and removing rows). * $('#example').dataTable( { * "ajax": function (data, callback, settings) { * callback( * JSON.parse( localStorage.getItem('dataTablesData') ) * ); * } * } ); */ "ajax": null, /** * This parameter allows you to readily specify the entries in the length drop * down menu that DataTables shows when pagination is enabled. It can be * either a 1D array of options which will be used for both the displayed * option and the value, or a 2D array which will use the array in the first * position as the value, and the array in the second position as the * displayed options (useful for language strings such as 'All'). * * Note that the `pageLength` property will be automatically set to the * first value given in this array, unless `pageLength` is also provided. * @type array * @default [ 10, 25, 50, 100 ] * * @dtopt Option * @name DataTable.defaults.lengthMenu * * @example * $(document).ready( function() { * $('#example').dataTable( { * "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] * } ); * } ); */ "aLengthMenu": [ 10, 25, 50, 100 ], /** * The `columns` option in the initialisation parameter allows you to define * details about the way individual columns behave. For a full list of * column options that can be set, please see * {@link DataTable.defaults.column}. Note that if you use `columns` to * define your columns, you must have an entry in the array for every single * column that you have in your table (these can be null if you don't which * to specify any options). * @member * * @name DataTable.defaults.column */ "aoColumns": null, /** * Very similar to `columns`, `columnDefs` allows you to target a specific * column, multiple columns, or all columns, using the `targets` property of * each object in the array. This allows great flexibility when creating * tables, as the `columnDefs` arrays can be of any length, targeting the * columns you specifically want. `columnDefs` may use any of the column * options available: {@link DataTable.defaults.column}, but it _must_ * have `targets` defined in each object in the array. Values in the `targets` * array may be: * <ul> * <li>a string - class name will be matched on the TH for the column</li> * <li>0 or a positive integer - column index counting from the left</li> * <li>a negative integer - column index counting from the right</li> * <li>the string "_all" - all columns (i.e. assign a default)</li> * </ul> * @member * * @name DataTable.defaults.columnDefs */ "aoColumnDefs": null, /** * Basically the same as `search`, this parameter defines the individual column * filtering state at initialisation time. The array must be of the same size * as the number of columns, and each element be an object with the parameters * `search` and `escapeRegex` (the latter is optional). 'null' is also * accepted and the default will be used. * @type array * @default [] * * @dtopt Option * @name DataTable.defaults.searchCols * * @example * $(document).ready( function() { * $('#example').dataTable( { * "searchCols": [ * null, * { "search": "My filter" }, * null, * { "search": "^[0-9]", "escapeRegex": false } * ] * } ); * } ) */ "aoSearchCols": [], /** * An array of CSS classes that should be applied to displayed rows. This * array may be of any length, and DataTables will apply each class * sequentially, looping when required. * @type array * @default null <i>Will take the values determined by the `oClasses.stripe*` * options</i> * * @dtopt Option * @name DataTable.defaults.stripeClasses * * @example * $(document).ready( function() { * $('#example').dataTable( { * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ] * } ); * } ) */ "asStripeClasses": null, /** * Enable or disable automatic column width calculation. This can be disabled * as an optimisation (it takes some time to calculate the widths) if the * tables widths are passed in using `columns`. * @type boolean * @default true * * @dtopt Features * @name DataTable.defaults.autoWidth * * @example * $(document).ready( function () { * $('#example').dataTable( { * "autoWidth": false * } ); * } ); */ "bAutoWidth": true, /** * Deferred rendering can provide DataTables with a huge speed boost when you * are using an Ajax or JS data source for the table. This option, when set to * true, will cause DataTables to defer the creation of the table elements for * each row until they are needed for a draw - saving a significant amount of * time. * @type boolean * @default false * * @dtopt Features * @name DataTable.defaults.deferRender * * @example * $(document).ready( function() { * $('#example').dataTable( { * "ajax": "sources/arrays.txt", * "deferRender": true * } ); * } ); */ "bDeferRender": false, /** * Replace a DataTable which matches the given selector and replace it with * one which has the properties of the new initialisation object passed. If no * table matches the selector, then the new DataTable will be constructed as * per normal. * @type boolean * @default false * * @dtopt Options * @name DataTable.defaults.destroy * * @example * $(document).ready( function() { * $('#example').dataTable( { * "srollY": "200px", * "paginate": false * } ); * * // Some time later.... * $('#example').dataTable( { * "filter": false, * "destroy": true * } ); * } ); */ "bDestroy": false, /** * Enable or disable filtering of data. Filtering in DataTables is "smart" in * that it allows the end user to input multiple words (space separated) and * will match a row containing those words, even if not in the order that was * specified (this allow matching across multiple columns). Note that if you * wish to use filtering in DataTables this must remain 'true' - to remove the * default filtering input box and retain filtering abilities, please use * {@link DataTable.defaults.dom}. * @type boolean * @default true * * @dtopt Features * @name DataTable.defaults.searching * * @example * $(document).ready( function () { * $('#example').dataTable( { * "searching": false * } ); * } ); */ "bFilter": true, /** * Enable or disable the table information display. This shows information * about the data that is currently visible on the page, including information * about filtered data if that action is being performed. * @type boolean * @default true * * @dtopt Features * @name DataTable.defaults.info * * @example * $(document).ready( function () { * $('#example').dataTable( { * "info": false * } ); * } ); */ "bInfo": true, /** * Allows the end user to select the size of a formatted page from a select * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`). * @type boolean * @default true * * @dtopt Features * @name DataTable.defaults.lengthChange * * @example * $(document).ready( function () { * $('#example').dataTable( { * "lengthChange": false * } ); * } ); */ "bLengthChange": true, /** * Enable or disable pagination. * @type boolean * @default true * * @dtopt Features * @name DataTable.defaults.paging * * @example * $(document).ready( function () { * $('#example').dataTable( { * "paging": false * } ); * } ); */ "bPaginate": true, /** * Enable or disable the display of a 'processing' indicator when the table is * being processed (e.g. a sort). This is particularly useful for tables with * large amounts of data where it can take a noticeable amount of time to sort * the entries. * @type boolean * @default false * * @dtopt Features * @name DataTable.defaults.processing * * @example * $(document).ready( function () { * $('#example').dataTable( { * "processing": true * } ); * } ); */ "bProcessing": false, /** * Retrieve the DataTables object for the given selector. Note that if the * table has already been initialised, this parameter will cause DataTables * to simply return the object that has already been set up - it will not take * account of any changes you might have made to the initialisation object * passed to DataTables (setting this parameter to true is an acknowledgement * that you understand this). `destroy` can be used to reinitialise a table if * you need. * @type boolean * @default false * * @dtopt Options * @name DataTable.defaults.retrieve * * @example * $(document).ready( function() { * initTable(); * tableActions(); * } ); * * function initTable () * { * return $('#example').dataTable( { * "scrollY": "200px", * "paginate": false, * "retrieve": true * } ); * } * * function tableActions () * { * var table = initTable(); * // perform API operations with oTable * } */ "bRetrieve": false, /** * When vertical (y) scrolling is enabled, DataTables will force the height of * the table's viewport to the given height at all times (useful for layout). * However, this can look odd when filtering data down to a small data set, * and the footer is left "floating" further down. This parameter (when * enabled) will cause DataTables to collapse the table's viewport down when * the result set will fit within the given Y height. * @type boolean * @default false * * @dtopt Options * @name DataTable.defaults.scrollCollapse * * @example * $(document).ready( function() { * $('#example').dataTable( { * "scrollY": "200", * "scrollCollapse": true * } ); * } ); */ "bScrollCollapse": false, /** * Configure DataTables to use server-side processing. Note that the * `ajax` parameter must also be given in order to give DataTables a * source to obtain the required data for each draw. * @type boolean * @default false * * @dtopt Features * @dtopt Server-side * @name DataTable.defaults.serverSide * * @example * $(document).ready( function () { * $('#example').dataTable( { * "serverSide": true, * "ajax": "xhr.php" * } ); * } ); */ "bServerSide": false, /** * Enable or disable sorting of columns. Sorting of individual columns can be * disabled by the `sortable` option for each column. * @type boolean * @default true * * @dtopt Features * @name DataTable.defaults.ordering * * @example * $(document).ready( function () { * $('#example').dataTable( { * "ordering": false * } ); * } ); */ "bSort": true, /** * Enable or display DataTables' ability to sort multiple columns at the * same time (activated by shift-click by the user). * @type boolean * @default true * * @dtopt Options * @name DataTable.defaults.orderMulti * * @example * // Disable multiple column sorting ability * $(document).ready( function () { * $('#example').dataTable( { * "orderMulti": false * } ); * } ); */ "bSortMulti": true, /** * Allows control over whether DataTables should use the top (true) unique * cell that is found for a single column, or the bottom (false - default). * This is useful when using complex headers. * @type boolean * @default false * * @dtopt Options * @name DataTable.defaults.orderCellsTop * * @example * $(document).ready( function() { * $('#example').dataTable( { * "orderCellsTop": true * } ); * } ); */ "bSortCellsTop": false, /** * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and * `sorting\_3` to the columns which are currently being sorted on. This is * presented as a feature switch as it can increase processing time (while * classes are removed and added) so for large data sets you might want to * turn this off. * @type boolean * @default true * * @dtopt Features * @name DataTable.defaults.orderClasses * * @example * $(document).ready( function () { * $('#example').dataTable( { * "orderClasses": false * } ); * } ); */ "bSortClasses": true, /** * Enable or disable state saving. When enabled HTML5 `localStorage` will be * used to save table display information such as pagination information, * display length, filtering and sorting. As such when the end user reloads * the page the display display will match what thy had previously set up. * * Due to the use of `localStorage` the default state saving is not supported * in IE6 or 7. If state saving is required in those browsers, use * `stateSaveCallback` to provide a storage solution such as cookies. * @type boolean * @default false * * @dtopt Features * @name DataTable.defaults.stateSave * * @example * $(document).ready( function () { * $('#example').dataTable( { * "stateSave": true * } ); * } ); */ "bStateSave": false, /** * This function is called when a TR element is created (and all TD child * elements have been inserted), or registered if using a DOM source, allowing * manipulation of the TR element (adding classes etc). * @type function * @param {node} row "TR" element for the current row * @param {array} data Raw data array for this row * @param {int} dataIndex The index of this row in the internal aoData array * * @dtopt Callbacks * @name DataTable.defaults.createdRow * * @example * $(document).ready( function() { * $('#example').dataTable( { * "createdRow": function( row, data, dataIndex ) { * // Bold the grade for all 'A' grade browsers * if ( data[4] == "A" ) * { * $('td:eq(4)', row).html( '<b>A</b>' ); * } * } * } ); * } ); */ "fnCreatedRow": null, /** * This function is called on every 'draw' event, and allows you to * dynamically modify any aspect you want about the created DOM. * @type function * @param {object} settings DataTables settings object * * @dtopt Callbacks * @name DataTable.defaults.drawCallback * * @example * $(document).ready( function() { * $('#example').dataTable( { * "drawCallback": function( settings ) { * alert( 'DataTables has redrawn the table' ); * } * } ); * } ); */ "fnDrawCallback": null, /** * Identical to fnHeaderCallback() but for the table footer this function * allows you to modify the table footer on every 'draw' event. * @type function * @param {node} foot "TR" element for the footer * @param {array} data Full table data (as derived from the original HTML) * @param {int} start Index for the current display starting point in the * display array * @param {int} end Index for the current display ending point in the * display array * @param {array int} display Index array to translate the visual position * to the full data array * * @dtopt Callbacks * @name DataTable.defaults.footerCallback * * @example * $(document).ready( function() { * $('#example').dataTable( { * "footerCallback": function( tfoot, data, start, end, display ) { * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start; * } * } ); * } ) */ "fnFooterCallback": null, /** * When rendering large numbers in the information element for the table * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers * to have a comma separator for the 'thousands' units (e.g. 1 million is * rendered as "1,000,000") to help readability for the end user. This * function will override the default method DataTables uses. * @type function * @member * @param {int} toFormat number to be formatted * @returns {string} formatted string for DataTables to show the number * * @dtopt Callbacks * @name DataTable.defaults.formatNumber * * @example * // Format a number using a single quote for the separator (note that * // this can also be done with the language.thousands option) * $(document).ready( function() { * $('#example').dataTable( { * "formatNumber": function ( toFormat ) { * return toFormat.toString().replace( * /\B(?=(\d{3})+(?!\d))/g, "'" * ); * }; * } ); * } ); */ "fnFormatNumber": function ( toFormat ) { return toFormat.toString().replace( /\B(?=(\d{3})+(?!\d))/g, this.oLanguage.sThousands ); }, /** * This function is called on every 'draw' event, and allows you to * dynamically modify the header row. This can be used to calculate and * display useful information about the table. * @type function * @param {node} head "TR" element for the header * @param {array} data Full table data (as derived from the original HTML) * @param {int} start Index for the current display starting point in the * display array * @param {int} end Index for the current display ending point in the * display array * @param {array int} display Index array to translate the visual position * to the full data array * * @dtopt Callbacks * @name DataTable.defaults.headerCallback * * @example * $(document).ready( function() { * $('#example').dataTable( { * "fheaderCallback": function( head, data, start, end, display ) { * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records"; * } * } ); * } ) */ "fnHeaderCallback": null, /** * The information element can be used to convey information about the current * state of the table. Although the internationalisation options presented by * DataTables are quite capable of dealing with most customisations, there may * be times where you wish to customise the string further. This callback * allows you to do exactly that. * @type function * @param {object} oSettings DataTables settings object * @param {int} start Starting position in data for the draw * @param {int} end End position in data for the draw * @param {int} max Total number of rows in the table (regardless of * filtering) * @param {int} total Total number of rows in the data set, after filtering * @param {string} pre The string that DataTables has formatted using it's * own rules * @returns {string} The string to be displayed in the information element. * * @dtopt Callbacks * @name DataTable.defaults.infoCallback * * @example * $('#example').dataTable( { * "infoCallback": function( settings, start, end, max, total, pre ) { * return start +" to "+ end; * } * } ); */ "fnInfoCallback": null, /** * Called when the table has been initialised. Normally DataTables will * initialise sequentially and there will be no need for this function, * however, this does not hold true when using external language information * since that is obtained using an async XHR call. * @type function * @param {object} settings DataTables settings object * @param {object} json The JSON object request from the server - only * present if client-side Ajax sourced data is used * * @dtopt Callbacks * @name DataTable.defaults.initComplete * * @example * $(document).ready( function() { * $('#example').dataTable( { * "initComplete": function(settings, json) { * alert( 'DataTables has finished its initialisation.' ); * } * } ); * } ) */ "fnInitComplete": null, /** * Called at the very start of each table draw and can be used to cancel the * draw by returning false, any other return (including undefined) results in * the full draw occurring). * @type function * @param {object} settings DataTables settings object * @returns {boolean} False will cancel the draw, anything else (including no * return) will allow it to complete. * * @dtopt Callbacks * @name DataTable.defaults.preDrawCallback * * @example * $(document).ready( function() { * $('#example').dataTable( { * "preDrawCallback": function( settings ) { * if ( $('#test').val() == 1 ) { * return false; * } * } * } ); * } ); */ "fnPreDrawCallback": null, /** * This function allows you to 'post process' each row after it have been * generated for each table draw, but before it is rendered on screen. This * function might be used for setting the row class name etc. * @type function * @param {node} row "TR" element for the current row * @param {array} data Raw data array for this row * @param {int} displayIndex The display index for the current table draw * @param {int} displayIndexFull The index of the data in the full list of * rows (after filtering) * * @dtopt Callbacks * @name DataTable.defaults.rowCallback * * @example * $(document).ready( function() { * $('#example').dataTable( { * "rowCallback": function( row, data, displayIndex, displayIndexFull ) { * // Bold the grade for all 'A' grade browsers * if ( data[4] == "A" ) { * $('td:eq(4)', row).html( '<b>A</b>' ); * } * } * } ); * } ); */ "fnRowCallback": null, /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. * * This parameter allows you to override the default function which obtains * the data from the server so something more suitable for your application. * For example you could use POST data, or pull information from a Gears or * AIR database. * @type function * @member * @param {string} source HTTP source to obtain the data from (`ajax`) * @param {array} data A key/value pair object containing the data to send * to the server * @param {function} callback to be called on completion of the data get * process that will draw the data on the page. * @param {object} settings DataTables settings object * * @dtopt Callbacks * @dtopt Server-side * @name DataTable.defaults.serverData * * @deprecated 1.10. Please use `ajax` for this functionality now. */ "fnServerData": null, /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. * * It is often useful to send extra data to the server when making an Ajax * request - for example custom filtering information, and this callback * function makes it trivial to send extra information to the server. The * passed in parameter is the data set that has been constructed by * DataTables, and you can add to this or modify it as you require. * @type function * @param {array} data Data array (array of objects which are name/value * pairs) that has been constructed by DataTables and will be sent to the * server. In the case of Ajax sourced data with server-side processing * this will be an empty array, for server-side processing there will be a * significant number of parameters! * @returns {undefined} Ensure that you modify the data array passed in, * as this is passed by reference. * * @dtopt Callbacks * @dtopt Server-side * @name DataTable.defaults.serverParams * * @deprecated 1.10. Please use `ajax` for this functionality now. */ "fnServerParams": null, /** * Load the table state. With this function you can define from where, and how, the * state of a table is loaded. By default DataTables will load from `localStorage` * but you might wish to use a server-side database or cookies. * @type function * @member * @param {object} settings DataTables settings object * @param {object} callback Callback that can be executed when done. It * should be passed the loaded state object. * @return {object} The DataTables state object to be loaded * * @dtopt Callbacks * @name DataTable.defaults.stateLoadCallback * * @example * $(document).ready( function() { * $('#example').dataTable( { * "stateSave": true, * "stateLoadCallback": function (settings, callback) { * $.ajax( { * "url": "/state_load", * "dataType": "json", * "success": function (json) { * callback( json ); * } * } ); * } * } ); * } ); */ "fnStateLoadCallback": function ( settings ) { try { return JSON.parse( (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem( 'DataTables_'+settings.sInstance+'_'+location.pathname ) ); } catch (e) {} }, /** * Callback which allows modification of the saved state prior to loading that state. * This callback is called when the table is loading state from the stored data, but * prior to the settings object being modified by the saved state. Note that for * plug-in authors, you should use the `stateLoadParams` event to load parameters for * a plug-in. * @type function * @param {object} settings DataTables settings object * @param {object} data The state object that is to be loaded * * @dtopt Callbacks * @name DataTable.defaults.stateLoadParams * * @example * // Remove a saved filter, so filtering is never loaded * $(document).ready( function() { * $('#example').dataTable( { * "stateSave": true, * "stateLoadParams": function (settings, data) { * data.oSearch.sSearch = ""; * } * } ); * } ); * * @example * // Disallow state loading by returning false * $(document).ready( function() { * $('#example').dataTable( { * "stateSave": true, * "stateLoadParams": function (settings, data) { * return false; * } * } ); * } ); */ "fnStateLoadParams": null, /** * Callback that is called when the state has been loaded from the state saving method * and the DataTables settings object has been modified as a result of the loaded state. * @type function * @param {object} settings DataTables settings object * @param {object} data The state object that was loaded * * @dtopt Callbacks * @name DataTable.defaults.stateLoaded * * @example * // Show an alert with the filtering value that was saved * $(document).ready( function() { * $('#example').dataTable( { * "stateSave": true, * "stateLoaded": function (settings, data) { * alert( 'Saved filter was: '+data.oSearch.sSearch ); * } * } ); * } ); */ "fnStateLoaded": null, /** * Save the table state. This function allows you to define where and how the state * information for the table is stored By default DataTables will use `localStorage` * but you might wish to use a server-side database or cookies. * @type function * @member * @param {object} settings DataTables settings object * @param {object} data The state object to be saved * * @dtopt Callbacks * @name DataTable.defaults.stateSaveCallback * * @example * $(document).ready( function() { * $('#example').dataTable( { * "stateSave": true, * "stateSaveCallback": function (settings, data) { * // Send an Ajax request to the server with the state object * $.ajax( { * "url": "/state_save", * "data": data, * "dataType": "json", * "method": "POST" * "success": function () {} * } ); * } * } ); * } ); */ "fnStateSaveCallback": function ( settings, data ) { try { (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem( 'DataTables_'+settings.sInstance+'_'+location.pathname, JSON.stringify( data ) ); } catch (e) {} }, /** * Callback which allows modification of the state to be saved. Called when the table * has changed state a new state save is required. This method allows modification of * the state saving object prior to actually doing the save, including addition or * other state properties or modification. Note that for plug-in authors, you should * use the `stateSaveParams` event to save parameters for a plug-in. * @type function * @param {object} settings DataTables settings object * @param {object} data The state object to be saved * * @dtopt Callbacks * @name DataTable.defaults.stateSaveParams * * @example * // Remove a saved filter, so filtering is never saved * $(document).ready( function() { * $('#example').dataTable( { * "stateSave": true, * "stateSaveParams": function (settings, data) { * data.oSearch.sSearch = ""; * } * } ); * } ); */ "fnStateSaveParams": null, /** * Duration for which the saved state information is considered valid. After this period * has elapsed the state will be returned to the default. * Value is given in seconds. * @type int * @default 7200 <i>(2 hours)</i> * * @dtopt Options * @name DataTable.defaults.stateDuration * * @example * $(document).ready( function() { * $('#example').dataTable( { * "stateDuration": 60*60*24; // 1 day * } ); * } ) */ "iStateDuration": 7200, /** * When enabled DataTables will not make a request to the server for the first * page draw - rather it will use the data already on the page (no sorting etc * will be applied to it), thus saving on an XHR at load time. `deferLoading` * is used to indicate that deferred loading is required, but it is also used * to tell DataTables how many records there are in the full table (allowing * the information element and pagination to be displayed correctly). In the case * where a filtering is applied to the table on initial load, this can be * indicated by giving the parameter as an array, where the first element is * the number of records available after filtering and the second element is the * number of records without filtering (allowing the table information element * to be shown correctly). * @type int | array * @default null * * @dtopt Options * @name DataTable.defaults.deferLoading * * @example * // 57 records available in the table, no filtering applied * $(document).ready( function() { * $('#example').dataTable( { * "serverSide": true, * "ajax": "scripts/server_processing.php", * "deferLoading": 57 * } ); * } ); * * @example * // 57 records after filtering, 100 without filtering (an initial filter applied) * $(document).ready( function() { * $('#example').dataTable( { * "serverSide": true, * "ajax": "scripts/server_processing.php", * "deferLoading": [ 57, 100 ], * "search": { * "search": "my_filter" * } * } ); * } ); */ "iDeferLoading": null, /** * Number of rows to display on a single page when using pagination. If * feature enabled (`lengthChange`) then the end user will be able to override * this to a custom setting using a pop-up menu. * @type int * @default 10 * * @dtopt Options * @name DataTable.defaults.pageLength * * @example * $(document).ready( function() { * $('#example').dataTable( { * "pageLength": 50 * } ); * } ) */ "iDisplayLength": 10, /** * Define the starting point for data display when using DataTables with * pagination. Note that this parameter is the number of records, rather than * the page number, so if you have 10 records per page and want to start on * the third page, it should be "20". * @type int * @default 0 * * @dtopt Options * @name DataTable.defaults.displayStart * * @example * $(document).ready( function() { * $('#example').dataTable( { * "displayStart": 20 * } ); * } ) */ "iDisplayStart": 0, /** * By default DataTables allows keyboard navigation of the table (sorting, paging, * and filtering) by adding a `tabindex` attribute to the required elements. This * allows you to tab through the controls and press the enter key to activate them. * The tabindex is default 0, meaning that the tab follows the flow of the document. * You can overrule this using this parameter if you wish. Use a value of -1 to * disable built-in keyboard navigation. * @type int * @default 0 * * @dtopt Options * @name DataTable.defaults.tabIndex * * @example * $(document).ready( function() { * $('#example').dataTable( { * "tabIndex": 1 * } ); * } ); */ "iTabIndex": 0, /** * Classes that DataTables assigns to the various components and features * that it adds to the HTML table. This allows classes to be configured * during initialisation in addition to through the static * {@link DataTable.ext.oStdClasses} object). * @namespace * @name DataTable.defaults.classes */ "oClasses": {}, /** * All strings that DataTables uses in the user interface that it creates * are defined in this object, allowing you to modified them individually or * completely replace them all as required. * @namespace * @name DataTable.defaults.language */ "oLanguage": { /** * Strings that are used for WAI-ARIA labels and controls only (these are not * actually visible on the page, but will be read by screenreaders, and thus * must be internationalised as well). * @namespace * @name DataTable.defaults.language.aria */ "oAria": { /** * ARIA label that is added to the table headers when the column may be * sorted ascending by activing the column (click or return when focused). * Note that the column header is prefixed to this string. * @type string * @default : activate to sort column ascending * * @dtopt Language * @name DataTable.defaults.language.aria.sortAscending * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "aria": { * "sortAscending": " - click/return to sort ascending" * } * } * } ); * } ); */ "sSortAscending": ": activate to sort column ascending", /** * ARIA label that is added to the table headers when the column may be * sorted descending by activing the column (click or return when focused). * Note that the column header is prefixed to this string. * @type string * @default : activate to sort column ascending * * @dtopt Language * @name DataTable.defaults.language.aria.sortDescending * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "aria": { * "sortDescending": " - click/return to sort descending" * } * } * } ); * } ); */ "sSortDescending": ": activate to sort column descending" }, /** * Pagination string used by DataTables for the built-in pagination * control types. * @namespace * @name DataTable.defaults.language.paginate */ "oPaginate": { /** * Text to use when using the 'full_numbers' type of pagination for the * button to take the user to the first page. * @type string * @default First * * @dtopt Language * @name DataTable.defaults.language.paginate.first * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "paginate": { * "first": "First page" * } * } * } ); * } ); */ "sFirst": "First", /** * Text to use when using the 'full_numbers' type of pagination for the * button to take the user to the last page. * @type string * @default Last * * @dtopt Language * @name DataTable.defaults.language.paginate.last * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "paginate": { * "last": "Last page" * } * } * } ); * } ); */ "sLast": "Last", /** * Text to use for the 'next' pagination button (to take the user to the * next page). * @type string * @default Next * * @dtopt Language * @name DataTable.defaults.language.paginate.next * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "paginate": { * "next": "Next page" * } * } * } ); * } ); */ "sNext": "Next", /** * Text to use for the 'previous' pagination button (to take the user to * the previous page). * @type string * @default Previous * * @dtopt Language * @name DataTable.defaults.language.paginate.previous * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "paginate": { * "previous": "Previous page" * } * } * } ); * } ); */ "sPrevious": "Previous" }, /** * This string is shown in preference to `zeroRecords` when the table is * empty of data (regardless of filtering). Note that this is an optional * parameter - if it is not given, the value of `zeroRecords` will be used * instead (either the default or given value). * @type string * @default No data available in table * * @dtopt Language * @name DataTable.defaults.language.emptyTable * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "emptyTable": "No data available in table" * } * } ); * } ); */ "sEmptyTable": "No data available in table", /** * This string gives information to the end user about the information * that is current on display on the page. The following tokens can be * used in the string and will be dynamically replaced as the table * display updates. This tokens can be placed anywhere in the string, or * removed as needed by the language requires: * * * `\_START\_` - Display index of the first record on the current page * * `\_END\_` - Display index of the last record on the current page * * `\_TOTAL\_` - Number of records in the table after filtering * * `\_MAX\_` - Number of records in the table without filtering * * `\_PAGE\_` - Current page number * * `\_PAGES\_` - Total number of pages of data in the table * * @type string * @default Showing _START_ to _END_ of _TOTAL_ entries * * @dtopt Language * @name DataTable.defaults.language.info * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "info": "Showing page _PAGE_ of _PAGES_" * } * } ); * } ); */ "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", /** * Display information string for when the table is empty. Typically the * format of this string should match `info`. * @type string * @default Showing 0 to 0 of 0 entries * * @dtopt Language * @name DataTable.defaults.language.infoEmpty * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "infoEmpty": "No entries to show" * } * } ); * } ); */ "sInfoEmpty": "Showing 0 to 0 of 0 entries", /** * When a user filters the information in a table, this string is appended * to the information (`info`) to give an idea of how strong the filtering * is. The variable _MAX_ is dynamically updated. * @type string * @default (filtered from _MAX_ total entries) * * @dtopt Language * @name DataTable.defaults.language.infoFiltered * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "infoFiltered": " - filtering from _MAX_ records" * } * } ); * } ); */ "sInfoFiltered": "(filtered from _MAX_ total entries)", /** * If can be useful to append extra information to the info string at times, * and this variable does exactly that. This information will be appended to * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are * being used) at all times. * @type string * @default <i>Empty string</i> * * @dtopt Language * @name DataTable.defaults.language.infoPostFix * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "infoPostFix": "All records shown are derived from real information." * } * } ); * } ); */ "sInfoPostFix": "", /** * This decimal place operator is a little different from the other * language options since DataTables doesn't output floating point * numbers, so it won't ever use this for display of a number. Rather, * what this parameter does is modify the sort methods of the table so * that numbers which are in a format which has a character other than * a period (`.`) as a decimal place will be sorted numerically. * * Note that numbers with different decimal places cannot be shown in * the same table and still be sortable, the table must be consistent. * However, multiple different tables on the page can use different * decimal place characters. * @type string * @default * * @dtopt Language * @name DataTable.defaults.language.decimal * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "decimal": "," * "thousands": "." * } * } ); * } ); */ "sDecimal": "", /** * DataTables has a build in number formatter (`formatNumber`) which is * used to format large numbers that are used in the table information. * By default a comma is used, but this can be trivially changed to any * character you wish with this parameter. * @type string * @default , * * @dtopt Language * @name DataTable.defaults.language.thousands * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "thousands": "'" * } * } ); * } ); */ "sThousands": ",", /** * Detail the action that will be taken when the drop down menu for the * pagination length option is changed. The '_MENU_' variable is replaced * with a default select list of 10, 25, 50 and 100, and can be replaced * with a custom select box if required. * @type string * @default Show _MENU_ entries * * @dtopt Language * @name DataTable.defaults.language.lengthMenu * * @example * // Language change only * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "lengthMenu": "Display _MENU_ records" * } * } ); * } ); * * @example * // Language and options change * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "lengthMenu": 'Display <select>'+ * '<option value="10">10</option>'+ * '<option value="20">20</option>'+ * '<option value="30">30</option>'+ * '<option value="40">40</option>'+ * '<option value="50">50</option>'+ * '<option value="-1">All</option>'+ * '</select> records' * } * } ); * } ); */ "sLengthMenu": "Show _MENU_ entries", /** * When using Ajax sourced data and during the first draw when DataTables is * gathering the data, this message is shown in an empty row in the table to * indicate to the end user the the data is being loaded. Note that this * parameter is not used when loading data by server-side processing, just * Ajax sourced data with client-side processing. * @type string * @default Loading... * * @dtopt Language * @name DataTable.defaults.language.loadingRecords * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "loadingRecords": "Please wait - loading..." * } * } ); * } ); */ "sLoadingRecords": "Loading...", /** * Text which is displayed when the table is processing a user action * (usually a sort command or similar). * @type string * @default Processing... * * @dtopt Language * @name DataTable.defaults.language.processing * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "processing": "DataTables is currently busy" * } * } ); * } ); */ "sProcessing": "Processing...", /** * Details the actions that will be taken when the user types into the * filtering input text box. The variable "_INPUT_", if used in the string, * is replaced with the HTML text box for the filtering input allowing * control over where it appears in the string. If "_INPUT_" is not given * then the input box is appended to the string automatically. * @type string * @default Search: * * @dtopt Language * @name DataTable.defaults.language.search * * @example * // Input text box will be appended at the end automatically * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "search": "Filter records:" * } * } ); * } ); * * @example * // Specify where the filter should appear * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "search": "Apply filter _INPUT_ to table" * } * } ); * } ); */ "sSearch": "Search:", /** * Assign a `placeholder` attribute to the search `input` element * @type string * @default * * @dtopt Language * @name DataTable.defaults.language.searchPlaceholder */ "sSearchPlaceholder": "", /** * All of the language information can be stored in a file on the * server-side, which DataTables will look up if this parameter is passed. * It must store the URL of the language file, which is in a JSON format, * and the object has the same properties as the oLanguage object in the * initialiser object (i.e. the above parameters). Please refer to one of * the example language files to see how this works in action. * @type string * @default <i>Empty string - i.e. disabled</i> * * @dtopt Language * @name DataTable.defaults.language.url * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "url": "http://www.sprymedia.co.uk/dataTables/lang.txt" * } * } ); * } ); */ "sUrl": "", /** * Text shown inside the table records when the is no information to be * displayed after filtering. `emptyTable` is shown when there is simply no * information in the table at all (regardless of filtering). * @type string * @default No matching records found * * @dtopt Language * @name DataTable.defaults.language.zeroRecords * * @example * $(document).ready( function() { * $('#example').dataTable( { * "language": { * "zeroRecords": "No records to display" * } * } ); * } ); */ "sZeroRecords": "No matching records found" }, /** * This parameter allows you to have define the global filtering state at * initialisation time. As an object the `search` parameter must be * defined, but all other parameters are optional. When `regex` is true, * the search string will be treated as a regular expression, when false * (default) it will be treated as a straight string. When `smart` * DataTables will use it's smart filtering methods (to word match at * any point in the data), when false this will not be done. * @namespace * @extends DataTable.models.oSearch * * @dtopt Options * @name DataTable.defaults.search * * @example * $(document).ready( function() { * $('#example').dataTable( { * "search": {"search": "Initial search"} * } ); * } ) */ "oSearch": $.extend( {}, DataTable.models.oSearch ), /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. * * By default DataTables will look for the property `data` (or `aaData` for * compatibility with DataTables 1.9-) when obtaining data from an Ajax * source or for server-side processing - this parameter allows that * property to be changed. You can use Javascript dotted object notation to * get a data source for multiple levels of nesting. * @type string * @default data * * @dtopt Options * @dtopt Server-side * @name DataTable.defaults.ajaxDataProp * * @deprecated 1.10. Please use `ajax` for this functionality now. */ "sAjaxDataProp": "data", /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. * * You can instruct DataTables to load data from an external * source using this parameter (use aData if you want to pass data in you * already have). Simply provide a url a JSON object can be obtained from. * @type string * @default null * * @dtopt Options * @dtopt Server-side * @name DataTable.defaults.ajaxSource * * @deprecated 1.10. Please use `ajax` for this functionality now. */ "sAjaxSource": null, /** * This initialisation variable allows you to specify exactly where in the * DOM you want DataTables to inject the various controls it adds to the page * (for example you might want the pagination controls at the top of the * table). DIV elements (with or without a custom class) can also be added to * aid styling. The follow syntax is used: * <ul> * <li>The following options are allowed: * <ul> * <li>'l' - Length changing</li> * <li>'f' - Filtering input</li> * <li>'t' - The table!</li> * <li>'i' - Information</li> * <li>'p' - Pagination</li> * <li>'r' - pRocessing</li> * </ul> * </li> * <li>The following constants are allowed: * <ul> * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li> * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li> * </ul> * </li> * <li>The following syntax is expected: * <ul> * <li>'<' and '>' - div elements</li> * <li>'<"class" and '>' - div with a class</li> * <li>'<"#id" and '>' - div with an ID</li> * </ul> * </li> * <li>Examples: * <ul> * <li>'<"wrapper"flipt>'</li> * <li>'<lf<t>ip>'</li> * </ul> * </li> * </ul> * @type string * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b> * <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i> * * @dtopt Options * @name DataTable.defaults.dom * * @example * $(document).ready( function() { * $('#example').dataTable( { * "dom": '<"top"i>rt<"bottom"flp><"clear">' * } ); * } ); */ "sDom": "lfrtip", /** * Search delay option. This will throttle full table searches that use the * DataTables provided search input element (it does not effect calls to * `dt-api search()`, providing a delay before the search is made. * @type integer * @default 0 * * @dtopt Options * @name DataTable.defaults.searchDelay * * @example * $(document).ready( function() { * $('#example').dataTable( { * "searchDelay": 200 * } ); * } ) */ "searchDelay": null, /** * DataTables features six different built-in options for the buttons to * display for pagination control: * * * `numbers` - Page number buttons only * * `simple` - 'Previous' and 'Next' buttons only * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers * * Further methods can be added using {@link DataTable.ext.oPagination}. * @type string * @default simple_numbers * * @dtopt Options * @name DataTable.defaults.pagingType * * @example * $(document).ready( function() { * $('#example').dataTable( { * "pagingType": "full_numbers" * } ); * } ) */ "sPaginationType": "simple_numbers", /** * Enable horizontal scrolling. When a table is too wide to fit into a * certain layout, or you have a large number of columns in the table, you * can enable x-scrolling to show the table in a viewport, which can be * scrolled. This property can be `true` which will allow the table to * scroll horizontally when needed, or any CSS unit, or a number (in which * case it will be treated as a pixel measurement). Setting as simply `true` * is recommended. * @type boolean|string * @default <i>blank string - i.e. disabled</i> * * @dtopt Features * @name DataTable.defaults.scrollX * * @example * $(document).ready( function() { * $('#example').dataTable( { * "scrollX": true, * "scrollCollapse": true * } ); * } ); */ "sScrollX": "", /** * This property can be used to force a DataTable to use more width than it * might otherwise do when x-scrolling is enabled. For example if you have a * table which requires to be well spaced, this parameter is useful for * "over-sizing" the table, and thus forcing scrolling. This property can by * any CSS unit, or a number (in which case it will be treated as a pixel * measurement). * @type string * @default <i>blank string - i.e. disabled</i> * * @dtopt Options * @name DataTable.defaults.scrollXInner * * @example * $(document).ready( function() { * $('#example').dataTable( { * "scrollX": "100%", * "scrollXInner": "110%" * } ); * } ); */ "sScrollXInner": "", /** * Enable vertical scrolling. Vertical scrolling will constrain the DataTable * to the given height, and enable scrolling for any data which overflows the * current viewport. This can be used as an alternative to paging to display * a lot of data in a small area (although paging and scrolling can both be * enabled at the same time). This property can be any CSS unit, or a number * (in which case it will be treated as a pixel measurement). * @type string * @default <i>blank string - i.e. disabled</i> * * @dtopt Features * @name DataTable.defaults.scrollY * * @example * $(document).ready( function() { * $('#example').dataTable( { * "scrollY": "200px", * "paginate": false * } ); * } ); */ "sScrollY": "", /** * __Deprecated__ The functionality provided by this parameter has now been * superseded by that provided through `ajax`, which should be used instead. * * Set the HTTP method that is used to make the Ajax call for server-side * processing or Ajax sourced data. * @type string * @default GET * * @dtopt Options * @dtopt Server-side * @name DataTable.defaults.serverMethod * * @deprecated 1.10. Please use `ajax` for this functionality now. */ "sServerMethod": "GET", /** * DataTables makes use of renderers when displaying HTML elements for * a table. These renderers can be added or modified by plug-ins to * generate suitable mark-up for a site. For example the Bootstrap * integration plug-in for DataTables uses a paging button renderer to * display pagination buttons in the mark-up required by Bootstrap. * * For further information about the renderers available see * DataTable.ext.renderer * @type string|object * @default null * * @name DataTable.defaults.renderer * */ "renderer": null, /** * Set the data property name that DataTables should use to get a row's id * to set as the `id` property in the node. * @type string * @default DT_RowId * * @name DataTable.defaults.rowId */ "rowId": "DT_RowId" }; _fnHungarianMap( DataTable.defaults ); /* * Developer note - See note in model.defaults.js about the use of Hungarian * notation and camel case. */ /** * Column options that can be given to DataTables at initialisation time. * @namespace */ DataTable.defaults.column = { /** * Define which column(s) an order will occur on for this column. This * allows a column's ordering to take multiple columns into account when * doing a sort or use the data from a different column. For example first * name / last name columns make sense to do a multi-column sort over the * two columns. * @type array|int * @default null <i>Takes the value of the column index automatically</i> * * @name DataTable.defaults.column.orderData * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "orderData": [ 0, 1 ], "targets": [ 0 ] }, * { "orderData": [ 1, 0 ], "targets": [ 1 ] }, * { "orderData": 2, "targets": [ 2 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "orderData": [ 0, 1 ] }, * { "orderData": [ 1, 0 ] }, * { "orderData": 2 }, * null, * null * ] * } ); * } ); */ "aDataSort": null, "iDataSort": -1, /** * You can control the default ordering direction, and even alter the * behaviour of the sort handler (i.e. only allow ascending ordering etc) * using this parameter. * @type array * @default [ 'asc', 'desc' ] * * @name DataTable.defaults.column.orderSequence * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "orderSequence": [ "asc" ], "targets": [ 1 ] }, * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] }, * { "orderSequence": [ "desc" ], "targets": [ 3 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * null, * { "orderSequence": [ "asc" ] }, * { "orderSequence": [ "desc", "asc", "asc" ] }, * { "orderSequence": [ "desc" ] }, * null * ] * } ); * } ); */ "asSorting": [ 'asc', 'desc' ], /** * Enable or disable filtering on the data in this column. * @type boolean * @default true * * @name DataTable.defaults.column.searchable * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "searchable": false, "targets": [ 0 ] } * ] } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "searchable": false }, * null, * null, * null, * null * ] } ); * } ); */ "bSearchable": true, /** * Enable or disable ordering on this column. * @type boolean * @default true * * @name DataTable.defaults.column.orderable * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "orderable": false, "targets": [ 0 ] } * ] } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "orderable": false }, * null, * null, * null, * null * ] } ); * } ); */ "bSortable": true, /** * Enable or disable the display of this column. * @type boolean * @default true * * @name DataTable.defaults.column.visible * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "visible": false, "targets": [ 0 ] } * ] } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "visible": false }, * null, * null, * null, * null * ] } ); * } ); */ "bVisible": true, /** * Developer definable function that is called whenever a cell is created (Ajax source, * etc) or processed for input (DOM source). This can be used as a compliment to mRender * allowing you to modify the DOM element (add background colour for example) when the * element is available. * @type function * @param {element} td The TD node that has been created * @param {*} cellData The Data for the cell * @param {array|object} rowData The data for the whole row * @param {int} row The row index for the aoData data store * @param {int} col The column index for aoColumns * * @name DataTable.defaults.column.createdCell * @dtopt Columns * * @example * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [3], * "createdCell": function (td, cellData, rowData, row, col) { * if ( cellData == "1.7" ) { * $(td).css('color', 'blue') * } * } * } ] * }); * } ); */ "fnCreatedCell": null, /** * This parameter has been replaced by `data` in DataTables to ensure naming * consistency. `dataProp` can still be used, as there is backwards * compatibility in DataTables for this option, but it is strongly * recommended that you use `data` in preference to `dataProp`. * @name DataTable.defaults.column.dataProp */ /** * This property can be used to read data from any data source property, * including deeply nested objects / properties. `data` can be given in a * number of different ways which effect its behaviour: * * * `integer` - treated as an array index for the data source. This is the * default that DataTables uses (incrementally increased for each column). * * `string` - read an object property from the data source. There are * three 'special' options that can be used in the string to alter how * DataTables reads the data from the source object: * * `.` - Dotted Javascript notation. Just as you use a `.` in * Javascript to read from nested objects, so to can the options * specified in `data`. For example: `browser.version` or * `browser.name`. If your object parameter name contains a period, use * `\\` to escape it - i.e. `first\\.name`. * * `[]` - Array notation. DataTables can automatically combine data * from and array source, joining the data with the characters provided * between the two brackets. For example: `name[, ]` would provide a * comma-space separated list from the source array. If no characters * are provided between the brackets, the original array source is * returned. * * `()` - Function notation. Adding `()` to the end of a parameter will * execute a function of the name given. For example: `browser()` for a * simple function on the data source, `browser.version()` for a * function in a nested property or even `browser().version` to get an * object property if the function called returns an object. Note that * function notation is recommended for use in `render` rather than * `data` as it is much simpler to use as a renderer. * * `null` - use the original data source for the row rather than plucking * data directly from it. This action has effects on two other * initialisation options: * * `defaultContent` - When null is given as the `data` option and * `defaultContent` is specified for the column, the value defined by * `defaultContent` will be used for the cell. * * `render` - When null is used for the `data` option and the `render` * option is specified for the column, the whole data source for the * row is used for the renderer. * * `function` - the function given will be executed whenever DataTables * needs to set or get the data for a cell in the column. The function * takes three parameters: * * Parameters: * * `{array|object}` The data source for the row * * `{string}` The type call data requested - this will be 'set' when * setting data or 'filter', 'display', 'type', 'sort' or undefined * when gathering data. Note that when `undefined` is given for the * type DataTables expects to get the raw data for the object back< * * `{*}` Data to set when the second parameter is 'set'. * * Return: * * The return value from the function is not required when 'set' is * the type of call, but otherwise the return is what will be used * for the data requested. * * Note that `data` is a getter and setter option. If you just require * formatting of data for output, you will likely want to use `render` which * is simply a getter and thus simpler to use. * * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The * name change reflects the flexibility of this property and is consistent * with the naming of mRender. If 'mDataProp' is given, then it will still * be used by DataTables, as it automatically maps the old name to the new * if required. * * @type string|int|function|null * @default null <i>Use automatically calculated column index</i> * * @name DataTable.defaults.column.data * @dtopt Columns * * @example * // Read table data from objects * // JSON structure for each row: * // { * // "engine": {value}, * // "browser": {value}, * // "platform": {value}, * // "version": {value}, * // "grade": {value} * // } * $(document).ready( function() { * $('#example').dataTable( { * "ajaxSource": "sources/objects.txt", * "columns": [ * { "data": "engine" }, * { "data": "browser" }, * { "data": "platform" }, * { "data": "version" }, * { "data": "grade" } * ] * } ); * } ); * * @example * // Read information from deeply nested objects * // JSON structure for each row: * // { * // "engine": {value}, * // "browser": {value}, * // "platform": { * // "inner": {value} * // }, * // "details": [ * // {value}, {value} * // ] * // } * $(document).ready( function() { * $('#example').dataTable( { * "ajaxSource": "sources/deep.txt", * "columns": [ * { "data": "engine" }, * { "data": "browser" }, * { "data": "platform.inner" }, * { "data": "platform.details.0" }, * { "data": "platform.details.1" } * ] * } ); * } ); * * @example * // Using `data` as a function to provide different information for * // sorting, filtering and display. In this case, currency (price) * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [ 0 ], * "data": function ( source, type, val ) { * if (type === 'set') { * source.price = val; * // Store the computed dislay and filter values for efficiency * source.price_display = val=="" ? "" : "$"+numberFormat(val); * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val; * return; * } * else if (type === 'display') { * return source.price_display; * } * else if (type === 'filter') { * return source.price_filter; * } * // 'sort', 'type' and undefined all just use the integer * return source.price; * } * } ] * } ); * } ); * * @example * // Using default content * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [ 0 ], * "data": null, * "defaultContent": "Click to edit" * } ] * } ); * } ); * * @example * // Using array notation - outputting a list from an array * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [ 0 ], * "data": "name[, ]" * } ] * } ); * } ); * */ "mData": null, /** * This property is the rendering partner to `data` and it is suggested that * when you want to manipulate data for display (including filtering, * sorting etc) without altering the underlying data for the table, use this * property. `render` can be considered to be the the read only companion to * `data` which is read / write (then as such more complex). Like `data` * this option can be given in a number of different ways to effect its * behaviour: * * * `integer` - treated as an array index for the data source. This is the * default that DataTables uses (incrementally increased for each column). * * `string` - read an object property from the data source. There are * three 'special' options that can be used in the string to alter how * DataTables reads the data from the source object: * * `.` - Dotted Javascript notation. Just as you use a `.` in * Javascript to read from nested objects, so to can the options * specified in `data`. For example: `browser.version` or * `browser.name`. If your object parameter name contains a period, use * `\\` to escape it - i.e. `first\\.name`. * * `[]` - Array notation. DataTables can automatically combine data * from and array source, joining the data with the characters provided * between the two brackets. For example: `name[, ]` would provide a * comma-space separated list from the source array. If no characters * are provided between the brackets, the original array source is * returned. * * `()` - Function notation. Adding `()` to the end of a parameter will * execute a function of the name given. For example: `browser()` for a * simple function on the data source, `browser.version()` for a * function in a nested property or even `browser().version` to get an * object property if the function called returns an object. * * `object` - use different data for the different data types requested by * DataTables ('filter', 'display', 'type' or 'sort'). The property names * of the object is the data type the property refers to and the value can * defined using an integer, string or function using the same rules as * `render` normally does. Note that an `_` option _must_ be specified. * This is the default value to use if you haven't specified a value for * the data type requested by DataTables. * * `function` - the function given will be executed whenever DataTables * needs to set or get the data for a cell in the column. The function * takes three parameters: * * Parameters: * * {array|object} The data source for the row (based on `data`) * * {string} The type call data requested - this will be 'filter', * 'display', 'type' or 'sort'. * * {array|object} The full data source for the row (not based on * `data`) * * Return: * * The return value from the function is what will be used for the * data requested. * * @type string|int|function|object|null * @default null Use the data source value. * * @name DataTable.defaults.column.render * @dtopt Columns * * @example * // Create a comma separated list from an array of objects * $(document).ready( function() { * $('#example').dataTable( { * "ajaxSource": "sources/deep.txt", * "columns": [ * { "data": "engine" }, * { "data": "browser" }, * { * "data": "platform", * "render": "[, ].name" * } * ] * } ); * } ); * * @example * // Execute a function to obtain data * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [ 0 ], * "data": null, // Use the full data source object for the renderer's source * "render": "browserName()" * } ] * } ); * } ); * * @example * // As an object, extracting different data for the different types * // This would be used with a data source such as: * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" } * // Here the `phone` integer is used for sorting and type detection, while `phone_filter` * // (which has both forms) is used for filtering for if a user inputs either format, while * // the formatted phone number is the one that is shown in the table. * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [ 0 ], * "data": null, // Use the full data source object for the renderer's source * "render": { * "_": "phone", * "filter": "phone_filter", * "display": "phone_display" * } * } ] * } ); * } ); * * @example * // Use as a function to create a link from the data source * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [ 0 ], * "data": "download_link", * "render": function ( data, type, full ) { * return '<a href="'+data+'">Download</a>'; * } * } ] * } ); * } ); */ "mRender": null, /** * Change the cell type created for the column - either TD cells or TH cells. This * can be useful as TH cells have semantic meaning in the table body, allowing them * to act as a header for a row (you may wish to add scope='row' to the TH elements). * @type string * @default td * * @name DataTable.defaults.column.cellType * @dtopt Columns * * @example * // Make the first column use TH cells * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ { * "targets": [ 0 ], * "cellType": "th" * } ] * } ); * } ); */ "sCellType": "td", /** * Class to give to each cell in this column. * @type string * @default <i>Empty string</i> * * @name DataTable.defaults.column.class * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "class": "my_class", "targets": [ 0 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "class": "my_class" }, * null, * null, * null, * null * ] * } ); * } ); */ "sClass": "", /** * When DataTables calculates the column widths to assign to each column, * it finds the longest string in each column and then constructs a * temporary table and reads the widths from that. The problem with this * is that "mmm" is much wider then "iiii", but the latter is a longer * string - thus the calculation can go wrong (doing it properly and putting * it into an DOM object and measuring that is horribly(!) slow). Thus as * a "work around" we provide this option. It will append its value to the * text that is found to be the longest string for the column - i.e. padding. * Generally you shouldn't need this! * @type string * @default <i>Empty string<i> * * @name DataTable.defaults.column.contentPadding * @dtopt Columns * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * null, * null, * null, * { * "contentPadding": "mmm" * } * ] * } ); * } ); */ "sContentPadding": "", /** * Allows a default value to be given for a column's data, and will be used * whenever a null data source is encountered (this can be because `data` * is set to null, or because the data source itself is null). * @type string * @default null * * @name DataTable.defaults.column.defaultContent * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { * "data": null, * "defaultContent": "Edit", * "targets": [ -1 ] * } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * null, * null, * null, * { * "data": null, * "defaultContent": "Edit" * } * ] * } ); * } ); */ "sDefaultContent": null, /** * This parameter is only used in DataTables' server-side processing. It can * be exceptionally useful to know what columns are being displayed on the * client side, and to map these to database fields. When defined, the names * also allow DataTables to reorder information from the server if it comes * back in an unexpected order (i.e. if you switch your columns around on the * client-side, your server-side code does not also need updating). * @type string * @default <i>Empty string</i> * * @name DataTable.defaults.column.name * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "name": "engine", "targets": [ 0 ] }, * { "name": "browser", "targets": [ 1 ] }, * { "name": "platform", "targets": [ 2 ] }, * { "name": "version", "targets": [ 3 ] }, * { "name": "grade", "targets": [ 4 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "name": "engine" }, * { "name": "browser" }, * { "name": "platform" }, * { "name": "version" }, * { "name": "grade" } * ] * } ); * } ); */ "sName": "", /** * Defines a data source type for the ordering which can be used to read * real-time information from the table (updating the internally cached * version) prior to ordering. This allows ordering to occur on user * editable elements such as form inputs. * @type string * @default std * * @name DataTable.defaults.column.orderDataType * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "orderDataType": "dom-text", "targets": [ 2, 3 ] }, * { "type": "numeric", "targets": [ 3 ] }, * { "orderDataType": "dom-select", "targets": [ 4 ] }, * { "orderDataType": "dom-checkbox", "targets": [ 5 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * null, * null, * { "orderDataType": "dom-text" }, * { "orderDataType": "dom-text", "type": "numeric" }, * { "orderDataType": "dom-select" }, * { "orderDataType": "dom-checkbox" } * ] * } ); * } ); */ "sSortDataType": "std", /** * The title of this column. * @type string * @default null <i>Derived from the 'TH' value for this column in the * original HTML table.</i> * * @name DataTable.defaults.column.title * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "title": "My column title", "targets": [ 0 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "title": "My column title" }, * null, * null, * null, * null * ] * } ); * } ); */ "sTitle": null, /** * The type allows you to specify how the data for this column will be * ordered. Four types (string, numeric, date and html (which will strip * HTML tags before ordering)) are currently available. Note that only date * formats understood by Javascript's Date() object will be accepted as type * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string', * 'numeric', 'date' or 'html' (by default). Further types can be adding * through plug-ins. * @type string * @default null <i>Auto-detected from raw data</i> * * @name DataTable.defaults.column.type * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "type": "html", "targets": [ 0 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "type": "html" }, * null, * null, * null, * null * ] * } ); * } ); */ "sType": null, /** * Defining the width of the column, this parameter may take any CSS value * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not * been given a specific width through this interface ensuring that the table * remains readable. * @type string * @default null <i>Automatic</i> * * @name DataTable.defaults.column.width * @dtopt Columns * * @example * // Using `columnDefs` * $(document).ready( function() { * $('#example').dataTable( { * "columnDefs": [ * { "width": "20%", "targets": [ 0 ] } * ] * } ); * } ); * * @example * // Using `columns` * $(document).ready( function() { * $('#example').dataTable( { * "columns": [ * { "width": "20%" }, * null, * null, * null, * null * ] * } ); * } ); */ "sWidth": null }; _fnHungarianMap( DataTable.defaults.column ); /** * DataTables settings object - this holds all the information needed for a * given table, including configuration, data and current application of the * table options. DataTables does not have a single instance for each DataTable * with the settings attached to that instance, but rather instances of the * DataTable "class" are created on-the-fly as needed (typically by a * $().dataTable() call) and the settings object is then applied to that * instance. * * Note that this object is related to {@link DataTable.defaults} but this * one is the internal data store for DataTables's cache of columns. It should * NOT be manipulated outside of DataTables. Any configuration should be done * through the initialisation options. * @namespace * @todo Really should attach the settings object to individual instances so we * don't need to create new instances on each $().dataTable() call (if the * table already exists). It would also save passing oSettings around and * into every single function. However, this is a very significant * architecture change for DataTables and will almost certainly break * backwards compatibility with older installations. This is something that * will be done in 2.0. */ DataTable.models.oSettings = { /** * Primary features of DataTables and their enablement state. * @namespace */ "oFeatures": { /** * Flag to say if DataTables should automatically try to calculate the * optimum table and columns widths (true) or not (false). * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bAutoWidth": null, /** * Delay the creation of TR and TD elements until they are actually * needed by a driven page draw. This can give a significant speed * increase for Ajax source and Javascript source data, but makes no * difference at all fro DOM and server-side processing tables. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bDeferRender": null, /** * Enable filtering on the table or not. Note that if this is disabled * then there is no filtering at all on the table, including fnFilter. * To just remove the filtering input use sDom and remove the 'f' option. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bFilter": null, /** * Table information element (the 'Showing x of y records' div) enable * flag. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bInfo": null, /** * Present a user control allowing the end user to change the page size * when pagination is enabled. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bLengthChange": null, /** * Pagination enabled or not. Note that if this is disabled then length * changing must also be disabled. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bPaginate": null, /** * Processing indicator enable flag whenever DataTables is enacting a * user request - typically an Ajax request for server-side processing. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bProcessing": null, /** * Server-side processing enabled flag - when enabled DataTables will * get all data from the server for every draw - there is no filtering, * sorting or paging done on the client-side. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bServerSide": null, /** * Sorting enablement flag. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bSort": null, /** * Multi-column sorting * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bSortMulti": null, /** * Apply a class to the columns which are being sorted to provide a * visual highlight or not. This can slow things down when enabled since * there is a lot of DOM interaction. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bSortClasses": null, /** * State saving enablement flag. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bStateSave": null }, /** * Scrolling settings for a table. * @namespace */ "oScroll": { /** * When the table is shorter in height than sScrollY, collapse the * table container down to the height of the table (when true). * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bCollapse": null, /** * Width of the scrollbar for the web-browser's platform. Calculated * during table initialisation. * @type int * @default 0 */ "iBarWidth": 0, /** * Viewport width for horizontal scrolling. Horizontal scrolling is * disabled if an empty string. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string */ "sX": null, /** * Width to expand the table to when using x-scrolling. Typically you * should not need to use this. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string * @deprecated */ "sXInner": null, /** * Viewport height for vertical scrolling. Vertical scrolling is disabled * if an empty string. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string */ "sY": null }, /** * Language information for the table. * @namespace * @extends DataTable.defaults.oLanguage */ "oLanguage": { /** * Information callback function. See * {@link DataTable.defaults.fnInfoCallback} * @type function * @default null */ "fnInfoCallback": null }, /** * Browser support parameters * @namespace */ "oBrowser": { /** * Indicate if the browser incorrectly calculates width:100% inside a * scrolling element (IE6/7) * @type boolean * @default false */ "bScrollOversize": false, /** * Determine if the vertical scrollbar is on the right or left of the * scrolling container - needed for rtl language layout, although not * all browsers move the scrollbar (Safari). * @type boolean * @default false */ "bScrollbarLeft": false, /** * Flag for if `getBoundingClientRect` is fully supported or not * @type boolean * @default false */ "bBounding": false, /** * Browser scrollbar width * @type integer * @default 0 */ "barWidth": 0 }, "ajax": null, /** * Array referencing the nodes which are used for the features. The * parameters of this object match what is allowed by sDom - i.e. * <ul> * <li>'l' - Length changing</li> * <li>'f' - Filtering input</li> * <li>'t' - The table!</li> * <li>'i' - Information</li> * <li>'p' - Pagination</li> * <li>'r' - pRocessing</li> * </ul> * @type array * @default [] */ "aanFeatures": [], /** * Store data information - see {@link DataTable.models.oRow} for detailed * information. * @type array * @default [] */ "aoData": [], /** * Array of indexes which are in the current display (after filtering etc) * @type array * @default [] */ "aiDisplay": [], /** * Array of indexes for display - no filtering * @type array * @default [] */ "aiDisplayMaster": [], /** * Map of row ids to data indexes * @type object * @default {} */ "aIds": {}, /** * Store information about each column that is in use * @type array * @default [] */ "aoColumns": [], /** * Store information about the table's header * @type array * @default [] */ "aoHeader": [], /** * Store information about the table's footer * @type array * @default [] */ "aoFooter": [], /** * Store the applied global search information in case we want to force a * research or compare the old search to a new one. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @namespace * @extends DataTable.models.oSearch */ "oPreviousSearch": {}, /** * Store the applied search for each column - see * {@link DataTable.models.oSearch} for the format that is used for the * filtering information for each column. * @type array * @default [] */ "aoPreSearchCols": [], /** * Sorting that is applied to the table. Note that the inner arrays are * used in the following manner: * <ul> * <li>Index 0 - column number</li> * <li>Index 1 - current sorting direction</li> * </ul> * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type array * @todo These inner arrays should really be objects */ "aaSorting": null, /** * Sorting that is always applied to the table (i.e. prefixed in front of * aaSorting). * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type array * @default [] */ "aaSortingFixed": [], /** * Classes to use for the striping of a table. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type array * @default [] */ "asStripeClasses": null, /** * If restoring a table - we should restore its striping classes as well * @type array * @default [] */ "asDestroyStripes": [], /** * If restoring a table - we should restore its width * @type int * @default 0 */ "sDestroyWidth": 0, /** * Callback functions array for every time a row is inserted (i.e. on a draw). * @type array * @default [] */ "aoRowCallback": [], /** * Callback functions for the header on each draw. * @type array * @default [] */ "aoHeaderCallback": [], /** * Callback function for the footer on each draw. * @type array * @default [] */ "aoFooterCallback": [], /** * Array of callback functions for draw callback functions * @type array * @default [] */ "aoDrawCallback": [], /** * Array of callback functions for row created function * @type array * @default [] */ "aoRowCreatedCallback": [], /** * Callback functions for just before the table is redrawn. A return of * false will be used to cancel the draw. * @type array * @default [] */ "aoPreDrawCallback": [], /** * Callback functions for when the table has been initialised. * @type array * @default [] */ "aoInitComplete": [], /** * Callbacks for modifying the settings to be stored for state saving, prior to * saving state. * @type array * @default [] */ "aoStateSaveParams": [], /** * Callbacks for modifying the settings that have been stored for state saving * prior to using the stored values to restore the state. * @type array * @default [] */ "aoStateLoadParams": [], /** * Callbacks for operating on the settings object once the saved state has been * loaded * @type array * @default [] */ "aoStateLoaded": [], /** * Cache the table ID for quick access * @type string * @default <i>Empty string</i> */ "sTableId": "", /** * The TABLE node for the main table * @type node * @default null */ "nTable": null, /** * Permanent ref to the thead element * @type node * @default null */ "nTHead": null, /** * Permanent ref to the tfoot element - if it exists * @type node * @default null */ "nTFoot": null, /** * Permanent ref to the tbody element * @type node * @default null */ "nTBody": null, /** * Cache the wrapper node (contains all DataTables controlled elements) * @type node * @default null */ "nTableWrapper": null, /** * Indicate if when using server-side processing the loading of data * should be deferred until the second draw. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean * @default false */ "bDeferLoading": false, /** * Indicate if all required information has been read in * @type boolean * @default false */ "bInitialised": false, /** * Information about open rows. Each object in the array has the parameters * 'nTr' and 'nParent' * @type array * @default [] */ "aoOpenRows": [], /** * Dictate the positioning of DataTables' control elements - see * {@link DataTable.model.oInit.sDom}. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string * @default null */ "sDom": null, /** * Search delay (in mS) * @type integer * @default null */ "searchDelay": null, /** * Which type of pagination should be used. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string * @default two_button */ "sPaginationType": "two_button", /** * The state duration (for `stateSave`) in seconds. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type int * @default 0 */ "iStateDuration": 0, /** * Array of callback functions for state saving. Each array element is an * object with the following parameters: * <ul> * <li>function:fn - function to call. Takes two parameters, oSettings * and the JSON string to save that has been thus far created. Returns * a JSON string to be inserted into a json object * (i.e. '"param": [ 0, 1, 2]')</li> * <li>string:sName - name of callback</li> * </ul> * @type array * @default [] */ "aoStateSave": [], /** * Array of callback functions for state loading. Each array element is an * object with the following parameters: * <ul> * <li>function:fn - function to call. Takes two parameters, oSettings * and the object stored. May return false to cancel state loading</li> * <li>string:sName - name of callback</li> * </ul> * @type array * @default [] */ "aoStateLoad": [], /** * State that was saved. Useful for back reference * @type object * @default null */ "oSavedState": null, /** * State that was loaded. Useful for back reference * @type object * @default null */ "oLoadedState": null, /** * Source url for AJAX data for the table. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string * @default null */ "sAjaxSource": null, /** * Property from a given object from which to read the table data from. This * can be an empty string (when not server-side processing), in which case * it is assumed an an array is given directly. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string */ "sAjaxDataProp": null, /** * Note if draw should be blocked while getting data * @type boolean * @default true */ "bAjaxDataGet": true, /** * The last jQuery XHR object that was used for server-side data gathering. * This can be used for working with the XHR information in one of the * callbacks * @type object * @default null */ "jqXHR": null, /** * JSON returned from the server in the last Ajax request * @type object * @default undefined */ "json": undefined, /** * Data submitted as part of the last Ajax request * @type object * @default undefined */ "oAjaxData": undefined, /** * Function to get the server-side data. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type function */ "fnServerData": null, /** * Functions which are called prior to sending an Ajax request so extra * parameters can easily be sent to the server * @type array * @default [] */ "aoServerParams": [], /** * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if * required). * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type string */ "sServerMethod": null, /** * Format numbers for display. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type function */ "fnFormatNumber": null, /** * List of options that can be used for the user selectable length menu. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type array * @default [] */ "aLengthMenu": null, /** * Counter for the draws that the table does. Also used as a tracker for * server-side processing * @type int * @default 0 */ "iDraw": 0, /** * Indicate if a redraw is being done - useful for Ajax * @type boolean * @default false */ "bDrawing": false, /** * Draw index (iDraw) of the last error when parsing the returned data * @type int * @default -1 */ "iDrawError": -1, /** * Paging display length * @type int * @default 10 */ "_iDisplayLength": 10, /** * Paging start point - aiDisplay index * @type int * @default 0 */ "_iDisplayStart": 0, /** * Server-side processing - number of records in the result set * (i.e. before filtering), Use fnRecordsTotal rather than * this property to get the value of the number of records, regardless of * the server-side processing setting. * @type int * @default 0 * @private */ "_iRecordsTotal": 0, /** * Server-side processing - number of records in the current display set * (i.e. after filtering). Use fnRecordsDisplay rather than * this property to get the value of the number of records, regardless of * the server-side processing setting. * @type boolean * @default 0 * @private */ "_iRecordsDisplay": 0, /** * The classes to use for the table * @type object * @default {} */ "oClasses": {}, /** * Flag attached to the settings object so you can check in the draw * callback if filtering has been done in the draw. Deprecated in favour of * events. * @type boolean * @default false * @deprecated */ "bFiltered": false, /** * Flag attached to the settings object so you can check in the draw * callback if sorting has been done in the draw. Deprecated in favour of * events. * @type boolean * @default false * @deprecated */ "bSorted": false, /** * Indicate that if multiple rows are in the header and there is more than * one unique cell per column, if the top one (true) or bottom one (false) * should be used for sorting / title by DataTables. * Note that this parameter will be set by the initialisation routine. To * set a default use {@link DataTable.defaults}. * @type boolean */ "bSortCellsTop": null, /** * Initialisation object that is used for the table * @type object * @default null */ "oInit": null, /** * Destroy callback functions - for plug-ins to attach themselves to the * destroy so they can clean up markup and events. * @type array * @default [] */ "aoDestroyCallback": [], /** * Get the number of records in the current record set, before filtering * @type function */ "fnRecordsTotal": function () { return _fnDataSource( this ) == 'ssp' ? this._iRecordsTotal * 1 : this.aiDisplayMaster.length; }, /** * Get the number of records in the current record set, after filtering * @type function */ "fnRecordsDisplay": function () { return _fnDataSource( this ) == 'ssp' ? this._iRecordsDisplay * 1 : this.aiDisplay.length; }, /** * Get the display end point - aiDisplay index * @type function */ "fnDisplayEnd": function () { var len = this._iDisplayLength, start = this._iDisplayStart, calc = start + len, records = this.aiDisplay.length, features = this.oFeatures, paginate = features.bPaginate; if ( features.bServerSide ) { return paginate === false || len === -1 ? start + records : Math.min( start+len, this._iRecordsDisplay ); } else { return ! paginate || calc>records || len===-1 ? records : calc; } }, /** * The DataTables object for this table * @type object * @default null */ "oInstance": null, /** * Unique identifier for each instance of the DataTables object. If there * is an ID on the table node, then it takes that value, otherwise an * incrementing internal counter is used. * @type string * @default null */ "sInstance": null, /** * tabindex attribute value that is added to DataTables control elements, allowing * keyboard navigation of the table and its controls. */ "iTabIndex": 0, /** * DIV container for the footer scrolling table if scrolling */ "nScrollHead": null, /** * DIV container for the footer scrolling table if scrolling */ "nScrollFoot": null, /** * Last applied sort * @type array * @default [] */ "aLastSort": [], /** * Stored plug-in instances * @type object * @default {} */ "oPlugins": {}, /** * Function used to get a row's id from the row's data * @type function * @default null */ "rowIdFn": null, /** * Data location where to store a row's id * @type string * @default null */ "rowId": null }; /** * Extension object for DataTables that is used to provide all extension * options. * * Note that the `DataTable.ext` object is available through * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is * also aliased to `jQuery.fn.dataTableExt` for historic reasons. * @namespace * @extends DataTable.models.ext */ /** * DataTables extensions * * This namespace acts as a collection area for plug-ins that can be used to * extend DataTables capabilities. Indeed many of the build in methods * use this method to provide their own capabilities (sorting methods for * example). * * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy * reasons * * @namespace */ DataTable.ext = _ext = { /** * Buttons. For use with the Buttons extension for DataTables. This is * defined here so other extensions can define buttons regardless of load * order. It is _not_ used by DataTables core. * * @type object * @default {} */ buttons: {}, /** * Element class names * * @type object * @default {} */ classes: {}, /** * DataTables build type (expanded by the download builder) * * @type string */ builder: "-source-", /** * Error reporting. * * How should DataTables report an error. Can take the value 'alert', * 'throw', 'none' or a function. * * @type string|function * @default alert */ errMode: "alert", /** * Feature plug-ins. * * This is an array of objects which describe the feature plug-ins that are * available to DataTables. These feature plug-ins are then available for * use through the `dom` initialisation option. * * Each feature plug-in is described by an object which must have the * following properties: * * * `fnInit` - function that is used to initialise the plug-in, * * `cFeature` - a character so the feature can be enabled by the `dom` * instillation option. This is case sensitive. * * The `fnInit` function has the following input parameters: * * 1. `{object}` DataTables settings object: see * {@link DataTable.models.oSettings} * * And the following return is expected: * * * {node|null} The element which contains your feature. Note that the * return may also be void if your plug-in does not require to inject any * DOM elements into DataTables control (`dom`) - for example this might * be useful when developing a plug-in which allows table control via * keyboard entry * * @type array * * @example * $.fn.dataTable.ext.features.push( { * "fnInit": function( oSettings ) { * return new TableTools( { "oDTSettings": oSettings } ); * }, * "cFeature": "T" * } ); */ feature: [], /** * Row searching. * * This method of searching is complimentary to the default type based * searching, and a lot more comprehensive as it allows you complete control * over the searching logic. Each element in this array is a function * (parameters described below) that is called for every row in the table, * and your logic decides if it should be included in the searching data set * or not. * * Searching functions have the following input parameters: * * 1. `{object}` DataTables settings object: see * {@link DataTable.models.oSettings} * 2. `{array|object}` Data for the row to be processed (same as the * original format that was passed in as the data source, or an array * from a DOM data source * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which * can be useful to retrieve the `TR` element if you need DOM interaction. * * And the following return is expected: * * * {boolean} Include the row in the searched result set (true) or not * (false) * * Note that as with the main search ability in DataTables, technically this * is "filtering", since it is subtractive. However, for consistency in * naming we call it searching here. * * @type array * @default [] * * @example * // The following example shows custom search being applied to the * // fourth column (i.e. the data[3] index) based on two input values * // from the end-user, matching the data in a certain range. * $.fn.dataTable.ext.search.push( * function( settings, data, dataIndex ) { * var min = document.getElementById('min').value * 1; * var max = document.getElementById('max').value * 1; * var version = data[3] == "-" ? 0 : data[3]*1; * * if ( min == "" && max == "" ) { * return true; * } * else if ( min == "" && version < max ) { * return true; * } * else if ( min < version && "" == max ) { * return true; * } * else if ( min < version && version < max ) { * return true; * } * return false; * } * ); */ search: [], /** * Selector extensions * * The `selector` option can be used to extend the options available for the * selector modifier options (`selector-modifier` object data type) that * each of the three built in selector types offer (row, column and cell + * their plural counterparts). For example the Select extension uses this * mechanism to provide an option to select only rows, columns and cells * that have been marked as selected by the end user (`{selected: true}`), * which can be used in conjunction with the existing built in selector * options. * * Each property is an array to which functions can be pushed. The functions * take three attributes: * * * Settings object for the host table * * Options object (`selector-modifier` object type) * * Array of selected item indexes * * The return is an array of the resulting item indexes after the custom * selector has been applied. * * @type object */ selector: { cell: [], column: [], row: [] }, /** * Internal functions, exposed for used in plug-ins. * * Please note that you should not need to use the internal methods for * anything other than a plug-in (and even then, try to avoid if possible). * The internal function may change between releases. * * @type object * @default {} */ internal: {}, /** * Legacy configuration options. Enable and disable legacy options that * are available in DataTables. * * @type object */ legacy: { /** * Enable / disable DataTables 1.9 compatible server-side processing * requests * * @type boolean * @default null */ ajax: null }, /** * Pagination plug-in methods. * * Each entry in this object is a function and defines which buttons should * be shown by the pagination rendering method that is used for the table: * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the * buttons are displayed in the document, while the functions here tell it * what buttons to display. This is done by returning an array of button * descriptions (what each button will do). * * Pagination types (the four built in options and any additional plug-in * options defined here) can be used through the `paginationType` * initialisation parameter. * * The functions defined take two parameters: * * 1. `{int} page` The current page index * 2. `{int} pages` The number of pages in the table * * Each function is expected to return an array where each element of the * array can be one of: * * * `first` - Jump to first page when activated * * `last` - Jump to last page when activated * * `previous` - Show previous page when activated * * `next` - Show next page when activated * * `{int}` - Show page of the index given * * `{array}` - A nested array containing the above elements to add a * containing 'DIV' element (might be useful for styling). * * Note that DataTables v1.9- used this object slightly differently whereby * an object with two functions would be defined for each plug-in. That * ability is still supported by DataTables 1.10+ to provide backwards * compatibility, but this option of use is now decremented and no longer * documented in DataTables 1.10+. * * @type object * @default {} * * @example * // Show previous, next and current page buttons only * $.fn.dataTableExt.oPagination.current = function ( page, pages ) { * return [ 'previous', page, 'next' ]; * }; */ pager: {}, renderer: { pageButton: {}, header: {} }, /** * Ordering plug-ins - custom data source * * The extension options for ordering of data available here is complimentary * to the default type based ordering that DataTables typically uses. It * allows much greater control over the the data that is being used to * order a column, but is necessarily therefore more complex. * * This type of ordering is useful if you want to do ordering based on data * live from the DOM (for example the contents of an 'input' element) rather * than just the static string that DataTables knows of. * * The way these plug-ins work is that you create an array of the values you * wish to be ordering for the column in question and then return that * array. The data in the array much be in the index order of the rows in * the table (not the currently ordering order!). Which order data gathering * function is run here depends on the `dt-init columns.orderDataType` * parameter that is used for the column (if any). * * The functions defined take two parameters: * * 1. `{object}` DataTables settings object: see * {@link DataTable.models.oSettings} * 2. `{int}` Target column index * * Each function is expected to return an array: * * * `{array}` Data for the column to be ordering upon * * @type array * * @example * // Ordering using `input` node values * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col ) * { * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { * return $('input', td).val(); * } ); * } */ order: {}, /** * Type based plug-ins. * * Each column in DataTables has a type assigned to it, either by automatic * detection or by direct assignment using the `type` option for the column. * The type of a column will effect how it is ordering and search (plug-ins * can also make use of the column type if required). * * @namespace */ type: { /** * Type detection functions. * * The functions defined in this object are used to automatically detect * a column's type, making initialisation of DataTables super easy, even * when complex data is in the table. * * The functions defined take two parameters: * * 1. `{*}` Data from the column cell to be analysed * 2. `{settings}` DataTables settings object. This can be used to * perform context specific type detection - for example detection * based on language settings such as using a comma for a decimal * place. Generally speaking the options from the settings will not * be required * * Each function is expected to return: * * * `{string|null}` Data type detected, or null if unknown (and thus * pass it on to the other type detection functions. * * @type array * * @example * // Currency type detection plug-in: * $.fn.dataTable.ext.type.detect.push( * function ( data, settings ) { * // Check the numeric part * if ( ! $.isNumeric( data.substring(1) ) ) { * return null; * } * * // Check prefixed by currency * if ( data.charAt(0) == '$' || data.charAt(0) == '£' ) { * return 'currency'; * } * return null; * } * ); */ detect: [], /** * Type based search formatting. * * The type based searching functions can be used to pre-format the * data to be search on. For example, it can be used to strip HTML * tags or to de-format telephone numbers for numeric only searching. * * Note that is a search is not defined for a column of a given type, * no search formatting will be performed. * * Pre-processing of searching data plug-ins - When you assign the sType * for a column (or have it automatically detected for you by DataTables * or a type detection plug-in), you will typically be using this for * custom sorting, but it can also be used to provide custom searching * by allowing you to pre-processing the data and returning the data in * the format that should be searched upon. This is done by adding * functions this object with a parameter name which matches the sType * for that target column. This is the corollary of <i>afnSortData</i> * for searching data. * * The functions defined take a single parameter: * * 1. `{*}` Data from the column cell to be prepared for searching * * Each function is expected to return: * * * `{string|null}` Formatted string that will be used for the searching. * * @type object * @default {} * * @example * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) { * return d.replace(/\n/g," ").replace( /<.*?>/g, "" ); * } */ search: {}, /** * Type based ordering. * * The column type tells DataTables what ordering to apply to the table * when a column is sorted upon. The order for each type that is defined, * is defined by the functions available in this object. * * Each ordering option can be described by three properties added to * this object: * * * `{type}-pre` - Pre-formatting function * * `{type}-asc` - Ascending order function * * `{type}-desc` - Descending order function * * All three can be used together, only `{type}-pre` or only * `{type}-asc` and `{type}-desc` together. It is generally recommended * that only `{type}-pre` is used, as this provides the optimal * implementation in terms of speed, although the others are provided * for compatibility with existing Javascript sort functions. * * `{type}-pre`: Functions defined take a single parameter: * * 1. `{*}` Data from the column cell to be prepared for ordering * * And return: * * * `{*}` Data to be sorted upon * * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort * functions, taking two parameters: * * 1. `{*}` Data to compare to the second parameter * 2. `{*}` Data to compare to the first parameter * * And returning: * * * `{*}` Ordering match: <0 if first parameter should be sorted lower * than the second parameter, ===0 if the two parameters are equal and * >0 if the first parameter should be sorted height than the second * parameter. * * @type object * @default {} * * @example * // Numeric ordering of formatted numbers with a pre-formatter * $.extend( $.fn.dataTable.ext.type.order, { * "string-pre": function(x) { * a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" ); * return parseFloat( a ); * } * } ); * * @example * // Case-sensitive string ordering, with no pre-formatting method * $.extend( $.fn.dataTable.ext.order, { * "string-case-asc": function(x,y) { * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); * }, * "string-case-desc": function(x,y) { * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); * } * } ); */ order: {} }, /** * Unique DataTables instance counter * * @type int * @private */ _unique: 0, // // Depreciated // The following properties are retained for backwards compatiblity only. // The should not be used in new projects and will be removed in a future // version // /** * Version check function. * @type function * @depreciated Since 1.10 */ fnVersionCheck: DataTable.fnVersionCheck, /** * Index for what 'this' index API functions should use * @type int * @deprecated Since v1.10 */ iApiIndex: 0, /** * jQuery UI class container * @type object * @deprecated Since v1.10 */ oJUIClasses: {}, /** * Software version * @type string * @deprecated Since v1.10 */ sVersion: DataTable.version }; // // Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts // $.extend( _ext, { afnFiltering: _ext.search, aTypes: _ext.type.detect, ofnSearch: _ext.type.search, oSort: _ext.type.order, afnSortData: _ext.order, aoFeatures: _ext.feature, oApi: _ext.internal, oStdClasses: _ext.classes, oPagination: _ext.pager } ); $.extend( DataTable.ext.classes, { "sTable": "dataTable", "sNoFooter": "no-footer", /* Paging buttons */ "sPageButton": "paginate_button", "sPageButtonActive": "current", "sPageButtonDisabled": "disabled", /* Striping classes */ "sStripeOdd": "odd", "sStripeEven": "even", /* Empty row */ "sRowEmpty": "dataTables_empty", /* Features */ "sWrapper": "dataTables_wrapper", "sFilter": "dataTables_filter", "sInfo": "dataTables_info", "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */ "sLength": "dataTables_length", "sProcessing": "dataTables_processing", /* Sorting */ "sSortAsc": "sorting_asc", "sSortDesc": "sorting_desc", "sSortable": "sorting", /* Sortable in both directions */ "sSortableAsc": "sorting_asc_disabled", "sSortableDesc": "sorting_desc_disabled", "sSortableNone": "sorting_disabled", "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */ /* Filtering */ "sFilterInput": "", /* Page length */ "sLengthSelect": "", /* Scrolling */ "sScrollWrapper": "dataTables_scroll", "sScrollHead": "dataTables_scrollHead", "sScrollHeadInner": "dataTables_scrollHeadInner", "sScrollBody": "dataTables_scrollBody", "sScrollFoot": "dataTables_scrollFoot", "sScrollFootInner": "dataTables_scrollFootInner", /* Misc */ "sHeaderTH": "", "sFooterTH": "", // Deprecated "sSortJUIAsc": "", "sSortJUIDesc": "", "sSortJUI": "", "sSortJUIAscAllowed": "", "sSortJUIDescAllowed": "", "sSortJUIWrapper": "", "sSortIcon": "", "sJUIHeader": "", "sJUIFooter": "" } ); var extPagination = DataTable.ext.pager; function _numbers ( page, pages ) { var numbers = [], buttons = extPagination.numbers_length, half = Math.floor( buttons / 2 ), i = 1; if ( pages <= buttons ) { numbers = _range( 0, pages ); } else if ( page <= half ) { numbers = _range( 0, buttons-2 ); numbers.push( 'ellipsis' ); numbers.push( pages-1 ); } else if ( page >= pages - 1 - half ) { numbers = _range( pages-(buttons-2), pages ); numbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6 numbers.splice( 0, 0, 0 ); } else { numbers = _range( page-half+2, page+half-1 ); numbers.push( 'ellipsis' ); numbers.push( pages-1 ); numbers.splice( 0, 0, 'ellipsis' ); numbers.splice( 0, 0, 0 ); } numbers.DT_el = 'span'; return numbers; } $.extend( extPagination, { simple: function ( page, pages ) { return [ 'previous', 'next' ]; }, full: function ( page, pages ) { return [ 'first', 'previous', 'next', 'last' ]; }, numbers: function ( page, pages ) { return [ _numbers(page, pages) ]; }, simple_numbers: function ( page, pages ) { return [ 'previous', _numbers(page, pages), 'next' ]; }, full_numbers: function ( page, pages ) { return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ]; }, first_last_numbers: function (page, pages) { return ['first', _numbers(page, pages), 'last']; }, // For testing and plug-ins to use _numbers: _numbers, // Number of number buttons (including ellipsis) to show. _Must be odd!_ numbers_length: 7 } ); $.extend( true, DataTable.ext.renderer, { pageButton: { _: function ( settings, host, idx, buttons, page, pages ) { var classes = settings.oClasses; var lang = settings.oLanguage.oPaginate; var aria = settings.oLanguage.oAria.paginate || {}; var btnDisplay, btnClass, counter=0; var attach = function( container, buttons ) { var i, ien, node, button; var clickHandler = function ( e ) { _fnPageChange( settings, e.data.action, true ); }; for ( i=0, ien=buttons.length ; i<ien ; i++ ) { button = buttons[i]; if ( $.isArray( button ) ) { var inner = $( '<'+(button.DT_el || 'div')+'/>' ) .appendTo( container ); attach( inner, button ); } else { btnDisplay = null; btnClass = ''; switch ( button ) { case 'ellipsis': container.append('<span class="ellipsis">…</span>'); break; case 'first': btnDisplay = lang.sFirst; btnClass = button + (page > 0 ? '' : ' '+classes.sPageButtonDisabled); break; case 'previous': btnDisplay = lang.sPrevious; btnClass = button + (page > 0 ? '' : ' '+classes.sPageButtonDisabled); break; case 'next': btnDisplay = lang.sNext; btnClass = button + (page < pages-1 ? '' : ' '+classes.sPageButtonDisabled); break; case 'last': btnDisplay = lang.sLast; btnClass = button + (page < pages-1 ? '' : ' '+classes.sPageButtonDisabled); break; default: btnDisplay = button + 1; btnClass = page === button ? classes.sPageButtonActive : ''; break; } if ( btnDisplay !== null ) { node = $('<a>', { 'class': classes.sPageButton+' '+btnClass, 'aria-controls': settings.sTableId, 'aria-label': aria[ button ], 'data-dt-idx': counter, 'tabindex': settings.iTabIndex, 'id': idx === 0 && typeof button === 'string' ? settings.sTableId +'_'+ button : null } ) .html( btnDisplay ) .appendTo( container ); _fnBindAction( node, {action: button}, clickHandler ); counter++; } } } }; // IE9 throws an 'unknown error' if document.activeElement is used // inside an iframe or frame. Try / catch the error. Not good for // accessibility, but neither are frames. var activeEl; try { // Because this approach is destroying and recreating the paging // elements, focus is lost on the select button which is bad for // accessibility. So we want to restore focus once the draw has // completed activeEl = $(host).find(document.activeElement).data('dt-idx'); } catch (e) {} attach( $(host).empty(), buttons ); if ( activeEl !== undefined ) { $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); } } } } ); // Built in type detection. See model.ext.aTypes for information about // what is required from this methods. $.extend( DataTable.ext.type.detect, [ // Plain numbers - first since V8 detects some plain numbers as dates // e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...). function ( d, settings ) { var decimal = settings.oLanguage.sDecimal; return _isNumber( d, decimal ) ? 'num'+decimal : null; }, // Dates (only those recognised by the browser's Date.parse) function ( d, settings ) { // V8 tries _very_ hard to make a string passed into `Date.parse()` // valid, so we need to use a regex to restrict date formats. Use a // plug-in for anything other than ISO8601 style strings if ( d && !(d instanceof Date) && ! _re_date.test(d) ) { return null; } var parsed = Date.parse(d); return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null; }, // Formatted numbers function ( d, settings ) { var decimal = settings.oLanguage.sDecimal; return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null; }, // HTML numeric function ( d, settings ) { var decimal = settings.oLanguage.sDecimal; return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null; }, // HTML numeric, formatted function ( d, settings ) { var decimal = settings.oLanguage.sDecimal; return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null; }, // HTML (this is strict checking - there must be html) function ( d, settings ) { return _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ? 'html' : null; } ] ); // Filter formatting functions. See model.ext.ofnSearch for information about // what is required from these methods. // // Note that additional search methods are added for the html numbers and // html formatted numbers by `_addNumericSort()` when we know what the decimal // place is $.extend( DataTable.ext.type.search, { html: function ( data ) { return _empty(data) ? data : typeof data === 'string' ? data .replace( _re_new_lines, " " ) .replace( _re_html, "" ) : ''; }, string: function ( data ) { return _empty(data) ? data : typeof data === 'string' ? data.replace( _re_new_lines, " " ) : data; } } ); var __numericReplace = function ( d, decimalPlace, re1, re2 ) { if ( d !== 0 && (!d || d === '-') ) { return -Infinity; } // If a decimal place other than `.` is used, it needs to be given to the // function so we can detect it and replace with a `.` which is the only // decimal place Javascript recognises - it is not locale aware. if ( decimalPlace ) { d = _numToDecimal( d, decimalPlace ); } if ( d.replace ) { if ( re1 ) { d = d.replace( re1, '' ); } if ( re2 ) { d = d.replace( re2, '' ); } } return d * 1; }; // Add the numeric 'deformatting' functions for sorting and search. This is done // in a function to provide an easy ability for the language options to add // additional methods if a non-period decimal place is used. function _addNumericSort ( decimalPlace ) { $.each( { // Plain numbers "num": function ( d ) { return __numericReplace( d, decimalPlace ); }, // Formatted numbers "num-fmt": function ( d ) { return __numericReplace( d, decimalPlace, _re_formatted_numeric ); }, // HTML numeric "html-num": function ( d ) { return __numericReplace( d, decimalPlace, _re_html ); }, // HTML numeric, formatted "html-num-fmt": function ( d ) { return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric ); } }, function ( key, fn ) { // Add the ordering method _ext.type.order[ key+decimalPlace+'-pre' ] = fn; // For HTML types add a search formatter that will strip the HTML if ( key.match(/^html\-/) ) { _ext.type.search[ key+decimalPlace ] = _ext.type.search.html; } } ); } // Default sort methods $.extend( _ext.type.order, { // Dates "date-pre": function ( d ) { return Date.parse( d ) || -Infinity; }, // html "html-pre": function ( a ) { return _empty(a) ? '' : a.replace ? a.replace( /<.*?>/g, "" ).toLowerCase() : a+''; }, // string "string-pre": function ( a ) { // This is a little complex, but faster than always calling toString, // http://jsperf.com/tostring-v-check return _empty(a) ? '' : typeof a === 'string' ? a.toLowerCase() : ! a.toString ? '' : a.toString(); }, // string-asc and -desc are retained only for compatibility with the old // sort methods "string-asc": function ( x, y ) { return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }, "string-desc": function ( x, y ) { return ((x < y) ? 1 : ((x > y) ? -1 : 0)); } } ); // Numeric sorting types - order doesn't matter here _addNumericSort( '' ); $.extend( true, DataTable.ext.renderer, { header: { _: function ( settings, cell, column, classes ) { // No additional mark-up required // Attach a sort listener to update on sort - note that using the // `DT` namespace will allow the event to be removed automatically // on destroy, while the `dt` namespaced event is the one we are // listening for $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { if ( settings !== ctx ) { // need to check this this is the host return; // table, not a nested one } var colIdx = column.idx; cell .removeClass( column.sSortingClass +' '+ classes.sSortAsc +' '+ classes.sSortDesc ) .addClass( columns[ colIdx ] == 'asc' ? classes.sSortAsc : columns[ colIdx ] == 'desc' ? classes.sSortDesc : column.sSortingClass ); } ); }, jqueryui: function ( settings, cell, column, classes ) { $('<div/>') .addClass( classes.sSortJUIWrapper ) .append( cell.contents() ) .append( $('<span/>') .addClass( classes.sSortIcon+' '+column.sSortingClassJUI ) ) .appendTo( cell ); // Attach a sort listener to update on sort $(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) { if ( settings !== ctx ) { return; } var colIdx = column.idx; cell .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) .addClass( columns[ colIdx ] == 'asc' ? classes.sSortAsc : columns[ colIdx ] == 'desc' ? classes.sSortDesc : column.sSortingClass ); cell .find( 'span.'+classes.sSortIcon ) .removeClass( classes.sSortJUIAsc +" "+ classes.sSortJUIDesc +" "+ classes.sSortJUI +" "+ classes.sSortJUIAscAllowed +" "+ classes.sSortJUIDescAllowed ) .addClass( columns[ colIdx ] == 'asc' ? classes.sSortJUIAsc : columns[ colIdx ] == 'desc' ? classes.sSortJUIDesc : column.sSortingClassJUI ); } ); } } } ); /* * Public helper functions. These aren't used internally by DataTables, or * called by any of the options passed into DataTables, but they can be used * externally by developers working with DataTables. They are helper functions * to make working with DataTables a little bit easier. */ var __htmlEscapeEntities = function ( d ) { return typeof d === 'string' ? d.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"') : d; }; /** * Helpers for `columns.render`. * * The options defined here can be used with the `columns.render` initialisation * option to provide a display renderer. The following functions are defined: * * * `number` - Will format numeric data (defined by `columns.data`) for * display, retaining the original unformatted data for sorting and filtering. * It takes 5 parameters: * * `string` - Thousands grouping separator * * `string` - Decimal point indicator * * `integer` - Number of decimal points to show * * `string` (optional) - Prefix. * * `string` (optional) - Postfix (/suffix). * * `text` - Escape HTML to help prevent XSS attacks. It has no optional * parameters. * * @example * // Column definition using the number renderer * { * data: "salary", * render: $.fn.dataTable.render.number( '\'', '.', 0, '$' ) * } * * @namespace */ DataTable.render = { number: function ( thousands, decimal, precision, prefix, postfix ) { return { display: function ( d ) { if ( typeof d !== 'number' && typeof d !== 'string' ) { return d; } var negative = d < 0 ? '-' : ''; var flo = parseFloat( d ); // If NaN then there isn't much formatting that we can do - just // return immediately, escaping any HTML (this was supposed to // be a number after all) if ( isNaN( flo ) ) { return __htmlEscapeEntities( d ); } flo = flo.toFixed( precision ); d = Math.abs( flo ); var intPart = parseInt( d, 10 ); var floatPart = precision ? decimal+(d - intPart).toFixed( precision ).substring( 2 ): ''; return negative + (prefix||'') + intPart.toString().replace( /\B(?=(\d{3})+(?!\d))/g, thousands ) + floatPart + (postfix||''); } }; }, text: function () { return { display: __htmlEscapeEntities }; } }; /* * This is really a good bit rubbish this method of exposing the internal methods * publicly... - To be fixed in 2.0 using methods on the prototype */ /** * Create a wrapper function for exporting an internal functions to an external API. * @param {string} fn API function name * @returns {function} wrapped function * @memberof DataTable#internal */ function _fnExternApiFunc (fn) { return function() { var args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat( Array.prototype.slice.call(arguments) ); return DataTable.ext.internal[fn].apply( this, args ); }; } /** * Reference to internal functions for use by plug-in developers. Note that * these methods are references to internal functions and are considered to be * private. If you use these methods, be aware that they are liable to change * between versions. * @namespace */ $.extend( DataTable.ext.internal, { _fnExternApiFunc: _fnExternApiFunc, _fnBuildAjax: _fnBuildAjax, _fnAjaxUpdate: _fnAjaxUpdate, _fnAjaxParameters: _fnAjaxParameters, _fnAjaxUpdateDraw: _fnAjaxUpdateDraw, _fnAjaxDataSrc: _fnAjaxDataSrc, _fnAddColumn: _fnAddColumn, _fnColumnOptions: _fnColumnOptions, _fnAdjustColumnSizing: _fnAdjustColumnSizing, _fnVisibleToColumnIndex: _fnVisibleToColumnIndex, _fnColumnIndexToVisible: _fnColumnIndexToVisible, _fnVisbleColumns: _fnVisbleColumns, _fnGetColumns: _fnGetColumns, _fnColumnTypes: _fnColumnTypes, _fnApplyColumnDefs: _fnApplyColumnDefs, _fnHungarianMap: _fnHungarianMap, _fnCamelToHungarian: _fnCamelToHungarian, _fnLanguageCompat: _fnLanguageCompat, _fnBrowserDetect: _fnBrowserDetect, _fnAddData: _fnAddData, _fnAddTr: _fnAddTr, _fnNodeToDataIndex: _fnNodeToDataIndex, _fnNodeToColumnIndex: _fnNodeToColumnIndex, _fnGetCellData: _fnGetCellData, _fnSetCellData: _fnSetCellData, _fnSplitObjNotation: _fnSplitObjNotation, _fnGetObjectDataFn: _fnGetObjectDataFn, _fnSetObjectDataFn: _fnSetObjectDataFn, _fnGetDataMaster: _fnGetDataMaster, _fnClearTable: _fnClearTable, _fnDeleteIndex: _fnDeleteIndex, _fnInvalidate: _fnInvalidate, _fnGetRowElements: _fnGetRowElements, _fnCreateTr: _fnCreateTr, _fnBuildHead: _fnBuildHead, _fnDrawHead: _fnDrawHead, _fnDraw: _fnDraw, _fnReDraw: _fnReDraw, _fnAddOptionsHtml: _fnAddOptionsHtml, _fnDetectHeader: _fnDetectHeader, _fnGetUniqueThs: _fnGetUniqueThs, _fnFeatureHtmlFilter: _fnFeatureHtmlFilter, _fnFilterComplete: _fnFilterComplete, _fnFilterCustom: _fnFilterCustom, _fnFilterColumn: _fnFilterColumn, _fnFilter: _fnFilter, _fnFilterCreateSearch: _fnFilterCreateSearch, _fnEscapeRegex: _fnEscapeRegex, _fnFilterData: _fnFilterData, _fnFeatureHtmlInfo: _fnFeatureHtmlInfo, _fnUpdateInfo: _fnUpdateInfo, _fnInfoMacros: _fnInfoMacros, _fnInitialise: _fnInitialise, _fnInitComplete: _fnInitComplete, _fnLengthChange: _fnLengthChange, _fnFeatureHtmlLength: _fnFeatureHtmlLength, _fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate, _fnPageChange: _fnPageChange, _fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing, _fnProcessingDisplay: _fnProcessingDisplay, _fnFeatureHtmlTable: _fnFeatureHtmlTable, _fnScrollDraw: _fnScrollDraw, _fnApplyToChildren: _fnApplyToChildren, _fnCalculateColumnWidths: _fnCalculateColumnWidths, _fnThrottle: _fnThrottle, _fnConvertToWidth: _fnConvertToWidth, _fnGetWidestNode: _fnGetWidestNode, _fnGetMaxLenString: _fnGetMaxLenString, _fnStringToCss: _fnStringToCss, _fnSortFlatten: _fnSortFlatten, _fnSort: _fnSort, _fnSortAria: _fnSortAria, _fnSortListener: _fnSortListener, _fnSortAttachListener: _fnSortAttachListener, _fnSortingClasses: _fnSortingClasses, _fnSortData: _fnSortData, _fnSaveState: _fnSaveState, _fnLoadState: _fnLoadState, _fnSettingsFromNode: _fnSettingsFromNode, _fnLog: _fnLog, _fnMap: _fnMap, _fnBindAction: _fnBindAction, _fnCallbackReg: _fnCallbackReg, _fnCallbackFire: _fnCallbackFire, _fnLengthOverflow: _fnLengthOverflow, _fnRenderer: _fnRenderer, _fnDataSource: _fnDataSource, _fnRowAttributes: _fnRowAttributes, _fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant // in 1.10, so this dead-end function is // added to prevent errors } ); // jQuery access $.fn.dataTable = DataTable; // Provide access to the host jQuery object (circular reference) DataTable.$ = $; // Legacy aliases $.fn.dataTableSettings = DataTable.settings; $.fn.dataTableExt = DataTable.ext; // With a capital `D` we return a DataTables API instance rather than a // jQuery object $.fn.DataTable = function ( opts ) { return $(this).dataTable( opts ).api(); }; // All properties that are available to $.fn.dataTable should also be // available on $.fn.DataTable $.each( DataTable, function ( prop, val ) { $.fn.DataTable[ prop ] = val; } ); // Information about events fired by DataTables - for documentation. /** * Draw event, fired whenever the table is redrawn on the page, at the same * point as fnDrawCallback. This may be useful for binding events or * performing calculations when the table is altered at all. * @name DataTable#draw.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} */ /** * Search event, fired when the searching applied to the table (using the * built-in global search, or column filters) is altered. * @name DataTable#search.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} */ /** * Page change event, fired when the paging of the table is altered. * @name DataTable#page.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} */ /** * Order event, fired when the ordering applied to the table is altered. * @name DataTable#order.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} */ /** * DataTables initialisation complete event, fired when the table is fully * drawn, including Ajax data loaded, if Ajax data is required. * @name DataTable#init.dt * @event * @param {event} e jQuery event object * @param {object} oSettings DataTables settings object * @param {object} json The JSON object request from the server - only * present if client-side Ajax sourced data is used</li></ol> */ /** * State save event, fired when the table has changed state a new state save * is required. This event allows modification of the state saving object * prior to actually doing the save, including addition or other state * properties (for plug-ins) or modification of a DataTables core property. * @name DataTable#stateSaveParams.dt * @event * @param {event} e jQuery event object * @param {object} oSettings DataTables settings object * @param {object} json The state information to be saved */ /** * State load event, fired when the table is loading state from the stored * data, but prior to the settings object being modified by the saved state * - allowing modification of the saved state is required or loading of * state for a plug-in. * @name DataTable#stateLoadParams.dt * @event * @param {event} e jQuery event object * @param {object} oSettings DataTables settings object * @param {object} json The saved state information */ /** * State loaded event, fired when state has been loaded from stored data and * the settings object has been modified by the loaded data. * @name DataTable#stateLoaded.dt * @event * @param {event} e jQuery event object * @param {object} oSettings DataTables settings object * @param {object} json The saved state information */ /** * Processing event, fired when DataTables is doing some kind of processing * (be it, order, searcg or anything else). It can be used to indicate to * the end user that there is something happening, or that something has * finished. * @name DataTable#processing.dt * @event * @param {event} e jQuery event object * @param {object} oSettings DataTables settings object * @param {boolean} bShow Flag for if DataTables is doing processing or not */ /** * Ajax (XHR) event, fired whenever an Ajax request is completed from a * request to made to the server for new data. This event is called before * DataTables processed the returned data, so it can also be used to pre- * process the data returned from the server, if needed. * * Note that this trigger is called in `fnServerData`, if you override * `fnServerData` and which to use this event, you need to trigger it in you * success function. * @name DataTable#xhr.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} * @param {object} json JSON returned from the server * * @example * // Use a custom property returned from the server in another DOM element * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { * $('#status').html( json.status ); * } ); * * @example * // Pre-process the data returned from the server * $('#table').dataTable().on('xhr.dt', function (e, settings, json) { * for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) { * json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two; * } * // Note no return - manipulate the data directly in the JSON object. * } ); */ /** * Destroy event, fired when the DataTable is destroyed by calling fnDestroy * or passing the bDestroy:true parameter in the initialisation object. This * can be used to remove bound events, added DOM nodes, etc. * @name DataTable#destroy.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} */ /** * Page length change event, fired when number of records to show on each * page (the length) is changed. * @name DataTable#length.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} * @param {integer} len New length */ /** * Column sizing has changed. * @name DataTable#column-sizing.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} */ /** * Column visibility has changed. * @name DataTable#column-visibility.dt * @event * @param {event} e jQuery event object * @param {object} o DataTables settings object {@link DataTable.models.oSettings} * @param {int} column Column index * @param {bool} vis `false` if column now hidden, or `true` if visible */ return $.fn.dataTable; })); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.foundation.min.js 0000644 00000004062 15002261751 0022402 0 ustar 00 /*! DataTables Foundation integration ©2011-2015 SpryMedia Ltd - datatables.net/license */ (function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return d(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net")(a,b).$;return d(b,a,a.document)}:d(jQuery,window,document)})(function(d){var a=d.fn.dataTable,b=d('<meta class="foundation-mq"/>').appendTo("head");a.ext.foundationVersion=b.css("font-family").match(/small|medium|large/)?6:5;b.remove();d.extend(a.ext.classes, {sWrapper:"dataTables_wrapper dt-foundation",sProcessing:"dataTables_processing panel callout"});d.extend(!0,a.defaults,{dom:"<'row'<'small-6 columns'l><'small-6 columns'f>r>t<'row'<'small-6 columns'i><'small-6 columns'p>>",renderer:"foundation"});a.ext.renderer.pageButton.foundation=function(b,l,r,s,e,i){var m=new a.Api(b),t=b.oClasses,j=b.oLanguage.oPaginate,u=b.oLanguage.oAria.paginate||{},f,h,g,v=5===a.ext.foundationVersion,q=function(a,n){var k,o,p,c,l=function(a){a.preventDefault();!d(a.currentTarget).hasClass("unavailable")&& m.page()!=a.data.action&&m.page(a.data.action).draw("page")};k=0;for(o=n.length;k<o;k++)if(c=n[k],d.isArray(c))q(a,c);else{h=f="";g=null;switch(c){case "ellipsis":f="…";h="unavailable disabled";g=null;break;case "first":f=j.sFirst;h=c+(0<e?"":" unavailable disabled");g=0<e?"a":null;break;case "previous":f=j.sPrevious;h=c+(0<e?"":" unavailable disabled");g=0<e?"a":null;break;case "next":f=j.sNext;h=c+(e<i-1?"":" unavailable disabled");g=e<i-1?"a":null;break;case "last":f=j.sLast;h=c+(e<i-1? "":" unavailable disabled");g=e<i-1?"a":null;break;default:f=c+1,h=e===c?"current":"",g=e===c?null:"a"}v&&(g="a");f&&(p=d("<li>",{"class":t.sPageButton+" "+h,"aria-controls":b.sTableId,"aria-label":u[c],tabindex:b.iTabIndex,id:0===r&&"string"===typeof c?b.sTableId+"_"+c:null}).append(g?d("<"+g+"/>",{href:"#"}).html(f):f).appendTo(a),b.oApi._fnBindAction(p,{action:c},l))}};q(d(l).empty().html('<ul class="pagination"/>').children("ul"),s)};return a}); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/jquery.dataTables.min.js 0000644 00000237762 15002261751 0021572 0 ustar 00 /*! DataTables 1.10.16 ©2008-2017 SpryMedia Ltd - datatables.net/license */ (function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,G){E||(E=window);G||(G="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(G,E,E.document)}:h(jQuery,window,document)})(function(h,E,G,k){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()), d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function I(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),I(a[d],b[d],c)):b[d]=b[e]})}function Ca(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords"); a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX= a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&I(m.models.oSearch,a[b])}function eb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"===typeof b&&!h.isArray(b)&&(a.aDataSort=[b])}function fb(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute", top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function gb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!== e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Da(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:G.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig= e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(eb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"=== typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass= d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ea(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&ka(a);r(a,null,"column-sizing",[a])}function Z(a,b){var c=la(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c= la(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){var b=0;h.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==h(d.nTh).css("display")&&b++});return b}function la(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Fa(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,t;e=0;for(f=b.length;e<f;e++)if(l=b[e],t=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){t[i]=== k&&(t[i]=B(a,i,e,"type"));q=d[g](t[i],a);if(!q&&g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function hb(a,b,c,d){var e,f,g,j,i,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var q=n.targets!==k?n.targets:n.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Da(a);d(q[f],n)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j< i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&d(j,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function M(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ga(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ha(a,e);return M(a, c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});if(i===k)return a.iDrawError!=e&&null===j&&(J(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j&&d!==k)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function ib(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData, d,{settings:a,row:b,col:c})}function Ia(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function Q(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=Q(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a, b,f){var g,j;if(""!==f){j=Ia(f);for(var i=0,n=j.length;i<n;i++){f=j[i].match(ba);g=j[i].match(U);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");if(h.isArray(a)){i=0;for(n=a.length;i<n;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(U,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function R(a){if(h.isPlainObject(a))return R(a._); if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ia(e),f;f=e[e.length-1];for(var g,j,i=0,n=e.length-1;i<n;i++){g=e[i].match(ba);j=e[i].match(U);if(g){e[i]=e[i].replace(ba,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(n=d.length;j<n;j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(U, ""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(U))a[f.replace(U,"")](d);else a[f.replace(ba,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ja(a){return D(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild); c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ha(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Ka(a,e)}}function Ha(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,n,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],t=function(a,b){if("string"===typeof a){var c=a.indexOf("@"); -1!==c&&(c=a.substring(c+1),R(a)(d,b.getAttribute(c)))}},m=function(a){if(c===k||c===i)j=l[i],n=h.trim(a.innerHTML),j&&j._bAttrSrc?(R(j.mData._)(d,n),t(j.mData.sort,a),t(j.mData.type,a),t(j.mData.filter,a)):q?(j._setter||(j._setter=R(j.mData)),j._setter(d,n)):d[i]=n;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)m(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)m(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&R(a.rowId)(d,b);return{data:d,cells:e}} function Ga(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,n,l,q;if(null===e.nTr){j=c||G.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Ka(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){n=a.aoColumns[l];i=c?d[l]:G.createElement(n.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if((!c||n.mRender||n.mData!==l)&&(!h.isPlainObject(n.mData)||n.mData._!==l+".display"))i.innerHTML=B(a,b,l,"display");n.sClass&&(i.className+=" "+n.sClass);n.bVisible&&!c?j.appendChild(i):!n.bVisible&&c&&i.parentNode.removeChild(i); n.fnCreatedCell&&n.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}r(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function Ka(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?qa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function jb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0=== h("th, td",g).length,n=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),La(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Ma(a,"header")(a,d,f,n);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH); if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=i=1,j[d][f]===k){a.appendChild(g[d][f].cell); for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<i;c++)j[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",n)}}}}function N(a){var b=r(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart= -1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ga(a,l);l=q.nTr;if(0!==e){var t=d[c%e];q._sRowStripe!=t&&(h(l).removeClass(q._sRowStripe).addClass(t),q._sRowStripe=t)}r(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords: f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];r(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ja(a),g,n,i]);r(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ja(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));r(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function S(a,b){var c=a.oFeatures,d=c.bFilter; c.bSort&&lb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;N(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,k=0;k<f.length;k++){g=null;j=f[k];if("<"==j){i=h("<div/>")[0]; n=f[k+1];if("'"==n||'"'==n){l="";for(q=2;f[k+q]!=n;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=nb(a);else if("f"==j&&d.bFilter)g=ob(a);else if("r"==j&&d.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==j&&d.bInfo)g=rb(a);else if("p"== j&&d.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q<n;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function da(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,n,l,q,k;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan"); q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;n=g;k=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][n+j]={cell:e,unique:k},a[f+g].nTr=d}e=e.nextSibling}}}function ra(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function sa(a,b,c){r(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={}, e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance,i=function(b){r(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&J(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=r(a,null,"xhr", [a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?J(a,0,"Invalid JSON response",1):4===b.readyState&&J(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;r(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?(a.iDraw++,C(a, !0),sa(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,n,l,k=V(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var t=function(a,b){j.push({name:a,value:b})};t("sEcho",a.iDraw);t("iColumns",c);t("sColumns",D(b,"sName").join(","));t("iDisplayStart",g);t("iDisplayLength",i);var pa={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g], l=f[g],i="function"==typeof n.mData?"function":n.mData,pa.columns.push({data:i,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),t("mDataProp_"+g,i),d.bFilter&&(t("sSearch_"+g,l.sSearch),t("bRegex_"+g,l.bRegex),t("bSearchable_"+g,n.bSearchable)),d.bSort&&t("bSortable_"+g,n.bSortable);d.bFilter&&(t("sSearch",e.sSearch),t("bRegex",e.bRegex));d.bSort&&(h.each(k,function(a,b){pa.order.push({column:b.col,dir:b.dir});t("iSortCol_"+a,b.col);t("sSortDir_"+ a,b.dir)}),t("iSortingCols",k.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:pa:b?j:pa}function ub(a,b){var c=ta(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)M(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;N(a);a._bInitComplete|| ua(a,b);a.bAjaxDataGet=!0;C(a,!1)}function ta(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?Q(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value? "":this.value;b!=e.sSearch&&(fa(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,N(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Na(f,g):f).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==G.activeElement&&i.val(e.sSearch)}catch(d){}}); return b[0]}function fa(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Fa(a);if("ssp"!=y(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)wb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=!0;r(a,null,"search",[a])}function xb(a){for(var b= m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,n=c.length;i<n;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function wb(a,b,c,d,e,f){if(""!==b){for(var g=[],j=a.aiDisplay,d=Oa(b,d,e,f),e=0;e<j.length;e++)b=a.aoData[j[e]]._aFilterData[c],d.test(b)&&g.push(j[e]);a.aiDisplay=g}}function vb(a,b,c,d,e,f){var d=Oa(b,d,e,f),f=a.oPreviousSearch.sSearch,g=a.aiDisplayMaster,j,e=[];0!==m.ext.search.length&&(c=!0);j=yb(a);if(0>=b.length)a.aiDisplay= g.slice();else{if(j||c||f.length>b.length||0!==b.indexOf(f)||a.bSorted)a.aiDisplay=g.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)d.test(a.aoData[b[c]]._sFilterRow)&&e.push(b[c]);a.aiDisplay=e}}function Oa(a,b,c,d){a=b?a:Pa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function yb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1; d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(va.innerHTML=i,i=Wb?va.textContent:va.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex, caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Bb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+ 1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a, f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ga(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ea(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=v(f.sWidth));r(a,null,"preInit",[a]);S(a);e=y(a);if("ssp"!=e||g)"ajax"==e?sa(a,[],function(c){var f=ta(a,c);for(b=0;b<f.length;b++)M(a,f[b]);a.iInitDisplayStart= d;S(a);C(a,!1);ua(a,c)},a):(C(a,!1),ua(a))}else setTimeout(function(){ga(a)},200)}function ua(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);r(a,null,"plugin-init",[a,b]);r(a,"aoInitComplete","init",[a,b])}function Qa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Ra(a);r(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]= new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Qa(a,h(this).val());N(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){N(a)}, b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Ma(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Sa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1=== e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:J(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(r(a,null,"page",[a]),c&&N(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display", b?"block":"none");r(a,null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>", {"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:v(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left", 0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"), j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),m=t.children("table"),o=h(a.nTHead),p=h(a.nTable),s=p[0],r=s.style,u=a.nTFoot?h(a.nTFoot):null,x=a.oBrowser,T=x.bScrollOversize,Xb=D(a.aoColumns,"nTh"),O,K,P,w,Ta=[],y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};K=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==K&&a.scrollBarVis!==k)a.scrollBarVis=K,Y(a);else{a.scrollBarVis=K;p.children("thead, tfoot").remove(); u&&(P=u.clone().prependTo(p),O=u.find("tr"),P=P.find("tr"));w=o.clone().prependTo(p);o=o.find("tr");K=w.find("tr");w.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(ra(a,w),function(b,c){B=Z(a,b);c.style.width=a.aoColumns[B].sWidth});u&&H(function(a){a.style.width=""},P);f=p.outerWidth();if(""===c){r.width="100%";if(T&&(p.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(p.outerWidth()-b);f=p.outerWidth()}else""!==d&&(r.width= v(d),f=p.outerWidth());H(C,K);H(function(a){z.push(a.innerHTML);Ta.push(v(h(a).css("width")))},K);H(function(a,b){if(h.inArray(a,Xb)!==-1)a.style.width=Ta[b]},o);h(K).height(0);u&&(H(C,P),H(function(a){A.push(a.innerHTML);y.push(v(h(a).css("width")))},P),H(function(a,b){a.style.width=y[b]},O),h(P).height(0));H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+z[b]+"</div>";a.style.width=Ta[b]},K);u&&H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+ A[b]+"</div>";a.style.width=y[b]},P);if(p.outerWidth()<f){O=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(T&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(O-b);(""===c||""!==d)&&J(a,1,"Possible column misalignment",6)}else O="100%";q.width=v(O);g.width=v(O);u&&(a.nScrollFoot.style.width=v(O));!e&&T&&(q.height=v(s.offsetHeight+b));c=p.outerWidth();n[0].style.width=v(c);i.width=v(c);d=p.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+ (x.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=v(c),t[0].style.width=v(c),t[0].style[e]=d?b+"px":"0px");p.children("colgroup").insertBefore(p.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function H(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Ea(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll, e=d.sY,f=d.sX,g=d.sXInner,j=c.length,i=la(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,t=!1,m,o,p=a.oBrowser,d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)o=c[i[m]],null!==o.sWidth&&(o.sWidth=Db(o.sWidthOrig,k),t=!0);if(d||!t&&!f&&!e&&j==aa(a)&&j==n.length)for(m=0;m<j;m++)i=Z(a,m),null!==i&&(c[i].sWidth=v(n.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var s=h("<tr/>").appendTo(j.find("tbody")); j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=ra(a,j.find("thead")[0]);for(m=0;m<i.length;m++)o=c[i[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?v(o.sWidthOrig):"",o.sWidthOrig&&f&&h(n[m]).append(h("<div/>").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)t=i[m],o=c[t],h(Eb(a,t)).clone(!1).append(o.sContentPadding).appendTo(s);h("[name]", j).removeAttr("name");o=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(n[m]),g=k.outerWidth()-k.width(),k=p.bBounding?Math.ceil(n[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=v(k-g);b.style.width=v(e);o.remove()}l&&(b.style.width= v(l));if((l||f)&&!a._reszEvt)b=function(){h(E).on("resize.DT-"+a.sInstance,Na(function(){Y(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",v(a)).appendTo(b||G.body),d=c[0].offsetWidth;c.remove();return d}function Eb(a,b){var c=Fb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Fb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace(Yb, ""),c=c.replace(/ /g," "),c.length>d&&(d=c.length,e=f);return e}function v(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){i=n[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType|| "string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:n[a][1],index:n[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function lb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Fa(a);h=V(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Gb(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g= 0;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,o=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=o[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Hb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g, "");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Ua(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b, D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);S(a);"function"==typeof d&&d(a)}function La(a,b,c,d){var e=a.aoColumns[c];Va(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,d))})} function wa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=V(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Gb(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j], c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function xa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[d])}})};r(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a, b)}}function Ib(a,b,c){var d,e,f=a.aoColumns,b=function(b){if(b&&b.time){var g=r(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===h.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g)&&!(b.columns&&f.length!==b.columns.length))){a.oLoadedState=h.extend(!0,{},b);b.start!==k&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==k&&(a._iDisplayLength=b.length);b.order!==k&&(a.aaSorting=[],h.each(b.order,function(b,c){a.aaSorting.push(c[0]>=f.length?[0,c[1]]:c)}));b.search!== k&&h.extend(a.oPreviousSearch,Ab(b.search));if(b.columns){d=0;for(e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==k&&(f[d].bVisible=g.visible),g.search!==k&&h.extend(a.aoPreSearchCols[d],Ab(g.search))}r(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==k&&b(g)}else c()}function ya(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function J(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+ " - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)E.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&r(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Jb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e], h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Va(a,b,c){h(a).on("click.DT",b,function(b){a.blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function r(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+ ".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Ra(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ma(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ha(a,b){var c=[],c=Kb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0, c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return za(b,a)},"num-fmt":function(b){return za(b,a,Wa)},"html-num":function(b){return za(b,a,Aa)},"html-num-fmt":function(b){return za(b,a,Aa,Wa)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Lb(a){return function(){var b= [ya(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new s(ya(this[x.iApiIndex])):new s(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing= function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)}; this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase(); return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ya(this[x.iApiIndex])}; this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var e in m.ext.internal)e&&(this[e]=Lb(e));this.each(function(){var e={},g=1<d?Jb(e,a,!0): a,j=0,i,e=this.getAttribute("id"),n=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())J(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{db(l);eb(l.column);I(l,l,!0);I(l.column,l.column,!0);I(l,h.extend(g,q.data()));var t=m.settings,j=0;for(i=t.length;j<i;j++){var o=t[j];if(o.nTable==this||o.nTHead.parentNode==this||o.nTFoot&&o.nTFoot.parentNode==this){var s=g.bRetrieve!==k?g.bRetrieve:l.bRetrieve;if(c||s)return o.oInstance;if(g.bDestroy!==k?g.bDestroy:l.bDestroy){o.oInstance.fnDestroy(); break}else{J(o,0,"Cannot reinitialise DataTable",3);return}}if(o.sTableId==this.id){t.splice(j,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:e,sTableId:e});p.nTable=this;p.oApi=b.internal;p.oInit=g;t.push(p);p.oInstance=1===b.length?b:q.dataTable();db(g);g.oLanguage&&Ca(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=h.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]); g=Jb(h.extend(!0,{},l),g);F(p.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(p,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"], ["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);F(p.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(p.oLanguage,g,"fnInfoCallback");z(p,"aoDrawCallback",g.fnDrawCallback,"user");z(p,"aoServerParams",g.fnServerParams,"user");z(p,"aoStateSaveParams",g.fnStateSaveParams,"user");z(p,"aoStateLoadParams",g.fnStateLoadParams,"user");z(p,"aoStateLoaded",g.fnStateLoaded,"user");z(p,"aoRowCallback", g.fnRowCallback,"user");z(p,"aoRowCreatedCallback",g.fnCreatedRow,"user");z(p,"aoHeaderCallback",g.fnHeaderCallback,"user");z(p,"aoFooterCallback",g.fnFooterCallback,"user");z(p,"aoInitComplete",g.fnInitComplete,"user");z(p,"aoPreDrawCallback",g.fnPreDrawCallback,"user");p.rowIdFn=Q(g.rowId);fb(p);var u=p.oClasses;h.extend(u,m.ext.classes,g.oClasses);q.addClass(u.sTable);p.iInitDisplayStart===k&&(p.iInitDisplayStart=g.iDisplayStart,p._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(p.bDeferLoading= !0,e=h.isArray(g.iDeferLoading),p._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,p._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var v=p.oLanguage;h.extend(!0,v,g.oLanguage);v.sUrl&&(h.ajax({dataType:"json",url:v.sUrl,success:function(a){Ca(a);I(l.oLanguage,a);h.extend(true,v,a);ga(p)},error:function(){ga(p)}}),n=!0);null===g.asStripeClasses&&(p.asStripeClasses=[u.sStripeOdd,u.sStripeEven]);var e=p.asStripeClasses,x=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(e,function(a){return x.hasClass(a)}))&& (h("tbody tr",this).removeClass(e.join(" ")),p.asDestroyStripes=e.slice());e=[];t=this.getElementsByTagName("thead");0!==t.length&&(da(p.aoHeader,t[0]),e=ra(p));if(null===g.aoColumns){t=[];j=0;for(i=e.length;j<i;j++)t.push(null)}else t=g.aoColumns;j=0;for(i=t.length;j<i;j++)Da(p,e?e[j]:null);hb(p,g.aoColumnDefs,t,function(a,b){ja(p,a,b)});if(x.length){var w=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(x[0]).children("th, td").each(function(a,b){var c=p.aoColumns[a];if(c.mData=== a){var d=w(b,"sort")||w(b,"order"),e=w(b,"filter")||w(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ja(p,a)}}})}var T=p.oFeatures,e=function(){if(g.aaSorting===k){var a=p.aaSorting;j=0;for(i=a.length;j<i;j++)a[j][1]=p.aoColumns[j].asSorting[0]}wa(p);T.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=V(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});r(p,null,"order",[p,a,b]);Hb(p)}}); z(p,"aoDrawCallback",function(){(p.bSorted||y(p)==="ssp"||T.bDeferRender)&&wa(p)},"sc");var a=q.children("caption").each(function(){this._captionSide=h(this).css("caption-side")}),b=q.children("thead");b.length===0&&(b=h("<thead/>").appendTo(q));p.nTHead=b[0];b=q.children("tbody");b.length===0&&(b=h("<tbody/>").appendTo(q));p.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(p.oScroll.sX!==""||p.oScroll.sY!==""))b=h("<tfoot/>").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(u.sNoFooter); else if(b.length>0){p.nTFoot=b[0];da(p.aoFooter,p.nTFoot)}if(g.aaData)for(j=0;j<g.aaData.length;j++)M(p,g.aaData[j]);else(p.bDeferLoading||y(p)=="dom")&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=true;n===false&&ga(p)};g.bStateSave?(T.bStateSave=!0,z(p,"aoDrawCallback",xa,"state_save"),Ib(p,g,e)):e()}});b=null;return this},x,s,o,u,Xa={},Mb=/[\r\n]/g,Aa=/<.*?>/g,Zb=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,$b=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)", "g"),Wa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,L=function(a){return!a||!0===a||"-"===a?!0:!1},Nb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Ob=function(a,b){Xa[b]||(Xa[b]=RegExp(Pa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var d="string"===typeof a;if(L(a))return!0;b&&d&&(a=Ob(a,b));c&&d&&(a=a.replace(Wa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Pb=function(a,b,c){return L(a)?!0:!(L(a)||"string"=== typeof a)?null:Ya(a.replace(Aa,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ia=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},W=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Qb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]); return b},qa=function(a){var b;a:{if(!(2>a.length)){b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];var e=a.length,f,g=0,d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b};m.util={throttle:function(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,j=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,j)},c)):(d=g,a.apply(b,j))}},escapeRegex:function(a){return a.replace($b, "\\$1")}};var A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,U=/\(\)$/,Pa=m.util.escapeRegex,va=h("<div>")[0],Wb=va.textContent!==k,Yb=/<.*?>/g,Na=m.util.throttle,Rb=[],w=Array.prototype,ac=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};s=function(a,b){if(!(this instanceof s))return new s(a,b);var c=[],d=function(a){(a=ac(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=qa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};s.extend(this,this,Rb)};m.Api=s;h.extend(s.prototype,{any:function(){return 0!==this.count()},concat:w.concat,context:[],count:function(){return this.flatten().length}, each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new s(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new s(this.context,b)},flatten:function(){var a=[];return new s(this.context,a.concat.apply(a,this.toArray()))},join:w.join,indexOf:w.indexOf||function(a,b){for(var c=b||0, d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,j,h,n,l=this.context,m,o,u=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(j=l.length;g<j;g++){var r=new s(l[g]);if("table"===b)f=c.call(r,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(r,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){o=this[g];"column-rows"===b&&(m=Ba(l[g],u.opts));h=0;for(n=o.length;h<n;h++)f=o[h],f= "cell"===b?c.call(r,l[g],f.row,f.column,g,h):c.call(r,l[g],f,g,h,m),f!==k&&e.push(f)}}return e.length||d?(a=new s(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=u.rows,b.cols=u.cols,b.opts=u.opts,a):this},lastIndexOf:w.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(w.map)b=w.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new s(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})}, pop:w.pop,push:w.push,reduce:w.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:w.reduceRight||function(a,b){return gb(this,a,b,this.length-1,-1,-1)},reverse:w.reverse,selector:null,shift:w.shift,slice:function(){return new s(this.context,this)},sort:w.sort,splice:w.splice,toArray:function(){return w.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new s(this.context,qa(this))},unshift:w.unshift});s.extend=function(a, b,c){if(c.length&&b&&(b instanceof s||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);s.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,s.extend(a,b[f.name],f.propExt)}};s.register=o=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<d;c++)s.register(a[c],b);else for(var e=a.split("."),f=Rb,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!== e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var n=f.length;i<n;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};s.registerPlural=u=function(a,b,c){s.register(a,c);s.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof s?a.length?h.isArray(a[0])?new s(a.context,a[0]):a[0]:k:a})};o("tables()",function(a){var b;if(a){b=s;var c=this.context;if("number"=== typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});o("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new s(b[0]):a});u("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});u("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});u("tables().header()", "table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});u("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});u("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});o("draw()",function(a){return this.iterator("table",function(b){"page"===a?N(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),S(b,!1===a))})});o("page()",function(a){return a=== k?this.page.info().page:this.iterator("table",function(b){Sa(b,a)})});o("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});o("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength: k:this.iterator("table",function(b){Qa(b,a)})});var Sb=function(a,b,c){if(c){var d=new s(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))S(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();sa(a,[],function(c){na(a);for(var c=ta(a,c),d=0,e=c.length;d<e;d++)M(a,c[d]);S(a,b);C(a,!1)})}};o("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});o("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});o("ajax.reload()",function(a, b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});o("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});o("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});var Za=function(a,b,c,d,e){var f=[],g,j,i,n,l,m;i=typeof b;if(!b||"string"===i||"function"=== i||b.length===k)b=[b];i=0;for(n=b.length;i<n;i++){j=b[i]&&b[i].split&&!b[i].match(/[\[\(:]/)?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=x.selector[a];if(a.length){i=0;for(n=a.length;i<n;i++)f=a[i](d,e,f)}return qa(f)},$a=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]= a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ba=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:W(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c< d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};o("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b,f;return Za("row",a,function(a){var b=Nb(a);if(b!==null&&!e)return[b];f||(f=Ba(c,e));if(b!==null&&h.inArray(b,f)!==-1)return[b];if(a===null||a===k||a==="")return f;if(typeof a==="function")return h.map(f,function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null}); b=Qb(ia(c.aoData,f,"nTr"));if(a.nodeName){if(a._DT_RowIndex!==k)return[a._DT_RowIndex];if(a._DT_CellIndex)return[a._DT_CellIndex.row];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){var i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});o("rows().nodes()",function(){return this.iterator("row",function(a, b){return a.aoData[b].nTr||k},1)});o("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});u("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});u("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ca(b,c,a)})});u("rows().indexes()","row().index()",function(){return this.iterator("row",function(a, b){return b},1)});u("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new s(c,b)});u("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,n,l;e.splice(c,1);g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(n=l.length;i< n;i++)l[i]._DT_CellIndex.row=g}oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Ra(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});o("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(M(b,c));return h},1),c=this.rows(-1); c.pop();h.merge(c,b);return c});o("row()",function(a,b){return ab(this.rows(a,b))});o("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});o("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});o("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&& "TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:M(b,a)});return this.row(b[0])});var bb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Tb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new s(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g, "_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&bb(f,c)}))}}};o("row().child()",function(a,b){var c=this.context; if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.detach();c._details=h(e);c._detailsShow&& c._details.insertAfter(c.nTr)}return this});o(["row().child.show()","row().child().show()"],function(){Tb(this,!0);return this});o(["row().child.hide()","row().child().hide()"],function(){Tb(this,!1);return this});o(["row().child.remove()","row().child().remove()"],function(){bb(this);return this});o("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var bc=/^([^:]+):(name|visIdx|visible)$/,Ub=function(a,b,c,d,e){for(var c= [],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};o("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return Za("column",e,function(a){var b=Nb(a);if(a==="")return W(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Ba(c,f);return h.map(g,function(b,f){return a(f,Ub(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(bc):"";if(k)switch(k[2]){case "visIdx":case "visible":b= parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});u("columns().header()", "column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});u("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});u("columns().data()","column().data()",function(){return this.iterator("column-rows",Ub,1)});u("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});u("columns().cache()","column().cache()", function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});u("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ia(a.aoData,e,"anCells",b)},1)});u("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m= h.inArray(!0,D(f,"bVisible"),c+1);i=0;for(n=j.length;i<n;i++)l=j[i].nTr,f=j[i].anCells,l&&l.insertBefore(f[c],f[m]||null)}else h(D(b.aoData,"anCells",c)).detach();g.bVisible=a;ea(b,b.aoHeader);ea(b,b.aoFooter);xa(b)}});a!==k&&(this.iterator("column",function(c,e){r(c,null,"column-visibility",[c,e,a,b])}),(b===k||b)&&this.columns.adjust());return c});u("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});o("columns.adjust()", function(){return this.iterator("table",function(a){Y(a)},1)});o("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return Z(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});o("column()",function(a,b){return ab(this.columns(a,b))});o("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=$a(c),f= b.aoData,g=Ba(b,e),j=Qb(ia(f,g,"anCells")),i=h([].concat.apply([],j)),l,n=b.aoColumns.length,m,o,u,s,r,v;return Za("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];o=0;for(u=g.length;o<u;o++){l=g[o];for(s=0;s<n;s++){r={row:l,column:s};if(c){v=f[l];a(r,B(b,l,s),v.anCells?v.anCells[s]:null)&&m.push(r)}else m.push(r)}}return m}if(h.isPlainObject(a))return[a];c=i.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length|| !a.nodeName)return c;v=h(a).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,n,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(n=d[b].length;i<n;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});u("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&& a.anCells?a.anCells[c]:k},1)});o("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});u("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});u("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});u("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a, b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});u("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ca(b,c,a,d)})});o("cell()",function(a,b,c){return ab(this.cells(a,b,c))});o("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;ib(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});o("order()",function(a,b){var c=this.context;if(a===k)return 0!== c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:a.length&&!h.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});o("order.listener()",function(a,b,c){return this.iterator("table",function(d){La(d,a,b,c)})});o("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});o(["columns().order()", "column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});o("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&fa(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});u("columns().search()","column().search()",function(a, b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),fa(e,e.oPreviousSearch,1))})});o("state()",function(){return this.context.length?this.context[0].oSavedState:null});o("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});o("state.loaded()",function(){return this.context.length? this.context[0].oLoadedState:null});o("state.save()",function(){return this.iterator("table",function(a){xa(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;if(a instanceof m.Api)return!0;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot? h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new s(c):c};m.camelToHungarian=I;o("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){o(b+"()",function(){var a=Array.prototype.slice.call(arguments); a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" ");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});o("clear()",function(){return this.iterator("table",function(a){na(a)})});o("settings()",function(){return new s(this.context,this.context)});o("init()",function(){var a=this.context;return a.length?a[0].oInit:null});o("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});o("destroy()",function(a){a=a|| !1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=!0;r(b,"aoDestroyCallback","destroy",[b]);a||(new s(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j)); b.aaSorting=[];b.aaSortingFixed=[];wa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(o=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%o])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c, 1)})});h.each(["column","row","cell"],function(a,b){o(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});o("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.16";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow= {nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null, sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+ "_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"}; X(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null, bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[], aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null, aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength, b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=x={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}}, order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd", sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead", sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Kb=m.ext.pager;h.extend(Kb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ha(a, b)]},simple_numbers:function(a,b){return["previous",ha(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ha(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ha(a,b),"last"]},_numbers:ha,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},n,l,m=0,o=function(b,d){var k,s,u,r,v=function(b){Sa(a,b.data.action,true)};k=0;for(s=d.length;k<s;k++){r=d[k];if(h.isArray(r)){u= h("<"+(r.DT_el||"div")+"/>").appendTo(b);o(u,r)}else{n=null;l="";switch(r){case "ellipsis":b.append('<span class="ellipsis">…</span>');break;case "first":n=j.sFirst;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":n=j.sPrevious;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":n=j.sNext;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":n=j.sLast;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:n=r+1;l=e===r?g.sPageButtonActive:""}if(n!==null){u=h("<a>",{"class":g.sPageButton+ " "+l,"aria-controls":a.sTableId,"aria-label":i[r],"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof r==="string"?a.sTableId+"_"+r:null}).html(n).appendTo(b);Va(u,{action:r},v);m++}}}},s;try{s=h(b).find(G.activeElement).data("dt-idx")}catch(u){}o(h(b).empty(),d);s!==k&&h(b).find("[data-dt-idx="+s+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!Zb.test(a))return null;var b=Date.parse(a); return null!==b&&!isNaN(b)||L(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c,!0)?"html-num-fmt"+c:null},function(a){return L(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return L(a)?a:"string"===typeof a?a.replace(Mb," ").replace(Aa,""):""},string:function(a){return L(a)? a:"string"===typeof a?a.replace(Mb," "):a}});var za=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Ob(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||-Infinity},"html-pre":function(a){return L(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return L(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a< b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});cb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b); h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Vb=function(a){return"string"===typeof a?a.replace(/</g,"<").replace(/>/g,">").replace(/"/g, """):a};m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Vb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Vb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Lb,_fnBuildAjax:sa,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub, _fnAjaxDataSrc:ta,_fnAddColumn:Da,_fnColumnOptions:ja,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Fa,_fnApplyColumnDefs:hb,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:Ca,_fnBrowserDetect:fb,_fnAddData:M,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:ib, _fnSplitObjNotation:Ia,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R,_fnGetDataMaster:Ja,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ha,_fnCreateTr:Ga,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:N,_fnReDraw:S,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:ra,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Oa,_fnEscapeRegex:Pa,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga, _fnInitComplete:ua,_fnLengthChange:Qa,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Sa,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:ka,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ea,_fnThrottle:Na,_fnConvertToWidth:Db,_fnGetWidestNode:Eb,_fnGetMaxLenString:Fb,_fnStringToCss:v,_fnSortFlatten:V,_fnSort:lb,_fnSortAria:Hb,_fnSortListener:Ua,_fnSortAttachListener:La,_fnSortingClasses:wa,_fnSortData:Gb,_fnSaveState:xa,_fnLoadState:Ib,_fnSettingsFromNode:ya, _fnLog:J,_fnMap:F,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:r,_fnLengthOverflow:Ra,_fnRenderer:Ma,_fnDataSource:y,_fnRowAttributes:Ka,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable}); AdminLTE/plugins/DataTables/DataTables-1.10.16/js/dataTables.jqueryui.js 0000644 00000010606 15002261751 0021330 0 ustar 00 /*! DataTables jQuery UI integration * ©2011-2014 SpryMedia Ltd - datatables.net/license */ /** * DataTables integration for jQuery UI. This requires jQuery UI and * DataTables 1.10 or newer. * * This file sets the defaults and adds options to DataTables to style its * controls using jQuery UI. See http://datatables.net/manual/styling/jqueryui * for further information. */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net')(root, $).$; } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; var sort_prefix = 'css_right ui-icon ui-icon-'; var toolbar_prefix = 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-'; /* Set the defaults for DataTables initialisation */ $.extend( true, DataTable.defaults, { dom: '<"'+toolbar_prefix+'tl ui-corner-tr"lfr>'+ 't'+ '<"'+toolbar_prefix+'bl ui-corner-br"ip>', renderer: 'jqueryui' } ); $.extend( DataTable.ext.classes, { "sWrapper": "dataTables_wrapper dt-jqueryui", /* Full numbers paging buttons */ "sPageButton": "fg-button ui-button ui-state-default", "sPageButtonActive": "ui-state-disabled", "sPageButtonDisabled": "ui-state-disabled", /* Features */ "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+ "ui-buttonset-multi paging_", /* Note that the type is postfixed */ /* Sorting */ "sSortAsc": "ui-state-default sorting_asc", "sSortDesc": "ui-state-default sorting_desc", "sSortable": "ui-state-default sorting", "sSortableAsc": "ui-state-default sorting_asc_disabled", "sSortableDesc": "ui-state-default sorting_desc_disabled", "sSortableNone": "ui-state-default sorting_disabled", "sSortIcon": "DataTables_sort_icon", /* Scrolling */ "sScrollHead": "dataTables_scrollHead "+"ui-state-default", "sScrollFoot": "dataTables_scrollFoot "+"ui-state-default", /* Misc */ "sHeaderTH": "ui-state-default", "sFooterTH": "ui-state-default" } ); DataTable.ext.renderer.header.jqueryui = function ( settings, cell, column, classes ) { // Calculate what the unsorted class should be var noSortAppliedClass = sort_prefix+'caret-2-n-s'; var asc = $.inArray('asc', column.asSorting) !== -1; var desc = $.inArray('desc', column.asSorting) !== -1; if ( !column.bSortable || (!asc && !desc) ) { noSortAppliedClass = ''; } else if ( asc && !desc ) { noSortAppliedClass = sort_prefix+'caret-1-n'; } else if ( !asc && desc ) { noSortAppliedClass = sort_prefix+'caret-1-s'; } // Setup the DOM structure $('<div/>') .addClass( 'DataTables_sort_wrapper' ) .append( cell.contents() ) .append( $('<span/>') .addClass( classes.sSortIcon+' '+noSortAppliedClass ) ) .appendTo( cell ); // Attach a sort listener to update on sort $(settings.nTable).on( 'order.dt', function ( e, ctx, sorting, columns ) { if ( settings !== ctx ) { return; } var colIdx = column.idx; cell .removeClass( classes.sSortAsc +" "+classes.sSortDesc ) .addClass( columns[ colIdx ] == 'asc' ? classes.sSortAsc : columns[ colIdx ] == 'desc' ? classes.sSortDesc : column.sSortingClass ); cell .find( 'span.'+classes.sSortIcon ) .removeClass( sort_prefix+'triangle-1-n' +" "+ sort_prefix+'triangle-1-s' +" "+ sort_prefix+'caret-2-n-s' +" "+ sort_prefix+'caret-1-n' +" "+ sort_prefix+'caret-1-s' ) .addClass( columns[ colIdx ] == 'asc' ? sort_prefix+'triangle-1-n' : columns[ colIdx ] == 'desc' ? sort_prefix+'triangle-1-s' : noSortAppliedClass ); } ); }; /* * TableTools jQuery UI compatibility * Required TableTools 2.1+ */ if ( DataTable.TableTools ) { $.extend( true, DataTable.TableTools.classes, { "container": "DTTT_container ui-buttonset ui-buttonset-multi", "buttons": { "normal": "DTTT_button ui-button ui-state-default" }, "collection": { "container": "DTTT_collection ui-buttonset ui-buttonset-multi" } } ); } return DataTable; })); AdminLTE/plugins/DataTables/DataTables-1.10.16/images/sort_desc.png 0000644 00000000236 15002261751 0020374 0 ustar 00 �PNG IHDR rP6� eIDAT8�c`�`������@���c� �DRc�@��ļ����?�����*#OD3l.H�ܰS��P����� Ŀ���1����k�O W=l-� ѻ IEND�B`� AdminLTE/plugins/DataTables/DataTables-1.10.16/images/sort_desc_disabled.png 0000644 00000000222 15002261751 0022216 0 ustar 00 �PNG IHDR �Y�G YIDAT(�c`� ܉����w8�y'�2�;;��}wxq�gs�Tѻ;���e�3�l�F|�S�s���-Bɾ��N)a��ݙp���a s�Bq��( IEND�B`� AdminLTE/plugins/DataTables/DataTables-1.10.16/images/sort_asc_disabled.png 0000644 00000000224 15002261751 0022050 0 ustar 00 �PNG IHDR �Y�G [IDAT(�c`�)��ug�6��J��MH�֝�w�߹}G�"�;s��@p�F��#*�t��"�;���@p�v����މd� ��B�� R IEND�B`� AdminLTE/plugins/DataTables/DataTables-1.10.16/images/sort_asc.png 0000644 00000000240 15002261751 0020217 0 ustar 00 �PNG IHDR rP6� gIDAT8�c`����.O b6jV Ŀ�8�R����1���@�L�A�@<jO��c�#�C3�ېj/�C3�w 1;)�%�O ����#F�(h �zl-=�H� IEND�B`� AdminLTE/plugins/DataTables/DataTables-1.10.16/images/sort_both.png 0000644 00000000311 15002261751 0020404 0 ustar 00 �PNG IHDR �Y�G �IDAT(ϵ�1@@��ՐH�B��P����C�"�N���h6"bw 1�~y�y�:Ĵ�:k8�5�1#L�>�#BG�f�e+�%� �@��*v�kw�O�����E��FW^�j�B�뭳���f)�L�=Rs����_��(���>i* IEND�B`� AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.bootstrap4.css 0000644 00000003547 15002261751 0021175 0 ustar 00 div.dt-autofill-handle { position: absolute; height: 8px; width: 8px; z-index: 102; box-sizing: border-box; border: 1px solid #0275d8; background: #0275d8; } div.dt-autofill-select { position: absolute; z-index: 1001; background-color: #0275d8; background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); } div.dt-autofill-select.top, div.dt-autofill-select.bottom { height: 3px; margin-top: -1px; } div.dt-autofill-select.left, div.dt-autofill-select.right { width: 3px; margin-left: -1px; } div.dt-autofill-list { position: fixed; top: 50%; left: 50%; width: 500px; margin-left: -250px; background-color: white; border-radius: 6px; box-shadow: 0 0 5px #555; border: 2px solid #444; z-index: 11; box-sizing: border-box; padding: 1.5em 2em; } div.dt-autofill-list ul { display: table; margin: 0; padding: 0; list-style: none; width: 100%; } div.dt-autofill-list ul li { display: table-row; } div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button { border-bottom: none; } div.dt-autofill-list ul li:hover { background-color: #f6f6f6; } div.dt-autofill-list div.dt-autofill-question { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-list div.dt-autofill-question input[type=number] { padding: 6px; width: 30px; margin: -2px 0; } div.dt-autofill-list div.dt-autofill-button { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); z-index: 10; } AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.jqueryui.min.css 0000644 00000003253 15002261751 0021525 0 ustar 00 div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #316ad1;background:linear-gradient(to bottom, #abcffb 0%, #4989de 100%)}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#4989de;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list button{padding:0.35em 1em} AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.foundation.css 0000644 00000003625 15002261751 0021237 0 ustar 00 div.dt-autofill-handle { position: absolute; height: 8px; width: 8px; z-index: 102; box-sizing: border-box; border: 1px solid #008CBA; background: #008CBA; } div.dt-autofill-select { position: absolute; z-index: 1001; background-color: #008CBA; background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); } div.dt-autofill-select.top, div.dt-autofill-select.bottom { height: 3px; margin-top: -1px; } div.dt-autofill-select.left, div.dt-autofill-select.right { width: 3px; margin-left: -1px; } div.dt-autofill-list { position: fixed; top: 50%; left: 50%; width: 500px; margin-left: -250px; background-color: white; border-radius: 6px; box-shadow: 0 0 5px #555; border: 2px solid #444; z-index: 11; box-sizing: border-box; padding: 1.5em 2em; } div.dt-autofill-list ul { display: table; margin: 0; padding: 0; list-style: none; width: 100%; } div.dt-autofill-list ul li { display: table-row; } div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button { border-bottom: none; } div.dt-autofill-list ul li:hover { background-color: #f6f6f6; } div.dt-autofill-list div.dt-autofill-question { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-list div.dt-autofill-question input[type=number] { padding: 6px; width: 30px; margin: -2px 0; } div.dt-autofill-list div.dt-autofill-button { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); z-index: 10; } div.dt-autofill-list button { margin: 0; } AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.semanticui.css 0000644 00000003536 15002261751 0021233 0 ustar 00 div.dt-autofill-handle { position: absolute; height: 8px; width: 8px; z-index: 102; box-sizing: border-box; border: 1px solid #888; background: #888; } div.dt-autofill-select { position: absolute; z-index: 1001; background-color: #888; background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); } div.dt-autofill-select.top, div.dt-autofill-select.bottom { height: 3px; margin-top: -1px; } div.dt-autofill-select.left, div.dt-autofill-select.right { width: 3px; margin-left: -1px; } div.dt-autofill-list { position: fixed; top: 50%; left: 50%; width: 500px; margin-left: -250px; background-color: white; border-radius: 6px; box-shadow: 0 0 5px #555; border: 2px solid #444; z-index: 11; box-sizing: border-box; padding: 1.5em 2em; } div.dt-autofill-list ul { display: table; margin: 0; padding: 0; list-style: none; width: 100%; } div.dt-autofill-list ul li { display: table-row; } div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button { border-bottom: none; } div.dt-autofill-list ul li:hover { background-color: #f6f6f6; } div.dt-autofill-list div.dt-autofill-question { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-list div.dt-autofill-question input[type=number] { padding: 6px; width: 30px; margin: -2px 0; } div.dt-autofill-list div.dt-autofill-button { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); z-index: 10; } AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.bootstrap.min.css 0000644 00000003117 15002261751 0021664 0 ustar 00 div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #337ab7;background:#337ab7}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#337ab7;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10} AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.dataTables.css 0000644 00000004220 15002261751 0021125 0 ustar 00 div.dt-autofill-handle { position: absolute; height: 8px; width: 8px; z-index: 102; box-sizing: border-box; border: 1px solid #316ad1; background: linear-gradient(to bottom, #abcffb 0%, #4989de 100%); } div.dt-autofill-select { position: absolute; z-index: 1001; background-color: #4989de; background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); } div.dt-autofill-select.top, div.dt-autofill-select.bottom { height: 3px; margin-top: -1px; } div.dt-autofill-select.left, div.dt-autofill-select.right { width: 3px; margin-left: -1px; } div.dt-autofill-list { position: fixed; top: 50%; left: 50%; width: 500px; margin-left: -250px; background-color: white; border-radius: 6px; box-shadow: 0 0 5px #555; border: 2px solid #444; z-index: 11; box-sizing: border-box; padding: 1.5em 2em; } div.dt-autofill-list ul { display: table; margin: 0; padding: 0; list-style: none; width: 100%; } div.dt-autofill-list ul li { display: table-row; } div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button { border-bottom: none; } div.dt-autofill-list ul li:hover { background-color: #f6f6f6; } div.dt-autofill-list div.dt-autofill-question { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-list div.dt-autofill-question input[type=number] { padding: 6px; width: 30px; margin: -2px 0; } div.dt-autofill-list div.dt-autofill-button { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-list div.dt-autofill-button button { color: white; margin: 0; padding: 6px 12px; text-align: center; border: 1px solid #2e6da4; background-color: #337ab7; border-radius: 4px; cursor: pointer; vertical-align: middle; } div.dt-autofill-background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); z-index: 10; } AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.bootstrap.css 0000644 00000003547 15002261751 0021111 0 ustar 00 div.dt-autofill-handle { position: absolute; height: 8px; width: 8px; z-index: 102; box-sizing: border-box; border: 1px solid #337ab7; background: #337ab7; } div.dt-autofill-select { position: absolute; z-index: 1001; background-color: #337ab7; background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); } div.dt-autofill-select.top, div.dt-autofill-select.bottom { height: 3px; margin-top: -1px; } div.dt-autofill-select.left, div.dt-autofill-select.right { width: 3px; margin-left: -1px; } div.dt-autofill-list { position: fixed; top: 50%; left: 50%; width: 500px; margin-left: -250px; background-color: white; border-radius: 6px; box-shadow: 0 0 5px #555; border: 2px solid #444; z-index: 11; box-sizing: border-box; padding: 1.5em 2em; } div.dt-autofill-list ul { display: table; margin: 0; padding: 0; list-style: none; width: 100%; } div.dt-autofill-list ul li { display: table-row; } div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button { border-bottom: none; } div.dt-autofill-list ul li:hover { background-color: #f6f6f6; } div.dt-autofill-list div.dt-autofill-question { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-list div.dt-autofill-question input[type=number] { padding: 6px; width: 30px; margin: -2px 0; } div.dt-autofill-list div.dt-autofill-button { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); z-index: 10; } AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.bootstrap4.min.css 0000644 00000003117 15002261751 0021750 0 ustar 00 div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #0275d8;background:#0275d8}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#0275d8;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10} AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.foundation.min.css 0000644 00000003164 15002261751 0022017 0 ustar 00 div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #008CBA;background:#008CBA}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#008CBA;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list button{margin:0} AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.jqueryui.css 0000644 00000003714 15002261751 0020745 0 ustar 00 div.dt-autofill-handle { position: absolute; height: 8px; width: 8px; z-index: 102; box-sizing: border-box; border: 1px solid #316ad1; background: linear-gradient(to bottom, #abcffb 0%, #4989de 100%); } div.dt-autofill-select { position: absolute; z-index: 1001; background-color: #4989de; background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px); } div.dt-autofill-select.top, div.dt-autofill-select.bottom { height: 3px; margin-top: -1px; } div.dt-autofill-select.left, div.dt-autofill-select.right { width: 3px; margin-left: -1px; } div.dt-autofill-list { position: fixed; top: 50%; left: 50%; width: 500px; margin-left: -250px; background-color: white; border-radius: 6px; box-shadow: 0 0 5px #555; border: 2px solid #444; z-index: 11; box-sizing: border-box; padding: 1.5em 2em; } div.dt-autofill-list ul { display: table; margin: 0; padding: 0; list-style: none; width: 100%; } div.dt-autofill-list ul li { display: table-row; } div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button { border-bottom: none; } div.dt-autofill-list ul li:hover { background-color: #f6f6f6; } div.dt-autofill-list div.dt-autofill-question { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-list div.dt-autofill-question input[type=number] { padding: 6px; width: 30px; margin: -2px 0; } div.dt-autofill-list div.dt-autofill-button { display: table-cell; padding: 0.5em 0; border-bottom: 1px solid #ccc; } div.dt-autofill-background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); z-index: 10; } div.dt-autofill-list button { padding: 0.35em 1em; } AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.semanticui.min.css 0000644 00000003106 15002261751 0022006 0 ustar 00 div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #888;background:#888}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#888;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10} AdminLTE/plugins/DataTables/AutoFill-2.2.2/css/autoFill.dataTables.min.css 0000644 00000003520 15002261751 0021711 0 ustar 00 div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #316ad1;background:linear-gradient(to bottom, #abcffb 0%, #4989de 100%)}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#4989de;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-button button{color:white;margin:0;padding:6px 12px;text-align:center;border:1px solid #2e6da4;background-color:#337ab7;border-radius:4px;cursor:pointer;vertical-align:middle}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10} AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.bootstrap4.js 0000644 00000001656 15002261751 0020644 0 ustar 00 /*! Bootstrap integration for DataTables' AutoFill * ©2015 SpryMedia Ltd - datatables.net/license */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net-bs4', 'datatables.net-autofill'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net-bs4')(root, $).$; } if ( ! $.fn.dataTable.AutoFill ) { require('datatables.net-autofill')(root, $); } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; DataTable.AutoFill.classes.btn = 'btn btn-primary'; return DataTable; })); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.jqueryui.js 0000644 00000001712 15002261751 0020411 0 ustar 00 /*! jQuery UI integration for DataTables' AutoFill * ©2015 SpryMedia Ltd - datatables.net/license */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net-jqui', 'datatables.net-autofill'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net-jqui')(root, $).$; } if ( ! $.fn.dataTable.AutoFill ) { require('datatables.net-autofill')(root, $); } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; DataTable.AutoFill.classes.btn = 'ui-button ui-state-default ui-corner-all'; return DataTable; })); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/dataTables.autoFill.js 0000644 00000070017 15002261751 0020604 0 ustar 00 /*! AutoFill 2.2.2 * ©2008-2017 SpryMedia Ltd - datatables.net/license */ /** * @summary AutoFill * @description Add Excel like click and drag auto-fill options to DataTables * @version 2.2.2 * @file dataTables.autoFill.js * @author SpryMedia Ltd (www.sprymedia.co.uk) * @contact www.sprymedia.co.uk/contact * @copyright Copyright 2010-2017 SpryMedia Ltd. * * This source file is free software, available under the following license: * MIT license - http://datatables.net/license/mit * * This source file is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. * * For details please refer to: http://www.datatables.net */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net')(root, $).$; } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; var _instance = 0; /** * AutoFill provides Excel like auto-fill features for a DataTable * * @class AutoFill * @constructor * @param {object} oTD DataTables settings object * @param {object} oConfig Configuration object for AutoFill */ var AutoFill = function( dt, opts ) { if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) { throw( "Warning: AutoFill requires DataTables 1.10.8 or greater"); } // User and defaults configuration object this.c = $.extend( true, {}, DataTable.defaults.autoFill, AutoFill.defaults, opts ); /** * @namespace Settings object which contains customisable information for AutoFill instance */ this.s = { /** @type {DataTable.Api} DataTables' API instance */ dt: new DataTable.Api( dt ), /** @type {String} Unique namespace for events attached to the document */ namespace: '.autoFill'+(_instance++), /** @type {Object} Cached dimension information for use in the mouse move event handler */ scroll: {}, /** @type {integer} Interval object used for smooth scrolling */ scrollInterval: null, handle: { height: 0, width: 0 }, /** * Enabled setting * @type {Boolean} */ enabled: false }; /** * @namespace Common and useful DOM elements for the class instance */ this.dom = { /** @type {jQuery} AutoFill handle */ handle: $('<div class="dt-autofill-handle"/>'), /** * @type {Object} Selected cells outline - Need to use 4 elements, * otherwise the mouse over if you back into the selected rectangle * will be over that element, rather than the cells! */ select: { top: $('<div class="dt-autofill-select top"/>'), right: $('<div class="dt-autofill-select right"/>'), bottom: $('<div class="dt-autofill-select bottom"/>'), left: $('<div class="dt-autofill-select left"/>') }, /** @type {jQuery} Fill type chooser background */ background: $('<div class="dt-autofill-background"/>'), /** @type {jQuery} Fill type chooser */ list: $('<div class="dt-autofill-list">'+this.s.dt.i18n('autoFill.info', '')+'<ul/></div>'), /** @type {jQuery} DataTables scrolling container */ dtScroll: null, /** @type {jQuery} Offset parent element */ offsetParent: null }; /* Constructor logic */ this._constructor(); }; $.extend( AutoFill.prototype, { /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Public methods (exposed via the DataTables API below) */ enabled: function () { return this.s.enabled; }, enable: function ( flag ) { var that = this; if ( flag === false ) { return this.disable(); } this.s.enabled = true; this._focusListener(); this.dom.handle.on( 'mousedown', function (e) { that._mousedown( e ); return false; } ); return this; }, disable: function () { this.s.enabled = false; this._focusListenerRemove(); return this; }, /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Constructor */ /** * Initialise the RowReorder instance * * @private */ _constructor: function () { var that = this; var dt = this.s.dt; var dtScroll = $('div.dataTables_scrollBody', this.s.dt.table().container()); // Make the instance accessible to the API dt.settings()[0].autoFill = this; if ( dtScroll.length ) { this.dom.dtScroll = dtScroll; // Need to scroll container to be the offset parent if ( dtScroll.css('position') === 'static' ) { dtScroll.css( 'position', 'relative' ); } } if ( this.c.enable !== false ) { this.enable(); } dt.on( 'destroy.autoFill', function () { that._focusListenerRemove(); } ); }, /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Private methods */ /** * Display the AutoFill drag handle by appending it to a table cell. This * is the opposite of the _detach method. * * @param {node} node TD/TH cell to insert the handle into * @private */ _attach: function ( node ) { var dt = this.s.dt; var idx = dt.cell( node ).index(); var handle = this.dom.handle; var handleDim = this.s.handle; if ( ! idx || dt.columns( this.c.columns ).indexes().indexOf( idx.column ) === -1 ) { this._detach(); return; } if ( ! this.dom.offsetParent ) { // We attach to the table's offset parent this.dom.offsetParent = $( dt.table().node() ).offsetParent(); } if ( ! handleDim.height || ! handleDim.width ) { // Append to document so we can get its size. Not expecting it to // change during the life time of the page handle.appendTo( 'body' ); handleDim.height = handle.outerHeight(); handleDim.width = handle.outerWidth(); } // Might need to go through multiple offset parents var offset = this._getPosition( node, this.dom.offsetParent ); this.dom.attachedTo = node; handle .css( { top: offset.top + node.offsetHeight - handleDim.height, left: offset.left + node.offsetWidth - handleDim.width } ) .appendTo( this.dom.offsetParent ); }, /** * Determine can the fill type should be. This can be automatic, or ask the * end user. * * @param {array} cells Information about the selected cells from the key * up function * @private */ _actionSelector: function ( cells ) { var that = this; var dt = this.s.dt; var actions = AutoFill.actions; var available = []; // "Ask" each plug-in if it wants to handle this data $.each( actions, function ( key, action ) { if ( action.available( dt, cells ) ) { available.push( key ); } } ); if ( available.length === 1 && this.c.alwaysAsk === false ) { // Only one action available - enact it immediately var result = actions[ available[0] ].execute( dt, cells ); this._update( result, cells ); } else { // Multiple actions available - ask the end user what they want to do var list = this.dom.list.children('ul').empty(); // Add a cancel option available.push( 'cancel' ); $.each( available, function ( i, name ) { list.append( $('<li/>') .append( '<div class="dt-autofill-question">'+ actions[ name ].option( dt, cells )+ '<div>' ) .append( $('<div class="dt-autofill-button">' ) .append( $('<button class="'+AutoFill.classes.btn+'">'+dt.i18n('autoFill.button', '>')+'</button>') .on( 'click', function () { var result = actions[ name ].execute( dt, cells, $(this).closest('li') ); that._update( result, cells ); that.dom.background.remove(); that.dom.list.remove(); } ) ) ) ); } ); this.dom.background.appendTo( 'body' ); this.dom.list.appendTo( 'body' ); this.dom.list.css( 'margin-top', this.dom.list.outerHeight()/2 * -1 ); } }, /** * Remove the AutoFill handle from the document * * @private */ _detach: function () { this.dom.attachedTo = null; this.dom.handle.detach(); }, /** * Draw the selection outline by calculating the range between the start * and end cells, then placing the highlighting elements to draw a rectangle * * @param {node} target End cell * @param {object} e Originating event * @private */ _drawSelection: function ( target, e ) { // Calculate boundary for start cell to this one var dt = this.s.dt; var start = this.s.start; var startCell = $(this.dom.start); var endCell = $(target); var end = { row: dt.rows( { page: 'current' } ).nodes().indexOf( endCell.parent()[0] ), column: endCell.index() }; var colIndx = dt.column.index( 'toData', end.column ); // Be sure that is a DataTables controlled cell if ( ! dt.cell( endCell ).any() ) { return; } // if target is not in the columns available - do nothing if ( dt.columns( this.c.columns ).indexes().indexOf( colIndx ) === -1 ) { return; } this.s.end = end; var top, bottom, left, right, height, width; top = start.row < end.row ? startCell : endCell; bottom = start.row < end.row ? endCell : startCell; left = start.column < end.column ? startCell : endCell; right = start.column < end.column ? endCell : startCell; top = this._getPosition( top ).top; left = this._getPosition( left ).left; height = this._getPosition( bottom ).top + bottom.outerHeight() - top; width = this._getPosition( right ).left + right.outerWidth() - left; var select = this.dom.select; select.top.css( { top: top, left: left, width: width } ); select.left.css( { top: top, left: left, height: height } ); select.bottom.css( { top: top + height, left: left, width: width } ); select.right.css( { top: top, left: left + width, height: height } ); }, /** * Use the Editor API to perform an update based on the new data for the * cells * * @param {array} cells Information about the selected cells from the key * up function * @private */ _editor: function ( cells ) { var dt = this.s.dt; var editor = this.c.editor; if ( ! editor ) { return; } // Build the object structure for Editor's multi-row editing var idValues = {}; var nodes = []; var fields = editor.fields(); for ( var i=0, ien=cells.length ; i<ien ; i++ ) { for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) { var cell = cells[i][j]; // Determine the field name for the cell being edited var col = dt.settings()[0].aoColumns[ cell.index.column ]; var fieldName = col.editField; if ( fieldName === undefined ) { var dataSrc = col.mData; // dataSrc is the `field.data` property, but we need to set // using the field name, so we need to translate from the // data to the name for ( var k=0, ken=fields.length ; k<ken ; k++ ) { var field = editor.field( fields[k] ); if ( field.dataSrc() === dataSrc ) { fieldName = field.name(); break; } } } if ( ! fieldName ) { throw 'Could not automatically determine field data. '+ 'Please see https://datatables.net/tn/11'; } if ( ! idValues[ fieldName ] ) { idValues[ fieldName ] = {}; } var id = dt.row( cell.index.row ).id(); idValues[ fieldName ][ id ] = cell.set; // Keep a list of cells so we can activate the bubble editing // with them nodes.push( cell.index ); } } // Perform the edit using bubble editing as it allows us to specify // the cells to be edited, rather than using full rows editor .bubble( nodes, false ) .multiSet( idValues ) .submit(); }, /** * Emit an event on the DataTable for listeners * * @param {string} name Event name * @param {array} args Event arguments * @private */ _emitEvent: function ( name, args ) { this.s.dt.iterator( 'table', function ( ctx, i ) { $(ctx.nTable).triggerHandler( name+'.dt', args ); } ); }, /** * Attach suitable listeners (based on the configuration) that will attach * and detach the AutoFill handle in the document. * * @private */ _focusListener: function () { var that = this; var dt = this.s.dt; var namespace = this.s.namespace; var focus = this.c.focus !== null ? this.c.focus : dt.init().keys || dt.settings()[0].keytable ? 'focus' : 'hover'; // All event listeners attached here are removed in the `destroy` // callback in the constructor if ( focus === 'focus' ) { dt .on( 'key-focus.autoFill', function ( e, dt, cell ) { that._attach( cell.node() ); } ) .on( 'key-blur.autoFill', function ( e, dt, cell ) { that._detach(); } ); } else if ( focus === 'click' ) { $(dt.table().body()).on( 'click'+namespace, 'td, th', function (e) { that._attach( this ); } ); $(document.body).on( 'click'+namespace, function (e) { if ( ! $(e.target).parents().filter( dt.table().body() ).length ) { that._detach(); } } ); } else { $(dt.table().body()) .on( 'mouseenter'+namespace, 'td, th', function (e) { that._attach( this ); } ) .on( 'mouseleave'+namespace, function (e) { if ( $(e.relatedTarget).hasClass('dt-autofill-handle') ) { return; } that._detach(); } ); } }, _focusListenerRemove: function () { var dt = this.s.dt; dt.off( '.autoFill' ); $(dt.table().body()).off( this.s.namespace ); $(document.body).off( this.s.namespace ); }, /** * Get the position of a node, relative to another, including any scrolling * offsets. * @param {Node} node Node to get the position of * @param {jQuery} targetParent Node to use as the parent * @return {object} Offset calculation * @private */ _getPosition: function ( node, targetParent ) { var currNode = $(node), currOffsetParent, position, top = 0, left = 0; if ( ! targetParent ) { targetParent = $( this.s.dt.table().node() ).offsetParent(); } do { position = currNode.position(); currOffsetParent = currNode.offsetParent(); top += position.top + currOffsetParent.scrollTop(); left += position.left + currOffsetParent.scrollLeft(); // Emergency fall back. Shouldn't happen, but just in case! if ( currNode.get(0).nodeName.toLowerCase() === 'body' ) { break; } currNode = currOffsetParent; // for next loop } while ( currOffsetParent.get(0) !== targetParent.get(0) ) return { top: top, left: left }; }, /** * Start mouse drag - selects the start cell * * @param {object} e Mouse down event * @private */ _mousedown: function ( e ) { var that = this; var dt = this.s.dt; this.dom.start = this.dom.attachedTo; this.s.start = { row: dt.rows( { page: 'current' } ).nodes().indexOf( $(this.dom.start).parent()[0] ), column: $(this.dom.start).index() }; $(document.body) .on( 'mousemove.autoFill', function (e) { that._mousemove( e ); } ) .on( 'mouseup.autoFill', function (e) { that._mouseup( e ); } ); var select = this.dom.select; var offsetParent = $( dt.table().node() ).offsetParent(); select.top.appendTo( offsetParent ); select.left.appendTo( offsetParent ); select.right.appendTo( offsetParent ); select.bottom.appendTo( offsetParent ); this._drawSelection( this.dom.start, e ); this.dom.handle.css( 'display', 'none' ); // Cache scrolling information so mouse move doesn't need to read. // This assumes that the window and DT scroller will not change size // during an AutoFill drag, which I think is a fair assumption var scrollWrapper = this.dom.dtScroll; this.s.scroll = { windowHeight: $(window).height(), windowWidth: $(window).width(), dtTop: scrollWrapper ? scrollWrapper.offset().top : null, dtLeft: scrollWrapper ? scrollWrapper.offset().left : null, dtHeight: scrollWrapper ? scrollWrapper.outerHeight() : null, dtWidth: scrollWrapper ? scrollWrapper.outerWidth() : null }; }, /** * Mouse drag - selects the end cell and update the selection display for * the end user * * @param {object} e Mouse move event * @private */ _mousemove: function ( e ) { var that = this; var dt = this.s.dt; var name = e.target.nodeName.toLowerCase(); if ( name !== 'td' && name !== 'th' ) { return; } this._drawSelection( e.target, e ); this._shiftScroll( e ); }, /** * End mouse drag - perform the update actions * * @param {object} e Mouse up event * @private */ _mouseup: function ( e ) { $(document.body).off( '.autoFill' ); var dt = this.s.dt; var select = this.dom.select; select.top.remove(); select.left.remove(); select.right.remove(); select.bottom.remove(); this.dom.handle.css( 'display', 'block' ); // Display complete - now do something useful with the selection! var start = this.s.start; var end = this.s.end; // Haven't selected multiple cells, so nothing to do if ( start.row === end.row && start.column === end.column ) { return; } // Build a matrix representation of the selected rows var rows = this._range( start.row, end.row ); var columns = this._range( start.column, end.column ); var selected = []; var dtSettings = dt.settings()[0]; var dtColumns = dtSettings.aoColumns; // Can't use Array.prototype.map as IE8 doesn't support it // Can't use $.map as jQuery flattens 2D arrays // Need to use a good old fashioned for loop for ( var rowIdx=0 ; rowIdx<rows.length ; rowIdx++ ) { selected.push( $.map( columns, function (column) { var cell = dt.cell( ':eq('+rows[rowIdx]+')', column+':visible', {page:'current'} ); var data = cell.data(); var cellIndex = cell.index(); var editField = dtColumns[ cellIndex.column ].editField; if ( editField !== undefined ) { data = dtSettings.oApi._fnGetObjectDataFn( editField )( dt.row( cellIndex.row ).data() ); } return { cell: cell, data: data, label: cell.data(), index: cellIndex }; } ) ); } this._actionSelector( selected ); // Stop shiftScroll clearInterval( this.s.scrollInterval ); this.s.scrollInterval = null; }, /** * Create an array with a range of numbers defined by the start and end * parameters passed in (inclusive!). * * @param {integer} start Start * @param {integer} end End * @private */ _range: function ( start, end ) { var out = []; var i; if ( start <= end ) { for ( i=start ; i<=end ; i++ ) { out.push( i ); } } else { for ( i=start ; i>=end ; i-- ) { out.push( i ); } } return out; }, /** * Move the window and DataTables scrolling during a drag to scroll new * content into view. This is done by proximity to the edge of the scrolling * container of the mouse - for example near the top edge of the window * should scroll up. This is a little complicated as there are two elements * that can be scrolled - the window and the DataTables scrolling view port * (if scrollX and / or scrollY is enabled). * * @param {object} e Mouse move event object * @private */ _shiftScroll: function ( e ) { var that = this; var dt = this.s.dt; var scroll = this.s.scroll; var runInterval = false; var scrollSpeed = 5; var buffer = 65; var windowY = e.pageY - document.body.scrollTop, windowX = e.pageX - document.body.scrollLeft, windowVert, windowHoriz, dtVert, dtHoriz; // Window calculations - based on the mouse position in the window, // regardless of scrolling if ( windowY < buffer ) { windowVert = scrollSpeed * -1; } else if ( windowY > scroll.windowHeight - buffer ) { windowVert = scrollSpeed; } if ( windowX < buffer ) { windowHoriz = scrollSpeed * -1; } else if ( windowX > scroll.windowWidth - buffer ) { windowHoriz = scrollSpeed; } // DataTables scrolling calculations - based on the table's position in // the document and the mouse position on the page if ( scroll.dtTop !== null && e.pageY < scroll.dtTop + buffer ) { dtVert = scrollSpeed * -1; } else if ( scroll.dtTop !== null && e.pageY > scroll.dtTop + scroll.dtHeight - buffer ) { dtVert = scrollSpeed; } if ( scroll.dtLeft !== null && e.pageX < scroll.dtLeft + buffer ) { dtHoriz = scrollSpeed * -1; } else if ( scroll.dtLeft !== null && e.pageX > scroll.dtLeft + scroll.dtWidth - buffer ) { dtHoriz = scrollSpeed; } // This is where it gets interesting. We want to continue scrolling // without requiring a mouse move, so we need an interval to be // triggered. The interval should continue until it is no longer needed, // but it must also use the latest scroll commands (for example consider // that the mouse might move from scrolling up to scrolling left, all // with the same interval running. We use the `scroll` object to "pass" // this information to the interval. Can't use local variables as they // wouldn't be the ones that are used by an already existing interval! if ( windowVert || windowHoriz || dtVert || dtHoriz ) { scroll.windowVert = windowVert; scroll.windowHoriz = windowHoriz; scroll.dtVert = dtVert; scroll.dtHoriz = dtHoriz; runInterval = true; } else if ( this.s.scrollInterval ) { // Don't need to scroll - remove any existing timer clearInterval( this.s.scrollInterval ); this.s.scrollInterval = null; } // If we need to run the interval to scroll and there is no existing // interval (if there is an existing one, it will continue to run) if ( ! this.s.scrollInterval && runInterval ) { this.s.scrollInterval = setInterval( function () { // Don't need to worry about setting scroll <0 or beyond the // scroll bound as the browser will just reject that. if ( scroll.windowVert ) { document.body.scrollTop += scroll.windowVert; } if ( scroll.windowHoriz ) { document.body.scrollLeft += scroll.windowHoriz; } // DataTables scrolling if ( scroll.dtVert || scroll.dtHoriz ) { var scroller = that.dom.dtScroll[0]; if ( scroll.dtVert ) { scroller.scrollTop += scroll.dtVert; } if ( scroll.dtHoriz ) { scroller.scrollLeft += scroll.dtHoriz; } } }, 20 ); } }, /** * Update the DataTable after the user has selected what they want to do * * @param {false|undefined} result Return from the `execute` method - can * be false internally to do nothing. This is not documented for plug-ins * and is used only by the cancel option. * @param {array} cells Information about the selected cells from the key * up function, argumented with the set values * @private */ _update: function ( result, cells ) { // Do nothing on `false` return from an execute function if ( result === false ) { return; } var dt = this.s.dt; var cell; // Potentially allow modifications to the cells matrix this._emitEvent( 'preAutoFill', [ dt, cells ] ); this._editor( cells ); // Automatic updates are not performed if `update` is null and the // `editor` parameter is passed in - the reason being that Editor will // update the data once submitted var update = this.c.update !== null ? this.c.update : this.c.editor ? false : true; if ( update ) { for ( var i=0, ien=cells.length ; i<ien ; i++ ) { for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) { cell = cells[i][j]; cell.cell.data( cell.set ); } } dt.draw(false); } this._emitEvent( 'autoFill', [ dt, cells ] ); } } ); /** * AutoFill actions. The options here determine how AutoFill will fill the data * in the table when the user has selected a range of cells. Please see the * documentation on the DataTables site for full details on how to create plug- * ins. * * @type {Object} */ AutoFill.actions = { increment: { available: function ( dt, cells ) { return $.isNumeric( cells[0][0].label ); }, option: function ( dt, cells ) { return dt.i18n( 'autoFill.increment', 'Increment / decrement each cell by: <input type="number" value="1">' ); }, execute: function ( dt, cells, node ) { var value = cells[0][0].data * 1; var increment = $('input', node).val() * 1; for ( var i=0, ien=cells.length ; i<ien ; i++ ) { for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) { cells[i][j].set = value; value += increment; } } } }, fill: { available: function ( dt, cells ) { return true; }, option: function ( dt, cells ) { return dt.i18n('autoFill.fill', 'Fill all cells with <i>'+cells[0][0].label+'</i>' ); }, execute: function ( dt, cells, node ) { var value = cells[0][0].data; for ( var i=0, ien=cells.length ; i<ien ; i++ ) { for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) { cells[i][j].set = value; } } } }, fillHorizontal: { available: function ( dt, cells ) { return cells.length > 1 && cells[0].length > 1; }, option: function ( dt, cells ) { return dt.i18n('autoFill.fillHorizontal', 'Fill cells horizontally' ); }, execute: function ( dt, cells, node ) { for ( var i=0, ien=cells.length ; i<ien ; i++ ) { for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) { cells[i][j].set = cells[i][0].data; } } } }, fillVertical: { available: function ( dt, cells ) { return cells.length > 1 && cells[0].length > 1; }, option: function ( dt, cells ) { return dt.i18n('autoFill.fillVertical', 'Fill cells vertically' ); }, execute: function ( dt, cells, node ) { for ( var i=0, ien=cells.length ; i<ien ; i++ ) { for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) { cells[i][j].set = cells[0][j].data; } } } }, // Special type that does not make itself available, but is added // automatically by AutoFill if a multi-choice list is shown. This allows // sensible code reuse cancel: { available: function () { return false; }, option: function ( dt ) { return dt.i18n('autoFill.cancel', 'Cancel' ); }, execute: function () { return false; } } }; /** * AutoFill version * * @static * @type String */ AutoFill.version = '2.2.2'; /** * AutoFill defaults * * @namespace */ AutoFill.defaults = { /** @type {Boolean} Ask user what they want to do, even for a single option */ alwaysAsk: false, /** @type {string|null} What will trigger a focus */ focus: null, // focus, click, hover /** @type {column-selector} Columns to provide auto fill for */ columns: '', // all /** @type {Boolean} Enable AutoFill on load */ enable: true, /** @type {boolean|null} Update the cells after a drag */ update: null, // false is editor given, true otherwise /** @type {DataTable.Editor} Editor instance for automatic submission */ editor: null }; /** * Classes used by AutoFill that are configurable * * @namespace */ AutoFill.classes = { /** @type {String} Class used by the selection button */ btn: 'btn' }; /* * API */ var Api = $.fn.dataTable.Api; // Doesn't do anything - Not documented Api.register( 'autoFill()', function () { return this; } ); Api.register( 'autoFill().enabled()', function () { var ctx = this.context[0]; return ctx.autoFill ? ctx.autoFill.enabled() : false; } ); Api.register( 'autoFill().enable()', function ( flag ) { return this.iterator( 'table', function ( ctx ) { if ( ctx.autoFill ) { ctx.autoFill.enable( flag ); } } ); } ); Api.register( 'autoFill().disable()', function () { return this.iterator( 'table', function ( ctx ) { if ( ctx.autoFill ) { ctx.autoFill.disable(); } } ); } ); // Attach a listener to the document which listens for DataTables initialisation // events so we can automatically initialise $(document).on( 'preInit.dt.autofill', function (e, settings, json) { if ( e.namespace !== 'dt' ) { return; } var init = settings.oInit.autoFill; var defaults = DataTable.defaults.autoFill; if ( init || defaults ) { var opts = $.extend( {}, init, defaults ); if ( init !== false ) { new AutoFill( settings, opts ); } } } ); // Alias for access DataTable.AutoFill = AutoFill; DataTable.AutoFill = AutoFill; return AutoFill; })); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.semanticui.min.js 0000644 00000001111 15002261751 0021450 0 ustar 00 /*! Bootstrap integration for DataTables' AutoFill ©2015 SpryMedia Ltd - datatables.net/license */ (function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-se")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="ui button";return a}); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/dataTables.autoFill.min.js 0000644 00000024567 15002261751 0021377 0 ustar 00 /*! AutoFill 2.2.2 ©2008-2017 SpryMedia Ltd - datatables.net/license */ (function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return e(l,window,document)}):"object"===typeof exports?module.exports=function(l,i){l||(l=window);if(!i||!i.fn.dataTable)i=require("datatables.net")(l,i).$;return e(i,l,l.document)}:e(jQuery,window,document)})(function(e,l,i,q){var k=e.fn.dataTable,p=0,j=function(c,b){if(!k.versionCheck||!k.versionCheck("1.10.8"))throw"Warning: AutoFill requires DataTables 1.10.8 or greater";this.c=e.extend(!0,{},k.defaults.autoFill, j.defaults,b);this.s={dt:new k.Api(c),namespace:".autoFill"+p++,scroll:{},scrollInterval:null,handle:{height:0,width:0},enabled:!1};this.dom={handle:e('<div class="dt-autofill-handle"/>'),select:{top:e('<div class="dt-autofill-select top"/>'),right:e('<div class="dt-autofill-select right"/>'),bottom:e('<div class="dt-autofill-select bottom"/>'),left:e('<div class="dt-autofill-select left"/>')},background:e('<div class="dt-autofill-background"/>'),list:e('<div class="dt-autofill-list">'+this.s.dt.i18n("autoFill.info", "")+"<ul/></div>"),dtScroll:null,offsetParent:null};this._constructor()};e.extend(j.prototype,{enabled:function(){return this.s.enabled},enable:function(c){var b=this;if(!1===c)return this.disable();this.s.enabled=!0;this._focusListener();this.dom.handle.on("mousedown",function(a){b._mousedown(a);return!1});return this},disable:function(){this.s.enabled=!1;this._focusListenerRemove();return this},_constructor:function(){var c=this,b=this.s.dt,a=e("div.dataTables_scrollBody",this.s.dt.table().container()); b.settings()[0].autoFill=this;a.length&&(this.dom.dtScroll=a,"static"===a.css("position")&&a.css("position","relative"));!1!==this.c.enable&&this.enable();b.on("destroy.autoFill",function(){c._focusListenerRemove()})},_attach:function(c){var b=this.s.dt,a=b.cell(c).index(),d=this.dom.handle,f=this.s.handle;if(!a||-1===b.columns(this.c.columns).indexes().indexOf(a.column))this._detach();else{this.dom.offsetParent||(this.dom.offsetParent=e(b.table().node()).offsetParent());if(!f.height||!f.width)d.appendTo("body"), f.height=d.outerHeight(),f.width=d.outerWidth();b=this._getPosition(c,this.dom.offsetParent);this.dom.attachedTo=c;d.css({top:b.top+c.offsetHeight-f.height,left:b.left+c.offsetWidth-f.width}).appendTo(this.dom.offsetParent)}},_actionSelector:function(c){var b=this,a=this.s.dt,d=j.actions,f=[];e.each(d,function(b,d){d.available(a,c)&&f.push(b)});if(1===f.length&&!1===this.c.alwaysAsk){var h=d[f[0]].execute(a,c);this._update(h,c)}else{var g=this.dom.list.children("ul").empty();f.push("cancel");e.each(f, function(f,h){g.append(e("<li/>").append('<div class="dt-autofill-question">'+d[h].option(a,c)+"<div>").append(e('<div class="dt-autofill-button">').append(e('<button class="'+j.classes.btn+'">'+a.i18n("autoFill.button",">")+"</button>").on("click",function(){var f=d[h].execute(a,c,e(this).closest("li"));b._update(f,c);b.dom.background.remove();b.dom.list.remove()}))))});this.dom.background.appendTo("body");this.dom.list.appendTo("body");this.dom.list.css("margin-top",-1*(this.dom.list.outerHeight()/ 2))}},_detach:function(){this.dom.attachedTo=null;this.dom.handle.detach()},_drawSelection:function(c){var b=this.s.dt,a=this.s.start,d=e(this.dom.start),f=e(c),h={row:b.rows({page:"current"}).nodes().indexOf(f.parent()[0]),column:f.index()},c=b.column.index("toData",h.column);if(b.cell(f).any()&&-1!==b.columns(this.c.columns).indexes().indexOf(c)){this.s.end=h;var g,b=a.row<h.row?d:f;g=a.row<h.row?f:d;c=a.column<h.column?d:f;d=a.column<h.column?f:d;b=this._getPosition(b).top;c=this._getPosition(c).left; a=this._getPosition(g).top+g.outerHeight()-b;d=this._getPosition(d).left+d.outerWidth()-c;f=this.dom.select;f.top.css({top:b,left:c,width:d});f.left.css({top:b,left:c,height:a});f.bottom.css({top:b+a,left:c,width:d});f.right.css({top:b,left:c+d,height:a})}},_editor:function(c){var b=this.s.dt,a=this.c.editor;if(a){for(var d={},f=[],e=a.fields(),g=0,i=c.length;g<i;g++)for(var j=0,l=c[g].length;j<l;j++){var o=c[g][j],k=b.settings()[0].aoColumns[o.index.column],n=k.editField;if(n===q)for(var k=k.mData, m=0,p=e.length;m<p;m++){var r=a.field(e[m]);if(r.dataSrc()===k){n=r.name();break}}if(!n)throw"Could not automatically determine field data. Please see https://datatables.net/tn/11";d[n]||(d[n]={});k=b.row(o.index.row).id();d[n][k]=o.set;f.push(o.index)}a.bubble(f,!1).multiSet(d).submit()}},_emitEvent:function(c,b){this.s.dt.iterator("table",function(a){e(a.nTable).triggerHandler(c+".dt",b)})},_focusListener:function(){var c=this,b=this.s.dt,a=this.s.namespace,d=null!==this.c.focus?this.c.focus:b.init().keys|| b.settings()[0].keytable?"focus":"hover";if("focus"===d)b.on("key-focus.autoFill",function(b,a,d){c._attach(d.node())}).on("key-blur.autoFill",function(){c._detach()});else if("click"===d)e(b.table().body()).on("click"+a,"td, th",function(){c._attach(this)}),e(i.body).on("click"+a,function(a){e(a.target).parents().filter(b.table().body()).length||c._detach()});else e(b.table().body()).on("mouseenter"+a,"td, th",function(){c._attach(this)}).on("mouseleave"+a,function(b){e(b.relatedTarget).hasClass("dt-autofill-handle")|| c._detach()})},_focusListenerRemove:function(){var c=this.s.dt;c.off(".autoFill");e(c.table().body()).off(this.s.namespace);e(i.body).off(this.s.namespace)},_getPosition:function(c,b){var a=e(c),d,f,h=0,g=0;b||(b=e(this.s.dt.table().node()).offsetParent());do{f=a.position();d=a.offsetParent();h+=f.top+d.scrollTop();g+=f.left+d.scrollLeft();if("body"===a.get(0).nodeName.toLowerCase())break;a=d}while(d.get(0)!==b.get(0));return{top:h,left:g}},_mousedown:function(c){var b=this,a=this.s.dt;this.dom.start= this.dom.attachedTo;this.s.start={row:a.rows({page:"current"}).nodes().indexOf(e(this.dom.start).parent()[0]),column:e(this.dom.start).index()};e(i.body).on("mousemove.autoFill",function(a){b._mousemove(a)}).on("mouseup.autoFill",function(a){b._mouseup(a)});var d=this.dom.select,a=e(a.table().node()).offsetParent();d.top.appendTo(a);d.left.appendTo(a);d.right.appendTo(a);d.bottom.appendTo(a);this._drawSelection(this.dom.start,c);this.dom.handle.css("display","none");c=this.dom.dtScroll;this.s.scroll= {windowHeight:e(l).height(),windowWidth:e(l).width(),dtTop:c?c.offset().top:null,dtLeft:c?c.offset().left:null,dtHeight:c?c.outerHeight():null,dtWidth:c?c.outerWidth():null}},_mousemove:function(c){var b=c.target.nodeName.toLowerCase();"td"!==b&&"th"!==b||(this._drawSelection(c.target,c),this._shiftScroll(c))},_mouseup:function(){e(i.body).off(".autoFill");var c=this.s.dt,b=this.dom.select;b.top.remove();b.left.remove();b.right.remove();b.bottom.remove();this.dom.handle.css("display","block");var b= this.s.start,a=this.s.end;if(!(b.row===a.row&&b.column===a.column)){for(var d=this._range(b.row,a.row),b=this._range(b.column,a.column),a=[],f=c.settings()[0],h=f.aoColumns,g=0;g<d.length;g++)a.push(e.map(b,function(a){var a=c.cell(":eq("+d[g]+")",a+":visible",{page:"current"}),b=a.data(),e=a.index(),i=h[e.column].editField;i!==q&&(b=f.oApi._fnGetObjectDataFn(i)(c.row(e.row).data()));return{cell:a,data:b,label:a.data(),index:e}}));this._actionSelector(a);clearInterval(this.s.scrollInterval);this.s.scrollInterval= null}},_range:function(c,b){var a=[],d;if(c<=b)for(d=c;d<=b;d++)a.push(d);else for(d=c;d>=b;d--)a.push(d);return a},_shiftScroll:function(c){var b=this,a=this.s.scroll,d=!1,f=c.pageY-i.body.scrollTop,e=c.pageX-i.body.scrollLeft,g,j,k,l;65>f?g=-5:f>a.windowHeight-65&&(g=5);65>e?j=-5:e>a.windowWidth-65&&(j=5);null!==a.dtTop&&c.pageY<a.dtTop+65?k=-5:null!==a.dtTop&&c.pageY>a.dtTop+a.dtHeight-65&&(k=5);null!==a.dtLeft&&c.pageX<a.dtLeft+65?l=-5:null!==a.dtLeft&&c.pageX>a.dtLeft+a.dtWidth-65&&(l=5);g|| j||k||l?(a.windowVert=g,a.windowHoriz=j,a.dtVert=k,a.dtHoriz=l,d=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null);!this.s.scrollInterval&&d&&(this.s.scrollInterval=setInterval(function(){if(a.windowVert)i.body.scrollTop=i.body.scrollTop+a.windowVert;if(a.windowHoriz)i.body.scrollLeft=i.body.scrollLeft+a.windowHoriz;if(a.dtVert||a.dtHoriz){var c=b.dom.dtScroll[0];if(a.dtVert)c.scrollTop=c.scrollTop+a.dtVert;if(a.dtHoriz)c.scrollLeft=c.scrollLeft+a.dtHoriz}}, 20))},_update:function(c,b){if(!1!==c){var a=this.s.dt,d;this._emitEvent("preAutoFill",[a,b]);this._editor(b);if(null!==this.c.update?this.c.update:!this.c.editor){for(var f=0,e=b.length;f<e;f++)for(var g=0,i=b[f].length;g<i;g++)d=b[f][g],d.cell.data(d.set);a.draw(!1)}this._emitEvent("autoFill",[a,b])}}});j.actions={increment:{available:function(c,b){return e.isNumeric(b[0][0].label)},option:function(c){return c.i18n("autoFill.increment",'Increment / decrement each cell by: <input type="number" value="1">')}, execute:function(c,b,a){for(var c=1*b[0][0].data,a=1*e("input",a).val(),d=0,f=b.length;d<f;d++)for(var h=0,g=b[d].length;h<g;h++)b[d][h].set=c,c+=a}},fill:{available:function(){return!0},option:function(c,b){return c.i18n("autoFill.fill","Fill all cells with <i>"+b[0][0].label+"</i>")},execute:function(c,b){for(var a=b[0][0].data,d=0,e=b.length;d<e;d++)for(var h=0,g=b[d].length;h<g;h++)b[d][h].set=a}},fillHorizontal:{available:function(c,b){return 1<b.length&&1<b[0].length},option:function(c){return c.i18n("autoFill.fillHorizontal", "Fill cells horizontally")},execute:function(c,b){for(var a=0,d=b.length;a<d;a++)for(var e=0,h=b[a].length;e<h;e++)b[a][e].set=b[a][0].data}},fillVertical:{available:function(c,b){return 1<b.length&&1<b[0].length},option:function(c){return c.i18n("autoFill.fillVertical","Fill cells vertically")},execute:function(c,b){for(var a=0,d=b.length;a<d;a++)for(var e=0,h=b[a].length;e<h;e++)b[a][e].set=b[0][e].data}},cancel:{available:function(){return!1},option:function(c){return c.i18n("autoFill.cancel", "Cancel")},execute:function(){return!1}}};j.version="2.2.2";j.defaults={alwaysAsk:!1,focus:null,columns:"",enable:!0,update:null,editor:null};j.classes={btn:"btn"};var m=e.fn.dataTable.Api;m.register("autoFill()",function(){return this});m.register("autoFill().enabled()",function(){var c=this.context[0];return c.autoFill?c.autoFill.enabled():!1});m.register("autoFill().enable()",function(c){return this.iterator("table",function(b){b.autoFill&&b.autoFill.enable(c)})});m.register("autoFill().disable()", function(){return this.iterator("table",function(c){c.autoFill&&c.autoFill.disable()})});e(i).on("preInit.dt.autofill",function(c,b){if("dt"===c.namespace){var a=b.oInit.autoFill,d=k.defaults.autoFill;if(a||d)d=e.extend({},a,d),!1!==a&&new j(b,d)}});k.AutoFill=j;return k.AutoFill=j}); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.bootstrap.min.js 0000644 00000001117 15002261751 0021332 0 ustar 00 /*! Bootstrap integration for DataTables' AutoFill ©2015 SpryMedia Ltd - datatables.net/license */ (function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-bs")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="btn btn-primary";return a}); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.foundation.min.js 0000644 00000001114 15002261751 0021460 0 ustar 00 /*! Foundation integration for DataTables' AutoFill ©2015 SpryMedia Ltd - datatables.net/license */ (function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-zf")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="button tiny";return a}); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.foundation.js 0000644 00000001651 15002261751 0020704 0 ustar 00 /*! Foundation integration for DataTables' AutoFill * ©2015 SpryMedia Ltd - datatables.net/license */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net-zf', 'datatables.net-autofill'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net-zf')(root, $).$; } if ( ! $.fn.dataTable.AutoFill ) { require('datatables.net-autofill')(root, $); } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; DataTable.AutoFill.classes.btn = 'button tiny'; return DataTable; })); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.bootstrap4.min.js 0000644 00000001121 15002261751 0021411 0 ustar 00 /*! Bootstrap integration for DataTables' AutoFill ©2015 SpryMedia Ltd - datatables.net/license */ (function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-bs4")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="btn btn-primary";return a}); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.bootstrap.js 0000644 00000001654 15002261751 0020556 0 ustar 00 /*! Bootstrap integration for DataTables' AutoFill * ©2015 SpryMedia Ltd - datatables.net/license */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net-bs', 'datatables.net-autofill'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net-bs')(root, $).$; } if ( ! $.fn.dataTable.AutoFill ) { require('datatables.net-autofill')(root, $); } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; DataTable.AutoFill.classes.btn = 'btn btn-primary'; return DataTable; })); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.jqueryui.min.js 0000644 00000001155 15002261751 0021174 0 ustar 00 /*! jQuery UI integration for DataTables' AutoFill ©2015 SpryMedia Ltd - datatables.net/license */ (function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-jqui")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="ui-button ui-state-default ui-corner-all"; return a}); AdminLTE/plugins/DataTables/AutoFill-2.2.2/js/autoFill.semanticui.js 0000644 00000001646 15002261751 0020703 0 ustar 00 /*! Bootstrap integration for DataTables' AutoFill * ©2015 SpryMedia Ltd - datatables.net/license */ (function( factory ){ if ( typeof define === 'function' && define.amd ) { // AMD define( ['jquery', 'datatables.net-se', 'datatables.net-autofill'], function ( $ ) { return factory( $, window, document ); } ); } else if ( typeof exports === 'object' ) { // CommonJS module.exports = function (root, $) { if ( ! root ) { root = window; } if ( ! $ || ! $.fn.dataTable ) { $ = require('datatables.net-se')(root, $).$; } if ( ! $.fn.dataTable.AutoFill ) { require('datatables.net-autofill')(root, $); } return factory( $, root, root.document ); }; } else { // Browser factory( jQuery, window, document ); } }(function( $, window, document, undefined ) { 'use strict'; var DataTable = $.fn.dataTable; DataTable.AutoFill.classes.btn = 'ui button'; return DataTable; })); AdminLTE/plugins/DataTables/datatables.min.js 0000644 00010562762 15002261751 0015074 0 ustar 00 /* * This combined file was created by the DataTables downloader builder: * https://datatables.net/download * * To rebuild or modify this file with the latest versions of the included * software please visit: * https://datatables.net/download/#bs/jszip-2.5.0/pdfmake-0.1.32/dt-1.10.16/af-2.2.2/b-1.4.2/b-colvis-1.4.2/b-flash-1.4.2/b-html5-1.4.2/b-print-1.4.2/fc-3.2.3/fh-3.1.3/kt-2.3.2/r-2.2.0 * * Included libraries: * JSZip 2.5.0, pdfmake 0.1.32, DataTables 1.10.16, AutoFill 2.2.2, Buttons 1.4.2, Column visibility 1.4.2, Flash export 1.4.2, HTML5 export 1.4.2, Print view 1.4.2, FixedColumns 3.2.3, FixedHeader 3.1.3, KeyTable 2.3.2, Responsive 2.2.0 */ /*! JSZip - A Javascript class for generating and reading zip files <http://stuartk.com/jszip> (c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com> Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/master/LICENSE */ !function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";c.encode=function(a){for(var b,c,e,f,g,h,i,j="",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.compressionOptions=null,c.comment=null,c.unixPermissions=null,c.dosPermissions=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a,b){return e.deflateRaw(a,{level:b.level||-1})},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,unixPermissions:h.unixPermissions,dosPermissions:h.dosPermissions,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{"./base64":1,"./zipEntries":22}],11:[function(a,b){(function(a){"use strict";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){"use strict";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a("./uint8ArrayReader");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./uint8ArrayReader":18}],13:[function(a,b){"use strict";var c=a("./support"),d=a("./utils"),e=a("./crc32"),f=a("./signature"),g=a("./defaults"),h=a("./base64"),i=a("./compressions"),j=a("./compressedObject"),k=a("./nodeBuffer"),l=a("./utf8"),m=a("./stringWriter"),n=a("./uint8ArrayWriter"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,"uint8array"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return"string"===e?!a.options.binary&&c.nodebuffer?k(b,"utf-8"):a.asBinary():b},q=function(a){var b=o(this);return null===b||"undefined"==typeof b?"":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?D.utf8decode(b):d.transformTo("string",b),a||this.options.binary||(b=d.transformTo("string",D.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this.unixPermissions=c.unixPermissions,this.dosPermissions=c.dosPermissions,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo("nodebuffer",a)},asUint8Array:function(){var a=p(this);return d.transformTo("uint8array",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d="";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&"undefined"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),"string"==typeof c.unixPermissions&&(c.unixPermissions=parseInt(c.unixPermissions,8)),c.unixPermissions&&16384&c.unixPermissions&&(c.dir=!0),c.dosPermissions&&16&c.dosPermissions&&(c.dir=!0),c.dir&&(a=x(a)),c.createFolders&&(e=w(a))&&y.call(this,e,!0),c.dir||null===b||"undefined"==typeof b)c.base64=!1,c.binary=!1,b=null,f=null;else if("string"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error("The data of '"+a+"' is in an unsupported format !");"arraybuffer"===f&&(b=d.transformTo("uint8array",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){"/"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf("/");return b>0?a.substring(0,b):""},x=function(a){return"/"!=a.slice(-1)&&(a+="/"),a},y=function(a,b){return b="undefined"!=typeof b?b:!1,a=x(a),this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},z=function(a,b,c){var f,g=new j;return a._data instanceof j?(g.uncompressedSize=a._data.uncompressedSize,g.crc32=a._data.crc32,0===g.uncompressedSize||a.dir?(b=i.STORE,g.compressedContent="",g.crc32=0):a._data.compressionMethod===b.magic?g.compressedContent=a._data.getCompressedContent():(f=a._data.getContent(),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c))):(f=p(a),(!f||0===f.length||a.dir)&&(b=i.STORE,f=""),g.uncompressedSize=f.length,g.crc32=e(f),g.compressedContent=b.compress(d.transformTo(b.compressInputType,f),c)),g.compressedSize=g.compressedContent.length,g.compressionMethod=b.magic,g},A=function(a,b){var c=a;return a||(c=b?16893:33204),(65535&c)<<16},B=function(a){return 63&(a||0)},C=function(a,b,c,g,h){var i,j,k,m,n=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),o=b.comment||"",p=d.transformTo("string",l.utf8encode(o)),q=n.length!==b.name.length,r=p.length!==o.length,t=b.options,u="",v="",w="";k=b._initialMetadata.dir!==b.dir?b.dir:t.dir,m=b._initialMetadata.date!==b.date?b.date:t.date;var x=0,y=0;k&&(x|=16),"UNIX"===h?(y=798,x|=A(b.unixPermissions,k)):(y=20,x|=B(b.dosPermissions,k)),i=m.getHours(),i<<=6,i|=m.getMinutes(),i<<=5,i|=m.getSeconds()/2,j=m.getFullYear()-1980,j<<=4,j|=m.getMonth()+1,j<<=5,j|=m.getDate(),q&&(v=s(1,1)+s(e(n),4)+n,u+="up"+s(v.length,2)+v),r&&(w=s(1,1)+s(this.crc32(p),4)+p,u+="uc"+s(w.length,2)+w);var z="";z+="\n\x00",z+=q||r?"\x00\b":"\x00\x00",z+=c.compressionMethod,z+=s(i,2),z+=s(j,2),z+=s(c.crc32,4),z+=s(c.compressedSize,4),z+=s(c.uncompressedSize,4),z+=s(n.length,2),z+=s(u.length,2);var C=f.LOCAL_FILE_HEADER+z+n+u,D=f.CENTRAL_FILE_HEADER+s(y,2)+z+s(p.length,2)+"\x00\x00\x00\x00"+s(x,4)+s(g,4)+n+u+p;return{fileRecord:C,dirRecord:D,compressedObject:c}},D={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=y.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:"STORE",compressionOptions:null,type:"base64",platform:"DOS",comment:null,mimeType:"application/zip"}),d.checkSupport(a.type),("darwin"===a.platform||"freebsd"===a.platform||"linux"===a.platform||"sunos"===a.platform)&&(a.platform="UNIX"),"win32"===a.platform&&(a.platform="DOS");var b,c,e=[],g=0,j=0,k=d.transformTo("string",this.utf8encode(a.comment||this.comment||""));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+" is not a valid compression method !");var r=o.options.compressionOptions||a.compressionOptions||{},u=z.call(this,o,q,r),v=C.call(this,l,o,u,g,a.platform);g+=v.fileRecord.length+u.compressedSize,j+=v.dirRecord.length,e.push(v)}var w="";w=f.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var x=a.type.toLowerCase();for(b="uint8array"===x||"arraybuffer"===x||"blob"===x||"nodebuffer"===x?new n(g+j+w.length):new m(g+j+w.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(w);var y=b.finalize();switch(a.type.toLowerCase()){case"uint8array":case"arraybuffer":case"nodebuffer":return d.transformTo(a.type.toLowerCase(),y);case"blob":return d.arrayBuffer2Blob(d.transformTo("arraybuffer",y),a.mimeType);case"base64":return a.base64?h.encode(y):y;default:return y}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo("string",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=D},{"./base64":1,"./compressedObject":2,"./compressions":3,"./crc32":4,"./defaults":6,"./nodeBuffer":11,"./signature":14,"./stringWriter":16,"./support":17,"./uint8ArrayWriter":19,"./utf8":20,"./utils":21}],14:[function(a,b,c){"use strict";c.LOCAL_FILE_HEADER="PK",c.CENTRAL_FILE_HEADER="PK",c.CENTRAL_DIRECTORY_END="PK",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",c.ZIP64_CENTRAL_DIRECTORY_END="PK",c.DATA_DESCRIPTOR="PK\b"},{}],15:[function(a,b){"use strict";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a("./dataReader"),e=a("./utils");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5,"./utils":21}],16:[function(a,b){"use strict";var c=a("./utils"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}},b.exports=d},{"./utils":21}],17:[function(a,b,c){(function(a){"use strict";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,c.nodebuffer="undefined"!=typeof a,c.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:"application/zip"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob("application/zip").size}catch(d){c.blob=!1}}}}).call(this,"undefined"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){"use strict";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a("./dataReader");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case"uint8array":String.fromCharCode.apply(null,new Uint8Array(0));break;case"nodebuffer":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k="",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a("./support"),i=a("./compressions"),j=a("./nodeBuffer");c.string2binary=function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a,b){c.checkSupport("blob"),b=b||"application/zip";try{return new Blob([a],{type:b})}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;return f.append(a),f.getBlob(b)}catch(d){throw new Error("Bug : can't construct the Blob.")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=""),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return"string"==typeof a?"string":"[object Array]"===Object.prototype.toString.call(a)?"array":h.nodebuffer&&j.test(a)?"nodebuffer":h.uint8array&&a instanceof Uint8Array?"uint8array":h.arraybuffer&&a instanceof ArrayBuffer?"arraybuffer":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+" is not supported by this browser")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d="";for(c=0;c<(a||"").length;c++)b=a.charCodeAt(c),d+="\\x"+(16>b?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8(),b.processAttributes()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a){var b=!0;try{this.reader.setIndex(0),this.checkSignature(h.LOCAL_FILE_HEADER),b=!1}catch(c){}throw new Error(b?"Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html":"Corrupted zip : can't find end of central directory")}if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader="string"!==b||j.uint8array?"nodebuffer"===b?new e(a):new f(g.transformTo("uint8array",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{"./nodeBufferReader":12,"./object":13,"./signature":14,"./stringReader":15,"./support":17,"./uint8ArrayReader":18,"./utils":21,"./zipEntry":23}],23:[function(a,b){"use strict";function c(a,b){this.options=a,this.loadOptions=b}var d=a("./stringReader"),e=a("./utils"),f=a("./compressedObject"),g=a("./object"),h=0,i=3;c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error("Bug : uncompressed data size mismatch");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error("Corrupted zip : compression "+e.pretty(this.compressionMethod)+" unknown (inner file : "+this.fileName+")");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo("string",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error("Corrupted zip : CRC32 mismatch")},readCentralPart:function(a){if(this.versionMadeBy=a.readInt(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var a=this.versionMadeBy>>8;this.dir=16&this.externalFileAttributes?!0:!1,a===h&&(this.dosPermissions=63&this.externalFileAttributes),a===i&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileName.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5)) }return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{"./compressedObject":2,"./object":13,"./stringReader":15,"./utils":21}],24:[function(a,b){"use strict";var c=a("./lib/utils/common").assign,d=a("./lib/deflate"),e=a("./lib/inflate"),f=a("./lib/zlib/constants"),g={};c(g,d,e,f),b.exports=g},{"./lib/deflate":25,"./lib/inflate":26,"./lib/utils/common":27,"./lib/zlib/constants":30}],25:[function(a,b,c){"use strict";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a("./zlib/deflate.js"),h=a("./utils/common"),i=a("./utils/strings"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:""},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg="invalid literal/length code",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg="invalid distance code",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg="unknown compression method",c.mode=lb;break}if(57344&c.flags){a.msg="unknown header flags set",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg="header crc mismatch",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1); break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg="incorrect data check",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg="incorrect length check",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a("../utils/common"),s=a("./adler32"),t=a("./crc32"),u=a("./inffast"),v=a("./inftrees"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./inffast":34,"./inftrees":36}],36:[function(a,b){"use strict";var c=a("../utils/common"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}); this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = { "Roboto-Italic.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAgp8AAACREdQT1NKcuCzAAIMwAAAUiRHU1VCw4aZEQACXuQAABfoT1MvMqCnsO0AAAGoAAAAYGNtYXBAbb9DAAAafAAABoBjdnQgJEEG5QAAI5QAAABMZnBnbWf0XKsAACD8AAABvGdhc3AACAATAAIKcAAAAAxnbHlmoLsktAAALagAAdn2aGRteCEe/AUAABWQAAAE7GhlYWT4gasAAAABLAAAADZoaGVhDKYSegAAAWQAAAAkaG10eHJO1ygAAAIIAAATiGxvY2EXM5zBAAAj4AAACcZtYXhwBxICWwAAAYgAAAAgbmFtZTlLZFAAAgegAAACrnBvc3T/YQBkAAIKUAAAACBwcmVwdKCP7AAAIrgAAADbAAEAAAACAAAcadIiXw889QAbCAAAAAAAxPARLgAAAADQ206M+jj91QlMCHMAAgAJAAIAAAAAAAAAAQAAB2z+DAAACRb6OP52CUwIAAGzAAAAAAAAAAAAAAAABOIAAQAABOIAkAAWAFYABQABAAAAAAAOAAACAAFzAAYAAQADBAsBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAAEAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOWAGQACgAAAAoAAAH2AAAB9gAAAgkAQwKFAMgE0QBSBGYASgW5ALsE3QA6AWQAqgKxAG0Cvf+PA2IAawRwAEwBkP+PAi4AGQIVADUDPf+PBGYAaARmAPkEZgAXBGYANARmAAUEZgByBGYAcARmAJ0EZgBBBGYAlAHrACsBrv+bA/wAQQRMAHAEGAA6A7QApQcCAEQFGv+vBN8AOwUXAHQFIQA7BHMAOwRUADsFUwB5BZIAOwImAEkEUgAKBOcAOwQ3ADsG0AA7BZIAOwVgAHcE7wA7BWAAbwTRADoEpQAnBKsAqAUSAGcE+gCkBuwAwwTn/9QEswCoBK//6wIZ//8DOQC/Ahn/egNIAE8Div+BAnAAzwRDADMEZQAfBBoARgRqAEsEJgBFArwAdARlAAQEUAAfAewALwHk/xQD+QAgAewALwbXAB4EUgAfBHcARQRl/9cEcwBJAqoAHwQKAC4CkwBDBFEAWwPMAG4F3wCAA+P/xAO2/6UD4//tAqoAOAHuACECqv+MBVEAaQHu//EESABSBIz/8wWSABIEvQBTAeb/9wTM/90DSADbBiMAYgOCAMMDrgBZBFYAgQYkAGEDmADjAvAA6AQvACUC4gBcAuIAbgJ5ANUEb//lA9UAewIQAKUB9v/IAuIA3wORAMADrQAPBbkAuQYPALQGEwCeA7b/0wdL/4QELQAoBWAAIASgADgEpwAeBpcAEwSWAFwEeABEBG8AOQSD/+AFeQA1AfUALgRbAC0EOAAiAiIAIwVqADUEbwAkB3AAVAcWAEcB9wAzBWcAUQKu/0kFXgBnBHkAQgVvAGcE1wBaAf7/CQQhAD4DsQEXA3wBJgOZAOMDWgEHAewBDgKiAQECI/+vA7MA3QLvAMICUv/pAAr9agAK/esACv0LAAr99QAK/NsB6vy7AgcBIQP2APMCEQClBFsAQwWD/7EFUQBpBSD/xAR4AAwFkwBEBHj/2gWZAFQFaACGBTMACgRsAEgEo//wA+0AhARvAEMEOQApBA8AggRvACQEdQBzAo0AhQRW/7cD2AA/BKkAYARv/9wENgBOBG8ASgQWAIcERQBnBYIAQQV5AE8GbgBmBIcAUQQrAGcGIgBmBdsAoQVFAHgIWf/MCGwAQwZaALQFkgBCBO4ANAXg/4sHFf+sBKUAJQWSAEMFiP/KBOoAkwYHAFsFtgBBBVoAzgdXAEIHjgBCBe0AiQbAAEUE6AA2BUUAdAb6AEkE+//oBFQARgR5ADADSwAtBLn/jQX7/6UD+wAhBIUALwQ7AC8Ehv/IBcsAMASEAC8EhQAvA8QAYAWqAEwEowAvBEIAewZQAC8GdQAkBNsAVgYQADAEQQAwBDYANAZfADAETP+/BFAAHwQ2AE4Gn//DBrkALwRwAB8EhQAvBtwAbwYGAE8EPwAuBv4ASQXUACwEt/+6BC//ogbfAFoF5wBOBqcAJgW+ACkIyQBIB58ALgQN/84Dx//KBVEAaQRyAEIE7QCtA+4AhAVRAGoEbwBEBtUAdAX/AFIG3ABvBgYATwUUAGYEMABNBOEAQAAK/OgACv0LAAr+FwAK/jsACvo4AAr6TwQ/AC4E/gA6BHD/1wRLADUDfwAkBMAAQwPwACQE7AA2BGYALQZkALsFYwB0B50AOgWSACQH/ABCBskAJAXKAHEEuABfBv8ArAU9AFcFTwDEBFIAmAVQAOwGCgCKBKMABwTsADUEQwAtBZAAQwRvACQFZwBRBI4APASO//wEnf/4Azr/6QTaADEGawAyBrkATAYvAK0FDQBoBDIArwPyAKAHj//fBk3/2gfIADsGeAAjBNoAagQHAEwFiwCaBQMAfQVFAGoDEgDyA/8AAAf0AAAD/wAAB/QAAAKuAAACBAAAAVwAAARmAAACKQAAAZ8AAADVAAAACgAAAi0AGQItABkFIgCnBhkAmQOU/18BlwCuAZcAiQGV/5gBlwDUAsgAtgLPAJUCtv+UBFEAdwR2//YCpwCgA7EAOQU7ADkA+QAaB3kAlwJeAF8CXgACA5H/7wLiAGEDUAB+BIz/8wYuAAoGaAA5CD8AOgc0ACIGBgAfBGYAUQW3AEMEDABJBFwACgUp//IFMP/lBcQAzAO7AEsIBQA1BOUA6gT6AIIGAQC1BqwAkgalAI8GQwC+BHYATQVtACQElf+sBHkAqwSqAEEIBQBNAgb/GgRpADEETABwA/z/1AQZABkD8wBBAkQAeAKFAHAB/v/jBNcAdARWAFgEcgB0BqoAdAaqAHQE0gB0BnIAKQAKAAAH/v+rCDUAXAQKAGIEhQBBAff/DwGP/70DkgETA4wBEgONARED4ADNA/kAzgPfACID2wDSA5IBEQH4APwEbP+lBDkAHQRkAEcEZwAdA9IAHQO4AB0EkgBMBMcAHQHjACoDvP/2BD0AHQOiAB0F3gAdBMcAHQShAEoERQAdBKEARQQzAB0ECgARBBAAbQRkAEUETwB6BfAAlQQ9/7YEFQB0BA3/3ALiAB0C4gBrAuL/6QLi//sC4v/wAuIAFgLiAB4C4gAvAuIACwLiADYDhACTAqoBCwQk/5oEqABLBS0AQwUHAEQD/gAlBR8ARAP6ACUECgASBB0ABgQlADQDnQAdBE//sAShAEoET/+wA3j/0wSzAB0D2//VBUgAUQT6AH4E1gAMBVIAbARkAEcHE//EByEAHQVUAG0EsgAdBEIAHwUH/4kF5/+vBCgAEQTQAB8ENwAeBKb/xAQJAFgFCgAdBFIAWgYqAB0GgwAdBQAAUAXNAB8ENwAfBGMAIAZOAB0Ebv/fA/z/+gYh/68EYQAeBOwAHgUZAGkFoABQBEcAdASO/7YGOgBsBFIAWgRSAB0FoQAvBK8AQQQoABEEoQBKBB3//wPPAB4H7gAdBJH/3QRlAB8EHABDBHoARwRzACQDaACpBHT/1wSDAEYEJgBFBGUANQVhAIEFjACEBXIARAW9AIUFwACFA8IAuwRpADkDnQAdBEH/gQS0/9MC4gCQAuIAYQLiAIkC4gCRAuIAogLiAH4C4gCpBFP/1QQYACsGewBJBJ8APwTkAGQCAP8JAf//CQH2AC4B9v96AfYALgH2//EEOQAdAfYAAAIuABkFPwAvBT8ALwRuAD0EqwCoApP/9AUa/68FGv+vBRr/rwUa/68FGv+vBRr/rwUa/68FFwB0BHMAOwRzADsEcwA7BHMAOwImAEkCJgBJAiYASQImAEkFkgA7BWAAdwVgAHcFYAB3BWAAdwVgAHcFEgBnBRIAZwUSAGcFEgBnBLMAqARDADMEQwAzBEMAMwRDADMEQwAzBEMAMwRDADMEGgBGBCYARQQmAEUEJgBFBCYARQH1AC4B9QAuAfUALgH1AC4EUgAfBHcARQR3AEUEdwBFBHcARQR3AEUEUQBbBFEAWwRRAFsEUQBbA7b/pQO2/6UFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFFwB0BBoARgUXAHQEGgBGBRcAdAQaAEYFFwB0BBoARgUhADsFAABLBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQVTAHkEZQAEBVMAeQRlAAQFUwB5BGUABAVTAHkEZQAEBZIAOwRQAB8CJgBJAfUAEQImAEkB9QAaAiYASQH1AC4CJv+OAez/cAImAEkGeABJA9AALwRSAAoB/v8JBOcAOwP5ACAENwA7AewALwQ3ADsB7P+jBDcAOwKCAC8ENwA7AsgALwWSADsEUgAfBZIAOwRSAB8FkgA7BFIAHwRSAB8FYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUE0QA6AqoAHwTRADoCqv+fBNEAOgKqAB8EpQAnBAoALgSlACcECgAuBKUAJwQKAC4EpQAnBAoALgSlACcECgAuBKsAqAKTAEMEqwCoApMAQwSrAKgCuwBDBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBRIAZwRRAFsFEgBnBFEAWwUSAGcEUQBbBuwAwwXfAIAEswCoA7b/pQSzAKgEr//rA+P/7QSv/+sD4//tBK//6wPj/+0HS/+EBpcAEwVgACAEbwA5BGf/sARn/7AEEABtBGz/pQRs/6UEbP+lBGz/pQRs/6UEbP+lBGz/pQRkAEcD0gAdA9IAHQPSAB0D0gAdAeMAKgHjACoB4wAqAeMAKgTHAB0EoQBKBKEASgShAEoEoQBKBKEASgRkAEUEZABFBGQARQRkAEUEFQB0BGz/pQRs/6UEbP+lBGQARwRkAEcEZABHBGQARwRnAB0D0gAdA9IAHQPSAB0D0gAdA9IAHQSSAEwEkgBMBJIATASSAEwExwAdAeMADwHjABgB4wAqAeP/egHjACoDvP/2BD0AHQOiAB0DogAdA6IAHQOiAB0ExwAdBMcAHQTHAB0EoQBKBKEASgShAEoEMwAdBDMAHQQzAB0ECgARBAoAEQQKABEECgARBBAAbQQQAG0EEABtBGQARQRkAEUEZABFBGQARQRkAEUEZABFBfAAlQQVAHQEFQB0BA3/3AQN/9wEDf/cBRr/rwTXAGMF9gBxAooAdwV0AGoFF//uBUcAHgKNACAFGv+vBN8AOwRzADsEr//rBZIAOwImAEkE5wA7BtAAOwWSADsFYAB3BO8AOwSrAKgEswCoBOf/1AImAEkEswCoBGwASAQ5ACkEbwAkAo0AhQRFAGcEWwAtBHcARQRv/+UDzABuA+P/xAKNAGcERQBnBHcARQRFAGcGbgBmBHMAOwRbAEMEpQAnAiYASQImAEkEUgAKBQcARATnADsE6gCTBRr/rwTfADsEWwBDBHMAOwWSAEMG0AA7BZIAOwVgAHcFkwBEBO8AOwUXAHQEqwCoBOf/1ARDADMEJgBFBIUALwR3AEUEZf/XBBoARgO2/6UD4//EBCYARQNLAC0ECgAuAewALwH1AC4B5P8UBDsALwO2/6UG7ADDBd8AgAbsAMMF3wCABuwAwwXfAIAEswCoA7b/pQFkAKoChQDIBBIAQwH+/wkBlwCJBtAAOwbXAB4FGv+vBEMAMwRzADsFkgBDBCYARQSFAC8FaACGBXkATwTtAK0D7gCECC0ARQkWAHcEpQAlA/sAIQUXAHQEGgBGBLMAqAPtAIQCJgBJBxX/rAX7/6UCJgBJBRr/rwRDADMFGv+vBEMAMwdL/4QGlwATBHMAOwQmAEUFZwBRBCEAPgQhAD4HFf+sBfv/pQSlACUD+wAhBZIAQwSFAC8FkgBDBIUALwVgAHcEdwBFBVEAaQRyAEIFUQBpBHIAQgVFAHQENgA0BOoAkwO2/6UE6gCTA7b/pQTqAJMDtv+lBVoAzgRCAHsGwABFBhAAMATn/9QD4//EBGoASwWI/8oEhv/IBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBRr/rwRDADMFGv+vBEMAMwUa/68EQwAzBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQRzADsEJgBFBHMAOwQmAEUEcwA7BCYARQImAEkB9QAuAiYADgHs//EFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVgAHcEdwBFBWAAdwR3AEUFYAB3BHcARQVeAGcEeQBCBV4AZwR5AEIFXgBnBHkAQgVeAGcEeQBCBV4AZwR5AEIFEgBnBFEAWwUSAGcEUQBbBW8AZwTXAFoFbwBnBNcAWgVvAGcE1wBaBW8AZwTXAFoFbwBnBNcAWgSzAKgDtv+lBLMAqAO2/6UEswCoA7b/pQSIAEsEiAAABQcARAQ7AC8FkgA7BIQALwSrAKgDxABgBOf/1APj/8QFWgDOBEIAewVaAM4EQgB7BFsAQwNLAC0HFf+sBfv/pQYKAIoEowAHBFAAHwToACsE6AArBFsAEANL/+YFGwBYBBIAOQWSAEMEhQAvBZIAOwSEAC8G0AA7BcsAMAWI/8oEhv/IBLMAqAPtAF0E5//UA+P/xAQ5ACkEVP/XBhkAmQRmABcEZgA0BGYABQRmAHIEegCUBI4AfAVTAHkEZQAEBZIAOwRSAB8FGv+vBEMAMwRzADsEJgBFAib/3wH1/40FYAB3BHcARQTRADoCqgAfBRIAZwRRAFsEj/+yBN8AOwRlAB8FIQA7BGoASwUhADsEagBLBZIAOwRQAB8E5wA7A/kAIATnADsD+QAgBDcAOwHs//IG0AA7BtcAHgWSADsEUgAfBO8AOwRl/9cE0QA6Aqr/7gSlACcECgAuBKsAqAKTAEME+gCkA8wAbgT6AKQDzABuBuwAwwXfAIAEr//rA+P/7QWm/wwEbP+lBA7/4QUD//0CHwABBKsAHQRR/5sE4AAWBGz/pQQ5AB0D0gAdBA3/3ATHAB0B4wAqBD0AHQXeAB0EoQBKBEUAHQQQAG0EFQB0BD3/tgHjACoEFQB0A9IAHQOdAB0ECgARAeMAKgHjACoDvP/2BD0AHQQJAFgEbP+lBDkAHQOdAB0D0gAdBNAAHwXeAB0ExwAdBKEASgSzAB0ERQAdBGQARwQQAG0EPf+2BCgAEQTHAB0EZABIBBUAdAWhAC8E0AAfBAkAWAVIAFEFGv+vBEMAMwRzADsEJgBFAAAAAQAABOQJCgQAAAICAgMFBQYFAgMDBAUCAgIEBQUFBQUFBQUFBQICBAUFBAgGBQYGBQUGBgIFBgUIBgYGBgUFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIEAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgUEBwQEBQcEAwUDAwMFBAICAwQEBgcHBAgFBgUFBwUFBQUGAgUFAgYFCAgCBgMGBQYFAgUEBAQEAgMCBAMDAAAAAAACAgQCBQYGBgUGBQYGBgUFBAUFBQUFAwUEBQUFBQUFBgYHBQUHBwYJCQcGBgcIBQYGBgcGBggJBwgGBggGBQUEBQcEBQUFBwUFBAYFBQcHBQcFBQcFBQUHCAUFCAcFCAcFBQgHBwYKCQUEBgUGBAYFCAcIBwYFBQAAAAAAAAUGBQUEBQQGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAUHCAcGBQQJBwkHBQUGBgYDBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCAMDBAMEBQcHCQgHBQYFBQYGBgQJBgYHCAcHBQYFBQUJAgUFBAUEAwMCBQUFCAgFBwAJCQUFAgIEBAQEBAQEBAIFBQUFBAQFBQIEBQQHBQUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYEBgQFBQUEBQUFBAUEBgYFBgUICAYFBQYHBQUFBQUGBQcHBgcFBQcFBAcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgYGBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgQFAgUCBQMFAwYFBgUGBQUGBQYFBgUFAwUDBQMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQIBwYFBQUFBQUF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c3dzd3N/c4dzkXObc7Jz0XPvdA50LnQ6dEZ0d3S4dR11QnVOdV51cnZGdmJ2f3aSdqZ273d6eBx4qXi1eXh503pZewR7ZnvpfEd8uH1dfcl+W368fyR/Pn9Yf3J/jH//gCeAYYB9gLKBO4GBgfiCOYJHglWCjoKbgsKC24Lng0qDo4Q3hMKFQ4YXhheHlIfxiCKIgIiviMWJKIl6ibqKLIqFisWLCItIi2KLqIwejHqMx40TjU+Nto4EjiKOWI6cjsSPFo9Uj7OQA5BhkLWRI5FPkYuRvpISkleSi5LIkxuTRpOVlAaUSJSolQiVNZW+liCWN5aBlz6XuZgtmHyYwpkEmUyZzJo4mq+a2psQm4ibuZwHnDqcepzunVCdu54enoyfA597n9KgDaBpoMGhN6G8ofqiS6KUotijE6Nbo5uj5aRApEyknaURpZyl+aZIptCnM6eYp/iooqiuqQGpTamiqeuqZarSqzerq6xHrM6tb63irk+uqK8Tr5yvpLAQsH6w6bFysdWyQLKSsvSzWrOFs9q0BLRdtKG0tbTJtNu077UBtRi1LLWOtba2RLa0tw23FbcdtyW3MLc4t0S3sLewt7i4KLiYuPq5QLmoub+51rntugS6HLovuju6R7peunC6h7qaurG6w7rauu27BLsbuy27RLtbu267hbuXu667wbvTu+q7/LwSvCO8NrxJvFW8Ybx4vIq8oLyzvMm82rzxvQm9Gr0xvUO9Wb1qvX29lL2mvby9z73hvfO+Cr4gvje+Sb62v2S/dr+Iv5q/q7+9v8+/4b/ywATAEMAiwDPARcBXwGnAe8DvwX3Bj8GgwbLBw8HVwefB+cILwhfCKcI7wk/CYcJzwoXCl8KpwrvCxsLRwuPC78L7ww3DH8MrwzfDScNbw2fDc8OIw5TDoMOsw77D0MPcw+jD+sQLxBfEKcQ6xEzEXsRxxITElsSoxLTEwMTSxOPE9cUHxRnFKsU2xULFTsVaxWzFfcWJxZXFocWtxb/Fy8Xdxe7GAMYRxiPGNcZIxlvGbsaBxuLHUcdjx3XHh8eYx6vHvcfPx+HH88gFyBbILchEyFvIcsiVyLjIyMjfyPHJB8kYySvJPslKyVbJbcl/yZDJosm4ycnJ28nuygDKF8opyjvKTcpgynfKicqayq3Kv8rQyuLLSctby2zLfsuQy6HLssvDy9XMT8xg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AdMAAAEHAKEBFwAeAAkAsAcvsBPcMDEA////3AAABA4GIAImAdMAAAEGAJ5VHwAJALAHL7AO3DAxAP///68AAASLBj8CJgAlAAAABgCtBAD//wBjAAAFFQY/ACYAKWQAAAcArf9CAAD//wBxAAAF2wZBACYALGQAAAcArf9QAAL//wB3AAACZQZAACYALWQAAAcArf9WAAH//wBq/+cFIQY/ACYAMxQAAAcArf9JAAD////uAAAFlgY/ACYAPWQAAAcArf7NAAD//wAeAAAE7gY/ACYAuRQAAAcArf9MAAD//wAg//QDGwZ0AiYAwgAAAQcArv8t/+wAHACwAEVYsA4vG7EOGD5ZsBvcsBHQsBsQsCTQMDH///+vAAAEiwWwAgYAJQAA//8AOwAABKAFsAIGACYAAP//ADsAAASxBbACBgApAAD////rAAAEzgWwAgYAPgAA//8AOwAABXcFsAIGACwAAP//AEkAAAIBBbACBgAtAAD//wA7AAAFUAWwAgYALwAA//8AOwAABrcFsAIGADEAAP//ADsAAAV3BbACBgAyAAD//wB3/+cFDQXIAgYAMwAA//8AOwAABPMFsAIGADQAAP//AKgAAAUJBbACBgA4AAD//wCoAAAFMgWwAgYAPQAA////1AAABSsFsAIGADwAAP//AEkAAAMKBwkCJgAtAAABBwBq/7gBQgAMALACL7AZ3LAE0DAx//8AqAAABTIG/QImAD0AAAEHAGoA/QE2AAwAsAEvsB7csAnQMDH//wBI/+cEMgY6AiYAugAAAQcArQFo//sACQCwFS+wKNwwMQD//wAp/+cD5QY5AiYAvgAAAQcArQEh//oACQCwGi+wK9wwMQD//wAk/mED8wY6AiYAwAAAAQcArQE7//sACQCwAy+wFdwwMQD//wCF//QCZQYlAiYAwgAAAQYArSTmAAkAsAAvsBHcMDEA//8AZ//lBAoGdAImAMoAAAEGAK4c7AASALALL7Ar3LAW0LArELAa0DAx//8ALQAABFcEOgIGAI0AAP//AEX/6AQfBFICBgBTAAD////l/mAEJQQ6AgYAdgAA//8AbgAAA+0EOgIGAFoAAP///8QAAAP0BDoCBgBcAAD//wBn//QC3gWzAiYAwgAAAQYAaozsAAwAsAAvsCTcsA/QMDH//wBn/+UD+gWzAiYAygAAAQYAanvs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3LAi0DAx//8Ak//mBUAG+gImAN0AAAEHAHAA7AFKAAkAsAEvsBHcMDEA////pf5FA+wFuAImAF0AAAEGAHAvCAAJALABL7AQ3DAxAP//AJP/5gVABwkCJgDdAAABBwBqARsBQgAMALABL7Am3LAR0DAx////pf5FA+wFxwImAF0AAAEGAGpeAAAMALABL7Al3LAQ0DAx//8Ak//mBUAHQQImAN0AAAEHAKUBXQFCABYAsABFWLABLxuxARw+WbAT3LAX0DAx////pf5FBF4F/wImAF0AAAEHAKUAoAAAABYAsABFWLABLxuxARg+WbAS3LAW0DAx//8AzgAABUQHCQImAOAAAAEHAGoBRAFCABYAsABFWLASLxuxEhw+WbAo3LAc0DAx//8AewAABAAFswImAPgAAAEGAGpp7AAMALAIL7Ao3LAT0DAx//8ARQAABpYHCQAmAOUPAAAnAC0ElQAAAQcAagIIAUIAFgCwAEVYsAovG7EKHD5ZsCHcsC3QMDH//wAwAAAFqQWzACYA/QAAACcAjAQKAAABBwBqAWr/7AAWALAARViwCi8bsQoYPlmwIdywLdAwMf///9T+RQUrBbACJgA8AAAABwGvA5UAAP///8T+RQP0BDoCJgBcAAAABwGvAqoAAP//AEv/6AR1BgACBgBIAAD////K/kUFZQWwAiYA3AAAAAcBrwQkAAD////I/kUESgQ6AiYA8QAAAAcBrwM7AAD///+v/p8EiwWwAiYAJQAAAAcArATcAAD//wAz/p8DzwRRAiYARQAAAAcArAQpAAD///+vAAAEiwe5AiYAJQAAAQcAqgUBAUYACQCwBC+wGNwwMQD//wAz/+gDzwaDAiYARQAAAQcAqgRzABAACQCwGC+wOdwwMQD///+vAAAF7QfDAiYAJQAAAQcBtwDyAS4AFgCwAEVYsAUvG7EFHD5ZsA7csBTQMDH//wAz/+gFXwaOAiYARQAAAQYBt2T5ABYAsABFWLAYLxuxGBg+WbAv3LA10DAx////rwAABIsHvwImACUAAAEHAbYA+AE9ABYAsABFWLAFLxuxBRw+WbAM3LAT0DAx//8AM//oA/0GiQImAEUAAAEGAbZqBwAWALAARViwGC8bsRgYPlmwL9ywNNAwMf///68AAAVsB+oCJgAlAAABBwG1APMBGwAWALAARViwBS8bsQUc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ALAARViwBC8bsQQcPlmwDNywENAwMf//ADP/6APPBesCJgBFAAABBwCrA/L//QAWALAARViwGC8bsRgYPlmwLdywMdAwMf//ADsAAASxBywCJgApAAABBwCrBE4BPgAWALAARViwBi8bsQYcPlmwDdywEdAwMf//AEX/6gPgBesCJgBJAAABBwCrA9f//QAWALAARViwCC8bsQgYPlmwIdywJdAwMf///98AAAKKBywCJgAtAAABBwCrAwQBPgAWALAARViwAi8bsQIcPlmwBdywCdAwMf///40AAAI4BekCJgCMAAABBwCrArL/+wAWALAARViwAi8bsQIYPlmwBdywCdAwMf//AHf/5wUNByICJgAzAAABBwCrBKEBNAAWALAARViwCi8bsQocPlmwJNywKNAwMf//AEX/6AQfBesCJgBTAAABBwCrA+D//QAWALAARViwAC8bsQAYPlmwJNywKNAwMf//ADoAAATCByACJgA2AAABBwCrBEMBMgAWALAARViwBC8bsQQcPlmwGdywHdAwMf//AB8AAALUBesCJgBWAAABBwCrA0n//QAWALAARViwCi8bsQoYPlmwEtywDdAwMf//AGf/5wUgByACJgA5AAABBwCrBHsBMgAWALAARViwCi8bsQocPlmwFNywGNAwMf//AFv/6AQeBesCJgBZAAABBwCrA+T//QAWALAARViwBy8bsQcYPlmwFdywGdAwMf///7IAAAU8Bj8AJgDPZAAABwCt/pEAAP//ADv+qQSgBbACJgAmAAAABwCsBJgACv//AB/+lgP+BgACJgBGAAAABwCsBIb/9///ADv+qQTVBbACJgAoAAAABwCsBJcACv//AEv+nwR1BgACJgBIAAAABwCsBJkAAP//ADv+CQTVBbACJgAoAAAABwGiAR/+qv//AEv9/wR1BgACJgBIAAAABwGiASH+oP//ADv+qQV3BbACJgAsAAAABwCsBPoACv//AB/+qQPjBgACJgBMAAAABwCsBH8ACv//ADsAAAVQBy4CJgAvAAABBwB1AbABMAATALAARViwBS8bsQUcPlmwDtwwMQD//wAgAAAEIgc/AiYATwAAAQcAdQF9AUEACQCwBS+wD9wwMQD//wA7/vgFUAWwAiYALwAAAAcArATSAFn//wAg/uUEGgYAAiYATwAAAAcArARQAEb//wA7/qkDsQWwAiYAMAAAAAcArASdAAr////y/qkB7gYAAiYAUAAAAAcArAM3AAr//wA7/qkGtwWwAiYAMQAAAAcArAWnAAr//wAe/qkGagRSAiYAUQAAAAcArAWrAAr//wA7/qkFdwWwAiYAMgAAAAcArAT+AAr//wAf/qkD4wRSAiYAUgAAAAcArARmAAr//wA7AAAE8wdAAiYANAAAAQcAdQG0AUIAEwCwAEVYsAMvG7EDHD5ZsBbcMDEA////1/5gBDYF9QImAFQAAAEHAHUBkf/3ABMAsABFWLANLxuxDRg+WbAh3DAxAP//ADr+qQTCBbACJgA2AAAABwCsBJUACv///+7+qQLUBFQCJgBWAAAABwCsAzMACv//ACf+nwSjBccCJgA3AAAABwCsBKQAAP//AC7+lwO2BFACJgBXAAAABwCsBG3/+P//AKj+nwUJBbACJgA4AAAABwCsBJYAAP//AEP+nwKUBUACJgBYAAAABwCsA/oAAP//AKQAAAVhBy0CJgA6AAABBwCkAOEBRgATALAARViwAS8bsQEcPlmwCtwwMQD//wBuAAAD7QXiAiYAWgAAAQYApBv7ABMAsABFWLABLxuxARg+WbAK3DAxAP//AKT+qQVhBbACJgA6AAAABwCsBMoACv//AG7+qQPtBDoCJgBaAAAABwCsBDgACv//AMP+qQdBBbACJgA7AAAABwCsBc0ACv//AID+qQX+BDoCJgBbAAAABwCsBSwACv///+v+qQTOBbACJgA+AAAABwCsBJgACv///+3+qQPOBDoCJgBeAAAABwCsBEIACv///wz/5wVTBdYAJgAzRgAABwFa/hoAAP///6UAAAPjBRwCJgG6AAAABwCt/6v+3f///+EAAAQrBR8AJgG+PAAABwCt/sD+4P////0AAATWBRwAJgHBPAAABwCt/tz+3f//AAEAAAHmBR4AJgHCPAAABwCt/uD+3///AB3/6gRYBRwAJgHICgAABwCt/vz+3f///5sAAAShBRwAJgHSPAAABwCt/nr+3f//ABYAAAR0BRsAJgHzCgAABwCt/xT+3P///6UAAAPjBI0CBgG6AAD//wAdAAAD5wSNAgYBuwAA//8AHQAAA+8EjQIGAb4AAP///9wAAAQOBI0CBgHTAAD//wAdAAAEmgSNAgYBwQAA//8AKgAAAaoEjQIGAcIAAP//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DAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLhAuEA4wLjAuMA5ALlAuUA5QLnAucA5gLpAukA5wLrAusA6ALtAu0A6QLvAvIA6gL0AvQA7gL2AvYA7wNTA1gA8ANbA2oA9gNtA20BBgNxA3EBBwNzA3MBCAN3A3cBCQN6A3sBCgN9A4YBDAOIA4oBFgOMA5EBGQOTA5QBHwOWA5kBIQOfA6ABJQOiA6IBJwOkA6QBKAOmA6kBKQOsA7EBLQOzA7MBMwO3A7gBNAO9A70BNgO/A8gBNwPLA8wBQQPOA9EBQwPYA9kBRwPdA90BSQPfA+UBSgPqA+sBUQPvBBcBUwQZBBkBfAQbBCgBfQQwBDABiwQzBDMBjAQ1BDUBjQRBBEYBjgRJBEkBlARLBEsBlQRNBE0BlgRPBFABlwRVBFgBmQRbBFsBnQRdBF4BngRgBGABoARkBGQBoQRmBGYBogRqBGoBowSqBKoBpAABABP/IAACAFb/5gG6/8AAAQG6AA4AAwANABQAQQASAGEAEwABAPX/9QABAMMADQACALf/wgDDABAAAQDD/+IAAQDG//IAAQDDAA4AAgDJ/+0A9f/AAAkAvv/mAMH/6wDC/+kAxP/wAMX/5wDJ/+MAy//OAMz/1ADN/9sABQDB/+wAwwAPAMX/6gDJ/8QAy//nAAUASv/pAMH/7gDD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Aor/6wKM/+sCjv/rApD/6wKS/+sClP/rApb/6wKY/+sCmv/rApz/6wKe/+sCoP/rAqL/6wKk/+sCsv74Asb/6wLI/+sCyv/rAtsAFALdABQC3wAUAuL/6gLk/+oC5v/qAuj/6gLq/+oC7P/qAvD/6ANT/1YDW/9WA2v/6wNv/+oDcf/rA3P/6AN2/+oDd//rA3j/6gN//vgDg/9WA44AFAOQ/94Dkf/rA5P/6wOV/+sDlv/oA5j/6wOf/+gDp//oA6//VgOw/94Ds//rA7j/6AO5/+sDvv/rA8D/6APF/1YDxv/eA8f/VgPI/94DzP/rA87/6wPP/+sD2f/rA9v/6wPd/+sD4f/oA+P/6APl/+gD7P/rA+//VgPw/94D8f9WA/L/3gPz/1YD9P/eA/X/VgP2/94D9/9WA/j/3gP5/1YD+v/eA/v/VgP8/94D/f9WA/7/3gP//1YEAP/eBAH/VgQC/94EA/9WBAT/3gQF/1YEBv/eBAj/6wQK/+sEDP/rBA7/6wQQ/+sEEv/rBBT/6wQW/+sEHP/rBB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/o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/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/v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//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAOA+0ADgPuAA8D7wAPA/EADwPzAA8D9QAPA/cADwP5AA8D+wAPA/0ADwP/AA8EAQAPBAMADwQFAA8EQf/mBEP/5gRF/+YETf/mBE8ADgRR/+UEUv/oBFP/5QRU/+gEVwAOBGgADgRpAA8Eav/mAC4AOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2f/lANz/5QDd/+kA8f/qAQP/6gEy/+MBOv/jAVH/5QJm/+QC2//jAt3/4wLf/+MC7//kAvH/5ANY/+QDZ//kA2j/5QNq/+QDgv/pA47/4wOP/+UDpv/kA7//5APC/+UD0P/lA+D/6QPi/+kD5P/pA+r/5QPt/+UD7v/qBEH/5ARD/+QERf/kBE3/4wRP/+UEV//lBGj/5QRp/+oEav/kACEAOP/iADz/5ADR/+IA0//kANX/4gDZ/+QA3P/kAN3/6QDx/+sBA//rATL/4gE6/+IBUf/kAtv/4gLd/+IC3//iA2j/5AOC/+kDjv/iA4//5APC/+QD0P/kA+D/6QPi/+kD5P/pA+r/5APt/+QD7v/rBE3/4gRP/+QEV//kBGj/5ARp/+sAFwA4/+sAPf/zANH/6wDV/+sBMv/rATr/6wJm//MC2//rAt3/6wLf/+sC7//zAvH/8wNY//MDZ//zA2r/8wOO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ABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQARALIAsgAFALMAswARALoAugAVALwAvAACAMAAwAAYAMcAyAAVAMoAygALANEA0QAKANIA0gAFANMA0wABANUA1QAKANkA2QASANwA3AABAN0A3QAQAOAA4AAPAOsA6wAYAO0A7QAWAO8A8AAYAPEA8QAEAPIA9AAYAPYA9gAVAPcA9wAYAPgA+AADAPkA+gAYAP0A/QAYAP8A/wAYAQIBAgAVAQMBAwAEAQQBBAAYAQcBBwAFAQwBDAARARYBFgAFARcBFwAIARgBGAANARkBGQACARoBGgAFARwBHAAFAR0BHQAVAR4BHgAFASABIAAFASEBIQAVATIBMgAKATUBNQAYATgBOAAFATkBOQAVAToBOgAKAUQBRAAYAUkBSQAYAUsBTAAVAVEBUQABAVUBVQAFAVYBVgAVAWkBagAXAWwBbQAHAW4BbgATAW8BcQAHAXIBcgATAXYBdwATAigCKQAFAisCLAAFAkYCRgAXAkwCUgARAlMCUwAFAl0CYQAFAmICZQAGAmYCZgAOAmcCbQAaAm4CcgAVAncCdwAYAngCfAAIAn0CgAALAoECggACAoMCgwARAoQChAAaAoUChQARAoYChgAaAocChwARAogCiAAaAokCiQAFAooCigAVAosCiwAFAowCjAAVAo0CjQAFAo4CjgAVAo8CjwAFApACkAAVApICkgAVApQClAAVApYClgAVApgCmAAVApoCmgAVApwCnAAVAp0CnQAFAp4CngAVAp8CnwAFAqACoAAVAqECoQAFAqICogAVAqMCowAFAqQCpAAVArICsgAcAr8CvwAYAsECwQAYAsMCxAAYAsUCxQAFAsYCxgAIAscCxwAFAsgCyAAIAskCyQAFAsoCygAIAtEC0QAZAtIC0gAbAtMC0wAZAtQC1AAbAtUC1QAZAtYC1gAbAtcC1wAZAtgC2AAbAtkC2QAZAtoC2gAbAtsC2wAKAt0C3QAKAt8C3wAKAuEC4QAGAuIC4gALAuMC4wAGAuQC5AALAuUC5QAGAuYC5gALAucC5wAGAugC6AALAukC6QAGAuoC6gALAusC6wAGAuwC7AALAu0C7QAJAu8C7wAOAvAC8AACAvEC8QAOAvIC8gAUAvMC8wAMAvQC9AAUAvUC9QAMAvYC9gAUAvcC9wAMAvoC+gAFA1MDUwARA1cDVwAFA1gDWAAOA1sDWwARA14DXgAUA2QDZAAFA2cDZwAOA2gDaAASA2oDagAOA2sDawAVA20DbQAYA28DbwALA3EDcQAIA3MDcwACA3YDdgALA3cDdwAIA3gDeAALA38DfwAcA4IDggAQA4MDgwARA4oDigAFA40DjQAFA44DjgAKA48DjwASA5ADkAAaA5EDkQAVA5IDkgAYA5MDkwAIA5QDlAAYA5UDlQAVA5YDlgACA5cDlwAWA5gDmAAVA5kDmQAYA5oDmgAbA54DngAYA58DnwACA6ADoAAJA6IDogAJA6QDpAAJA6YDpgAOA6cDpwACA6gDqQAHA6wDrAAHA64DrgAYA68DrwARA7ADsAAaA7MDswAVA7QDtAAYA7cDtwANA7gDuAACA7kDuQAVA7oDugAFA70DvQAFA74DvgAVA78DvwAOA8ADwAACA8IDwgASA8MDwwAWA8UDxQARA8YDxgAaA8cDxwARA8gDyAAaA8wDzAAVA84DzwAVA9AD0AASA9ED0QAWA9UD1QAYA9cD1wAYA9gD2AAFA9kD2QAIA9oD2gAFA9sD2wAVA9wD3AAFA90D3QAIA+AD4AAQA+ED4QACA+ID4gAQA+MD4wACA+QD5AAQA+UD5QACA+YD5gAPA+cD5wADA+kD6QAYA+oD6gASA+sD6wAWA+wD7AAVA+0D7QABA+4D7gAEA+8D7wARA/AD8AAaA/ED8QARA/ID8gAaA/MD8wARA/QD9AAaA/UD9QARA/YD9gAaA/cD9wARA/gD+AAaA/kD+QARA/oD+gAaA/sD+wARA/wD/AAaA/0D/QARA/4D/gAaA/8D/wARBAAEAAAaBAEEAQARBAIEAgAaBAMEAwARBAQEBAAaBAUEBQARBAYEBgAaBAgECAAVBAoECgAVBAwEDAAVBA4EDgAVBBAEEAAVBBIEEgAVBBQEFAAVBBYEFgAVBBsEGwAFBBwEHAAIBB0EHQAFBB4EHgAIBB8EHwAFBCAEIAAIBCEEIQAFBCIEIgAIBCMEIwAFBCQEJAAIBCUEJQAFBCYEJgAIBCcEJwAFBCgEKAAIBCkEKQAFBCoEKgAVBCsEKwAFBCwELAAVBC0ELQAFBC4ELgAVBC8ELwAFBDAEMAAIBDEEMQAFBDIEMgAVBDMEMwAGBDQENAALBDUENQAGBDYENgALBDgEOAALBDoEOgALBDwEPAALBD4EPgALBEAEQAALBEEEQQAOBEIEQgACBEMEQwAOBEQERAACBEUERQAOBEYERgACBEoESgAYBEwETAAYBE0ETQAKBE8ETwASBFAEUAAWBFEEUQAPBFIEUgADBFMEUwAPBFQEVAADBFYEVgAYBFcEVwASBFgEWAAWBGMEYwAYBGUEZQAYBGcEZwAYBGgEaAABBGkEaQAEBGoEagAOBHAEcAAXBKoEqgAFAAEAAAAKAgYG8AAEREZMVAAaY3lybABIZ3JlawB2bGF0bgCkAAQAAAAA//8AEgAAAAoAFAAeACgANABBAEsAVQBfAGkAcwB9AIcAkQCbAKUArwAEAAAAAP//ABIAAQALABUAHwApADUAQgBMAFYAYABqAHQAfgCIAJIAnACmALAABAAAAAD//wASAAIADAAWACAAKgA2AEMATQBXAGEAawB1AH8AiQCTAJ0ApwCxACgABkFaRSAAVENSVCAAfk1PTCAAqE5BViAA1FJPTSABAFRVUiABLAAA//8AEwADAA0AFwAhACsAMgA3AEQATgBYAGIAbAB2AIAAigCUAJ4AqACyAAD//wASAAQADgAYACIALAA4AEUATwBZAGMAbQB3AIEAiwCVAJ8AqQCzAAD//wASAAUADwAZACMALQA5AEYAUABaAGQAbgB4AIIAjACWAKAAqgC0AAD//wATAAYAEAAaACQALgA6AD4ARwBRAFsAZQBvAHkAgwCNAJcAoQCrALUAAP//ABMABwARABsAJQAvADsAPwBIAFIAXABmAHAAegCEAI4AmACiAKwAtgAA//8AEwAIABIAHAAmADAAPABAAEkAUwBdAGcAcQB7AIUAjwCZAKMArQC3AAD//wATAAkAEwAdACcAMQAzAD0ASgBUAF4AaAByAHwAhgCQAJoApACuALgAuWMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGMyc2MEWGNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmNjbXAEXmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRsaWcEZmRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa", "Roboto-Medium.ttf": "AAEAAAARAQAABAAQR1BPU32qcYwAAgioAABZDEdTVUJMnCjgAAJhtAAAGWhPUy8yoQuxtgAAAZgAAABgY21hcEAmSHIAABpsAAASyGN2dCAElytKAAAvvAAAAFZmcGdte/lhqwAALTQAAAG8Z2FzcAAIABMAAgicAAAADGdseWaunmLpAAA53AABy8xoZG14PT88IAAAFYAAAATsaGVhZPh7qwgAAAEcAAAANmhoZWEK7wqbAAABVAAAACRobXR4JPNE9QAAAfgAABOIbG9jYd3eZq0AADAUAAAJxm1heHAHEgL1AAABeAAAACBuYW1lPWNvTAACBagAAALUcG9zdP9tAGQAAgh8AAAAIHByZXAbsfg2AAAu8AAAAMwAAQAAAAIAABFApG1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpT6JP3VCVwIcwAAAAkAAgAAAAAAAAABAAAHbP4MAAAJa/ok/kEJXAABAAAAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYATgAFAAEAAAAAAA4AAAIAAhYABgABAAMElQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAQAAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA4wAZAAAAAAAAAAAAf4AAAH+AAACJQCPApgAZQTiAGAEjABkBeAAYwUdAFYBWgBSAsoAgALSACgDiQAbBHUARAHCABwCoABHAjwAhwMqAAIEjABpBIwAqASMAFEEjABPBIwANASMAIEEjAB1BIwARQSMAGgEjABdAh8AggHnAC4EEQA/BHoAkQQqAIAD5AA8BygAWwVTABIFDACUBTkAZgU6AJQEhgCUBGUAlAVyAGoFrwCUAkIAowRxAC0FCwCUBFQAlAcBAJQFrgCUBYYAZgUdAJQFhgBgBP4AlATUAEoE2wAtBTcAfQUtABIHCgAwBRAAKQTgAAcE0QBQAjEAhANYABQCMQAMA2sANQOcAAMClAAxBFQAWgSBAHwEMABPBIQATwRLAFMC1gAtBIkAUgRxAHkCCwB9AgH/tQQtAH0CCwCMBvYAfARzAHkEjgBPBIEAfASLAE8C0AB8BCEASwKpAAgEcgB3A/UAFgXyACEEBgAfA+UADAQGAFICrwA4AgIArgKvABsFUQB1Ah4AhgR9AGQEtQBeBZ0AXQTgABkB/ACIBPgAWgOFAF0GRABXA5EAjQPiAFcEbQB/BkQAVwPbAIcDCgB/BEoAXwL2ADwC9gA3ApsAcAS7AJID7QBFAkIAjgIQAG0C9gCAA6cAdwPiAF0F0ABZBisAUAZXAGcD5ABCB4X/9gREAE0FhABpBMoAlATnAIgGwQBIBKcAZwSRAEMEiABPBJcAggWwAB8CGgCPBJgAjgRkACICTwAhBZMAkASIAH4HtABkBzoAWwIMAIsFiABRAtD/5AWKAFgEngBPBaQAfQTyAHcCJv+1BDwAWQPmAJQDsAByA9wAhwN8AHUCCwCBArIAeAJNACkD2AB6Ax8ASQJsAIIAAPyOAAD9XgAA/HMAAP0+AAD8DAAA/RwCXQDGBDwAZwJCAI4EdQCbBb8AGQV6AFsFOAAgBJAAbAWxAJsEkABHBe8ASgWqAEQFWwBrBIQAVgTGAJYEDgAgBIgAVARgAGAEGgBhBIgAfgShAHMCqgCpBGoAFgQTAGQE8wAtBIgAgAQ3AFIEkABSBC0APwRgAIAF0ABEBckATwaUAGYEswB2BHv/4QZxADMF/gAiBVkAaAiIAC0IjwCbBlsAMQWqAJIFCACQBgYAJAeiABYE1gBJBagAlAWpAC0FCgA5Bl8ATwX5AJIFiQCOB5sAmAf5AJgGGgAYBvkAmwUHAJAFUABrB1QAoAT3ACAEfQBbBI8AjwNaAIUE9gAnBnYAHgQWAE0EmACGBG4AjwSaACEGAwCPBJcAhgSYAIYD9QAjBdMAVATTAIYEZgBfBo4AhgbsAH4FFwAfBm8AjwRoAI8EPABRBoQAkQRwACcEcf/bBDwAVAbRAB4G5ACGBIn/7gSYAIYHSQCIBk8AcARn/+AHKACYBgEAhgUMABwEYAAKB0IArAY2AJ0G7QCABeYAggkyAKMH+QCPBCAAKAPwADMFegBfBIgATwUaABAEDgAgBXoAXwSIAE8HRQCIBkQAdAdJAIgGTwBwBRoAZgRKAFwE/wBtAAD8ZgAA/HMAAP17AAD9pQAA+iQAAPpNBGf/4AUTAJQEhgB8BGoAjwOhAH4EtwCbBCAAfgUsAJAEqwCOBpUANAWkAD0H0ACUBaoAfghHAJsG9QB+BioAZwT/AGEHMQAtBXAAJgV0AIAEcwB0BYcAhQYkABYEw//LBSEAkAR4AI4FrwCbBIgAfgWIAFEEpgBbBKYAXQTHADQDUwAtBQcAUgbxAGgG3QBeBlMAPAUoAC8EewBIBD4AdAe+AEIGnQBAB/0AlAaeAHcFBABdBCwAVQWqACEFHQBEBVUAgQMsAGcEFAAACCkAAAQUAAAIKQAAArkAAAIKAAABXAAABH8AAAIwAAABogAAANEAAAAAAAACoQBHAqEARwUpAJ0GMACBA50ABAHAAGMBvAAzAc4AMgGoAEoDFABsAxsAQAMIADIEXQBABJkAXALLAIgD+gCKBaYAigFsAEcHpwBKAnIAbAJpAFQDnAAtAvYANQNcAGkEtQBfBnAAIQa4AJgIkwCUB4gANQaMAHwEjABeBfUAIQQ0ACgEogAhBV4ATwV9ACgF5ABwA+IATAguAJAFCQBtBRQAlgY1AFkG3QBUBtEAWwaiAFgEkQBiBZYApgTZAEAEgwCeBLIAOwhFAF4CLf+vBI4AZQR6AJEEEQA8BCoAgAQMACQCWwChApgAYwHxAEUFGwAtBKgAGAS8AC0HIwAtByMALQURAC0GtwBLAAAAAAgwAFkINQBcBDMAOgSTAE8CEP+wAbMAXAOhAHUDoQB1A6EAdQQLAHUECwB1BAv/TAQLAHoDoQB1AgUAlASeAAkEYAB2BIAATwR6AHYD4AB2A8UAdgSmAFQE3gB2AfwAhQPVACQEWwB2A7kAdgYGAHYE3QB2BMAATwRtAHYEwABMBFwAdgQ0AD4EOwAkBIQAZwR7AAkGBwAoBF4AFQQ8AAUEKgBBAvYASwL2AIAC9gA8AvYANwL2ADUC9gBPAvYATQL2ADYC9gBLAvYARgO5AJACsgCWBDsACgS7AFYFRACbBSgAmwQwAIEFOQCbBC0AgQQ0AD4EZgA4BE0ADgO5AHYEewAJBMAATwR7AAkDmABCBNgAdgQZAEQFnQBQBVQAUATkAF8FkQAkBIAATwdUACQHVwB2BZcAJATXAHYEcQB2BVkAJwY6ABoERgBCBOQAdgRcAHYEywAkBEYAHwVdAHYEjABBBoQAdgcKAHYFWgAKBiAAdgRnAHYEgAA8BpIAdgSIAEMEIgAKBpIAGgSdAHYFGgB2BW4AJAXwAE8EWgAFBMQAFQaVACQEjABBBIwAdgX+AAoE0gBPBEYAQgTAAE8EZgA4A/cARgg2AHYE6wAoBIgAfAQ9AFAEmABPA6QAWwShAEwElAB8BJ8ATwRLAFMEiQBRBXoAawWiAGsFhgCbBeAAawXiAGsEGwCXBIIAbgO5AHYEVwAPBL4ANQL2AEsC9gA1AvYATwL2AE0C9gA2AvYASwL2AEYEawBmBC4AQwaYAE8EtABzBOsAYgIm/7UCJv+1AhsAjwIb//sCGwCPBGAAdgH+AAACoABHBVj/9wVY//cEj//UBNsALQKp/+gFUwASBVMAEgVTABIFUwASBVMAEgVTABIFUwASBTkAZgSGAJQEhgCUBIYAlASGAJQCQv/IAkIAowJC/8sCQv+/Ba4AlAWGAGYFhgBmBYYAZgWGAGYFhgBmBTcAfQU3AH0FNwB9BTcAfQTgAAcEVABaBFQAWgRUAFoEVABaBFQAWgRUAFoEVABaBDAATwRLAFMESwBTBEsAUwRLAFMCGv+0AhoAjwIa/7cCGv+rBHMAeQSOAE8EjgBPBI4ATwSOAE8EjgBPBHIAdwRyAHcEcgB3BHIAdwPlAAwD5QAMBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBTkAZgQwAE8FOQBmBDAATwU5AGYEMABPBTkAZgQwAE8FOgCUBRoATwSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIYAlARLAFMFcgBqBIkAUgVyAGoEiQBSBXIAagSJAFIFcgBqBIkAUgWvAJQEcQB5AkL/swIa/58CQv+5Ahr/pQJC/98CGv/LAkIAFwILAAACQgCdBrMAowQMAH0EcQAtAib/tQULAJQELQB9BFQAlAILAIoEVACUAgsAVQRUAJQCoQCMBFQAlALnAIwFrgCUBHMAeQWuAJQEcwB5Ba4AlARzAHkEc/+lBYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBP4AlALQAHwE/gCUAtAATwT+AJQC0AA4BNQASgQhAEsE1ABKBCEASwTUAEoEIQBLBNQASgQhAEsE1ABKBCEASwTbAC0CqQAIBNsALQKpAAgE2wAtAtEACAU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwU3AH0EcgB3BTcAfQRyAHcFNwB9BHIAdwcKADAF8gAhBOAABwPlAAwE4AAHBNEAUAQGAFIE0QBQBAYAUgTRAFAEBgBSB4X/9gbBAEgFhABpBIgATwR6/6YEev+mBDsAJASeAAkEngAJBJ4ACQSeAAkEngAJBJ4ACQSeAAkEgABPA+AAdgPgAHYD4AB2A+AAdgH8/6YB/ACDAfz/qQH8/50E3QB2BMAATwTAAE8EwABPBMAATwTAAE8EhABnBIQAZwSEAGcEhABnBDwABQSeAAkEngAJBJ4ACQSAAE8EgABPBIAATwSAAE8EegBqA+AAdgPgAHYD4AB2A+AAdgPgAHYEpgBUBKYAVASmAFQEpgBUBN4AdgH8/5EB/P+XAfz/vQH8ABUB/AB8A9UAJARbAHYDuQB2A7kAdgO5AHYDuQB2BN0AdgTdAHYE3QB2BMAATwTAAE8EwABPBFwAdgRcAHYEXAB2BDQAPgQ0AD4ENAA+BDQAPgQ7ACQEOwAkBDsAJASEAGcEhABnBIQAZwSEAGcEhABnBIQAZwYHACgEPAAFBDwABQQqAEEEKgBBBCoAQQVTABIE6v9KBhP/UwKm/1YFmv+nBUT+4QVv/7ICqv+HBVMAEgUMAJQEhgCUBNEAUAWvAJQCQgCjBQsAlAcBAJQFrgCUBYYAZgUdAJQE2wAtBOAABwUQACkCQv+/BOAABwSEAFYEYABgBIgAfgKqAKkEYACABJgAjgSOAE8EuwCSA/UAFgQGAB8Cqv/MBGAAgASOAE8EYACABpQAZgSGAJQEdQCbBNQASgJCAKMCQv+/BHEALQUoAJsFCwCUBQoAOQVTABIFDACUBHUAmwSGAJQFqACUBwEAlAWvAJQFhgBmBbEAmwUdAJQFOQBmBNsALQUQACkEVABaBEsAUwSYAIYEjgBPBIEAfAQwAE8D5QAMBAYAHwRLAFMDWgCFBCEASwILAH0CGv+rAgH/tQRuAI8D5QAMBwoAMAXyACEHCgAwBfIAIQcKADAF8gAhBOAABwPlAAwBWgBSApgAZQRKAI8CJv+xAbwAMwcBAJQG9gB8BVMAEgRUAFoEhgCUBagAlARLAFMEmACGBaoARAXJAE8FGgAQBA7/8QhzAE8JawBmBNYASQQWAE0FOQBmBDAATwTgAAcEDgAgAkIAoweiABYGdgAeAkIAowVTABIEVABaBVMAEgRUAFoHhf/2BsEASASGAJQESwBTBYgAUQQ8AFkEPABZB6IAFgZ2AB4E1gBJBBYATQWoAJQEmACGBagAlASYAIYFhgBmBI4ATwV6AF8EiABPBXoAXwSIAE8FUABrBDwAUQUKADkD5QAMBQoAOQPlAAwFCgA5A+UADAWJAI4EZgBfBvkAmwZvAI8FEAApBAYAHwSEAE8FqQAtBJoAIQVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABAEVP+aBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgVTABIEVABaBVMAEgRUAFoFUwASBFQAWgSGAJQESwBTBIYAlARLAFMEhgCUBEsAUwSGAJQESwBTBIb/1QRL/44EhgCUBEsAUwSGAJQESwBTBIYAlARLAFMCQgCjAhoAjwJCAJQCCwB4BYYAZgSOAE8FhgBmBI4ATwWGAGYEjgBPBYYAJwSO/6MFhgBmBI4ATwWGAGYEjgBPBYYAZgSOAE8FigBYBJ4ATwWKAFgEngBPBYoAWASeAE8FigBYBJ4ATwWKAFgEngBPBTcAfQRyAHcFNwB9BHIAdwWkAH0E8gB3BaQAfQTyAHcFpAB9BPIAdwWkAH0E8gB3BaQAfQTyAHcE4AAHA+UADATgAAcD5QAMBOAABwPlAAwEogBPBKIATwUoAJsEbgCPBa8AlASXAIYE2wAtA/UAIwUQACkEBgAfBYkAjgRmAF8FiQCOBGYAXwR1AJsDWgCFB6IAFgZ2AB4GJAAWBMP/ywRxAHkFB//QBQf/0AR1//ADWv/iBTz/4wRE/64FqACUBJgAhgWvAJQElwCGBwEAlAYDAI8FqQAtBJoAIQTgAAcEDgAgBRAAKQQGAB8EYABgBGUAAgYwAIEEjABRBIwATwSMADQEjACBBKAAXQS0AH0FcgBqBIkAUgWuAJQEcwB5BVMAEgRUAA0EhgBIBEsAAQJC/vYCGv7iBYYAZgSOABYE/gAyAtD/bgU3AHEEcgAPBN/+rAUMAJQEgQB8BToAlASEAE8FOgCUBIQATwWvAJQEcQB5BQsAlAQtAH0FCwCUBC0AfQRUAJQCCwB4BwEAlAb2AHwFrgCUBHMAeQUdAJQEgQB8BP4AlALQAHIE1ABKBCEASwTbAC0CqQAIBS0AEgP1ABYFLQASA/UAFgcKADAF8gAhBNEAUAQGAFIFzP4cBJ4ACQQc/yoFGv83Ajj/OQTK/5MEeP7oBO7/pASeAAkEYAB2A+AAdgQqAEEE3gB2AfwAhQRbAHYGBgB2BMAATwRtAHYEOwAkBDwABQReABUB/P+dBDwABQPgAHYDuQB2BDQAPgH8AIUB/P+dA9UAJARbAHYERgAfBJ4ACQRgAHYDuQB2A+AAdgTkAHYGBgB2BN4AdgTAAE8E2AB2BG0AdgSAAE8EOwAkBF4AFQRGAEIE3gB2BIAATwQ8AAUF/gAKBOQAdgRGAB8FnQBQBVMAEgRUAFoEhgCUBEsAUwIaAHgAAAABAAAE5AkLBAAAAgICAwYFBwYCAwMEBQIDAwQFBQUFBQUFBQUFAgIFBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcFBAUDAgMGAgUFBgUCBgQHBAQFBwQDBQMDAwUEAwIDBAQHBwcECAUGBQYIBQUFBQYCBQUDBgUJCAIGAwYFBgYCBQQEBAQCAwMEBAMAAAAAAAADBQMFBgYGBQYFBwYGBQUFBQUFBQUDBQUGBQUFBQUHBwcFBQcHBgoKBwYGBwkFBgYGBwcGCQkHCAYGCAYFBQQGBwUFBQUHBQUEBwUFBwgGBwUFBwUFBQgIBQUIBwUIBwYFCAcIBwoJBQQGBQYFBgUIBwgHBgUGAAAAAAAABQYFBQQFBQYFBwYJBgkIBwYIBgYFBgcFBgUGBQYFBQUEBggIBwYFBQkHCQcGBQYGBgQFCQUJAwICBQICAQADAwYHBAICAgIDBAMFBQMEBgIJAwMEAwQFBwgKCAcFBwUFBgYHBAkGBgcICAcFBgUFBQkCBQUFBQUDAwIGBQUICAYIAAkJBQUCAgQEBAUFBQUEAgUFBQUEBAUFAgQFBAcFBQUFBQUFBQUHBQUFAwMDAwMDAwMDAwQDBQUGBgUGBQUFBQQFBQUEBQUGBgYGBQgIBgUFBgcFBgUFBQYFBwgGBwUFBwUFBwUGBgcFBQcFBQcFBQUFBAkGBQUFBAUFBQUFBgYGBwcFBQQFBQMDAwMDAwMFBQcFBgICAgICBQIDBgYFBQMGBgYGBgYGBgUFBQUDAwMDBgYGBgYGBgYGBgUFBQUFBQUFBQUFBQUCAgICBQUFBQUFBQUFBQQEBgUGBQYFBgUGBQYFBgUGBgUFBQUFBQUFBQUGBQYFBgUGBQYFAwIDAgMCAwIDCAUFAgYFBQIFAgUDBQMGBQYFBgUFBgUGBQYFBgMGAwYDBQUFBQUFBQUFBQUDBQMFAwYFBgUGBQYFBgUGBQgHBQQFBQUFBQUFCAgGBQUFBQUFBQUFBQUFBAQEBAICAgIFBQUF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AAADfwAABBsAAAQbAAAA3AAABBwAAAQiAAADhwAABCMAAAQkAAAA3QAABCUAAAQlAAADjgAABCYAAAQvAAAA3wAABDAAAAQwAAADjwAABDEAAAQ0AAAA6QAABDUAAAQ1AAADkAAABDYAAAQ4AAAA7QAABDkAAAQ5AAADkQAABDoAAAQ9AAAA8AAABD4AAAQ+AAADkgAABD8AAAQ/AAAA9AAABEAAAARBAAADkwAABEIAAARCAAAA9QAABEMAAARDAAADlQAABEQAAAREAAAA9gAABEUAAARFAAADlgAABEYAAARPAAAA9wAABFAAAARQAAADsgAABFEAAARRAAADlwAABFIAAARSAAABAQAABFMAAARTAAADmAAABFQAAARUAAABAgAABFUAAARYAAADmQAABFkAAARbAAABAwAABFwAAARcAAADnQAABF0AAARdAAADswAABF4AAAReAAADngAABF8AAARhAAABBgAABGIAAARiAAAEXAAABGMAAARvAAABCQAABHAAAARxAAADtAAABHIAAAR1AAABFgAABHYAAAR3AAADtgAABHgAAAR4AAADuQAABHkAAAR5AAADuAAABHoAAASGAAABGgAABIgAAASJAAABJwAABIoAAASLAAAEYQAABIwAAASMAAAEWwAABI0AAASRAAABKQAABJIAAASTAAAEXQAABJQAAASVAAABLgAABJYAAASXAAAEVgAABJgAAASZAAADugAABJoAAASbAAAESAAABJwAAASdAAABMAAABJ4AAASfAAAEXwAABKAAAAShAAABMgAABKIAAASjAAAESgAABKQAAASpAAABNAAABKoAAASrAAADvAAABKwAAAStAAAETAAABK4AAASvAAADvgAABLAAAASxAAAEaQAABLIAAASzAAAETgAABLQAAAS1AAABOgAABLYAAAS3AAAEUAAABLgAAAS6AAABPAAABLsAAAS7AAAEWgAABLwAAAS9AAABPwAABL4AAAS/AAAEWAAABMAAAATCAAADwAAABMMAAATEAAABQQAABMUAAATGAAAEZwAABMcAAATIAAABQwAABMkAAATKAAAEYwAABMsAAATMAAAEUgAABM0AAATOAAAEZQAABM8AAATXAAADwwAABNgAAATYAAABRQAABNkAAATZAAADzQAABNoAAATaAAADzAAABNsAAATfAAADzgAABOAAAAThAAABRgAABOIAAAT1AAAD0wAABPYAAAT3AAAEVAAABPgAAAT5AAAD5wAABPoAAAT7AAABSAAABPwAAAT9AAAD6QAABP4AAAT/AAAEawAABQAAAAUAAAABSgAABQEAAAUBAAAD6wAABQIAAAUQAAABSwAABREAAAURAAAEbQAABRIAAAUTAAAD7AAAHgAAAB4BAAADrgAAHj4AAB4/AAADrAAAHoAAAB6FAAADnwAAHqAAAB7xAAAD7gAAHvIAAB7zAAADpQAAHvQAAB75AAAEQAAAH00AAB9NAAAEqQAAIAAAACALAAABWwAAIBAAACARAAABZwAAIBMAACAUAAABaQAAIBUAACAVAAAEbwAAIBcAACAeAAABawAAICAAACAiAAABcwAAICUAACAnAAABdgAAIDAAACAwAAABeQAAIDIAACAzAAADpwAAIDkAACA6AAABegAAIDwAACA8AAADqQAAIEQAACBEAAABfAAAIHQAACB0AAABfQAAIH8AACB/AAABfgAAIKMAACCjAAAEbgAAIKQAACCkAAABfwAAIKYAACCqAAABgAAAIKsAACCrAAAERwAAIKwAACCsAAABhQAAILEAACCxAAABhgAAILkAACC6AAABhwAAILwAACC9AAABiQAAIQUAACEFAAABiwAAIRMAACETAAABjAAAIRYAACEWAAABjQAAISIAACEiAAABjgAAISYAACEmAAAAuQAAIS4AACEuAAABjwAAIVsAACFeAAABkAAAIgIAACICAAABlAAAIgYAACIGAAAAsQAAIg8AACIPAAABlQAAIhEAACISAAABlgAAIhoAACIaAAABmAAAIh4AACIeAAABmQAAIisAACIrAAABmgAAIkgAACJIAAABmwAAImAAACJgAAABnAAAImQAACJlAAABnQAAJcoAACXKAAABnwAA7gEAAO4CAAABoAAA9sMAAPbDAAABogAA+wEAAPsEAAABpAAA/v8AAP7/AAABqgAA//wAAP/9AAABq7AALEuwCVBYsQEBjlm4Af+FsIQdsQkDX14tsAEsICBFaUSwAWAtsAIssAEqIS2wAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbAELCBGsAQlRlJY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seix/7IWsi6yRbJcsnOyi7KdsrSyy7LisvmzEbMoszqzUbNps4Czl7Ops7+z1bPstAS0ELQctDO0RbRbtHK0iLSetLW0zbTetPW1B7UdtS61RrVdtW+1hbWcta61xbXcte22BLYbtoW3J7c5t0u3Yrd4t4+3pre4t8m327fruAK4E7gquEC4V7huuNu5crmJuZq5sbnHud659LoLuiK6LrpAule6abqAupK6qbrAute67rr5uwS7G7snuzO7Srthu227ebuQu6e7s7u/u9S76bv1vAG8GLwqvDa8QrxZvGq8f7yWvKe8vrzVvO29Bb0XvSm9Nb1BvVO9ZL12vYi9n721vcG9zb3ZveW9974IvhS+IL4svji+T75bvnK+iL6avrC+x77evvG/BL8cvy+/jb/vwAbAHcA0wErAYsB5wJDAp8C+wNDA4cD4wQrBIcE4wWjBmMGowb/B1sHswf3CFcItwjnCRcJcwnPCicKgwrfCzcLkwvzDDsMlwzfDTcNew3bDjcOkw7rD0sPpw//EFsR9xI/EpcS8xM3E3sT0xQrFIcWOxaTFusXRxejF9MYKxhzGM8ZKxlXGa8aCxo7GpMawxsXG0cboxvTHC8ccxzPHRsdYx2THdceHx53Hqce6x8bH3Mfox/7ID8gmyDnITMityMTI2sjxyQjJH8k1yUDJTMlYyWTJcMl8yYjJo8mrybPJu8nDycvJ08nbyePJ68nzyfvKA8oLyhPKK8pDylXKZ8p5yorKpMqsyrTKvMrEyszK5Mr7yw3LH8sxy0nLYMvOy9bL7sv2y/7MFcwszDTMPMxEzEzMY8xrzHPMe8yDzIvMk8ybzKPMq8yzzMrM0szazS7NNs0+zVXNbM10zXzNlM2czbPNyc3gzffODs4lzjjOS85iznPOh86mzrLOxM7MzuPO9c8Bzw3PJM87z1LPac9xz3nPkc+pz7XPwc/Nz9nP5c/xz/nQAdAJ0CDQN9A/0FbQbdCF0JzQpNCs0MPQ2dDx0PnRENEo0UDRWNFv0YbRnNG00czR5NH80gTSDNIk0jvSU9Jq0nzSjdKl0rzS1NLs0wTTG9M301PTX9Nr03PTf9OL05fTo9O108fT4NPy1AvUHdQw1ELUVdRn1HfUhtSZ1KvUvtTQ1OPU9dUI1RrVKtU61UbVUtVk1XbViNWZ1bLVxNXd1e/WAtYU1ifWOdZJ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CRCwBtCwBi+wAdCwAS8wMf//AI//8gPIBbAAJgAFAAAABwAFAiUAAP///7H+SwJzBd8CJgCbAAABBwCe/z//3gAJALAAL7AR3DAxAP//ADMEAAFlBgACBgFtAAD//wCUAAAGagc2AiYAMQAAAQcAdQKQATYAEwCwAEVYsAIvG7ECHz5ZsBHcMDEA//8AfAAABnkGAAImAFEAAAEHAHUCoAAAAAkAsAMvsCDcMDEA//8AEv5tBUIFsAImACUAAAAHAKYBegAD//8AWv5xA/sETgImAEUAAAAHAKYArQAH//8AlAAABEwHPQImACkAAAEHAEQA6AE9ABMAsABFWLAGLxuxBh8+WbAN3DAxAP//AJQAAAUNBz0CJgDbAAABBwBEAUoBPQATALAARViwCC8bsQgfPlmwC9wwMQD//wBT/+wECwYAAiYASQAAAQcARAChAAAAEwCwAEVYsAgvG7EIGz5ZsB/cMDEA//8AhgAABBIF8wImAO8AAAEHAEQAxP/zABMAsABFWLAILxuxCBs+WbAL3DAxAP//AEQAAAVcBbACBgC4AAD//wBP/iIFfgQ6AgYAzAAA//8AEAAABPMG/AImARgAAAEHAKsESQEOABYAsABFWLAPLxuxDx8+WbAR3LAV0DAx////8QAABBgF0AImARkAAAEHAKsD5f/iABYAsABFWLARLxuxERs+WbAT3LAX0DAx//8AT/5LCGQETgAmAFMAAAAHAF0EjgAA//8AZv5LCVwFxAAmADMAAAAHAF0FhgAA//8ASf46BH8FwwImANoAAAAHAbABkv+g//8ATf47A8QETQImAO4AAAAHAbABOf+h//8AZv4+BOsFxAImACcAAAAHAbAB1v+k//8AT/4+A/UETgImAEcAAAAHAbABSv+k//8ABwAABNYFsAIGAD0AAP//ACD+XwP1BDoCBgC8AAD//wCjAAABnwWwAgYALQAA//8AFgAAB5sHIwImANkAAAEHAKACHQE9ABMAsABFWLANLxuxDR8+WbAZ3DAxAP//AB4AAAZcBdkCJgDtAAABBwCgAYf/8wATALAARViwDS8bsQ0bPlmwGdwwMQD//wCjAAABnwWwAgYALQAA//8AEgAABUIHHAImACUAAAEHAKAA9gE2ABMAsABFWLAELxuxBB8+WbAO3DAxAP//AFr/7AP7BeYCJgBFAAABBwCg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ALAARViwBy8bsQcfPlmxDwn0sBXQMDEA//8AU//sBMgGfAImAEkAAAEGAbc97AAMALAIL7Ag3LAl0DAx////1QAABEwHtQImACkAAAEHAbYAiQEyABcAsABFWLAGLxuxBh8+WbEPCfSwFNAwMQD///+O/+wECwZ5AiYASQAAAQYBtkL2AAwAsAgvsB7csCXQMDH//wCUAAAEkgflAiYAKQAAAQcBtQCIARoADACwBi+wDNywE9AwMf//AFP/7ARLBqkCJgBJAAABBgG1Qd4ADACwCC+wHtywJdAwMf//AJQAAARMB90CJgApAAABBwG0AIkBDAAMALAGL7AM3LAT0DAx//8AU//sBAsGoQImAEkAAAEGAbRC0AAMALAIL7Ae3LAl0DAx//8AlP6eBEwHPgImACkAAAAnAJ0AiAE9AAcArATLAAr//wBT/pQECwYBAiYASQAAACYAnUEAAAcArASPAAD//wCjAAACEQfCAiYALQAAAQcAqgN4AUMACQCwAi+wBNwwMQD//wCPAAAB/QZ+AiYAjAAAAQcAqgNk//8ACQCwAi+wBNwwMQD//wCU/poBpwWwAiYALQAAAAcArAN4AAb//wB4/p4BkAXVAiYATQAAAAcArANcAAr//wBm/pQFHgXEAiYAMwAAAAcArAUdAAD//wBP/pIEPQROAiYAUwAAAAcArASd//7//wBm/+wFHge7AiYAMwAAAQcAqgUcATwACQCwFC+wH9wwMQD//wBP/+wEPQaFAiYAUwAAAQcAqgSYAAYACQCwBC+wG9wwMQD//wBm/+wFYQexAiYAMwAAAQcBtwDWASEADACwFC+wIdywJtAwMf//AE//7ATdBnwCJgBTAAABBgG3UuwADACwBC+wHdywItAwMf//ACf/7AUeB64CJgAzAAABBwG2ANsBKwAMALAUL7Af3LAm0DAx////o//sBD0GeQImAFMAAAEGAbZX9gAMALAEL7Ab3LAi0DAx//8AZv/sBR4H3gImADMAAAEHAbUA2gETAAwAsBQvsB/csCbQMDH//wBP/+wEYAapAiYAUwAAAQYBtVbeAAwAsAQvsBvcsCLQMDH//wBm/+wFHgfWAiYAMwAAAQcBtADbAQUADACwFC+wH9ywJtAwMf//AE//7AQ9BqECJgBTAAABBgG0V9AADACwBC+wG9ywItAwMf//AGb+lAUe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GzIcqB5aIBg63iFOIuA5MiUuOt463jb2Ot463iX4J5I5oChwKTIpwCoeKvg5KCuCOZAsTCx2Ldw23DBiMKAx0jOQNtwyVDLaMwQzWjOQN0A3+DakOCQztjbcOco5KDqMOow5KDaeM+A2njaeNp41UjV4NYI1jDWqNbw1zjXgNso7ijuKO4o7ijg+N0A3QDdAN0A3QDdAN0A2yjfYN9g32DfYOt463jreOt463juKO4o7ijuKO4o4HjgeOB44HjsAN7Y3tje2N7Y3tje2N7Y37jfuN+437jmWN/g3+Df4N/g3+DgkOCQ3QDe2N0A3tjdAN7Y2yjbKNso2yjuKN9g37jfYN+432DfuN9g37jfYN+463jmWOt463jreOt463jgeOow16jXqNeo16jreOZY63jmWOt45ljmWO4o3+DuKN/g7ijf4Nhg2GDYYOD44Pjg+OB44HjgeOB44HjgeNng7ADgkOwA2KjYqNio3QDfYOt463juKOwA3QDZMN9g2KjreOt46jDreOt47ijZWOD47ADkyOt47ADmWN/g4JDf4N9g5yjreOt44HjqMOow29jdANkw5yjfYOt463juKNlY2yjg+OTI3tjfuN/g23DgkOZA37jkoOCQ2eDZ4Nng7ADgkNp42njaeOt45ljdAN7Y32DfuNqQ4JDbKOwA4JDreOTI5kDreN0A3tjdAN7Y32DfuN+437jkyOZA7ijf4N/g23Db2OCQ29jgkNvY4JDkyOZA3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y3QDe2N0A3tjdAN7Y32DfuN9g37jfYN+432DfuN9g37jfYN+432DfuN9g37jreOt47ijf4O4o3+DuKN/g7ijf4O4o3+DuKN/g7ijf4N/g4HjgeOwA4JDsAOCQ7ADgkOow63jg+OTI5kDnKOSg5MjmQOZY5oDnKOow63jreOwA7igACAIsABAAEAAAABgAGAAEACwAMAAIAEwATAAQAJQAqAAUALAA2AAsAOAA/ABYARQBGAB4ASQBKACAATABMACIATwBPACMAUQBUACQAVgBWACgAWABYACkAWgBdACoAXwBfAC4AigCKAC8AnACcADAAsAC0ADEAtgC4ADYAugC6ADkAvAC8ADoAvwDAADsAwgDCAD0AxADEAD4AxgDNAD8A0QDRAEcA0wDdAEgA3wDfAFMA4QDjAFQA5QDuAFcA8ADwAGEA9QD3AGIA+gD7AGUA/QD/AGcBAgEEAGoBCQEJAG0BDAEMAG4BFwEZAG8BIQEhAHIBKwEtAHMBMAEwAHYBMgEyAHcBSQFJAHgBbAFtAHkBbwFxAHsBugG6AH4BvQG9AH8BxAHFAIAByAHIAIIBygHLAIMBzQHNAIUCKAIoAIYCKgIrAIcCRgJHAIkCSQJJAIsCSwJsAIwCbgJxAK4CdgJ7ALICgAKIALgCigKKAMECjAKMAMICjgKOAMMCkAKQAMQCkgKbAMUCpAKmAM8CqAKoANICqgKqANMCrAKsANQCrgKuANUCsQKxANYCswKzANcCtQK1ANgCtwK3ANkCuQK5ANoCuwK7ANsCvQLJANwCywLLAOkCzQLNAOoCzwLPAOsC2gLaAOwC3ALcAO0C3gLeAO4C4ALgAO8C4gLiAPAC5ALkAPEC5gLmAPIC6ALoAPMC6gLqAPQC7ALsAPUC7gLxAPYC8wLzAPoC9QL1APsDUgNXAPwDWgNpAQIDbANsARIDcANwARMDcgNyARQDdgN2ARUDeQN6ARYDfAOFARgDhwOJASIDiwOQASUDkgOTASsDlQOYAS0DngOfATEDoQOhATMDowOjATQDpQOoATUDqwOwATkDsgOyAT8DtgO3AUADvAO8AUIDvgPHAUMDygPLAU0DzQPQAU8D1wPYAVMD3APcAVUD3gPkAVYD6QPqAV0D7gQWAV8EGAQYAYgEGgQnAYkELwQvAZcEMgQyAZgENAQ0AZkEQARFAZoESARIAaAESgRKAaEETARMAaIETgRPAaMEVARXAaUEWgRaAakEXARdAaoEXwRfAawEYwRjAa0EZQRlAa4EaQRpAa8EqQSpAbAACgA4/8QA0f/EANX/xAEy/8QBOv/EAtr/xALc/8QC3v/EA43/xARM/8QAFQA6ABQAOwAmAD0AFgEYABQCZQAWAuwAJgLuABYC8AAWA1cAFgNmABYDaQAWA58AJgOhACYDowAmA6UAFgO2ABQDvgAWBEAAFgRCABYERAAWBGkAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACT/+sAmP/rAJr/6gCx/0AAs/9AALr/6wC8/+gAx//rAMj/6wDK/+oA0QAUANUAFAD2/+sBAv/rAQz/QAEX/+sBGf/oAR3/6wEh/+sBMgAUATn/6wE6ABQBS//rAUz/6wFW/+sBbv7uAXL+7gF2/u4Bd/7uAbr/wAJL/0ACTP9AAk3/QAJO/0ACT/9AAlD/QAJR/0ACZv/eAmf/3gJo/94Caf/eAmr/3gJr/94CbP/eAm3/6wJu/+sCb//rAnD/6wJx/+sCd//rAnj/6wJ5/+sCev/rAnv/6wJ8/+oCff/qAn7/6gJ//+oCgP/oAoH/6AKC/0ACg//eAoT/QAKF/94Chv9AAof/3gKJ/+sCi//rAo3/6wKP/+sCkf/rApP/6wKV/+sCl//rApn/6wKb/+sCnf/rAp//6wKh/+sCo//rArH/MALF/+sCx//rAsn/6wLaABQC3AAUAt4AFALh/+oC4//qAuX/6gLn/+oC6f/qAuv/6gLv/+gDUv9AA1r/QANq/+sDbv/qA3D/6wNy/+gDdf/qA3b/6wN3/+oDfv8wA4L/QAONABQDj//eA5D/6wOS/+sDlP/rA5X/6AOX/+sDnv/oA6b/6AOu/0ADr//eA7L/6wO3/+gDuP/rA73/6wO//+gDxP9AA8X/3gPG/0ADx//eA8v/6wPN/+sDzv/rA9j/6wPa/+sD3P/rA+D/6APi/+gD5P/oA+v/6wPu/0AD7//eA/D/QAPx/94D8v9AA/P/3gP0/0AD9f/eA/b/QAP3/94D+P9AA/n/3gP6/0AD+//eA/z/QAP9/94D/v9AA///3gQA/0AEAf/eBAL/QAQD/94EBP9ABAX/3gQH/+sECf/rBAv/6wQN/+sED//rBBH/6wQT/+sEFf/rBBv/6wQd/+sEH//rBCH/6wQj/+sEJf/rBCf/6wQp/+sEK//rBC3/6wQv/+sEMf/rBDP/6gQ1/+oEN//qBDn/6gQ7/+oEPf/qBD//6gRB/+gEQ//oBEX/6ARMABQAIAA4/98AOv/kADv/7AA9/90A0f/fANX/3wEY/+QBMv/fATr/3wG6AA4CZf/dAtr/3wLc/98C3v/fAuz/7ALu/90C8P/dA1f/3QNm/90Daf/dA43/3wOf/+wDof/sA6P/7AOl/90Dtv/kA77/3QRA/90EQv/dBET/3QRM/98Eaf/dABoAOP/OADr/7QA9/9AA0f/OANX/zgEY/+0BMv/OATr/zgJl/9AC2v/OAtz/zgLe/84C7v/QAvD/0ANX/9ADZv/QA2n/0AON/84Dpf/QA7b/7QO+/9AEQP/QBEL/0ARE/9AETP/OBGn/0AAQAC7/7gA5/+4CYf/uAmL/7gJj/+4CZP/uArH/7gLg/+4C4v/uAuT/7gLm/+4C6P/uAur/7gN+/+4EMv/uBDT/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCT/+gAmP/oALr/6ADH/+gAyP/oAPb/6AEC/+gBHf/oASH/6AE5/+gBS//oAUz/6AFW/+gBbAAQAW0AEAFvABABcAAQAXEAEAJt/+gCbv/oAm//6AJw/+gCcf/oAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gDav/oA5D/6AOU/+gDl//oA6cAEAOoABADqwAQA7L/6AO4/+gDvf/oA8v/6APN/+gDzv/oA9r/6APr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQp/+gEK//oBC3/6AQx/+gAAgD1/9YBbf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACT/+wAmP/sALr/7ADH/+wAyP/sAPb/7AEC/+wBHf/sASH/7AE5/+wBS//sAUz/7AFW/+wCbf/sAm7/7AJv/+wCcP/sAnH/7AKJ/+wCi//sAo3/7AKP/+wCkf/sApP/7AKV/+wCl//sApn/7AKb/+wCnf/sAp//7AKh/+wCo//sA2r/7AOQ/+wDlP/sA5f/7AOy/+wDuP/sA73/7APL/+wDzf/sA87/7APa/+wD6//sBAf/7AQJ/+wEC//sBA3/7AQP/+wEEf/sBBP/7AQV/+wEKf/sBCv/7AQt/+wEMf/sABgAU//iARf/4gFtABgCd//iAnj/4gJ5/+ICev/iAnv/4gLF/+ICx//iAsn/4gNw/+IDdv/iA5L/4gPY/+ID3P/iBBv/4gQd/+IEH//iBCH/4gQj/+IEJf/iBCf/4gQv/+IABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYf/sAmL/7AJj/+wCZP/sArH/7ALg/+wC4v/sAuT/7ALm/+wC6P/sAur/7AN+/+wEMv/sBDT/7AAeAAb/8gAL//IAWv/zAF3/8wC8//MA9f/1ARn/8wFs//IBbf/yAW//8gFw//IBcf/yAoD/8wKB//MC7//zA3L/8wOV//MDnv/zA6b/8wOn//IDqP/yA6v/8gO3//MDv//zA+D/8wPi//MD5P/zBEH/8wRD//MERf/zAD4AJ//zACv/8wAz//MANf/zAIP/8wCS//MAl//zALL/8wDDAA0A0v/zAQf/8wEW//MBGv/zARz/8wEe//MBIP/zATj/8wFV//MCKP/zAin/8wIr//MCLP/zAlL/8wJc//MCXf/zAl7/8wJf//MCYP/zAoj/8wKK//MCjP/zAo7/8wKc//MCnv/zAqD/8wKi//MCxP/zAsb/8wLI//MC+f/zA1b/8wNj//MDif/zA4z/8wO5//MDvP/zA9f/8wPZ//MD2//zBBr/8wQc//MEHv/zBCD/8wQi//MEJP/zBCb/8wQo//MEKv/zBCz/8wQu//MEMP/zBKn/8wA/ACf/5gAr/+YAM//mADX/5gCD/+YAkv/mAJf/5gCy/+YAt//CAMMAEADS/+YBB//mARb/5gEa/+YBHP/mAR7/5gEg/+YBOP/mAVX/5gIo/+YCKf/mAiv/5gIs/+YCUv/mAlz/5gJd/+YCXv/mAl//5gJg/+YCiP/mAor/5gKM/+YCjv/mApz/5gKe/+YCoP/mAqL/5gLE/+YCxv/mAsj/5gL5/+YDVv/mA2P/5gOJ/+YDjP/mA7n/5gO8/+YD1//mA9n/5gPb/+YEGv/mBBz/5gQe/+YEIP/mBCL/5gQk/+YEJv/mBCj/5gQq/+YELP/mBC7/5gQw/+YEqf/mADcAJf/kADz/0gA9/9MAsf/kALP/5ADD/+IA2f/SAQz/5AJL/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCZf/TAoL/5AKE/+QChv/kAu7/0wLw/9MDUv/kA1f/0wNa/+QDZv/TA2f/0gNp/9MDgv/kA47/0gOl/9MDrv/kA77/0wPB/9IDxP/kA8b/5APP/9ID6f/SA+7/5APw/+QD8v/kA/T/5AP2/+QD+P/kA/r/5AP8/+QD/v/kBAD/5AQC/+QEBP/kBED/0wRC/9MERP/TBE7/0gRW/9IEaf/TACcAEP9GABL/RgAl/80Asf/NALP/zQDG//IBDP/NAW7/RgFy/0YBdv9GAXf/RgJL/80CTP/NAk3/zQJO/80CT//NAlD/zQJR/80Cgv/NAoT/zQKG/80DUv/NA1r/zQOC/80Drv/NA8T/zQPG/80D7v/NA/D/zQPy/80D9P/NA/b/zQP4/80D+v/NA/z/zQP+/80EAP/NBAL/zQQE/80AAQDDAA4ArwBH/9wASP/cAEn/3ABL/9wAUf/BAFL/wQBT/9YAVP/BAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAL7/5gDA/8EAwf/rAML/6QDE//AAxf/nAMf/3ADI/9wAyf/jAMr/3QDL/84AzP/UAM3/2wDr/8EA7//BAPD/wQDy/8EA8//BAPT/wQD2/9wA9//BAPn/wQD6/8EA/f/BAP//wQEC/9wBBP/BARf/1gEZ/+EBHf/cASH/3AE1/8EBOf/cAUT/wQFJ/8EBS//cAUz/3AFW/9wCbf/cAm7/3AJv/9wCcP/cAnH/3AJ2/8ECd//WAnj/1gJ5/9YCev/WAnv/1gJ8/90Cff/dAn7/3QJ//90CgP/hAoH/4QKJ/9wCi//cAo3/3AKP/9wCkf/cApP/3AKV/9wCl//cApn/3AKb/9wCnf/cAp//3AKh/9wCo//cAr7/wQLA/8ECwv/BAsP/wQLF/9YCx//WAsn/1gLh/90C4//dAuX/3QLn/90C6f/dAuv/3QLv/+EDav/cA2z/wQNu/90DcP/WA3L/4QN1/90Ddv/WA3f/3QOQ/9wDkf/BA5L/1gOT/8EDlP/cA5X/4QOX/9wDmP/BA53/wQOe/+EDpv/hA63/wQOy/9wDs//BA7f/4QO4/9wDvf/cA7//4QPL/9wDzf/cA87/3APU/8ED1v/BA9j/1gPa/9wD3P/WA+D/4QPi/+ED5P/hA+j/wQPr/9wEB//cBAn/3AQL/9wEDf/cBA//3AQR/9wEE//cBBX/3AQb/9YEHf/WBB//1gQh/9YEI//WBCX/1gQn/9YEKf/cBCv/3AQt/9wEL//WBDH/3AQz/90ENf/dBDf/3QQ5/90EO//dBD3/3QQ//90EQf/hBEP/4QRF/+EESf/BBEv/wQRV/8EEYv/BBGT/wQRm/8EAdgAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADB/+wAwwAPAMX/6gDH//AAyP/wAMn/zgDK/+8Ay//nAPb/8AEC//ABGf/cAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAWz/2gFt/9oBb//aAXD/2gFx/9oCbf/wAm7/8AJv//ACcP/wAnH/8AJ8/+8Cff/vAn7/7wJ//+8CgP/cAoH/3AKJ//ACi//wAo3/8AKP//ACkf/wApP/8AKV//ACl//wApn/8AKb//ACnf/wAp//8AKh//ACo//wAuH/7wLj/+8C5f/vAuf/7wLp/+8C6//vAu//3ANq//ADbv/vA3L/3AN1/+8Dd//vA5D/8AOU//ADlf/cA5f/8AOe/9wDpv/cA6f/2gOo/9oDq//aA7L/8AO3/9wDuP/wA73/8AO//9wDy//wA83/8APO//AD2v/wA+D/3APi/9wD5P/cA+v/8AQH//AECf/wBAv/8AQN//AED//wBBH/8AQT//AEFf/wBCn/8AQr//AELf/wBDH/8AQz/+8ENf/vBDf/7wQ5/+8EO//vBD3/7wQ//+8EQf/cBEP/3ARF/9wARAAQAAwAEgAMAEf/5wBI/+cASf/nAEv/5wBV/+cAk//nAJj/5wC6/+cAwwAPAMf/5wDI/+cA9v/nAQL/5wEd/+cBIf/nATn/5wFL/+cBTP/nAVb/5wFuAAwBcgAMAXYADAF3AAwCbf/nAm7/5wJv/+cCcP/nAnH/5wKJ/+cCi//nAo3/5wKP/+cCkf/nApP/5wKV/+cCl//nApn/5wKb/+cCnf/nAp//5wKh/+cCo//nA2r/5wOQ/+cDlP/nA5f/5wOy/+cDuP/nA73/5wPL/+cDzf/nA87/5wPa/+cD6//nBAf/5wQJ/+cEC//nBA3/5wQP/+cEEf/nBBP/5wQV/+cEKf/nBCv/5wQt/+cEMf/nAAYAyf/qAOz/7gD1/9UA/f/tATP/7AFY/+wAAQD1/8AAAQDJACAAfgAGAAwACwAMAEf/6ABI/+gASf/oAEoADABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDD/5AAxQALAMf/6ADI/+gAyQAMAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAbr/vwG8/+4BwP/sAcj/7QHK/+wBzP/1Ac0ADgHPAA0B0gANAm3/6AJu/+gCb//oAnD/6AJx/+gCd//qAnj/6gJ5/+oCev/qAnv/6gKAAAsCgQALAon/6AKL/+gCjf/oAo//6AKR/+gCk//oApX/6AKX/+gCmf/oApv/6AKd/+gCn//oAqH/6AKj/+gCxf/qAsf/6gLJ/+oC7wALA2r/6ANw/+oDcgALA3b/6gOQ/+gDkv/qA5T/6AOVAAsDl//oA54ACwOmAAsDpwAMA6gADAOrAAwDsv/oA7cACwO4/+gDvf/oA78ACwPL/+gDzf/oA87/6APY/+oD2v/oA9z/6gPgAAsD4gALA+QACwPr/+gEB//oBAn/6AQL/+gEDf/oBA//6AQR/+gEE//oBBX/6AQb/+oEHf/qBB//6gQh/+oEI//qBCX/6gQn/+oEKf/oBCv/6AQt/+gEL//qBDH/6ARBAAsEQwALBEUACwABAPX/4gANAFz/7QBe/+0A7f/tAPX/wALy/+0C9P/tAvb/7QOW/+0Dwv/tA9D/7QPq/+0ET//tBFf/7QAMAFz/8gBe//IA7f/yAvL/8gL0//IC9v/yA5b/8gPC//ID0P/yA+r/8gRP//IEV//yAB8AWv/0AFz/8gBd//QAXv/zALz/9ADt//IBGf/0AoD/9AKB//QC7//0AvL/8wL0//MC9v/zA3L/9AOV//QDlv/yA57/9AOm//QDt//0A7//9APC//ID0P/yA+D/9APi//QD5P/0A+r/8gRB//QEQ//0BEX/9ARP//IEV//yAF0ABv/KAAv/ygA4/9IAOv/UADz/9AA9/9MAWv/mAFz/7wBd/+YAvP/mANH/0gDV/9IA2f/0AN3/7QDg/+EA5f/UAO3/7wD1/8kA/f/RAQj/5QEY/9QBGf/mAR//4wEy/9IBM//EATr/0gE8/+EBTf/UAU7/9QFP/+cBV/9kAVj/yQFs/8oBbf/KAW//ygFw/8oBcf/KAmX/0wKA/+YCgf/mAtr/0gLc/9IC3v/SAu7/0wLv/+YC8P/TA1f/0wNm/9MDZ//0A2n/0wNy/+YDgf/tA43/0gOO//QDlf/mA5b/7wOe/+YDpf/TA6b/5gOn/8oDqP/KA6v/ygO2/9QDt//mA77/0wO//+YDwf/0A8L/7wPP//QD0P/vA9//7QPg/+YD4f/tA+L/5gPj/+0D5P/mA+X/4QPp//QD6v/vBED/0wRB/+YEQv/TBEP/5gRE/9MERf/mBEz/0gRO//QET//vBFD/4QRS/+EEVv/0BFf/7wRp/9MAbAAG/8AAC//AADj/nQA6/8cAPP/wAD3/qwBR/9IAUv/SAFT/0gDA/9IA0f+dANP/9QDV/50A2f/wANz/9QDd/+oA4P/lAOX/wQDr/9IA7//SAPD/0gDy/9IA8//SAPT/0gD1/80A9//SAPn/0gD6/9IA/f/SAP//0gEE/9IBGP/HATL/nQEz/8wBNf/SATr/nQE8/+UBP//fAUT/0gFJ/9IBTf/OAU//6gFR//UBV/+eAVj/zgFs/8ABbf/AAW//wAFw/8ABcf/AAmX/qwJ2/9ICvv/SAsD/0gLC/9ICw//SAtr/nQLc/50C3v+dAu7/qwLw/6sDV/+rA2b/qwNn//ADaf+rA2z/0gOB/+oDjf+dA47/8AOR/9IDk//SA5j/0gOd/9IDpf+rA6f/wAOo/8ADq//AA63/0gOz/9IDtv/HA77/qwPB//ADz//wA9T/0gPW/9ID3//qA+H/6gPj/+oD5f/lA+j/0gPp//AD7P/1BED/qwRC/6sERP+rBEn/0gRL/9IETP+dBE7/8ARQ/+UEUv/lBFX/0gRW//AEYv/SBGT/0gRm/9IEZ//1BGn/qwBvAAb/sQAL/7EAOP+eADr/xQA8//IAPf+oAFH/zwBS/88AVP/PAFz/7wDA/88A0f+eANX/ngDZ//IA3f/sAOD/4QDl/8IA6//PAO3/7wDv/88A8P/PAPL/zwDz/88A9P/PAPX/xgD3/88A+f/PAPr/zwD9/88A///PAQT/zwEY/8UBMv+eATP/wAE1/88BOv+eATz/4QE//98BRP/PAUn/zwFN/80BT//oAVf/nwFY/8YBbP+xAW3/sQFv/7EBcP+xAXH/sQJl/6gCdv/PAr7/zwLA/88Cwv/PAsP/zwLa/54C3P+eAt7/ngLu/6gC8P+oA1f/qANm/6gDZ//yA2n/qANs/88Dgf/sA43/ngOO//IDkf/PA5P/zwOW/+8DmP/PA53/zwOl/6gDp/+xA6j/sQOr/7EDrf/PA7P/zwO2/8UDvv+oA8H/8gPC/+8Dz//yA9D/7wPU/88D1v/PA9//7APh/+wD4//sA+X/4QPo/88D6f/yA+r/7wRA/6gEQv+oBET/qARJ/88ES//PBEz/ngRO//IET//vBFD/4QRS/+EEVf/PBFb/8gRX/+8EYv/PBGT/zwRm/88Eaf+oAE0AOP++AFH/4QBS/+EAVP/hAFr/7wBd/+8AvP/vAMD/4QDR/74A1f++AOX/yQDr/+EA7//hAPD/4QDy/+EA8//hAPT/4QD1/98A9//hAPn/4QD6/+EA/f/hAP//4QEE/+EBCP/tARn/7wEf/+sBMv++ATP/3wE1/+EBOv++AT//6QFE/+EBSf/hAU7/9QFY/+ACdv/hAoD/7wKB/+8Cvv/hAsD/4QLC/+ECw//hAtr/vgLc/74C3v++Au//7wNs/+EDcv/vA43/vgOR/+EDk//hA5X/7wOY/+EDnf/hA57/7wOm/+8Drf/hA7P/4QO3/+8Dv//vA9T/4QPW/+ED4P/vA+L/7wPk/+8D6P/hBEH/7wRD/+8ERf/vBEn/4QRL/+EETP++BFX/4QRi/+EEZP/hBGb/4QBkADj/5gA6/+cAPP/yAD3/5wBR/9YAUv/WAFT/1gBc//EAwP/WANH/5gDV/+YA2f/yAN3/7gDg/+gA5f/mAOv/1gDt//EA7//WAPD/1gDy/9YA8//WAPT/1gD1/9AA9//WAPn/1gD6/9YA/f/WAP//1gEE/9YBGP/nATL/5gEz/84BNf/WATr/5gE8/+gBRP/WAUn/1gFN/+cBT//tAVf/5gFY/9ACZf/nAnb/1gK+/9YCwP/WAsL/1gLD/9YC2v/mAtz/5gLe/+YC7v/nAvD/5wNX/+cDZv/nA2f/8gNp/+cDbP/WA4H/7gON/+YDjv/yA5H/1gOT/9YDlv/xA5j/1gOd/9YDpf/nA63/1gOz/9YDtv/nA77/5wPB//IDwv/xA8//8gPQ//ED1P/WA9b/1gPf/+4D4f/uA+P/7gPl/+gD6P/WA+n/8gPq//EEQP/nBEL/5wRE/+cESf/WBEv/1gRM/+YETv/yBE//8QRQ/+gEUv/oBFX/1gRW//IEV//xBGL/1gRk/9YEZv/WBGn/5wCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98Ag//oAJL/6ACX/+gAsQAQALL/6ACzABAA0f/gANL/6ADTABAA1f/gANgAFADcABAA4P/hAOX/4ADsABMA8QAQAPj/4AEDABABB//oAQwAEAEW/+gBGP/gARr/6AEc/+gBHv/oASD/6AEy/+ABOP/oATr/4AE8/+EBPf/gAUD/4QFF/+kBTf/fAU//3gFRABABVf/oAVf/3wFZ//ICKP/oAin/6AIr/+gCLP/oAksAEAJMABACTQAQAk4AEAJPABACUAAQAlEAEAJS/+gCXP/oAl3/6AJe/+gCX//oAmD/6AJl/98CggAQAoQAEAKGABACiP/oAor/6AKM/+gCjv/oApz/6AKe/+gCoP/oAqL/6ALE/+gCxv/oAsj/6ALa/+AC3P/gAt7/4ALu/98C8P/fAvn/6ANSABADVv/oA1f/3wNaABADY//oA2b/3wNp/98DggAQA4n/6AOM/+gDjf/gA6X/3wOuABADtv/gA7n/6AO8/+gDvv/fA8QAEAPGABAD1//oA9n/6APb/+gD5f/hA+b/4APsABAD7QAQA+4AEAPwABAD8gAQA/QAEAP2ABAD+AAQA/oAEAP8ABAD/gAQBAAAEAQCABAEBAAQBBr/6AQc/+gEHv/oBCD/6AQi/+gEJP/oBCb/6AQo/+gEKv/oBCz/6AQu/+gEMP/oBED/3wRC/98ERP/fBEz/4ARQ/+EEUf/gBFL/4QRT/+AEZwAQBGgAEARp/98Eqf/oADIAG//yADj/8QA6//QAPP/0AD3/8ADR//EA0//1ANX/8QDZ//QA3P/1AN3/8wDl//EBGP/0ATL/8QE6//EBTf/yAU//8gFR//UBV//yAmX/8ALa//EC3P/xAt7/8QLu//AC8P/wA1f/8ANm//ADZ//0A2n/8AOB//MDjf/xA47/9AOl//ADtv/0A77/8APB//QDz//0A9//8wPh//MD4//zA+n/9APs//UEQP/wBEL/8ARE//AETP/xBE7/9ARW//QEZ//1BGn/8ABmACUADwA4/+YAOv/mADwADgA9/+YAsQAPALMADwDR/+YA0wAOANX/5gDYABMA2QAOANwADgDdAAsA4P/lAOX/5gDm//QA7AASAPEADwD1/+cA+P/oAP3/5wEDAA8BDAAPARj/5gEy/+YBM//nATr/5gE8/+UBPf/oAU3/5gFP/+YBUQAOAVf/5gFY/+cCSwAPAkwADwJNAA8CTgAPAk8ADwJQAA8CUQAPAmX/5gKCAA8ChAAPAoYADwLa/+YC3P/mAt7/5gLu/+YC8P/mA1IADwNX/+YDWgAPA2b/5gNnAA4Daf/mA4EACwOCAA8Djf/mA44ADgOl/+YDrgAPA7b/5gO+/+YDwQAOA8QADwPGAA8DzwAOA98ACwPhAAsD4wALA+X/5QPm/+gD6QAOA+wADgPtAA8D7gAPA/AADwPyAA8D9AAPA/YADwP4AA8D+gAPA/wADwP+AA8EAAAPBAIADwQEAA8EQP/mBEL/5gRE/+YETP/mBE4ADgRQ/+UEUf/oBFL/5QRT/+gEVgAOBGcADgRoAA8Eaf/mADcABv+/AAv/vwA4/58AOv/JAD3/rQDR/58A1f+fAN3/7ADg/+YA5f/EAPX/zQD9/9UBGP/JATL/nwEz/8wBOv+fATz/5gE//98BTf/RAU//7AFX/6EBWP/PAWz/vwFt/78Bb/+/AXD/vwFx/78CZf+tAtr/nwLc/58C3v+fAu7/rQLw/60DV/+tA2b/rQNp/60Dgf/sA43/nwOl/60Dp/+/A6j/vwOr/78Dtv/JA77/rQPf/+wD4f/sA+P/7APl/+YEQP+tBEL/rQRE/60ETP+fBFD/5gRS/+YEaf+tADAAOP/jADz/5QA9/+QA0f/jANP/5QDV/+MA2P/iANn/5QDc/+UA3f/pAPH/6gED/+oBMv/jATr/4wFR/+UBV//kAmX/5ALa/+MC3P/jAt7/4wLu/+QC8P/kA1f/5ANm/+QDZ//lA2n/5AOB/+kDjf/jA47/5QOl/+QDvv/kA8H/5QPP/+UD3//pA+H/6QPj/+kD6f/lA+z/5QPt/+oEQP/kBEL/5ARE/+QETP/jBE7/5QRW/+UEZ//lBGj/6gRp/+QAIwA4/+IAPP/kANH/4gDT/+QA1f/iANj/4QDZ/+QA3P/kAN3/6QDs/+QA8f/rAQP/6wEy/+IBOv/iAVH/5ALa/+IC3P/iAt7/4gNn/+QDgf/pA43/4gOO/+QDwf/kA8//5APf/+kD4f/pA+P/6QPp/+QD7P/kA+3/6wRM/+IETv/kBFb/5ARn/+QEaP/rABcAOP/rAD3/8wDR/+sA1f/rATL/6wE6/+sCZf/zAtr/6wLc/+sC3v/rAu7/8wLw//MDV//zA2b/8wNp//MDjf/rA6X/8wO+//MEQP/zBEL/8wRE//METP/rBGn/8wA2AFH/7wBS/+8AVP/vAFz/8ADA/+8A6//vAOz/7gDt//AA7//vAPD/7wDy/+8A8//vAPT/7wD1/+4A9//vAPn/7wD6/+8A/f/vAP//7wEE/+8BCP/0AR//8QEz/+8BNf/vAUT/7wFJ/+8BWP/vAnb/7wK+/+8CwP/vAsL/7wLD/+8DbP/vA5H/7wOT/+8Dlv/wA5j/7wOd/+8Drf/vA7P/7wPC//AD0P/wA9T/7wPW/+8D6P/vA+r/8ARJ/+8ES//vBE//8ARV/+8EV//wBGL/7wRk/+8EZv/vACIABv/yAAv/8gBa//UAXf/1ALz/9QD1//QA/f/0AQj/9QEZ//UBM//1AVj/9QFs//IBbf/yAW//8gFw//IBcf/yAoD/9QKB//UC7//1A3L/9QOV//UDnv/1A6b/9QOn//IDqP/yA6v/8gO3//UDv//1A+D/9QPi//UD5P/1BEH/9QRD//UERf/1ADIAUf/uAFL/7gBU/+4AwP/uAOv/7gDsABQA7//uAPD/7gDy/+4A8//uAPT/7gD1/+0A9//uAPj/7QD5/+4A+v/uAPv/0AD9/+4A///uAQT/7gEz/+0BNf/uAT3/7QFE/+4BSf/uAVj/7QJ2/+4Cvv/uAsD/7gLC/+4Cw//uA2z/7gOR/+4Dk//uA5j/7gOd/+4Drf/uA7P/7gPU/+4D1v/uA+b/7QPo/+4ESf/uBEv/7gRR/+0EU//tBFX/7gRi/+4EZP/uBGb/7gAKAAb/9QAL//UBbP/1AW3/9QFv//UBcP/1AXH/9QOn//UDqP/1A6v/9QBZAEf/8ABI//AASf/wAEv/8ABT/8cAVf/wAJP/8ACY//AAuv/wAMf/8ADI//AA9v/wAQL/8AEX/8cBG//rAR3/8AEh//ABOf/wAUv/8AFM//ABVv/wAbz/6wHA/+kByP/rAcr/6wJt//ACbv/wAm//8AJw//ACcf/wAnf/xwJ4/8cCef/HAnr/xwJ7/8cCif/wAov/8AKN//ACj//wApH/8AKT//AClf/wApf/8AKZ//ACm//wAp3/8AKf//ACof/wAqP/8ALF/8cCx//HAsn/xwNq//ADcP/HA3b/xwOQ//ADkv/HA5T/8AOX//ADsv/wA7j/8AO9//ADy//wA83/8APO//AD2P/HA9r/8APc/8cD6//wBAf/8AQJ//AEC//wBA3/8AQP//AEEf/wBBP/8AQV//AEG//HBB3/xwQf/8cEIf/HBCP/xwQl/8cEJ//HBCn/8AQr//AELf/wBC//xwQx//AAoQAGAA0ACwANAEX/8ABH/8AASP/AAEn/wABKAA0AS//AAFP/4gBV/8AAWgALAF0ACwCT/8AAmP/AALr/wAC8AAsAxv/WAMf/wADI/8AAy//VAOz/yADx/9cA9v/AAQL/wAED/9cBF//iARkACwEb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AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCwALMAKAC8ALwALADAAMAALQDGAMYALgDTANQALwDWANYAMQDZANkAMgDbAN0AMwDfAN8ANgDhAOEANwDjAOMAOADlAOUAOQDrAOsAOgDtAO0AOwD2APYAPAD7APsAPQD9AP4APgEDAQQAQAEJAQkAQgEMAQwAQwEXARkARAErAS0ARwEwATAASgEyATIASwFJAUkATAFsAXIATQF2AXcAVAIoAigAVgIqAisAVwJGAkcAWQJJAkkAWwJLAnEAXAJ2AnsAgwKAApAAiQKSApsAmgKkAqYApAKoAqgApwKqAqoAqAKsAqwAqQKuAq4AqgKxArEAqwKzArMArAK1ArUArQK3ArcArgK5ArkArwK7ArsAsAK9AskAsQLLAssAvgLNAs0AvwLPAs8AwALaAtoAwQLcAtwAwgLeAt4AwwLgAuAAxALiAuIAxQLkAuQAxgLmAuYAxwLoAugAyALqAuoAyQLsAuwAygLuAvYAywNSA1cA1ANaA2kA2gNsA2wA6gNwA3AA6wNyA3IA7AN2A3YA7QN5A3oA7gN8A4UA8AOHA4kA+gOLA5AA/QOSA5gBAwOeA58BCgOhA6EBDAOjA6MBDQOlA6gBDgOrA7ABEgOyA7IBGAO2A7cBGQO8A8cBGwPKA8sBJwPNA9ABKQPXA9gBLQPcA9wBLwPeA+QBMAPpA+oBNwPuBBYBOQQYBBgBYgQaBCcBYwQvBC8BcQQyBDIBcgQ0BDQBcwRABEUBdARIBEgBegRKBEoBewRMBEwBfAROBE8BfQRUBFcBfwRaBFoBgwRcBF0BhARfBF8BhgRjBGMBhwRlBGUBiARpBGkBiQSpBKkBigACAU4AEAAQAAEAEgASAAEAJQAlAAIAJgAmAAMAJwAnAAQAKAAoAAUAKQApAAYALAAtAAcALgAuAAgALwAvAAkAMAAwAAoAMQAyAAcAMwAzAAUANAA0AAsAOAA4AAwAOQA5AAgAOgA6AA0AOwA7AA4APAA8AA8APQA9ABAAPgA+ABEARQBFABIARgBGABMARwBHABQASQBJABUATABMABYAUQBSABYAUwBTABcAVABUABMAVgBWABgAWgBaABkAXABcABoAXQBdABkAXgBeABsAigCKABMAsACwABwAsQCxAAIAsgCyAAUAswCzAAIAvAC8ABkAwADAABYAxgDGABMA0wDUAB0A1gDWAAcA2QDZAA8A2wDcAAcA3QDdAB4A3wDfAAcA4QDhAAcA4wDjAB0A5QDlAB0A6wDrAB8A7QDtABoA9gD2ABMA+wD7ACAA/QD9ACAA/gD+ABMBAwEEACABCQEJACABDAEMAAIBFwEXABcBGAEYAA0BGQEZABkBKwErABMBLAEsABwBLQEtAB8BMAEwAAkBMgEyAAkBSQFJAB8BbgFuAAEBcgFyAAEBdgF3AAECKAIoAAQCKgIrAAUCRgJHAAUCSQJJAAwCSwJRAAICUgJSAAQCUwJWAAYCVwJbAAcCXAJgAAUCYQJkAAgCZQJlABACZgJsABICbQJtABQCbgJxABUCdgJ2ABYCdwJ7ABcCgAKBABkCggKCAAICgwKDABIChAKEAAIChQKFABIChgKGAAIChwKHABICiAKIAAQCiQKJABQCigKKAAQCiwKLABQCjAKMAAQCjQKNABQCjgKOAAQCjwKPABQCkAKQAAUCkgKSAAYCkwKTABUClAKUAAYClQKVABUClgKWAAYClwKXABUCmAKYAAYCmQKZABUCmgKaAAYCmwKbABUCpAKkAAcCpQKlABYCpgKmAAcCqAKoAAcCqgKqAAcCrAKsAAcCrgKuAAcCsQKxAAgCswKzAAkCtQK1AAoCtwK3AAoCuQK5AAoCuwK7AAoCvQK9AAcCvgK+ABYCvwK/AAcCwALAABYCwQLBAAcCwgLDABYCxALEAAUCxQLFABcCxgLGAAUCxwLHABcCyALIAAUCyQLJABcCywLLABgCzQLNABgCzwLPABgC2gLaAAwC3ALcAAwC3gLeAAwC4ALgAAgC4gLiAAgC5ALkAAgC5gLmAAgC6ALoAAgC6gLqAAgC7ALsAA4C7gLuABAC7wLvABkC8ALwABAC8QLxABEC8gLyABsC8wLzABEC9AL0ABsC9QL1ABEC9gL2ABsDUgNSAAIDUwNTAAYDVANVAAcDVgNWAAUDVwNXABADWgNaAAIDWwNbAAMDXANcAAYDXQNdABEDXgNfAAcDYANgAAkDYQNiAAcDYwNjAAUDZANkAAsDZQNlAAwDZgNmABADZwNnAA8DaANoAAcDaQNpABADbANsABYDcANwABcDcgNyABkDdgN2ABcDeQN5AAYDegN6ABwDfAN9AAcDfgN+AAgDfwOAAAkDgQOBAB4DggOCAAIDgwODAAMDhAOEABwDhQOFAAYDhwOIAAcDiQOJAAUDiwOLAAsDjAOMAAQDjQONAAwDjgOOAA8DjwOPABIDkAOQABUDkgOSABcDkwOTABMDlAOUABQDlQOVABkDlgOWABoDlwOXABUDmAOYAB8DngOeABkDnwOfAA4DoQOhAA4DowOjAA4DpQOlABADpgOmABkDrAOsAAcDrQOtABYDrgOuAAIDrwOvABIDsAOwAAYDsgOyABUDtgO2AA0DtwO3ABkDvAO8AAQDvQO9ABQDvgO+ABADvwO/ABkDwAPAAAcDwQPBAA8DwgPCABoDwwPDAAcDxAPEAAIDxQPFABIDxgPGAAIDxwPHABIDygPKAAYDywPLABUDzQPOABUDzwPPAA8D0APQABoD1wPXAAUD2APYABcD3APcABcD3gPeABMD3wPfAB4D4APgABkD4QPhAB4D4gPiABkD4wPjAB4D5APkABkD6QPpAA8D6gPqABoD7gPuAAID7wPvABID8APwAAID8QPxABID8gPyAAID8wPzABID9AP0AAID9QP1ABID9gP2AAID9wP3ABID+AP4AAID+QP5ABID+gP6AAID+wP7ABID/AP8AAID/QP9ABID/gP+AAID/wP/ABIEAAQAAAIEAQQBABIEAgQCAAIEAwQDABIEBAQEAAIEBQQFABIEBgQGAAYEBwQHABUECAQIAAYECQQJABUECgQKAAYECwQLABUEDAQMAAYEDQQNABUEDgQOAAYEDwQPABUEEAQQAAYEEQQRABUEEgQSAAYEEwQTABUEFAQUAAYEFQQVABUEFgQWAAcEGAQYAAcEGgQaAAUEGwQbABcEHAQcAAUEHQQdABcEHgQeAAUEHwQfABcEIAQgAAUEIQQhABcEIgQiAAUEIwQjABcEJAQkAAUEJQQlABcEJgQmAAUEJwQnABcELwQvABcEMgQyAAgENAQ0AAgEQARAABAEQQRBABkEQgRCABAEQwRDABkERAREABAERQRFABkESARIAAkESgRKAAcETARMAAwETgROAA8ETwRPABoEVARUABwEVQRVAB8EVgRWAA8EVwRXABoEWgRaABYEXARcAB0EXQRdABwEXwRfAAkEYwRjAAcEZQRlAAcEaQRpABAEqQSpAAUAAgFtAAYABgABAAsACwABABAAEAAWABEAEQAZABIAEgAWACUAJQACACcAJwAIACsAKwAIAC4ALgAaADMAMwAIADUANQAIADcANwAbADgAOAAJADkAOQAKADoAOgALADsAOwAMADwAPAAXAD0APQANAD4APgAYAEUARQADAEcASQAEAEsASwAEAFEAUgAFAFMAUwAGAFQAVAAFAFUAVQAEAFcAVwAHAFkAWQAOAFoAWgAPAFwAXAAcAF0AXQAPAF4AXgAQAIMAgwAIAJIAkgAIAJMAkwAEAJcAlwAIAJgAmAAEAJoAmgAOALEAsQACALIAsgAIALMAswACALoAugAEALwAvAAPAMAAwAAFAMcAyAAEAMoAygAOANEA0QAJANIA0gAIANMA0wARANUA1QAJANkA2QAXANwA3AARAN0A3QAVAOAA4AASAOsA6wAFAO0A7QAcAO8A8AAFAPEA8QATAPIA9AAFAPYA9gAEAPcA9wAFAPgA+AAUAPkA+gAFAP0A/QAFAP8A/wAFAQIBAgAEAQMBAwATAQQBBAAFAQcBBwAIAQwBDAACARYBFgAIARcBFwAGARgBGAALARkBGQAPARoBGgAIARwBHAAIAR0BHQAEAR4BHgAIASABIAAIASEBIQAEATIBMgAJATUBNQAFATgBOAAIATkBOQAEAToBOgAJAUQBRAAFAUkBSQAFAUsBTAAEAVEBUQARAVUBVQAIAVYBVgAEAWkBagAZAWwBbQABAW4BbgAWAW8BcQABAXIBcgAWAXYBdwAWAigCKQAIAisCLAAIAkUCRQAZAksCUQACAlICUgAIAlwCYAAIAmECZAAKAmUCZQANAmYCbAADAm0CcQAEAnYCdgAFAncCewAGAnwCfwAOAoACgQAPAoICggACAoMCgwADAoQChAACAoUChQADAoYChgACAocChwADAogCiAAIAokCiQAEAooCigAIAosCiwAEAowCjAAIAo0CjQAEAo4CjgAIAo8CjwAEApECkQAEApMCkwAEApUClQAEApcClwAEApkCmQAEApsCmwAEApwCnAAIAp0CnQAEAp4CngAIAp8CnwAEAqACoAAIAqECoQAEAqICogAIAqMCowAEArECsQAaAr4CvgAFAsACwAAFAsICwwAFAsQCxAAIAsUCxQAGAsYCxgAIAscCxwAGAsgCyAAIAskCyQAGAtAC0AAbAtEC0QAH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ALgAuWMyc2MEWGMyc2MEXmMyc2MEZGMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamMyc2MEamNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGNjbXAEcGRsaWcEeGRsaWcEfmRsaWcEhGRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRsaWcEimRub20EkGRub20ElmRub20EnGRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomRub20EomZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGZyYWMEqGxpZ2EEsmxpZ2EEumxudW0EwGxudW0ExmxudW0EzGxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxudW0E0mxvY2wE2GxvY2wE3mxvY2wE5G51bXIE6m51bXIE8G51bXIE9m51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G51bXIE/G9udW0FAm9udW0FCG9udW0FDm9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFG9udW0FFHBudW0FGnBudW0FIHBudW0FJnBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHBudW0FLHNtY3AFMnNtY3AFOHNtY3AFPnNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNtY3AFRHNzMDEFSnNzMDEFUHNzMDEFVnNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDEFXHNzMDIFYnNzMDIFaHNzMDIFbnNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDIFdHNzMDMFenNzMDMFgHNzMDMFhnNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDMFjHNzMDQFknNzMDQFmHNzMDQFnnNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDQFpHNzMDUFqnNzMDUFsHNzMDUFtnNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDUFvHNzMDYFwnNzMDYFyHNzMDYFznNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDYF1HNzMDcF2nNzMDcF4HNzMDcF5nNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HNzMDcF7HRudW0F8nRudW0F+HRudW0F/nRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBHRudW0GBAAAAAEAAQAAAAEAAwAAAAEAAgAAAAEAAAAAAAIACAAJAAAAAQAOAAAAAQAQAAAAAQAPAAAAAQANAAAAAQBDAAAAAQBFAAAAAQBEAAAAAQBCAAAAAwA/AEAAQQAAAAIAEQASAAAAAQASAAAAAQA8AAAAAQA+AAAAAQA9AAAAAQA7AAAAAQAKAAAAAQAMAAAAAQALAAAAAQBHAAAAAQBJAAAAAQBIAAAAAQBGAAAAAQAwAAAAAQAyAAAAAQAxAAAAAQAvAAAAAQA4AAAAAQA6AAAAAQA5AAAAAQA3AAAAAQAFAAAAAQAHAAAAAQAGAAAAAQAEAAAAAQAUAAAAAQAWAAAAAQAVAAAAAQATAAAAAQAYAAAAAQAaAAAAAQAZAAAAAQAXAAAAAQAcAAAAAQAeAAAAAQAdAAAAAQAbAAAAAQAgAAAAAQAiAAAAAQAhAAAAAQAfAAAAAQAkAAAAAQAmAAAAAQAlAAAAAQAjAAAAAQAoAAAAAQAqAAAAAQApAAAAAQAnAAAAAQAsAAAAAQAuAAAAAQAtAAAAAQArAAAAAQA0AAAAAQA2AAAAAQA1AAAAAQAzAEsAmACYAJgAmAQmBCYEJgQmBxQHwA5QDlAOZg6IDogOiA6IDr4O5A8SDxIPEg8SDyYPJg8mDyYPOg86DzoPOg9OD04PTg9OD2APYA9gD2APeg96D3oPeg+8D7wPvA+8D9oP2g/aD9oP+A/4D/gP+BAqECoQKhAqEFwQXBBcEFwQjhCiENoQzBDMEMwQzBDaENoQ2hDaEQYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCQwI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTcAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUB/wTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNcE2ATaAhoE2wIOBNYCEwINBNkCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkYCRwJJAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAoIChAKGAogCigKMAo4CkAKSApQClgKYApoCnAKeAqACogKkAqYCqAKqAqwCrgKxArMCtQK3ArkCuwK9Ar8CwQLEAsYCyALKAswCzgLQAtIC1ALYAtoC3ALeAuAC4gLkAuYC6ALqAuwC7gLwAvEC8wL1A1IDUwNUA1UDVgNXA1gDWgNbA1wDXQNeA18DYANhA2MDZANlA2YDZwNoA2kDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgO6A7wDvgPTA9kD3wRIBEoETgRWBFgEXQRpAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAvwDLwI7AfoEyQTKAfsB/AH9Af4B/wIABM0EzgTQBNME3AICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYA04DGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRQNEA0YDRwNIA0kDSgNLA0wDTQNPA1ADUQTIBMsEzATPBNEE0gIBBNQEwATBBMIEwwTEBMUExgTHBNUE1wTYAhgE2gIaBNsC+wIOBNYCEwINBNkCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSgJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8gL0AvYDjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngO7A70DvwPNA9QD2gPgBEYESQRLBE8EVwRZBFoEXgRqAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAABKAAEAAQBNAAMAAAABABIAAQB4AAEAAABKAAEAAQBOAAMAAAABABIAAQBgAAEAAABKAAEAAQKtAAMAAAABABIAAQBIAAEAAABKAAEAAQOaAAMAAAABABIAAQAwAAEAAABKAAEAAQOcAAMAAAABABIAAQAYAAEAAABKAAEAAQQZAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCSwACAKcCTAACAKgCTgACAKkD8AACAKoEegACAKsD7gACAKwAAQAEBIcAAgCsAAEABAKIAAIAqAACAAYADASJAAIArASLAAIBogAGAA4AFAAaACAAJgAsAlMAAgCnAlQAAgCoBAoAAgCpBAgAAgCqBHwAAgCrBAYAAgCsAAIABgAMBHYAAgCoAqIAAgGiAAEABASNAAIArAAGAA4AFAAaACAAJgAsAlcAAgCnAlgAAgCoAqYAAgCpBBYAAgCqBH4AAgCrBBgAAgCsAAMACAAOABQEjwACAKgEkQACAKwCswACAaIAAwAIAA4AFAK1AAIAqASTAAIArAK3AAIBogACAAYADAOsAAIAqASVAAIArAAFAAwAEgAYAB4AJAR4AAIApwK9AAIAqAJbAAIAqQSXAAIArAK/AAIBogAGAA4AFAAaACAAJgAsAlwAAgCnAl0AAgCoAl8AAgCpBBwAAgCqBIAAAgCrBBoAAgCsAAEABASZAAIAqAAEAAoAEAAWABwCygACAKgEggACAKsEmwACAKwCzAACAaIAAwAIAA4AFALQAAIAqASdAAIArALWAAIBogACAAYADASfAAIArALaAAIBogAGAA4AFAAaACAAJgAsAmEAAgCnAmIAAgCoAuAAAgCpBDQAAgCqBIQAAgCrBDIAAgCsAAIABgAMBKEAAgCpBKMAAgCsAAMACAAOABQDnwACAKcDoQACAKgEpQACAKwABQAMABIAGAAeACQDpQACAKcCZQACAKgERAACAKkEQgACAKoEQAACAKwAAgAGAAwC8QACAKgEpwACAKwABgAOABQAGgAgACYALAJmAAIApwJnAAIAqAJpAAIAqQPxAAIAqgR7AAIAqwPvAAIArAABAAQEiAACAKwAAQAEAokAAgCoAAIABgAMBIoAAgCsBIwAAgGiAAYADgAUABoAIAAmACwCbgACAKcCbwACAKgECwACAKkECQACAKoEfQACAKsEBwACAKwAAQAEBHcAAgCoAAEABASOAAIArAABAAQEGQACAKwAAwAIAA4AFASQAAIAqASSAAIArAK0AAIBogADAAgADgAUArYAAgCoBJQAAgCsArgAAgGiAAIABgAMA60AAgCoBJYAAgCsAAUADAASABgAHgAkBHkAAgCnAr4AAgCoAnYAAgCpBJgAAgCsAsAAAgGiAAYADgAUABoAIAAmACwCdwACAKcCeAACAKgCegACAKkEHQACAKoEgQACAKsEGwACAKwAAQAEBJoAAgCoAAQACgAQABYAHALLAAIAqASDAAIAqwScAAIArALNAAIBogADAAgADgAUAtEAAgCoBJ4AAgCsAtcAAgGiAAIABgAMBKAAAgCsAtsAAgGiAAYADgAUABoAIAAmACwCfAACAKcCfQACAKgC4QACAKkENQACAKoEhQACAKsEMwACAKwAAgAGAAwEogACAKkEpAACAKwAAwAIAA4AFAOgAAIApwOiAAIAqASmAAIArAAFAAwAEgAYAB4AJAOmAAIApwKAAAIAqARFAAIAqQRDAAIAqgRBAAIArAACAAYADALyAAIAqASoAAIArAABAAQC9wACAKgAAQAEAvkAAgCoAAEABAL4AAIAqAABAAQC+gACAKgABQAMABIAGAAeACQCcgACAKcCcwACAKgCpwACAKkEFwACAKoEfwACAKsABQAMABIAGAAeACQEKgACAKcEKAACAKgELgACAKkELAACAKoEMAACAKwABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQEOAACAKcENgACAKgEPAACAKkEOgACAKoEPgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwAAQAEBIYAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLUAtUAAQAAAAEACAACAA4ABATdBN4E3wTgAAEABAKGAocCmAKZAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiEBrgIjAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAa4AAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIgRwBHEEcgRzBHQEdQABAAAAAQAIAAIAFgAIBHUCIgRwBHEEcgRzAa0EdAABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAABKAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKtA5oDnAQZ", "Roboto-MediumItalic.ttf": "AAEAAAARAQAABAAQR1BPUyEcbY8AAhQcAABZakdTVULEnLdcAAJtiAAAGXxPUy8yoQuw+wAAAZgAAABgY21hcNhuDxIAABpsAAAGXGN2dCAElytKAAAjUAAAAFZmcGdte/lhqwAAIMgAAAG8Z2FzcAAIABMAAhQQAAAADGdseWZgubUGAAAtcAAB42poZG14LxpP7wAAFYAAAATsaGVhZPi2qwsAAAEcAAAANmhoZWEM2xKRAAABVAAAACRobXR4rRqYNAAAAfgAABOIbG9jYSKZqcwAACOoAAAJxm1heHAHEgLZAAABeAAAACBuYW1lRuRz4wACENwAAAMUcG9zdP9hAGQAAhPwAAAAIHByZXAbsfg2AAAihAAAAMwAAQAAAAIAALDh6v1fDzz1ABsIAAAAAADE8BEuAAAAANDbTpf6Qf3VCXgIcwACAAkAAgAAAAAAAAABAAAHbP4MAAAJN/pB/mwJeAgAAbMAAAAAAAAAAAAAAAAE4gABAAAE4gCPABYAVgAFAAEAAAAAAA4AAAIAAfIABgABAAMEGQH0AAUAAAWaBTMAAAEfBZoFMwAAA9EAZgIAAAACAAAAAAAAAAAA4AAK/1AAIX8AAAAhAAAAAEdPT0cAAQAA//0GAP4AAGYHmgIAIAABnwAAAAAEOgWwACAAIAACA5YAZAAKAAAACgAAAfkAAAH5AAACHwA3Ao4AoQTHADsEcwBCBb0AtQUAAC0BWgCQAr8AaALG/5QDeABnBF0APQG//4kClgA2AjUAMAMc/38EcwBgBHMA7wRzAAsEcwAmBHMACQRzAFoEcwBjBHMAhgRzADsEcwCOAhkAKwHi/5oD/AAyBGIAYgQUAC8D0ACVBvsAMgU0/6QE7wAnBRsAZQUcACcEbQAnBE0AJwVSAGsFjQAnAjsANQRZAAME7gAnBD0AJwbVACcFjAAnBWYAawUAACcFZgBkBOIAJwS5ACQEwACcBRkAWwUPAJsG3gC3BPP/wwTFAKEEtv/lAir/7wNIAKwCKv96A1sARAOK/3kCigDKBD0AIgRoABAEGgA4BGsAOwQ0ADsCygBfBHD/9wRZAA0CBQAfAfz/DAQXABECBQAfBssAEARbAA0EdQA5BGj/xwRyADsCxAAQBAsAHAKfADsEWgBKA+EAZAXOAHcD8f+5A9H/tQPx/+cCpAAwAf0AIAKk/5kFMgBbAfkAAAIY/+YEZQBMBJv/9gV8AAgExQBQAff/7ATc/9wDdADRBh4AXgOAAL4DzgBJBFUAgAKWADYGHgBeA8cA7wL9AOQEMwAbAukAVgLpAGcCkQDIBKH/3QPZAH0COwCeAgr/0wLpAOEDlQC+A84AAgWtALkGBgCxBjAAlgPQ/9IFNP+kBTT/pAU0/6QFNP+kBTT/pAU0/6QHVf+HBRsAZQRtACcEbQAnBG0AJwRtACcCOwA1AjsANQI7ADUCOwA1BTr//wWMACcFZgBrBWYAawVmAGsFZgBrBWYAawQtACMFZAAVBRkAWwUZAFsFGQBbBRkAWwTFAKEErwAnBMsAGwQ9ACIEPQAiBD0AIgQ9ACIEPQAiBD0AIgaXAA8EGgA4BDQAOwQ0ADsENAA7BDQAOwIUACICFAAiAhQAIgIUACIEjQBGBFsADQR1ADkEdQA5BHUAOQR1ADkEdQA5BHgAPQRvACoEWgBKBFoASgRaAEoEWgBKA9H/tQR+/80D0f+1BTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBRsAZQQaADgFGwBlBBoAOAUbAGUEGgA4BRsAZQQaADgFHAAnBQEAOwU6//8EiQA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADwEbQAnBDQAOwVSAGsEcP/3BVIAawRw//cFUgBrBHD/9wVSAGsEcP/3BY0AJwRZAA0FjgAuBHcAKwI7ADUCFAAUAjsANQIUAB8COwA1AhQAIgI7/44CBf92AjsANQIUACIGlAA1BAEAHwRZAAMCIP8PBO4AJwQXABEEfwAhBD0AJwIFAB8EPQAnAgX/ogQ9ACcCmwAfBD0AJwLhAB8ETAAhAkcAHwWMACcEWwANBYwAJwRbAA0FjAAnBFsADQRbAA0FcgAjBG8AEQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQeDAFAHDQBCBOIAJwLEABAE4gAnAsT/nATiACcCxAAQBLkAJAQLABwEuQAkBAsAHAS5ACQECwAcBLkAJAQLABwEwACcAp8AOwTAAJwCxwA7BMAAnAKf/+IFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoFGQBbBFoASgUZAFsEWgBKBRkAWwRaAEoG3gC3Bc4AdwTFAKED0f+1BMUAoQS2/+UD8f/nBLb/5QPx/+cEtv/lA/H/5wIGAB4FaABOAsT/SgVpAFsEhQA2BYMAWwTWAEoCIP8PBVIAawRw//cFjAAnBFsADQU0/6QEPQAiB1X/hwaXAA8FZAAVBG8AKgU0/6QEPQAiBG0AJwQ0ADsCO//JAhT/fgVmAGsEdQA5BOIAJwLEAAcFGQBbBFoASgS5ACQECwAcBMAAnAKfADsCIP8PBCUANgG5AIoD0gECA54BDQPIAO8DawD+AgUBAgKnAPoCRf+oA8QA3gMRAKwCY//uAAr9VAAK/dcACvz2AAr91gAK/L8ACvygAlUBLgQlAOgFNP+kAjsAngTR/74F8f/GAp//ygV6ABgFKf9YBVAAHQKgAAsFNP+kBO8AJwRdAC4Fnf+qBG0AJwS2/+UFjQAnBVoAXgI7ADUE7gAnBRr/sgbVACcFjAAnBHcAAAVmAGsFjwAuBQAAJwR3/9wEwACcBMUAoQXLAFIE8//DBYkAdQU8AAkCOwA1BMUAoQRrAD4ESAAoBG8AEQKgAG4ESABXBGsAPgSr/+UD+QB3BG8AOARIACgEBQBmBG8AEQSHAGwCoABuBH8AIQRS/6gEof/dA+EAZAP+AD4EdQA5BNcAXQRv/8sEIQA7BHcAOAQXAG4ESABXBa0AMgPx/7kFpwA/BmsAVAKgAEwESABXBHUAOQRIAFcGawBUBJkAUARjAG0Ex/8kBkoAVwRtACcEbQAnBdoAkQRdAC4FOgBnBLkAJAI7ADUCOwA1BFkAAwhQ/8oIVwAuBjQAoATuACcFhwAnBO0AmwWJACUFNP+kBOsAIwTvACcEXQAuBeL/hARtACcHcf+lBLsAHgWHACcFhwAnBQoALgWI/8oG1QAnBY0AJwVmAGsFjwAuBQAAJwUbAGUEwACcBO0AmwY4AFYE8//DBdUAJQVoAMUHawArB8YAKwX1AIkGzQAuBOoAIwUxAE8HJgAyBNv/sAQ9ACIEZQBDBHYAIgNKABgE2v+FBDQAOwZO/60EAQAWBH8AGQR/ABkEVgAiBIH/vwXfACIEfgAZBHUAOQR/ABkEaP/HBBoAOAPhAFMD0f+1BbAAPQPx/7kEuAAZBE4AcAZmABkGwQASBPoATwZIACIEUAAiBCUAIwZcACQEWP+2BDQAOwQ0ADsEWQANA0oAGAQlADsECwAcAgUAHwIUACIB/P8MBqf/vQa5ABkEcAANBFYAIgR/ABkD0f+1BH8AGQcbAGAGKQBEBOoAIwRPACEG+wArBd0AGQTv/64ESP+cBxQAPgYQADAGwgAUBcMAFgj1ADUHxgAiBAr/qgPc/7UFiQB1BacAPwVaAGIEbwA2BP0AqAP5AHcE/QCoA/kAdwk3AGsIRgA5BVoAZgRvADgHFwBiBh4ASwcbAGAGKQBEBP0AVgQzAEUE4wA4AAr85gAK/Q4ACv4rAAr+PAAK+kEACvpvBYcAJwR/ABkE6gAjBE8AIQT2ACcEbf/HBFIAIgOPABEEXf/8A0r/ywSdAC4ECgARB3H/pQZO/60EuwAeBAEAFgUKAC4EVgAiBQ4AIwSRACEFHgA3BC4AGQZsAKQFgwBsBY0AJwR+ABkHngAnBYkAEQgRAC4GygARBgUAZQTjAEsFGwBlBBoAOATAAJwD4QBTBMUAoQP5AHcExQChA/kAVATz/8MD8f+5BwQAnQVQAFYFaADFBE4AcAVUALkEWwCFBWcA5wRZAA0F/wBiBKj/9AX/AGIEqP/0AjsANQdx/6UGTv+tBQQAIwRgACEFiP/KBIH/vwWNAC4EbwARBY0AJwR+ABkFaADFBE4AcAbVACcF3wAiAjsANQU0/6QEPQAiBTT/pAQ9ACIHVf+HBpcADwRtACcENAA7BWgASAQlADYFaABIBCUANgdx/6UGTv+tBLsAHgQBABYEjAAvBIz/8AWHACcEfwAZBYcAJwR/ABkFZgBrBHUAOQVaAGIEbwA2BVoAYgRvADYFMQBPBCUAIwTtAJsD0f+1BO0AmwPR/7UE7QCbA9H/tQVoAMUETgBwBF0ALgNKABgGzQAuBkgAIgSsADMDQwAJBPP/wwPx/7kE8//DA/H/uQTqADAEawA7BsYARQayAEcGLACqBQoAYQRjAJIEJwCMB43/3gZ0/94HygAnBnUACwTnAEwEFgA9BYkAkAUAAHMFNgBWBEgAKAWI/8oEgf+/BTT/pAQ9ACIE7wAnBGgAEAUcACcEawA7BRwAJwRrADsFjQAnBFkADQTuACcEFwARBO4AJwQXABEEPQAnAgX/5AbVACcGywAQBtUAJwbLABAFjAAnBFsADQUAACcEaP/HBOIAJwLE/94EuQAkBAsAHATAAJwCnwA7BQ8AmwPhAGQFDwCbA+EAZAbeALcFzgB3Bt4AtwXOAHcG3gC3Bc4AdwbeALcFzgB3BLb/5QPx/+cFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIFNP+kBD0AIgU0/6QEPQAiBTT/pAQ9ACIEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7BG0AJwQ0ADsEbQAnBDQAOwRtACcENAA7AjsANQIUACICO///AgX/5AVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWYAawR1ADkFZgBrBHUAOQVmAGsEdQA5BWkAWwSFADYFaQBbBIUANgVpAFsEhQA2BWkAWwSFADYFaQBbBIUANgUZAFsEWgBKBRkAWwRaAEoFgwBbBNYASgWDAFsE1gBKBYMAWwTWAEoFgwBbBNYASgWDAFsE1gBKBMUAoQPR/7UExQChA9H/tQTFAKED0f+1BMUAoQPR/7UFrP6zAx4A7AP/AAAH9AAAA/8AAAf0AAACrgAAAgQAAAFcAAAEZgAAAikAAAGfAAAA1QAAAAoAAAKXADYClwA2BQsAnAYKAIIGCgCCA4v/TgG9AK4BuQCKAcr/pAGlAM0DBgC3Aw0AlwL7/6EERQBpBID/+wLAAJ4D5QAzBYUAMwFrADYHdgCdAVoAkAKOAKECaQBdAmD/+QQ+ADcDiv/hAukAYwNMAG4ETf/DBJv/9gZJAA0GjgArCFsAJwdYACoGZAAQBIn/9ARzAE4F0QBCBB4AOwSIABAFP//kBV3/5gXBAMIDzgAxB/kAIwTsAO0E9wB9Bg8AtgayAIIGpwCIBnkAtQR4AEUFdQAfBL7/pwRqAJwEmAA0CA8ASQIm/xcEdQAwBGIAYgP8/9UEFAAXA/cAOgJTAGkCjgBmAez/zwT+AF8EjgBLBKIAXwb2AF8G9gBfBPQAXwaNABcACgAAB/v/qQg1AFwDhv/XBGP/pwSmADoEY/+nA6YACgQ2AC0ETgARBB4ADgQXABQFGwAuBBoAFAUKAC4FJgAuBKEAOwQl/4cCpwEGBL0ACgLpADMC6QAIAukAIwLpABYC6QAKAun/8QLp//QC6f/jAukAbQLpABcEBP/ZBXwAQwU1AHAEyAAAA6YAkwXjAIwEYwBwBGsAOQQlAGIEHgAOBEUACgSmADcEVQAKBKYAOgTCAAoF4gAKA6YACgREAAoDwv/yAfcAGATDAAoEjAA/A7IACgPMAAoEYgAKBGcAOQRIAAoEhf+bAf8A6wOPAQQD9gDcA/YAEwP2ANgD9gDXA48BBAOPAQUDjwEEBEb/pAQlAG0EZwA5BXAAYgQdAFUEegAqAgr/BwGw/7IEFP/WByb/wQcpAAoFdgBiBLwACgRZAAsFOv+DBhT/qQQvAAwEyAALBEUACgSw/8EELwByBT4ACgRzAF0GXAAKBt4ACgU7AEoF+wALBE8ACwRnABMGagAKBG//0gQM//UGav+pBIQACgT9AAoFTgBiBcwAQARDAG0Eqf+kBmwAYgRzAF0EcwAKBdoANwS3ADQELwAMBKYAOgROAAQD4wAeCAEACgTP/9kEbwAQBCYANwR/ADsDkgCkBIcANAR7/8cEhgA7BDQAOwRwADAFWgBvBYEAcQVmAC4FvQByBb8AcgQFAKsEaQAfA6YACgRA/38EpP/RAukAigLpAGQC6QB9AukAiQLpAJYC6QB7AukApgRT/9QEGAAnBm8AOgSaAEcEzwBOAiD/DwIg/w8CFQAiAhX/fQIVACIESAAKBGL/lwRi/5cEJQBiBIX/mwSF/5sEhf+bBIX/mwSF/5sEhf+bBIX/mwRnADkDzAAKA8wACgPMAAoDzAAKAfcAGAH3ABgB9wAYAfcAGATCAAoEpgA6BKYAOgSmADoEpgA6BKYAOgRrADkEmwB0BIcAjgRzAFoEcwAJBHMAJgRzAAsEawA5BGsAOQRrADkEJQBtBIX/mwSF/5sEhf+bBGcAOQRnADkEZwA5BGcAOQRiAAoDzAAKA8wACgPMAAoDzAAKA8wACgSMAD8EjAA/BIwAPwSMAD8EwwAKAfcADQH3ABgB9wAYAff/igH3ABgDwv/yBEQACgOmAAoDpgAKA6YACgOmAAoEwgAKBMIACgTCAAoEpgA6BKYAOgSmADoERQAKBEUACgRFAAoEHgAOBB4ADgQeAA4EHgAOBCUAYgQlAGIEJQBiBGsAOQRrADkEawA5BGsAOQRrADkEawA6BeMAjAQlAG0EJQBtBBT/1gQU/9YEFP/WBIX/mwQI/20E//94AjP/ewSw/9IEYf8sBNL/4gSF/5sESAAKA8wACgQU/9YEwwAKAfcAGAREAAoF4gAKBKYAOgRVAAoEJQBiBCUAbQRG/6QB9wAYBCUAbQPMAAoDpgAKBB4ADgH3ABgB9wAYA8L/8gREAAoELwByBIX/mwRIAAoDpgAKA8wACgTIAAsF4gAKBMMACgSmADoEvQAKBFUACgRnADkEJQBiBEb/pAQvAA0EwwAKBGcAOgQlAG0F2gA3BMgACwQvAHIFfABDBTT/pAQ9ACIEbQAnBDQAOwIU/+QAAAABAAAE5AkKBAAAAgICAwUFBgYCAwMEBQIDAgQFBQUFBQUFBQUFAgIEBQUECAYGBgYFBQYGAwUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcEBAQDAgMGAgIFBQYFAgUEBwQEBQMHBAMFAwMDBQQDAgMEBAYHBwQGBgYGBgYIBgUFBQUDAwMDBgYGBgYGBgUGBgYGBgUFBQUFBQUFBQcFBQUFBQICAgIFBQUFBQUFBQUFBQUFBAUEBgUGBQYFBgUGBQYFBgUGBgYFBQUFBQUFBQUFBQYFBgUGBQYFBgUGBQMCAwIDAgMCAwIHBQUCBgUFBQIFAgUDBQMFAwYFBgUGBQUGBQYFBgUGBQgIBgMGAwYDBQUFBQUFBQUFAwUDBQMGBQYFBgUGBQYFBgUIBwUEBQUEBQQFBAIGAwYFBgUCBgUGBQYFCAcGBQYFBQUDAgYFBgMGBQUFBQMCBQIEBAQEAgMDBAMDAAAAAAAAAwUGAwUHAwYGBgMGBgUGBQUGBgMGBggGBQYGBgUFBQcGBgYDBQUFBQMFBQUEBQUFBQUDBQUFBAQFBQUFBQUFBgQGBwMFBQUHBQUFBwUFBwUGBQMDBQkJBwYGBgYGBgYFBwUIBQYGBgYIBgYGBgYFBgcGBwYICQcIBgYIBQUFBQQFBQcFBQUFBQcFBQUFBQQEBgQFBQcIBgcFBQcFBQUFBAUFAgICBwgFBQUEBQgHBgUIBwYFCAcIBgoJBQQGBgYFBgQGBAoJBgUIBwgHBgUGAAAAAAAABgUGBQYFBQQFBAUFCAcFBQYFBgUGBQcGBgUJBgkIBwYGBQUEBQQFBAYECAYGBQYFBgUHBQcFAwgHBgUGBQYFBgUGBQgHAwYFBgUIBwUFBgUGBQgHBQUFBQYFBgUGBQYFBgUGBQYEBgQGBAYFBQQIBwUEBgQGBAYFCAgHBgUFCQcJBwYFBgYGBQYFBgUGBQYFBgUGBQYFBgUFAggICAgGBQYFBgMFBQUDBgQGBAgHCAcIBwgHBQQGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUFBQUFBQUFBQUFBQUFBQUFAwIDAgYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBQQFBAUEBQQGBAUJBQkDAgIFAgIBAAMDBgcHBAICAgIDAwMFBQMEBgIIAgMDAwUEAwQFBQcHCQgHBQUHBQUGBgYECQYGBwgHBwUGBQUFCQIFBQQFBAMDAgYFBQgIBgcACQkEBQUFBAUFBQUGBQYGBQUDBQMDAwMDAwMDAwMFBgYFBAcFBQUFBQUFBQUHBAUEAgUFBAQFBQUFAgQEBAQEBAQEBQUFBgUFAgIFCAgGBQUGBwUFBQUFBgUHCAYHBQUHBQUHBQYGBwUFBwUFBwUFBQUECQUFBQUEBQUFBQUGBgYGBgUFBAUFAwMDAwMDAwUFBwUFAgICAgIFBQUFBQUFBQUFBQUEBAQEAgICAgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEBAQEBAUFBQUFAgICAgIEBQQEBAQFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBwUFBQUFBQUGAgUFBQUFBAUFAgUHBQUFBQUCBQQEBQICBAUFBQUEBAUHBQUFBQUFBQUFBQUHBQUGBgUFBQIAAAADAAAAAwAAABwAAwABAAAAHAADAAoAAAKkAAQCiAAAAJ4AgAAGAB4AAAACAA0AfgF/AY8BkgGhAbAB8AH/AhsCNwJZArwCxwLJAt0C8wMBAwMDCQMPAyMDigOMA6EDzgPSA9YEhgUTHgEePx6FHvkfTSALIBEgFSAeICIgJyAwIDMgOiA8IEQgdCB/IKQgrCCxILogvSEFIRMhFiEiISYhLiFeIgIiBiIPIhIiGiIeIisiSCJgImUlyu4C9sP7BP7///3//wAAAAAAAgANACAAoAGPAZIBoAGvAfAB+gIYAjcCWQK8AsYCyQLYAvMDAAMDAwkDDwMjA4QDjAOOA6MD0QPWBAAEiB4AHj4egB6gH00gACAQIBMgFyAgICUgMCAyIDkgPCBEIHQgfyCjIKYgsSC5ILwhBSETIRYhIiEmIS4hWyICIgYiDyIRIhoiHiIrIkgiYCJkJcruAfbD+wH+///8//8AAQAA//b/5P/D/7T/sv+l/5j/Wf9U/0j/Lf8M/qr+of6g/pL+ff5x/nD+a/5m/lP98/3y/fH98P3u/ez9w/3C5NbkqOR45GLkD+Ne41rjWeNY41fjVeNN40zjR+NG4z/jEOMG4uPi4uLe4tfi1uKP4oLigOJ14HPiauI+4Zvff+GP4Y7hh+GE4XjhXOFF4ULd3hWoDOgIrAS0A7gAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAA7gAAAAAAAAATgAAAAAAAAAAAAAAAQAAAAIAAAACAAAAAgAAAA0AAAANAAAAAwAAACAAAAB+AAAABAAAAKAAAAF/AAAAYwAAAY8AAAGPAAABQwAAAZIAAAGSAAABRAAAAaAAAAGhAAABRQAAAa8AAAGwAAABRwAAAfAAAAHwAAABSQAAAfoAAAH/AAABTgAAAhgAAAIbAAABYAAAAjcAAAI3AAABZAAAAlkAAAJZAAABZQAAArwAAAK8AAABZgAAAsYAAALHAAABZwAAAskAAALJAAABaQAAAtgAAALdAAABagAAAvMAAALzAAABcAAAAwAAAAMBAAABcQAAAwMAAAMDAAABcwAAAwkAAAMJAAABdAAAAw8AAAMPAAABdQAAAyMAAAMjAAABdgAAA4QAAAOKAAABdwAAA4wAAAOMAAABfgAAA44AAAOhAAABfwAAA6MAAAPOAAABkwAAA9EAAAPSAAABvwAAA9YAAAPWAAABwgAABAAAAASGAAABwwAABIgAAAUTAAACSgAAHgAAAB4BAAAC1gAAHj4AAB4/AAAC5gAAHoAAAB6FAAAC+AAAHqAAAB75AAADAgAAH00AAB9NAAADXAAAIAAAACALAAADXgAAIBAAACARAAADagAAIBMAACAVAAADbAAAIBcAACAeAAADbwAAICAAACAiAAADdwAAICUAACAnAAADegAAIDAAACAwAAADfQAAIDIAACAzAAADfgAAIDkAACA6AAADgAAAIDwAACA8AAADggAAIEQAACBEAAADgwAAIHQAACB0AAADhAAAIH8AACB/AAADhQAAIKMAACCkAAADhgAAIKYAACCsAAADiAAAILEAACCxAAADjwAAILkAACC6AAADkAAAILwAACC9AAADkgAAIQUAACEFAAADlAAAIRMAACETAAADlQAAIRYAACEWAAADlgAAISIAACEiAAADlwAAISYAACEmAAABmQAAIS4AACEuAAADmAAAIVsAACFeAAADmQAAIgIAACICAAADnQAAIgYAACIGAAABhQAAIg8AACIPAAADngAAIhEAACISAAADnwAAIhoAACIaAAADoQAAIh4AACIeAAADogAAIisAACIrAAADowAAIkgAACJIAAADpAAAImAAACJgAAADpQAAImQAACJlAAADpgAAJcoAACXKAAADqAAA7gEAAO4CAAADqQAA9sMAAPbDAAADqwAA+wEAAPsEAAADrQAA/v8AAP7/AAADswAA//wAAP/9AAADtLAALEuwCVBYsQEBjlm4Af+FsIQdsQkDX14tsAEsICBFaUSwAWAtsAIssAEqIS2wAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS/9LbAFLEsgsAMmUFhRWLCARBuwQERZGyEhIEWwwFBYsMBEGyFZWS2wBiwgIEVpRLABYCAgRX1pGESwAWAtsAcssAYqLbAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbDAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSCwAyZTWLADJUW4AYBQWCMhuAGAIyEbsAMlRSMhIyFZGyFZRC2wCSxLU1hFRBshIVktsAossClFLbALLLAqRS2wDCyxJwGIIIpTWLlAAAQAY7gIAIhUWLkAKQPocFkbsCNTWLAgiLgQAFRYuQApA+hwWVlZLbANLLBAiLggAFpYsSoARBu5ACoD6ERZLbAMK7AAKwCyAQ0CKwGyDgECKwG3DjowJRsQAAgrALcBOC4kGhEACCu3Ak5AMiMVAAgrtwNIOy4hFAAIK7cETkAyIxUACCu3BTAoHxYOAAgrtwZjUT8tGwAIK7cHQDQkGhEACCu3CFtKOikZAAgrtwmDZE46IwAIK7cKd2JMNiEACCu3C5F3XDojAAgrtwx2YEs2HQAIK7cNLCQcFAwACCsAsg8NByuwACBFfWkYRLKwEwFzslATAXSygBMBdLJwEwF1sg8fAXOybx8BdQAqAMwAkQCeAJEA7AByALIAfQBWAF8ATgBgAQQAxAAAABT+YAAUApsAEP85AA3+lwASAyEACwQ6ABQEjQAQBbAAFAYYABUGwAAQAlsAEgcEAAUAAAAAAAAAAABgAGAAYABgAGAAnQDIAUYB1QKDAxYDMQNgA4sDvgPmBAUEHARFBFwEvQTsBUUFwAYGBnEG4gcQB5kICAgUCCAIQQhpCIoI+Qm1CfUKYwrDCxMLVguOC/gMOwxWDJAM2Qz+DVgNlg36DkoOtQ8RD4cPsw/5ECoQeRDDEPURLxFVEWwRkxG6EdUR9RKCEu0TQxOrFCcUfxUMFVYVlBXmFi8WSxbDFxIXbRfaGEsYixkEGVwZqhnaGikacRq1Gu8bPRtUG6Ib5xvnHCQciBz2HWMdyh3rHosewh93H/Af/CAaICIg5iD9IT8hhCHdIlIiciLEIvMjFyNJI3gjzSPZI/MkDSQnJJgkryTGJN0k7yUCJRUleiWGJZ0ltCXLJd4l9SYMJiMmNiajJrUmzCbeJvAnAicVJ1EnzyfmJ/0oFCgsKEMomykQKScpPilUKWopgimaKn8qiyqiKrkqzyrmKvwrEispK0EruyvRK+gr/ywVLCssPSyZLRctLi1ALVEtZC12Ldkt6y4CLhMuJS43LqcvVi9oL3ovjC+dL68vwS/TL+Qv+zAHMHQw/DETMSQxNjFHMVkxazHfMn4ylTKmMrgyyTLbMuwy/jMQMxwzLjNFM1czujQkNDY0SDRfNHY0iDSaNKU0sDTCNN006TT1NQc1HjUqNTY1hDWbNbI1vjXKNd817zX7Ngc2UzaTNqo2vDbINtQ26zb8Nww3aDfLN9037jgAOBI4JTg4OMY5gzmVOac5szm/OdE54jn0OgY6GDopOjU6QTpTOmQ6cDp8OpM6nzrlO1g7ajt7O407njuwO8I71TvoO/s8Djx5PPI9CT0gPTc9TT1gPXc9jj2gPbI9xD3VPgo+fD7nP2I/1kAzQJlAq0C9QM9A5kD9QQlBFUEsQT5BVUFsQYRBnEG0QcxB5EH8QhRCLEJEQlxCdEKMQphCpEKwQrxC60NVQ2FDnEPEQ8xD/EQiRGFEjkTVRQtFUUVwRZBFmUXLRf1GHkY3RolGlEacRqhGtEbARsxG2EbkRvpHAkcKRzFHXkdmR25HdkgASAhIEEg9SEVITUiPSJdIx0jPSQ1JFUkdSZtJo0oDSnJKhUqYSqpKvErOSt9K9Et+S/lMLUytTT5Nm03qTnFOok6qTwVPDU8VT4xPlE/sUE9Qt1EnUW9RulIqUjJSlFMPUyJTNFNGU1hTalPqVERUUFTPVOZU+VVhVXhV91ZtVnVWiFaQVw5XhVfgV/dYDlggWF9YZ1jDWMtY01ksWTRZoVopWmRadlp+Wspa0lraWuJa6lryWvpbAltHW8JbylwCXElciVzVXTBdmF3pXmle9V9VX11f22BcYINg3GDkYVNh6WIkYjZiiGLRYxxjdWN9Y61jtWQLZDhkQGTgZOhlIGVoZahl8GZLZrFnAGdzZ/5oXWh0aIZpBWkcaYVpjWmVaahpsGopaqBrCmshazhrSWuIa/lsZWzSbUBty25YbqVu9G9hb9BwSHC6cUxx3HJ5cyhzMHM4c7V0JXRpdK50xnTedOp09nVqddh2s3eIeBh4qHkFeV95k3mweel6AHoXevJ7YXt8e5d8BHxzfM99S317faV95n4ofoR+037ffut+938Dfw9/G391f8yALICKgNyBM4E/gUuBmIHpgk+CqYNUg++D+4QHhBOEH4QnhC+Ee4TLhNeE44UshXKFfoWKheGGMYZ2hn6HAIeNh5mHpYeth7+H0YgziI6ImoimiQmJZ4lziX+Ji4mXiaOJr4m3icmJ24nuigGKCYoRiiOKNIqniq+KworUiueK+osNix+Lhovni/6MFIwnjDqMTYxfjGeMb4yCjJSMp4y5jMuM3IzvjQGNFI0sjT+NUY1djWmNhY2hjbCNwI3MjdiOMo6JjtyO5I9Oj+eQY5DakU2Ru5Iukp2TEJOCk+OUOpSTlOqVb5V3lYOVj5WblaeVs5W/lcuV15Xjle+V+5YHlhmWK5Y3lkOWT5ZblnKWhJaQlpyWqJa0lsaW2JbklvCW/JcIlxSXIJcyl0OXT5dbl3KXiZegl7eXypfdl+mX9ZgBmA2YGZglmDeYSZhhmHiYkJinmL+Y1pjumQWZIJk6mVKZaZl8mY6ZoZmzmcaZ2Jnzmg6aGpommjiaSppcmm2ahZqcmrSay5rjmvqbEpspm0SbXptwm4Kbjpuam6abspvEm9ab7pwFnB2cNJxMnGOce5ySnK2cx5zenPWdDJ0jnTqdUZ1onX6dip2WnaKdrp3Fndyd854KniGeOJ5PnmaefZ6Tnp+eq57Cntie5J7wnwKfFJ8mnzefQ59vn2+fb59vn2+fb59vn2+fb59vn2+fb59vn3eff5+Jn5OfnZ+4n9qf/KAboD2gSaBVoIigyaEuoVOhX6FvoYiicqKBopiitKLRot2i8KMEo0+jW6PqpJOlLqU6pgymd6aRpxin1Kg3qLipF6mMqj2qqqtIq6msE6wtrEesYax7rPStHK1WrW2toq5Broiu/69Ar0+vXq+Xr6qv1K/tr/mwaLDKsXKyDrKas3CzcLU2tZ+16rYbtpi2zrb5t3O33rhduKC45LksuXa57bpkuyi7fLuvvBy8rLzZvUG9qr3vvmS+vL7mvzi/fL/twE3AuMDPwRrBSsGNwbnCMcKMwu/DPcOew9jEK8RQxJXEy8TmxUPFr8Xqxi/GfcbZx2jHpsfFyBPIWsigyP7JdMnDyiTKmcrjyxTLj8vxzB7MqMzZzO/NBc16zfDOSM6KzubPPc+60BvQWdCz0PfRQNF70cLR/dI+0prSptL302/T/NRa1J/VJ9WO1ffWXNbz1v/XUteh1/XYPdix2RrZgNoA2pjbIdvD3ETcsd0J3XPde93c3kXes98t37TgFOCD4NPhPuGt4djiM+Jh4r7jCOMc4zDjQuNW42jjf+OT4/bkHeSn5RjlduV+5YbljuWZ5aHmD+Y65mXmdeaM5qPmuebK5t3m8Ob85wjnH+c250znXud054rnoee058bn3efv6ADoEugl6DzoROhM6FToXOhk6GzofuiP6KLouejP6OHpVeln6Xjpiumb6bHpx+nY6erqXup06oXql+qp6rXqy+rd6vTrBusR6yLrOetF61vrZ+t864jrn+ur68Lr0+vl6/jsCuwW7CfsOexK7FbsZ+xz7Insleym7Lfsyezc7O/tWe1w7YbtmO2v7cHt++4H7hPuH+4r7jfuQ+5P7lfuX+5n7m/ud+5/7ofuj+6X7p/up+6v7rfuyu7c7u7vAO8I7xDvI+8r7z3vT+9X71/vZ+9v74Hvie+R75nvoe+p77Hvue/B8F3w0vE68ULxTvFg8XHxefGF8ZHxnfGp8bUAAAAFAGQAAAMoBbAAAwAGAAkADAAPAG+yDBARERI5sAwQsADQsAwQsAbQsAwQsAnQsAwQsA3QALAARViwAi8bsQIfPlmwAEVYsAAvG7EADz5ZsgQCABESObIFAgAREjmyBwIAERI5sggCABESObAK3LIMAgAREjmyDQIAERI5sAIQsA7cMDEhIREhAxEBAREBAyEBNQEhAyj9PALENv7u/roBDOQCA/7+AQL9/QWw+qQFB/19Anf7EQJ4/V4CXogCXgACADf/7wIgBbAAAwAOADuyAg8QERI5sAIQsAvQALAARViwAi8bsQIfPlmwAEVYsAwvG7EMDz5ZsgcNCitYIdgb9FmwAdCwAS8wMQEjEzMBNDY3NhYUBgcGJgFWzJz6/hdLOjlOSzo3UAGtBAP6vztMAgJKcksCAkcAAAIAoQP0AsIGAAAEAAkAJQCwAEVYsAMvG7EDIT5ZsALQsAIvsAfQsAcvsAMQsAjQsAgvMDEBAyMTMwUDIxMzAYdcilOqAQ1cilOqBWz+iAIMlP6IAgwAAgA7AAAE5QWwABsAHwCNALAARViwDC8bsQwfPlmwAEVYsBAvG7EQHz5ZsABFWLACLxuxAg8+WbAARViwGi8bsRoPPlmyHQwCERI5sB0vsgADCitYIdgb9FmwBNCwHRCwBtCwHRCwC9CwCy+yCAMKK1gh2Bv0WbALELAO0LALELAS0LAIELAU0LAdELAW0LAAELAY0LAIELAe0DAxASMDIxMjNzMTIzchEzMDMxMzAzMHIwMzByMDIwMzEyMCltORqpHeHPpv6RwBBZWpldSUqZTHHORu1BzxkakJ02/TAZr+ZgGangE5nwGg/mABoP5gn/7Hnv5mAjgBOQAAAQBC/y0EUQabADUAb7InNjcREjkAsABFWLAQLxuxEB8+WbAARViwJy8bsScPPlmyBCcQERI5sBAQsA3QshUnEBESObAQELIYAQorWCHYG/RZsAQQsh8BCitYIdgb9FmwJxCwKtCyLhAnERI5sCcQsjIBCitYIdgb9FkwMQE2JyYnJiYnJjc2NzY3NzMHFhcWByM2JicmBgcGFxYXFhcWBwYHBgcHIzcmJyY3FwYWFxY3NgL+CSkodjteJKoOC3JxtSidKZVKTArsCVRYXXwNCSgodHU+uA8Ld3W9JJwlp1lYCe0HZWNqR0kBg0w4OTEZMxyBz6psbRXa3iB4er6AjAMCb2NNNTYzNCyC2q1raRTDxBl6eb8BgIYCAjk6AAUAtf/nBT4FyAANABsAKQA3ADsAibInPD0REjmwJxCwBdCwJxCwFtCwJxCwK9CwJxCwONAAsDgvsDovsABFWLAALxuxAB8+WbAARViwIy8bsSMPPlmwABCwB9CwBy+yEQIKK1gh2Bv0WbAAELIYAgorWCHYG/RZsCMQsBzQsBwvsCMQsi0CCitYIdgb9FmwHBCyNAIKK1gh2Bv0WTAxARYWBwcGBicmJjc3NjYDBhYXFjY3NzYmJyYGBwEWFgcHBgYnJiY3NzY2AwYWFxY2Nzc2JicmBgcFJwEXAg+DkggGD7mCfpkIBw23JAc4OjxYCwkHODs9WggCvYKTCAYOuoJ8mgYFC7kiBTo3PVUMCgU6N0BYCP3xeANveAXGBKqATYmmBAKqf0qJqv6BQFcCAldGTkFYAgJdSv4CBKp+ToepBAKmhEGOrf6CRVMCAlNLT0hQAgJdSO5PBGdPAAMALf/pBKEFyAAeACgANABysi01NhESObAtELAR0LAtELAh0ACwAEVYsAkvG7EJHz5ZsABFWLAYLxuxGA8+WbAARViwHC8bsRwPPlmyEgkYERI5shUJGBESObIfAQorWCHYG/RZsiMJGBESObIsCRgREjmwCRCyMgEKK1gh2Bv0WTAxEzY3NyYmNzY2Fx4CBwYGBwcTNjc3AgcXIScGJyYmBRY2NwMHBgcGFhMGFxc3Njc2JiMiBjgMxnI9KAQM5KxdllAFBWl2edZTFcsYoKH+/j2wx7vsAbdEeDjzIokRDGhwCjAXY4EMBkg3SGQBgbaMS3CNP6rUBANSkVdanVJQ/rx8kAH+8K36X3YEAt4eATQjAXEWYHdgeAOgRVwqPlJqOUlpAAEAkAP8AZYGAAAEABYAsABFWLADLxuxAyE+WbAC0LACLzAxAQMjEzMBgVSdUbUFd/6FAgQAAAEAaP4xAyAGYAARABCyBhITERI5ALADL7AMLzAxExIANxcAAwYHBhIXByYCEzY3gDUBT/gk/qpmJQECZGI4q7cIAgwCTAFtAjlukP74/czOv8v+0VeFagHAASpgVgAB/5T+LwJQBl8ADwAQsgkQERESOQCwCC+wAC8wMQMnNhITNxAnNxYWEgcCAgBHJdTwGgTEOXOjTwQJs/7e/i+KpQIvAX98AaWshkb9/qS1/un99f6XAAEAZwJLA6UFsAAOACAAsABFWLAELxuxBB8+WbAA0BmwAC8YsAnQGbAJLxgwMQElNwUTMwMlFwUTBwMDJwF//uhPARctsEsBLhj+wZeVfNyGA9FYoXcBXf6ocLRY/vFiASH+7G4AAAEAPQCSBC4EtgALABoAsAkvsADQsAkQsgYBCitYIdgb9FmwA9AwMQEhByEDIxMhNyETMwK9AXEn/pBL50z+jCgBckbnAyHe/k8Bsd4BlQAAAf+J/rgBFADrAAcAGLIHCAkREjkAsAgvsgQNCitYIdgb9FkwMRMnNjc3MwcGCH92GyXVGij+uFCed86h9wABADYCCQJYAs0AAwARALACL7IBAQorWCHYG/RZMDEBITchAjX+ASMB/wIJxAAAAQAw//IBQwEDAAsAIrIIDA0REjkAsABFWLAJLxuxCQ8+WbIDDQorWCHYG/RZMDE3NDY3NhYVFAYHBiYwTTw7T0w9O091PU0CAks7Ok0CAkoAAAH/f/+DA4IFsAADABMAsAAvsABFWLACLxuxAh8+WTAxFyMBM0PEAz7FfQYtAAACAGD/5wQ6BckAEQAgAEayFyEiERI5sBcQsADQALAARViwCS8bsQkfPlmwAEVYsAAvG7EADz5ZsAkQshYBCitYIdgb9FmwABCyHgEKK1gh2Bv0WTAxBSYmNzY3ExIAFxYWBwYHBwIAEzY1JicmBgcDBhcUFxYTAd+9wgMBCScxARjevMMDAQknM/7riA0FoHqUHi4MAaTiQRQE/eRKSgEEATIBLgUE+ORLSf3+x/7NA5ByMOIHBbzN/sNnPOoHDQFuAAEA7wAAA3gFtQAGADkAsABFWLAFLxuxBR8+WbAARViwAC8bsQAPPlmyBAAFERI5sAQvsgMBCitYIdgb9FmyAgMFERI5MDEhIxMFNyUzAoHsyv6QJQJAJASMetfMAAABAAsAAAQ/BccAGABVsgkZGhESOQCwAEVYsBAvG7EQHz5ZsABFWLAALxuxAA8+WbIDEAAREjmwEBCyCAEKK1gh2Bv0WbIMEAAREjmyFRAAERI5sAAQshcBCitYIdgb9FkwMSEhNwE2NzYmJyYGBwc+AhcWFgcGBwcBIQPC/EkcAl2pEQ1aWm+YEOwKj+2Kvt0NEeQ+/lsCh7ECRaWGX38EBJN/AYbWdwME1LLM4z3+dAAAAQAm/+gEOQXFACoAZ7IIKywREjkAsABFWLAPLxuxDx8+WbAARViwGy8bsRsPPlmwAdCwAS+wDxCyBwEKK1gh2Bv0WbAPELAL0LABELIpAQorWCHYG/RZshUpARESObAbELAg0LAbELIjAQorWCHYG/RZMDEBFzI2NzYmJyYGBwc+AhcWFgcGBgcWFxUGBCcuAjcXBhYXFjY3NiYnJwGggXWcCwteXV6KDu0JiNt/w+ENB4Z/rQsN/tnWe8RpBOwEZ2NtmQwMc2yZA0cBfmljcQICcl0BdbhjAQTbuGSnPFDGMMT0BAFnu3gBYHUDBIhub3QDAQAAAgAJAAAEKgWwAAoADgBJALAARViwCS8bsQkfPlmwAEVYsAQvG7EEDz5ZsgEJBBESObABL7ICAQorWCHYG/RZsAbQsAEQsAvQsggGCxESObINCQQREjkwMQEzByMDIxMhNwEzASETBwN6sCKvOe04/Z4VAwL9/QcBaXEYAgfD/rwBRKADzPxXAmMiAAABAFr/5wRzBbAAHQBqshoeHxESOQCwAEVYsAEvG7EBHz5ZsABFWLANLxuxDQ8+WbABELIDAQorWCHYG/RZsgcBDRESObAHL7IaAQorWCHYG/RZsgUHGhESObANELIUAQorWCHYG/RZshEUGhESObIdGhQREjkwMRMTIQchAzYzFhIHBgAnJiYnMxYWFxY2NzYmJyYGB7q/Avoh/c9nZni5xxIS/tzXtuMG4wdlW2+XDwxqaUBlMALVAtvS/qM6Av701dv+6gQE4rlmcwIDqIx8mQICLSgAAgBj/+gEEwW4ABcAJQBbshkmJxESObAZELAG0ACwAEVYsAAvG7EAHz5ZsABFWLAPLxuxDw8+WbAAELICAQorWCHYG/RZsgcADxESObAHL7IYAQorWCHYG/RZsA8QsiABCitYIdgb9FkwMQEHJyYEBzYXHgIHDgInJiYnJjcSACEBJgYHBhcUFhcWNjc2JgPMFA3A/uZQhKl1pEwMDI7liK3YDwkgQQGpAUj+tFCMMAsBXlhslw8NYAW4ygEC09aABAJ/3YKO7YEDBO7Ca7MBZQGW/UkCWVJlK4CWAgOoiH+iAAEAhgAABJwFsAAGADIAsABFWLAFLxuxBR8+WbAARViwAS8bsQEPPlmwBRCyAwEKK1gh2Bv0WbIAAwUREjkwMQEBIQEhNyEEhf0E/v0C+f0qHwPUBR364wTtwwAAAwA7/+gERQXIABYAIgAuAGuyGi8wERI5sBoQsBLQsBoQsCfQALAARViwEy8bsRMfPlmwAEVYsAgvG7EIDz5ZsCzQsCwvshoBCitYIdgb9FmyAiwaERI5sg0aLBESObAIELIgAQorWCHYG/RZsBMQsiYBCitYIdgb9FkwMQEGBxYWBwYEJyYmNzYlJiY3NiQXHgIBNiYnJgYHBhYXFjYTNiYnJgYHBhYXFjYEPBLuWVcIDf7g1cLlDRIBEUtIBg4BDMd3tVr+tQtkXmqWDAtmXWyTYAlVU1uBCwlWUVyBBDjZdzmwasDtBATftfN9NqFcvOUEA2S0/PhlgwICj21newICigL7WnYCAoBmXnICAoIAAAIAjv/5BC8FyAAYACYAWLIZJygREjmwGRCwFdAAsABFWLANLxuxDR8+WbAARViwFi8bsRYPPlmyAAEKK1gh2Bv0WbIFFg0REjmwBS+yGQEKK1gh2Bv0WbANELIhAQorWCHYG/RZMDE3FiQ3BicuAjc+AhceAhcWBwIAISM3ARY2PwI2JicmBhcWFvfUAQpCiJhxplIMDY/kh3WtYAcFHED+XP68FhMBSkqEMA0EA1hYfaAPB1rCAtHRhAICd+CIkfKEBANx0YFroP6O/njKAdoCVUthRoKZBAT4qFls//8AK//yAdAEVAAmABL7AAAHABIAjQNR////mv64AbwEVAAnABIAeQNRAAYAEBEAAAEAMgCqA8MEVAAGABeyAAcIERI5ALAARViwBS8bsQUbPlkwMQEFBwE3AQcBMgIWKf0TIgNvLQJy4OgBdcEBdP4AAAIAYgFkBBQD1gADAAcAJQCwBy+wA9CwAy+yAAEKK1gh2Bv0WbAHELIEAQorWCHYG/RZMDEBITchAyE3IQPx/LokA0Vt/LsjA0YDDMr9jskAAQAvAJ8D2QRJAAYAF7IABwgREjkAsABFWLACLxuxAhs+WTAxASU3AQcBNwLb/c8oAwci/HgsAoHj5f6Lwf6M+gAAAgCV//ED3wXJABgAJABesh4lJhESObAeELAK0ACwAEVYsBAvG7EQHz5ZsABFWLAiLxuxIg8+WbIcDQorWCHYG/RZsADQsAAvsgQQABESObAQELIJAQorWCHYG/RZsg0QIhESObIVABAREjkwMQE+Ajc2JyYmJyYGBwc2JBcWFgcGBwcGBwE0Njc2FhUUBiMGJgE/DF3LH14SCEg5UnER7BEBAL6xyg4PvXpeFP7WSzo4Tk82OE4Bq32wrCRsdjQ9AQJjVQGy0gQEzqqxo2ZWjf7FO0wCAko5PUkCRwAAAgAy/jsGpAWTADsARwB8sh5ISRESObAeELBF0ACwKy+wNC+wAEVYsAAvG7EADz5ZsABFWLAFLxuxBQ8+WbIDNAAREjmyDDQAERI5sAwvsAAQsj4ECitYIdgb9FmwFNCwNBCyHQIKK1gh2Bv0WbArELImBAorWCHYG/RZsAwQskQECitYIdgb9FkwMQUmJicGJyYmNzYSNhcWFhcDBwYWFxY2Ejc2JicmJyYEAgIHBhIWFxY3FwYjJiQCJyYSACQXFgQSFxYCBgEGFxY2NxMmJyYGBwSmTXYUg4tyegkHn+KEVYVDhggHKC9ZiVYHBDs8ffKn/trrhQcIadufpq0biuXD/t2cBASeASABb8nAARqaBASB5/1jBWo4dx2BLSmCsSQVAkpOnAMCtaChAU+uAgI5MP3JPD9JAgSQAROshtZHkgQDkf7f/ou+rf70iwECS4xWAaQBONPdAcABWrEDA6L+ycjT/pLEAUyiAwNrTAHxEQIF++UAAAL/pAAABK4FsAAHAAoARgCwAEVYsAQvG7EEHz5ZsABFWLACLxuxAg8+WbAARViwBi8bsQYPPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMhATMBIwEhAwN9/d+u/vYDEt4BGvj+DgGYYwFT/q0FsPpQAh8CWgAAAwAnAAAEvAWwAA0AFgAeAGmyGB8gERI5sBgQsA3QsBgQsBDQALAARViwAi8bsQIfPlmwAEVYsAAvG7EADz5ZsBfQsBcvsp8XAV2yDgEKK1gh2Bv0WbIHDhcREjmwABCyEAEKK1gh2Bv0WbACELIdAQorWCHYG/RZMDEzEwUWFgcGBxYWBwYEIwMDBTI2NzYmJyUXMjY3NiclJ/0Bv+ztDhLxWmIHDv7b8K1PAQN1pA8OWmj++ON6mg4Z1v7/BbABAcu01GsgqnbI6AKR/jkBfGxndAS7AXRjuwcBAAEAZf/oBQ0FxwAeAE6yCx8gERI5ALAARViwDC8bsQwfPlmwAEVYsAMvG7EDDz5ZsgAMAxESObIQDAMREjmwDBCyEwEKK1gh2Bv0WbADELIcAQorWCHYG/RZMDEBBgAnLgInJhISJBcWEhcjJiYnJgYPAgYWFhcEEwSqJf6w8YvRdgcGRMEBGazZ/Qj1BXl3o9wmFAkILXJYARdPAdvk/vEEA37xmHIBiQE4ngME/vfpnIsDBfTphWZntV8DCwEtAAIAJwAABOAFsAALABYARrIKFxgREjmwChCwD9AAsABFWLABLxuxAR8+WbAARViwAC8bsQAPPlmwARCyDAEKK1gh2Bv0WbAAELIOAQorWCHYG/RZMDEzEwUyBBIHBwYCBCMTAxcyJDc2JyYmJyf8AYq2AQd2Fwsezf68wiq2ksYBBSUaBwmXhgWwAbX+wcBPyf7JrATk++YB+92YcZGkBAABACcAAAS6BbAACwBOALAARViwBi8bsQYfPlmwAEVYsAQvG7EEDz5ZsgsGBBESObALL7IAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASEDIQchEyEHIQMhA9P9vE4CpiP8Y/wDlyT9YUYCRQKK/kDKBbDM/m4AAAEAJwAABKcFsAAJAEAAsABFWLAELxuxBB8+WbAARViwAi8bsQIPPlmyCQQCERI5sAkvsgABCitYIdgb9FmwBBCyBgEKK1gh2Bv0WTAxASEDIxMhByEDIQPB/chr9/wDhCT9dEsCOQJp/ZcFsMz+TwABAGv/6gUWBcgAIQBbsh8iIxESOQCwAEVYsA0vG7ENHz5ZsABFWLADLxuxAw8+WbANELAQ0LANELITAQorWCHYG/RZsAMQshsBCitYIdgb9FmyIA0DERI5sCAvsh8BCitYIdgb9FkwMSUGBCcuAicmEhI3NhcWFhcnAicmBgcGBwYWFxY3EyE3IQSQUP7ctJDcgQkHQKV2oM7b9xDvFuOq2ygXAgaPia9xNv7cIgIXvWhrAgF/85t4AXQBIVJvBAT03AEBAQcF+euJV7POAgRbAR3AAAEAJwAABYcFsAALAFOyBwwNERI5ALAARViwBi8bsQYfPlmwAEVYsAovG7EKHz5ZsABFWLAALxuxAA8+WbAARViwBC8bsQQPPlmyCQYAERI5sAkvsgIBCitYIdgb9FkwMSEjEyEDIxMzAyETMwSK9nD9inD3/fdqAnZp9wKH/XkFsP2iAl4AAQA1AAACKAWwAAMAHQCwAEVYsAIvG7ECHz5ZsABFWLAALxuxAA8+WTAxISMTMwEr9v32BbAAAQAD/+cEYQWwAA4ANrIMDxAREjkAsABFWLAALxuxAB8+WbAARViwBS8bsQUPPlmyCAAFERI5sgsBCitYIdgb9FkwMQEzAwYEJyYmNxcGFxY2NwNr9q4f/uPRzNcK9g7AZI8VBbD8A9T4BATqxwHlBASGegABACcAAAVxBbAADABTALAARViwBC8bsQQfPlmwAEVYsAgvG7EIHz5ZsABFWLACLxuxAg8+WbAARViwCy8bsQsPPlmyAAQCERI5tGoAegACXbIGBAIREjm0ZQZ1BgJdMDEBBwMjEzMDNwEhAQEhAjPITff993WZAfYBPP14AZn+7AJzt/5EBbD9Y58B/v1v/OEAAAEAJwAAA8MFsAAFACgAsABFWLAELxuxBB8+WbAARViwAi8bsQIPPlmyAAEKK1gh2Bv0WTAxJSEHIRMzAUECgiT8iP33ysoFsAAAAQAnAAAGzgWwAA4AbgCwAEVYsAAvG7EAHz5ZsABFWLACLxuxAh8+WbAARViwBC8bsQQPPlmwAEVYsAgvG7EIDz5ZsABFWLAMLxuxDA8+WbIBAAQREjm0ZQF1AQJdsgcABBESObRqB3oHAl2yCgAEERI5tGoKegoCXTAxARMBIQMjExMBIwsCIxMCXtUCVwFE/PZVgf2ost9bUfb9BbD7pgRa+lAB7QJf+7QEbf1m/i0FsAAAAQAnAAAFhgWwAAkATLIBCgsREjkAsABFWLAFLxuxBR8+WbAARViwCC8bsQgfPlmwAEVYsAAvG7EADz5ZsABFWLADLxuxAw8+WbICBQAREjmyBwUAERI5MDEhIwEDIxMzARMzBInv/jm19/3vAce29gQT++0FsPvpBBcAAAIAa//nBSEFyAASACIARrIZIyQREjmwGRCwANAAsABFWLAKLxuxCh8+WbAARViwAC8bsQAPPlmwChCyGAEKK1gh2Bv0WbAAELIfAQorWCHYG/RZMDEFLgInJhISNzYXFgAXFgICBwYTNzYmJicmBgIHBhYXFhI3AleO13gIBzuXaa3j2AEBDAY5i2ey2gkGMndbfsN5CgqEhK3hIxQDgvedfQFOARNXjgQE/t73fP6//vNanAMYam25YQMElv7O57fSBAUBDvUAAgAnAAAFBAWwAAoAEwBNsgoUFRESObAKELAM0ACwAEVYsAMvG7EDHz5ZsABFWLABLxuxAQ8+WbILAQMREjmwCy+yAAEKK1gh2Bv0WbADELITAQorWCHYG/RZMDEBAyMTBTIEBwYEIyUFMjY3NiYnJQF8Xvf9AfjkAQQREv7K+/7vARuGqxEOb3D+zAId/eMFsAH5zdT5zAKIem+HBQEAAAIAZP8EBRoFyAAWACYARrIDJygREjmwAxCwJNAAsABFWLAOLxuxDh8+WbAARViwBS8bsQUPPlmwDhCyHAEKK1gh2Bv0WbAFELIjAQorWCHYG/RZMDElFwclBicmACcmEhI3NhceAhcWBwcCAzc2JiYnJgIDBhYWFxYSNwOr0K7/AFAv1f79DAY7nXOo2JDWegcECgw+rQkGM3hbxPEOBjR3WaXiKFbIivQMAQIBJPZ9AUkBHlmCBAOC+5xWVlf+bgHtam64YAMG/pf+uG+6YQMHAQDzAAACACcAAATYBbAADgAXAFqyBRgZERI5sAUQsBDQALAARViwBC8bsQQfPlmwAEVYsAIvG7ECDz5Zsg8CBBESObAPL7IBAQorWCHYG/RZsgsBDxESObACELAO0LAEELIXAQorWCHYG/RZMDEBIQMjEwUyFgcGBgcTByEBFzI2NzYmJyUClv7qYvf9Acvt/BELppbXAf76/lLvga0PD25w/vgCMf3PBbAB5MuNzzv9pg8C/AKHdHF5BAEAAQAk/+oEuwXHACkAYbIDKisREjkAsABFWLAKLxuxCh8+WbAARViwHy8bsR8PPlmyAx8KERI5sAoQsA7QsAoQshIBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WbAfELAk0LAfELInAQorWCHYG/RZMDEBNicnJiY3PgIXHgIHJzYmJyYGBwYXFxYWBw4CJy4CNxcGFhcWNgNMFrNR4r4JCJn6jYjUcAT2B3N0daEOFL5L5bYLCo77l4/pfAX3CIqBeKEBfpBGHk/Yj3y9ZgMDccmBAXJ+AwJyYX9JG1Ldl3u3ZAIBdtGFAXyGAgJqAAABAJwAAAUiBbAABwAuALAARViwBi8bsQYfPlmwAEVYsAIvG7ECDz5ZsAYQsgABCitYIdgb9FmwBNAwMQEhAyMTITchBP7+SNn22v5LJARiBOT7HATkzAAAAQBb/+YFLwWwABIAPLIPExQREjkAsABFWLAALxuxAB8+WbAARViwCS8bsQkfPlmwAEVYsAQvG7EEDz5Zsg4BCitYIdgb9FkwMQEDBgAnJgI3NxMzAwYWFxY2NxMFL6Ui/rXr2v0LA6X2pRJ2e4e0GacFsPwz6f7sBAQBAM4mA878MYucBASakAPUAAABAJsAAAWBBbAABgA4sgAHCBESOQCwAEVYsAEvG7EBHz5ZsABFWLAFLxuxBR8+WbAARViwAy8bsQMPPlmyAAEDERI5MDEBASEBIwEhAlECGAEY/SDv/ukBBgE/BHH6UAWwAAEAtwAABzoFsAAMAGCyBQ0OERI5ALAARViwAS8bsQEfPlmwAEVYsAgvG7EIHz5ZsABFWLALLxuxCx8+WbAARViwAy8bsQMPPlmwAEVYsAYvG7EGDz5ZsgABAxESObIFAQMREjmyCgEDERI5MDEBATMBIwMBIwMzEwEzBLsBhPv91uxl/kjuYu8wAbfPAWoERvpQBCT73AWw+78EQQAAAf/DAAAFRwWwAAsAUwCwAEVYsAEvG7EBHz5ZsABFWLAKLxuxCh8+WbAARViwBC8bsQQPPlmwAEVYsAcvG7EHDz5ZsgABBBESObIGAQQREjmyAwAGERI5sgkGABESOTAxAQEhAQEhAwEhAQEhAqMBegEq/dsBPv7u3P58/tUCMf7JARADowIN/SP9LQIV/esC6QLHAAEAoQAABU0FsAAIADEAsABFWLABLxuxAR8+WbAARViwBy8bsQcfPlmwAEVYsAQvG7EEDz5ZsgABBBESOTAxAQEhAQMjEwEhAnMBvAEe/X5b+GD+yQEFAwACsPxb/fUCJQOLAAAB/+UAAATnBbAACQBEALAARViwBy8bsQcfPlmwAEVYsAIvG7ECDz5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIQchNwEhNyEHAToC7CT74x8Djf0yJAQAHsrKsAQ0zKwAAAH/7/68ArUGjgAHACIAsAQvsAcvsgABCitYIdgb9FmwBBCyAwEKK1gh2Bv0WTAxASMDMwchASECl5/+oB7+cwE5AY0F0PmpvQfSAAABAKz/gwLIBbAAAwATALACL7AARViwAC8bsQAfPlkwMRMzASOs4AE84AWw+dMAAf96/rwCQwaOAAcAJQCwAi+wAS+wAhCyBQEKK1gh2Bv0WbABELIGAQorWCHYG/RZMDETIQEhNzMTI7QBj/7H/nAeov6jBo74Lr0GVwAAAQBEAtkDLgWwAAYAJ7IABwgREjkAsABFWLADLxuxAx8+WbAA0LIBBwMREjmwAS+wBdAwMQEDIwEzEyMCFP3TAaCno70EpP41Atf9KQAAAf95/0EDFgAAAAMAGwCwAEVYsAMvG7EDDz5ZsgABCitYIdgb9FkwMQUhNyEC9PyFIgN7v78AAQDKBNECVgYAAAMAJACwAS+yDwEBXbAD0LADL7QPAx8DAl2yAAEDERI5GbAALxgwMQEjAzMCVrXX/gTRAS8AAAIAIv/oA9wEUAAgACsAhbIKLC0REjmwChCwJtAAsABFWLAYLxuxGBs+WbAARViwAC8bsQAPPlmwAEVYsAQvG7EEDz5ZsgIEGBESObIKGAAREjmwCi+wGBCyEAcKK1gh2Bv0WbITChAREjlACQwTHBMsEzwTBF2wBBCyIQEKK1gh2Bv0WbAKELImBworWCHYG/RZMDEhJjcGJyYmNzYkMxc3NicmJyYGBwc+AhcWFgcDBwYXByUWNjc3JyIGBwYWApMMAoabjbkGCAEY7JoOBgYUe0xzDe0HgNR2scYRUwgDEgH+IUuALSVxhqALCEsoPX0EArGIq8QCSicibAMCUUQCZJdUAgTNo/4FWjs4Eq4CSTrNAWVYQ00AAAIAEP/oBA8GAAARAB4AZLIEHyAREjmwBBCwG9AAsAkvsABFWLANLxuxDRs+WbAARViwBy8bsQcPPlmwAEVYsAQvG7EEDz5ZsgYNBxESObILDQcREjmwDRCyFQEKK1gh2Bv0WbAEELIaAQorWCHYG/RZMDEBBgIGJyYnByMBMwM2FxYWFxYnNCYnJgcDFhcWNjc2BAcUict/tVwm2QEK7mx5pp2xBQHsWlWPY04skXibFggCGKX+9YADBId2BgD90YEEBN7BPC9tewIEjv5AiAUDvq1VAAABADj/6QPuBFIAHABLsgAdHhESOQCwAEVYsBEvG7ERGz5ZsABFWLAILxuxCA8+WbIAAQorWCHYG/RZsgQRCBESObIVCBEREjmwERCyGAEKK1gh2Bv0WTAxJRY2NzcOAicuAjc3PgIXFhYVIzQmJyYGBwIB6FWDEuALhdBxi8RaDwMRleyQsNLeW1aLoAYHrQJnUwFrsGIDAoz3mCOd/4oEBOG0XXYEBPTe/vMAAgA7/+cEiAYAABIAHQBhsgQeHxESObAEELAb0ACwBy+wAEVYsAQvG7EEGz5ZsABFWLAJLxuxCQ8+WbAARViwDS8bsQ0PPlmyBgQJERI5sgsECRESObIWAQorWCHYG/RZsAQQshsBCitYIdgb9FkwMRM2EjYXFhcTMwEjNwYnJiYnJjcXBhYXFjcTJicmBkQUjM5+pV1o7v711BB+qpe1BwMG6QdbWolkUS+HiKYCHqcBCoMDBHcCLPoAcIkEAuW+PjtIfJICBIkB0X0EBPgAAAIAO//qBAIEUQAWAB8Ag7IRICEREjmwERCwF9AAsABFWLAJLxuxCRs+WbAARViwAC8bsQAPPlmyGgAJERI5sBovtL8azxoCXbRfGm8aAnG0HxovGgJxso8aAV207xr/GgJxsg0HCitYIdgb9FmwABCyEQEKK1gh2Bv0WbITCQAREjmwCRCyFwEKK1gh2Bv0WTAxBS4CNzc2EjYXFhIHByEGFhcWNxcGBgMmAwU3NicmJgH6jc9jDAMSneqJy8sZDv1XCXprmYF4RN4fvF4BwQQHBgtaFAOI7JEppQEHiAME/trsaIGeAgWKfmFrA6IG/vABFS4sR1IAAQBfAAADXgYaABUAY7IVFhcREjkAsABFWLAILxuxCCE+WbAARViwAy8bsQMbPlmwAEVYsBEvG7ERGz5ZsABFWLAALxuxAA8+WbADELIBAQorWCHYG/RZsAgQsg0BCitYIdgb9FmwARCwE9CwFNAwMTMTIzczNzY2FxYXByYjJgYHBzMHIwNjnaEgoBAa2609UBosLVVsDw/WINWdA4a0dKjEAgISvgoBXlNmtPx6AAAC//f+TwRCBFEAHAAqAIOyBCssERI5sAQQsCPQALAARViwCC8bsQgbPlmwAEVYsAQvG7EEGz5ZsABFWLAMLxuxDBE+WbAARViwGC8bsRgPPlmyBggYERI5sAwQshIBCitYIdgb9FmyEBIYERI5shYIGBESObAYELIiAQorWCHYG/RZsAQQsicBCitYIdgb9FkwMRM2EjYXFhc3FwMGBCcmJic3FhcWNjc3BicmJicmNwYXFhYXFjcTJicmBgdGE4nQhrJbJdizHv7X1XLMPn5fmXSnHBF9n5i3CQPzBgICXFWHZVU0hXikGQIeogEGiwIEf28B++TU+wYCZFKPgwQEh31MeQQC4r88PjM7anwDBYIB3ncEA8CtAAABAA0AAAP5BgAAEgBJsgETFBESOQCwES+wAEVYsAIvG7ECGz5ZsABFWLAGLxuxBg8+WbAARViwDy8bsQ8PPlmyAAIGERI5sAIQsgwBCitYIdgb9FkwMQE2FxYWBwMjEzYnJicmBwMjATMBl4esmpUTdO12BQMNg4Roh+0BCu4Dw44EAta9/UgCuyslegMChPz6BgAAAgAfAAACCQXYAAMADwA+sgQQERESObAEELAA0ACwAEVYsAIvG7ECGz5ZsABFWLAALxuxAA8+WbACELAN0LANL7IHDQorWCHYG/RZMDEhIxMzAzQ2NzYWFRQGBwYmAQztvO3LSD06TUs6OU4EOgEVN04CAks2OUoCAkkAAAL/DP5GAf4F2AAMABgASbIBGRoREjmwARCwDdAAsABFWLAALxuxABs+WbAARViwBC8bsQQRPlmyCQEKK1gh2Bv0WbAAELAW0LAWL7IQDQorWCHYG/RZMDEBAwYGJyYnNxYzMjcTEzQ2NzYWFRQGByImAcPHFryXQEcULiZ/GskdSDw6TUs6PEoEOvtnqLMCAhHAC5UElQEVOksCAkk4OUoCRwAAAQARAAAESgYAAAwAUwCwAEVYsAQvG7EEIT5ZsABFWLAILxuxCBs+WbAARViwAi8bsQIPPlmwAEVYsAsvG7ELDz5ZsgAIAhESObRqAHoAAl2yBggCERI5tGUGdQYCXTAxAQcDIwEzAzcBIQEBIQG/hjvtAQrtmFMBWAEv/iABPP7/Ac53/qkGAPyYVgFM/jL9lAABAB8AAAIXBgAAAwAdALAARViwAi8bsQIhPlmwAEVYsAAvG7EADz5ZMDEhIwEzAQztAQvtBgAAAAEAEAAABmgEUgAhAHeyFiIjERI5ALAARViwAy8bsQMbPlmwAEVYsAgvG7EIGz5ZsABFWLAALxuxABs+WbAARViwDC8bsQwPPlmwAEVYsBYvG7EWDz5ZsABFWLAfLxuxHw8+WbIBCAwREjmyBggMERI5sAgQshIBCitYIdgb9FmwHNAwMQEHNhcWFhc2FxYWBwMjEzYnJicmBwcDIxM2JyYnJgcDIxMBqRWGumaHGJbCnpkTde12BQQQhJNVA3zudgUEEISFWYntuwQ7c4oEAlpKqgQE0bz9QwK/LCV1AwSlFv0vArwrJXkDAnn87wQ6AAEADQAAA/oEUgASAFOyAhMUERI5ALAARViwAy8bsQMbPlmwAEVYsAAvG7EAGz5ZsABFWLAHLxuxBw8+WbAARViwEC8bsRAPPlmyAQMHERI5sAMQsg0BCitYIdgb9FkwMQEHNhcWFgcDIxM2JyYnJgcDIxMBpxiLtpiSE3XtdgUEDYGHZoftuwQ7f5YEA9O9/UUCvisldwMCh/z9BDoAAgA5/+gEJwRSABAAIABDshshIhESObAbELAE0ACwAEVYsAQvG7EEGz5ZsABFWLAMLxuxDA8+WbIUAQorWCHYG/RZsAQQshsBCitYIdgb9FkwMRM2EjYXHgIHBgIGJy4CNxcWFhcWNjc3NCYnJgcGBwZJEZnwkovKXQ4Qm/GTisleDewFZVp6pRUGZmGYWDUOCAIhnwEEjgQCkPqZrP74jQQCj/mWdGl/AwPCqGKAkgQEmV15VAAC/8f+YAQNBFIAEgAeAGeyBB8gERI5sAQQsB3QALAARViwDS8bsQ0bPlmwAEVYsAovG7EKGz5ZsABFWLAHLxuxBxE+WbAARViwBC8bsQQPPlmyCw0HERI5sA0QshcBCitYIdgb9FmwBBCyHAEKK1gh2Bv0WTAxAQYCBicmJwMjATcHNhceAhcWBzc2JicmBwMWFxY2BAUUhc1/qWFh7gEE2RJ8q2eYUQMB8gUDW1uGYlQtinahAhmi/viHAwR0/f0F2gFwhwQBZ8R4PT9JgY4CBH/+HXkEA74AAAIAO/5gBDgEUgASACAAa7IEISIREjmwBBCwGNAAsABFWLAILxuxCBs+WbAARViwBC8bsQQbPlmwAEVYsAkvG7EJET5ZsABFWLANLxuxDQ8+WbIGCA0REjmyCwgNERI5shcBCitYIdgb9FmwBBCyHQEKK1gh2Bv0WTAxEzYSNhcWFzcXASMTBicmJicmNzMHBhYXFjY3EyYnJgYHRBSOzn+sXCfW/vztYnmcm7QHAwbuBQNbWEtvLVg0gnKfHAIfqwEJfwMEfW0B+iYB/XUEAuO+PzxIh4sCA0U4Ae5yBAOypAABABAAAALvBFMADQBGsgkODxESOQCwAEVYsAgvG7EIGz5ZsABFWLALLxuxCxs+WbAARViwBS8bsQUPPlmwCxCyAgEKK1gh2Bv0WbIJCwUREjkwMQEmIyYHAyMTNwc2FzIXAtQuL5xcgu274RhvkSE6A1wKBIX9GwQ6AXuTAw8AAAEAHP/pA8QEUAAkAHSyIyUmERI5ALAARViwCC8bsQgbPlmwAEVYsBsvG7EbDz5ZsgMbCBESObILCBsREjmyHAsBXbILCwFdsAgQsg8BCitYIdgb9FmwAxCyEwEKK1gh2Bv0WbIeCBsREjm0BB4UHgJdsBsQsiIBCitYIdgb9FkwMQE2JCcmNzY2FxYWByc2JiciBgcGBBcWBw4CJyYmNxcWFhcyNgKXEf7dNc4HBf+yrNkC6wJWS09xCQ4BHETGBwV90nax6QLlAmRXWHUBLGNNF1i0kr8CAr6aAUtVAk4/W0ceV7lnmVEDAsqeAVdaAUkAAQA7/+0CrgVBABYAXLIWFxgREjkAsABFWLABLxuxARs+WbAARViwFC8bsRQbPlmwAEVYsA4vG7EODz5ZsAEQsADQsAAvsAEQsgMBCitYIdgb9FmwDhCyCQEKK1gh2Bv0WbADELAS0DAxAQMzByMDBhcWFzI3BwYjJiY3EyM3MxMCIy65H7pmAwIGSiUvEEpLfHsNZa0grC4FQf75tP2iGRRBAwm+FQKliAJqtAEHAAABAEr/6AQxBDoAEwBQsgEUFRESOQCwAEVYsAcvG7EHGz5ZsABFWLAQLxuxEBs+WbAARViwEi8bsRIPPlmwAEVYsAIvG7ECDz5ZsgAQEhESObINAQorWCHYG/RZMDElBicuAjcTMwMGFxYXFjcTMwMjAq17uWmLOwx17XYEAwpznWGI7bvea4MEAmSzeQK8/UElI3wFBoQDCvvGAAABAGQAAAQNBDoABgA4sgAHCBESOQCwAEVYsAEvG7EBGz5ZsABFWLAFLxuxBRs+WbAARViwAy8bsQMPPlmyAAUDERI5MDEBATMBIwMzAboBVv39687G7gE3AwP7xgQ6AAABAHcAAAX4BDoADABgsgUNDhESOQCwAEVYsAEvG7EBGz5ZsABFWLAILxuxCBs+WbAARViwCy8bsQsbPlmwAEVYsAMvG7EDDz5ZsABFWLAGLxuxBg8+WbIACwMREjmyBQsDERI5sgoLAxESOTAxAQEzASMDASMDMxMBMwPhASnu/ibDX/6ixGPgKQFWswFRAun7xgLk/RwEOv0iAt4AAAH/uQAABBMEOgALAFMAsABFWLABLxuxARs+WbAARViwCi8bsQobPlmwAEVYsAQvG7EEDz5ZsABFWLAHLxuxBw8+WbIACgQREjmyBgoEERI5sgMABhESObIJBgAREjkwMQETIQETIwMBIQEDMwH//wEV/mLx+Jf+9v7sAavp+ALYAWL94P3mAXH+jwIwAgoAAAH/tf5FBBIEOgAPAEOyABARERI5ALAARViwDy8bsQ8bPlmwAEVYsAEvG7EBGz5ZsABFWLAFLxuxBRE+WbIABQ8REjmyCQEKK1gh2Bv0WTAxAQEhAQInJic3FxY2NzcDMwG4AVQBBv1/hts2RRQrVnAmObX2AV4C3PsL/wADAhK8BANHS3AEJwAB/+cAAAPkBDoACQBEALAARViwBy8bsQcbPlmwAEVYsAIvG7ECDz5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIQchNwEhNyEHATgCJiL8qx4CiP39IwM3HcLCqwLLxKUAAAEAMP6ZAwUGQAAbADayDBwdERI5ALAOL7AARViwAC8bsQAXPlmyCQ4AERI5sAkvsggHCitYIdgb9FmyFAgJERI5MDEBJiY3NzYnJic3Njc3EiUXBgMHBgcWFg8CBhcBzZ6cExwFBA2GEccfHzkBYyPBIx0huUk2CR4DA4P+mTPwrswtJ3oLsgrd4AFQaI9G/vraxWA3oljmR6o6AAEAIP7yAdIFsAADABMAsAAvsABFWLACLxuxAh8+WTAxEyMBM8SkAQ6k/vIGvgAB/5n+lQJvBjsAHAA2shodHhESOQCwDi+wAEVYsBwvG7EcFz5ZshYOHBESObAWL7IXBworWCHYG/RZsgUXFhESOTAxBzY3NzY3JicmPwI0JzcWFgcHBhcWFwcGBwcCBWe4KSIjvnAOBQUeBIE3o5ASHAUEDYcSyB4fOf6d20D49MNbSpArLeZIqjmJNvGozC4mfAuyCtvf/qxmAAABAFsBfgTKAzQAFgA8sgUXGBESOQCwDi+wANCyAxcOERI5sAMvsA4QsggBCitYIdgb9FmwAxCwCtCwAxCyEwEKK1gh2Bv0WTAxAQYGJy4DIyYHIzY2Fx4DMzI2NwTKDMSUUX50QyGHIrsOx5FSgnBEH0RdEAMUrugEAkp0JAPAr9wEAkxyJGlcAAAC/+b+lAHOBFAAAwAOAD6yCw8QERI5sAsQsALQALAARViwDC8bsQwbPlmwAEVYsAIvG7ECFz5ZsAwQsgcNCitYIdgb9FmwAdCwAS8wMRMzAyMBFAYGJjU0Njc2Fq/MmvsB6Ep2TEo7Ok0Clvv+BTs5TQRKODlMAgJLAAEATP8LBAYFJgAhAFeyEiIjERI5ALAARViwFS8bsRUbPlmwAEVYsAcvG7EHDz5ZsgABCitYIdgb9FmyBAcVERI5sAcQsArQsBUQsBLQshkVBxESObAVELIcAQorWCHYG/RZMDElFjY3NwYGBwcjNy4CNzc2Ejc3MwcWFgcjNCYnJgIVFBYB9liAFN8O1qAvxDBriToOAhn2wS7DLoSTAt1cU4+pXK0CaFIBjccd6uwbk9+EFOUBIiLh4yHSm2FxBAb+9vBqfQAAAf/2AAAEpQXHACAAarIcISIREjkAsABFWLATLxuxEx8+WbAARViwBS8bsQUPPlmyHhMFERI5sB4vsgABCitYIdgb9FmwBRCyAwEKK1gh2Bv0WbAI0LAAELAL0LAeELAN0LATELAW0LATELIaAQorWCHYG/RZMDEBBwYHJQchNxc2NzcjNzM3PgIXFhYHJzYmJyYGBwchBwHuFhFZAqgk/AQkRWQcGJ0jlx8Qi9l/tMsI7wVSU1p/Dh0BLiMCVq6CXwPKyQIksrnH+3/HaQQE2bYBX2cEAoZw6scAAAIACP/lBX8E8QAcACwAP7IiLS4REjmwIhCwENAAsABFWLACLxuxAg8+WbAR0LARL7ACELIhBworWCHYG/RZsBEQsikHCitYIdgb9FkwMSUGJyYnByc3JicmEjcnNxc2FxYXNxcHFgcGBxcHAQYWFhcWNjY3NiYmJyYGBgPUtrzDh5h4mhsKE1hmc5dur7K5iKp5qT4UGoNvmPz4D0SaaXHRjxAPRJppctOMaYEEBHqEm4BVVpMBHHWbhY90BAJylJyOuafJnpWGAnJuyXkEBHnZd27HeAQEetQAAQBQAAAFOAWwABYAcgCwAEVYsBYvG7EWHz5ZsABFWLAMLxuxDA8+WbIADBYREjmwFhCwAdCyDwwWERI5sA8vsBPQsBMvtA8THxMCXbAE0LAEL7ATELISBAorWCHYG/RZsAbQsA8QsAfQsAcvsA8Qsg4ECitYIdgb9FmwCtAwMQEBIQEzByEHIQchAyMTITchNyE3IQEhAnoBoAEe/gf+G/6uGAFTG/6uNPc1/qgbAVcY/qgbARj+/gEFAzYCev02mIqX/tMBLZeKmALKAAAC/+z+8gH4BbAAAwAHABgAsAAvsABFWLAGLxuxBh8+WbIFAQMrMDEDEzMDEyMTMxSL34qo4ITg/vIDG/zlA8gC9gAC/9z+IwSxBcYALgA5AICyJzo7ERI5sCcQsDTQALAIL7AARViwHy8bsR8fPlmyAggfERI5sAgQsAzQsAgQsg8BCitYIdgb9FmyFQgfERI5shofCBESObAfELAj0LAfELImAQorWCHYG/RZsiwIHxESObAVELIzAQorWCHYG/RZsCwQsjkBCitYIdgb9FkwMQEGBxYHDgInJiY3MwYWFzI2NzYvAiQ3NjcmNzYkFxYWByc2JicmBwYHBgQXFiUGBwYfAjY3NicEUg7IYQ0Jj/CR4PsF8AZ+eHidDRW5kln+6xUOxmANDgEq49brCewGdGlyTlMOFgF8VOX9bnkUFrbDKIEUFsIBz7VpaKh5rFkDAuLFa3kCYlN4QTAjd/W4Z22ksNACBOTGAWx7AgIuMVqGcSt0IDd2iD1ADztygUQAAAIA0QTeA4MFzQAKABUAIgCwES+yDxEBXbILBQorWCHYG/RZsADQsBEQsAbQsAYvMDEBMhYVFAYHIiY0NiUyFhUUBgciJjQ2AUw2RkY1OEREAfI4REY1N0VFBc1DMTNFAkRgSAFEMDNFAkJkRgAAAwBe/+gF6QXHABsAKQA6AJWyLjs8ERI5sC4QsBLQsC4QsCfQALAARViwLy8bsS8fPlmwAEVYsDcvG7E3Dz5ZsgM3LxESObADL7QPAx8DAl2yCi83ERI5sAovtAAKEAoCXbIAAwoREjmyDgoDERI5shECCitYIdgb9FmwAxCyGQIKK1gh2Bv0WbA3ELIfCAorWCHYG/RZsC8QsiYICitYIdgb9FkwMQEGBicmJjc3NjYXFhYHJzYmJyYGBhUXFhYXFjcFFgAXFiQSJyYCJyYEAgc2EjYkFxYEEgcGAgQnJiQCBEMMuZmSpA4KE9CelZoEmAVIUV17HQIFS0KnH/09EwEBvLgBSbcSE/zAuf63uWIRieABDZCyAR6PFRbm/qW/tv7mkAJUlqgEBNinZbzcAgSpjwFaWQICjvgbLEtYAwe5GMz++wIE2wF3wcoBAQUE2v6JKJYBF9lvAwLF/qbEyf6ayAQExAFcAAACAL4CswNQBccAHQAnAGuyEigpERI5sBIQsB7QALAARViwFi8bsRYfPlmyBCgWERI5sAQvsADQsAAvsgoEFhESObAKL7AWELIQAgorWCHYG/RZsAoQsRIKK1jYG9xZsAQQsh4CCitYIdgb9FmwChCxIgorWNgb3FkwMQEmNwYjIiY3NjYzFzc2JyYnJgcnNjYXFhYHAwcGFyUyNzcjBgYHBhYCbgUCXW1qeQQCu6hoCwQBB0x3G6wLsYJ6jAo2BAEJ/rVFWhtTUmYIBzECvygeUnthc30BNRkWSwMEZw5vfQICln3+pTotL4I+igM+NSYs//8ASQCKA60DqQAmA4DsAAAHA4ABSAAAAAEAgAF2A8oDJQAFABoAsAQvsAHQsAEvsAQQsgIBCitYIdgb9FkwMQEjEyE3IQN/xC79lx8DKwF2AQSr//8ANgIJAlgCzQIGABEAAAAEAF7/6AXpBcgADwAfADgAQQCfsjpCQxESObA6ELAD0LA6ELAd0LA6ELA40ACwAEVYsAQvG7EEHz5ZsABFWLAMLxuxDA8+WbIUCAorWCHYG/RZsAQQshwICitYIdgb9FmyIQwEERI5sCEvsiQEDBESObAkL7QAJBAkAl2yICEkERI5sCAvsiAgAV2yOQgKK1gh2Bv0WbIpIDkREjmwIRCwMdCwJBCyQAgKK1gh2Bv0WTAxEzYSJBcWBBIHBgIEJyYkAjceAhcWJBI3NgImJyYEAgUDIxMFFhYHBgcWFxYGFxcHIyY3Njc2JicnFzY2NzYmJydzFt4BXsWyAR6PFRbm/qW/tv7mkIoMfsl+nAEnyRcVaeCYuf63uAG4NZSFAQSPlAUHiUkHAg0BBAGVBQIBDAYsQpCBSmUKCztZigLSxgFhzwQCxf6mxMn+msgEBMQBXCuD13YDBKQBLaufAR6mBATa/oxw/q8DUgEFhnF0TC5kH3kcPhIlJCFfP0QEiAECQzY7PQMBAAEA7wUSA8sFsAADABEAsAEvsgIDCitYIdgb9FkwMQEhNyEDsv09GQLDBRKeAAACAOQDrALkBccACwAXAC8AsABFWLADLxuxAx8+WbAP0LAPL7IJAgorWCHYG/RZsAMQshUCCitYIdgb9FkwMRM2NhcWFgcGBicmJjcGFjMyNjc2JiMiBuYCpG9jhgIEoGxmiIoGNjE3UAYGNS82VASvb6kCAplpcqMCApZrLElPNDFJVAACABsAAQQFBPwACwAPAEYAsAkvsABFWLANLxuxDQ8+WbAJELAA0LAJELIGAQorWCHYG/RZsAPQsA0Qsg4BCitYIdgb9FmyBQ4GERI5tAsFGwUCXTAxASEHIQMjEyE3IRMzEyE3IQK4AU0g/rQ90z3+pSABWTzTYfzHHwM5A4PH/nwBhMcBefsFxAABAFYCmwLxBb8AFwBZsggYGRESOQCwAEVYsA8vG7EPHz5ZsABFWLAALxuxABM+WbIWAgorWCHYG/RZsgIAFhESObIDDwAREjmwDxCyCAIKK1gh2Bv0WbIMDwAREjmyEw8AERI5MDEBITcBNjc2JiciBgcHNjYXFhYHBg8CBQKp/a0YAVZhDAcrKTpDDLYKr4J/kgUFlk+dAV8Cm4cBGVNDKS8BRzQBeZgCAoNofnc8bgIAAQBnAo0C+AW+ACQAb7IJJSYREjkAsABFWLANLxuxDR8+WbAARViwGC8bsRgTPlmyARgNERI5fLABLxiwDRCyBwIKK1gh2Bv0WbIKAQcREjmwARCyIwIKK1gh2Bv0WbITIwEREjmwGBCyHgIKK1gh2Bv0WbIcIx4REjkwMQEzNjY3NicnJgcHNjYXFhYHBgYHFgcGBicmJjUXFhcyNjc2JyMBWVM9TQcJShddHLoJpn2BmQUDSVJ2BAO8i32ZsQRqNlMHDXhcBGwCOC5DDQICTAFpegIDd2I7VyYpgW+CAgKDbQFZAjgvWQUAAQDIBNEC0gYAAAMAIwCwAi+yDwIBXbAA0LAAL7QPAB8AAl2wAhCwA9AZsAMvGDAxASEBIwG1AR3+xM4GAP7RAAH/3f5gBFQEOgATAFayDRQVERI5ALAARViwAC8bsQAbPlmwAEVYsAgvG7EIGz5ZsABFWLARLxuxERE+WbAARViwCi8bsQoPPlmwAEVYsA4vG7EODz5ZsgUBCitYIdgb9FkwMQEDBhcWFxY3EzMDIzcGJyInAyMBAc1mCAIFhZhaiu271w9ojGxSVuwBBAQ6/ZJVKJ0DBHwDE/vGVm4COf49BdoAAQB9AAAD3AWxAAoAK7ICCwwREjkAsABFWLAILxuxCB8+WbAARViwAC8bsQAPPlmyAQAIERI5MDEhEycmJjc2ADMFAwISWjjT5BQTASvhASz9AggBA//J0wEKAfpQAAEAngJCAbEDVQALABiyAwwNERI5ALADL7IJDQorWCHYG/RZMDETNDY3NhYVFAYHBiaeTTs9Tk48O04Cxj1OAgJPODtNAgJKAAH/0/49AS8ABAAOACmyAg8QERI5ALAAL7AHL7IIAgorWCHYG/RZsg0IABESObIBAA0REjkwMTcHFhYHBgYHNzY3NicnN8UTPj8BArKnAokQCVI4LQQ7DlU/bXcGjQZaPA0GiQABAOECoAKBBbMABgA5sgEHCBESOQCwAEVYsAUvG7EFHz5ZsABFWLAALxuxABM+WbIEBQAREjmwBBCyAwIKK1gh2Bv0WTAxASMTBzclMwH/tWPMGwFuFwKgAjYvmXMAAgC+Aq0DfQXIAA4AHABAshEdHhESObARELAO0ACwAEVYsAAvG7EAHz5ZsgcdABESObAHL7ISAgorWCHYG/RZsAAQshkCCitYIdgb9FkwMQEWFgcHBgYnJiY3Nz4CAwYWFxY2Nzc2JicmBgcCSpCjCwYP0pmNpwsGCmemcQhFRk9sDAgIRUZQbAsFxQTHmUKkzgQExJtCbqlb/klhbAICdWdGZGkCAnZkAP//AAIAigN1A6kAJgOBCQAABwOBAXMAAP//ALkAAAUqBasAJwPPAEwCmAAnA4MBFAAIAQcDzAKwAAAAEACwAEVYsAUvG7EFHz5ZMDH//wCxAAAFgAWuACcDgwDqAAgAJwPPAEQCmwEHA84DAgAAABAAsABFWLAJLxuxCR8+WTAx//8AlgAABZ8FvwAnA4MBnQAIACcDzAMlAAABBwPNAKICmwAQALAARViwIC8bsSAfPlkwMQAC/9L+egMjBFEAGAAkAGGyISUmERI5sCEQsALQALAARViwIi8bsSIbPlmwAEVYsBAvG7EQFz5ZsCIQshwNCitYIdgb9FmwANCwAC+yBBAAERI5sBAQsgkBCitYIdgb9FmyDBAAERI5shUAEBESOTAxAQYGBwcGBwYWFxY2NzMGBCcmJjc2Nzc2NwEUBgcGJjU0Njc2FgJrC1dfUngOC0pOU3MR7RH+/Ly3yQ0Pw21fFAEsSjo7TEo7OkwClnSrV0ptb1JgAgJlV7PTBATMqbOrXlaMATs7SwICSjg5TAICSgD///+kAAAErgc2AiYAJQAAAQcARAFbATYAEwCwAEVYsAQvG7EEHz5ZsAzcMDEA////pAAABMgHNgImACUAAAEHAHcB9gE2ABMAsABFWLAFLxuxBR8+WbAN3DAxAP///6QAAASuBzcCJgAlAAABBwFnAPIBNgATALAARViwBC8bsQQfPlmwD9wwMQD///+kAAAEyQcrAiYAJQAAAQcBbgEAATcACQCwBC+wFdwwMQD///+kAAAErgcDAiYAJQAAAQcAawEoATYADACwBC+wHNywC9AwMf///6QAAASuB5UCJgAlAAABBwFsAYwBagAMALAEL7AU3LAX0DAxAAL/hwAAB3gFsAAPABIAdwCwAEVYsAYvG7EGHz5ZsABFWLAALxuxAA8+WbAARViwBC8bsQQPPlmyEQYAERI5sBEvsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WbILBgAREjmwCy+yDAEKK1gh2Bv0WbAAELIOAQorWCHYG/RZshIGABESOTAxISETIQMhASEHIQMhByEDIQEhEwa3/Jks/iHu/tgEJgPLI/2ONwIVI/30PAKE+1gBZlUBVP6sBbDF/mjF/jYBZwJ6AP//AGX+OAUNBccCJgAnAAAABwB7Abr/+///ACcAAAS6Bz0CJgApAAABBwBEASMBPQATALAARViwBi8bsQYfPlmwDdwwMQD//wAnAAAEugc9AiYAKQAAAQcAdwG+AT0AEwCwAEVYsAYvG7EGHz5ZsA7cMDEA//8AJwAABLoHPgImACkAAAEHAWcAugE9ABMAsABFWLAGLxuxBh8+WbAR3DAxAP//ACcAAAS6BwoCJgApAAABBwBrAPABPQAMALAGL7Ad3LAM0DAx//8ANQAAAjIHPQImAC0AAAEHAET/3AE9ABMAsABFWLACLxuxAh8+WbAF3DAxAP//ADUAAANIBz0CJgAtAAABBwB3AHYBPQATALAARViwAy8bsQMfPlmwBtwwMQD//wA1AAADEgc+AiYALQAAAQcBZ/9zAT0AEwCwAEVYsAIvG7ECHz5ZsAjcMDEA//8ANQAAAywHCgImAC0AAAEHAGv/qQE9AAwAsAIvsBXcsATQMDEAAv//AAAE/gWwAA8AHgBpsh4fIBESObAeELAO0ACwAEVYsAUvG7EFHz5ZsABFWLAALxuxAA8+WbIDAAUREjl8sAMvGLICBworWCHYG/RZsBHQsAAQshMBCitYIdgb9FmwBRCyHAEKK1gh2Bv0WbADELAd0LAe0DAxMxMjNzMTBTIEEgcHBgIEIxMjAxcyJDc2JyYmJycDM0Vxtx62bgGKtgEHdhcLHs3+vMKf3U6SxgEFJRoHCZeGuUveAoyqAnoBtf7BwE/J/smsAoz+PgH73ZhxkaQEAf5SAP//ACcAAAWGBysCJgAyAAABBwFuASgBNwAJALAFL7AU3DAxAP//AGv/5wUhBzYCJgAzAAABBwBEAXIBNgATALAARViwCi8bsQofPlmwJNwwMQD//wBr/+cFIQc2AiYAMwAAAQcAdwINATYACQCwCi+wJdwwMQD//wBr/+cFIQc3AiYAMwAAAQcBZwEJATYACQCwCi+wJNwwMQD//wBr/+cFIQcrAiYAMwAAAQcBbgEXATcACQCwCi+wLdwwMQD//wBr/+cFIQcDAiYAMwAAAQcAawE/ATYADACwCi+wNNywI9AwMQABACMA1gQUBIYACwA4ALADL7IJDAMREjmwCS+yCgkDERI5sgQDCRESObIBCgQREjmwAxCwBdCyBwQKERI5sAkQsAvQMDETAQM3EwEXARMHAwEjAWv7nvoBan/+lfue+/6XAXcBQQFDi/6/AUGh/r/+vYsBQP7AAAADABX/oQWYBe0AFwAhACsAVbIeLC0REjmwHhCwC9CwHhCwJ9AAsABFWLAMLxuxDB8+WbAARViwAC8bsQAPPlmyJwEKK1gh2Bv0WbAl0LAa0LAMELIdAQorWCHYG/RZsBvQsCTQMDEFJicHJzcmNzcSEiQXFhc3MwcWFxYCAgQBBhcBJicmAgcGATYnARYXFhI3NwJXnHt2tcJsAgMTwQE1vr6AcLPEOA4RSsn+5P5hAxQCfT6BpuIpGgLQBQb9kz9gsOMkERUESZcB8LDiTwEMAX7KAgRjj/R5gKr+Zf7ImwIiVVMDP04FBf8A6ZUBEEZH/NYyAgUBF/p5AP//AFv/5gUvBzYCJgA5AAABBwBEAUoBNgATALAARViwCi8bsQofPlmwFNwwMQD//wBb/+YFLwc2AiYAOQAAAQcAdwHlATYAEwCwAEVYsBIvG7ESHz5ZsBXcMDEA//8AW//mBS8HNwImADkAAAEHAWcA4QE2ABMAsABFWLAKLxuxCh8+WbAX3DAxAP//AFv/5gUvBwMCJgA5AAABBwBrARcBNgAWALAARViwCi8bsQofPlmwJNywGdAwMf//AKEAAAVNBzYCJgA9AAABBwB3Ab0BNgATALAARViwAS8bsQEfPlmwC9wwMQAAAgAnAAAEggWwAAwAFQBXsg8WFxESObAPELAI0ACwAEVYsAAvG7EAHz5ZsABFWLAKLxuxCg8+WbICAAoREjmwAi+yDwAKERI5sA8vsggBCitYIdgb9FmwAhCyFQEKK1gh2Bv0WTAxAQMXFhYHBgQjJwMjExMDFzY2NzYmJwIRMcve+Q8Q/s3r/DXt/ZtV4YCsDw5wagWw/ugBAerCy/QB/tQFsP4l/hoCAolxa3wEAAABABv/5wRMBhoALQBYsiEuLxESOQCwAEVYsAUvG7EFIT5ZsABFWLAALxuxAA8+WbAARViwFS8bsRUPPlmyDgUVERI5shoBCitYIdgb9FmyIBUFERI5sAUQsioBCitYIdgb9FkwMSEjEzYkFxYWBw4DBwYeAgcGBicmJzcWMzI2NzYmJyY3PgM3NiYnJgYHAQjtvRwBAMinvg0EJGAcBwguiDUCCfi9q3FEZ2xYdgsIMkZ+CQQyPDQHCUVGWnUUBFHS9wQEvZwxV5pCJjFmmW44rcUEAkHBQllJNGZLhm85XVlcN0xcBAODh///ACL/6APcBgACJgBFAAABBwBEALMAAAATALAARViwGC8bsRgbPlmwLdwwMQD//wAi/+gEIAYAAiYARQAAAQcAdwFOAAAAEwCwAEVYsBgvG7EYGz5ZsC7cMDEA//8AIv/oA+kGAQImAEUAAAEGAWdKAAATALAARViwGC8bsRgbPlmwMNwwMQD//wAi/+gEIQX1AiYARQAAAQYBblgBABMAsABFWLAYLxuxGBs+WbAv3DAxAP//ACL/6AQDBc0CJgBFAAABBwBrAIAAAAAWALAARViwGC8bsRgbPlmwMtywPdAwMf//ACL/6APcBl8CJgBFAAABBwFsAOQANAAWALAARViwGC8bsRgbPlmwNdywO9AwMQADAA//6AZwBFIAKwA1AD4A+LICP0AREjmwAhCwL9CwAhCwOdAAsABFWLAdLxuxHRs+WbAARViwGS8bsRkbPlmwAEVYsAAvG7EADz5ZsABFWLAFLxuxBQ8+WbIDHQAREjmyCwUZERI5sAsvsBkQshEBCitYIdgb9FmyFAsRERI5QAkMFBwULBQ8FARdshsdABESObI6HQAREjmwOi+0HzovOgJxso86AV20XzpvOgJxtL86zzoCXbTvOv86AnGyIQcKK1gh2Bv0WbAAELIlAQorWCHYG/RZsigdABESObAFELIsBworWCHYG/RZsAsQsjAHCitYIdgb9FmwHRCyNgEKK1gh2Bv0WTAxBSImJwYnJiY3NiQzFzc2JyYnJgYHJz4CFxYXNhcWEgcHIQYWFxY2NxcGBiUyNzcnBgYHBhYBJgYHITc2JyYEanO8Naz9mrQICgEF5r8NBgQRd1d3De0He9t711qbucLHGhX9Yw53c1WXSjpB0/y2coooqWuRDAlOA41gki4BtgYHBA4TU0ykBAKvk6GyAkomInUDAlRJE2KZUwIFgIgEBv7y1o2InQICNSeoOT64ZtIBA15PP0gC5wOHhyEtKo0A//8AOP44A+4EUgImAEcAAAAHAHsBPP/7//8AO//qBAIGAAImAEkAAAEHAEQAnAAAABMAsABFWLAJLxuxCRs+WbAh3DAxAP//ADv/6gQJBgACJgBJAAABBwB3ATcAAAATALAARViwCS8bsQkbPlmwItwwMQD//wA7/+oEAgYBAiYASQAAAQYBZzMAABMAsABFWLAJLxuxCRs+WbAk3DAxAP//ADv/6gQCBc0CJgBJAAABBgBraQAAFgCwAEVYsAkvG7EJGz5ZsCbcsDHQMDH//wAiAAAB5wX5AiYA9AAAAQYARJH5ABMAsABFWLACLxuxAhs+WbAF3DAxAP//ACIAAAL9BfkCJgD0AAABBgB3K/kAEwCwAEVYsAMvG7EDGz5ZsAbcMDEA//8AIgAAAscF+gImAPQAAAEHAWf/KP/5ABMAsABFWLACLxuxAhs+WbAI3DAxAP//ACIAAALhBcYCJgD0AAABBwBr/17/+QAWALAARViwAi8bsQIbPlmwCtywFdAwMQACAEb/6ARKBiwAHgAqAF6yECssERI5sBAQsCjQALAARViwGi8bsRohPlmwAEVYsAgvG7EIDz5ZshAaCBESObAQL7AaELIZAQorWCHYG/RZsBAQsiEHCitYIdgb9FmwCBCyJwEKK1gh2Bv0WTAxARYSBwcGAgYnLgI3PgIXFhcmJwcnNyYnNxYXNxcBJicmBgcGFhcWNjcDpVtBFwwXqOyJf8VgDA2I4IWKawRg4D+4W6Vb3pTJPv74NpN/qxAOaWJ2oxkFFJv+vLNWp/7siQMEgNyBkPCGBARZmYqIeWxJMMI2g3p5/TlhBQK2k3ilAwXQrQD//wANAAAEJwX1AiYAUgAAAQYBbl4BABMAsABFWLADLxuxAxs+WbAW3DAxAP//ADn/6AQnBgACJgBTAAABBwBEALAAAAATALAARViwBC8bsQQbPlmwItwwMQD//wA5/+gEJwYAAiYAUwAAAQcAdwFLAAAAEwCwAEVYsAQvG7EEGz5ZsCPcMDEA//8AOf/oBCcGAQImAFMAAAEGAWdHAAATALAARViwBC8bsQQbPlmwJdwwMQD//wA5/+gEJwX1AiYAUwAAAQYBblUBABMAsABFWLAELxuxBBs+WbAk3DAxAP//ADn/6AQnBc0CJgBTAAABBgBrfQAADACwBC+wMtywIdAwMQADAD0AkAQ6BM8AAwAPABsAUrIYHB0REjmwGBCwANCwGBCwBtAAsAMvsgABCitYIdgb9FmwAxCxDQorWNgb3FmyBw0KK1gh2Bv0WbAAELETCitY2BvcWbIZDQorWCHYG/RZMDEBITchATQ2NzYWFRQGBwYmAzQ2NzYWFRQGBwYmBBT8KSUD2P3CTjo9Tks+O0+OTD05UUw9OVECRtQBKT1LAgJMODlOAgJI/Qo5UAICSTw7SwICSAAAAwAq/3cEMwS7ABsAJAAuAFWyKy8wERI5sCsQsBHQsCsQsCLQALAARViwBS8bsQUbPlmwAEVYsBIvG7ESDz5ZsioBCitYIdgb9FmwKNCwHtCwBRCyIQEKK1gh2Bv0WbAf0LAn0DAxEzY2NzYXFhc3FwcWFxYHBgIGJyYnByc3JicmNxcGFwEmJyYGBiU2JwEWFxY2NzZED15OnN9eX2GbknAHAggUm/SUVltlm5J2CAMH4QEUAZQmNWSXUAIQARL+cCgqeaseDAIgdtNOnQQCI5AB0oTDOlOf/v6LAgIflAHRgsc9PHw/PQJnEwIBgfGDPDz9oQ4CA76vVAD//wBK/+gEMQYAAiYAWQAAAQcARAC1AAAAEwCwAEVYsAgvG7EIGz5ZsBXcMDEA//8ASv/oBDEGAAImAFkAAAEHAHcBUAAAAAkAsAcvsBbcMDEA//8ASv/oBDEGAQImAFkAAAEGAWdMAAAJALAHL7AV3DAxAP//AEr/6AQxBc0CJgBZAAABBwBrAIIAAAAMALAHL7Al3LAU0DAx////tf5FBBIGAAImAF0AAAEHAHcBGgAAAAkAsAEvsBLcMDEAAAL/zf5gBBQGAAARAB0AVrIEHh8REjmwBBCwHNAAsAkvsABFWLANLxuxDRs+WbAARViwBy8bsQcRPlmwAEVYsAQvG7EEDz5ZsA0QshYBCitYIdgb9FmwBBCyGwEKK1gh2Bv0WTAxAQYCBicmJwMjATMDNhcWFhcWBzc2JicmBwMWFxY2BAwUiM19qGJh7gFT7Wp6o52xBQHzBQNaXYViVS+JdqECGKT+94QDBHX9/Qeg/dZ8BATewTxBSn+NBAR//h15BAO+////tf5FBBIFzQImAF0AAAEGAGtMAAAMALABL7Ah3LAQ0DAx////pAAABMUG6gImACUAAAEHAHIA+gE6ABMAsABFWLAELxuxBB8+WbAM3DAxAP//ACL/6AQdBbQCJgBFAAABBgByUgQACQCwGC+wLNwwMQD///+kAAAErgcdAiYAJQAAAQcBagEwATYACQCwBC+wDtwwMQD//wAi/+gD9AXnAiYARQAAAQcBagCIAAAACQCwGC+wL9wwMQAAAv+k/lEErgWwABcAGgB3shUbHBESObAVELAa0ACwAEVYsBUvG7EVHz5ZsABFWLALLxuxCxE+WbAARViwEy8bsRMPPlmwAEVYsBcvG7EXDz5ZsAsQsgYDCitYIdgb9FmwFxCwENCwEC+yGRMVERI5sBkvshEBCitYIdgb9FmyGhUTERI5MDEhFwcGBwYXFjcXBiciJjc2NwMhAyEBMwEBIQMEcQUvgwcFOBs9DEVVV2kCA7Q2/d+u/vYDEt4BGv0WAZhjAx9WVjkDAReQKwJtVJVpAUH+rQWw+lACHwJaAAACACL+UQPcBFAAMAA7AJuyGjw9ERI5sBoQsDbQALAARViwKC8bsSgbPlmwAEVYsAsvG7ELET5ZsABFWLAALxuxAA8+WbAARViwFC8bsRQPPlmwABCwENCwEC+yEigAERI5shoUKBESObAaL7AoELIgBworWCHYG/RZsiQaIBESOUAJDCQcJCwkPCQEXbAUELIxAQorWCHYG/RZsBoQsjYHCitYIdgb9FkwMSEXBwYHBhcWNxcGJyImNzY3JzUGJyYmNzYkMxc3NicmJyYGBwc+AhcWFgcDBwYXByUWNjc3JyIGBwYWA0oFL4MHBTgbPQxFVVdpAgO1BIabjbkGCAEY7JoOBgYUe0xzDe0HgNR2scYRUwgDEgH+IUuALSVxhqALCEsDH1ZWOQMBF5ArAm1UlmkpKX0EArGIq8QCSicibAMCUUQCZJdUAgTNo/4FWjs4Eq4CSTrNAWVYQ00A//8AZf/oBQ0HSwImACcAAAEHAHcB+AFLAAkAsAwvsCHcMDEA//8AOP/pA/MGAAImAEcAAAEHAHcBIQAAAAkAsBEvsB/cMDEA//8AZf/oBQ0HTAImACcAAAEHAWcA9AFLAAkAsAwvsCDcMDEA//8AOP/pA+4GAQImAEcAAAEGAWcdAAAJALARL7Ae3DAxAP//AGX/6AUNBywCJgAnAAABBwFrAdUBVAAJALAML7An3DAxAP//ADj/6QPuBeECJgBHAAABBwFrAP4ACQAJALARL7Al3DAxAP//AGX/6AUNB1ACJgAnAAABBwFoAQsBSwAJALAML7Aj3DAxAP//ADj/6QPwBgUCJgBHAAABBgFoNAAACQCwES+wIdwwMQD//wAnAAAE4AdCAiYAKAAAAQcBaACbAT0AEwCwAEVYsAEvG7EBHz5ZsBzcMDEA//8AO//nBdUGAgAmAEgAAAAHA6sEvwT8AAL//wAABP4FsAAPAB4AabIeHyAREjmwHhCwDtAAsABFWLAFLxuxBR8+WbAARViwAC8bsQAPPlmyAwAFERI5fLADLxiyAgcKK1gh2Bv0WbAR0LAAELITAQorWCHYG/RZsAUQshwBCitYIdgb9FmwAxCwHdCwHtAwMTMTIzczEwUyBBIHBwYCBCMTIwMXMiQ3NicmJicnAzNFcbcetm4BirYBB3YXCx7N/rzCn91OksYBBSUaBwmXhrlL3gKMqgJ6AbX+wcBPyf7JrAKM/j4B+92YcZGkBAH+UgAAAgA7/+cFGQYAABoAJQCMsgUmJxESObAFELAj0ACwFy+wAEVYsBAvG7EQGz5ZsABFWLADLxuxAw8+WbAARViwBi8bsQYPPlmyLxcBXbIPFwFdshYXAxESObAWL7ITBworWCHYG/RZsAHQsgQGEBESObISEAYREjmwFhCwGdCwBhCyHgEKK1gh2Bv0WbAQELIjAQorWCHYG/RZMDEBIwMjNwYnJiYnJjc3NhI2FxYXNyM3MzczBzMBBhYXFjcTJicmBgT7qdXUEH6ql7UHAwYDFIzOfqVdLvAe8RvuGar8EQdbWolkUS+HiKYEyfs3cIkEAuW+PjsVpwEKgwMEd/WqjY38TnySAgSJAdF9BAT4AP//ACcAAAS6BvECJgApAAABBwByAMIBQQATALAARViwBi8bsQYfPlmwDdwwMQD//wA7/+oEBgW0AiYASQAAAQYAcjsEAAkAsAkvsCDcMDEA//8AJwAABLoHJAImACkAAAEHAWoA+AE9AAkAsAYvsA/cMDEA//8AO//qBAIF5wImAEkAAAEGAWpxAAAJALAJL7Aj3DAxAP//ACcAAAS6Bx4CJgApAAABBwFrAZsBRgAJALAGL7AU3DAxAP//ADv/6gQCBeECJgBJAAABBwFrARQACQAJALAJL7Ao3DAxAAABACf+UQS6BbAAHACAshEdHhESOQCwAEVYsBcvG7EXHz5ZsABFWLAQLxuxEBE+WbAARViwBC8bsQQPPlmwAEVYsBUvG7EVDz5ZshsVFxESObAbL7IBAQorWCHYG/RZsBUQsgIBCitYIdgb9FmwA9CwEBCyCwMKK1gh2Bv0WbAXELIZAQorWCHYG/RZMDEBIQMhByMXBwYHBhcWNxcGJyImNzY3IRMhByEDIQPT/bxOAqYjcQUvgwcFOBs9DEVVV2kCA5b9sPwDlyT9YUYCRQKK/kDKAx9WVjkDAReQKwJtVIxgBbDM/m4AAgA8/mwECARRACMALAChsgYtLhESObAGELAk0ACwAEVYsBkvG7EZGz5ZsABFWLAMLxuxDBE+WbAARViwES8bsREPPlmwA9CyJi0ZERI5sCYvso8mAV20HyYvJgJxtJ8mryYCcbRfJm8mAnG0vybPJgJdtO8m/yYCcbQvJj8mAnKyHQcKK1gh2Bv0WbARELIhAQorWCHYG/RZsiMRGRESObAZELIkAQorWCHYG/RZMDElBgcHBgcGFxY3FwYnIiY3NjcmAjc3NhI2FxYSBwchBhYXFjcDJgMFNzYnJiYDplWNMW0IBTgbPQxFVVdpAgJgt8wRAxKd6onLyxkO/VcJemuZgcm8XgHBBAcGC1q2eDIhTFI5AwEXkCsCbVRtVRkBHM4ppQEHiAME/trsaIGeAgWKAlgG/vABFS4sR1L//wAnAAAEugdCAiYAKQAAAQcBaADRAT0AEwCwAEVYsAYvG7EGHz5ZsBHcMDEA//8AO//qBAYGBQImAEkAAAEGAWhKAAAJALAJL7Ak3DAxAP//AGv/6gUWB0wCJgArAAABBwFnAPEBSwAJALANL7Aj3DAxAP////f+TwRCBgECJgBLAAABBgFnPgAACQCwBC+wLNwwMQD//wBr/+oFFgcyAiYAKwAAAQcBagEvAUsACQCwDS+wJdwwMQD////3/k8EQgXnAiYASwAAAQYBanwAAAkAsAQvsC7cMDEA//8Aa//qBRYHLAImACsAAAEHAWsB0gFUAAkAsA0vsCrcMDEA////9/5PBEIF4QImAEsAAAEHAWsBHwAJAAkAsAQvsDPcMDEA//8Aa/35BRYFyAImACsAAAAHA6sBbv6S////9/5PBEIGqwImAEsAAAEHA+0BNAB+AAkAsAQvsC/cMDEA//8AJwAABYcHPgImACwAAAEHAWcBEgE9ABMAsABFWLAHLxuxBx8+WbAQ3DAxAP//AA0AAAP5B14CJgBMAAABBwFnAFIBXQAJALARL7AU3DAxAAACAC4AAAXbBbAAEwAXAGsAsABFWLAPLxuxDx8+WbAARViwCC8bsQgPPlmyFAgPERI5sBQvshAUDxESObAQL7AA0LAQELIXBworWCHYG/RZsAPQsAgQsAXQsBQQsgcBCitYIdgb9FmwFxCwCtCwEBCwDdCwDxCwEtAwMQEzByMDIxMhAyMTIzczEzMDIRMzASE3IQVffB17s/Zw/Ypw9rN4HHgt9y4Cdi32/CsCdiH9igSuovv0Aof9eQQMogEC/v4BAv2iugABACsAAAQXBgAAGgB0sgMbHBESOQCwGC+wAEVYsAQvG7EEGz5ZsABFWLARLxuxEQ8+WbAARViwCS8bsQkPPlmyLxgBXbIPGAFdshoRGBESObAaL7IBBworWCHYG/RZsgIRBBESObAEELIOAQorWCHYG/RZsAEQsBPQsBoQsBbQMDEBIwM2FxYWBwMjEzYnJicmBwMjEyM3MzczBzMCy+Qyh6yalRN07XYFAw2DhGiH7dS/Hr4Z7hziBMf+/I4EAta9/UgCuyslegMChPz6BMeqj48A//8ANQAAA0oHMgImAC0AAAEHAW7/gQE+AAkAsAIvsA7cMDEA//8AFAAAAv8F7gImAPQAAAEHAW7/Nv/6AAkAsAIvsA7cMDEA//8ANQAAA0YG8QImAC0AAAEHAHL/ewFBABMAsABFWLACLxuxAh8+WbAF3DAxAP//AB8AAAL7Ba0CJgD0AAABBwBy/zD//QATALAARViwAi8bsQIbPlmwBdwwMQD//wA1AAADHQckAiYALQAAAQcBav+xAT0ACQCwAi+wB9wwMQD//wAiAAAC0gXgAiYA9AAAAQcBav9m//kACQCwAi+wB9wwMQD///+O/lcCKAWwAiYALQAAAAYBbeYG////dv5RAgkF2AImAE0AAAAGAW3OAP//ADUAAAJUBx4CJgAtAAABBwFrAFMBRgAJALACL7AM3DAxAAABACIAAAHLBDoAAwAdALAARViwAi8bsQIbPlmwAEVYsAAvG7EADz5ZMDEhIxMzAQ/tvO0EOv//ADX/5wacBbAAJgAtAAAABwAuAjsAAP//AB/+RgQDBdgAJgBNAAAABwBOAgUAAP//AAP/5wUxBzcCJgAuAAABBwFnAZIBNgAJALAAL7AQ3DAxAP///w/+SALHBd8CJgFkAAABBwFn/yj/3gATALAARViwDC8bsQwbPlmwEdwwMQD//wAn/fkFcQWwAiYALwAAAAcDqwFf/pL//wAR/fkESgYAAiYATwAAAAcDqwDu/pIAAQAhAAAEjQQ6AAwAXwCwAEVYsAQvG7EEGz5ZsABFWLAILxuxCBs+WbAARViwAi8bsQIPPlmwAEVYsAsvG7ELDz5ZsgYCBBESObAGL7QfBi8GAnGyjwYBXbIBAQorWCHYG/RZsgoBBhESOTAxASMDIxMzAzMBIQEBIQHLc0vsvOxLSAGRATb+BwFF/uUBrP5UBDr+UAGw/ef93wD//wAnAAADwwc2AiYAMAAAAQcAdwBqATYAEwCwAEVYsAUvG7EFHz5ZsAjcMDEA//8AHwAAAz0HkQImAFAAAAEHAHcAawGRABMAsABFWLADLxuxAyE+WbAG3DAxAP//ACf9+QPDBbACJgAwAAAABwOrASX+kv///6L9+QIXBgACJgBQAAAABwOr/9P+kv//ACcAAAPfBbECJgAwAAABBwOrAskEqwAQALAARViwCi8bsQofPlkwMf//AB8AAAN0BgIAJgBQAAABBwOrAl4E/AAGALAILzAx//8AJwAAA8MFsAImADAAAAAHAWsBXP3U//8AHwAAAvMGAAAmAFAAAAAHAWsA8v2vAAEAIQAAA9IFsAANAFsAsABFWLAMLxuxDB8+WbAARViwBi8bsQYPPlmyAQwGERI5sAEvsADQsAEQsgIHCitYIdgb9FmwA9CwBhCyBAEKK1gh2Bv0WbADELAI0LAJ0LAAELAL0LAK0DAxATcHBwMhByETBzc3EzMBxfAc71oCgiP8h3CFG4Vy9wNsRptH/frKAoImmycCkgAAAQAfAAACWwYAAAsASgCwAEVYsAovG7EKIT5ZsABFWLAELxuxBA8+WbIBBAoREjmwAS+wANCwARCyAgcKK1gh2Bv0WbAD0LAG0LAH0LAAELAJ0LAI0DAxATcHBwMjEwc3NxMzAcKZHJiA7nKMHIp/7QN/NJw1/R4Ciy+cLwLZAP//ACcAAAWGBzYCJgAyAAABBwB3Ah4BNgATALAARViwCC8bsQgfPlmwDNwwMQD//wANAAAEJgYAAiYAUgAAAQcAdwFUAAAACQCwAy+wFdwwMQD//wAn/fkFhgWwAiYAMgAAAAcDqwGQ/pL//wAN/fkD+gRSAiYAUgAAAAcDqwD6/pL//wAnAAAFhgc7AiYAMgAAAQcBaAExATYAEwCwAEVYsAYvG7EGHz5ZsA/cMDEA//8ADQAABCMGBQImAFIAAAEGAWhnAAAJALADL7AX3DAxAP//AA0AAAP6BgMCJgBSAAABBwOrAEAE/QAGALAXLzAxAAEAI/5GBXgFsAATAGeyBhQVERI5ALAARViwAC8bsQAfPlmwAEVYsBAvG7EQHz5ZsABFWLAELxuxBBE+WbAARViwDC8bsQwPPlmwAEVYsA4vG7EODz5ZsAQQsgkBCitYIdgb9FmyDQAMERI5shIOABESOTAxAQEGBiciJzcWMzI3NwEDIxMzARMFeP7/GNelO0wjNimBIgf+SLf2/e4Bu7cFsPoYtswCFMYOxCgEH/vhBbD74gQeAAABABH+RgQGBFIAGwBhsgIcHRESOQCwAEVYsAMvG7EDGz5ZsABFWLAALxuxABs+WbAARViwCi8bsQoRPlmwAEVYsBkvG7EZDz5ZsgEDGRESObAKELIPAQorWCHYG/RZsAMQshYBCitYIdgb9FkwMQEHNhcWFgcDBgYnJic3FjMyNxM2JyYnJgcDIxMBpReGu6GWFnYY0KNBRCM5J4EfdgUCB4uDZY3uvAQ7mK8EA+bE/SC1xgIBE8UPuwLTLSmMBQRq/N8EOv//AGv/5wUhBuoCJgAzAAABBwByAREBOgAJALAKL7Aj3DAxAP//ADn/6AQnBbQCJgBTAAABBgByTwQACQCwBC+wIdwwMQD//wBr/+cFIQcdAiYAMwAAAQcBagFHATYACQCwCi+wJtwwMQD//wA5/+gEJwXnAiYAUwAAAQcBagCFAAAACQCwBC+wJNwwMQD//wBr/+cFdwc1AiYAMwAAAQcBbwGOATYADACwCi+wJdywJ9AwMf//ADn/6AS1Bf8CJgBTAAABBwFvAMwAAAAMALAEL7Aj3LAl0DAxAAIAUP/uB4oFxQAXACUAkbIbJicREjmwGxCwFtAAsABFWLAMLxuxDB8+WbAARViwDi8bsQ4fPlmwAEVYsAMvG7EDDz5ZsABFWLAALxuxAA8+WbAOELIQAQorWCHYG/RZshMADhESObATL7IUAQorWCHYG/RZsAAQshcBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WbAMELIdAQorWCHYG/RZMDEhIQcHJiYCNxM2EiQzFxchByEDIQchAyEFFjcTJicmBgcDBhcWFgaU/MXEV57naRQyHLUBE6VKzwNSJP1hRgJFJP29TgKm+5BPe8ZzTKDaHi8JBgiBEQEEnQEQoQE9qQENkgITzP5uyP5AGQMMBDsOAgLZwv7TSEZ0iAAAAwBC/+gG3ARSACAALwA5ALiyGjo7ERI5sBoQsCnQsBoQsDPQALAARViwCS8bsQkbPlmwAEVYsAQvG7EEGz5ZsABFWLAcLxuxHA8+WbAARViwFy8bsRcPPlmyBwkcERI5sjQJHBESObA0L7KPNAFdtB80LzQCcbINBworWCHYG/RZsBcQshEBCitYIdgb9FmyExcJERI5shoJHBESObAcELIlAQorWCHYG/RZsAQQsiwBCitYIdgb9FmwCRCyMAEKK1gh2Bv0WTAxEzYSNhcWFhc2FxYSBwchBhYXFjcXBgYnJiYnBicuAjczBxcWFxY2Nzc1JicmBgcBJgYHITc2JyYmVBSY7pRytzGmzsPJGhb9cA1raJqaQUPMe3a1MablisJYEOwFAQ6se6QVBwi0cqAcA/tShTYBpwUHBQhTAiChAQSMAgJeUbQEBP7z14+FnwMFX6A+QQICXE6xBAKO+ZZLLt8HA8alYR3yCAOxpAFTAXqMHC0pQ03//wAnAAAE2Ac2AiYANgAAAQcAdwGoATYACQCwBC+wGtwwMQD//wAQAAADhgYAAiYAVgAAAQcAdwC0AAAACQCwCy+wENwwMQD//wAn/fkE2AWwAiYANgAAAAcDqwEm/pL///+c/fkC7wRTAiYAVgAAAAcDq//N/pL//wAnAAAE2Ac7AiYANgAAAQcBaAC7ATYACQCwBC+wHNwwMQD//wAQAAADhAYFAiYAVgAAAQYBaMgAAAkAsAsvsBLcMDEA//8AJP/qBLsHNgImADcAAAEHAHcBxAE2AAkAsAovsCzcMDEA//8AHP/pBAMGAAImAFcAAAEHAHcBMQAAAAkAsAgvsCfcMDEA//8AJP/qBLsHNwImADcAAAEHAWcAwAE2AAkAsAovsCvcMDEA//8AHP/pA8wGAQImAFcAAAEGAWctAAAJALAIL7Am3DAxAP//ACT+PQS7BccCJgA3AAAABwB7AZAAAP//ABz+NAPEBFACJgBXAAAABwB7AUL/9///ACT/6gS7BzsCJgA3AAABBwFoANcBNgAJALAKL7Au3DAxAP//ABz/6QQABgUCJgBXAAABBgFoRAAACQCwCC+wKdwwMQD//wCc/kAFIgWwAiYAOAAAAAcAewF/AAP//wA7/j0CrgVBAiYAWAAAAAcAewDVAAD//wCcAAAFIgc7AiYAOAAAAQcBaADJATYAEwCwAEVYsAYvG7EGHz5ZsA3cMDEA//8AO//tA8gGgwAmAFgAAAAHA6sCsgV9AAEAnAAABSIFsAAPAEwAsABFWLAKLxuxCh8+WbAARViwAi8bsQIPPlmyDwoCERI5sA8vsgAHCitYIdgb9FmwBNCwDxCwBtCwChCyCAEKK1gh2Bv0WbAM0DAxASMDIxMjNzMTITchByEDMwO+yYj2ic0ezDT+SyQEYiT+SDTKAxL87gMSqgEozMz+2AAAAf/i/+0CrgVBAB4AgLIXHyAREjkAsABFWLAVLxuxFRs+WbAARViwGS8bsRkbPlmwAEVYsAsvG7ELDz5Zsh4ZCxESObAeL7IABworWCHYG/RZsAsQsgYBCitYIdgb9FmwABCwD9CwHhCwEdCwFRCyEwEKK1gh2Bv0WbAVELAX0LAXL7ATELAb0LAc0DAxASMDBhcWFzI3BwYjJiY3EyM3MzcjNzMTMwMzByMHMwJt0S0DAgZKJS8QSkt8ew0uzx7NG60grC7uLrkfuhzSAjf+8RkUQQMJvhUCpYgBG6qltAEH/vm0pf//AFv/5gUvBysCJgA5AAABBwFuAO8BNwAJALAAL7Ad3DAxAP//AEr/6AQxBfUCJgBZAAABBgFuWgEACQCwBy+wHtwwMQD//wBb/+YFLwbqAiYAOQAAAQcAcgDpAToACQCwAC+wE9wwMQD//wBK/+gEMQW0AiYAWQAAAQYAclQEAAkAsAcvsBTcMDEA//8AW//mBS8HHQImADkAAAEHAWoBHwE2AAkAsAAvsBbcMDEA//8ASv/oBDEF5wImAFkAAAEHAWoAigAAAAkAsAcvsBfcMDEA//8AW//mBS8HlQImADkAAAEHAWwBewFqAAwAsAAvsBzcsB/QMDH//wBK/+gEMQZfAiYAWQAAAQcBbADmADQADACwBy+wHdywINAwMf//AFv/5gVPBzUCJgA5AAABBwFvAWYBNgAMALAAL7AV3LAX0DAx//8ASv/oBLoF/wImAFkAAAEHAW8A0QAAAAwAsAcvsBbcsBjQMDEAAQBb/ogFMgWwACAAYbIHISIREjkAsABFWLAALxuxAB8+WbAARViwFy8bsRcfPlmwAEVYsA0vG7ENFz5ZsABFWLASLxuxEg8+WbIEEgAREjmwDRCyCAMKK1gh2Bv0WbASELIcAQorWCHYG/RZMDEBAwYGBwYHBhcWNxcGJyImNzY3LgI3EzMDBhYXFjY3EwUypRe+lXoKBTgbPQxFVVdpAgI9kNJgEaX2pRJ2e4e0GacFsPwzpPY4UFg5AwEXkCsCbVRYSAiE34wDzvwxi5wEBJqQA9QAAAEASv5RBDEEOgAjAHeyEiQlERI5ALAARViwGC8bsRgbPlmwAEVYsCEvG7EhGz5ZsABFWLALLxuxCxE+WbAARViwAC8bsQAPPlmwAEVYsBMvG7ETDz5ZsAsQsgYDCitYIdgb9FmwABCwENCwEC+yESEAERI5sBMQsh4BCitYIdgb9FkwMSEXBwYHBhcWNxcGJyImNzY3NwYnLgI3EzMDBhcWFxY3EzMDA1wFL4MHBTgbPQxFVVdpAgOxEnu5aYs7DHXtdgQDCnOdYYjtuwMfVlY5AwEXkCsCbVSWZ1qDBAJks3kCvP1BJSN8BQaEAwr7xgD//wC3AAAHOgc3AiYAOwAAAQcBZwG/ATYAEwCwAEVYsAwvG7EMHz5ZsA/cMDEA//8AdwAABfgGAQImAFsAAAEHAWcBAgAAABMAsABFWLALLxuxCxs+WbAR3DAxAP//AKEAAAVNBzcCJgA9AAABBwFnALkBNgATALAARViwAS8bsQEfPlmwC9wwMQD///+1/kUEEgYBAiYAXQAAAQYBZxYAABMAsABFWLAPLxuxDxs+WbAU3DAxAP//AKEAAAVNBwMCJgA9AAABBwBrAO8BNgAMALABL7Aa3LAJ0DAx////5QAABOcHNgImAD4AAAEHAHcBuQE2ABMAsABFWLAHLxuxBx8+WbAM3DAxAP///+cAAAPxBgACJgBeAAABBwB3AR8AAAATALAARViwBy8bsQcbPlmwDNwwMQD////lAAAE5wcXAiYAPgAAAQcBawGWAT8ACQCwBy+wEtwwMQD////nAAAD5AXhAiYAXgAAAQcBawD8AAkACQCwBy+wEtwwMQD////lAAAE5wc7AiYAPgAAAQcBaADMATYACQCwBy+wDtwwMQD////nAAAD7gYFAiYAXgAAAQYBaDIAAAkAsAcvsA7cMDEAAAEAHgAAAyAGGgANADKyAg4PERI5ALAARViwBC8bsQQhPlmwAEVYsAAvG7EADz5ZsAQQsgkBCitYIdgb9FkwMTMTNjYXFhcHJiciBgcDHskX2qo8YiwsLVBoD8oEn7HKAgEXuAwCY1n7ZgACAE7/6AUvBcMAGgAkAF6yDSUmERI5sA0QsBzQALAARViwEi8bsRIfPlmwAEVYsAAvG7EADz5ZsggSABESObAIL7ASELINAQorWCHYG/RZsAAQshsBCitYIdgb9FmwCBCyHgEKK1gh2Bv0WTAxBSYkJycmNzcFNicmJicmByc2IRYEEgcHBgIEJxY2NyEHBhcWFgJJ0/77GgQFDBYDrw8KEqqLpNEehgEfvgELdxkPHsv+1p2R2kP9RQcOChCRFATr1DJUWo8BW1OHlwMDSclUA7D+w8Rozf68rtcDy9EiTkNsdwAB/0r+RgNMBhkAHQBxsgIeHxESOQCwAEVYsBQvG7EUIT5ZsABFWLAPLxuxDxs+WbAARViwHC8bsRwbPlmwAEVYsAUvG7EFET5ZsBwQsgABCitYIdgb9FmwBRCyCgEKK1gh2Bv0WbAAELAN0LAO0LAUELIZAQorWCHYG/RZMDEBIwMGBicmJzcWFzI3EyM3Mzc2NhcWFwcmIyIHBzMCocOUE8iiQ0AgNyR4HZehHaAMFdiqNWcqNyekGwvDA4b8NK7GAgISvg4CqQPTtGWyyAIBFrsMxVIAAgBb/+gGJgYuABoAKwBbsiAsLRESObAgELAa0ACwAEVYsAovG7EKHz5ZsABFWLAALxuxAA8+WbINCgAREjmwDS+yEwgKK1gh2Bv0WbAKELIfAQorWCHYG/RZsAAQsigBCitYIdgb9FkwMQUuAicmEhI3NhcWFhc2NjczAgUWFxYCAgcGEzc2JicmAg8CBhYWFxYSNwJIj9R7CAc/mWyr3nfFQ1JlE7Ug/vIVBQU9o3Wl9AkKg4as5SMJCAY1d1ml4igUA4H3oX4BUAESV4kEAlhQD4CF/q5HZ2WG/p3+21h7AxhqtdAEBf7u9UBpbbxhAwcBAPMAAgA2/+YFBQSoABgAJwBbsh0oKRESObAdELAE0ACwAEVYsAQvG7EEGz5ZsABFWLAVLxuxFQ8+WbIHBBUREjmwBy+yDggKK1gh2Bv0WbAVELIcAQorWCHYG/RZsAQQsiMBCitYIdgb9FkwMRM2EjYXFhYXNjc3MwYGBxYXFgcCACcmAjcXFhYXFjY3NzYmJyYGBwZREp3xlGKvPmcbDqEOc24PAwIIJf7K3dTgGOoDY1l6qBgHA2NieqYZCAIgoAEGiwICSU0pfEyQqSdIR0dJ/vH+zAUGATXlc2l/BAPCqWJ9lQQDw6xRAAEAW//oBq0GAgAaAFSyFxscERI5ALAARViwAC8bsQAfPlmwAEVYsBEvG7ERHz5ZsABFWLAMLxuxDA8+WbIBAAwREjmwAS+yCAgKK1gh2Bv0WbAMELIWAQorWCHYG/RZMDEBBzY2NzcGBgcDBgAnLgI3EzMDBhYXFjY3EwUyKGp3Fa0T1c1sIv658JXcZxGl9qUSdX2HsxmnBbDfC4mcAdbiDP2k6P7uBAN+5JEDzvwxip4EBJqRA9QAAAEASv/oBWEElAAbAGiyFBwdERI5ALAARViwDS8bsQ0bPlmwAEVYsBYvG7EWGz5ZsABFWLAELxuxBA8+WbAARViwCC8bsQgPPlmyGBYEERI5sBgvsgMICitYIdgb9FmyBhYEERI5sAgQshMBCitYIdgb9FkwMQEGBgcDIzcGJy4CNxMzAwYXFhcWNxMzBzY2NwVhD6Slk94Ve7lpizsMde11BAMHdp5fiO0fUlISBJSuqQz8z2uDBAJks3kCvP1BJSN8BQaEAwqLDVx7////D/5IAvsF4wImAWQAAAEHAWj/P//eAAkAsAAvsBHcMDEA//8Aa//qBRYHSwImACsAAAEHAHcB9QFLAAkAsA0vsCTcMDEA////9/5PBEIGAAImAEsAAAEHAHcBQgAAAAkAsAQvsC3cMDEA//8AJwAABYYHNgImADIAAAEHAEQBgwE2ABMAsABFWLAGLxuxBh8+WbAL3DAxAP//AA0AAAP6BgACJgBSAAABBwBEALkAAAATALAARViwAy8bsQMbPlmwFNwwMQD///+kAAAE2gexAiYAJQAAAAcDxQGEARz//wAi/+gEMgZ8AiYARQAAAAcDxQDc/+f///+HAAAHeAdCAiYAiQAAAQcAdwLqAUIAEwCwAEVYsAYvG7EGHz5ZsBXcMDEA//8AD//oBnAGAQImAKkAAAEHAHcCawABAAkAsBkvsEHcMDEA//8AFf+hBZgHgAImAJsAAAEHAHcCIAGAABMAsABFWLAMLxuxDB8+WbAu3DAxAP//ACr/dwQzBf4CJgC7AAABBwB3ATP//gATALAARViwBS8bsQUbPlmwMdwwMQD///+kAAAErgchAiYAJQAAAQcBdQSKATMAFgCwAEVYsAQvG7EEHz5ZsAzcsBDQMDH//wAi/+gD3AXsAiYARQAAAQcBdQPi//4AFgCwAEVYsBgvG7EYGz5ZsC3csDHQMDH//wAnAAAEugcoAiYAKQAAAQcBdQRSAToAFgCwAEVYsAYvG7EGHz5ZsA3csBHQMDH//wA7/+oEAgXsAiYASQAAAQcBdQPL//4AFgCwAEVYsAkvG7EJGz5ZsCHcsCXQMDH////JAAACvQcoAiYALQAAAQcBdQMKAToAFgCwAEVYsAIvG7ECHz5ZsAXcsAnQMDH///9+AAACcgXkAiYA9AAAAQcBdQK///YAFgCwAEVYsAIvG7ECGz5ZsAXcsAnQMDH//wBr/+cFIQchAiYAMwAAAQcBdQShATMAFgCwAEVYsAovG7EKHz5ZsCTcsCjQMDH//wA5/+gEJwXsAiYAUwAAAQcBdQPf//4AFgCwAEVYsAQvG7EEGz5ZsCLcsCbQMDH//wAnAAAE2AchAiYANgAAAQcBdQQ8ATMAFgCwAEVYsAQvG7EEHz5ZsBncsB3QMDH//wAHAAAC+wXsAiYAVgAAAQcBdQNI//4AFgCwAEVYsAcvG7EHGz5ZsA/csBPQMDH//wBb/+YFLwchAiYAOQAAAQcBdQR5ATMAFgCwAEVYsAovG7EKHz5ZsBTcsBjQMDH//wBK/+gEMQXsAiYAWQAAAQcBdQPk//4AFgCwAEVYsAgvG7EIGz5ZsBXcsBnQMDH//wAk/fkEuwXHAiYANwAAAAcDqwE+/pL//wAc/fkDxARQAiYAVwAAAAcDqwDw/pL//wCc/fkFIgWwAiYAOAAAAAcDqwEt/pL//wA7/fkCrgVBAiYAWAAAAAcDqwCD/pIAAf8P/kgB3AQ6AAwAKACwAEVYsAwvG7EMGz5ZsABFWLAELxuxBBE+WbIJAQorWCHYG/RZMDEBAwYGIyInNxYzMjcTAdzDGMyjPUYfNSp/IcIEOvuItcURwRDCBG4AAAIANv/qA/YEUAAVAB0AZbIQHh8REjmwEBCwFtAAsABFWLAALxuxABs+WbAARViwCC8bsQgPPlmyDAAIERI5sAwvsAAQshABCitYIdgb9FmyEgwQERI5sAgQshYBCitYIdgb9FmwDBCyGAcKK1gh2Bv0WTAxARYSBwcOAicmAjc3ITYmJyYHJzY2ExYTIQYXFhYCRc7jFgcVmuSDxcgaFgKQDGppl5xBQ8wHqGf+WA0GCFUETgT+1eY5l/yDAwYBDNWPg6EDBV+gPkL8XQYBC0kpQ0///wCKBAAB/gYAAwYDcQAAAAYAsAQvMDEAAQECBN0DnwYBAAgASgCwBS+yDwUBXbAG0BmwBi8YsADQGbAALxiwBRCwAdCwAS+wBRCwBNCwBC+wAtCwAi+wBRCwB9CwBy+0DwcfBwJdsgMFBxESOTAxARUnJwcHJwEzA5+5da3BAQEtiATuEQObmgQSARIAAAEBDQTgA7wGBQAIACUAsAQvsg8EAV2wAtCwAi+0DwIfAgJdsgAEAhESObAH0LAHLzAxATc3FQEjAzUXAkKp0f7MkunEBWeZBBD+7AEVEAT//wDvBRIDywWwAAYAcgAAAAEA/gTIA2wF5wAMACwAsAMvsg8DAV2wANCwAC+0DwAfAAJdsAbQsAYvsAMQsgkCCitYIdgb9FkwMQEGBicmJjUXBjMyNjcDbAq6h4SfsAV4Q0wMBeeFmgQCmYABjE49AAEBAgTcAgEF2AAKAB2yAAsMERI5ALAIL7IPCAFdsgIFCitYIdgb9FkwMQE0NjYWFRQGBwYmAQJHbkpHNzZLBVU4RwRFNjlEAgJFAAACAPoEjAKoBisACwAXAC8AsAkvsg8JAV2wFdCwFS+yDxUBXbIDDAorWCHYG/RZsAkQsg8KCitYIdgb9FkwMRM0NjMyFhUUBiMiJjcGFjMyNjc2JiMiBvqFXVJ6hF1XdmsGMisySQYGMSsySgVSWn91VFl9dFQoQkguK0BJAAAB/6j+UQEkAD0ADwAbALAARViwCi8bsQoRPlmyBQMKK1gh2Bv0WTAxBQcGBwYXFjcXBiciJjc2JQEkL4MHBTgbPQxFVVdpAgMBCAMfVlY5AwEXkCsCbVSzdgABAN4E2wPJBfQAFABBALADL7AI0LAIL7QPCB8IAl2yDgMKK1gh2Bv0WbAU0LAA0LADELAK0LAKL7AL0LALL7ADELISAworWCHYG/RZMDEBBgYjIi4CBwYHJzY2FxYWFxc2NwPJDIFeGC1rNB1PG5UKgmAwliIZURwF6XeMDj0TAQNlCHKXAgFZBAEDZgAAAgCsBNED6QX/AAMABwBAALACL7IPAgFdsADQsAAvtA8AHwACXbACELAD0BmwAy8YsAAQsAXQsAUvsAIQsAbQsAYvsAMQsAfQGbAHLxgwMQEzASMDMwEjAu/6/snSVvP+9MUF//7SAS7+0gAAAv/u/mkBTf+/AAsAFwA9ALAYL7AD0LADL0APAAMQAyADMANAA1ADYAMHXbAP0LAPL7IJCQorWCHYG/RZsAMQshUJCitYIdgb9FkwMQc0NjMyFhUUBiMiJjcGFjMyNjc2JiciBhJqS0lhaUhKZGEEJR0hNgYFHiAjOfVNZ2JESmZeRh8rMyEdMQE2AAAB/VQE0f7ZBgAAAwAjALABL7IPAQFdsADQGbAALxiwARCwAtCwAi+0DwIfAgJdMDEBIwMz/tm00fwE0QEvAAH91wTR/+kGAAADACMAsAIvsg8CAV2wAdCwAS+0DwEfAQJdsAIQsAPQGbADLxgwMQEhASP+yQEg/r7QBgD+0f///PYE2//hBfQABwFu/BgAAAAB/dYE5f89Bn8ADgAlALAOL7AH0LAHL7IBDgcREjmyCAgKK1gh2Bv0WbINAQ4REjkwMQE3NzY3NicnNxcEBwYHB/3WDi9fCQprIhEoAQwDA6AKBOaSBQs6PAQBfAIWoX0eRgAAAvy/BOT/swXuAAMABwA3ALABL7AA0BmwAC8YsAEQsAXQsAUvsAbQsAYvtg8GHwYvBgNdsAPQsAMvsAAQsATQGbAELxgwMQEjAyEBIwMh/pHd9QESAeLOwAEEBOQBCv72AQoAAAH8oP6R/az/jgALABEAsAMvsgkNCitYIdgb9FkwMQU0Njc2FhUUBgcGJvygSzo3UEo7Ok31NkkCAkQ3OUUCAkYAAAEBLgTpAogGQQADABcAsAIvsADQsAAvsAIQsAPQGbADLxgwMQEzAyMBpuLElgZB/qgAAwDoBNwEIwavAAMADwAbAD4AsA0vsALQsAIvsADQsAAvtA8AHwACXbACELAD0BmwAy8YsA0QsgcFCitYIdgb9FmwE9CwDRCwGdCwGS8wMQEzAyMFNDY3NhYVBgYHBiYlNjY3NhYVFAYHBiYCneizl/6tRDcySgFGMzJLAkQBRjMyS0U2NEgGr/7WMjBIAgJCNDREAgJCMzREAgJCNDBIAgJEAP///6QAAASuBkECJgAlAAAABgF3wQD//wCeAkIBsQNVAgYAegAA////vgAABR4GQQAmAClkAAAHAXf+kAAA////xgAABesGQQAmACxkAAAHAXf+mAAA////ygAAAowGQwAmAC1kAAAHAXf+nAAC//8AGP/nBTUGQQAmADMUAAAHAXf+6gAA////WAAABbEGQQAmAD1kAAAHAXf+KgAA//8AHQAABQsGQQAmAZkUAAAHAXf+9AAA//8AC//0A0YGmgImAakAAAEHAXj/I//rABIAsAAvsCfcsA7QsCcQsBLQMDH///+kAAAErgWwAgYAJQAA//8AJwAABLwFsAIGACYAAAABAC4AAASsBbAABQArALAARViwBC8bsQQfPlmwAEVYsAIvG7ECDz5ZsAQQsgABCitYIdgb9FkwMQEhAyMTIQSI/XXZ9vwDggTk+xwFsAAC/6oAAAUJBbAAAwAGAC8AsABFWLAALxuxAB8+WbAARViwAi8bsQIPPlmyBAEKK1gh2Bv0WbIGAgAREjkwMQEzASElIQMC6+0BMfqhAXoCybcFsPpQygO5AP//ACcAAAS6BbACBgApAAD////lAAAE5wWwAgYAPgAA//8AJwAABYcFsAIGACwAAAADAF7/5wUWBcgAAwAVACUAg7IbJicREjmwGxCwAtCwGxCwDdAAsABFWLANLxuxDR8+WbAARViwBC8bsQQPPlmyAgQNERI5fLACLxiyYAIBXbJCAgFdsnICAV200ALgAgJdsjACAV2yAAIBcbIBAQorWCHYG/RZsA0QshoBCitYIdgb9FmwBBCyIgEKK1gh2Bv0WTAxASE3IQEuAicmEhI3NgQAFxYCAgcGEzc2JicmAg8CBhYXFhI3A5D+SyMBtP6aj9Z6CAc6n3SoAbABAQwGOYtnstwJB4ODr+IiCggKhIWl4igCecL8sQOD+J1zAVEBIVqCCP7e93z+v/7zWpwDGWq8yQQF/u3tR2m30gQHAQDzAP//ADUAAAIoBbACBgAtAAD//wAnAAAFcQWwAgYALwAAAAH/sgAABH8FsAAGADEAsABFWLADLxuxAx8+WbAARViwAS8bsQEPPlmwAEVYsAUvG7EFDz5ZsgADARESOTAxAQEhATMTIQLe/eX+7wLr7/P/AARB+78FsPpQ//8AJwAABs4FsAIGADEAAP//ACcAAAWGBbACBgAyAAAAAwAAAAAEiAWwAAMABwALAEsAsABFWLAILxuxCB8+WbAARViwAi8bsQIPPlmyAAEKK1gh2Bv0WbIFCAIREjmwBS+yBgEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDE3IQchEyEHIRMhByEkA6Yj/Fn0AuEj/R84A38j/IDKygNNxgMpzAD//wBr/+cFIQXIAgYAMwAAAAEALgAABYMFsAAHADgAsABFWLAGLxuxBh8+WbAARViwAC8bsQAPPlmwAEVYsAQvG7EEDz5ZsAYQsgIBCitYIdgb9FkwMSEjEyEDIxMhBIb22f2U2fb8BFkE5PscBbAA//8AJwAABQQFsAIGADQAAAAB/9wAAASfBbAADAA8ALAARViwCC8bsQgfPlmwAEVYsAMvG7EDDz5ZsgEBCitYIdgb9FmwBdCwCBCyCgEKK1gh2Bv0WbAH0DAxAQEhByE3AQE3IQchAQMb/i8CniP8FxwCIP6oGQPGJP12ASsC0f35yqICQwI+jcz+AQD//wCcAAAFIgWwAgYAOAAA//8AoQAABU0FsAIGAD0AAAADAFIAAAWxBbAAFQAcACMAdbITJCUREjmwExCwGtCwExCwIdAAsABFWLAVLxuxFR8+WbAARViwCC8bsQgPPlmyExUIERI5sBMvsADQsAAvsgoIFRESObAKL7AH0LAHL7AKELIZAQorWCHYG/RZsBMQshoBCitYIdgb9FmwINCwGRCwIdAwMQEWAAcGAgQHByM3LgI3NhI3Njc3MwEGFhcTBgYFNiYnAzY2A9XbAQEVD63+6ack9ySR3GwPD6qKj6sm9/1YEXyFgpjHA0QSeoWBlccE/Qr+zOaf/wCNA6qrBY72k6ABAElLA7L9F5KuCwKyCMCMlbAN/U4Ivf///8MAAAVHBbACBgA8AAAAAQB1AAAF1wWwABkAXLIKGhsREjkAsABFWLAELxuxBB8+WbAARViwEC8bsRAfPlmwAEVYsBgvG7EYHz5ZsABFWLAKLxuxCg8+WbIXBAoREjmwFy+wANCwFxCyDAEKK1gh2Bv0WbAJ0DAxATY2NxMzAwYABwMjEyYCNxMzAwYXFhYXEzMDQYarGVX3Vir+wfZI9kjc2x1T9lQIAwVjWZ70Aj8bxZoB9/4C+f7VF/6JAXcfAUHoAfH+Dj48YocYA20AAQAJAAAE9wXHACMAWbIAJCUREjkAsABFWLAZLxuxGR8+WbAARViwDy8bsQ8PPlmwAEVYsCIvG7EiDz5ZsiEBCitYIdgb9FmwANCwGRCyBwEKK1gh2Bv0WbAAELAO0LAhELAR0DAxJTYSEzc1AicmBgIHBhYXByE3NwITNzYSJBcWFhIHBwIFNwchAoCPqyEGC8+Qvj4DBVFRIP4UJdGhJQ0atAESpJ3gZhUNNf720ST+Hc4nATMBN08zAQ8IBdv+fHaQrxnQywIBDgESXbgBJp8EBKT+3qhX/p7RBMv//wA1AAADLAcKAiYALQAAAQcAa/+pAT0ADACwAi+wFdywBNAwMf//AKEAAAVNBwMCJgA9AAABBwBrAO8BNgAMALABL7Aa3LAJ0DAx//8APv/qBDMGQQImAaEAAAEHAXcBRgAAAAkAsBovsC7cMDEA//8AKP/qBAIGQQImAaUAAAEHAXcBEAAAAAkAsAgvsCrcMDEA//8AEf5hBAYGQQImAacAAAEHAXcBGgAAAAkAsAMvsBXcMDEA//8Abv/0ApIGLAImAakAAAEGAXcK6wAJALAAL7AQ3DAxAP//AFf/5QQ9BqICJgG1AAABBgF4GvMAEgCwCi+wMNywF9CwMBCwG9AwMQACAD7/6gQzBFEAHQArAHmyGiwtERI5sBoQsCTQALAARViwGi8bsRobPlmwAEVYsAAvG7EAGz5ZsABFWLAQLxuxEA8+WbAARViwCi8bsQoPPlmyBQEKK1gh2Bv0WbINGhAREjmyHBoQERI5sBAQsiMBCitYIdgb9FmwGhCyKAEKK1gh2Bv0WTAxAQMGFxYXMzcXBicmJicGBicmJicmNzc2EjYXFhc3AQYXFhYXFjcTJicmBgcEM4AHAgInDg0GNUBOXg08lGSatAcDBgMVi8yArVUx/cwGAQJZUoRiUC9/eZ4WBDr9BjQaNAIDtx0CAlRLS1kCAtu1PTwVrAEThgMElYX9uDM4ZHQCA4sByYkEBdO2AAAC/+X+dwRrBccAFAApAGWyFCorERI5sBQQsBzQALAPL7AARViwAC8bsQAfPlmwAEVYsAwvG7EMDz5ZshUADBESObAVL7InAQorWCHYG/RZsgUnFRESObAAELIbAQorWCHYG/RZsAwQsiEBCitYIdgb9FkwMQEWFgcGBxYWBw4CJyYnAyMTPgITNjY3NiYnJgYHAxYXMjY3NiYnJzcC27jYDQ7cXl4ICobbhJ10V+z3EJLiF2mCCwlYUWCREotKkXGjEA5ZWIQaBcQE1anDdS66dYXRbwMEUv42Bah3xG39lAJ0aVhuBAKAZvzeUAKPcmWMBQG4AAABAHf+XwQwBDoACAA4sgAJChESOQCwAEVYsAEvG7EBGz5ZsABFWLAHLxuxBxs+WbAARViwBC8bsQQRPlmyAAcEERI5MDEBATMBAyMTAzMByQFp/v3fTu1TsOwBPgL8++L+QwHeA/0AAAIAOP/nBDgGJAAfAC4AYrICLzAREjmwAhCwJtAAsABFWLADLxuxAyE+WbAARViwFS8bsRUPPlmwAxCyCAEKK1gh2Bv0WbIOFQMREjmwDi+yKwEKK1gh2Bv0WbIcKw4REjmwFRCyJQEKK1gh2Bv0WTAxATY2FxYXByYHIgYHBhcXBAMHDgInLgI3NjY3NSYmAwYXFhYXFjY3NiYnBgYHAUEH67FsmRWEakxrCg9wLAGGJwMUme+QisRcDhLbnkhNBwYDA2NXd6QcDmZgeqUYBOKVrQICMcQ4AkE3TTcUrP51FJ36iAQEh/GUvv8cDyeG/XM1O2h9AwO9vH+7HgO6qgABACj/6gQCBFEAJwCgshQoKRESOQCwAEVYsAgvG7EIGz5ZsABFWLAlLxuxJQ8+WbIVCCUREjmwFS+yjxUBXbQfFS8VAnG0XxVvFQJxtL8VzxUCXbTvFf8VAnGyWhUBXbIXBworWCHYG/RZsgIXFRESObAIELIPAQorWCHYG/RZsgwVDxESObYMDBwMLAwDXbAlELIdAQorWCHYG/RZsiAXHRESObQDIBMgAl0wMRM2NyYmNzYkFxYWFSc0JiMmBgcGFxcHJyIGBwYWFxY2NzMOAicmJi8K5j1PAgUBDc6y2+llTlmGChOx0R+0boQJCGdcWo4O7gmC3X7D7AEpt1MhbUiargQFspABQkgCUER5BgGtAVVKP04DAlVKa5xQAgSqAAEAZv59BFAFsAAbAE+yEhwdERI5ALAML7AARViwAC8bsQAfPlmyGQEKK1gh2Bv0WbIBGQAREjmyAgwAERI5shMMABESObATELIGAQorWCHYG/RZshgADBESOTAxAQcBBhcWFxcWFgcGByc3Njc2JyckEzYSNwEhNwRQHP4W4gcDXbBZSQQK3norPwsKTnX+7xwOqrEBFP3eIgWwnP4J9NleJD0hYUmlpGsvSDo3HCRbAQ2KASqyAQ/DAAEAEf5hBAYEUgASAFOyCBMUERI5ALAARViwAy8bsQMbPlmwAEVYsAAvG7EAGz5ZsABFWLAHLxuxBxE+WbAARViwEC8bsRAPPlmyAQMQERI5sAMQsg0BCitYIdgb9FkwMQEHNhcWFgcDIxM2JyYnJgcDIxMBpRSKtaGVE7vtvAUDDoaIZYnuvAQ7hZwEBNTA+6sEVCwngAMEffzuBDoAAwBs/+cEPwXJABEAGQAiAIayICMkERI5sCAQsADQsCAQsBjQALAARViwCS8bsQkfPlmwAEVYsAAvG7EADz5ZshMJABESOXywEy8YsmATAV2yQhMBXbJyEwFdtNAT4BMCXbIwEwFdsgATAXGwCRCyFwEKK1gh2Bv0WbATELIaAQorWCHYG/RZsAAQsiABCitYIdgb9FkwMQUmAjc0NzcSABcWEgcGBwcCAAEhNjUmJyYDASEGFxQWFxYTAei4xAIJHzEBHt+5wgEBCSI0/uf+tgHJFQWf2UsBn/43FQFUTtZOFAQBBetLR8wBQgFJBQT+/OdLR93+xf68A1GDUe8HCP6i/s2DS3mCAwwBZAAAAQBu//QCCgQ6AA0AKACwAEVYsAAvG7EAGz5ZsABFWLAJLxuxCQ8+WbIEAQorWCHYG/RZMDEBAxUWFzI3BwYnJiY3EwHrgwNLJy0QSkt8ew2DBDr89S1AAwm+FgICo4kDFv//ACEAAASNBDoCBgD7AAAAAf+o//AD1gX7ABoAUbIPGxwREjkAsAAvsABFWLALLxuxCw8+WbAARViwEC8bsRAPPlmwCxCyBgEKK1gh2Bv0WbIPABAREjmyEhAAERI5sAAQshYBCitYIdgb9FkwMQEWFxMWFhczNwcGIyYmJwMBIQEnJiYnJwc3NgGZuDDoCB4kEhENKipfch1p/pb+9AIxLgsqKxsbDj4F+QSl+8QfNgUBwwgCZmsCBP05BB3AKC0CAQG4D////93+YARUBDoCBgB4AAD//wBkAAAEDQQ6AgYAWgAAAAEAPv51BCYFxQAtAFayBS4vERI5ALAXL7AARViwKy8bsSsfPlmyAgEKK1gh2Bv0WbIHLisREjmwBy+yCgEKK1gh2Bv0WbIeFysREjmwHhCyEAEKK1gh2Bv0WbIlCgcREjkwMQEmIyIGBwYFFwcnIgYHBhYfAhYHBgYHJzc2NzYnJyYnJhM2NjcmJjc2JDMyFwPue1h8mAwbAQ+FI36s0xILYWCELqkIBXhsgC9CCQc/KqBC2hUKuKtUYAQIAR/bjIgE2iZbTq8CAcYBmY5dgxwlDzyQUqlNajFIPTIZDzMjcgEBjcs4KIlYrsYuAP//ADn/6AQnBFICBgBTAAAAAQBd//UE2gQ6ABYAXLINFxgREjkAsABFWLAVLxuxFRs+WbAARViwCy8bsQsPPlmwAEVYsBEvG7ERDz5ZsBUQsgABCitYIdgb9FmwCxCyBgEKK1gh2Bv0WbAAELAP0LAQ0LAT0LAU0DAxASMDBhcWFzI3BwYjJiY3EyEDIxMjNyEEuZtjAwIGSiYvEUVQfHsNYv7Am+2bpyIEWwN8/bQZFEEDCb4VAqOKAlj8hAN8vgAC/8v+YAQMBFMAEgAgAFCyDiEiERI5sA4QsBbQALAARViwBS8bsQUbPlmwAEVYsBEvG7ERET5ZsABFWLAOLxuxDg8+WbIVAQorWCHYG/RZsAUQsh0BCitYIdgb9FkwMRM2Njc2FxYWFxYHBwYGJyYnAyMBFhcWNjc2JyYmJyYGB3UQW0iQ0LDICQMHDSz3salhYe4BazSDdZ4VCwMIVU5rjhkCPm/JSZQFBOnHRUVT3/gFBHb9+wK/bwQDs591PXFsAwK/ogABADv+iQPwBFMAIABZsg0hIhESOQCwAEVYsAAvG7EAGz5ZsABFWLAaLxuxGg8+WbAARViwEy8bsRMXPlmwABCxAworWNgb3FmwABCyBwEKK1gh2Bv0WbAaELINAQorWCHYG/RZMDEBFhYHJzYmJyYGBwcGFxcWBwYGByc3Njc2JicmAjc3EgACc7TJCN4FVVRzoRYEHO5toAcDe2x5KUMJBCU6zb8TAh0BMQROBOG0AWRuBAPAoyPtVyc9j1GrTWssSj8hKBA+AQTEFAECATUAAgA4/+gEtgQ7ABEAIgBhshgjJBESObAYELAH0ACwAEVYsBAvG7EQGz5ZsABFWLARLxuxERs+WbAARViwCC8bsQgPPlmwERCyAAEKK1gh2Bv0WbAIELIXAQorWCHYG/RZsBAQsiABCitYIdgb9FkwMQEFFgcHDgInLgI3NzYAMwUBBhcWFhcWNjc3NicmJicmBgSS/v6DEQMQlu+Ki8RZEAIiATHeAjv8gAYCBGBXb50cBwYCBV5VeKADdgOrxxaR7YUEApD8lRD7ASEB/dE2PW58AgOspS80OmZ3AwO2AAABAG7/6wQjBDoAEQBJsgMSExESOQCwAEVYsBAvG7EQGz5ZsABFWLAKLxuxCg8+WbAQELIAAQorWCHYG/RZsAoQsgUBCitYIdgb9FmwABCwDtCwD9AwMQEhAwcUMxY3FwYnJiY3EyE3IQQB/qNlAj8hPRVSX3x6DmH+tyIDkwN5/a8oSgEVtCsCAquWAknBAAABAFf/5QP+BDwAFgA8shAXGBESOQCwAEVYsAovG7EKGz5ZsABFWLAALxuxABs+WbAARViwES8bsREPPlmyBQEKK1gh2Bv0WTAxAQMHBhYXFhIDJicXFgcGAgYnJiY3NxMBv20FAjs5lcMOBiHiOgsPm/iZqbgKA24EOv1rTExfAgYBdAEkgX0Bqdf7/sahBAPXwCYCkQACADL+IgVtBEQAGwAkAFmyGSUmERI5sBkQsBzQALAaL7AARViwEi8bsRIbPlmwAEVYsAcvG7EHGz5ZsABFWLAALxuxAA8+WbAZ0LIcAQorWCHYG/RZsA7QsBIQsiIBCitYIdgb9FkwMQUmJyY3NhI3FwYCFxYWFxM2NhceAgcGAAUDIwE2NicmJgcGBwH67nJoGRObhohxbgwKcWBxDqZ7h9FmDhr+r/7zV+0BXq3KAgNnVjYMDCOqnOCgAQlblmj+9H1jhhoChXWTAgKQ9Y30/tEa/jECkSTxq4GQBgQ2////uQAABBMEOgIGAFwAAAABAD/+IgWKBDwAHQBSsg4eHxESOQCwDy+wAEVYsAAvG7EAGz5ZsABFWLAILxuxCBs+WbAARViwFS8bsRUbPlmwAEVYsBEvG7ERDz5ZsA7QsgEBCitYIdgb9FmwHNAwMQEDNjYSJyYnFxYXEgcGBQMjEyYCNxMzAwYXFhYXEwOeo5K/RAwJI94rCh/vqf70V+1X4dkgUu1SCQMDZ1+iBDr8eiK3AQ6rfngCdn/+ROGfGf4yAdIiAUT3Aen+FEJAa44cA4MAAQBU/+QGEAQ9ACsAXrIjLC0REjkAsABFWLAALxuxABs+WbAARViwGy8bsRsbPlmwAEVYsCEvG7EhDz5ZsABFWLAmLxuxJg8+WbIHAQorWCHYG/RZsgwhABESObAhELISAQorWCHYG/RZMDEBBwYGBwYWFxY2NxMzAwYXFxYXFjY3NzYnJicXFhcWAgYnJiYnBicmJjcQEwIoUk9GAwNDPVt9EzX1NAkDAhByVnkcChEMDC3iNAwTcuakapgYhdOirALeBDmYleiDd3sDBqCZAUb+uksxG5gDBKmqQIKCgXwDeILd/lnVBAJ4ZeYHBOnXAV8BKwD//wBM//QC/gW4AiYBqQAAAQcAa/97/+sADACwAC+wH9ywDtAwMf//AFf/5QP+BcACJgG1AAABBgBrcvMADACwCi+wKNywF9AwMf//ADn/6AQnBkECJgBTAAABBwF3AQ0AAAAJALAEL7Aj3DAxAP//AFf/5QP+BjQCJgG1AAABBwF3AQL/8wAJALAKL7AZ3DAxAP//AFT/5AYQBjICJgG5AAABBwF3Ahj/8QAJALAaL7Au3DAxAAACAFD/5gSNBckAHgAoAGuyFCkqERI5sBQQsCDQALAARViwGS8bsRkfPlmwAEVYsAYvG7EGDz5ZsiEZBhESObAhL7ITAQorWCHYG/RZsALQsgwZBhESObAGELIQAQorWCHYG/RZsCEQsB3QsBkQsiUBCitYIdgb9FkwMQEGBwcGBCcuAjcTNwMGFhcWEzcmAjc2NhcWFgcDNwEGFxM3NCcmBgcEgjlLEyX+58h+vFsPL+cwDmRhyjQUt8sOE9yfmKESNHL98RK6OARUOUoLAlYTC3Xh/AYDedeAASMC/tp4jgMHASBvLAEVu7/RBATZrf7LGAEh4UwBODdwAgJUTQAAAQBtAAAFBgXJABgAVLIMGRoREjkAsABFWLAELxuxBB8+WbAARViwFi8bsRYfPlmwAEVYsAwvG7EMDz5ZsgAWDBESObAEELIIAQorWCHYG/RZsBYQshEBCitYIdgb9FkwMQEBNjYXFhcHJwYHAQMjEwMmJyYHJzYzFhcCRwETP4pXO1E1M0Es/mhZ9l6nFTgRJRE8QK8/AwkB53lgAgIZwwYDRf1d/fwCHwKJPgMBBcQYBMv///8kAAAFagZBACYBwGQAAAcBd/32AAAAAgBX/+MGfQQ6ABQAKgBmsgkrLBESObAJELAh0ACwAEVYsBMvG7ETGz5ZsABFWLAMLxuxDA8+WbATELIBAQorWCHYG/RZsAwQsAfQsgoTDBESObABELAX0LAS0LAMELIdAQorWCHYG/RZsiEMEhESObAn0DAxAScXBgIGBicmJicGJyYmNxI3BzchASYnJQYGBwYXFjY3NzMHBhcWFxYTNgZaeAMCPHixb2ucGIbamKEGBHhyIgX0/n4BB/zdSDwGC3Bbfhgk9CIIAwqBkzYbA4MBpIr+29xtAwJ4aesHBOvdAQDQArb+plFSAonXfPYGB5ad6eNJNbIDBAEpl///ACcAAAS6Bz0CJgApAAABBwBEASMBPQATALAARViwBi8bsQYfPlmwDdwwMQD//wAnAAAEugcKAiYAKQAAAQcAawDwAT0ADACwBi+wHdywDNAwMQABAJH/8QWFBbAAGQBusgEaGxESOQCwAEVYsBgvG7EYHz5ZsABFWLAKLxuxCg8+WbAARViwFC8bsRQPPlmwGBCyAAEKK1gh2Bv0WbIEGBQREjmwBC+wChCyCwEKK1gh2Bv0WbAEELIRAQorWCHYG/RZsAAQsBbQsBfQMDEBIQM2FxYWBwYEBzc2Njc2JicmBwMjEyE3IQTf/iJNjW/f9hES/sj+E4ujDw1yeW6SdvfZ/ockBE4E5P5zJwIC88rZ8QK/BIl6boEEAyD9cwTkzAD//wAuAAAErAc9AiYBhAAAAQcAdwG5AT0AEwCwAEVYsAQvG7EEHz5ZsAjcMDEAAAEAZ//oBREFxwAgAIWyFCEiERI5ALAARViwDC8bsQwfPlmwAEVYsAMvG7EDDz5ZsgAMAxESObIQAwwREjmwDBCyEwEKK1gh2Bv0WbIWDAMREjl8sBYvGLJgFgFdsnIWAV2yQhYBXbIwFgFdtNAW4BYCXbIAFgFxshkBCitYIdgb9FmwAxCyHQEKK1gh2Bv0WTAxAQYAJy4CJyYSEiQXFhIXIyYmJyYGByUHIQcGFhcWNjcEqSH+r/CL0XcHBkTCARyp2PwL9QV7dpbUPQH0JP4ZCQZ+fIu2JAHb4/7wBAN+75pxAYkBOZ4DBP74656LAwXT6wHKYqS5BAaXkwAAAQAk/+oEuwXHACkAYbIDKisREjkAsABFWLAKLxuxCh8+WbAARViwHy8bsR8PPlmyAx8KERI5sAoQsA7QsAoQshIBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WbAfELAk0LAfELInAQorWCHYG/RZMDEBNicnJiY3PgIXHgIHJzYmJyYGBwYXFxYWBw4CJy4CNxcGFhcWNgNMFrNR4r4JCJn6jYjUcAT2B3N0daEOFL5L5bYLCo77l4/pfAX3CIqBeKEBfpBGHk/Yj3y9ZgMDccmBAXJ+AwJyYX9JG1Ldl3u3ZAIBdtGFAXyGAgJqAP//ADUAAAIoBbACBgAtAAD//wA1AAADLAcKAiYALQAAAQcAa/+pAT0ADACwAi+wFdywBNAwMf//AAP/5wRhBbACBgAuAAAAAv/KAAAH9QWwABkAIgB5sgojJBESObAKELAb0ACwAEVYsBgvG7EYHz5ZsABFWLAILxuxCA8+WbAARViwEC8bsRAPPlmyARgIERI5sAEvsBgQsgoBCitYIdgb9FmwEBCyEgEKK1gh2Bv0WbAIELIcAQorWCHYG/RZsAEQsiIBCitYIdgb9FkwMQEFHgIHBgAjIRMhAwcCAgcjNzc2Njc3EyEDAwU2Njc2JicFIAERitRmCxH+xfT939n+UnEeQ/vCWxYkf6IpE4oDkX9bARJ/sBIPcWkDoQEEdsyC0/77BOT99ZL+z/7vBcoBCd/3bwKX/Sb99AIClH1uiAQAAgAuAAAH/QWwABIAGwCCsgEcHRESObABELAU0ACwAEVYsAIvG7ECHz5ZsABFWLARLxuxER8+WbAARViwCy8bsQsPPlmwAEVYsA8vG7EPDz5ZsgECCxESObABL7IFAgsREjmwBS+wARCyDQEKK1gh2Bv0WbALELIVAQorWCHYG/RZsAUQshsBCitYIdgb9FkwMQEhEzMDFxYWBwYEIyETIQMjEzMBAwU2Njc2JicBtQJrbPZh/OL+DxD+xvT93279lW72/PYC3lUBEoGuDw5xawNFAmv90gEB8cPO/gJ6/YYFsP0I/hgCAoxzaHwEAAEAoAAABZgFsAAWAF2yARcYERI5ALAARViwFS8bsRUfPlmwAEVYsAgvG7EIDz5ZsABFWLARLxuxEQ8+WbAVELIAAQorWCHYG/RZsgQVCBESObAEL7IOAQorWCHYG/RZsAAQsBPQsBTQMDEBIQM2FxYWBwMjEzYnJicmBwMjEyE3IQTh/iBGgobq6xhL90wIBxW+ZK999tn+lSQEQQTk/pocAgT11/44AclAMI4GAxz9TATkzAD//wAnAAAFcQc2AiYALwAAAQcAdwGlATYAEwCwAEVYsAUvG7EFHz5ZsA/cMDEA//8AJwAABXwHPQImAdsAAAEHAEQBggE9ABMAsABFWLAILxuxCB8+WbAL3DAxAP//AJv/5wVTByQCJgHmAAABBwFqARUBPQAJALABL7AU3DAxAAABACX+mAV8BbAACwBIALAJL7AARViwAC8bsQAfPlmwAEVYsAQvG7EEHz5ZsABFWLAGLxuxBg8+WbAARViwCi8bsQoPPlmyAgEKK1gh2Bv0WbAD0DAxATMDIRMzAyEDIxMhASL32gJs2vf9/lk/9z/+RAWw+xoE5vpQ/pgBaP///6QAAASuBbACBgAlAAAAAgAjAAAEoQWwAAwAFQBesg8WFxESObAPELAJ0ACwAEVYsAsvG7ELHz5ZsABFWLAJLxuxCQ8+WbALELIAAQorWCHYG/RZsgMLCRESObADL7AJELIPAQorWCHYG/RZsAMQshUBCitYIdgb9FkwMQEhAxcWFgcGBCMhEyEBAwU2Njc2JicEff12Pf7j/REQ/sf0/d38A4L88lYBEoGuDw5wawTk/p8BAe/E0P4FsP0I/hICApB3aXkE//8AJwAABLwFsAIGACYAAP//AC4AAASsBbACBgGEAAAAAv+E/poFkQWwAA4AFQBVshIWFxESObASELAL0ACwAS+wAEVYsAsvG7ELHz5ZsABFWLACLxuxAg8+WbABELAE0LACELINAQorWCHYG/RZsBDQsAbQsAsQshEBCitYIdgb9FkwMQEjEyEDIxMXNhITEyEDMwUlEyEDBwIE/us+/GA/7ltlc543iAN92bT79gJft/5mbhFV/poBZv6aAjADUwEzAQ4CVfsaBAQEGv4aQv68//8AJwAABLoFsAIGACkAAAAB/6UAAAfgBbAAFQB9ALAARViwCS8bsQkfPlmwAEVYsA0vG7ENHz5ZsABFWLARLxuxER8+WbAARViwAi8bsQIPPlmwAEVYsAYvG7EGDz5ZsABFWLAULxuxFA8+WbIQCQIREjmwEC+yAAEKK1gh2Bv0WbAE0LIIEAAREjmwEBCwC9CyEwAQERI5MDEBIwMjEyMBIQEBIRMzEzMDMwEhAQEhBOSjbvZunf45/r4CWP7SARvpnWr2aooBtwE5/dsBN/7dAnT9jAJ0/YwDEwKd/aACYP2gAmD9Tf0DAAEAHv/tBKgFxQApAIGyByorERI5ALAARViwDi8bsQ4fPlmwAEVYsBovG7EaDz5ZsgAOGhESObAAL7IfAAFxsp8AAV2yegABXbJKAAFdsA4QsgYBCitYIdgb9FmyCg4aERI5sAAQsicBCitYIdgb9FmyEycAERI5sh0OGhESObAaELIhAQorWCHYG/RZMDEBMjY3NiYnJgYHBz4CFxYWBwYFFhYHBgQHByYkNxcGFhcWNjc2LwI3And+oQwMfW1nohH1CY74jOD4DhH+/WNcBwz+2eU10v7/B/MEgmZ+wQ4b0SS1IwNJeGpecAICcGEBd7ppAgXYuc94Lqxsu+sMAQLnvwFkeQIEgW7FGQMByAAAAQAnAAAFfAWwAAkARQCwAEVYsAAvG7EAHz5ZsABFWLAHLxuxBx8+WbAARViwAi8bsQIPPlmwAEVYsAUvG7EFDz5ZsgQAAhESObIJAAIREjkwMQEzAyMTASMTMwMEff/997L86/7997IFsPpQA/78AgWw/AEA//8AJwAABXwHJAImAdsAAAEHAWoBVwE9AAkAsAAvsA3cMDEA//8ALgAABXsFsAIGA8EAAAAB/8oAAAV8BbAAEQBNsgQSExESOQCwAEVYsAAvG7EAHz5ZsABFWLABLxuxAQ8+WbAARViwCS8bsQkPPlmwABCyAwEKK1gh2Bv0WbAJELIMAQorWCHYG/RZMDEBAyMTIQMHAgIHIzc3NjY3NxMFfP322f5ScR5E/MNYFiJ+oSoWigWw+lAE5P31kv7L/vACygIH1PCCApcA//8AJwAABs4FsAIGADEAAP//ACcAAAWHBbACBgAsAAD//wBr/+cFIQXIAgYAMwAA//8ALgAABYMFsAIGAZEAAP//ACcAAAUEBbACBgA0AAD//wBl/+gFDQXHAgYAJwAA//8AnAAABSIFsAIGADgAAAABAJv/5wVTBbAAEABDsgAREhESOQCwAEVYsAEvG7EBHz5ZsABFWLAPLxuxDx8+WbAARViwBi8bsQYPPlmyAAEGERI5sgsBCitYIdgb9FkwMQEBIQEGBiciJzcWNzI3NwEhApcBnwEd/U1Uwn8vQRc0H25DRP7XAQICuAL4+1WbgwIHyAcBbHwEFgADAFb/xAYSBewAFwAfACkAXrIVKisREjmwFRCwHdCwFRCwIdAAsAovsBcvsgAXChESObAAL7IMChcREjmwDC+wCdCwABCwFNCwDBCyGwEKK1gh2Bv0WbAUELIdAQorWCHYG/RZsCDQsBsQsCHQMDEBMhYSBwYCBCcnByM3IiYCNzYSJBcXNzMBBhYXFxMiBiUDMjY3NicmJicEDKLwdBARvf7XqxQo7Sik73YQErsBKqwWKub9IBSQlRWTuugCkJG06BgKChCFawUkmv7xoaz+6ZgDAb/AlgENoa0BGJsCAcf83KzIBwEDEd7d/O/ZtkxFan0IAP///8MAAAVHBbACBgA8AAAAAQAl/qEFfAWwAAsAOwCwCS+wAEVYsAAvG7EAHz5ZsABFWLAELxuxBB8+WbAARViwCi8bsQoPPlmyAgEKK1gh2Bv0WbAG0DAxATMDIRMzAzMDIxMhASL32gJs2vfZq3TjPfvxBbD7GgTm+xz91QFfAAEAxQAABWoFsAAQAEayBRESERI5ALAARViwAC8bsQAfPlmwAEVYsAkvG7EJHz5ZsABFWLABLxuxAQ8+WbINAQkREjmwDS+yBQEKK1gh2Bv0WTAxAQMjEwYnJiY3EzMDBhYENxMFav32a5qt5vAZTPZMEGABBs58BbD6UAI+LAQC89wByf42gIIGKgKoAAABACsAAAdjBbAACwBIALAARViwAC8bsQAfPlmwAEVYsAMvG7EDHz5ZsABFWLAHLxuxBx8+WbAARViwCS8bsQkPPlmyAQEKK1gh2Bv0WbAF0LAG0DAxAQMhEzMDIRMzAyETAh/ZAa3Z99oBqtr2/fnF/AWw+xoE5vsaBOb6UAWwAAEAK/6iB2MFsAAPAFQAsAsvsABFWLAALxuxAB8+WbAARViwAy8bsQMfPlmwAEVYsAcvG7EHHz5ZsABFWLANLxuxDQ8+WbIBAQorWCHYG/RZsAXQsAbQsAnQsArQsALQMDEBAyETMwMhEzMDMwMjEyETAh/ZAa3Z99oBqtr226Vy2T36DPwFsPsaBOb7GgTm+xL94AFeBbAAAgCJAAAFnQWwAAwAFQBesgEWFxESObABELAN0ACwAEVYsAAvG7EAHz5ZsABFWLAJLxuxCQ8+WbIDAAkREjmwAy+wABCyCwEKK1gh2Bv0WbAJELIPAQorWCHYG/RZsAMQshUBCitYIdgb9FkwMRMhAxcWFgcGBCMhEyEBAwUyNjc2JierAnVg/eH/DxD+x/b939v+gAIUVgESgK8PDW1tBbD90wEB7MbR/gTt/cv+EgGRd2d7BAADAC4AAAa9BbAACgATABcAcLIGGBkREjmwBhCwD9CwBhCwFdAAsABFWLAJLxuxCR8+WbAARViwFi8bsRYfPlmwAEVYsAcvG7EHDz5ZsABFWLAULxuxFA8+WbIBCQcREjmwAS+wBxCyDQEKK1gh2Bv0WbABELITAQorWCHYG/RZMDEBFxYWBwYEIyETMwMDBTY2NzYmJwEjEzMBwf7j/REQ/sf0/d3994RWARKBrg8OcGsC9fb99gODAQHvxND+BbD9CP4SAgKQd2l5BP1JBbAAAgAjAAAElAWwAAoAEwBQsg0UFRESObANELAH0ACwAEVYsAkvG7EJHz5ZsABFWLAHLxuxBw8+WbIBCQcREjmwAS+wBxCyDQEKK1gh2Bv0WbABELITAQorWCHYG/RZMDEBFxYWBwYEIyETMwMDBTY2NzYmJwG2/uP9ERD+x/T93f33hFYBEoGuDw5wawODAQHvxND+BbD9CP4SAgKQd2l5BAAAAQBP/+kE9wXIACAAhbIOISIREjkAsABFWLAULxuxFB8+WbAARViwHS8bsR0PPlmyAwEKK1gh2Bv0WbIIFB0REjl8sAgvGLIwCAFdsnIIAV2y4ggBXbJCCAFdsmAIAV2y0AgBXbIACAFxsgcBCitYIdgb9FmwFBCyDQEKK1gh2Bv0WbIRFB0REjmyIB0UERI5MDEBFhYXFjY3BTchNzYmJyYGBwc2ABceAhcWAgIEJyYAJwFDB358lM46/gUkAe4IA4N+irAj9SgBS+uO1HkJBke9/uyn3v79CAHam4gDBdbsAcxkn7YEBJqUAeYBFAQDfvGYeP5z/tGdAwQBBeUAAAIAMv/nBvkFxwAYACgAg7INKSoREjmwDRCwJNAAsABFWLAILxuxCB8+WbAARViwEC8bsRAfPlmwAEVYsAYvG7EGDz5ZsABFWLAALxuxAA8+WbIKCAYREjl8sAovGLIfCgFxtGAKcAoCXbIEAQorWCHYG/RZsBAQsh4BCitYIdgb9FmwABCyJQEKK1gh2Bv0WTAxBSYAETcjAyMTMwMzNhI3NhcWABcWAgIHBhM3NiYmJyYGAgcGFhcWEjcEL+P+/AG4afb99nKsJ++ub3zYAQEMBjmLZ7LaCQYyd1t+w3kKCoSEreEjFAUBPAEJJ/2jBbD9ceIBVEQsAwT+3vd8/r/+81qcAxhqbblhAwSW/s7nt9IEBQEO9QAC/7AAAATTBbEADgAXAGGyEhgZERI5sBIQsAvQALAARViwDS8bsQ0fPlmwAEVYsAAvG7EADz5ZsABFWLADLxuxAw8+WbITDQAREjmwEy+yAQEKK1gh2Bv0WbIFEwEREjmwDRCyFAEKK1gh2Bv0WTAxIRMhASEBJiY3PgIzBQMBBhYXFxMnIgYC31/+9/6Q/usBsWdYCguX/p4B6f39yg9rc/FZ14atAiD94AJvQcV3jc1rAfpQA+FxhwQBAgACi///ACL/6APcBFACBgBFAAAAAgBD/+YEYQYTABsAKwBishgsLRESObAYELAd0ACwAEVYsBMvG7ETIT5ZsABFWLAGLxuxBg8+WbIAEwYREjmwAC+yFwATERI5shETFxESObIaAAYREjmyHAEKK1gh2Bv0WbAGELIlAQorWCHYG/RZMDEBFhIHBgAnLgI3NzU3EgA3NzY3Mw4CBAYHNhcmBgYHBhcWFhcWNjc3NiYCnrrPEhb+0eCLx1sQAgoxASPnXpMVwQhSmv7Xv0GegE99TQsHBAdiWHWgFQINZwP+BP7s1/f+zgQEjvmWFQNLAVABjjISHWZkgFM5pJeYxAJNjFtKOmRzAwOwoBWLoAAAAwAiAAAEFgQ6AA4AFwAfAI6yGSAhERI5sBkQsA7QsBkQsBHQALAARViwAS8bsQEbPlmwAEVYsAAvG7EADz5ZshgAARESObAYL7KMGAFdtF8YbxgCcbTvGP8YAnG0vxjPGAJdtBwYLBgCcbJaGAFdsg8HCitYIdgb9FmyCA8YERI5sAAQshABCitYIdgb9FmwARCyHwEKK1gh2Bv0WTAxMxMFFhcWBwYHFhYHBgYHAwMXNjY3NiYnJxcyNzYmJycivAGelGKkCQrQVGECBenMzC/0YW8JCkdS8rbUFglNZMsEOgEEK0mqoFEZelaUpgMBzf7zAQNKQTlDA68Bgjo/AwEAAQAYAAADiQQ6AAUAKwCwAEVYsAQvG7EEGz5ZsABFWLACLxuxAg8+WbAEELIAAQorWCHYG/RZMDEBIQMjEyEDZv45mu28ArUDdvyKBDoAAv+F/r4EZAQ6AA4AFABbshIVFhESObASELAE0ACwDC+wAEVYsAQvG7EEGz5ZsABFWLAKLxuxCg8+WbIAAQorWCHYG/RZsAbQsAfQsAwQsAnQsAcQsA/QsBDQsAQQshEBCitYIdgb9FkwMTc2NjcTIQMzAyMTIQMjEwUlEyEDAjFqgR9OAtuakVrsOP1hOPFbAWgBlXb++TY/v2HvqgGB/Ij9/AFC/r4CAwMEAqf+9f70//8AO//qBAIEUQIGAEkAAAAB/60AAAZyBDoAFQCCALAARViwCS8bsQkbPlmwAEVYsA0vG7ENGz5ZsABFWLARLxuxERs+WbAARViwAi8bsQIPPlmwAEVYsAYvG7EGDz5ZsABFWLAULxuxFA8+WbIQEQIREjmwEC+yjxABXbIAAQorWCHYG/RZsATQsggQABESObAQELAL0LITABAREjkwMQEjAyMTIwEhAQMhEzMTMwMzASEBEyED/4NM7Uxz/sL+zwHI6wETpHRK7UpnATkBMP5T+P7oAbP+TQGz/k0CPwH7/lcBqf5XAan98P3WAAABABb/6QO8BFAAKQCjshkqKxESOQCwAEVYsCYvG7EmGz5ZsABFWLAKLxuxCg8+WbIZJgoREjmwGS+07xn/GQJxtB8ZLxkCcbK/GQFxtF8ZbxkCcbS/Gc8ZAl2yjBkBXbJaGQFdshYHCitYIdgb9FmyAxYZERI5sAoQshEBCitYIdgb9FmyDhYRERI5tAMOEw4CXbAmELIfAQorWCHYG/RZsiIZHxESObQMIhwiAl0wMQEGBgcWFgcOAicmJjczBhYzMjY3NicnNxc2Njc2JiMmBgcHNjYXHgIDtgVeZkhFBAV8132w2wTpAmJQV3kLFaW4H5xVZwkHT0RLcw/tDPm4c7BcAxpKdjMhfU9pl1EDAr2XRVZVSIcFAa8BAklEP0cCTUEBlLUCAkqJAAABABkAAARIBDoACQBFALAARViwAC8bsQAbPlmwAEVYsAcvG7EHGz5ZsABFWLACLxuxAg8+WbAARViwBS8bsQUPPlmyBAcCERI5sgkHAhESOTAxATMDIxMBIxMzAwNU9LztfP3y9LztfAQ6+8YCwv0+BDr9PgD//wAZAAAESAXaAiYB+wAAAQcBagCc//MACQCwAC+wDdwwMQAAAQAiAAAEgQQ6AAwAaACwAEVYsAQvG7EEGz5ZsABFWLAILxuxCBs+WbAARViwAi8bsQIPPlmwAEVYsAsvG7ELDz5ZsgYCBBESOXywBi8YtNMG4wYCXbRDBlMGAl2yEwYBcbIBAQorWCHYG/RZsgoBBhESOTAxASMDIxMzAzMBIQEBIQHYfkvtvO1LXgFtATb+HwE0/t0BrP5UBDr+UAGw/e792AAB/7///wRJBDoAEABNsgQREhESOQCwAEVYsAAvG7EAGz5ZsABFWLABLxuxAQ8+WbAARViwCC8bsQgPPlmwABCyAwEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDEBAyMTIQMGBicjNzc2Njc3EwRJu+6a/tpjNcyfUhYkW3MfD2AEOvvGA3b+PObNAckDCJevUgHOAAEAIgAABZoEOgAMAFkAsABFWLABLxuxARs+WbAARViwCy8bsQsbPlmwAEVYsAMvG7EDDz5ZsABFWLAGLxuxBg8+WbAARViwCS8bsQkPPlmyAAsDERI5sgULAxESObIICwMREjkwMQEBIQMjEwEjAwMjEyECrwG9AS687Xr+bKKmgO28ASUBLQMN+8YCuv1GAtr9JgQ6AAEAGQAABEcEOgALAH4AsABFWLAGLxuxBhs+WbAARViwCi8bsQobPlmwAEVYsAAvG7EADz5ZsABFWLAELxuxBA8+WbIJCgAREjmwCS+0vwnPCQJdsr8JAXG0Lwk/CQJysl8JAXK07wn/CQJxtB8JLwkCcbKPCQFdtI8JnwkCcrICAQorWCHYG/RZMDEhIxMhAyMTMwMhEzMDi+5M/mpM7rzuTwGXTu4Btf5LBDr+PQHDAP//ADn/6AQnBFICBgBTAAAAAQAZAAAESAQ6AAcAOACwAEVYsAYvG7EGGz5ZsABFWLAALxuxAA8+WbAARViwBC8bsQQPPlmwBhCyAgEKK1gh2Bv0WTAxISMTIQMjEyEDjO6a/mma7rwDcwN2/IoEOgD////H/mAEDQRSAgYAVAAAAAEAOP/pA+4EUgAcAEuyAB0eERI5ALAARViwES8bsREbPlmwAEVYsAgvG7EIDz5ZsgABCitYIdgb9FmyBBEIERI5shUIERESObARELIYAQorWCHYG/RZMDElFjY3Nw4CJy4CNzc+AhcWFhUjNCYnJgYHAgHoVYMS4AuF0HGLxFoPAxGV7JCw0t5bVougBgetAmdTAWuwYgMCjPeYI53/igQE4bRddgQE9N7+8wABAFMAAAQIBDoABwAxALAARViwBi8bsQYbPlmwAEVYsAIvG7ECDz5ZsAYQsgABCitYIdgb9FmwBNCwBdAwMQEhAyMTITchA+b+rJvtmv6vIgOTA3n8hwN5wf///7X+RQQSBDoCBgBdAAAAAwA9/mAFUQYAACEALAA4AHyyEzk6ERI5sBMQsCnQsBMQsDTQALADL7AARViwAC8bsQAbPlmwAEVYsAcvG7EHGz5ZsABFWLAULxuxFBE+WbAARViwGC8bsRgPPlmwAEVYsBEvG7ERDz5ZsAAQsjYBCitYIdgb9FmwJtCwGBCyMQEKK1gh2Bv0WbAr0DAxARYXEzMDNhcWFgcGBwcOAicmJwMjEwYjIiYnJjc3NhI2ATYnJicmBwMWMzIBBhcWFxY3EyYjJgMCGERFWO1aRkiYnwEBBgUXhLxxT0hS7VI+RpKhAwEGBhqBvwK5CQEFkCMxgycm5v0ECQMKiBg3hCQh1zsEUAIdAc/+LSECAvHRQDgko/ByAwEg/lUBpxnZuDw3K7QBBH79wls52QcCDP03CwFHVzC0BwEIAswLBP6ZAP///7kAAAQTBDoCBgBcAAAAAQAZ/r8ESAQ6AAsAOwCwCC+wAEVYsAAvG7EAGz5ZsABFWLAELxuxBBs+WbAARViwCi8bsQoPPlmyAgEKK1gh2Bv0WbAG0DAxEzMDIRMzAzMDIxMh1e6bAZia7puQbdk4/OoEOvyIA3j8iP39AUEAAAEAcAAABCAEOwASAEiyDhMUERI5ALAARViwCC8bsQgbPlmwAEVYsBEvG7ERGz5ZsABFWLAALxuxAA8+WbIOEQAREjl8sA4vGLIEAQorWCHYG/RZMDEhIxMGIyYmNxMzAwYXFhcWNxMzA2TtRlthws8TNe42BgUMklNyYe0BaxYC3LwBTP6zMCZ5BgMXAg0AAAEAGQAABioEOgALAEgAsABFWLAALxuxABs+WbAARViwAy8bsQMbPlmwAEVYsAcvG7EHGz5ZsABFWLAJLxuxCQ8+WbIBAQorWCHYG/RZsAXQsAbQMDEBAyETMwMhEzMDIRMBw5sBRpvtmgFHmu28+qu8BDr8iAN4/IgDePvGBDoAAQAS/r8GPAQ6AA8ASwCwDC+wAEVYsAAvG7EAGz5ZsABFWLADLxuxAxs+WbAARViwBy8bsQcbPlmwAEVYsA0vG7ENDz5ZsgEBCitYIdgb9FmwBdCwCdAwMQEDIRMzAyETMwMzAyMTIRMBu5sBR5rtmgFHm+yatG3ZOfrjuwQ6/IgDePyIA3j8iP39AUEEOgAAAgBPAAAEpgQ6AAwAFQBesgwWFxESObAMELAN0ACwAEVYsAsvG7ELGz5ZsABFWLAHLxuxBw8+WbIBCwcREjmwAS+wCxCyCQEKK1gh2Bv0WbAHELIPAQorWCHYG/RZsAEQshUBCitYIdgb9FkwMQEXFhYHBgQjIRMhNyEDAxc2Njc2JicCUdawzwkL/vzL/iGa/tEiAhxdPdhcfA0LTEwC4gEEwqGp0QN2xP3l/qMBAl5TTVkEAAADACIAAAXxBDoACgATABcAbbICGBkREjmwAhCwEdCwAhCwFdAAsABFWLAJLxuxCRs+WbAARViwFi8bsRYbPlmwAEVYsAcvG7EHDz5ZsABFWLAULxuxFA8+WbIBBwkREjmwAS+yCwEKK1gh2Bv0WbAHELINAQorWCHYG/RZMDEBFxYWBwYEIyETMwMDFzY2NzYmJwEjEzMBj9awzwkL/vzL/iG87V092Fx8DQtNSwLU7bztAuIBBMKhqdEEOv3l/qMBAl5TTVkE/eIEOgACACIAAAPkBDoACgATAE2yDRQVERI5sA0QsAfQALAARViwCS8bsQkbPlmwAEVYsAcvG7EHDz5ZsgEHCRESObABL7ILAQorWCHYG/RZsAcQsg0BCitYIdgb9FkwMQEXFhYHBgQjIRMzAwMXNjY3NiYnAY/WsM8JC/78y/4hvO1dPdhcfA0LTUsC4gEEwqGp0QQ6/eX+owECXlNNWQQAAAEAI//oA9QEUAAfAHSyACAhERI5ALAARViwCC8bsQgbPlmwAEVYsBEvG7ERDz5ZsAgQsgABCitYIdgb9FmyHAgRERI5fLAcLxiyUxwBXbJAHAFdsgMcABESObIbBworWCHYG/RZsBEQshgBCitYIdgb9FmyFRsYERI5slMVAV0wMQEmBgcHPgIXHgIHBwYCBicmJjcXBhYXFhMFNyE2JgIsVH0Q3wmDznKIvVcPAxKW7o6r0AbfBVdRx1z+rh4BQwhdA4wCaVEBbLBhAQSM+JYbn/7+jQQE4LMBW3YEBgEqAah+kwAAAgAk/+kGEARTABcAJwCLsiYoKRESObAmELAP0ACwAEVYsBYvG7EWGz5ZsABFWLAELxuxBBs+WbAARViwFC8bsRQPPlmwAEVYsA4vG7EODz5ZsgAWFBESObAAL7QfAC8AAnGyvwABcbKPAAFdsl8AAXKyEwEKK1gh2Bv0WbAOELIdAQorWCHYG/RZsAQQsiQBCitYIdgb9FkwMQEzNiQXHgIHBwYCBwYnLgI3BwMjEzMBBhcWFhcWNjc3NCYnJgYHAYG7RwEhwIvEXRACFrSNZHp+xWMIy0/tvO0BTQYDA2Jad6oZB2FgeacZAofb8QQEjP2YFq7+7z8tAwN914IB/jwEOv3RNzxpgAMFwaxhhI8EA8GvAAAC/7YAAAQWBDsADQAWAGGyFBcYERI5sBQQsATQALAARViwAC8bsQAbPlmwAEVYsAEvG7EBDz5ZsABFWLAFLxuxBQ8+WbISAAEREjmwEi+yAwEKK1gh2Bv0WbIHAxIREjmwABCyEwEKK1gh2Bv0WTAxAQMjEyMBIQEmJjc2JDMDBhYXFxMnBgYEFrzsRdP+2v78AU5QTQUKAQjF6wtORPM2y1x/BDr7xgGN/nMBui2WW6HC/pdATgIBATgBAl///wA7/+oEAgYAAiYASQAAAQcARACcAAAAEwCwAEVYsAkvG7EJGz5ZsCHcMDEA//8AO//qBAIFzQImAEkAAAEGAGtpAAAMALAJL7Ax3LAg0DAxAAEADf5HA/kGAAAjAIWyAyQlERI5ALAhL7AARViwBC8bsQQbPlmwAEVYsAsvG7ELET5ZsABFWLAaLxuxGg8+WbafIa8hvyEDXbIvIQFdsg8hAV2yIxohERI5sCMvsB/QshwHCitYIdgb9FmwAdCyAhoEERI5sAsQshABCitYIdgb9FmwBBCyFwEKK1gh2Bv0WTAxASEHNhcWFgcDBgYjJic3FjMyNxM2JyYnJgcDIxMjNzM3MwchAsz+/jOHq5mXE3oYyaVDQh81K38gfAUEDYOFZoftz5kemR3uHgEEBK3qjgQC08D9CbXFAhDBEMIC7yslegMChPz6BK2rqKj//wAYAAADmAXzAiYB9gAAAQcAdwDG//MAEwCwAEVYsAQvG7EEGz5ZsAjcMDEAAAEAO//oA/YEVAAfAGKyGCAhERI5ALAARViwEC8bsRAbPlmwAEVYsAgvG7EIDz5ZsgABCitYIdgb9FmyGhAIERI5fLAaLxiyHAcKK1gh2Bv0WbIDABwREjmwEBCyFwEKK1gh2Bv0WbIUGhcREjkwMSUWNjc3DgInLgI3NxIAFxYWByM0JicmBgclByEGFgHlVoMU3wuE1XGMv1YQAh0BMN6wzgLdXFNoky0BWB7+tw1frQJnUwFrr2QDBIr3mBQBAgE2BgThtGFyBAOMmgGogJMA//8AHP/pA8QEUAIGAFcAAP//AB8AAAIJBdgCBgBNAAD//wAiAAAC4QXGAiYA9AAAAQcAa/9e//kADACwAi+wFdywBNAwMf///wz+RgH+BdgCBgBOAAAAAv+9AAAGRgQ6ABcAHwB5sgogIRESObAKELAZ0ACwAEVYsAAvG7EAGz5ZsABFWLAILxuxCA8+WbAARViwDy8bsQ8PPlmyAgAIERI5sAIvsAAQsgoBCitYIdgb9FmwDxCyEQEKK1gh2Bv0WbAIELIaAQorWCHYG/RZsAIQsh8BCitYIdgb9FkwMQEDFxYWBwYEIyETIQMCBgcjNzc2Njc3EwEDFzY2NzYnBDBB1rLPCQv/AMz+IZr+8Us3yaZkFSVcbx4SYAJ7N9hZfQ0SowQ6/ocBBbeZpcYDdv6r/tXxBckDCJadZQHO/cX+wQECXE+ICgACABkAAAZcBDoAEgAbAIKyARwdERI5sAEQsBPQALAARViwAi8bsQIbPlmwAEVYsBEvG7ERGz5ZsABFWLALLxuxCw8+WbAARViwDy8bsQ8PPlmyARELERI5sAEvsgQRCxESObAEL7ABELINAQorWCHYG/RZsAQQshMBCitYIdgb9FmwCxCyFAEKK1gh2Bv0WTAxASETMwMXFhYHBgQjIRMhAyMTMwEDFzY2NzYmJwF7AZdH7kLWss8JCf7/zf4hU/5qU+687gIhONhdewsKSlECnwGb/ocBBbeZpMcB3f4jBDr9xf7BAQJfTEBNBQAAAQANAAAD+QYAABoAc7IDGxwREjkAsBgvsABFWLAELxuxBBs+WbAARViwES8bsREPPlmwAEVYsAkvG7EJDz5Zsr8YAV2yLxgBXbIPGAFdshoRGBESObAaL7AW0LITBworWCHYG/RZsAHQsgIEERESObAEELIOAQorWCHYG/RZMDEBIQc2FxYWBwMjEzYnJicmBwMjEyM3MzczByEC4f7kLoesmpUTdO12BQMNg4Roh+3Qhx6HHO4fARkEtfKOBALWvf1IArsrJXoDAoT8+gS1qqGhAP//ACIAAASBBfICJgH9AAABBwB3AUT/8gATALAARViwBC8bsQQbPlmwD9wwMQD//wAZAAAESAXzAiYB+wAAAQcARADH//MAEwCwAEVYsAgvG7EIGz5ZsAvcMDEA////tf5FBBIF5wImAF0AAAEGAWpUAAAJALABL7AT3DAxAAABABn+mgRIBDoACwBFALAIL7AARViwAC8bsQAbPlmwAEVYsAMvG7EDGz5ZsABFWLAFLxuxBQ8+WbAARViwCS8bsQkPPlmyAQEKK1gh2Bv0WTAxAQMhEzMDIQMjEyETAcObAZia7rz+vz7uP/67vAQ6/IgDePvG/poBZgQ6AAABAGD/5gcuBbAAIwBgsgYkJRESOQCwAEVYsAAvG7EAHz5ZsABFWLANLxuxDR8+WbAARViwGC8bsRgfPlmwAEVYsAQvG7EEDz5ZsABFWLAJLxuxCQ8+WbIHAAQREjmyFAEKK1gh2Bv0WbAf0DAxAQMGBCcmJicGJyYmNxMzAwYXFhYXFjY3EzMDBhcWFhcWNjcTBy6vHf7vzmygJY7au88VrvevBQMFS0NkiRSv+68FBQdQRV+BFa8FsPv90PcEAldMqQQE+sQEBPv7KitIVwMEg3gEBfv7LStLUQMDf3sEBQAAAQBE/+YGHgQ6ACIAXLIXIyQREjkAsABFWLAALxuxABs+WbAARViwDS8bsQ0bPlmwAEVYsBcvG7EXGz5ZsABFWLAJLxuxCQ8+WbAE0LAEL7IHFwkREjmwCRCyEwEKK1gh2Bv0WbAe0DAxAQMGBicmJicGJyYmNxMzAwcUFhcWNjcTMwMGFxYWFxY2NxMGHnMc8rdbjiKCuqmyE3PtcgQ4OFN0E3PucgQCAkI7T2gQcwQ6/VLE4gQCSkKRBATmtgKv/VBHQ1EDBXNwArD9UCYmQ04BA3ZrArAAAgAjAAAElAWwABIAGwB0shUcHRESObAVELAJ0ACwAEVYsA8vG7EPHz5ZsABFWLAJLxuxCQ8+WbISCQ8REjmwEi+yAAcKK1gh2Bv0WbIDDwkREjmwAy+wABCwC9CwDNCwEhCwDdCwCRCyFQEKK1gh2Bv0WbADELIbAQorWCHYG/RZMDEBIwcXFhYHBgQjIRMjNzM3MwczAQMFNjY3NiYnArHZIv7j/REQ/sf0/d2+ux67Ifci2v7EVgESga4PDnBrBEfEAQHvxND+BEeqv7/9x/4SAgKQd2l5BAACACH//APpBhgAEgAbAHGyFRwdERI5sBUQsAPQALAARViwDy8bsQ8hPlmwAEVYsAkvG7EJDz5ZshIPCRESObASL7IABworWCHYG/RZsgIPCRESObACL7AAELAL0LASELAN0LACELITAQorWCHYG/RZsAkQshQBCitYIdgb9FkwMQEhAxcWFgcGBCchEyM3MxMzAyEBAxc2Njc2JicC4/7nNse51QwN/vTC/h+8qR6oNu02ARr+ckPZYHwLCkZPBDr+yQEBzKm22gQEOqsBM/7N/Vv+ggICcFZMZgUAAQAr/+kG3wXKACYAibIcJygREjkAsABFWLAlLxuxJR8+WbAARViwBC8bsQQfPlmwAEVYsCMvG7EjDz5ZsABFWLAbLxuxGw8+WbIAJSMREjmwAC+yBwQbERI5sAQQsgsBCitYIdgb9FmwABCwDtCwABCyIgEKK1gh2Bv0WbAR0LAbELIVAQorWCHYG/RZshgbBBESOTAxARcSABcWEhcjJiYnJgYHJQchBwYWFwQTNwYAJy4CJyY3BwMjEzMBtKZQAV362PsL9QV5d5XSPAHiIv4rCg19fwEXT/Yn/q7widF4BgQOtXH2/PcDTwEBMgFKBQT++uyciwMFz+EBw2SqwgQLAS0B5P7yBAN+6pJRUgH9dAWwAAABABn/6AWkBFMAJgCVsg0nKBESOQCwAEVYsCYvG7EmGz5ZsABFWLAELxuxBBs+WbAARViwIy8bsSMPPlmwAEVYsB4vG7EeDz5Zsg4eBBESOXywDi8YslIOAV2yQA4BXbAB0LAEELILAQorWCHYG/RZsggOCxESObAOELIPBworWCHYG/RZsB4QshYBCitYIdgb9FmyGRYPERI5sA8QsCHQMDEBMzYkFxYWByM0JicmAyUHIQYXFhcWFxY2NzcOAicmAjcHAyMTMwFzjkUBHMOv0ALdWVbRVgF5Hv6WBQULSiU6WIET4AuI03DF4RKhTu687gJx7fUFBOC1X3QEBv7eAasyMmwwGAECaVEBbLBiAwQBEccB/joEOgAC/64AAASEBbAACwAOAFYAsABFWLAILxuxCB8+WbAARViwAi8bsQIPPlmwAEVYsAYvG7EGDz5ZsABFWLAKLxuxCg8+WbINCAIREjmwDS+yAAEKK1gh2Bv0WbAE0LIOCAIREjkwMQEjAyMTIwMhATMTIwEhAwNOfUrcSmnV/vcC8+/09v5cAUhLAar+VgGq/lYFsPpQAmgB9QAAAv+cAAADuAQ6AAsAEABWALAARViwCC8bsQgbPlmwAEVYsAIvG7ECDz5ZsABFWLAGLxuxBg8+WbAARViwCi8bsQoPPlmyDQIIERI5sA0vsgEBCitYIdgb9FmwBNCyDwgCERI5MDEBIwMjEyMDIwEzEyMBMwMnBwKfYzC+MVKW+wJY4ePi/rPwNgUuARf+6QEX/ukEOvvGAcQBE1RtAAACAD4AAAaNBbAAEwAWAHwAsABFWLACLxuxAh8+WbAARViwEi8bsRIfPlmwAEVYsAQvG7EEDz5ZsABFWLAILxuxCA8+WbAARViwDC8bsQwPPlmwAEVYsBAvG7EQDz5ZshUCBBESObAVL7AA0LAVELIGAQorWCHYG/RZsArQsAYQsA7QshYCBBESOTAxASEBMxMjAyMDIxMjAyETIQMjEzMBIQMBnwFYAbLw9PZAfUrdSmjV/vbe/utL9v32AcIBSEwCZwNJ+lABqv5WAar+VgGr/lUFsPy4AfYAAAIAMAAABX0EOgATABgAfwCwAEVYsAIvG7ECGz5ZsABFWLASLxuxEhs+WbAARViwBC8bsQQPPlmwAEVYsAgvG7EIDz5ZsABFWLAMLxuxDA8+WbAARViwEC8bsRAPPlmyABASERI5sAAvsAHQsg4BCitYIdgb9FmwC9CwB9CwARCwFNCwFdCyFxIEERI5MDEBMwEzEyMDIwMjEyMDIxMjAyMTMwEzAycHAWvwAV7h4+c2XTK+MVKW+5uuMe277gF18DYFLgHEAnb7xgEX/ukBF/7pARf+6QQ6/YoBE1RtAAIAFAAABmQFsAAbAB4Ad7IMHyAREjmwDBCwHNAAsABFWLAaLxuxGh8+WbAARViwBC8bsQQPPlmwAEVYsAwvG7EMDz5ZsABFWLATLxuxEw8+WbIYGgQREjmwGC+wANCwGBCyDwEKK1gh2Bv0WbAJ0LIcGgQREjmwGhCyHQEKK1gh2Bv0WTAxARYWBwMjEzYmJycHAyMTJyYGBwMjEzYkJRcDIQEBIQR52dQXOfY5EFZ8aAxs9mlshZ8WOvY5IAEbAQER9gTA/SQBLP4+AyQE79H+oAFheX0FAw/9sAJcAgFzhv6aAWDk4wIBAoj9jAGnAAIAFgAABSoEOgAbAB4Ac7IcHyAREjmwHBCwFNAAsABFWLAFLxuxBRs+WbAARViwAC8bsQAPPlmwAEVYsAsvG7ELDz5ZsABFWLAULxuxFA8+WbAE0LAEL7AH0LAEELISAQorWCHYG/RZsBfQshwFABESObAFELIdAQorWCHYG/RZMDEzNzY2NwMhARYWBwcjNzYnJicnBwMjEyciBgcHARMhFhod59CxA9f+lKSfFBnuGgYBBpokBk3sTiZyhBUcAd3C/uCvzNcOAdr+IBDjvqmqNC2NDQII/mEBpgFzfrYCawEgAAIANQAACJkFsAAhACQAl7IdJSYREjmwHRCwJNAAsABFWLAHLxuxBx8+WbAARViwCy8bsQsfPlmwAEVYsAAvG7EADz5ZsABFWLAFLxuxBQ8+WbAARViwES8bsREPPlmwAEVYsBovG7EaDz5ZsgkHABESObAJL7IdAQorWCHYG/RZsAPQsAkQsA3QsB0QsBfQsiIHABESObALELIjAQorWCHYG/RZMDEhEzY3BQMjEzMDIQMhARYWBwMjEzYnJicnBwMjEycmBgcDAQEhAkc7F1b+p2v2/fZwAx3+BML+E9nUFzn2OgcGErJnC2z2aW6EnxY7AoABK/49AV+fawP9mgWw/XsChf10BO/R/qABYT0uigYDDf2uAlwCAXOG/poDOgGpAAACACIAAActBDoAIQAkAJmyGyUmERI5sBsQsCTQALAARViwBy8bsQcbPlmwAEVYsAsvG7ELGz5ZsABFWLAALxuxAA8+WbAARViwBS8bsQUPPlmwAEVYsBEvG7ERDz5ZsABFWLAaLxuxGg8+WbAFELAJ0LAJL7AK0LIcAQorWCHYG/RZsATQsAoQsA3QsBwQsBfQsiILABESObALELIjAQorWCHYG/RZMDEhNzY3BQMjEzMDIQMhARYWBwcjNzYnJicnBwMjEyMGBgcHARMhAhgcGk3+vkrtvO1SApa5A9f+laGgFBntGgcCB5ojBk3sTitzgRQaAd3C/uCpnmQD/lgEOv4nAdn+IBDiv6mqNSyRCQII/mEBpgF2haoCawEgAAAC/6r+QgQxB4wAKgAzAIuyCTQ1ERI5sAkQsDPQALAbL7AwL7AARViwCS8bsQkfPlmwAEVYsBUvG7EVDz5ZsgAJFRESObAAL7AJELIGAQorWCHYG/RZsAAQsigBCitYIdgb9FmyDygAERI5sBUQsiIBCitYIdgb9FmyDzABXbAwELAy0LAyL7IPMgFdsiswMhESObAt0LAtLzAxATI2NzYmJyU3Fx4CBwYFFhYHBgQnJwYHBhcHJiY3NjYzFzI2NzYmJyc3ATc3FQEjAzUXAaR9pA4LZWv+3iP4h9JqCBH+9mZoBw/+1ds1jBEQh1t0hQYFxqo0cqkPDniAmSMBlKrQ/s2T6cQDTXNqVmMFAccBAVypdOFtLKtwye8CAQVpaD6VKrlxhJcBgWxreQUBxwOgmQQQ/uwBFRAEAAL/tf5KA8UGIAAlAC4Av7IrLzAREjmwKxCwBNAAsCsvsABFWLAHLxuxBxs+WbAARViwFy8bsRcRPlmwAEVYsBEvG7ERDz5ZsgARBxESObAAL7S/AM8AAl20XwBvAAJxtC8APwACcrTvAP8AAnG0HwAvAAJxso8AAV2yvwABcrAHELIEAQorWCHYG/RZsAAQsiMHCitYIdgb9FmyDCMAERI5sBEQsh0BCitYIdgb9FmwKxCwLdCwLS+0Dy0fLQJdsiYrLRESObAo0LAoLzAxATY3NichNxcWFgcGBxYHBgQjIwYHBhcHJiY3NjYzFzI2NzYnIzcBNzcXASMDNRcBhOQXEsL+3iHvzukHCtGsBAX+89YlkxEQf1loggQFv6EwaI0NFOahHgFPqtAB/syT6cMCbgaRdQe5AQGajZ1cRpqerwVqYUKPLrFtf48BUEaGB6kDE5kEEf7tARQRBAD//wB1AAAF1wWwAgYBmAAA//8AP/4iBYoEPAIGAbgAAAADAGL/5wUaBcgAEgAbACQAcLIUJSYREjmwFBCwCdCwFBCwHdAAsABFWLAKLxuxCh8+WbAARViwAC8bsQAPPlmwChCyEwEKK1gh2Bv0WbIWCgAREjl8sBYvGLJzFgFdsmAWAV2wABCyHAEKK1gh2Bv0WbAWELIgBworWCHYG/RZMDEFLgInJhI3NiQXFgAXFgICBwYDJgYHJTY3NiYBFjY3BQYVFBYCUI/WeggHOEVgATO92AEBDAY5i2eyGpnaPgKoBwEDhP68mtU+/VgGhhQDg/idcwFDh7vJBAT+3vd8/r/+81qcBQwF3vIBMDWnuvvMBdvvATAzp7YAAwA2/+cEJgRSABEAFwAdAGqyGB4fERI5sBgQsAzQsBgQsBLQALAARViwBC8bsQQbPlmwAEVYsA0vG7ENDz5ZshIBCitYIdgb9FmyGgQNERI5fLAaLxiyUhoBXbJAGgFdshUHCitYIdgb9FmwBBCyGAEKK1gh2Bv0WTAxEzYSNhceAgcHBgIGJyYCNzcBFhMFBhYTJgMlNiZGEpvzk4vHWxACFJzzksjhCgMBp9Jh/g4IZeXNZAHxCGgCIJ4BBY8EBI78lhaf/v6MBAUBGdoo/qIHASQBg5YC3Af+4AF9mAABAKgAAAVeBcYADwBGsgIQERESOQCwAEVYsAYvG7EGHz5ZsABFWLAPLxuxDx8+WbAARViwDC8bsQwPPlmyAQwPERI5sAYQsggBCitYIdgb9FkwMQEXNwE2NhcXByciBwEjAzMCKgQyAVdLtHYyGRFbPv3i7uf+AYBjdgLtspQCAdcBgfuUBbAAAQB3AAAERARSABAARrINERIREjkAsABFWLAFLxuxBRs+WbAARViwEC8bsRAbPlmwAEVYsA0vG7ENDz5ZsgENEBESObAFELIKAQorWCHYG/RZMDEBFzcTEjMyFwcmByIHASMDMwGpAiS/d884OCcYEks3/nvOp+cBbmBgAcIBIhjBCgJv/O4EOwD//wCoAAAFXgb8AiYCNwAAAQcBdQRXAQ4AFgCwAEVYsA8vG7EPHz5ZsBHcsBXQMDH//wB3AAAERAXQAiYCOAAAAQcBdQPC/+IAFgCwAEVYsA8vG7EPGz5ZsBLcsBbQMDH//wBr/kUJeAXIACYAMwAAAAcAXQVmAAD//wA5/kUIhwRSACYAUwAAAAcAXQR1AAAAAgBm/3UFFAYvABQAJgBVshknKBESObAZELAA0ACwAEVYsA0vG7ENHz5ZsABFWLADLxuxAw8+WbAA0LANELAK0LANELIXAQorWCHYG/RZsBrQsAMQsiABCitYIdgb9FmwI9AwMQUHJzcmAic3EgAlNxcHFhIXFgcCABMmJwcnNwYCAxUWFzcXByQTNgKkHMEcscgEARIBTQEQGcEZr8cFAhw0/saVBZwVwhalsg8MmBXCFgEPPhgMfwGAJAEe4kwBbgHDJnIBdCT+4eZ4lv7n/qoDofBAYgFkNf6y/sVC4z1iAWJXAZS2AAIAOP+HBDUEtQATACMAWLIAJCUREjmwFNAAsABFWLAALxuxABs+WbAARViwCi8bsQoPPlmwABCwA9CwChCwDdCwChCyFAEKK1gh2Bv0WbAAELIcAQorWCHYG/RZsBnQsBQQsCHQMDEBNxcHFhIHBwYABwcnNyYCNzc2EhM2Njc2JwcnNwYGBwYXNxcCNRm0GaamFQIc/vrIGLQYpaMVByP/1G99BgRuFbQWbXkHB2wXtARGbwFvJ/7bzxbg/tscbAFuJwEjyzHaARL8ki3ss7g8YQFjMOextj9pAQADAGL/5QbcB0QAMQBGAE8Ar7I9UFEREjmwPRCwCdCwPRCwR9AAsABFWLAULxuxFB8+WbAARViwBy8bsQcPPlmwFBCwANCwAC+yCgcUERI5sAcQsAzQsBQQshUBCitYIdgb9FmwBxCyKQEKK1gh2Bv0WbAe0LIiFAcREjmwFRCwMdCwFBCwPtCwPi+wM9CwMy+yMggKK1gh2Bv0WbAzELA50LA5L7JCCAorWCHYG/RZsD4QsEvQsEsvsE/QsE8vMDEBFhIHAwYAJyYmJwYnLgI3EzYkNwcGBgcDBhcWFhcWNjcTMwMGFxYWFxY2NxM2NSYnEwcjLgMjIgYHByc3NjYXHgMBNjY3NxcHBgcFWL3HF1Ue/u/JZ6MpktB8s1IPVR8BEdUXYYAVVQUBAklEZokUP+8/BQUIVUdefBZWBgSKsQkeO3FxbTczQAkCgwIIgmwwWrVi/e0rJwgSpQ0RngWxCf77zf3t3P7/BAJTSaMGAnnagwIT3voEzAKMgv3sKi5TXwQFhnsBf/58LyxJUQMDiogCFS0upgoB5ogCJy8kODETASZscQIBF0kZ/ooxPiVeAWZvWwADAEv/5QXDBegAMABFAE0Ar7I6Tk8REjmwOhCwCtCwOhCwRtAAsABFWLAVLxuxFRs+WbAARViwDS8bsQ0PPlmwFRCwANCwAC+wDRCwCNCyCw0VERI5sBUQshYBCitYIdgb9FmwDRCyHQEKK1gh2Bv0WbIhFQ0REjmwKNCwFhCwMNCwFRCwPdCwPS+wMtCwMi+yMQgKK1gh2Bv0WbAyELA40LA4L7JBCAorWCHYG/RZsD0QsEnQsEkvsE3QsE0vMDEBHgIHBwYGJyYmJwYnJiY3EzY3NjcHBg8CBhYXFjY3NzMHBhcWFhcWNjcTNzYmJwEHIy4DIyIGBwcnNzY2Fx4DATY3NxcHBgcEa3GeSQ0hHeyyWY0jgLCorhQkIYx3rxWpJyQEBDc2UG8RH+YdBAMDRTtHYhEmBAI7OgEDCSE6bXhrNzJACQKEAgiCbDBav1n98EsPEaYNEKAESAZvxHzu0+0FAktElAQE8b4BA9hvXgPDB+X9SEhfAgV3bMfHJiZCUAEDenUBDD9FVQYB6ogCJTIjODETASZscQIBF00V/ohVP14BZW9cAAACAGD/5ActBxEAIwArAIWyBiwtERI5sAYQsCrQALAARViwAC8bsQAfPlmwAEVYsA0vG7ENHz5ZsABFWLAYLxuxGB8+WbAARViwCS8bsQkPPlmwBNCwBC+yBwAJERI5sAkQshQBCitYIdgb9FmwH9CwABCwKtCwKi+wKNCwKC+yJggKK1gh2Bv0WbAoELAr0LArLzAxAQMGBCcmJicGJyYmNxMzAwYXFhYXFjY3EzMDBhcWFhcWNjcTJTchByEHIzcHLa8d/u7NaaImj9m/yhSu968FAwVLQ2SJFK/7rwUFB1BFXYMVr/x9FgM9Ff6xF7EXBbD7/dD5BAJXTqoEBvvCBAT7+yorSlUDBIN4BAX7+y0rS1EDA358BAXnenp/fwACAET/5gYeBbEAIgAqAImyFyssERI5sBcQsCnQALAARViwAC8bsQAbPlmwAEVYsA0vG7ENGz5ZsABFWLAXLxuxFxs+WbAARViwBC8bsQQPPlmwAEVYsAkvG7EJDz5ZsgcXBBESObITAQorWCHYG/RZsB7QsBcQsCnQsCkvsCrQsCovsiQICitYIdgb9FmwKhCwJ9CwJy8wMQEDBgYnJiYnBicmJjcTMwMHFBYXFjY3EzMDBhcWFhcWNjcTJTchByEHIzcGHnMc87ZbjiKDuamyE3PtcgQ4OFNzE3TucgQCAkI7T2gQc/ziFgMhE/6+F7EWBDr9UsbgBAJKQpIEBOm0Aq/9UEdDUQMDcGsCtv1QJiZDTgEDdmsCsPx7e39/AAABAFb+jATqBcoAGQBTsgAaGxESOQCwAEVYsAovG7EKHz5ZsABFWLAALxuxABc+WbAARViwAi8bsQIPPlmwChCwDtCwChCyEAEKK1gh2Bv0WbACELIYAQorWCHYG/RZMDEBIxMmJgI3ExIAFxYSBycSJyYGBwMHBhYXFwJ69UV9rUoTKi0BXfLk9wz2EviPyyAtAwN0aqf+jAFoGqkBApIBDAEfAVQFBP735gEBIAcD4sj+4UCRqQQBAAABAEX+iQP8BFMAGQBTsgAaGxESOQCwAEVYsAovG7EKGz5ZsABFWLAALxuxABc+WbAARViwAi8bsQIPPlmwChCwDtCwChCyEQEKK1gh2Bv0WbACELIYAQorWCHYG/RZMDEBIxMmAjc3Ejc2FxYWByc2JicmBgcHBhYXFwIk7UWbnBYBHZmZ1qzPBt8FVlJxoxYKB1ZYnf6JAWwnASDMCwEGnpwFBOOyAVt3BAXCo2p8kwQCAAABADgAAAS6BT4AEwATALAOL7AARViwBC8bsQQPPlkwMQEXBycDIwEnNxcBJzcXEzcBBQcnAjD7VP3puQEm+1T+AQv9Vv3tt/7VAQBZ+QG4rHWq/r8Bl6t1qwFzq3erAUcB/mKrdKkAAAH85gSi/+IF/QAHABEAsAAvsgMGCitYIdgb9FkwMQEHJzchNxcH/aoWrisCEROtJwUgfgHubAHcAAAB/Q4FFv/zBhQAEgArALAEL7AI0LAIL7IAAgorWCHYG/RZsAQQsA3QsA0vsg4CCitYIdgb9FkwMQMWFgcHJzc2JyYGBAcHNzI+AuRkcwQDggIGVipT/vNBQwtKV9FhBhMCbGcoARRdBAIQYgUBhxNNFwAB/isFFf8CBmAABQAMALABL7AF0LAFLzAxATczBxcH/isWuR4mUAXneaRsOwAAAf48BRf/WwZgAAUADACwAy+wANCwAC8wMQEnNzczB/6KTk8XuRkFF05yiY8AAAj6Qf7CAZ4FsQALABcAIwAvADsARwBTAF8AegCwPy+wSy+wVy+wMy+wAEVYsAMvG7EDHz5ZsgkJCitYIdgb9FmwPxCwD9CwPxCyRQkKK1gh2Bv0WbAV0LBLELAb0LBLELJRCQorWCHYG/RZsCHQsFcQsCfQsFcQsl0JCitYIdgb9FmwLdCwMxCyOQkKK1gh2Bv0WTAxATY2FzIWFSc2IyYHATY2MxYWFyc2IyIHAzY2FxYWFyc2IyYHATY2FxYWFyc2IyYHATY2FxYWFyc2IyYHATY2FzIWFSc2IyIHATY2FxYWFyc2IyYHAzY2FxYWFyc2IyYH/Z0Ib1tXbWsFUFUbAZ0Ib1pZawJsBVBSHRIIbltYagJrBVBTHv56CHFXWGoCawVQUh79MAhwW1hqAmsFUFMe/kIIcFtXbWsFT1Qd/o8IbltYagJrBVBTHicIb1pYawJsBVBSHgTzWGYBaVYBZgJm/upXZgFmWAFmZP4HWGYBAWZXAWYCZv33WWYCAWZXAWYCZv7jWWUBAWdXAWYCZgUZWWUBaVYBZmT+B1hmAQFmVwFmAmb991hmAQFmVwFmAmYAAAj6b/5jAXMFxgAEAAkADgATABgAHQAiACcALwCwIS+wFi+wEi+wCy+wGy+wJi+wAEVYsAcvG7EHHz5ZsABFWLACLxuxAhE+WTAxBRcDIxMTJxMzAwE3BQclBQclNwUBNyUXBQEHBSclEycDNxMBFxMHA/3kDqtmfaQOqmZ9AakKATkQ/sD7jwr+xxEBPwPOAwFKP/7Q/GYD/rZAATJtEV9BlgKxEV9DlDoT/rABYAShEQFR/qH+EQqAWkQ8CoBaRAGuEphOvvyNE5hPvwLkAQFTO/7Q/OYB/q49ATAA//8AJ/5+BXwHJAImAdsAAAAnAWoBVwE9AQcAEARU/8YAEwCwAEVYsAgvG7EIHz5ZsA3cMDEA//8AGf5+BHYF2gImAfsAAAAnAWoAnP/zAQcAEANi/8YAEwCwAEVYsAgvG7EIGz5ZsA3cMDEAAAIAIwAABJQFsAASABsAdLIVHB0REjmwFRCwCdAAsABFWLAPLxuxDx8+WbAARViwCS8bsQkPPlmyEgkPERI5sBIvsgAHCitYIdgb9FmyAw8JERI5sAMvsAAQsAvQsAzQsBIQsA3QsAkQshUBCitYIdgb9FmwAxCyGwEKK1gh2Bv0WTAxASMHFxYWBwYEIyETIzczNzMHMwEDBTY2NzYmJwKx2SL+4/0REP7H9P3dvrseuyH3Itr+xFYBEoGuDw5wawRHxAEB78TQ/gRHqr+//cf+EgICkHdpeQQAAgAh//wD6QZiABIAGwB0shUcHRESObAVELAD0ACwAEVYsA0vG7ENHz5ZsABFWLARLxuxER8+WbAARViwCS8bsQkPPlmwERCyAAcKK1gh2Bv0WbICDQkREjmwAi+wABCwC9CwDNCwAhCyEwEKK1gh2Bv0WbAJELIUAQorWCHYG/RZMDEBIQMXFhYHBgQnIRMjNzM3MwchAQMXNjY3NiYnAwb+51nHudUMDf70wv4f36keqCDtHwEZ/k9D2WB8CwpGTwUF/f4BAcypttoEBQWrsrL8kP6CAgJwVkxmBQAAAgAnAAAFBQWwAA4AGwBNsgQcHRESObAEELAX0ACwAEVYsAMvG7EDHz5ZsABFWLABLxuxAQ8+WbIWAwEREjmwFi+yAAEKK1gh2Bv0WbADELIUAQorWCHYG/RZMDEBAyMTBTIEBwYHFwcnBiMBNjc2JiclAyE2Nyc3AXxe9/0B9+YBBBMTlF9xZ4KrARssCxJxbf7MWAEZR05YcgId/eMFsAH7zMOBjVqWNgFDRENuigQB/gQCF4hZAAL/x/5gBA8EUgAVACYAbrIFJygREjmwBRCwH9AAsABFWLAOLxuxDhs+WbAARViwCy8bsQsbPlmwAEVYsAgvG7EIET5ZsABFWLAFLxuxBQ8+WbIHDgUREjmyDA4FERI5sA4QshkBCitYIdgb9FmwBRCyHgEKK1gh2Bv0WTAxJRcHJwYnJicDIwE3BzYXFhYXFgcHBgMmJicmBwMWFzI3JzcXNjc2A1RRcU5jZqViYe4BBNkSfKycsQYCBwUjwQJcVYViVS6EO0lRc0Q4EgqCgFl4NgICc/3+BdoBcIcEBNzEQD0k7wGDa34CBH/+HXgCIoNZaGFxSQAAAQAiAAAE3wcQAAkAMrIDCgsREjkAsABFWLAGLxuxBh8+WbAARViwBC8bsQQPPlmwBhCyAgEKK1gh2Bv0WTAxASMHIQMjEyETMwSOBwH9bNn3/QKdPeYE7Qn7HAWwAWAAAQARAAADzAVzAAcAKwCwAEVYsAQvG7EEGz5ZsABFWLACLxuxAg8+WbAEELIAAQorWCHYG/RZMDEBIQMjEyETMwN0/iWa7rwB3DfsA3b8igQ6ATkAAf/8AAAErAWwAA0ASQCwAEVYsAgvG7EIHz5ZsABFWLACLxuxAg8+WbINCAIREjmwDS+yAAcKK1gh2Bv0WbAE0LANELAG0LAIELIKAQorWCHYG/RZMDEBIwMjEyM3MxMhByEDMwKH73T2dKYepWsDgiT9dUfvAp/9YQKfqgJnzP5lAAH/ywAAA4kEOgANAEkAsABFWLAILxuxCBs+WbAARViwAi8bsQIPPlmyDQgCERI5sA0vsgAHCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASEDIxMjNzMTIQchByECVv8AUe1Rnh6dTgK1I/45LAEBAdH+LwHRqgG/xPsAAAEALv7EBKwFsAAXAFuyAxgZERI5ALAKL7AARViwFi8bsRYfPlmwAEVYsBQvG7EUDz5ZsBYQsgABCitYIdgb9FmyAxYUERI5sAMvsAoQsgsHCitYIdgb9FmwAxCyEgEKK1gh2Bv0WTAxASEDMxYWEgcCAAc3NhM2JyYmJyMDIxMhBIj9dUmYqe5rERv+zvwS70cgDQ2Gd7Rt9vwDggTk/l4Ej/79qf77/swGuwYBF4BxbnkE/YgFsAABABH+3wOCBDoAFQBKsg8WFxESOQCwCi+wAEVYsBQvG7EUGz5ZsABFWLASLxuxEg8+WbAUELIAAQorWCHYG/RZsgMUEhESObADL7IQAQorWCHYG/RZMDEBIQcXHgIHBgIHJzY3NiYnJwMjEyEDX/46KECP2WkND/O0QuseDnV1XE/uvAK1A3blAQN51oij/vwws1HUeZEEAf46BDoA////pf6aB+AFsAImAdkAAAAHA/0GgwAA////rf6aBnIEOgImAfkAAAAHA/0FPAAA//8AHv46BKgFxQImAdoAAAAHA/0Bdf+g//8AFv47A7wEUAImAfoAAAAHA/0BH/+h//8ALv6aBXsFsAImA8EAAAAHA/0EDwAA//8AIv6aBIEEOgImAf0AAAAHA/0DWQAAAAEAIwAABYMFsAAUAGEAsABFWLAALxuxAB8+WbAARViwDC8bsQwfPlmwAEVYsAIvG7ECDz5ZsABFWLAKLxuxCg8+WbIPCgwREjmwDy+ynw8BXbIIAQorWCHYG/RZsgEIDxESObAF0LAPELAS0DAxCQIhAycHIzcjAyMTMwMzNzMDMwEFg/4IARX+1rZBLp8pVWz3/fdrVC2gMzIBfwWw/U79AgJtAerp/ZMFsP2a/v8AAmgAAAEAIQAABM0EOgAUAFwAsABFWLANLxuxDRs+WbAARViwFC8bsRQbPlmwAEVYsAovG7EKDz5ZsABFWLADLxuxAw8+WbIOCg0REjmwDi+yCQEKK1gh2Bv0WbIBCQ4REjmwBdCwDhCwEtAwMQEBEyEDJwcjNyMDIxMzAzM3MwczAQTN/mrl/uCGLySYIFNL7LzsS1IkmCkiARYEOv3x/dUBrAGzsv5UBDr+UMfJAbIAAAEANwAABY8FsAAUAG4AsABFWLAELxuxBB8+WbAARViwEi8bsRIfPlmwAEVYsAsvG7ELDz5ZsABFWLAILxuxCA8+WbITEgsREjmwEy+wENCyDQcKK1gh2Bv0WbAB0LICCxIREjmwAi+yCgEKK1gh2Bv0WbIGCgIREjkwMQEjBzMBIQEBIQEjAyMTIzczNzMHMwLCzip9AgoBPv2YAYb+6P69rmz2vMcexiP2I88EP/MCZP07/RUCcP2QBD+qx8cAAAEAGQAABFkGAAAUAGoAsBIvsABFWLAELxuxBBs+WbAARViwCy8bsQsPPlmwAEVYsAgvG7EIDz5ZshMSCxESObATL7IBBworWCHYG/RZsgILBBESObACL7IKAQorWCHYG/RZsgYKAhESObABELAN0LATELAQ0DAxASMDMwEhAQEhAyMDIxMjNzM3MwczAqS+Xl0BTwEl/kkBGP793nJS7dLhHuEb7Bu+BLv94QGe/gX9wQHZ/icEu6qbmwAAAQCkAAAG4wWwAA4AYQCwAEVYsAYvG7EGHz5ZsABFWLAKLxuxCh8+WbAARViwAi8bsQIPPlmwAEVYsA0vG7ENDz5ZsggGAhESObAIL7IBAQorWCHYG/RZsAYQsgQBCitYIdgb9FmyDAEIERI5MDEBIwMjEyE3IQMzASEBASEDpq9s9tr+NSMCwGp9AgsBPv2XAYb+6AJw/ZAE7MT9nAJk/Tv9FQABAGwAAAW7BDoADgBrALAARViwBi8bsQYbPlmwAEVYsAovG7EKGz5ZsABFWLACLxuxAg8+WbAARViwDS8bsQ0PPlmyCQoCERI5sAkvsi8JAXGyjAkBXbIAAQorWCHYG/RZsAYQsgQBCitYIdgb9FmyDAAJERI5MDEBIwMjEyE3IQMzASEBASEDEX5K7Zr+diICd0xfAW0BNv4eATT+3gGs/lQDdsT+UAGw/e392f//ACf+mgWHBbACJgAsAAAABwP9BGkAAP//ABn+mgRpBDoCJgIAAAAABwP9A2sAAAABACcAAAffBbAADQBdALAARViwAi8bsQIfPlmwAEVYsAwvG7EMHz5ZsABFWLAGLxuxBg8+WbAARViwCi8bsQoPPlmyAQIGERI5sAEvsAIQsgQBCitYIdgb9FmwARCyCAEKK1gh2Bv0WTAxASETIQchAyMTIQMjEzMBsQJ2aQNPIv2o2/Zw/Ypw9/33A1ICXsP7EwKH/XkFsAAAAQARAAAFkgQ6AA0AZgCwAEVYsAIvG7ECGz5ZsABFWLAMLxuxDBs+WbAARViwBi8bsQYPPlmwAEVYsAovG7EKDz5ZsgEMBhESOXywAS8YtEABUAECXbACELIEAQorWCHYG/RZsAEQsggBCitYIdgb9FkwMQEhEyEHIQMjEyEDIxMzAWwBl04CQSP+rprtTP5pTO687gJ3AcPE/IoBtf5LBDoAAQAu/sIHhgWwABkAaLIUGhsREjkAsAgvsABFWLAYLxuxGB8+WbAARViwEi8bsRIPPlmwAEVYsBYvG7EWDz5ZsgEYEhESObABL7AIELIJBworWCHYG/RZsAEQshABCitYIdgb9FmwGBCyFAEKK1gh2Bv0WTAxATMWFhIHAgAHNzYTNicmJicjAyMTIQMjEyEFFm6p7msRG/7O/BLvRyANDYZ3im322f2U2fb8BFkDQASP/v2p/vv+zAa7BgEXgHFueQT9igTk+xwFsAAAAQAR/uMGUgQ6ABcAV7IQGBkREjkAsAcvsABFWLAWLxuxFhs+WbAARViwEC8bsRAPPlmwAEVYsBQvG7EUDz5ZsgEWEBESObABL7IOAQorWCHYG/RZsBYQshIBCitYIdgb9FkwMQEXFgAHBgIHJzY2NzYmJycDIxMhAyMTIQP2Ye4BDRMP9LNCeYQMD39/jVDtmf5pmu68A3MClAEC/vzUpv8AMLIqmGN4kwQB/jYDdvyKBDoAAgBl/+gF2QXHACsAOgCMshk7PBESObAZELA60ACwAEVYsCAvG7EgHz5ZsABFWLAOLxuxDh8+WbAARViwAC8bsQAPPlmwAEVYsAQvG7EEDz5ZsgIEIBESObACL7AOELIPAQorWCHYG/RZsAQQshcBCitYIdgb9FmwABCyKwEKK1gh2Bv0WbACELAv0LAgELI2AQorWCHYG/RZMDEFJicGJy4CJyY3NxIANwcGBgIGFxYWFzI3JhM3NhI2FxYWFxcWBwcCBxYXARYWFzYTNzY1NCcmAwcGBUrSpKuikOmQEAkMGi4BOOAYb5o/CQYMmX8xMqUlIBiSxnaRtRMEAQciMdtPaf4AA0U+rSwiCn+rNiQJFwdBSQQCf+qWV1arASsBUgXUAs7+iHg8jqcDCPABFtGkAQh9AwTRtTdCPdr+2sIOAgGkWpo5jQEA4lMyzgcI/sbvPQAAAgBL/+oEkgRSACcAMgCMshszNBESObAbELAp0ACwAEVYsB0vG7EdGz5ZsABFWLAMLxuxDBs+WbAARViwAC8bsQAPPlmwAEVYsAQvG7EEDz5ZsgIEHRESObACL7AMELINAQorWCHYG/RZsAQQshQBCitYIdgb9FmwABCyJwMKK1gh2Bv0WbACELAq0LAdELIwAQorWCHYG/RZMDEFJicGJyYmAjc3NhI3BwYHBxUWFhczNyY3Nz4CFxYWFxYHBwYHFhcBBhc2PwI0JyYHBE2zh4mBjtBgEQca870WlyYOBWdbFxZfFhMSbZpae5IGAgURIZ45Yf5pEV9rFw8GS28dFAQ0OgICmgEImDvcAQsGyhP+eE1vhQMCqcaOesRcAwTBnjQvftWWCwIBjqdwZaSBV5kDBvYA//8AZf4+BQ0FxwImACcAAAAHA/0BuP+k//8AOP4+A+4EUgImAEcAAAAHA/0BOv+k//8AnP6aBSIFsAImADgAAAAHA/0COwAA//8AU/6aBAgEOgImAgUAAAAHA/0B2AAA//8AoQAABU0FsAIGAD0AAP//AHf+XwQwBDoCBgGjAAAAAQChAAAFTQWwAA4AVrIKDxAREjkAsABFWLAILxuxCB8+WbAARViwCy8bsQsfPlmwAEVYsAIvG7ECDz5ZsgYCCBESObAGL7IFBworWCHYG/RZsAHQsgoIAhESObAGELAO0DAxASMDIxMjNzMBIRMBIQEzA5nPWvhaxB59/vgBBc0BvAEe/e58AgT9/AIEqgMC/VACsPz+AAABAFT+XwQwBDoADgBjsgoPEBESOQCwAEVYsAgvG7EIGz5ZsABFWLALLxuxCxs+WbAARViwAi8bsQIRPlmwAEVYsAAvG7EADz5ZsABFWLAELxuxBA8+WbIGBworWCHYG/RZsgoLABESObAN0LAO0DAxBSMDIxMjNzMDMxMBMwEzAt/VSe1IyB6inexmAWn+/iilAf5gAaCqA5H9BAL8/G/////D/poFRwWwAiYAPAAAAAcD/QPAAAD///+5/poEEwQ6AiYAXAAAAAcD/QLNAAAAAQCd/qEGbgWwAA8ATwCwDS+wAEVYsAgvG7EIHz5ZsABFWLACLxuxAh8+WbAARViwDi8bsQ4PPlmwAhCyAAEKK1gh2Bv0WbAF0LAOELIGAQorWCHYG/RZsArQMDEBITchByEDIRMzAzMDIxMhAfP+qiMDoyP+qrgCbdn22atz4z778ATsxMT73gTm+xz91QFfAAABAFb+vwTYBDoADwBLALANL7AARViwAy8bsQMbPlmwAEVYsA8vG7EPDz5ZsAMQsgQBCitYIdgb9FmwANCwDxCyBgEKK1gh2Bv0WbADELAI0LAGELAK0DAxASM3IQcjAyETMwMzAyMTIQFE7iICsCPUeAGXm+2aj23YOPzqA3fDw/1LA3j8iP39AUEA//8Axf6aBWoFsAImAeoAAAAHA/0EPQAA//8AcP6aBDoEOwImAgoAAAAHA/0DPAAAAAEAuQAABVwFsAAYAE+yBRkaERI5ALAARViwAC8bsQAfPlmwAEVYsAsvG7ELHz5ZsABFWLAOLxuxDg8+WbIFDgAREjmwBS+wCNCwBRCyFAEKK1gh2Bv0WbAR0DAxAQMGFxYXEzMDNjcTMwMjEwYHByM3JiY3EwISSwcFDKk7nzhecHv3/fdrUX8uoC/Y0xdLBbD+NToujREBK/7bCxgCqPpQAj0WDOznDPbPAckAAAEAhQAABDQEOwAVAE+yBBYXERI5ALAARViwCi8bsQobPlmwAEVYsBQvG7EUGz5ZsABFWLAALxuxAA8+WbIPFAAREjmwDy+yBgEKK1gh2Bv0WbAD0LAPELAS0DAxISMTBwcjNyYmNxMzAwcGFxMzAzcTMwN57kV1HaAfnZsSNuw4BANZNaA1dGDtAWoTi40X26QBTP6yQGsiAQv+7hQCDQABAOcAAAWMBbAAEABGsgIREhESOQCwAEVYsAEvG7EBHz5ZsABFWLAALxuxAA8+WbAARViwCS8bsQkPPlmyBQkBERI5sAUvsg4BCitYIdgb9FkwMTMTMwM2FxYWBwMjEzYmJAcD5/32a5qt5vAZTPZMEGD++s58BbD9wiwEAvPc/jcByn+DBir9WP//AA0AAAP5BgACBgBMAAAAAgBi/+oFwQXIACEALABkshwtLhESObAcELAr0ACwAEVYsBAvG7EQHz5ZsABFWLAALxuxAA8+WbIjABAREjmwIy+yFgEKK1gh2Bv0WbAF0LAjELAM0LAAELIdAQorWCHYG/RZsBAQsikBCitYIdgb9FkwMQUmJAI3NyYmNxcHFBc2EiQXFhIXFgcHJQcGFxYWFxY3FwYBJTc2JyYmJyYGBwNosP73dB4Ng4EJsAJeJbwBC5/Q6QUBCxb8ugwPCg6bgJ3DHXT98QJbBwsDBXZoh8Q3FgGkASGvSBzTpQFEdCi0ASGZBAT+6upSUYkBOFNKdYgDA0jIUwNlBSFCQnCBAwXGzwAC//T/6gSDBFMAHAAmAJGyDScoERI5sA0QsB7QALAARViwDi8bsQ4bPlmwAEVYsAAvG7EADz5ZsiEOABESObAhL7S/Ic8hAl20XyFvIQJxsr8hAXG0HyEvIQJxso8hAV207yH/IQJxshIHCitYIdgb9FmwBNCwIRCwC9CwABCyFwEKK1gh2Bv0WbIZDgAREjmwDhCyHQEKK1gh2Bv0WTAxBS4CNyYmNxcHBhc2JBcWEgcHIQYWFhcWNxcGBgMmBgcFNzYnJiYCbYvQYRRpaAekBANCSQEas8rJHg/9VwctaEmagHhD4g9ejTUBwQUHBQpYFAOI7Ykgu5QBOF8t0+kFBf7Z6mhRgU0CBYl9YWsDogN9kAIWLixHUv//AGL+QwXBBcgCJgJ+AAAABwP9Asf/qf////T+RgSDBFMCJgJ/AAAABwP9Adf/rP//ADUAAAIoBbACBgAtAAD///+lAAAH4AckAiYB2QAAAQcBagJQAT0ACQCwCS+wGdwwMQD///+tAAAGcgXaAiYB+QAAAQcBagGF//MACQCwCS+wGdwwMQAAAQAj/r0FWwWwABkAXrIYGhsREjkAsBAvsABFWLAELxuxBB8+WbAARViwCC8bsQgfPlmwAEVYsAIvG7ECDz5ZsgcEAhESObAHL7IYAQorWCHYG/RZsgoHGBESObAQELIRAQorWCHYG/RZMDEBIwMjEzMDMwEhARYSBwIABzc2NhInJiYnJwGVCHP3/fdqZAIOATz9t8jIGBv+x/wTcZxIDQ2Ecv0Ccv2OBbD9pAJc/YYf/szj/vf+ygTDBIkBAXdteQQCAAEAIf7nBIAEOgAWAF6yBhcYERI5ALAGL7AARViwES8bsREbPlmwAEVYsBUvG7EVGz5ZsABFWLAPLxuxDw8+WbITDxEREjmwEy+yDgEKK1gh2Bv0WbIADhMREjmwBhCyBwcKK1gh2Bv0WTAxARYWBwYGByc2Njc2JicnAyMTMwMzASECt4+WDg/yskJ1hgwOcm62S+y87EtIAYMBNwJcKuado/cusiWRYm2HBgH+VAQ6/lABsAD////K/n4FfAWwAiYB3gAAAAcAEART/8b///+//n4EeAQ6AiYB/gAAAAcAEANk/8YAAQAu/kYFggWwABQAdLIKFRYREjkAsABFWLAALxuxAB8+WbAARViwAy8bsQMfPlmwAEVYsBIvG7ESDz5ZsABFWLAILxuxCBE+WbICABIREjl8sAIvGLRgAnACAl20MAJAAgJdsAgQsg0BCitYIdgb9FmwAhCyEAEKK1gh2Bv0WTAxAQMhEzMBBgYnIic3FjMyNxMhAyMTAiBuAmpv9/7+GNamN04jNimAIW/9lmv2/AWw/YMCffoXuMkCE8cOxAKR/ZcFsAAAAQAR/kcEPwQ6ABQAbbILFRYREjkAsABFWLAALxuxABs+WbAARViwAy8bsQMbPlmwAEVYsBIvG7ESDz5ZsABFWLAILxuxCBE+WbICAxIREjl8sAIvGLRAAlACAl2wCBCyDQEKK1gh2Bv0WbACELIQAQorWCHYG/RZMDEBAyETMwMGBiMiJzcWMzI3EyEDIxMBu08Bl0/twxjNoztIHj0jgCFS/mlM7rwEOv49AcP7h7TGEsEQwgHp/ksEOv//ACf+fgWHBbACJgAsAAAABwAQBF//xv//ABn+fgR1BDoCJgIAAAAABwAQA2H/xv//AMX+mgVqBbACJgHqAAAABwP9AroAAP//AHD+mgQgBDsCJgIKAAAABwP9AbkAAP//ACf+fgbOBbACJgAxAAAABwAQBZ7/xv//ACL+fgXJBDoCJgH/AAAABwAQBLX/xv//ADUAAAIoBbACBgAtAAD///+kAAAErgcdAiYAJQAAAQcBagEwATYACQCwBC+wDtwwMQD//wAi/+gD9AXnAiYARQAAAQcBagCIAAAACQCwGC+wL9wwMQD///+kAAAErgcDAiYAJQAAAQcAawEoATYADACwBC+wHNywC9AwMf//ACL/6AQDBc0CJgBFAAABBwBrAIAAAAAMALAYL7A93LAs0DAx////hwAAB3gFsAIGAIkAAP//AA//6AZwBFICBgCpAAD//wAnAAAEugckAiYAKQAAAQcBagD4AT0ACQCwBi+wD9wwMQD//wA7/+oEAgXnAiYASQAAAQYBanEAAAkAsAkvsCPcMDEAAAIASP/oBTcFwwAaACQAXrIVJSYREjmwFRCwHNAAsABFWLAALxuxAB8+WbAARViwCi8bsQoPPlmyEAAKERI5sBAvsAAQshUBCitYIdgb9FmwChCyGwEKK1gh2Bv0WbAQELIeAQorWCHYG/RZMDEBFgQXFgcHBgIEJyYmAjc3BTYnJiYnJgcnNjYTFjY3IQcGFxYWAu+9AQ89PxkQHcr+1qyz8mQaFgOvDwoSqouk0R5AwQyR2kP9RQcOChCRBcMCrpqgym7G/ryvBASqATDFjwFbU4eXAwNJySkr+vwDy9EiTkNsdwD//wA2/+oD9gRQAgYBZQAA//8ASP/oBTcG3AImApoAAAEHAGsA9wEPAAwAsAAvsDbcsCXQMDH//wA2/+oD9gXOAiYBZQAAAQYAa3IBAAwAsAAvsC/csB7QMDH///+lAAAH4AcKAiYB2QAAAQcAawJIAT0ADACwCS+wJ9ywFtAwMf///60AAAZyBcACJgH5AAABBwBrAX3/8wAMALAJL7An3LAW0DAx//8AHv/tBKgHGAImAdoAAAEHAGsA4wFLAAwAsA4vsDvcsCrQMDH//wAW/+kD2gXNAiYB+gAAAQYAa1cAAAwAsCYvsDvcsCrQMDEAAQAv/+YEnAWwABsAarIZHB0REjkAsABFWLACLxuxAh8+WbAARViwDC8bsQwPPlmwAhCyAAEKK1gh2Bv0WbIEAAIREjmyGwwCERI5sBsvshkHCitYIdgb9FmyBRsZERI5shAMGRESObAMELITAQorWCHYG/RZMDEBITchBwEWFgcOAicmJjczBhYXFjY3NiYnJzcDU/2uJAN3Hf5FqLAOC5b7k8joCPQEbVpvrRARdIGXIATkzK7+VRnvr4bJawQE7LtkeQIEf2+BiwQBtwAB//D+cgRUBDoAGwBdsgscHRESOQCwDC+wAEVYsAIvG7ECGz5ZsgABCitYIdgb9FmyBAACERI5shsMAhESObAbL7IZBworWCHYG/RZsgUZGxESObIPAgwREjmwDBCyEwEKK1gh2Bv0WTAxASE3IQcBFhYHDgInJiY3FwYWFxY2NzYmJyc3Awn9tiMDchz+RaW1DwuW+JLG5wjsBGtfcrEQEXaCmiADdsSm/koZ67CFyGsDBOu6AWR+AgSDcIOKBAG2//8AJwAABXwG8QImAdsAAAEHAHIBIQFBABMAsABFWLAILxuxCB8+WbAL3DAxAP//ABkAAARIBacCJgH7AAABBgByZvcAEwCwAEVYsAcvG7EHGz5ZsAvcMDEA//8AJwAABXwHCgImAdsAAAEHAGsBTwE9AAwAsAAvsBvcsArQMDH//wAZAAAESAXAAiYB+wAAAQcAawCU//MADACwAC+wG9ywCtAwMf//AGv/5wUhBwMCJgAzAAABBwBrAT8BNgAMALAKL7A03LAj0DAx//8AOf/oBCcFzQImAFMAAAEGAGt9AAAMALAEL7Ay3LAh0DAx//8AYv/nBRoFyAIGAjUAAP//ADb/5wQmBFICBgI2AAD//wBi/+cFGgcHAiYCNQAAAQcAawFNAToADACwCi+wNtywJdAwMf//ADb/5wQmBc0CJgI2AAABBgBrewAADACwBC+wL9ywHtAwMf//AE//6QT3BxkCJgHwAAABBwBrASEBTAAMALAUL7Ay3LAh0DAx//8AI//oA+UFzQImAhAAAAEGAGtiAAAMALAIL7Ax3LAg0DAx//8Am//nBVMG8QImAeYAAAEHAHIA3wFBAAkAsAEvsBHcMDEA////tf5FBBIFtAImAF0AAAEGAHIeBAAJALABL7AQ3DAxAP//AJv/5wVTBwoCJgHmAAABBwBrAQ0BPQAMALABL7Ai3LAR0DAx////tf5FBBIFzQImAF0AAAEGAGtMAAAMALABL7Ah3LAQ0DAx//8Am//nBVMHPAImAeYAAAEHAW8BXAE9AAwAsAEvsBPcsBXQMDH///+1/kUEhAX/AiYAXQAAAQcBbwCbAAAAFgCwAEVYsA8vG7EPGz5ZsBbcsBLQMDH//wDFAAAFagcKAiYB6gAAAQcAawFJAT0ADACwAC+wItywEdAwMf//AHAAAAQgBcACJgIKAAABBgBrbfMADACwCC+wJNywE9AwMf//AC7+mgSsBbACJgGEAAAABwP9AP8AAP//ABj+mgOJBDoCJgH2AAAABwP9AOUAAP//AC4AAAa9BwsAJgHvCwAAJwAtBJUAAAEHAGsB9wE+ABYAsABFWLAKLxuxCh8+WbAe3LAp0DAx//8AIgAABfEFwAAmAg8AAAAnAPQEJgAAAQcAawFy//MAFgCwAEVYsAovG7EKGz5ZsB7csCnQMDH//wAz/kYE/AWwACYBhFAAACYD1a4pAAcD/AEsAAD//wAJ/kQD2wQ6ACYB9lIAACcD1f+J/3oABwP8AQL//v///8P+RgVHBbACJgA8AAAABwP8A7AAAP///7n+RgQTBDoCJgBcAAAABwP8Ar0AAAAB/8MAAAVHBbAAEQBjALAARViwCy8bsQsfPlmwAEVYsA4vG7EOHz5ZsABFWLACLxuxAg8+WbAARViwBS8bsQUPPlmyEQsCERI5sBEvsgAHCitYIdgb9FmyBAsCERI5sAfQsBEQsAnQsg0LAhESOTAxASMBIQMBIQEjNzMBIRMBIQEzA8eKASP+7tz+fP7VAfF4HnT+7wEQ1gF6ASr+LHIClf1rAhX96wKVqgJx/fMCDf2PAAAB/7kAAAQTBDoAEQBjALAARViwCy8bsQsbPlmwAEVYsA4vG7EOGz5ZsABFWLACLxuxAg8+WbAARViwBS8bsQUPPlmyEQ4CERI5sBEvsgAHCitYIdgb9FmyBA4CERI5sAfQsBEQsAnQsg0OAhESOTAxASMTIwMBIQEjNzMDMxMTIQEzAymW0/iX/vb+7AFngh6ExfiM/wEV/rCEAdf+KQFx/o8B16oBuf6eAWL+RwACADAAAAT4BbAADAAVAFCyDBYXERI5sAwQsA/QALAARViwAS8bsQEfPlmwAEVYsAMvG7EDDz5ZsgABAxESObAAL7ADELINAQorWCHYG/RZsAAQsg4BCitYIdgb9FkwMQETMwMlLgI3PgIzExMlBgYHBhYXA6Rd9/39+YvSZwsLmf+ZsFr+7oCtDxFvaQObAhX6UAEEc8yEjNVz/S4CBgICj3dvjAT//wA7/+cEiAYAAgYASAAAAAIARQAABoAFsAAYACEAWrIZIiMREjmwGRCwCdAAsABFWLAKLxuxCh8+WbAARViwGC8bsRgPPlmyCAoYERI5sAgvsBgQsgwBCitYIdgb9FmyEgoYERI5sBnQsAgQshoBCitYIdgb9FkwMSUuAjc+AjMFEzMDFzY2NTQnFxYXEgAjJRMlBgYHBhYXAgiL0mYLC5r9mQEuXfbZO3+aFeYSBhD+3/n+11r+7H2uEQ9uaQEEdMuEjNZyAQIV+xoCAubfXVgBWVv+1v6bygIGAgKNeHCMBAAAAgBH/+YGUQYYACMAMgCAsgYzNBESObAGELAk0ACwAEVYsAcvG7EHIT5ZsABFWLAaLxuxGg8+WbAARViwHy8bsR8PPlmyBAcfERI5sAQvsgYHHxESObAaELIOAQorWCHYG/RZshMHHxESObIdBx8REjmwBBCyJgEKK1gh2Bv0WbAfELIvAQorWCHYG/RZMDETNhI2FxYXEzMDBhcWFhcWEhM2JxcWFxYCBCciJicGJyYmJyYBJicmBgcHBhcWFhcWNzdPFYrLgZxZbe3NAwMDNy+OrwcCEt8OBAeL/vWpdp8chr+ZsgcDAtE3d3ydFQMGAQJaUn5lBgIHsAEVhgMEdwJE+04eHzdAAwkBKwENZGQBZGPb/qK9A1pZuAQE07g7AW5jBALPsRQzOGZzAgR1RQAAAQCq/+gFugWwACoAY7IVKywREjkAsABFWLANLxuxDR8+WbAARViwJy8bsScPPlmyBisNERI5sAYvsgMBCitYIdgb9FmwDRCyDAEKK1gh2Bv0WbIUAwYREjmwJxCyGwEKK1gh2Bv0WbIgDScREjkwMQE2JicnNxcyNjc2JyU3BRYWBwYGBxYWBwcGFhcWEhM2JxcWFxYCBicmJjcCZAlVV+Ekj5WkDhnm/p0kAS/v9Q8IkZliXwkHBS0tgpoHAhHoDQQHif+nl54IAXtlewUCzQF4dL8JAc0BAdbAb6s+IqR+RjZIAgkBMAEBZGQBZGPd/qS9AgKwmwABAGH/4wTNBDoAKQBgsiUqKxESOQCwAEVYsB8vG7EfGz5ZsABFWLAQLxuxEA8+WbIDAQorWCHYG/RZsgkQHxESObIYKh8REjmwGC+yFwEKK1gh2Bv0WbAfELIeAQorWCHYG/RZsiYXGBESOTAxJRUWFxY2NicmJxcWFxYCBicmJjc3NicnNxc2NzYnJTcXFhYHBgYHFhYHAq4DN0lyPQUEFN4RCRJw5ZWXkQUJC4PwH6XOFBWr/vQc9r3MCAVja09GBukhMwMFbNV5T04BTk6a/tagAQN8dExxBwK9AQaJhAoBwwEFpo9PdS8aeFIAAQCS/rkD2QWwACcAX7IkKCkREjkAsBsvsABFWLAKLxuxCh8+WbAARViwHy8bsR8PPlmyASgKERI5sAEvsgABCitYIdgb9FmwChCyCQEKK1gh2Bv0WbIQAAEREjmwHxCyGAUKK1gh2Bv0WTAxEzcXMjY3NiYnJTcXFhYHBgUWFhcWDwI3BwYHJzY3ByYnJjc3NiYnkiK1jqcODm5r/tof+OXyDxH++kdUCAQHFgPPGijHg2QslSUEAwoSDl1eAlzDAXlzbXEEAcMBAd7A3nUeeFQzNXcMBKD3nFGHbwEuRyxMfW2ABAABAIz+qAO5BDoAIwBfsh8kJRESOQCwGS+wAEVYsAkvG7EJGz5ZsABFWLAdLxuxHQ8+WbIBJAkREjmwAS+yAAEKK1gh2Bv0WbAJELIIAQorWCHYG/RZshAAARESObAdELIVAQorWCHYG/RZMDETNxc2NzYmJyU3BRYWBwYGBxYXFgcHNwcGByc2NwcmNzc2JieMH9LWFwpUVP7aHgENvdUKBWVnbg0EBga+GSbIg2somSMGDwlNTAGbswEGkENQAgHBAQWwkFB7MTR7JighAaHxoVGWcQEtToBOTgMAAf/e/+UHSgWwACMAYrIjJCUREjkAsABFWLANLxuxDR8+WbAARViwIC8bsSAPPlmwAEVYsAUvG7EFDz5ZsA0QsgABCitYIdgb9FmwBRCyCAEKK1gh2Bv0WbAgELIUAQorWCHYG/RZshkNBRESOTAxASEDAgIHIzc3NjY3NxMhAwYXFhYXFhITNicXFhcWAgQnJiY3BFn+b5BD+cBeFzN0mykUiwN1ugMDAzUuiaoFAhLpDgQHjv74p62vEgTj/Vv+1P7zBcoDDNbpcgKm+7kdHzRAAwkBJQEMZGQBZGPf/qO9BATPrgAB/97/5wYmBDoAIgBisgAjJBESOQCwAEVYsA0vG7ENGz5ZsABFWLAFLxuxBQ8+WbAARViwHy8bsR8PPlmwDRCyAAEKK1gh2Bv0WbAFELIHAQorWCHYG/RZsB8QshIBCitYIdgb9FmyGA0FERI5MDEBIwMGBicjNzc2Njc3EyEDBhYXFjY3NzYnFxYXFgIGJyYmNwMw/mI3zqBNFSVbcx8OYALMeQg8Pm6GDQIBEt8OBQp57ZmssxIDdP4/6s0EyQMImrBOAc79LFFlAgTp3DxeXgFeXsP+trYDAsyvAAABACf/5gdQBbAAHgBxshYfIBESOQCwAEVYsAAvG7EAHz5ZsABFWLAaLxuxGh8+WbAARViwEi8bsRIPPlmwAEVYsBgvG7EYDz5ZsBIQsgYBCitYIdgb9FmyCwAYERI5sh0AGBESOXywHS8YtDAdQB0CXbIWAQorWCHYG/RZMDEBAwYXFhYXFhITNicXFhcWAgQnJiY3NyEDIxMzAyETBXi3AwMEMy2JqwUCEukOBAeO/vmpp68OJ/2Xa/b99m8CaW8FsPu3HR42PwEIASIBDmRkAWRj4P6juwMCzrH//ZcFsP2DAn0AAAEAC//mBikEOgAeAHSyCB8gERI5ALAARViwBC8bsQQbPlmwAEVYsAgvG7EIGz5ZsABFWLAbLxuxGw8+WbAARViwAi8bsQIPPlmyBwgCERI5fLAHLxiyUwcBXbJABwFdsgABCitYIdgb9FmwGxCyDwEKK1gh2Bv0WbIUCAIREjkwMQEhAyMTMwMhEzMDBhcWFhcWEjc0JxcWFxYCBicmJjcC5/5eTe287U4Bok3teQMDBTswd40CEd4OBQp47pmpsQwBuv5GBDr+QwG9/SwfIDZBAQYBE+9eXgFeXr7+srgDAsqyAAEATP/oBJQFxwAhAEeyFyIjERI5ALAARViwCS8bsQkfPlmwAEVYsAAvG7EADz5ZsAkQsg4BCitYIdgb9FmwABCyFwEKK1gh2Bv0WbIcCQAREjkwMQUmJgI3EzYSJBcWFwcmJyYGBwcGFxYWFxY2JyYnFxcWAgQCUqPycRYpHL8BIqzMj1B6m6LqHigKCQ2Nb5OuAQEN6w0Ki/7yFQSkARymAQazAR6bAQRYtkUCAu6+/UZKeZMDAtDiWFcBrtb+75YAAQA9/+cDqgRRAB8AQ7IAICEREjkAsABFWLATLxuxExs+WbAARViwCi8bsQoPPlmyAAEKK1gh2Bv0WbAKELAE0LATELIYAQorWCHYG/RZMDElFjY3JzMXFgYGJy4CNzc+AhcWFwcmIyIGBwYXFhYCBVliAgXfCAZszH6Ny18OBRKZ8pGobUFdgXiqFwsGCWyvAmmWbm2ew2UDBI71lCqZ/YwBAkS7Pb+dXz9oegAAAQCQ/+YFNAWwABoATbIJGxwREjkAsABFWLACLxuxAh8+WbAARViwFy8bsRcPPlmwAhCyAAEKK1gh2Bv0WbAE0LAF0LAXELIKAQorWCHYG/RZshACFxESOTAxASE3IQchAwcWFhcWEjc3NicXFhcWAgQnJiY3AkX+SyQEXyT+TJYBAzUuh6cLAQIS6A4DB4n++Kuorw4E483N/IU7NEADBgER/x5kZAFkY9n+ocADAs6xAAEAc//oBJcEOgAZAE2yChobERI5ALAARViwAi8bsQIbPlmwAEVYsBYvG7EWDz5ZsAIQsgABCitYIdgb9FmwBNCwBdCwFhCyCwEKK1gh2Bv0WbIQAhYREjkwMQEhNyEHIQMGFxYWFxY2JyYnFxYHBgQnJiY3Aa/+xCIDciP+uFgDAwU7MXeICgUU3SkOGf73wqmyDgN3w8P97x8gN0ABBOywS0oBtHfN+wICzK8AAAEAVv/oBSIFyAArAHSyGywtERI5ALAARViwHC8bsRwfPlmwAEVYsA4vG7EODz5ZsikcDhESObApL7IfKQFxskopAV2yAAEKK1gh2Bv0WbAOELIGAQorWCHYG/RZsgocDhESObIUACkREjmyHxwOERI5sBwQsiMBCitYIdgb9FkwMQEiBgcGFhcWNjc3BgYEJy4CNzYlJicmNzY2JBcWBAcnNiYnJgYHBhYXFwcCw6C7Dw2bh4K/EfULof71m5z6dwoRATBQMT4GCJ8BEKbVAQgE9ASGbo3BDw6DhL0kAoN8d2N3AwJ+ZQGFwmYDAm67evtnLENVZojAZAMF4bUBXW8CA3lnZWsBAcj//wAo/+oEAgRRAgYBpQAA////yv5GBYwFsAImAd4AAAAHA/wETQAA////v/5GBJ0EOgImAf4AAAAHA/wDXgAA////pP5sBK4FsAImACUAAAAHAXABbwAD//8AIv5wA9wEUAImAEUAAAAHAXAAqQAH//8AJ/6bBLwFsAImACYAAAAHAXYElwAK//8AEP6IBA8GAAImAEYAAAAHAXYEpf/3//8AJ/6bBOAFsAImACgAAAAHAXYEcwAK//8AO/6RBIgGAAImAEgAAAAHAXYEkAAA//8AJ/35BOAFsAImACgAAAAHA6sBAf6S//8AO/35BIgGAAImAEgAAAAHA6sBHv6S//8AJ/6bBYcFsAImACwAAAAHAXYFAAAK//8ADf6bA/kGAAImAEwAAAAHAXYEfwAK//8AJwAABXEHNgImAC8AAAEHAHcBpQE2AAkAsAQvsA/cMDEA//8AEQAABHUHPQImAE8AAAEHAHcBowE9AAkAsAQvsA/cMDEA//8AJ/7cBXEFsAImAC8AAAAHAXYE0QBL//8AEf7HBEoGAAImAE8AAAAHAXYEYAA2//8AJ/6bA8MFsAImADAAAAAHAXYElwAK////5P6bAhcGAAImAFAAAAAHAXYDRAAK//8AJwAABs4HNgImADEAAAEHAHcCvgE2ABMAsABFWLACLxuxAh8+WbAR3DAxAP//ABAAAAZoBgACJgBRAAABBwB3ApgAAAAJALADL7Ak3DAxAP//ACf+mwbOBbACJgAxAAAABwF2BasACv//ABD+mwZoBFICJgBRAAAABwF2Ba4ACv//ACf+lwWGBbACJgAyAAAABwF2BQIABv//AA3+mwP6BFICJgBSAAAABwF2BGwACv//ACcAAAUEB0ICJgA0AAABBwB3AasBQgAJALADL7AW3DAxAP///8f+YARtBfcCJgBUAAABBwB3AZv/9wAJALANL7Ah3DAxAP//ACf+mwTYBbACJgA2AAAABwF2BJgACv///97+mwLvBFMCJgBWAAAABwF2Az4ACv//ACT+kQS7BccCJgA3AAAABwF2BLAAAP//ABz+iAPEBFACJgBXAAAABwF2BGL/9///AJz+lAUiBbACJgA4AAAABwF2BJ8AA///ADv+kQKuBUECJgBYAAAABwF2A/UAAP//AJsAAAWBBzcCJgA6AAABBwFuAN0BQwAJALABL7AR3DAxAP//AGQAAAQNBewCJgBaAAABBgFuFvgACQCwAS+wEdwwMQD//wCb/psFgQWwAiYAOgAAAAcBdgTV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AesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgACAAAAAgAKO9oAAQNsAAQAAAGxBtI6+jr6BvwHUjfeI2I7mDuqOHYHWDiWOJY43jTeDqg4ljiWO6omhAqSCxQ1MDjeNI43uDdKOOQPYgt+OFQ2GjiMC8AM6gz0N643rji4NhoO1g3qOW4OTDeoOW4OZjfeN9433jfeN9433juYOHY4djh2OHY4ljiWOJY4ljuqOJY7qjuqO6o7qjuqON443jjeON445DhUOFQ4VDhUOFQ4VDiMOIw4jDiMN644uDi4OLg4uDi4OW42GjluN944VDfeOFQ33jhUO5g7mDuYO5g7qjuqOHY4jDh2OIw4djiMOHY4jDh2OIw4ljeuOJY4ljiWOJY4ljjeNN4OqA6oDqgOqDiWN644ljeuOJY3rjeuO6o4uDuqOLg7qji4DtYO1g7WNTA1MDUwON443jjeON443jjeN7g45DluOOQPYg9iD2I33jhUNTAO6Dr6N944djiWOJY7qjjkN94jYjZ+N944dg9iOJY7qjiWNN433jiWOJYPhDuqJoQQfjUwOOQRfDdKElo4ljjkN64S+DluEv43rhW8OW4Xlji4GKgYwhjIGM4ayBrOGwQbNji4OHY4dhu0Nn44ljiWON4dKh7cIJo03jY0OJY33iHQI2I2fiNsOHY3SiW6OJY03jiWOJY4ljuqJoQ7mDUwNjQ3SjiWOJYmpihAND4pHingKm44VCrMK6Y3QCwwOIw3qCz6LSQ4uDYaLoo5bjYaN6gxEDFOMoA0aDYaMwI4jDiMN0AziDOyNAg5bjQ+NGg33ji4NI45bjSOOW40tDYaNn43QDZ+N0o3qDTeNN403jTeOJY7mDUwOOQ5bjjkN0o3qDeuOJY3SjeoOJY4ljiWN944VDfeOFQ4djiMOIw4jDdKN6g7qji4OLg2GjY0OW42NDluNjQ5bjZ+N0A3QDdKN6g33jhUOJY3rje4N7g3uDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDfeOFQ33jhUN944VDh2OIw4djiMOHY4jDh2OIw4djiMOHY4jDh2OIw4djiMOJY4ljuqOLg7qji4O6o4uDuqOLg7qji4O6o4uDuqOLg4uDjeON445DluOOQ5bjjkOW445DluO6o6+jmIOvo6+jr6Ovo6+jsAOwo7HDsuO0A7XjtoO3I7mDuqO6oAAQGxAAQABgALAAwAEwAlACYAJwAoACkAKgAsAC0ALgAvADAAMQAyADMANAA1ADYAOAA5ADoAOwA8AD0APgA/AEUARgBJAEoATABPAFEAUgBTAFQAVgBYAFoAWwBcAF0AXwCDAIQAhQCGAIcAiACKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJwAnQCeAJ8AoACjAKQApQCmAKcAqACrAKwArQCuALQAtQC2ALcAuAC5AMAAwQDCAMMAxADFAMYAxwDIAMkAywDNAM8A0QDTANUA1gDXANgA2QDaANsA3ADdAN4A5wDoAOsA7QDvAPEA8wD3APkA/AD+AQABAgEGAQcBCAEJAQoBCwEMAQ8BEAERARIBEwEUARgBGgEcASUBJwEpASsBLQEvATEBMwE1ATcBOQE6ATsBPAE+AUABTgFPAWIBZQFmAXkBewF8AX0BfgF/AYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZIBkwGUAZUBlgGXAZgBmgGbAZ4BoQGjAaYBpwGpAa0BrgGvAbEBsgGzAbQBtQG2AbgBuQG8AcMBxAHFAcYByQHKAcsBzAHNAc4BzwHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3QHeAd8B4AHhAeMB5AHlAeYB6AHpAesB7AHtAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6Af0CAQIDAgUCBgIHAggCCQIMAg0CDwIQAhECEwIUAhYCFwIcAh0CIQIlAiYCKQI2AjcCOAI5AjoCRAJRAlICUwJUAlgCWQJcAl4CYAJiAmQCbAJuAnACcQJyAnQCdQJ9AoICgwKEAosCjwKRApICkwKUApUCmAKZApsCnQKeAp8CqAKpAq0CrwKwArECsgKzArQCtQK4ArkCvQK+Ar8C1gLXAuYC5wL4AvoC/AMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDLAMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDQwNGA0gDVANVA1YDVwNYA1kDWgNbA1wDcANxA3MDdAN1A34DfwPZA9sD3APeA+ED4gPpA+wEMQQzBDQACgA4/8QBJf/EASf/xAFi/8QBxf/EAc7/xAHl/8QCYv/EAm7/xAJ2/8QAFQA6ABQAOwAmAD0AFgCgABYBNwAmATkAFgE7ABYBfwAWAZUAFgGbABYCNwAUAjkAFAJwABYCcgAWAvgAJgL6ACYC/AAmA1QAFgNWABYDWAAWA1oAFgABABP/CADOABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACD/0AAhP9AAIX/QACG/0AAh/9AAIj/QACj/94ApP/eAKX/3gCm/94Ap//eAKj/3gCq/+sAq//rAKz/6wCt/+sArv/rALX/6wC2/+sAt//rALj/6wC5/+sAvP/qAL3/6gC+/+oAv//qAMD/6ADC/+gAw/9AAMT/3gDF/0AAxv/eAMf/QADI/94Ayv/rAMz/6wDO/+sA0P/rANL/6wDW/+sA2P/rANr/6wDc/+sA3v/rAOD/6wDi/+sA5P/rAOb/6wD3/zABEP/rARL/6wEU/+sBFv/rASUAFAEnABQBLP/qAS7/6gEw/+oBMv/qATT/6gE2/+oBOv/oAUb/6wFI/+oBTv9AAU//3gFiABQBef9AAYL/QAGF/0ABjP9AAZz/6wGg/+oBof/rAaP/6AGt/+gBr//rAbL/6wGz/+sBtf/qAbv/6gG8/+sBvf/qAcUAFAHL/zABzgAUAdP/QAHlABQB8//eAfj/6wIB/+sCBP/rAgb/6AIH/+sCE//rAhT/6wIX/+sCIf/oAin/QAI2/+sCOP/oAjr/6AI8/+sCQP/rAkT/6wJiABQCa//rAm3/6wJuABQCcf/oAnYAFAKS/0ACk//eApT/QAKV/94Cmf/rApv/6wKd/+sCqf/rAqv/6wKt/+sCsf/oArP/6AK1/+gCw//rAsT/6wLF/+sCz//rAtb/QALX/94DAv9AAwP/3gME/0ADBf/eAwb/QAMH/94DCP9AAwn/3gMK/0ADC//eAwz/QAMN/94DDv9AAw//3gMQ/0ADEf/eAxL/QAMT/94DFP9AAxX/3gMW/0ADF//eAxj/QAMZ/94DG//rAx3/6wMf/+sDIf/rAyP/6wMl/+sDJ//rAyn/6wMv/+sDMf/rAzP/6wM1/+sDN//rAzn/6wM7/+sDPf/rAz//6wNB/+sDQ//rA0X/6wNH/+oDSf/qA0v/6gNN/+oDT//qA1H/6gNT/+oDVf/oA1f/6ANZ/+gDW//oA3L+7gN2/u4Dev7uA3v+7gPs/8AAIAA4/98AOv/kADv/7AA9/90AoP/dASX/3wEn/98BN//sATn/3QE7/90BYv/fAX//3QGV/90Bm//dAcX/3wHO/98B5f/fAjf/5AI5/+QCYv/fAm7/3wJw/90Ccv/dAnb/3wL4/+wC+v/sAvz/7ANU/90DVv/dA1j/3QNa/90D7AAOABoAOP/OADr/7QA9/9AAoP/QASX/zgEn/84BOf/QATv/0AFi/84Bf//QAZX/0AGb/9ABxf/OAc7/zgHl/84CN//tAjn/7QJi/84Cbv/OAnD/0AJy/9ACdv/OA1T/0ANW/9ADWP/QA1r/0AAQAC7/7gA5/+4AnP/uAJ3/7gCe/+4An//uAPf/7gEr/+4BLf/uAS//7gEx/+4BM//uATX/7gHL/+4DRv/uA0j/7gBKAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCq/+gAq//oAKz/6ACt/+gArv/oAMr/6ADM/+gAzv/oAND/6ADS/+gA1v/oANj/6ADa/+gA3P/oAN7/6ADg/+gA4v/oAOT/6ADm/+gBFv/oAUb/6AFmABABnP/oAaH/6AGy/+gBs//oAfj/6AIE/+gCB//oAhP/6AIU/+gCF//oAjz/6AJA/+gCRP/oAmv/6AJt/+gCmf/oApv/6AKd/+gCq//oAsP/6ALE/+gCxf/oAs//6AMb/+gDHf/oAx//6AMh/+gDI//oAyX/6AMn/+gDKf/oAz3/6AM//+gDQf/oA0X/6ANwABADcQAQA3MAEAN0ABADdQAQA34AEAN/ABAAAgIF/9YDcf+YAD0AR//sAEj/7ABJ/+wAS//sAFX/7ACq/+wAq//sAKz/7ACt/+wArv/sAMr/7ADM/+wAzv/sAND/7ADS/+wA1v/sANj/7ADa/+wA3P/sAN7/7ADg/+wA4v/sAOT/7ADm/+wBFv/sAUb/7AGc/+wBof/sAbL/7AGz/+wB+P/sAgT/7AIH/+wCE//sAhT/7AIX/+wCPP/sAkD/7AJE/+wCa//sAm3/7AKZ/+wCm//sAp3/7AKr/+wCw//sAsT/7ALF/+wCz//sAxv/7AMd/+wDH//sAyH/7AMj/+wDJf/sAyf/7AMp/+wDPf/sAz//7ANB/+wDRf/sABgAU//iALX/4gC2/+IAt//iALj/4gC5/+IBEP/iARL/4gEU/+IBr//iAbz/4gIB/+ICNv/iAqn/4gKt/+IDL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iA0P/4gNxABgABgAQ/4QAEv+EA3L/hAN2/4QDev+EA3v/hAAQAC7/7AA5/+wAnP/sAJ3/7ACe/+wAn//sAPf/7AEr/+wBLf/sAS//7AEx/+wBM//sATX/7AHL/+wDRv/sA0j/7AALAFv/zAPW/9cD1/+4A9j/7gPZ/70D3P/yA97/8gPm//ED6v/zA+wAEwP3/7cABABKABQAWAAyAFsAEQNxABAAHgAG//IAC//yAFr/8wBd//MAwP/zAML/8wE6//MBZv/yAaP/8wGt//MCBf/1Agb/8wIh//MCOP/zAjr/8wJx//MCsf/zArP/8wK1//MDVf/zA1f/8wNZ//MDW//zA3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAIAFv/5QGW/8sBuP/kA9z/7APe/+wD5v/rA+r/7QPsAA0APgAn//MAK//zADP/8wA1//MAiv/zAJX/8wCW//MAl//zAJj/8wCZ//MAm//zAMn/8wDL//MAzf/zAM//8wDf//MA4f/zAOP/8wDl//MBD//zARH/8wET//MBFf/zAUX/8wFS//MBfv/zAYn/8wGQ//MBqwANAcf/8wHh//MB5P/zAiP/8wI1//MCO//zAj3/8wI///MCQf/zAkP/8wJq//MCbP/zAqj/8wKq//MCrP/zAs7/8wMu//MDMP/zAzL/8wM0//MDNv/zAzj/8wM6//MDPP/zAz7/8wNA//MDQv/zA0T/8wNc//MEMf/zBDL/8wQ0//MENf/zAD8AJ//mACv/5gAz/+YANf/mAIr/5gCV/+YAlv/mAJf/5gCY/+YAmf/mAJv/5gDJ/+YAy//mAM3/5gDP/+YA3//mAOH/5gDj/+YA5f/mAQ//5gER/+YBE//mARX/5gFF/+YBUv/mAX7/5gGJ/+YBkP/mAZb/wgGrABABx//mAeH/5gHk/+YCI//mAjX/5gI7/+YCPf/mAj//5gJB/+YCQ//mAmr/5gJs/+YCqP/mAqr/5gKs/+YCzv/mAy7/5gMw/+YDMv/mAzT/5gM2/+YDOP/mAzr/5gM8/+YDPv/mA0D/5gNC/+YDRP/mA1z/5gQx/+YEMv/mBDT/5gQ1/+YANwAl/+QAPP/SAD3/0wCD/+QAhP/kAIX/5ACG/+QAh//kAIj/5ACg/9MAw//kAMX/5ADH/+QBOf/TATv/0wFO/+QBef/kAX//0wGC/+QBhf/kAYz/5AGV/9MBl//SAZv/0wGr/+IB0//kAdn/0gHo/9ICKf/kAlj/0gJw/9MCcv/TAnT/0gKD/9ICkv/kApT/5AKe/9ICvv/SAtb/5AMC/+QDBP/kAwb/5AMI/+QDCv/kAwz/5AMO/+QDEP/kAxL/5AMU/+QDFv/kAxj/5ANU/9MDVv/TA1j/0wNa/9MAJwAQ/0YAEv9GACX/zQCD/80AhP/NAIX/zQCG/80Ah//NAIj/zQDD/80Axf/NAMf/zQFO/80Bef/NAYL/zQGF/80BjP/NAbH/8gHT/80CKf/NApL/zQKU/80C1v/NAwL/zQME/80DBv/NAwj/zQMK/80DDP/NAw7/zQMQ/80DEv/NAxT/zQMW/80DGP/NA3L/RgN2/0YDev9GA3v/RgABAasADgCvAEf/3ABI/9wASf/cAEv/3ABR/8EAUv/BAFP/1gBU/8EAVf/cAFn/3QBa/+EAXf/hAKr/3ACr/9wArP/cAK3/3ACu/9wAtP/BALX/1gC2/9YAt//WALj/1gC5/9YAvP/dAL3/3QC+/90Av//dAMD/4QDC/+EAyv/cAMz/3ADO/9wA0P/cANL/3ADW/9wA2P/cANr/3ADc/9wA3v/cAOD/3ADi/9wA5P/cAOb/3AEH/8EBCf/BAQv/wQEM/8EBEP/WARL/1gEU/9YBFv/cASz/3QEu/90BMP/dATL/3QE0/90BNv/dATr/4QFG/9wBSP/dAZz/3AGe/8EBoP/dAaH/3AGj/+EBpf/mAaf/wQGo/+sBqf/pAa3/4QGu//ABr//WAbD/5wGy/9wBs//cAbT/4wG1/90Btv/OAbj/1AG5/9sBu//dAbz/1gG9/90B9v/BAfj/3AH7/8EB/P/BAf3/wQH//8ECAP/BAgH/1gIC/8ECA//BAgT/3AIG/+ECB//cAgn/wQIL/8ECDP/BAg//wQIR/8ECE//cAhT/3AIW/8ECF//cAh3/wQIf/8ECIP/BAiH/4QI2/9YCOP/hAjr/4QI8/9wCQP/cAkT/3AJN/8ECXf/BAmX/wQJn/8ECa//cAm3/3AJx/+ECiv/BAoz/wQKQ/8ECmf/cApv/3AKd/9wCpf/BAqf/wQKp/9YCq//cAq3/1gKx/+ECs//hArX/4QK5/8ECu//BAr3/wQLD/9wCxP/cAsX/3ALP/9wC5//BAxv/3AMd/9wDH//cAyH/3AMj/9wDJf/cAyf/3AMp/9wDL//WAzH/1gMz/9YDNf/WAzf/1gM5/9YDO//WAz3/3AM//9wDQf/cA0P/1gNF/9wDR//dA0n/3QNL/90DTf/dA0//3QNR/90DU//dA1X/4QNX/+EDWf/hA1v/4QB2AAb/2gAL/9oAR//wAEj/8ABJ//AAS//wAFX/8ABZ/+8AWv/cAF3/3ACq//AAq//wAKz/8ACt//AArv/wALz/7wC9/+8Avv/vAL//7wDA/9wAwv/cAMr/8ADM//AAzv/wAND/8ADS//AA1v/wANj/8ADa//AA3P/wAN7/8ADg//AA4v/wAOT/8ADm//ABFv/wASz/7wEu/+8BMP/vATL/7wE0/+8BNv/vATr/3AFG//ABSP/vAWb/2gGc//ABoP/vAaH/8AGj/9wBqP/sAasADwGt/9wBsP/qAbL/8AGz//ABtP/OAbX/7wG2/+cBu//vAb3/7wH4//ACBP/wAgb/3AIH//ACE//wAhT/8AIX//ACIf/cAjj/3AI6/9wCPP/wAkD/8AJE//ACa//wAm3/8AJx/9wCmf/wApv/8AKd//ACq//wArH/3AKz/9wCtf/cAsP/8ALE//ACxf/wAs//8AMb//ADHf/wAx//8AMh//ADI//wAyX/8AMn//ADKf/wAz3/8AM///ADQf/wA0X/8ANH/+8DSf/vA0v/7wNN/+8DT//vA1H/7wNT/+8DVf/cA1f/3ANZ/9wDW//cA3D/2gNx/9oDc//aA3T/2gN1/9oDfv/aA3//2gBEABAADAASAAwAR//nAEj/5wBJ/+cAS//nAFX/5wCq/+cAq//nAKz/5wCt/+cArv/nAMr/5wDM/+cAzv/nAND/5wDS/+cA1v/nANj/5wDa/+cA3P/nAN7/5wDg/+cA4v/nAOT/5wDm/+cBFv/nAUb/5wGc/+cBof/nAasADwGy/+cBs//nAfj/5wIE/+cCB//nAhP/5wIU/+cCF//nAjz/5wJA/+cCRP/nAmv/5wJt/+cCmf/nApv/5wKd/+cCq//nAsP/5wLE/+cCxf/nAs//5wMb/+cDHf/nAx//5wMh/+cDI//nAyX/5wMn/+cDKf/nAz3/5wM//+cDQf/nA0X/5wNyAAwDdgAMA3oADAN7AAwABgG0/+oB9//uAgX/1QIP/+0CY//sAtH/7AABAgX/wAABAbQAIAB+AAYADAALAAwAR//oAEj/6ABJ/+gASgAMAEv/6ABT/+oAVf/oAFoACwBdAAsAqv/oAKv/6ACs/+gArf/oAK7/6AC1/+oAtv/qALf/6gC4/+oAuf/qAMAACwDCAAsAyv/oAMz/6ADO/+gA0P/oANL/6ADW/+gA2P/oANr/6ADc/+gA3v/oAOD/6ADi/+gA5P/oAOb/6AEQ/+oBEv/qART/6gEW/+gBOgALAUb/6AFmAAwBnP/oAaH/6AGjAAsBq/+QAa0ACwGv/+oBsAALAbL/6AGz/+gBtAAMAbz/6gH4/+gCAf/qAgT/6AIGAAsCB//oAhP/6AIU/+gCF//oAiEACwI2/+oCOAALAjoACwI8/+gCQP/oAkT/6AJr/+gCbf/oAnEACwKZ/+gCm//oAp3/6AKp/+oCq//oAq3/6gKxAAsCswALArUACwLD/+gCxP/oAsX/6ALP/+gDG//oAx3/6AMf/+gDIf/oAyP/6AMl/+gDJ//oAyn/6AMv/+oDMf/qAzP/6gM1/+oDN//qAzn/6gM7/+oDPf/oAz//6ANB/+gDQ//qA0X/6ANVAAsDVwALA1kACwNbAAsDcAAMA3EADANzAAwDdAAMA3UADAN+AAwDfwAMA9cADQPZAA4D2v/1A9z/7APe/+0D5v/sA+r/7gPs/78D9wANAAECBf/iAA0AXP/tAF7/7QE9/+0BP//tAUH/7QH5/+0CBf/AAgj/7QJZ/+0Cdf/tAoT/7QKf/+0Cv//tAAwAXP/yAF7/8gE9//IBP//yAUH/8gH5//ICCP/yAln/8gJ1//IChP/yAp//8gK///IAHwBa//QAXP/yAF3/9ABe//MAwP/0AML/9AE6//QBPf/zAT//8wFB//MBo//0Aa3/9AH5//ICBv/0Agj/8gIh//QCOP/0Ajr/9AJZ//ICcf/0AnX/8gKE//ICn//yArH/9AKz//QCtf/0Ar//8gNV//QDV//0A1n/9ANb//QAXQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBa/+YAXP/vAF3/5gCg/9MAwP/mAML/5gEl/9IBJ//SATn/0wE6/+YBO//TAWL/0gFm/8oBf//TAZX/0wGX//QBm//TAaP/5gGt/+YBxf/SAc7/0gHR/+0B2f/0AeX/0gHm/+0B6P/0Aer/4QHv/9QB+f/vAgX/yQIG/+YCCP/vAg//0QIh/+YCJP/lAjf/1AI4/+YCOf/UAjr/5gJC/+MCWP/0Aln/7wJi/9ICY//EAm7/0gJw/9MCcf/mAnL/0wJ0//QCdf/vAnb/0gJ4/+ECev/hAoP/9AKE/+8Cjf/hAp7/9AKf/+8CsP/tArH/5gKy/+0Cs//mArT/7QK1/+YCtv/hAr7/9AK//+8Cxv/UAsf/9QLI/+cC0P9kAtH/yQNU/9MDVf/mA1b/0wNX/+YDWP/TA1n/5gNa/9MDW//mA3D/ygNx/8oDc//KA3T/ygN1/8oDfv/KA3//ygBsAAb/wAAL/8AAOP+dADr/xwA8//AAPf+rAFH/0gBS/9IAVP/SAKD/qwC0/9IBB//SAQn/0gEL/9IBDP/SASX/nQEn/50BOf+rATv/qwFi/50BZv/AAX//qwGV/6sBl//wAZv/qwGe/9IBp//SAcX/nQHM//UBzv+dAdH/6gHZ//AB3v/1AeX/nQHm/+oB6P/wAer/5QHv/8EB9v/SAfv/0gH8/9IB/f/SAf//0gIA/9ICAv/SAgP/0gIF/80CCf/SAgv/0gIM/9ICD//SAhH/0gIW/9ICHf/SAh//0gIg/9ICN//HAjn/xwJN/9ICWP/wAl3/0gJi/50CY//MAmX/0gJn/9ICbv+dAnD/qwJy/6sCdP/wAnb/nQJ4/+UCev/lAn7/3wKD//ACh//1Aor/0gKM/9ICjf/lApD/0gKe//ACpf/SAqf/0gKw/+oCsv/qArT/6gK2/+UCuf/SArv/0gK9/9ICvv/wAsb/zgLI/+oCyv/1AtD/ngLR/84C1P/1Auf/0gNU/6sDVv+rA1j/qwNa/6sDcP/AA3H/wANz/8ADdP/AA3X/wAN+/8ADf//AAG8ABv+xAAv/sQA4/54AOv/FADz/8gA9/6gAUf/PAFL/zwBU/88AXP/vAKD/qAC0/88BB//PAQn/zwEL/88BDP/PASX/ngEn/54BOf+oATv/qAFi/54BZv+xAX//qAGV/6gBl//yAZv/qAGe/88Bp//PAcX/ngHO/54B0f/sAdn/8gHl/54B5v/sAej/8gHq/+EB7//CAfb/zwH5/+8B+//PAfz/zwH9/88B///PAgD/zwIC/88CA//PAgX/xgII/+8CCf/PAgv/zwIM/88CD//PAhH/zwIW/88CHf/PAh//zwIg/88CN//FAjn/xQJN/88CWP/yAln/7wJd/88CYv+eAmP/wAJl/88CZ//PAm7/ngJw/6gCcv+oAnT/8gJ1/+8Cdv+eAnj/4QJ6/+ECfv/fAoP/8gKE/+8Civ/PAoz/zwKN/+ECkP/PAp7/8gKf/+8Cpf/PAqf/zwKw/+wCsv/sArT/7AK2/+ECuf/PArv/zwK9/88Cvv/yAr//7wLG/80CyP/oAtD/nwLR/8YC5//PA1T/qANW/6gDWP+oA1r/qANw/7EDcf+xA3P/sQN0/7EDdf+xA37/sQN//7EATQA4/74AUf/hAFL/4QBU/+EAWv/vAF3/7wC0/+EAwP/vAML/7wEH/+EBCf/hAQv/4QEM/+EBJf++ASf/vgE6/+8BYv++AZ7/4QGj/+8Bp//hAa3/7wHF/74Bzv++AeX/vgHv/8kB9v/hAfv/4QH8/+EB/f/hAf//4QIA/+ECAv/hAgP/4QIF/98CBv/vAgn/4QIL/+ECDP/hAg//4QIR/+ECFv/hAh3/4QIf/+ECIP/hAiH/7wIk/+0COP/vAjr/7wJC/+sCTf/hAl3/4QJi/74CY//fAmX/4QJn/+ECbv++AnH/7wJ2/74Cfv/pAor/4QKM/+ECkP/hAqX/4QKn/+ECsf/vArP/7wK1/+8Cuf/hArv/4QK9/+ECx//1AtH/4ALn/+EDVf/vA1f/7wNZ/+8DW//vAGQAOP/mADr/5wA8//IAPf/nAFH/1gBS/9YAVP/WAFz/8QCg/+cAtP/WAQf/1gEJ/9YBC//WAQz/1gEl/+YBJ//mATn/5wE7/+cBYv/mAX//5wGV/+cBl//yAZv/5wGe/9YBp//WAcX/5gHO/+YB0f/uAdn/8gHl/+YB5v/uAej/8gHq/+gB7//mAfb/1gH5//EB+//WAfz/1gH9/9YB///WAgD/1gIC/9YCA//WAgX/0AII//ECCf/WAgv/1gIM/9YCD//WAhH/1gIW/9YCHf/WAh//1gIg/9YCN//nAjn/5wJN/9YCWP/yAln/8QJd/9YCYv/mAmP/zgJl/9YCZ//WAm7/5gJw/+cCcv/nAnT/8gJ1//ECdv/mAnj/6AJ6/+gCg//yAoT/8QKK/9YCjP/WAo3/6AKQ/9YCnv/yAp//8QKl/9YCp//WArD/7gKy/+4CtP/uArb/6AK5/9YCu//WAr3/1gK+//ICv//xAsb/5wLI/+0C0P/mAtH/0ALn/9YDVP/nA1b/5wNY/+cDWv/nAAICLQALAtD/5gCTACUAEAAn/+gAK//oADP/6AA1/+gAOP/gADr/4AA9/98AgwAQAIQAEACFABAAhgAQAIcAEACIABAAiv/oAJX/6ACW/+gAl//oAJj/6ACZ/+gAm//oAKD/3wDDABAAxQAQAMcAEADJ/+gAy//oAM3/6ADP/+gA3//oAOH/6ADj/+gA5f/oAQ//6AER/+gBE//oARX/6AEl/+ABJ//gATn/3wE7/98BRf/oAU4AEAFS/+gBYv/gAXkAEAF+/+gBf//fAYIAEAGFABABif/oAYwAEAGQ/+gBlf/fAZv/3wHF/+ABx//oAcwAEAHO/+AB0wAQAdcAFAHeABAB4f/oAeT/6AHl/+AB6v/hAe//4AH3ABMB/gAQAgr/4AIcABACI//oAikAEAI1/+gCN//gAjn/4AI7/+gCPf/oAj//6AJB/+gCQ//oAmL/4AJq/+gCbP/oAm7/4AJw/98Ccv/fAnb/4AJ4/+ECef/gAnr/4QJ7/+ACf//hAocAEAKIABACjf/hAo7/4AKSABAClAAQApr/6QKo/+gCqv/oAqz/6AK2/+ECt//gAsb/3wLI/94CygAQAs7/6ALQ/98C0v/yAtQAEALVABAC1gAQAwIAEAMEABADBgAQAwgAEAMKABADDAAQAw4AEAMQABADEgAQAxQAEAMWABADGAAQAy7/6AMw/+gDMv/oAzT/6AM2/+gDOP/oAzr/6AM8/+gDPv/oA0D/6ANC/+gDRP/oA1T/3wNW/98DWP/fA1r/3wNc/+gEMf/oBDL/6AQ0/+gENf/oADIAG//yADj/8QA6//QAPP/0AD3/8ACg//ABJf/xASf/8QE5//ABO//wAWL/8QF///ABlf/wAZf/9AGb//ABxf/xAcz/9QHO//EB0f/zAdn/9AHe//UB5f/xAeb/8wHo//QB7//xAjf/9AI5//QCWP/0AmL/8QJu//ECcP/wAnL/8AJ0//QCdv/xAoP/9AKH//UCnv/0ArD/8wKy//MCtP/zAr7/9ALG//ICyP/yAsr/9QLQ//IC1P/1A1T/8ANW//ADWP/wA1r/8AAIAFgADgCJ/tcBq/+YAbH/xwHX/xIB9/9SAsL/zwPs/4AAZgAlAA8AOP/mADr/5gA8AA4APf/mAIMADwCEAA8AhQAPAIYADwCHAA8AiAAPAKD/5gDDAA8AxQAPAMcADwEl/+YBJ//mATn/5gE7/+YBTgAPAWL/5gF5AA8Bf//mAYIADwGFAA8BjAAPAZX/5gGXAA4Bm//mAcX/5gHMAA4Bzv/mAdEACwHTAA8B1wATAdkADgHeAA4B5f/mAeYACwHoAA4B6v/lAe//5gHw//QB9wASAf4ADwIF/+cCCv/oAg//5wIcAA8CKQAPAjf/5gI5/+YCWAAOAmL/5gJj/+cCbv/mAnD/5gJy/+YCdAAOAnb/5gJ4/+UCef/oAnr/5QJ7/+gCgwAOAocADgKIAA8Cjf/lAo7/6AKSAA8ClAAPAp4ADgKwAAsCsgALArQACwK2/+UCt//oAr4ADgLG/+YCyP/mAsoADgLQ/+YC0f/nAtQADgLVAA8C1gAPAwIADwMEAA8DBgAPAwgADwMKAA8DDAAPAw4ADwMQAA8DEgAPAxQADwMWAA8DGAAPA1T/5gNW/+YDWP/mA1r/5gA3AAb/vwAL/78AOP+fADr/yQA9/60AoP+tASX/nwEn/58BOf+tATv/rQFi/58BZv+/AX//rQGV/60Bm/+tAcX/nwHO/58B0f/sAeX/nwHm/+wB6v/mAe//xAIF/80CD//VAjf/yQI5/8kCYv+fAmP/zAJu/58CcP+tAnL/rQJ2/58CeP/mAnr/5gJ+/98Cjf/mArD/7AKy/+wCtP/sArb/5gLG/9ECyP/sAtD/oQLR/88DVP+tA1b/rQNY/60DWv+tA3D/vwNx/78Dc/+/A3T/vwN1/78Dfv+/A3//vwAwADj/4wA8/+UAPf/kAKD/5AEl/+MBJ//jATn/5AE7/+QBYv/jAX//5AGV/+QBl//lAZv/5AHF/+MBzP/lAc7/4wHR/+kB1//iAdn/5QHe/+UB5f/jAeb/6QHo/+UB/v/qAhz/6gJY/+UCYv/jAm7/4wJw/+QCcv/kAnT/5QJ2/+MCg//lAof/5QKI/+oCnv/lArD/6QKy/+kCtP/pAr7/5QLK/+UC0P/kAtT/5QLV/+oDVP/kA1b/5ANY/+QDWv/kACMAOP/iADz/5AEl/+IBJ//iAWL/4gGX/+QBxf/iAcz/5AHO/+IB0f/pAdf/4QHZ/+QB3v/kAeX/4gHm/+kB6P/kAff/5AH+/+sCHP/rAlj/5AJi/+ICbv/iAnT/5AJ2/+ICg//kAof/5AKI/+sCnv/kArD/6QKy/+kCtP/pAr7/5ALK/+QC1P/kAtX/6wAXADj/6wA9//MAoP/zASX/6wEn/+sBOf/zATv/8wFi/+sBf//zAZX/8wGb//MBxf/rAc7/6wHl/+sCYv/rAm7/6wJw//MCcv/zAnb/6wNU//MDVv/zA1j/8wNa//MANgBR/+8AUv/vAFT/7wBc//AAtP/vAQf/7wEJ/+8BC//vAQz/7wGe/+8Bp//vAfb/7wH3/+4B+f/wAfv/7wH8/+8B/f/vAf//7wIA/+8CAv/vAgP/7wIF/+4CCP/wAgn/7wIL/+8CDP/vAg//7wIR/+8CFv/vAh3/7wIf/+8CIP/vAiT/9AJC//ECTf/vAln/8AJd/+8CY//vAmX/7wJn/+8Cdf/wAoT/8AKK/+8CjP/vApD/7wKf//ACpf/vAqf/7wK5/+8Cu//vAr3/7wK///AC0f/vAuf/7wAiAAb/8gAL//IAWv/1AF3/9QDA//UAwv/1ATr/9QFm//IBo//1Aa3/9QIF//QCBv/1Ag//9AIh//UCJP/1Ajj/9QI6//UCY//1AnH/9QKx//UCs//1ArX/9QLR//UDVf/1A1f/9QNZ//UDW//1A3D/8gNx//IDc//yA3T/8gN1//IDfv/yA3//8gAyAFH/7gBS/+4AVP/uALT/7gEH/+4BCf/uAQv/7gEM/+4Bnv/uAaf/7gH2/+4B9wAUAfv/7gH8/+4B/f/uAf//7gIA/+4CAv/uAgP/7gIF/+0CCf/uAgr/7QIL/+4CDP/uAg3/0AIP/+4CEf/uAhb/7gId/+4CH//uAiD/7gJN/+4CXf/uAmP/7QJl/+4CZ//uAnn/7QJ7/+0Civ/uAoz/7gKO/+0CkP/uAqX/7gKn/+4Ct//tArn/7gK7/+4Cvf/uAtH/7QLn/+4ACgAG//UAC//1AWb/9QNw//UDcf/1A3P/9QN0//UDdf/1A37/9QN///UAWQBH//AASP/wAEn/8ABL//AAU//HAFX/8ACq//AAq//wAKz/8ACt//AArv/wALX/xwC2/8cAt//HALj/xwC5/8cAyv/wAMz/8ADO//AA0P/wANL/8ADW//AA2P/wANr/8ADc//AA3v/wAOD/8ADi//AA5P/wAOb/8AEQ/8cBEv/HART/xwEW//ABRv/wAZz/8AGh//ABr//HAbL/8AGz//ABvP/HAfj/8AIB/8cCBP/wAgf/8AIT//ACFP/wAhf/8AI2/8cCPP/wAj7/6wJA//ACRP/wAmv/8AJt//ACmf/wApv/8AKd//ACqf/HAqv/8AKt/8cCw//wAsT/8ALF//ACz//wAxv/8AMd//ADH//wAyH/8AMj//ADJf/wAyf/8AMp//ADL//HAzH/xwMz/8cDNf/HAzf/xwM5/8cDO//HAz3/8AM///ADQf/wA0P/xwNF//AD3P/rA97/6wPm/+kD6v/rAKEABgANAAsADQBF//AAR//AAEj/wABJ/8AASgANAEv/wABT/+IAVf/AAFoACwBdAAsAo//wAKT/8ACl//AApv/wAKf/8ACo//AAqv/AAKv/wACs/8AArf/AAK7/wAC1/+IAtv/iALf/4gC4/+IAuf/iAMAACwDCAAsAxP/wAMb/8ADI//AAyv/AAMz/wADO/8AA0P/AANL/wADW/8AA2P/AANr/wADc/8AA3v/AAOD/wADi/8AA5P/AAOb/wAEQ/+IBEv/iART/4gEW/8ABOgALAUb/wAFP//ABZgANAZz/wAGh/8ABowALAa0ACwGv/+IBsf/WAbL/wAGz/8ABtv/VAbz/4gHz//AB9//IAfj/wAH+/9cCAf/iAgT/wAIGAAsCB//AAhP/wAIU/8ACF//AAhz/1wIhAAsCNv/iAjgACwI6AAsCPP/AAj7/7AJA/8ACQgAMAkT/wAJr/8ACbf/AAnEACwKI/9cCk//wApX/8AKZ/8ACm//AAp3/wAKp/+ICq//AAq3/4gKxAAsCswALArUACwLD/8ACxP/AAsX/wALHAAsCyQALAs//wALV/9cC1//wAwP/8AMF//ADB//wAwn/8AML//ADDf/wAw//8AMR//ADE//wAxX/8AMX//ADGf/wAxv/wAMd/8ADH//AAyH/wAMj/8ADJf/AAyf/wAMp/8ADL//iAzH/4gMz/+IDNf/iAzf/4gM5/+IDO//iAz3/wAM//8ADQf/AA0P/4gNF/8ADVQALA1cACwNZAAsDWwALA3AADQNxAA0DcwANA3QADQN1AA0DfgANA38ADQPXAA0D2QAOA9r/9QPc/+wD3v/tA+b/7APq/+4D7P+/A/cADQAPAfcAFAH+ABACBf/wAgr/8AIP//ACEgAWAhwAEAJj/+YCef/wAnv/3AKIABACjv/wArf/8ALR//AC1QAQAEwAR//uAEj/7gBJ/+4AS//uAFX/7gCq/+4Aq//uAKz/7gCt/+4Arv/uAMr/7gDM/+4Azv/uAND/7gDS/+4A1v/uANj/7gDa/+4A3P/uAN7/7gDg/+4A4v/uAOT/7gDm/+4BFv/uAUb/7gGc/+4Bof/uAbL/7gGz/+4B9wASAfj/7gH+AA4CBP/uAgX/4wIH/+4CCv/jAg3/uAIP/+MCE//uAhT/7gIX/+4CHAAOAjz/7gJA/+4CRP/uAmP/ugJr/+4Cbf/uAnn/4wJ7/9kCiAAOAo7/4wKZ/+4Cm//uAp3/7gKr/+4Ct//jAsP/7gLE/+4Cxf/uAs//7gLR/+MC1QAOAxv/7gMd/+4DH//uAyH/7gMj/+4DJf/uAyf/7gMp/+4DPf/uAz//7gNB/+4DRf/uACAAWv/AAF3/wADA/8AAwv/AATr/wAGj/8ABrf/AAgX/gAIG/8ACCv/uAg//8AIh/8ACJP/bAjj/wAI6/8ACQv/cAmP/RwJx/8ACef/uAnv/7gKO/+4Csf/AArP/wAK1/8ACt//uAscABwLJ//QC0f9/A1X/wANX/8ADWf/AA1v/wAAhAFr/9ABc//AAXf/0AMD/9ADC//QBOv/0AaP/9AGt//QB9//vAfn/8AH+//MCBv/0Agj/8AIP/+4CHP/zAiH/9AI4//QCOv/0Aln/8AJx//QCdf/wAoT/8AKI//MCn//wArH/9AKz//QCtf/0Ar//8ALV//MDVf/0A1f/9ANZ//QDW//0AAoABv/WAAv/1gFm/9YDcP/WA3H/1gNz/9YDdP/WA3X/1gN+/9YDf//WABUAXP/gAfn/4AIF/3YCCP/gAgr/wgIP/9MCJP/ZAkL/2wJZ/+ACY/8eAnX/4AJ5/8ICe//tAoT/4AKO/8ICn//gArf/wgK//+ACx//wAsn/8gLR/1YADQIF/2QCCv/SAg//2QIk/9kCQv/bAmP/HgJ5/9ICe//tAo7/0gK3/9ICx//wAsn/8gLR/1YACgHv/8MCBf/PAg//1AJj/84Cev/nAn7/3wLG/9ECyP/sAtD/oALR/9EACQIF/2oCD//GAiT/2QJC/9sCY/8eAnv/7QLH//ACyf/yAtH/VgAJAA0AFABBABEAVv/iAGEAEwPc/9kD3v/ZA+b/2QPq/9kD7P+0AAoABv/XAAv/1wFm/9cDcP/XA3H/1wNz/9cDdP/XA3X/1wN+/9cDf//XABQAW//BAZb/xQG0/7QB9P/XAgX/uQIP/+kCJP+yAj7/0gJC/8gCY/+gAnv/xQKa/+QCx//MAsn/zALR/8sC0v/vA9z/5wPe/+cD5v/mA+r/6AA6AAT/xABW/78AW//RAG7/bAB+/24Aif9DAKn/rAC7/6EBlv+4AaX/fgGp/3sBsP+bAbH/eQG0/7IBtv9+Abj/fQG5/3wB1/+vAe8ADwH0/+QB9f+gAff/dAH6/4ACBf+yAg7/fQIP/7ICEP+AAhL/eQIVACgCIv99AiT/fwI+/2YCQv/aAlH/gQJT/5gCX/99AmP/swJp/6ACe/98An7/mgJ//2wCmv/mAsL/awLH/5ICyf+tAs3/ewLQAA8C0f+RAtL/8gPW//ED2f/xA9r/vAPc/7kD3v+5A+b/uQPq/7kD7P+vA/b/7QAGAbT/6gH3/+4CBf/WAg//7QJj/+wC0f/sABIB1/+uAe8AEgH1/+AB9/+tAfr/1gIO/98CEv/SAiL/4AI+/84CUf/dAlP/4gJf/+ACaf/gAnv/6QJ//9oCwv+9As3/3wLQABEAMABW/34AW/+dAG7+8QB+/vQAif6rAKn/XgC7/0sBlv9yAaX/DwGp/woBsP9BAbH/BwG0/2gBtv8PAbj/DgG5/wwB1/9jAe8ABQH0/70B9f9JAff+/gH6/xMCBf9oAg7/DgIP/2gCEP8TAhL/BwIVADACIv8OAiT/EQI+/ucCQv+sAlH/FQJT/zwCX/8OAmP/agJp/0kCe/8MAn7/PwJ//vECmv/AAsL+7wLH/zECyf9fAs3/CgLQAAUC0f8wAtL/1QACAff/aAI+/+4AFwGW/9QBqP/tAasAEQG0/+ABtv/nAbj/5QG5/+4B1wASAfT/6QIF/9cCY//XAnv/0wJ+/9YCf//FApr/5wLGAA0CyAAMAtH/1gLS//ID3P/pA97/5wPm/+cD6v/pAAECPv/xAAICBf/WA3H/iAAJAA0ADwBBAAwAVv/rAGEADgPc/+cD3v/nA+b/5wPq/+kD7P/LAB0AI/+vAFj/7wBb/98BR//u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AX4BfgAFAX8BfwAQAYIBggACAYMBgwADAYQBhAAcAYUBhQACAYYBhgAGAYcBhwARAYgBiAAHAYkBiQAFAYoBigAHAYsBiwAJAYwBjAACAY0BjgAHAZABkAAFAZIBkgALAZQBlAAMAZUBlQAQAZcBlwAPAZoBmgAHAZsBmwAQAZ4BngAWAaMBowAZAacBpwAWAa0BrQAZAa8BrwAXAbEBsQATAbwBvAAXAcMBxAAGAcYBxgAcAckBygAHAcsBywAIAcwBzQAdAc8BzwAJAdEB0QAeAdIB0gAHAdMB0wACAdUB1QADAdYB1gAcAdgB2AAGAdkB2QAPAdsB2wAHAd0B3QAJAd4B4AAHAeEB4QAFAeMB4wALAeQB5AAEAeUB5QAMAeYB5gAeAegB6AAPAekB6QAHAesB6wAHAe0B7QAdAe8B7wAdAfMB8wASAfYB9gAfAfgB+AAVAfkB+QAaAgECAQAXAgMCAwATAgQCBAAUAgYCBgAZAgcCBwATAggCCAAaAg0CDQAgAg8CDwAgAhACEAATAhMCFAAVAhYCFgAfAhwCHQAgAiECIQAZAiUCJQAdAiYCJgAgAikCKQACAjYCNgAXAjcCNwANAjgCOAAZAjkCOQANAjoCOgAZAlECUQATAlICUgAcAlMCUwAfAlQCVAAcAlgCWAAPAlkCWQAaAlwCXAAJAl4CXgAJAmACYAAJAmICYgAJAmQCZAAHAmwCbAAEAm0CbQAUAm4CbgAMAnACcAAQAnECcQAZAnICcgAQAnQCdAAPAnUCdQAaAn0CfQAWAoICggAHAoMCgwAPAoQChAAaAosCiwAHAo8CjwAHApECkQAHApICkgACApMCkwASApQClAACApUClQASApgCmAAGApkCmQAVApsCmwAVAp0CnQAVAp4CngAPAp8CnwAaAqgCqAAFAqkCqQAXAq0CrQAXAq8CrwATArACsAAeArECsQAZArICsgAeArMCswAZArQCtAAeArUCtQAZArgCuAAcArkCuQAfAr0CvQAfAr4CvgAPAr8CvwAaAtYC1gACAtcC1wASAuYC5gAHAucC5wAWAvgC+AAOAvoC+gAOAvwC/AAOAwIDAgACAwMDAwASAwQDBAACAwUDBQASAwYDBgACAwcDBwASAwgDCAACAwkDCQASAwoDCgACAwsDCwASAwwDDAACAw0DDQASAw4DDgACAw8DDwASAxADEAACAxEDEQASAxIDEgACAxMDEwASAxQDFAACAxUDFQASAxYDFgACAxcDFwASAxgDGAACAxkDGQASAxoDGgAGAxsDGwAVAxwDHAAGAx0DHQAVAx4DHgAGAx8DHwAVAyADIAAGAyEDIQAVAyIDIgAGAyMDIwAVAyQDJAAGAyUDJQAVAyYDJgAGAycDJwAVAygDKAAGAykDKQAVAyoDKgAHAywDLAAHAy4DLgAFAy8DLwAXAzADMAAFAzEDMQAXAzIDMgAFAzMDMwAXAzQDNAAFAzUDNQAXAzYDNgAFAzcDNwAXAzgDOAAFAzkDOQAXAzoDOgAFAzsDOwAXA0MDQwAXA0YDRgAIA0gDSAAIA1QDVAAQA1UDVQAZA1YDVgAQA1cDVwAZA1gDWAAQA1kDWQAZA1oDWgAQA1sDWwAZA1wDXAAFA3IDcgABA3YDdgABA3oDewABBDEEMQAEBDMENAAFAAEABgQwAAEAAAAAAAAAAAABAAAAAAAAAAAAFgAZABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAAAAAACAAAAAAAGgAAAAAAAAAAAAgAAAAIAAAAGwAJAAoACwAMABcADQAYAAAAAAAAAAAAAAAAAAMAAAAEAAQABAAAAAQAAAAAAAAAAAAAAAUABQAGAAUABAAAAAcAAAAOAA8AAAAcAA8AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgAAAAIAAoACgAKAAoADQAAAAAAAwADAAMAAwADAAMAAAAEAAQABAAEAAQAAAAAAAAAAAAAAAUABgAGAAYABgAGAAAAAAAOAA4ADgAOAA8AAAAPAAIAAwACAAMAAgADAAgABAAIAAQACAAEAAgABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQACAAEAAgABAAIAAQACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAUABQAAAAAACAAGAAgABgAIAAYACAAEAAAAAAAAAAAAAAAAABsABwAbAAcAGwAHABsABwAJAAAACQAAAAAAAAAKAA4ACgAOAAoADgAKAA4ACgAOAAoADgAMAAAADQAPAA0AGAAQABgAEAAYABAAAAAAAAAACAAEAAAADgAAAAAAAAAAAAAAAgADAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAHAAkAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAACAANAAAAAAACAAAAAAACAAAAGAAAAAgAAAAAAAIAAAAAAAAACAAAAAAAAAAAAA0AAAAXAAAAAAAAAA0ABAAAAAUAAAAOAAQAAAAPAAAAAAAAAAUAAAAAAAAAAAAAAA8AAAAGAAAAAAAEAAQAAAAOAAAAAAAAAAAAAAAOAAYADgAAAAAAAAAAAAAAAAAAAAkAAAAIAAAAAAAAABoAEQAAAAkAAAAAABUAAAACAAAAAAAAAAAAAAAXAAAAAAAAAAAAEQAAAAAACAAAAAAACAAJABUAAAAXAAAAEgAAAAAAAAAAAAAAAAAAAAAAAwAAAAAABQAAAAQAHAAAAAUABQAFABMABQAFAAYABQAFAAQAAAAPAAQAHAAFABQABQAFAAAAAAAFAAAABQAAAAQABAAAAAUABAAHAAAAAAAAABMABQAAAAUABQAPAAAACAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAGAAsADwALAA8ACAAEAAgAAAAIAAQACAAAAAgABAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAABcAHAAAAAAAAAAFAAAAAAAAAAAACQAAAAAABQAAAAUAAAAAAAgABAAIAAQACQAAAA0ADwANAAAAFwAcAAkAAAASABQAAAAAAAAAAAAAAAAAAAAAAAAAFwAcAAAAAAARABMAAAAFAAAABQASABQAAAAFAAAAAgADAAIAAwAAAAAAAAAEAAAABAAAAAQAFwAcAAAAAAAAAAAAAAAFAAAABQAIAAYACAAEAAgABgAAAAAAFQAPABUADwAVAA8AEgAUAAAABQAAAAUAAAAFABcAHAAAAAAAAAAEAAQABAAAAAAAAAAAABEAAAAAAAAACAAEAAAAAAAAAAAAEQATAAIAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwACAAMAAgADAAIAAwAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAACAAGAAgABgAIAAYACAAGAAgABgAIAAYACAAGAAgABAAIAAQACAAEAAgABgAIAAQACgAOAAoADgAAAA4AAAAOAAAADgAAAA4AAAAOAA0ADwANAA8ADQAPAA0ADwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAGQAZAAAAAQABABYAAQABAAEAFgAAAAAAAAAWABYAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgAAAAIAAgAAAABAAAACgIGCBAABERGTFQAGmN5cmwASGdyZWsAdmxhdG4ApAAEAAAAAP//ABIAAAAKABQAHgAoADQAQQBLAFUAXwBpAHMAfQCHAJEAmwClAK8ABAAAAAD//wASAAEACwAVAB8AKQA1AEIATABWAGAAagB0AH4AiACSAJwApgCwAAQAAAAA//8AEgACAAwAFgAgACoANgBDAE0AVwBhAGsAdQB/AIkAkwCdAKcAsQAoAAZBWkUgAFRDUlQgAH5NT0wgAKhOQVYgANRST00gAQBUVVIgASwAAP//ABMAAwANABcAIQArADIANwBEAE4AWABiAGwAdgCAAIoAlACeAKgAsgAA//8AEgAEAA4AGAAiACwAOABFAE8AWQBjAG0AdwCBAIsAlQCfAKkAswAA//8AEgAFAA8AGQAjAC0AOQBGAFAAWgBkAG4AeACCAIwAlgCgAKoAtAAA//8AEwAGABAAGgAkAC4AOgA+AEcAUQBbAGUAbwB5AIMAjQCXAKEAqwC1AAD//wATAAcAEQAbACUALwA7AD8ASABSAFwAZgBwAHoAhACOAJgAogCsALYAAP//ABMACAASABwAJgAwADwAQABJAFMAXQBnAHEAewCFAI8AmQCjAK0AtwAA//8AEwAJABMAHQAnADEAMwA9AEoAVABeAGgAcgB8AIYAkACaAKQArgC4ALljMnNjBFhjMnNjBF5jMnNjBGRjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjMnNjBGpjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBjY21wBHBkbGlnBHhkbGlnBH5kbGlnBIRkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbGlnBIpkbm9tBJBkbm9tBJZkbm9tBJxkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJkbm9tBKJmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhmcmFjBKhsaWdhBLJsaWdhBLpsbnVtBMBsbnVtBMZsbnVtBMxsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsbnVtBNJsb2NsBNhsb2NsBN5sb2NsBORudW1yBOpudW1yBPBudW1yBPZudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxudW1yBPxvbnVtBQJvbnVtBQhvbnVtBQ5vbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRvbnVtBRRwbnVtBRpwbnVtBSBwbnVtBSZwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxwbnVtBSxzbWNwBTJzbWNwBThzbWNwBT5zbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzbWNwBURzczAxBUpzczAxBVBzczAxBVZzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAxBVxzczAyBWJzczAyBWhzczAyBW5zczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAyBXRzczAzBXpzczAzBYBzczAzBYZzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczAzBYxzczA0BZJzczA0BZhzczA0BZ5zczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA0BaRzczA1BapzczA1BbBzczA1BbZzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA1BbxzczA2BcJzczA2BchzczA2Bc5zczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA2BdRzczA3BdpzczA3BeBzczA3BeZzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3BexzczA3Bex0bnVtBfJ0bnVtBfh0bnVtBf50bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgR0bnVtBgQAAAABAAEAAAABAAMAAAABAAIAAAABAAAAAAACAAgACQAAAAEADgAAAAEAEAAAAAEADwAAAAEADQAAAAEAQwAAAAEARQAAAAEARAAAAAEAQgAAAAMAPwBAAEEAAAACABEAEgAAAAEAEgAAAAEAPAAAAAEAPgAAAAEAPQAAAAEAOwAAAAEACgAAAAEADAAAAAEACwAAAAEARwAAAAEASQAAAAEASAAAAAEARgAAAAEAMAAAAAEAMgAAAAEAMQAAAAEALwAAAAEAOAAAAAEAOgAAAAEAOQAAAAEANwAAAAEABQAAAAEABwAAAAEABgAAAAEABAAAAAEAFAAAAAEAFgAAAAEAFQAAAAEAEwAAAAEAGAAAAAEAGgAAAAEAGQAAAAEAFwAAAAEAHAAAAAEAHgAAAAEAHQAAAAEAGwAAAAEAIAAAAAEAIgAAAAEAIQAAAAEAHwAAAAEAJAAAAAEAJgAAAAEAJQAAAAEAIwAAAAEAKAAAAAEAKgAAAAEAKQAAAAEAJwAAAAEALAAAAAEALgAAAAEALQAAAAEAKwAAAAEANAAAAAEANgAAAAEANQAAAAEAMwBLAJgAmACYAJgEJgQmBCYEJgcUB8AOUA5QDmYOiA6IDogOiA6+DuQPEg8SDxIPEg8mDyYPJg8mDzoPOg86DzoPTg9OD04PTg9gD2APYA9gD3oPeg96D3oPvA+8D7wPvA/aD9oP2g/aD/gP+A/4D/gQKhAqECoQKhBcEFwQXBBcEI4QohDuEMwQzBDMEMwQ7hDuEO4Q7hEaAAEAAAABAAgAAgHEAN8DvQPsA+sD6gPpA+gD5wPmA+UD5APjA+ID4QPgA98D3gPdA9wD2wPaA9kD2APXA9YD9gP3BKkDvAO7BFAEUQRSBFMEVARVBFcEWARZBFoEWwRcBF0EXgRfBE4EYARhBGIEYwRkBGUEZgRtBG4EbwRwBEwEcQRyBHMEdAR1BHYEdwR4BE0EeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMERASUBJUElgSXBJgEmQSaBJ0EnARPBJ4EnwSgBKEEogSjBKQEpQSmBKcEqAP+BFYEmwSqBKsErAStBK4ErwSwBLEEsgO6A7kEswS0BLUDuAS2BLcDtwS4A7YEuQPGBLoD0QS7BLwD0gS9A9MD1AS+BL8EwAP5BMED+ATCBMMExATFA/8EAAQBBMYExwQCBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFAQ4BBUEFgTVBBcEGAQZBNYEGgTXBNgEGwQcBB0EHgQfBCAE2QQhBCIE2gQjBNsEJAQlBCcEJgABAN8ACAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4AZgBoAIMAhACFAIYAhwCIAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAnACdAJ4AnwCgAKIAwwDFAMcAyQDLAM0AzwDRANMA1QDXANkA2wDdAN8A4QDjAOUA5wDrAO0A7wDxAPMA9wD5APwA/gEAAQIBBgEIAQoBDwERARMBFQEXARkBGwEdAR8BIQEjASUBJwEpASsBLQEvATEBMwE1ATcBOQE7ATwBPgFAAU4BYgF5AXsBfAF9AX4BfwGAAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gJSAlQCWAJaAlwCXgJiAmQCagJsAnACcgJ0AnYCegJ8An4CgAKaAqICpAKqArADhwOOA5MDlgABAAAAAQAIAAIBdAC3A+wD6wPqA+kD6APnA+YD5QPkA+MD4gPhA+AD3wPeA90D3APbA9oD2QPYA9cD1gP2A/cEqQRQBFEEUgRTBFQEVQRXBFgEWQRaBFsEXARdBF4EXwROBGAEYQRiBGMEZARlBGYEbQRuBG8EcASmBHEEcgRzBHQEdQR2BHcEeARNBHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBEQElASVBJYElwSYBJkEmgSdBJwETwSeBJ8EoAShBKIEowSkBKUEpwSoA/4EVgSbBMgEAwTJBMoEBATLBAUEBgQHBMwECAQJBM0EzgTPBNAE0QTSBNMECgTcBNQECwQMBA0EDgQPBBAEEQQSBBMEFATAA/kEwQP4BMIEwwTEBMUD/wQABAEExgTHBAIEOAQVBBYE1QQXBBgEGQTWBBoE1wTYBBsEHAQdBB4EHwQgBNkEIQQiBNoEIwTbAAEAtwBFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AowCkAKUApgCnAKgAqgCrAKwArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC8AL0AvgC/AMAAwgDEAMYAyADKAMwAzgDQANIA1ADWANgA2gDcAN4A4ADiAOQA5gDoAOwA7gDwAPIA9AD4APoA/QD/AQEBAwEHAQkBCwEQARIBFAEWARgBGgEcAR4BIAEiASQBJgEoASoBLAEuATABMgE0ATYBOAE6AT0BPwFBAU8BYwHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIQIiAlMCVQJZAlsCXQJfAmMCZQJrAm0CcQJzAnUCdwJ7An0CfwKBApsCowKlAqsCsQAGAAAABgASACoAQgBaAHIAigADAAAAAQASAAEAkAABAAAASgABAAEATQADAAAAAQASAAEAeAABAAAASgABAAEATgADAAAAAQASAAEAYAABAAAASgABAAEA8gADAAAAAQASAAEASAABAAAASgABAAECGQADAAAAAQASAAEAMAABAAAASgABAAECGwADAAAAAQASAAEAGAABAAAASgABAAEDLQACAAEBcQF1AAAABAAAAAEACAABBh4ANgByAKQArgC4AMoA/AEOARgBSgFkAX4BkAG6AewB9gIYAjICRAJ2AogCogLMAt4DEAMaAyQDNgNoA3IDfAOGA6ADugPMA/YEKAQyBFQEbgSABLIExATeBQgFGgUkBS4FOAVCBWwFlgXABeoGFAAGAA4AFAAaACAAJgAsAIMAAgFxAIQAAgFyAIYAAgFzAwQAAgF0AVQAAgF1AwIAAgF2AAEABALYAAIBdgABAAQAyQACAXIAAgAGAAwC2gACAXYC3AACA6sABgAOABQAGgAgACYALACLAAIBcQCMAAIBcgMeAAIBcwMcAAIBdAFWAAIBdQMaAAIBdgACAAYADAFKAAIBcgDlAAIDqwABAAQC3gACAXYABgAOABQAGgAgACYALACPAAIBcQCQAAIBcgDrAAIBcwMqAAIBdAFYAAIBdQMsAAIBdgADAAgADgAUAuAAAgFyAuIAAgF2APkAAgOrAAMACAAOABQA/AACAXIC5AACAXYA/gACA6sAAgAGAAwC5gACAXIC6AACAXYABQAMABIAGAAeACQBTAACAXEBBgACAXIAlAACAXMC6gACAXYBCAACA6sABgAOABQAGgAgACYALACVAAIBcQCWAAIBcgCYAAIBcwMwAAIBdAFaAAIBdQMuAAIBdgABAAQC7AACAXIABAAKABAAFgAcARcAAgFyAVwAAgF1Au4AAgF2ARkAAgOrAAMACAAOABQBHQACAXIC8AACAXYBYAACA6sAAgAGAAwC8gACAXYBYgACA6sABgAOABQAGgAgACYALACcAAIBcQCdAAIBcgErAAIBcwNIAAIBdAFeAAIBdQNGAAIBdgACAAYADAL0AAIBcwL2AAIBdgADAAgADgAUAvgAAgFxAvoAAgFyAv4AAgF2AAUADAASABgAHgAkA1QAAgFxAKAAAgFyA1oAAgFzA1gAAgF0A1YAAgF2AAIABgAMATwAAgFyAwAAAgF2AAYADgAUABoAIAAmACwAowACAXEApAACAXIApgACAXMDBQACAXQBVQACAXUDAwACAXYAAQAEAtkAAgF2AAEABADKAAIBcgACAAYADALbAAIBdgLdAAIDqwAGAA4AFAAaACAAJgAsAKsAAgFxAKwAAgFyAx8AAgFzAx0AAgF0AVcAAgF1AxsAAgF2AAEABAFLAAIBcgABAAQC3wACAXYAAQAEAy0AAgF2AAMACAAOABQC4QACAXIC4wACAXYA+gACA6sAAwAIAA4AFAD9AAIBcgLlAAIBdgD/AAIDqwACAAYADALnAAIBcgLpAAIBdgAFAAwAEgAYAB4AJAFNAAIBcQEHAAIBcgC0AAIBcwLrAAIBdgEJAAIDqwAGAA4AFAAaACAAJgAsALUAAgFxALYAAgFyALgAAgFzAzEAAgF0AVsAAgF1Ay8AAgF2AAEABALtAAIBcgAEAAoAEAAWABwBGAACAXIBXQACAXUC7wACAXYBGgACA6sAAwAIAA4AFAEeAAIBcgLxAAIBdgFhAAIDqwACAAYADALzAAIBdgFjAAIDqwAGAA4AFAAaACAAJgAsALwAAgFxAL0AAgFyASwAAgFzA0kAAgF0AV8AAgF1A0cAAgF2AAIABgAMAvUAAgFzAvcAAgF2AAMACAAOABQC+QACAXEC+wACAXIC/wACAXYABQAMABIAGAAeACQDVQACAXEAwAACAXIDWwACAXMDWQACAXQDVwACAXYAAgAGAAwBPQACAXIDAQACAXYAAQAEAVAAAgFyAAEABAFSAAIBcgABAAQBUQACAXIAAQAEAVMAAgFyAAUADAASABgAHgAkAK8AAgFxALAAAgFyAOwAAgFzAysAAgF0AVkAAgF1AAUADAASABgAHgAkAz4AAgFxAzwAAgFyA0IAAgFzA0AAAgF0A0QAAgF2AAUADAASABgAHgAkAz8AAgFxAz0AAgFyA0MAAgFzA0EAAgF0A0UAAgF2AAUADAASABgAHgAkA0wAAgFxA0oAAgFyA1AAAgFzA04AAgF0A1IAAgF2AAUADAASABgAHgAkA00AAgFxA0sAAgFyA1EAAgFzA08AAgF0A1MAAgF2AAEABAHBAAIBcgACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAiQCJACwAmwCbAC0AqQCpAC4AuwC7AC8A9AD0ADABRQFIADEBwAHAADUAAQAAAAEACAABAAYAPwABAAIBIQEiAAEAAAABAAgAAgAOAAQE3QTeBN8E4AABAAQAxwDIANsA3AAEAAAAAQAIAAEAJgACAAoAHAACAAYADAOsAAIASgOxAAIAWAABAAQDsgACAFgAAQACAEoAVwAEAAAAAQAIAAEARAACAAoAFAABAAQDrQACAE0AAQAEA68AAgBNAAQAAAABAAgAAQAeAAIACgAUAAEABAOuAAIAUAABAAQDsAACAFAAAQACAEoDrAABAAAAAQAIAAEABgN5AAEAAQBLAAEAAAABAAgAAQAGAiIAAQABAaEAAQAAAAEACAABAAYDjAABAAEANgABAAAAAQAIAAIAHAACA8EDwAABAAAAAQAIAAIACgACA78DvgABAAIALwBPAAEAAAABAAgAAgAeAAwEMQQzBDIENAQ1BCgEKQQqA/sELAQtBC4AAQAMACcAKAArADMANQBGAEcASABLAFMAVABVAAEAAAABAAgAAgAMAAMELwQwBDAAAQADAEkASwP7AAEAAAABAAgAAgBmAAgERgQ2BDcEOQQ6BEIEQwRFAAEAAAABAAgAAgAWAAgAGwAVABQAHQAZABgAFwAWAAEACAP6BCsEZwRoBGkEagRrBGwAAQAAAAEACAACABYACARnBCsEbARrBGoEaQP6BGgAAQAIABQAFQAWABcAGAAZABsAHQABAAAAAQAIAAIAFgAIABUAFgAXABgAGQAbAB0AFAABAAgENgQ3BDkEOgRCBEMERQRGAAEAAAABAAgAAQAGA3AAAQABABMABgAAAAEACAADAAEAEgABAGYAAAABAAAASgACAAIDgwODAAADxwPQAAEAAQAAAAEACAACADwACgPQA88DzgPNA8wDywPKA8kDyAPHAAEAAAABAAgAAgAaAAoEOwB8AHUAdgQ8BD0EPgQ/BEAEQQACAAEAFAAdAAAAAQAAAAEACAACACYAEAPQA88DzgPNA8wDywPKA8kDyAPHBEkERwRKBEsESAThAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgDyAhkCGwMt", "Roboto-Regular.ttf": "AAEAAAASAQAABAAgR0RFRtRX1FkAAg/sAAACREdQT1NKcuCzAAISMAAAUiRHU1VCw4aZEQACZFQAABfoT1MvMqCnsaYAAAGoAAAAYGNtYXBAmkl2AAAafAAAEshjdnQgJEEG5QAAL9wAAABMZnBnbWf0XKsAAC1EAAABvGdhc3AACAATAAIP4AAAAAxnbHlmHN2bBQAAOfAAAdM2aGRteDc4ERcAABWQAAAE7GhlYWT4RqsOAAABLAAAADZoaGVhCroKggAAAWQAAAAkaG10eOiEiIgAAAIIAAATiGxvY2HgyGepAAAwKAAACcZtYXhwBxIC+QAAAYgAAAAgbmFtZTVTY1kAAg0oAAACmHBvc3T/bQBkAAIPwAAAACBwcmVwdKCP7AAALwAAAADbAAEAAAACAACEKlnoXw889QAbCAAAAAAAxPARLgAAAADQ206a+hv91QkwCHMAAAAJAAIAAAAAAAAAAQAAB2z+DAAACUn6G/5KCTAAAQAAAAAAAAAAAAAAAAAABOIAAQAABOIAjwAWAFQABQABAAAAAAAOAAACAAIUAAYAAQADBIUBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgAAAAAAAAAAAOAACv9QACF/AAAAIQAAAABHT09HAEAAAP/9BgD+AABmB5oCACAAAZ8AAAAABDoFsAAgACAAAgOMAGQAAAAAAAAAAAH7AAAB+wAAAg8AoAKPAIgE7QB3BH4AbgXcAGkE+QBlAWUAZwK8AIUCyAAmA3IAHASJAE4BkgAdAjUAJQIbAJADTAASBH4AcwR+AKoEfgBdBH4AXgR+ADUEfgCaBH4AhAR+AE0EfgBwBH4AZAHwAIYBsQApBBEASARkAJgELgCGA8cASwcvAGoFOAAcBPsAqQU1AHcFPwCpBIwAqQRsAKkFcwB6BbQAqQItALcEagA1BQQAqQROAKkG/ACpBbQAqQWAAHYFDACpBYAAbQTtAKgEvwBQBMYAMQUwAIwFFwAcBxkAPQUEADkEzgAPBMoAVgIfAJIDSAAoAh8ACQNYAEADnAAEAnkAOQRaAG0EfQCMBDAAXASDAF8EPQBdAscAPAR9AGAEaACMAfEAjQHp/78EDgCNAfEAnAcDAIsEagCMBJAAWwR9AIwEjABfArUAjAQgAF8CnQAJBGkAiAPgACEGAwArA/cAKQPJABYD9wBYArUAQAHzAK8CtQATBXEAgwHzAIsEYABpBKYAWwW0AGkE2AAfAesAkwToAFoDWABmBkkAWwOTAJMDwQBmBG4AfwZKAFoDqgB4Av0AggRGAGEC7wBCAu8APgKCAHsEiACaA+kAQwIWAJMB+wB0Au8AegOjAHoDwABmBdwAVQY1AFAGOQBvA8kARAd6//IERABZBYAAdgS6AKYEwgCLBsEATgSwAH4EkQBHBIgAWwScAJUFmgAdAfoAmwRzAJoETwAiAikAIgWLAKIEiACRB6EAaAdEAGEB/ACgBYcAXQK5/+QFfgBlBJIAWwWQAIwE8wCIAgP/tAQ3AGIDxACpA40AjAOrAHgDagCBAfEAjQKtAHkCKgAyA8YAewL8AF4CWgB+AAD8pwAA/W8AAPyLAAD9XgAA/CcB7/04Ag0AtwQLAHECFwCTBHMAsQWkAB8FcQBnBT4AMgSRAHgFtQCyBJEARQW7AE0FiQBaBVIAcQSFAGQEvQCgBAIALgSIAGAEUABjBCUAbQSIAJEEjgB6ApcAwwRuACUD7ABlBMQAKQSIAJEETQBlBIgAYAQsAFEEXQCPBaMAVwWaAF8GlwB6BKEAeQRC/9oGSABKBf8AKgVkAHsIkQAxCKQAsQaCAD4FtACwBQsAogYEADIHQwAbBL8AUAW0ALEFqQAvBQcATQYsAFMF2QCvBXoAlgeHALAHwACwBhIAEAbrALIFBQCjBWQAkwcnALcFGABZBGwAYQSSAJ0DWwCaBNQALgYgABUEEABYBJ4AnARSAJwEoAAsBe8AnQSdAJwEngCcA9gAKAXNAGQEvQCcBFkAZwZ4AJwGngCRBPcAHgY2AJ0EWACdBE0AZAaHAJ0EZAAvBGj/6ARNAGcGyQAnBuQAnASJ//0EngCcBwgAnAYrAIEEVv/cBysAtwX4AJkE0gAoBEYADwcLAMkGCwC8BtEAkwXhAJYJBAC2B9EAmwQjAFAD2wBMBXEAZwSLAFsFCgAWBAMALgVxAGcEiABbBwEAnAYkAH4HCACcBisAgQUyAHUERwBkBP0AdAAA/GcAAPxxAAD9ZgAA/aQAAPobAAD6LARW/9wFGwCoBIkAjARjAKIDkACRBNsAsQQFAJEFCQCjBH4AmgaMAEQFgwA+B88AqAW0AJEIMQCwBvQAkQXuAHEE0wBtBywANAVcAB8FbwCWBGoAgwVwAIoGLwA/BL3/3gUJAKMEWgCaBbIAsQSIAJEFhwBdBKgAaASoAGkEtwA6A0kAOwT2AFcGlABZBuQAZAZWADYFKwAxBEkAUgQHAHkHwQBEBnUAPwf7AKkGoQCQBPYAdgQdAGUFrQAjBSAARgVkAJYDIABvBBQAAAgpAAAEFAAACCkAAAK5AAACCgAAAVwAAAR/AAACMAAAAaIAAADRAAAAAAAAAjQAJQI0ACUFQACiBj8AkAOmAA0BmQBgAZkAMAGXACQBmQBPAtQAaALbADwCwQAkBGkARgSPAFcCsgCKA8QAlAVaAJQA9gAmB6oARAJmAGwCZgBZA6MAOwLvADYDYAB6BKYAWwZVAB8GkACnCHYAqAdjADkGKwCMBH4AXwXaAB8EIgAqBHQAIAVIAF0FTwAfBecAegPOAGgIOgCiBQEAZwUXAJgGJgBUBtcAZAbPAGMGagBZBI8AagWOAKkErwBFBJIAqATFAD8IOgBiAgz/sASCAGUEZACYBBEAPgQvAIUECAArAkwAtQKPAG4CAwBcBPMAPARuAB8EiwA8BtQAPAbUADwE7gA8BpsAXwAAAAAIMwBbCDUAXAQgADsEngBaAfz/tgGRAGcDpACDA54AgQOfAIED9ABpBA4AaQPz/14D7wBuA6QAgQH9AJ8EhQATBFAAigR8AGAEgACKA+YAigPLAIoErABjBOMAigHoAJcDzwArBFQAigO0AIoGAgCKBOMAigS7AGAEXACKBLsAWQRKAIoEIABDBCYAKAR8AHQEZwAUBhUAMQRUACYEKwANBCMARwLvAFAC7wB6Au8AQgLvAD4C7wA2Au8AWwLvAFYC7wA6Au8ATwLvAEkDlgCPArUAngQ6AB4EwwBkBUwAsQUkALIEEwCSBT0AsgQPAJIEIABDBDMAMAQ8ABYDrwCKBGcAFAS7AGAEZwAUA4kAPgTOAIoD7wA/BWcAYAUXAGAE8gB1BXIAJgR8AGAHQQAnB08AigV0ACgEzQCKBFkAigUkAC4GCwAfBD8ARwTsAIoETgCLBMEAJwQfACIFKACKBGoAPQZRAIoGrACKBR0ACAXxAIoETgCKBHsASwZ2AIoEhwBQBBEACwZHAB8EeQCLBQkAiwU3ACMFwgBgBF8ADQSoACYGYQAmBGoAPQRqAIoFwwACBMoAXgQ/AEcEuwBgBDMAMAPjAEIIIgCKBKsAKAR9AIwEMgBcBJMAWwSMAFsDeQBXBI0AjAScAFsEPQBdBH0AYAWBAH4FrgB+BZMAsgXgAH4F4wB+A9UAoASCAIMDrwCKBFgADwTPAD4C7wBQAu8ANgLvAFsC7wBWAu8AOgLvAE8C7wBJBGsAZQQuAEoGpABgBLkAggUAAHgCBv+0AgT/tAH7AJsB+//6AfsAmwH7AIYEUACKAfsAAAI1ACUFXQAlBV0AJQSGAAAExgAxAp3/9AU4ABwFOAAcBTgAHAU4ABwFOAAcBTgAHAU4ABwFNQB3BIwAqQSMAKkEjACpBIwAqQIt/+ACLQCwAi3/6QIt/9YFtACpBYAAdgWAAHYFgAB2BYAAdgWAAHYFMACMBTAAjAUwAIwFMACMBM4ADwRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EMABcBD0AXQQ9AF0EPQBdBD0AXQH6/8YB+gCWAfr/zwH6/7wEagCMBJAAWwSQAFsEkABbBJAAWwSQAFsEaQCIBGkAiARpAIgEaQCIA8kAFgPJABYFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FNQB3BDAAXAU1AHcEMABcBTUAdwQwAFwFNQB3BDAAXAU/AKkFGQBfBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQVzAHoEfQBgBXMAegR9AGAFcwB6BH0AYAVzAHoEfQBgBbQAqQRoAIwCLf+3Afr/nQIt/7YB+v+cAi3/7AH6/9ICLQAYAfH/+wItAKoGlwC3A9oAjQRqADUCA/+0BQQAqQQOAI0ETgChAfEAkwROAKkB8QBXBE4AqQKHAJwETgCpAs0AnAW0AKkEagCMBbQAqQRqAIwFtACpBGoAjARq/7wFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsE7QCoArUAjATtAKgCtQBTBO0AqAK1AGMEvwBQBCAAXwS/AFAEIABfBL8AUAQgAF8EvwBQBCAAXwS/AFAEIABfBMYAMQKdAAkExgAxAp0ACQTGADECxQAJBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBxkAPQYDACsEzgAPA8kAFgTOAA8EygBWA/cAWATKAFYD9wBYBMoAVgP3AFgHev/yBsEATgWAAHYEiABbBID/vgSA/74EJgAoBIUAEwSFABMEhQATBIUAEwSFABMEhQATBIUAEwR8AGAD5gCKA+YAigPmAIoD5gCKAej/vgHoAI4B6P/HAej/tATjAIoEuwBgBLsAYAS7AGAEuwBgBLsAYAR8AHQEfAB0BHwAdAR8AHQEKwANBIUAEwSFABMEhQATBHwAYAR8AGAEfABgBHwAYASAAIoD5gCKA+YAigPmAIoD5gCKA+YAigSsAGMErABjBKwAYwSsAGME4wCKAej/lQHo/5QB6P/KAegABgHoAIkDzwArBFQAigO0AIIDtACKA7QAigO0AIoE4wCKBOMAigTjAIoEuwBgBLsAYAS7AGAESgCKBEoAigRKAIoEIABDBCAAQwQgAEMEIABDBCYAKAQmACgEJgAoBHwAdAR8AHQEfAB0BHwAdAR8AHQEfAB0BhUAMQQrAA0EKwANBCMARwQjAEcEIwBHBTgAHATw//AGGP/+ApEABAWU//oFMv94BWb//QKX/5sFOAAcBPsAqQSMAKkEygBWBbQAqQItALcFBACpBvwAqQW0AKkFgAB2BQwAqQTGADEEzgAPBQQAOQIt/9YEzgAPBIUAZARQAGMEiACRApcAwwRdAI8EcwCaBJAAWwSIAJoD4AAhA/cAKQKX/+YEXQCPBJAAWwRdAI8GlwB6BIwAqQRzALEEvwBQAi0AtwIt/9YEagA1BSQAsgUEAKkFBwBNBTgAHAT7AKkEcwCxBIwAqQW0ALEG/ACpBbQAqQWAAHYFtQCyBQwAqQU1AHcExgAxBQQAOQRaAG0EPQBdBJ4AnASQAFsEfQCMBDAAXAPJABYD9wApBD0AXQNbAJoEIABfAfEAjQH6/7wB6f+/BFIAnAPJABYHGQA9BgMAKwcZAD0GAwArBxkAPQYDACsEzgAPA8kAFgFlAGcCjwCIBB4AoAID/7QBmQAwBvwAqQcDAIsFOAAcBFoAbQSMAKkFtACxBD0AXQSeAJwFiQBaBZoAXwUKABYEA//7CFkAWwlJAHYEvwBQBBAAWAU1AHcEMABcBM4ADwQCAC4CLQC3B0MAGwYgABUCLQC3BTgAHARaAG0FOAAcBFoAbQd6//IGwQBOBIwAqQQ9AF0FhwBdBDcAYgQ3AGIHQwAbBiAAFQS/AFAEEABYBbQAsQSeAJwFtACxBJ4AnAWAAHYEkABbBXEAZwSLAFsFcQBnBIsAWwVkAJMETQBkBQcATQPJABYFBwBNA8kAFgUHAE0DyQAWBXoAlgRZAGcG6wCyBjYAnQUEADkD9wApBIMAXwWpAC8EoAAsBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARa/8oFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjP/wBD3/ugSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQItALcB+gCbAi0AowHxAIUFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsFgABHBJD/xAWAAHYEkABbBYAAdgSQAFsFgAB2BJAAWwV+AGUEkgBbBX4AZQSSAFsFfgBlBJIAWwV+AGUEkgBbBX4AZQSSAFsFMACMBGkAiAUwAIwEaQCIBZAAjATzAIgFkACMBPMAiAWQAIwE8wCIBZAAjATzAIgFkACMBPMAiATOAA8DyQAWBM4ADwPJABYEzgAPA8kAFgShAF8EoQBfBSQAsgRSAJwFtACpBJ0AnATGADED2AAoBQQAOQP3ACkFegCWBFkAZwV6AJYEWQBnBHMAsQNbAJoHQwAbBiAAFQYvAD8Evf/eBGgAjAUF/9QFBf/UBHMAAwNb//wFOAALBCf/0wW0ALEEngCcBbQAqQSdAJwG/ACpBe8AnQWpAC8EoAAsBM4ADwQCAC4FBAA5A/cAKQRQAGMEbAASBj8AkAR+AF0EfgBeBH4ANQR+AJoEkgBkBKYAhwVzAHoEfQBgBbQAqQRqAIwFOAAcBFoAOQSMAF8EPQApAi3/CgH6/vAFgAB2BJAAMwTtAFUCtf+LBTAAjARpACsEpv86BPsAqQR9AIwFPwCpBIMAXwU/AKkEgwBfBbQAqQRoAIwFBACpBA4AjQUEAKkEDgCNBE4AqQHxAIYG/ACpBwMAiwW0AKkEagCMBQwAqQR9AIwE7QCoArUAggS/AFAEIABfBMYAMQKdAAkFFwAcA+AAIQUXABwD4AAhBxkAPQYDACsEygBWA/cAWAXG/ngEhQATBCL/nwUf/7wCJP/ABMX/3wRn/1cE/P/4BIUAEwRQAIoD5gCKBCMARwTjAIoB6ACXBFQAigYCAIoEuwBgBFwAigQmACgEKwANBFQAJgHo/7QEKwANA+YAigOvAIoEIABDAegAlwHo/7QDzwArBFQAigQfACIEhQATBFAAigOvAIoD5gCKBOwAigYCAIoE4wCKBLsAYATOAIoEXACKBHwAYAQmACgEVAAmBD8ARwTjAIoEfABgBCsADQXDAAIE7ACKBB8AIgVnAGAFOAAcBFoAbQSMAKkEPQBdAAAAAQAABOQJCgQAAAICAgMGBQcGAgMDBAUCAgIEBQUFBQUFBQUFBQICBQUFBAgGBgYGBQUGBgIFBgUIBgYGBgYFBQYGCAYFBQIEAgQEAwUFBQUFAwUFAgIFAggFBQUFAwUDBQQHBAQEAwIDBgIFBQYFAgYEBwQEBQcEAwUDAwMFBAICAwQEBwcHBAgFBgUFCAUFBQUGAgUFAgYFCQgCBgMGBQYGAgUEBAQEAgMCBAMDAAAAAAACAgUCBQYGBgUGBQYGBgUFBQUFBQUFAwUEBQUFBQUFBgYHBQUHBwYKCgcGBgcIBQYGBgcHBggJBwgGBggGBQUEBQcFBQUFBwUFBAcFBQcHBgcFBQcFBQUICAUFCAcFCAcFBQgHCAcKCQUEBgUGBQYFCAcIBwYFBgAAAAAAAAUGBQUEBQUGBQcGCQYJCAcFCAYGBQYHBQYFBgUGBQUFBAYHCAcGBQUJBwkHBgUGBgYEBQkFCQMCAgUCAgEAAgIGBwQCAgICAwMDBQUDBAYBCQMDBAMEBQcHCggHBQcFBQYGBwQJBgYHCAgHBQYFBQUJAgUFBQUFAwMCBgUFCAgGBwAJCQUFAgIEBAQEBQQEBAIFBQUFBAQFBgIEBQQHBgUFBQUFBQUFBwUFBQMDAwMDAwMDAwMEAwUFBgYFBgUFBQUEBQUFBAUEBgYGBgUICAYFBQYHBQYFBQUGBQcIBgcFBQcFBQcFBgYGBQUHBQUGBQUFBQQJBQUFBQUEBQUFBQYGBgcHBAUEBQUDAwMDAwMDBQUHBQYCAgICAgIFAgIGBgUFAwYGBgYGBgYGBQUFBQICAgIGBgYGBgYGBgYGBQUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBAQGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUCAgICAgICAgIHBAUCBgUFAgUCBQMFAwYFBgUGBQUGBQYFBgUGAwYDBgMFBQUFBQUFBQUFBQMFAwUDBgUGBQYFBgUGBQYFCAcFBAUFBAUEBQQICAYFBQUFBQUF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sRCxUrG2sc2x5LH7shKyK7JEslCyXLJzsoqyobK6stGy6LL/sxizL7NGs12zdLOLs6Szu7PSs+m0ArQZtDC0R7RdtHO0jLSltLG0vbTUtOu1AbUatTC1RrVdtXa1jLWjtbq10LXmtf+2FrYttkO2XLZztou2ora4ts+25rdJt9+39rgNuCS4OrhRuGi4f7iVuKy43bj0uQq5Ibk4uU+5ZrnOulK6abp/upa6rLrDutq68bsIuxS7K7tCu1S7a7uCu5m7sLvHu9676bv0vAu8F7wjvDq8UbxdvGm8gLyXvKO8r7zEvPm9Bb0RvSi9P71LvVe9br2EvZS9q73Bvdi9774IviG+OL5Pvlu+Z75+vpS+q77Cvtm+7777vwe/E78fvza/TL9Yv2S/cL98v5O/n7+2v8y/47/5wBDAJ8BAwFnAcsCLwOjBTsFlwXzBk8GpwcLB2cHwwgfCHsI1wkvCYsJ5wpDCp8LKwvLDBcMcwzPDScNfw3jDkcOdw6nDwMPXw+3EBcQbxDHESMRhxHjEj8SmxL3E1MTtxQTFG8UxxUrFYcV3xY7F8cYIxh7GNcZMxmLGeMaOxqXHDsckxzrHUcdox3THi8eix7nH0Mfbx/HICMgUyCrINshLyFfIbsh6yJHIqMi/yNjI78j7yRHJKMk+yUrJYMlsyYLJjsmkybrJ0cnqygPKX8p2yozKpMq7ytLK6Mrzyv/LC8sXyyPLL8s7y1fLX8tny2/Ld8t/y4fLj8uXy5/Lp8uvy7fLv8vHy+DL+cwQzCfMPsxUzG/Md8x/zIfMj8yXzK/Mx8zezPXNDM0lzTzNp82vzcjN0M3Yze/OBs4OzhbOHs4mzj3ORc5NzlXOXc5lzm3Odc59zoXOjc6kzqzOtM8Hzw/PF88wz0fPT89Xz3DPeM+Pz6XPvM/Tz+rQAdAa0DPQStBh0GnQcdB90JTQnNCz0MrQ1tDi0PnRENEn0T7RRtFO0WfRgNGM0ZjRpNGw0bzRyNHQ0djR4NH30g7SFtIt0kTSW9J00nzShNKb0rLSy9LT0uzTBdMe0zfTT9Nm03zTldOu08fT4NPo0/DUCdQi1DvUU9Rq1IDUmdSx1MrU49T81RTVMdVO1VrVZtVu1XrVhtWS1Z7VtdXM1eXV/dYW1i7WR9Zf1njWkNar1sXW3tb31xDXKddC11vXdNeN16jXw9fP19vX8tgJ2CDYNthP2GfYgNiY2LHYydji2PrZFdkv2UbZXdlp2XXZgdmN2aTZu9nU2ezaBdod2jbaTtpn2n/amtq02sva4tr52xDbJ9s+21Xba9t324Pbj9ub27Lbydvg2/fcDtwl3DzcU9xq3IDcjNyY3KTcsNzH3N7c9d0L3YHdlt2i3a7dut3G3dLd3t3q3fbeAt4O3hreJt4y3j7eSt5W3mLebt523tTfMt9037PgF+B14JDgq+C34MPgz+Db4Ofg8+E94Y3h5eI74kPiT+JZ4mHiaeJx4nnigeKJ4qDit+LO4uXi/uMX4zDjSeNi43vjlOOt48bj3+P45BHkHeQp5DXkQeRN5FnkZeRx5H3klOSm5LLkvuTK5Nbk4uTu5PrlBuUd5TTlQOVM5VjlZOVw5Xzlk+Wp5bXlweXN5dnl5eXx5f3mCeYV5iHmLeY55kXmUeZZ5mHmaeZx5nnmgeaJ5pHmmeah5qnmsea55tLm6ucC5xnnIecp50LnSudh53fnf+eH54/nl+eu57bnvufG587n1ufe5+bn7uh46MTpIukq6TbpTelj6Wvpd+mD6Y/pmwAAAAUAZAAAAygFsAADAAYACQAMAA8AcbIMEBEREjmwDBCwANCwDBCwBtCwDBCwCdCwDBCwDdAAsABFWLACLxuxAhw+WbAARViwAC8bsQAQPlmyBAIAERI5sgUCABESObIHAgAREjmyCAIAERI5sQoM9LIMAgAREjmyDQIAERI5sAIQsQ4M9DAxISERIQMRAQERAQMhATUBIQMo/TwCxDb+7v66AQzkAgP+/gEC/f0FsPqkBQf9fQJ3+xECeP1eAl6IAl4AAgCg//UBewWwAAMADAAvALAARViwAi8bsQIcPlmwAEVYsAsvG7ELED5ZsgYFCitYIdgb9FmyAQYCERI5MDEBIwMzAzQ2MhYUBiImAVunDcLJN2w4OGw3AZsEFfqtLT09Wjs7AAIAiAQSAiMGAAAEAAkAGQCwAy+yAgoDERI5sAIvsAfQsAMQsAjQMDEBAyMTMwUDIxMzARUebwGMAQ4ebwGMBXj+mgHuiP6aAe4AAgB3AAAE0wWwABsAHwCPALAARViwDC8bsQwcPlmwAEVYsBAvG7EQHD5ZsABFWLACLxuxAhA+WbAARViwGi8bsRoQPlmyHQwCERI5fLAdLxiyAAMKK1gh2Bv0WbAE0LAdELAG0LAdELAL0LALL7IIAworWCHYG/RZsAsQsA7QsAsQsBLQsAgQsBTQsB0QsBbQsAAQsBjQsAgQsB7QMDEBIQMjEyM1IRMhNSETMwMhEzMDMxUjAzMVIwMjAyETIQL9/vhQj1DvAQlF/v4BHVKPUgEIUpBSzOdF4ftQkJ4BCEX++AGa/mYBmokBYosBoP5gAaD+YIv+non+ZgIjAWIAAAEAbv8wBBEGnAArAGYAsABFWLAJLxuxCRw+WbAARViwIi8bsSIQPlmyAiIJERI5sAkQsAzQsAkQsBDQsAkQshMBCitYIdgb9FmwAhCyGQEKK1gh2Bv0WbAiELAf0LAiELAm0LAiELIpAQorWCHYG/RZMDEBNCYnJiY1NDY3NTMVFhYVIzQmIyIGFRQWBBYWFRQGBxUjNSYmNTMUFjMyNgNYgZnVw7+nlai7uIZyd36FATGrUcu3lLrTuZKGg5YBd1x+M0HRoaTSFNvcF+zNjaZ7bmZ5Y3eeaqnOE7+/EefGi5Z+AAUAaf/rBYMFxQANABoAJgA0ADgAeACwAEVYsAMvG7EDHD5ZsABFWLAjLxuxIxA+WbADELAK0LAKL7IRBAorWCHYG/RZsAMQshgECitYIdgb9FmwIxCwHdCwHS+wIxCyKgQKK1gh2Bv0WbAdELIxBAorWCHYG/RZsjUjAxESObA1L7I3AyMREjmwNy8wMRM0NjMyFhUVFAYjIiY1FxQWMzI2NTU0JiIGFQE0NiAWFRUUBiAmNRcUFjMyNjU1NCYjIgYVBScBF2mng4Wlp4GCqopYSkdXVpRWAjunAQaop/78qopYSkhWV0lHWf4HaQLHaQSYg6qriEeEp6eLB05lYlVJTmZmUvzRg6moi0eDqaeLBk9lY1VKT2RjVPNCBHJCAAMAZf/sBPMFxAAeACcAMwCFALAARViwCS8bsQkcPlmwAEVYsBwvG7EcED5ZsABFWLAYLxuxGBA+WbIiHAkREjmyKgkcERI5sgMiKhESObIQKiIREjmyEQkcERI5shMcCRESObIZHAkREjmyFhEZERI5sBwQsh8BCitYIdgb9FmyIR8RERI5sAkQsjEBCitYIdgb9FkwMRM0NjcmJjU0NjMyFhUUBgcHATY1MxQHFyMnBgYjIiQFMjcBBwYVFBYDFBc3NjY1NCYjIgZldaVhQsSolsRZb2sBRESne9DeYUrHZ9X+/gHXk3r+nSGnmSJ2dkQyZExSYAGHabB1dpBHpryvhViVUk/+fYKf/6j5c0JF4ktwAakYe4J2jgPlYJBTMFc+Q1lvAAEAZwQhAP0GAAAEABAAsAMvsgIFAxESObACLzAxEwMjEzP9FYEBlQWR/pAB3wABAIX+KgKVBmsAEQAJALAOL7AELzAxEzQSEjcXBgIDBxATFhcHJicChXnwgSaSuwkBjVV1JoV57AJP4gGgAVRGenD+NP7jVf5+/uSqYHFKrgFUAAABACb+KgI3BmsAEQAJALAOL7AELzAxARQCAgcnNhITNTQCAic3FhISAjd18YQnmrsCWJ1iJ4TvdwJF3/5n/qZJcXYB8QEvINIBaQEeUHFJ/qr+ZAABABwCYQNVBbAADgAgALAARViwBC8bsQQcPlmwANAZsAAvGLAJ0BmwCS8YMDEBJTcFAzMDJRcFEwcDAycBSv7SLgEuCZkKASku/s3GfLq0fQPXWpdwAVj+o26YW/7xXgEg/udbAAABAE4AkgQ0BLYACwAaALAJL7AA0LAJELIGAQorWCHYG/RZsAPQMDEBIRUhESMRITUhETMCngGW/mq6/moBlroDDa/+NAHMrwGpAAEAHf7eATQA2wAIABcAsAkvsgQFCitYIdgb9FmwANCwAC8wMRMnNjc1MxUUBoZpXgS1Y/7eSIOLp5FlygAAAQAlAh8CDQK2AAMAEQCwAi+yAQEKK1gh2Bv0WTAxASE1IQIN/hgB6AIflwABAJD/9QF2ANEACQAbALAARViwBy8bsQcQPlmyAgUKK1gh2Bv0WTAxNzQ2MhYVFAYiJpA5cjs7cjlhMEBAMC4+PgABABL/gwMQBbAAAwATALAAL7AARViwAi8bsQIcPlkwMRcjATOxnwJgnn0GLQAAAgBz/+wECgXEAA0AGwA5ALAARViwCi8bsQocPlmwAEVYsAMvG7EDED5ZsAoQshEBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARACIyICAzUQEjMyEhMnNCYjIgYHERQWMzI2NwQK3uzp4ATe7eveA7mEj46CAomLiYUDAm3+u/7EATUBM/cBQQE4/tP+xg3r19be/tjs4dTkAAEAqgAAAtkFtwAGADkAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvsgMBCitYIdgb9FmyAgMFERI5MDEhIxEFNSUzAtm6/osCEh0E0YmoxwAAAQBdAAAEMwXEABcATQCwAEVYsBAvG7EQHD5ZsABFWLAALxuxABA+WbIXAQorWCHYG/RZsALQsgMQFxESObAQELIJAQorWCHYG/RZsBAQsAzQshUXEBESOTAxISE1ATY2NTQmIyIGFSM0JDMyFhUUAQEhBDP8RgH4cFWKc4qZuQED2cvs/u7+egLbhQIwf59VcpKdjMn41bHX/tf+WQABAF7/7AP5BcQAJgB4ALAARViwDS8bsQ0cPlmwAEVYsBkvG7EZED5ZsgANGRESObAAL7LPAAFdsp8AAXGyLwABXbJfAAFysA0QsgYBCitYIdgb9FmwDRCwCdCwABCyJgEKK1gh2Bv0WbITJgAREjmwGRCwHNCwGRCyHwEKK1gh2Bv0WTAxATM2NjUQIyIGFSM0NjMyFhUUBgcWFhUUBCAkNTMUFjMyNjU0JicjAYaLg5b/eI+5/cPO6ntqeIP/AP5m/v+6ln6GjpyTiwMyAoZyAQCJca3l2sJfsiwmsH/E5t62c4qMg3+IAgACADUAAARQBbAACgAOAEkAsABFWLAJLxuxCRw+WbAARViwBC8bsQQQPlmyAQkEERI5sAEvsgIBCitYIdgb9FmwBtCwARCwC9CyCAYLERI5sg0JBBESOTAxATMVIxEjESE1ATMBIREHA4bKyrr9aQKMxf2BAcUWAemX/q4BUm0D8fw5AsooAAEAmv/sBC0FsAAdAGEAsABFWLABLxuxARw+WbAARViwDS8bsQ0QPlmwARCyBAEKK1gh2Bv0WbIHDQEREjmwBy+yGgEKK1gh2Bv0WbIFBxoREjmwDRCwEdCwDRCyFAEKK1gh2Bv0WbAHELAd0DAxExMhFSEDNjMyEhUUAiMiJiczFhYzMjY1NCYjIgcHzkoC6v2zLGuIx+rz2sH0Ea8RkHaBk5+EeUUxAtoC1qv+cz/++eDh/v3WvX1/sJuSsTUoAAIAhP/sBBwFsQAUACEATgCwAEVYsAAvG7EAHD5ZsABFWLANLxuxDRA+WbAAELIBAQorWCHYG/RZsgcNABESObAHL7IVAQorWCHYG/RZsA0QshwBCitYIdgb9FkwMQEVIwYEBzYzMhIVFAIjIgA1NRAAJQMiBgcVFBYzMjY1NCYDTyLY/wAUc8e+4/XO0f78AVcBU9JfoB+ieX2PkQWxnQT44YT+9NTh/vIBQf1HAZIBqQX9cHJWRLTcuJWWuQABAE0AAAQlBbAABgAyALAARViwBS8bsQUcPlmwAEVYsAEvG7EBED5ZsAUQsgMBCitYIdgb9FmyAAMFERI5MDEBASMBITUhBCX9pcICWfzsA9gFSPq4BRiYAAADAHD/7AQOBcQAFwAhACsAYQCwAEVYsBUvG7EVHD5ZsABFWLAJLxuxCRA+WbInCRUREjmwJy+yzycBXbIaAQorWCHYG/RZsgMaJxESObIPJxoREjmwCRCyHwEKK1gh2Bv0WbAVELIiAQorWCHYG/RZMDEBFAYHFhYVFAYjIiY1NDY3JiY1NDYzMhYDNCYiBhQWMzI2ASIGFRQWMjY0JgPsc2Jyhf/Q0v2BcmFw7MHA7Zeb+peTg4KU/upth4XehYoENG2qMDG8d73g4bx2vjEwqmy42Nj8oXqamPiOjwQah3RviYnejAAAAgBk//8D+AXEABcAJABYALAARViwCy8bsQscPlmwAEVYsBMvG7ETED5ZsgMTCxESObADL7IAAwsREjmwExCyFAEKK1gh2Bv0WbADELIYAQorWCHYG/RZsAsQsh8BCitYIdgb9FkwMQEGBiMiJiY1NDY2MzISERUQAAUjNTM2NiUyNjc1NCYjIgYVFBYDPjqhYH67Zm/MiNj5/rD+rSQn5fb+7l2dJJ55epSPAoBFVHzhiJLqfP69/uk2/lf+eQWcBOf6clRKtuS7mZXBAP//AIb/9QFtBEQAJgAS9gABBwAS//cDcwAQALAARViwDS8bsQ0YPlkwMf//ACn+3gFVBEQAJwAS/98DcwEGABAMAAAQALAARViwAy8bsQMYPlkwMQABAEgAwwN6BEoABgAWALAARViwBS8bsQUYPlmwAtCwAi8wMQEFFQE1ARUBCAJy/M4DMgKE/cQBe5IBesQAAAIAmAGPA9oDzwADAAcAJQCwBy+wA9CwAy+yAAEKK1gh2Bv0WbAHELIEAQorWCHYG/RZMDEBITUhESE1IQPa/L4DQvy+A0IDLqH9wKAAAAEAhgDEA9wESwAGABYAsABFWLACLxuxAhg+WbAF0LAFLzAxAQE1ARUBNQMb/WsDVvyqAooBA77+hpL+hcAAAgBL//UDdgXEABgAIQBRALAARViwEC8bsRAcPlmwAEVYsCAvG7EgED5ZshsFCitYIdgb9FmyABsQERI5sgQQABESObAQELIJAQorWCHYG/RZsBAQsAzQshUAEBESOTAxATY2Nzc2NTQmIyIGFSM2NjMyFhUUBwcGFQM0NjIWFAYiJgFlAjJNg1RuaWZ8uQLjtr3Tom1JwTdsODhsNwGad4pUh19taXdsW6LHy7GvqmxRmP7DLT09Wjs7AAACAGr+OwbWBZcANQBCAGgAsDIvsABFWLAILxuxCBA+WbAD0LIPMggREjmwDy+yBQgPERI5sAgQsjkCCitYIdgb9FmwFdCwMhCyGwIKK1gh2Bv0WbAIELAq0LAqL7IjAgorWCHYG/RZsA8QskACCitYIdgb9FkwMQEGAiMiJwYGIyImNzYSNjMyFhcDBjMyNjcSACEiBAIHBhIEMzI2NxcGBiMiJAITEhIkMzIEEgEGFjMyNjc3EyYjIgYGygzYtbs1NotKjpITD3m/aVGAUDQTk3GMBhP+uf6yyf7ItAsMkAEn0Vq1PCU+zWn6/pizDAzeAXzv+QFkrvvyDlFYPG8kAS44QHWZAfby/uioVVPozaUBA5QrP/3W5+C0AYUBmMf+iPb4/pPBLCNzJzLhAacBGwETAbfv4P5a/pCOmGZfCQH3He4AAAIAHAAABR0FsAAHAAoARgCwAEVYsAQvG7EEHD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMjATMBIwEhAwPN/Z6JxgIsqAItxf1NAe/4AXz+hAWw+lACGgKpAAMAqQAABIgFsAAOABYAHwBVALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7IPAQorWCHYG/RZsggPFxESObAAELIQAQorWCHYG/RZsAEQsh8BCitYIdgb9FkwMTMRITIWFRQGBxYWFRQGIwERITI2NRAhJSEyNjU0JiMhqQHc7e90ZHaJ/uj+xwE9hpv+4v7AASJ+l4yP/uQFsMTAZp0rIbmAxOACqf30i3oBB5p+bHhtAAABAHf/7ATYBcQAHABFALAARViwCy8bsQscPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbADELAc0DAxAQYEIyAAETU0EiQzMgAXIyYmIyICFRUUEjMyNjcE2Bv+4e7+/v7JkQEKr+gBGBfBGaeWuNHGsqCrHAHO5/sBcgE2jMsBNKX+/eWunP7w+43t/uiRtAACAKkAAATGBbAACwAVADkAsABFWLABLxuxARw+WbAARViwAC8bsQAQPlmwARCyDAEKK1gh2Bv0WbAAELINAQorWCHYG/RZMDEzESEyBBIXFRQCBAcDETMyEjU1NAInqQGbvgEknwGf/tnE08re9+nWBbCo/srJXc7+yqYCBRL7iwEU/1X4ARMCAAABAKkAAARGBbAACwBOALAARViwBi8bsQYcPlmwAEVYsAQvG7EEED5ZsgsEBhESObALL7IAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASERIRUhESEVIREhA+D9iQLd/GMDk/0tAncCof38nQWwnv4sAAEAqQAABC8FsAAJAEAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyCQIEERI5sAkvsgABCitYIdgb9FmwBBCyBgEKK1gh2Bv0WTAxASERIxEhFSERIQPM/Z3AA4b9OgJjAoP9fQWwnv4OAAEAev/sBNwFxAAfAGIAsABFWLALLxuxCxw+WbAARViwAy8bsQMQPlmwCxCwD9CwCxCyEQEKK1gh2Bv0WbADELIYAQorWCHYG/RZsh4DCxESObAeL7QPHh8eAl20Px5PHgJdsh0BCitYIdgb9FkwMSUGBCMiJAInNRAAITIEFyMCISICAxUUEjMyNjcRITUhBNxK/vewsv7slwIBMwEW5AEWH8A2/t7BxwHgv2yiNf6vAhC/ammnATTLfwFJAWrp1gEh/vH+/3f1/t8wOQFHnAABAKkAAAUIBbAACwBVALAARViwBi8bsQYcPlmwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmwABCwCdCwCS+ynwkBcrIvCQFdsgIBCitYIdgb9FkwMSEjESERIxEzESERMwUIwf0iwMAC3sECof1fBbD9jgJyAAABALcAAAF3BbAAAwAdALAARViwAi8bsQIcPlmwAEVYsAAvG7EAED5ZMDEhIxEzAXfAwAWwAAABADX/7APMBbAADwAuALAARViwAC8bsQAcPlmwAEVYsAUvG7EFED5ZsAnQsAUQsgwBCitYIdgb9FkwMQEzERQGIyImNTMUFjMyNjcDC8H70dnywImCd5MBBbD7+dHs3sh9jJaHAAABAKkAAAUFBbAACwB0ALAARViwBS8bsQUcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAIFERI5QBFKAFoAagB6AIoAmgCqALoACF2yOQABXbIGBQIREjlAEzYGRgZWBmYGdgaGBpYGpga2BgldMDEBBxEjETMRATMBASMCG7LAwAKH6P3DAmrmAqW5/hQFsP0wAtD9ffzTAAEAqQAABBwFsAAFACgAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WTAxJSEVIREzAWoCsvyNwZ2dBbAAAAEAqQAABlIFsAAOAFkAsABFWLAALxuxABw+WbAARViwAi8bsQIcPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbAARViwDC8bsQwQPlmyAQAEERI5sgcABBESObIKAAQREjkwMQkCMxEjERMBIwETESMRAaEB3AHc+cAS/iKT/iMTwAWw+1wEpPpQAjcCZPtlBJj9n/3JBbAAAAEAqQAABQgFsAAJAEyyAQoLERI5ALAARViwBS8bsQUcPlmwAEVYsAgvG7EIHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyAgUAERI5sgcFABESOTAxISMBESMRMwERMwUIwf0jwcEC378EYvueBbD7mQRnAAIAdv/sBQkFxAARAB8AOQCwAEVYsA0vG7ENHD5ZsABFWLAELxuxBBA+WbANELIVAQorWCHYG/RZsAQQshwBCitYIdgb9FkwMQEUAgQjIiQCJzU0EiQzMgQSFScQAiMiAgcVFBIzMhI3BQmQ/viwrP72kwKSAQusrwELkL/Qu7bRA9O5uswDAqnW/sGoqQE5zmnSAUKrqf6/1QIBAwEV/uv2a/v+4QEP/QAAAgCpAAAEwAWwAAoAEwBNsgoUFRESObAKELAM0ACwAEVYsAMvG7EDHD5ZsABFWLABLxuxARA+WbILAwEREjmwCy+yAAEKK1gh2Bv0WbADELISAQorWCHYG/RZMDEBESMRITIEFRQEIyUhMjY1NCYnIQFpwAIZ7wEP/vf3/qkBWZqkpI/+nAI6/cYFsPTJ1OWdkYmCnAMAAgBt/woFBgXEABUAIgBNsggjJBESObAIELAZ0ACwAEVYsBEvG7ERHD5ZsABFWLAILxuxCBA+WbIDCBEREjmwERCyGQEKK1gh2Bv0WbAIELIgAQorWCHYG/RZMDEBFAIHBQclBiMiJAInNTQSJDMyBBIVJxACIyICBxUUEiASNwUBhnkBBIP+zUhQrP72kwKSAQussAELkMDNvrXRA9EBdMwDAqnT/s9WzHn0EqkBOc5p0gFCq6r+wdUBAQEBF/7r9mv6/uABD/0AAAIAqAAABMkFsAAOABcAYbIFGBkREjmwBRCwFtAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwAEVYsA0vG7ENED5ZshAEAhESObAQL7IAAQorWCHYG/RZsgsABBESObAEELIWAQorWCHYG/RZMDEBIREjESEyBBUUBgcBFSMBITI2NTQmJyECv/6qwQHi9gEJk4MBVs79bgEnj6mhmP7aAk39swWw4NaIyjL9lgwC6pR8h5ABAAABAFD/7ARyBcQAJgBhsgAnKBESOQCwAEVYsAYvG7EGHD5ZsABFWLAaLxuxGhA+WbAGELAL0LAGELIOAQorWCHYG/RZsiYaBhESObAmELIUAQorWCHYG/RZsBoQsB/QsBoQsiIBCitYIdgb9FkwMQEmJjU0JDMyFhYVIzQmIyIGFRQWBBYWFRQEIyIkJjUzFBYzMjY0JgJW9+EBE9yW64HBqJmOn5cBa81j/uznlv78jcHDo5iilgKJR8+YrOF0zHmEl31vWXtme6RvsdVzyH+EmXzWdQAAAQAxAAAElwWwAAcALgCwAEVYsAYvG7EGHD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQMDEBIREjESE1IQSX/iy//i0EZgUS+u4FEp4AAQCM/+wEqgWwABIAPLIFExQREjkAsABFWLAALxuxABw+WbAARViwCS8bsQkcPlmwAEVYsAUvG7EFED5Zsg4BCitYIdgb9FkwMQERBgAHByIAJxEzERQWMzI2NREEqgH+/9wz7/7kAr6uoaOtBbD8Is7++hACAQLiA+D8Jp6vrp4D2wAAAQAcAAAE/QWwAAYAOLIABwgREjkAsABFWLABLxuxARw+WbAARViwBS8bsQUcPlmwAEVYsAMvG7EDED5ZsgABAxESOTAxJQEzASMBMwKLAaDS/eSq/eXR/wSx+lAFsAAAAQA9AAAG7QWwABIAWQCwAEVYsAMvG7EDHD5ZsABFWLAILxuxCBw+WbAARViwES8bsREcPlmwAEVYsAovG7EKED5ZsABFWLAPLxuxDxA+WbIBAwoREjmyBgMKERI5sg0DChESOTAxARc3ATMBFzcTMwEjAScHASMBMwHjHCkBIKIBGSgf4sH+n6/+1BcX/smv/qDAAcvArQP4/AiwxAPk+lAEJW9v+9sFsAABADkAAATOBbAACwBrALAARViwAS8bsQEcPlmwAEVYsAovG7EKHD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyAAEEERI5QAmGAJYApgC2AARdsgYBBBESOUAJiQaZBqkGuQYEXbIDAAYREjmyCQYAERI5MDEBATMBASMBASMBATMChAFd4v40Adfk/pr+mOMB2P4z4QOCAi79Lv0iAjj9yALeAtIAAAEADwAABLsFsAAIADEAsABFWLABLxuxARw+WbAARViwBy8bsQccPlmwAEVYsAQvG7EEED5ZsgABBBESOTAxAQEzAREjEQEzAmUBfNr+CsD+CtwC1QLb/G/94QIfA5EAAAEAVgAABHoFsAAJAEQAsABFWLAHLxuxBxw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WbIEAAIREjmwBxCyBQEKK1gh2Bv0WbIJBQcREjkwMSUhFSE1ASE1IRUBOQNB+9wDHvzvA/ednZAEgp6NAAABAJL+yAILBoAABwAiALAEL7AHL7IAAQorWCHYG/RZsAQQsgMBCitYIdgb9FkwMQEjETMVIREhAgu/v/6HAXkF6Pl4mAe4AAABACj/gwM4BbAAAwATALACL7AARViwAC8bsQAcPlkwMRMzASMosAJgsAWw+dMAAQAJ/sgBgwaAAAcAJQCwAi+wAS+wAhCyBQEKK1gh2Bv0WbABELIGAQorWCHYG/RZMDETIREhNTMRIwkBev6GwcEGgPhImAaIAAABAEAC2QMUBbAABgAnsgAHCBESOQCwAEVYsAMvG7EDHD5ZsADQsgEHAxESObABL7AF0DAxAQMjATMBIwGqvqwBK38BKqsEu/4eAtf9KQABAAT/aQOYAAAAAwAbALAARViwAy8bsQMQPlmyAAEKK1gh2Bv0WTAxBSE1IQOY/GwDlJeXAAABADkE2AHaBf4AAwAjALABL7IPAQFdsADQGbAALxiwARCwAtCwAi+0DwIfAgJdMDEBIwEzAdqf/v7fBNgBJgAAAgBt/+wD6gROAB4AKAB5shcpKhESObAXELAg0ACwAEVYsBcvG7EXGD5ZsABFWLAELxuxBBA+WbAARViwAC8bsQAQPlmyAhcEERI5sgsXBBESObALL7AXELIPAQorWCHYG/RZshILFxESObAEELIfAQorWCHYG/RZsAsQsiMBCitYIdgb9FkwMSEmJwYjIiY1NCQzMzU0JiMiBhUjNDY2MzIWFxEUFxUlMjY3NSMgFRQWAygQCoGzoM0BAem0dHFjhrpzxXa71AQm/gtXnCOR/qx0IFKGtYupu1Vhc2RHUZdYu6T+DpVYEI1aSN7HV2IAAgCM/+wEIAYAAA4AGQBkshIaGxESObASELAD0ACwCC+wAEVYsAwvG7EMGD5ZsABFWLADLxuxAxA+WbAARViwBi8bsQYQPlmyBQgDERI5sgoMAxESObAMELISAQorWCHYG/RZsAMQshcBCitYIdgb9FkwMQEUAiMiJwcjETMRNiASESc0JiMiBxEWMzI2BCDkwM1wCaq5cAGK4bmSibdQVbSFlAIR+P7TkX0GAP3Di/7W/v0Fvc6q/iyqzgABAFz/7APsBE4AHQBJshAeHxESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsAPQsBAQsBTQsBAQshcBCitYIdgb9FkwMSUyNjczDgIjIgARNTQ2NjMyFhcjJiYjIgYVFRQWAj5jlAivBXbFbt3++3TZlLbxCK8Ij2mNm5qDeFpdqGQBJwEAH572iNquaYfLwCO7ygAAAgBf/+wD8AYAAA8AGgBkshgbHBESObAYELAD0ACwBi+wAEVYsAMvG7EDGD5ZsABFWLAMLxuxDBA+WbAARViwCC8bsQgQPlmyBQMMERI5sgoDDBESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMRM0EjMyFxEzESMnBiMiAjUXFBYzMjcRJiMiBl/sv75vuaoJb8a87bmYhrBRU6yImAIm+QEvggI0+gB0iAE0+Ae40J4B8ZnSAAACAF3/7APzBE4AFQAdAGmyCB4fERI5sAgQsBbQALAARViwCC8bsQgYPlmwAEVYsAAvG7EAED5ZshoIABESObAaL7S/Gs8aAl2yDAEKK1gh2Bv0WbAAELIQAQorWCHYG/RZshMIABESObAIELIWAQorWCHYG/RZMDEFIgA1NTQ2NjMyEhEVIRYWMzI2NxcGASIGByE1JiYCTdz+7HvdgdPq/SMEs4piiDNxiP7ZcJgSAh4IiBQBIfIiof2P/ur+/U2gxVBCWNEDyqOTDo2bAAEAPAAAAsoGFQAVAGOyDxYXERI5ALAARViwCC8bsQgePlmwAEVYsAMvG7EDGD5ZsABFWLARLxuxERg+WbAARViwAC8bsQAQPlmwAxCyAQEKK1gh2Bv0WbAIELINAQorWCHYG/RZsAEQsBPQsBTQMDEzESM1MzU0NjMyFwcmIyIGFRUzFSMR56uruqpAPwovNVpi5+cDq49vrr4RlglpYnKP/FUAAgBg/lYD8gROABkAJACDsiIlJhESObAiELAL0ACwAEVYsAMvG7EDGD5ZsABFWLAGLxuxBhg+WbAARViwCy8bsQsSPlmwAEVYsBcvG7EXED5ZsgUDFxESObIPFwsREjmwCxCyEQEKK1gh2Bv0WbIVAxcREjmwFxCyHQEKK1gh2Bv0WbADELIiAQorWCHYG/RZMDETNBIzMhc3MxEUBiMiJic3FjMyNjU1BiMiAjcUFjMyNxEmIyIGYOrBxm8JqfnSdeA7YHesh5dvwL7rupaHr1JVqoeYAib9ASuMePvg0vJkV2+TmIpdgAEy87fRnwHum9IAAAEAjAAAA98GAAARAEmyChITERI5ALAQL7AARViwAi8bsQIYPlmwAEVYsAUvG7EFED5ZsABFWLAOLxuxDhA+WbIAAgUREjmwAhCyCgEKK1gh2Bv0WTAxATYzIBMRIxEmJiMiBgcRIxEzAUV7xQFXA7kBaW9aiCa5uQO3l/59/TUCzHVwYE78/QYAAAIAjQAAAWgFxAADAAwAPrIGDQ4REjmwBhCwAdAAsABFWLACLxuxAhg+WbAARViwAC8bsQAQPlmwAhCwCtCwCi+yBgUKK1gh2Bv0WTAxISMRMwM0NjIWFAYiJgFVubnIN2w4OGw3BDoBHy0+Plo8PAAC/7/+SwFZBcQADAAWAEmyEBcYERI5sBAQsADQALAARViwDC8bsQwYPlmwAEVYsAMvG7EDEj5ZsggBCitYIdgb9FmwDBCwFdCwFS+yEAUKK1gh2Bv0WTAxAREQISInNRYzMjY1EQM0NjMyFhQGIiYBS/7lPTQgND5BEzc1Njg4bDYEOvtJ/sgSlAhDUwS7AR8sPz5aPDwAAAEAjQAABAwGAAAMAHUAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIACAIREjlAFToASgBaAGoAegCKAJoAqgC6AMoACl2yBggCERI5QBU2BkYGVgZmBnYGhgaWBqYGtgbGBgpdMDEBBxEjETMRNwEzAQEjAbp0ubljAVHh/lsB1tkB9Xn+hAYA/F93AWT+PP2KAAEAnAAAAVUGAAADAB0AsABFWLACLxuxAh4+WbAARViwAC8bsQAQPlkwMSEjETMBVbm5BgAAAAEAiwAABngETgAdAHeyBB4fERI5ALAARViwAy8bsQMYPlmwAEVYsAgvG7EIGD5ZsABFWLAALxuxABg+WbAARViwCy8bsQsQPlmwAEVYsBQvG7EUED5ZsABFWLAbLxuxGxA+WbIBCAsREjmyBQgLERI5sAgQshABCitYIdgb9FmwGNAwMQEXNjMyFzY2MyATESMRNCYjIgYHESMRNCMiBxEjEQE6BXfK41I2rXYBZAa5an1niAu657ZDuQQ6eIyuTmD+h/0rAsp0c3to/TICxeyb/OoEOgABAIwAAAPfBE4AEQBTsgsSExESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwBi8bsQYQPlmwAEVYsA8vG7EPED5ZsgEDBhESObADELILAQorWCHYG/RZMDEBFzYzIBMRIxEmJiMiBgcRIxEBOwZ8yAFXA7kBaW9aiCa5BDqInP59/TUCzHVwYE78/QQ6AAACAFv/7AQ0BE4ADwAbAEOyDBwdERI5sAwQsBPQALAARViwBC8bsQQYPlmwAEVYsAwvG7EMED5ZshMBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WTAxEzQ2NjMyABUVFAYGIyIANRcUFjMyNjU0JiMiBlt934/dARF54ZLc/u+6p4yNpqmMiagCJ5/+iv7O/g2e+4wBMvwJtNrdx7Ld2gACAIz+YAQeBE4ADwAaAG6yExscERI5sBMQsAzQALAARViwDC8bsQwYPlmwAEVYsAkvG7EJGD5ZsABFWLAGLxuxBhI+WbAARViwAy8bsQMQPlmyBQwDERI5sgoMAxESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMQEUAiMiJxEjETMXNjMyEhEnNCYjIgcRFjMyNgQe4sHFcbmpCXHJw+O5nIioVFOrhZ0CEff+0n399wXaeIz+2v76BLfUlf37lNMAAAIAX/5gA+8ETgAPABoAa7IYGxwREjmwGBCwA9AAsABFWLADLxuxAxg+WbAARViwBi8bsQYYPlmwAEVYsAgvG7EIEj5ZsABFWLAMLxuxDBA+WbIFAwwREjmyCgMMERI5shMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxEzQSMzIXNzMRIxEGIyICNRcUFjMyNxEmIyIGX+rFwG8IqrlwusTpuZ2FpVdYooaeAib/ASmBbfomAgR4ATH8CLrUkgISj9UAAQCMAAAClwROAA0ARrIEDg8REjkAsABFWLALLxuxCxg+WbAARViwCC8bsQgYPlmwAEVYsAUvG7EFED5ZsAsQsgIBCitYIdgb9FmyCQsFERI5MDEBJiMiBxEjETMXNjMyFwKXKjG2Qbm0A1unNhwDlAeb/QAEOn2RDgABAF//7AO7BE4AJgBhsgknKBESOQCwAEVYsAkvG7EJGD5ZsABFWLAcLxuxHBA+WbIDHAkREjmwCRCwDdCwCRCyEAEKK1gh2Bv0WbADELIVAQorWCHYG/RZsBwQsCHQsBwQsiQBCitYIdgb9FkwMQE0JiQmJjU0NjMyFhUjNCYjIgYVFBYEFhYVFAYjIiYmNTMWFjMyNgMCcf7npU/hr7jluoFiZXJqARWsU+i5gshxuQWLcml/AR9LUzxUdFCFuL6UTG5YR0NEPlZ5V5GvXKVgXW1VAAEACf/sAlYFQAAVAF+yDhYXERI5ALAARViwAS8bsQEYPlmwAEVYsBMvG7ETGD5ZsABFWLANLxuxDRA+WbABELAA0LAAL7ABELIDAQorWCHYG/RZsA0QsggBCitYIdgb9FmwAxCwEdCwEtAwMQERMxUjERQWMzI3FQYjIiY1ESM1MxEBh8rKNkEgOElFfH7FxQVA/vqP/WFBQQyWFJaKAp+PAQYAAQCI/+wD3AQ6ABAAU7IKERIREjkAsABFWLAGLxuxBhg+WbAARViwDS8bsQ0YPlmwAEVYsAIvG7ECED5ZsABFWLAQLxuxEBA+WbIADQIREjmwAhCyCgEKK1gh2Bv0WTAxJQYjIiYnETMRFDMyNxEzESMDKGzRrbUBucjURrmwa3/JxQLA/UX2ngMT+8YAAAEAIQAAA7oEOgAGADiyAAcIERI5ALAARViwAS8bsQEYPlmwAEVYsAUvG7EFGD5ZsABFWLADLxuxAxA+WbIABQMREjkwMSUBMwEjATMB8QEMvf58jf54vfsDP/vGBDoAAAEAKwAABdMEOgAMAGCyBQ0OERI5ALAARViwAS8bsQEYPlmwAEVYsAgvG7EIGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsgALAxESObIFCwMREjmyCgsDERI5MDElEzMBIwEBIwEzExMzBErQuf7Flv75/wCW/sa41fyV/wM7+8YDNPzMBDr81gMqAAEAKQAAA8oEOgALAFMAsABFWLABLxuxARg+WbAARViwCi8bsQoYPlmwAEVYsAQvG7EEED5ZsABFWLAHLxuxBxA+WbIACgQREjmyBgoEERI5sgMABhESObIJBgAREjkwMQETMwEBIwMDIwEBMwH38Nj+ngFt1vr61wFt/p7WAq8Bi/3p/d0Blf5rAiMCFwABABb+SwOwBDoADwBJsgAQERESOQCwAEVYsAEvG7EBGD5ZsABFWLAOLxuxDhg+WbAARViwBS8bsQUSPlmyAA4FERI5sgkBCitYIdgb9FmwABCwDdAwMQETMwECIycnNRcyNjc3ATMB7vzG/k1l3CNFMl5pIin+fsoBDwMr+x/+8gMNlgRMZW4ELgABAFgAAAOzBDoACQBEALAARViwBy8bsQcYPlmwAEVYsAIvG7ECED5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIRUhNQEhNSEVAToCefylAlX9tAM0l5eIAxmZgwAAAQBA/pICngY9ABgAMbITGRoREjkAsA0vsAAvsgcNABESObAHL7IfBwFdsgYDCitYIdgb9FmyEwYHERI5MDEBJiY1NTQjNTI1NTY2NxcGERUUBxYVFRIXAnixs9TUAq+zJtGnpwPO/pIy5bzH85Hy0LfhM3ND/ubK41la5c7+7UIAAAEAr/7yAUQFsAADABMAsAAvsABFWLACLxuxAhw+WTAxASMRMwFElZX+8ga+AAABABP+kgJyBj0AGAAxsgUZGhESOQCwCy+wGC+yEQsYERI5sBEvsh8RAV2yEgMKK1gh2Bv0WbIFEhEREjkwMRc2EzU0NyY1NRAnNxYWFxUUMxUiFRUUBgcTywe1tdEmsbIB1NS1r/tBAQrc51RS6csBGkNzMuG50u+R88q84jIAAAEAgwGSBO8DIgAXAEKyERgZERI5ALAARViwDy8bsQ8WPlmwANCwDxCwFNCwFC+yAwEKK1gh2Bv0WbAPELIIAQorWCHYG/RZsAMQsAvQMDEBFAYjIi4CIyIGFQc0NjMyFhYXFzI2NQTvu4lIgKlKKk5UobiLTIywQB1MXwMJntk1lCRrXgKgzkChCgJ0XwACAIv+mAFmBE0AAwAMADKyBg0OERI5sAYQsADQALACL7AARViwCy8bsQsYPlmyBgUKK1gh2Bv0WbIBAgYREjkwMRMzEyMTFAYiJjQ2MhaqqA3CyTdsODhsNwKs++wFTC0+Plo8PAABAGn/CwP5BSYAIQBSsgAiIxESOQCwAEVYsBQvG7EUGD5ZsABFWLAKLxuxChA+WbAH0LIAAQorWCHYG/RZsAoQsAPQsBQQsBHQsBQQsBjQsBQQshsBCitYIdgb9FkwMSUyNjczBgYHFSM1JgI1NTQSNzUzFRYWFyMmJiMiBhUVFBYCSmSUCK8GxpC5s8jKsbmWwAavCI9pjZubg3lZfska6eoiARzcI9QBHSHi3xfUlmmHy8Aju8oAAQBbAAAEaAXEACEAfLIcIiMREjkAsABFWLAULxuxFBw+WbAARViwBS8bsQUQPlmyHxQFERI5sB8vsl8fAXKyjx8BcbK/HwFdsgABCitYIdgb9FmwBRCyAwEKK1gh2Bv0WbAH0LAI0LAAELAN0LAfELAP0LAUELAY0LAUELIbAQorWCHYG/RZMDEBFxQHIQchNTM2Njc1JyM1MwM0NjMyFhUjNCYjIgYVEyEVAcEIPgLdAfv4TSgyAgiloAn1yL7ev39vaYIJAT8CbtyaW52dCYNgCN2dAQTH7tSxa3yaff78nQAAAgBp/+UFWwTxABsAKgA/sgIrLBESObACELAn0ACwAEVYsAIvG7ECED5ZsBDQsBAvsAIQsh8BCitYIdgb9FmwEBCyJwEKK1gh2Bv0WTAxJQYjIicHJzcmNTQ3JzcXNjMyFzcXBxYVFAcXBwEUFhYyNjY1NCYmIyIGBgRPn9HPn4aCi2hwk4KTnsPEn5WEl25mj4T8YHPE4sRxccVwccRzcISCiIeNnMrOo5eIlnh5mImao8vEn5CIAnt71Hp703t603l41AAAAQAfAAAErQWwABYAawCwAEVYsBYvG7EWHD5ZsABFWLABLxuxARw+WbAARViwDC8bsQwQPlmyDxMDK7IADBYREjm0DxMfEwJdsBMQsAPQsBMQshICCitYIdgb9FmwBtCwDxCwB9CwDxCyDgIKK1gh2Bv0WbAK0DAxAQEzASEVIRUhFSERIxEhNSE1ITUhATMCZgFs2/5eATj+gAGA/oDB/oYBev6GATn+XtwDDgKi/TB9pXz+vgFCfKV9AtAAAAIAk/7yAU0FsAADAAcAGACwAC+wAEVYsAYvG7EGHD5ZsgUBAyswMRMRMxERIxEzk7q6uv7yAxf86QPIAvYAAgBa/hEEeQXEADQARACAsiNFRhESObAjELA10ACwCC+wAEVYsCMvG7EjHD5ZshYIIxESObAWELI/AQorWCHYG/RZsgIWPxESObAIELAO0LAIELIRAQorWCHYG/RZsjAjCBESObAwELI3AQorWCHYG/RZsh03MBESObAjELAn0LAjELIqAQorWCHYG/RZMDEBFAcWFhUUBCMiJicmNTcUFjMyNjU0JicuAjU0NyYmNTQkMzIEFSM0JiMiBhUUFhYEHgIlJicGBhUUFhYEFzY2NTQmBHm6RUj+/ORwyUaLurSciKaO0bbAXbZCRwEL3ugBBLmoi46hOIcBH6lxOv3hWktQSzaFARwsTlSLAa+9VTGIZKjHODlxzQKCl3VgWWk+MG+bb7pYMYhkpsjizX2bc2JFUEFQSGGBqxgbE2VFRlBCUhEUZUVYbQAAAgBmBPAC7wXFAAgAEQAdALAHL7ICBQorWCHYG/RZsAvQsAcQsBDQsBAvMDETNDYyFhQGIiYlNDYyFhQGIiZmN2w4OGw3Aa43bDg4bDcFWy09PVo8PCstPj5aPDwAAAMAW//rBeYFxAAbACoAOQCVsic6OxESObAnELAD0LAnELA20ACwAEVYsC4vG7EuHD5ZsABFWLA2LxuxNhA+WbIDNi4REjmwAy+0DwMfAwJdsgouNhESObAKL7QAChAKAl2yDgoDERI5shECCitYIdgb9FmwAxCyGAIKK1gh2Bv0WbIbAwoREjmwNhCyIAQKK1gh2Bv0WbAuELInBAorWCHYG/RZMDEBFAYjIiY1NTQ2MzIWFSM0JiMiBhUVFBYzMjY1JRQSBCAkEjU0AiQjIgQCBzQSJCAEEhUUAgQjIiQCBF+tnp29v5ugrJJfW15sbF5cXf0BoAETAUABEqCe/u2hoP7sn3O7AUsBgAFKu7T+tcbF/rW2AlWZodO2brDTpJVjVYp7cXiKVGWErP7bpqYBJayqASKnpf7cqsoBWsfH/qbKxf6o0c8BWAAAAgCTArMDDwXEABsAJQBssg4mJxESObAOELAd0ACwAEVYsBUvG7EVHD5ZsgQmFRESObAEL7AA0LICBBUREjmyCwQVERI5sAsvsBUQsg4DCitYIdgb9FmyEQsVERI5sAQQshwDCitYIdgb9FmwCxCyIAQKK1gh2Bv0WTAxASYnBiMiJjU0NjMzNTQjIgYVJzQ2MzIWFREUFyUyNjc1IwYGFRQCagwGTIB3gqesbHxFT6GsiYWaGv6kK1gccFNZAsEiJlZ8Z294NIc2Mwxngo+G/sRhUXsoG44BPzNe//8AZgCXA2QDswAmAXr6/gAHAXoBRP/+AAEAfwF3A74DIAAFABoAsAQvsAHQsAEvsAQQsgIBCitYIdgb9FkwMQEjESE1IQO+uv17Az8BdwEIoQAEAFr/6wXlBcQADgAeADQAPQCpsjY+PxESObA2ELAL0LA2ELAT0LA2ELAj0ACwAEVYsAMvG7EDHD5ZsABFWLALLxuxCxA+WbITBAorWCHYG/RZsAMQshsECitYIdgb9FmyIAsDERI5sCAvsiIDCxESObAiL7QAIhAiAl2yNSAiERI5sDUvsr81AV20ADUQNQJdsh8CCitYIdgb9FmyKB81ERI5sCAQsC/QsC8vsCIQsj0CCitYIdgb9FkwMRM0EiQgBBIVFAIEIyIkAjcUEgQzMiQSNTQCJCMiBAIFESMRITIWFRQHFhcVFBcVIyY0JyYnJzM2NjU0JiMjWrsBSwGAAUq7tP61xsX+tbZzoAEToKEBFJ2d/uyhoP7snwHAjQEUmamAegERkQ4DEHOwnEhYTmSKAtnKAVrHx/6mysX+qNHPAVjHrP7bpqkBIqyrASGnpf7c9f6uA1GDfXtBMpo9ViYQJLkRYASAAkI2ST0AAAEAeAUhA0IFsAADABEAsAEvsgIDCitYIdgb9FkwMQEhNSEDQv02AsoFIY8AAgCCA8ACfAXEAAsAFgAvALAARViwAy8bsQMcPlmwDNCwDC+yCQIKK1gh2Bv0WbADELISAgorWCHYG/RZMDETNDYzMhYVFAYjIiYXMjY1NCYjIgYUFoKVamiTk2hplv82Sko2N0tLBMBonJtpapaWFkc5OktPbEoAAgBhAAAD9QTzAAsADwBGALAJL7AARViwDS8bsQ0QPlmwCRCwANCwCRCyBgEKK1gh2Bv0WbAD0LANELIOAQorWCHYG/RZsgUOBhESObQLBRsFAl0wMQEhFSERIxEhNSERMwEhNSECiQFs/pSn/n8BgacBQfy9A0MDVpf+YgGelwGd+w2YAAABAEICmwKrBbsAFgBUsggXGBESOQCwAEVYsA4vG7EOHD5ZsABFWLAALxuxABQ+WbIWAgorWCHYG/RZsALQsgMOFhESObAOELIIAgorWCHYG/RZsA4QsAvQshQWDhESOTAxASE1ATY1NCYjIgYVIzQ2IBYVFA8CIQKr/akBLG1APEtHnacBCJprVLABjwKbbAEaZkUxPUw5cpR/bmhrT5EAAQA+Ao8CmgW6ACYAibIgJygREjkAsABFWLAOLxuxDhw+WbAARViwGS8bsRkUPlmyABkOERI5sAAvtm8AfwCPAANdsj8AAXG2DwAfAC8AA12yXwABcrAOELIHAgorWCHYG/RZsgoOGRESObAAELImBAorWCHYG/RZshQmABESObIdGQ4REjmwGRCyIAIKK1gh2Bv0WTAxATMyNjU0JiMiBhUjNDYzMhYVFAYHFhUUBiMiJjUzFBYzMjY1NCcjAQlUSkg/RjlLnaN8iZxGQpWqiISmnk9DRkmcWARlPTAtOjMpYnt5aDdbGSmPan1+ay08PDNxAgAAAQB7BNgCHAX+AAMAIwCwAi+yDwIBXbAA0LAAL7QPAB8AAl2wAhCwA9AZsAMvGDAxATMBIwE84P70lQX+/toAAAEAmv5gA+4EOgASAFCyDRMUERI5ALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLAQLxuxEBI+WbAARViwDS8bsQ0QPlmyBAEKK1gh2Bv0WbILBw0REjkwMQERFhYzMjcRMxEjJwYjIicRIxEBUwFndMc+uqcJXaqTUbkEOv2Ho5yYAyD7xnOHSf4rBdoAAQBDAAADQAWwAAoAK7ICCwwREjkAsABFWLAILxuxCBw+WbAARViwAC8bsQAQPlmyAQAIERI5MDEhESMiJDU0JDMhEQKGVOb+9wEK5gENAgj+1tX/+lAAAAEAkwJrAXkDSQAJABayAwoLERI5ALACL7EICitY2BvcWTAxEzQ2MhYVFAYiJpM5cjs7cjkC2TBAQDAvPz8AAQB0/k0BqgAAAA4AQbIFDxAREjkAsABFWLAALxuxABA+WbAARViwBi8bsQYSPlm0EwYjBgJdsgEGABESObEHCitY2BvcWbABELAN0DAxIQcWFRQGIycyNjU0Jic3AR0MmaCPB09XQGIgNBuSYXFrNC8sKgmGAAEAegKiAe8FtwAGAECyAQcIERI5ALAARViwBS8bsQUcPlmwAEVYsAAvG7EAFD5ZsgQABRESObAEL7IDAgorWCHYG/RZsgIDBRESOTAxASMRBzUlMwHvndgBYxICogJZOYB1AAACAHoCsgMnBcQADAAaAECyAxscERI5sAMQsBDQALAARViwAy8bsQMcPlmyChsDERI5sAovshADCitYIdgb9FmwAxCyFwMKK1gh2Bv0WTAxEzQ2MzIWFRUUBiAmNRcUFjMyNjU1NCYjIgYHeryam7y7/sy+o2FUU19hU1FgAgRjnsPBpkqfwsKlBmRyc2VOY3JuYQD//wBmAJgDeAO1ACYBew0AAAcBewFqAAD//wBVAAAFkQWtACcB1f/bApgAJwF8ARgACAEHAdgC1gAAABAAsABFWLAFLxuxBRw+WTAx//8AUAAABckFrQAnAXwA7AAIACcB1f/WApgBBwHWAx4AAAAQALAARViwCS8bsQkcPlkwMf//AG8AAAXtBbsAJwF8AZcACAAnAdgDMgAAAQcB1wAxApsAEACwAEVYsCEvG7EhHD5ZMDEAAgBE/n8DeARNABgAIgBXsgkjJBESObAJELAc0ACwEC+wAEVYsCEvG7EhGD5ZsgAQIRESObIDEAAREjmwEBCyCQEKK1gh2Bv0WbAQELAM0LIVABAREjmwIRCyGwUKK1gh2Bv0WTAxAQ4DBwcUFjMyNjUzBgYjIiY1NDc3NjUTFAYiJjU0NjIWAkwBKWC4CwJ0bWR9uQLht8TWoG1CwTdsODhsNwKoan92wWMlbXNxW6HMybOtr3FOkgE9LT4+LSw8PAAC//IAAAdXBbAADwASAHcAsABFWLAGLxuxBhw+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZshEGABESObARL7ICAQorWCHYG/RZsAYQsggBCitYIdgb9FmyCwAGERI5sAsvsgwBCitYIdgb9FmwABCyDgEKK1gh2Bv0WbISBgAREjkwMSEhAyEDIwEhFSETIRUhEyEBIQMHV/yND/3MzeIDcAO3/U0UAk79uBYCwfqvAcgfAWH+nwWwmP4pl/3tAXgC3QABAFkAzgPdBGMACwA4ALADL7IJDAMREjmwCS+yCgkDERI5sgQDCRESObIBCgQREjmwAxCwBdCyBwQKERI5sAkQsAvQMDETAQE3AQEXAQEHAQFZAUr+uHcBSQFJd/64AUp3/rX+tQFJAVABT3v+sQFPe/6x/rB7AVH+rwAAAwB2/6MFHQXsABcAIAApAGayBCorERI5sAQQsB3QsAQQsCbQALAARViwEC8bsRAcPlmwAEVYsAQvG7EEED5ZshoQBBESObIjEAQREjmwIxCwG9CwEBCyHQEKK1gh2Bv0WbAaELAk0LAEELImAQorWCHYG/RZMDEBFAIEIyInByM3JhE1NBIkMzIXNzMHFhMFFBcBJiMiAgcFNCcBFjMyEjcFCZD++LCrg2GOkL6SAQus1pRnjZ+JAvwsYgI0Zqa20QMDFTj921t5uswDAqnW/sGoUpvnwAFoU9IBQqt9pf+7/tpj9I0DiG/+6/YNtoP8j0ABD/0AAgCmAAAEXQWwAA0AFgBXsgkXGBESObAJELAQ0ACwAEVYsAAvG7EAHD5ZsABFWLALLxuxCxA+WbIBAAsREjmwAS+yEAALERI5sBAvsgkBCitYIdgb9FmwARCyDgEKK1gh2Bv0WTAxAREhMhYWFRQEIyERIxETESEyNjU0JicBYAEXk9x3/vjj/u66ugEVjqCgiAWw/ttpwn7C5/7HBbD+Q/3el3h7lwEAAQCL/+wEagYSACoAabIhKywREjkAsABFWLAFLxuxBR4+WbAARViwEy8bsRMQPlmwAEVYsAAvG7EAED5ZsgoTBRESObIOBRMREjmwExCyGgEKK1gh2Bv0WbIgEwUREjmyIwUTERI5sAUQsigBCitYIdgb9FkwMSEjETQ2MzIWFRQGFRQeAhUUBiMiJic3FhYzMjY1NC4CNTQ2NTQmIyIRAUS5z7q0xYBLvFbLtlG1JisxhzVrcUq9V4toWNoEV9Drs599y0UzX5CITJ+yLBybICxeUjRgk4pRWc9UXmv+2wADAE7/7AZ8BE4AKgA1AD0AxrICPj8REjmwAhCwLtCwAhCwOdAAsABFWLAXLxuxFxg+WbAARViwHS8bsR0YPlmwAEVYsAAvG7EAED5ZsABFWLAFLxuxBRA+WbICHQAREjmyDAUXERI5sAwvtL8MzwwCXbAXELIQAQorWCHYG/RZshMMFxESObIaHQAREjmyOh0AERI5sDovtL86zzoCXbIhAQorWCHYG/RZsAAQsiUBCitYIdgb9FmyKB0AERI5sCvQsAwQsi8BCitYIdgb9FmwEBCwNtAwMQUgJwYGIyImNTQ2MzM1NCYjIgYVJzQ2MzIWFzY2MzISFRUhFhYzMjc3FwYlMjY3NSMGBhUUFgEiBgchNTQmBO7++4hB4o2nvOPd325oaYy48rtzsDI/rmnS6P0oB66VlHkvQJ78CUieMuR1jGoDUHOVEQIahhS0Vl6tl52uVWt7blETj7VTU09X/v/pc7C/TB+IeZZKNu0CblNNXQM0q4sfhJMAAAIAfv/sBC0GLAAdACsAVLIHLC0REjmwBxCwKNAAsABFWLAZLxuxGR4+WbAARViwBy8bsQcQPlmyDxkHERI5sA8vshEZBxESObIiAQorWCHYG/RZsAcQsigBCitYIdgb9FkwMQESERUUBgYjIiYmNTQ2NjMyFyYnByc3Jic3Fhc3FwMnJiYjIgYVFBYzMjY1AzT5ddiGh9x5cM+Bo3kwjdpJwIS3Oe+vvUloAiGLXJGip4B9mQUV/vj+Z12e/ZCB4IaT6YJyw42UY4NbMZ82i4Fk/PM4PUm/p4zE4rgAAAMARwCsBC0EugADAA0AFwBOsgcYGRESObAHELAA0LAHELAR0ACwAi+yAQEKK1gh2Bv0WbACELEMCitY2BvcWbEGCitY2BvcWbABELEQCitY2BvcWbEWCitY2BvcWTAxASE1IQE0NjIWFRQGIiYRNDYyFhUUBiImBC38GgPm/aA5cjs7cjk5cjs7cjkCWLgBOjBAQDAvPj78/jBAQDAuPz8AAAMAW/96BDQEuAAVAB0AJgBjsgQnKBESObAEELAb0LAEELAj0ACwAEVYsAQvG7EEGD5ZsABFWLAPLxuxDxA+WbIjAQorWCHYG/RZsiEjBBESObAhELAY0LAEELIbAQorWCHYG/RZshkbDxESObAZELAg0DAxEzQ2NjMyFzczBxYRFAYGIyInByM3JhMUFwEmIyIGBTQnARYzMjY1W3vhj25eSXxmw3zgkGhWSnxkzblhAVc+SIqoAmZX/qw3QounAief/YsqlM2a/sCe/okjlcuVATfCbwK2INq1tm/9UBnbuQACAJX+YAQnBgAADwAaAGSyGBscERI5sBgQsAzQALAIL7AARViwDC8bsQwYPlmwAEVYsAYvG7EGEj5ZsABFWLADLxuxAxA+WbIFDAMREjmyCgwDERI5sAwQshMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARQCIyInESMRMxE2MzISESc0JiMiBxEWMzI2BCfiwcVxublxwsPjuZyIqFRTq4WdAhH3/tJ9/fcHoP3KhP7a/voEt9SV/fuU0wAAAgAdAAAFiAWwABMAFwBrALAARViwDy8bsQ8cPlmwAEVYsAgvG7EIED5ZshQIDxESObAUL7IQFA8REjmwEC+wANCwEBCyFwEKK1gh2Bv0WbAD0LAIELAF0LAUELIHAQorWCHYG/RZsBcQsArQsBAQsA3QsA8QsBLQMDEBMxUjESMRIREjESM1MxEzESERMwEhNSEFAoaGwf0jwYaGwQLdwfxiAt39IwSOjvwAAqH9XwQAjgEi/t4BIv2OwgABAJsAAAFVBDoAAwAdALAARViwAi8bsQIYPlmwAEVYsAAvG7EAED5ZMDEhIxEzAVW6ugQ6AAABAJoAAAQ/BDoADABoALAARViwBC8bsQQYPlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmwAhCwBtCwBi+ynwYBXbS/Bs8GAl2yLwYBXbL/BgFdsgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAb9rurpbAY3f/jwB6OkBzf4zBDr+NgHK/fP90wAAAQAiAAAEGwWwAA0AWwCwAEVYsAwvG7EMHD5ZsABFWLAGLxuxBhA+WbIBDAYREjmwAS+wANCwARCyAgEKK1gh2Bv0WbAD0LAGELIEAQorWCHYG/RZsAMQsAjQsAnQsAAQsAvQsArQMDEBJRUFESEVIREHNTcRMwFpAQf++QKy/I2GhsEDS1R9VP3PnQKRKn0qAqIAAAEAIgAAAgoGAAALAEoAsABFWLAKLxuxCh4+WbAARViwBC8bsQQQPlmyAQQKERI5sAEvsADQsAEQsgIBCitYIdgb9FmwA9CwBtCwB9CwABCwCdCwCNAwMQE3FQcRIxEHNTcRMwFsnp66kJC6A2U9ez39FgKjN3s3AuIAAQCi/ksE8QWwABMAWrIGFBUREjkAsABFWLAALxuxABw+WbAARViwEC8bsRAcPlmwAEVYsAQvG7EEEj5ZsABFWLAOLxuxDhA+WbAEELIJAQorWCHYG/RZsg0OEBESObISDgAREjkwMQERFAYjIic3FjMyNTUBESMRMwERBPGrnD02DiU9iP0zwMACzQWw+f2ouhKaDtBHBGr7lgWw+5gEaAAAAQCR/ksD8AROABoAYbINGxwREjkAsABFWLADLxuxAxg+WbAARViwAC8bsQAYPlmwAEVYsAovG7EKEj5ZsABFWLAYLxuxGBA+WbIBGAMREjmwChCyDwEKK1gh2Bv0WbADELIVAQorWCHYG/RZMDEBFzYzMhYXERQGIyInNxYzMjURNCYjIgcRIxEBNw10y7O4AqebPTYOI0KJb32vUboEOpqu0Mv89KS4Ep0NwgL3i4CF/NQEOgACAGj/6wcJBcQAFwAjAJGyASQlERI5sAEQsBrQALAARViwDC8bsQwcPlmwAEVYsA4vG7EOHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmwDhCyEAEKK1gh2Bv0WbITAA4REjmwEy+yFAEKK1gh2Bv0WbAAELIWAQorWCHYG/RZsAMQshgBCitYIdgb9FmwDBCyHQEKK1gh2Bv0WTAxISEGIyImAicRNBI2MzIXIRUhESEVIREhBTI3ESYjIgYHERQWBwn8sLJyov6MAYv+onyqA0b9LQJ3/YkC3fuMcWZtbK3CAsMVlgEPqwE1rAERlxSe/iyd/fwbDgSOD+XP/sfT6wAAAwBh/+wHAAROACAALAA0AJayBjU2ERI5sAYQsCbQsAYQsDDQALAARViwBC8bsQQYPlmwAEVYsAovG7EKGD5ZsABFWLAXLxuxFxA+WbAARViwHS8bsR0QPlmyBwoXERI5sjEKFxESObAxL7IOAQorWCHYG/RZsBcQshIBCitYIdgb9FmyFAoXERI5shoKFxESObAk0LAEELIqAQorWCHYG/RZsC3QMDETNDY2MzIWFzY2MzIWFRUhFhYzMjcXBiMiJicGBiMiADUXFBYzMjY1NCYjIgYlIgYHITU0JmF5246JyT1BxHDP6v0yB6SGvHhKifWHzT8+x4bc/vi5oIuJoKGKh6IELWOWFgIOiQInoP6JdWRmc/7rdKrFbH6EcGRjcQEw/gm32NfOttnW1qOKGn2WAAABAKAAAAKCBhUADAAysgMNDhESOQCwAEVYsAQvG7EEHj5ZsABFWLAALxuxABA+WbAEELIJAQorWCHYG/RZMDEzETY2MzIXByYjIhURoAGwojtUFygztwSuqb4Vjgvd+2AAAAIAXf/sBRIFxAAXAB8AW7IAICEREjmwGNAAsABFWLAQLxuxEBw+WbAARViwAC8bsQAQPlmyBRAAERI5sAUvsBAQsgkBCitYIdgb9FmwABCyGAEKK1gh2Bv0WbAFELIbAQorWCHYG/RZMDEFIAARNSE1EAIjIgcHJzc2MyAAERUUAgQnMhI3IRUUFgK5/uP+wQP09N2liz0vFp7oAS4BZJz+6qep3g/8z9MUAVkBRXUHAQIBHDoajw1Y/of+sVTF/r+2ngEF2yLa5AAB/+T+SwK8BhUAHgBxshQfIBESOQCwAEVYsBUvG7EVHj5ZsABFWLAQLxuxEBg+WbAARViwHS8bsR0YPlmwAEVYsAUvG7EFEj5ZsB0QsgABCitYIdgb9FmwBRCyCgEKK1gh2Bv0WbAAELAO0LAP0LAVELIaAQorWCHYG/RZMDEBIxEUBiMiJzcWMzI2NREjNTM1NjYzMhcHJiMiBxUzAmDLqJo9Mg4eQ0FHq6sCr6E7VBYmPKsEywOr+/6ntxKTDWhcBASPeKe8FZMKw3oAAAIAZf/sBZ0GNwAXACUAU7IEJicREjmwBBCwItAAsABFWLANLxuxDRw+WbAARViwBC8bsQQQPlmyDw0EERI5sA8QsBXQsA0QshsBCitYIdgb9FmwBBCyIgEKK1gh2Bv0WTAxARQCBCMiJAInNTQSJDMyFzY2NTMQBRYXBxACIyICBxUUEjMyEhEE+JD++LCr/vaVAZIBC6zwm2Bdp/75YQG+z7220QPTub/LAqnW/sGoqAE+z2TSAUGsmweDhP6zPaz2BAECARb+6/Zr+/7hARoBAQAAAgBb/+wEugSwABYAIwBTshMkJRESObATELAa0ACwAEVYsAQvG7EEGD5ZsABFWLATLxuxExA+WbIGBBMREjmwBhCwDNCwExCyGgEKK1gh2Bv0WbAEELIhAQorWCHYG/RZMDETNDY2MzIXNjY1MxAHFhUVFAYGIyIANRcUFjMyNjU1NCYjIgZbe+GPz4hHQJbPSXzgkN7+8bmnjYunqYuKqAInn/2LighkgP7dM4qpFp7+iQEz+wm02tu5ELXa2gAAAQCM/+wGHQYCABoATLIMGxwREjkAsABFWLASLxuxEhw+WbAARViwGi8bsRocPlmwAEVYsA0vG7ENED5ZsgENGhESObABELAI0LANELIWAQorWCHYG/RZMDEBFTY2NTMUBgcRBgIHByIAJxEzERQWMzI2NREEqnNhn7HCAfTTSe/+5AK+rqGjrQWw1QuJk9LRDP1+x/78FgQBAuID4Pwmnq+ungPbAAEAiP/sBQ8EkAAZAGCyBxobERI5ALAARViwEy8bsRMYPlmwAEVYsA0vG7ENGD5ZsABFWLAILxuxCBA+WbAARViwBS8bsQUQPlmyFQgTERI5sBUQsAPQsgYIExESObAIELIQAQorWCHYG/RZMDEBFAYHESMnBiMiJicRMxEUMzI3ETMVPgI1BQ+ToLAEbNGttQG5yNRGuUREHQSQtJME/Ltrf8nFAsD9RfaeAxODAiNIbAAB/7T+SwFlBDoADQAoALAARViwAC8bsQAYPlmwAEVYsAQvG7EEEj5ZsgkBCitYIdgb9FkwMQERFAYjIic3FjMyNjURAWWqmDs0Dh5DQUgEOvttqrISkw1oXASTAAIAYv/sA+kETwAUABwAZbIIHR4REjmwCBCwFdAAsABFWLAALxuxABg+WbAARViwCC8bsQgQPlmyDQAIERI5sA0vsAAQshABCitYIdgb9FmyEgAIERI5sAgQshUBCitYIdgb9FmwDRCyGAEKK1gh2Bv0WTAxATIAFRUUBgYnIiY1NSEmJiMiByc2ATI2NyEVFBYB/9wBDnzYetDpAs0HoYi6e0mMAQ5ilxX984kET/7U+SSV+I0B/ul0qMhsfYb8NaSJGn2WAAEAqQTkAwYGAAAIADQAsAQvsAfQsAcvtA8HHwcCXbIFBAcREjkZsAUvGLAB0BmwAS8YsAQQsALQsgMEBxESOTAxARUjJwcjNRMzAwaZlpWZ9nAE7gqqqgwBEAAAAQCMBOMC9gX/AAgAIACwBC+wAdCwAS+0DwEfAQJdsgAEARESObAI0LAILzAxATczFQMjAzUzAcCWoP5x+50FVaoK/u4BEgr//wB4BSEDQgWwAQYAcAAAAAoAsAEvsQID9DAxAAEAgQTLAtgF1wAMACayCQ0OERI5ALADL7IPAwFdsgkECitYIdgb9FmwBtCwBi+wDNAwMQEUBiAmNTMUFjMyNjUC2KX+9KaXTElGTwXXeZOUeEZPTkcAAQCNBO4BaAXCAAgAGLICCQoREjkAsAcvsgIFCitYIdgb9FkwMRM0NjIWFAYiJo03bDg4bDcFVy0+Plo8PAACAHkEtAInBlAACQAUACqyAxUWERI5sAMQsA3QALADL7AH0LAHL7I/BwFdsAMQsA3QsAcQsBLQMDEBFAYjIiY0NjIWBRQWMzI2NCYjIgYCJ3xbXHt7uHv+tUMxMERDMTJCBYBXdXasenpWL0RCYkVGAAABADL+TwGSADgAEAAusgUREhESOQCwEC+wAEVYsAovG7EKEj5ZsgUDCitYIdgb9Fm2DxAfEC8QA10wMSEHBhUUMzI3FwYjIiY1NDY3AX46cU4wNA1GWllnhnstW1ZIGnksaFZZmjgAAAEAewTZAz4F6AAXAD4AsAMvsAjQsAgvtA8IHwgCXbADELAL0LALL7AIELIPAworWCHYG/RZsAMQshQDCitYIdgb9FmwDxCwF9AwMQEUBiMiLgIjIgYVJzQ2MzIeAjMyNjUDPntcKTxhKxwpOnx5XSM4YDMfKzkF3GyGFD4NPzEHa4wUOhJELQACAF4E0AMsBf8AAwAHADsAsAIvsADQsAAvtA8AHwACXbACELAD0BmwAy8YsAAQsAXQsAUvsAIQsAbQsAYvsAMQsAfQGbAHLxgwMQEzASMDMwMjAl3P/vOpbcXalgX//tEBL/7RAAACAH7+awHV/7UACwAWADQAsAMvQAsAAxADIAMwA0ADBV2wCdCwCS9ACTAJQAlQCWAJBF2yAAkBXbAO0LADELAU0DAxFzQ2MzIWFRQGIyImNxQWMjY1NCYjIgZ+ZEpHYmBJTGJXNEYwMCMlMvJGYWBHRl1eRSMwMCMkMjQAAfynBNj+SAX+AAMAHgCwAS+wANAZsAAvGLABELAC0LACL7QPAh8CAl0wMQEjATP+SJ/+/uAE2AEmAAH9bwTY/xAF/gADAB4AsAIvsAHQsAEvtA8BHwECXbACELAD0BmwAy8YMDEBMwEj/jDg/vSVBf7+2v///IsE2f9OBegABwCk/BAAAAAB/V4E2f6UBnQADgAuALAAL7IPAAFdsAfQsAcvQAkPBx8HLwc/BwRdsAbQsgEABhESObINAAcREjkwMQEnNjY0JiM3MhYVFAYHB/10AUtGW0sHlZpOTQEE2ZkFHk4namdVPVALRwAC/CcE5P8HBe4AAwAHADcAsAEvsADQGbAALxiwARCwBdCwBS+wBtCwBi+2DwYfBi8GA12wA9CwAy+wABCwBNAZsAQvGDAxASMBMwEjAzP+Aqn+zuEB/5b2zgTkAQr+9gEKAAH9OP6i/hP/dgAIABEAsAIvsgcFCitYIdgb9FkwMQU0NjIWFAYiJv04N2w4OGw39S0+Plo8PAAAAQC3BO4BmwY/AAMAHQCwAi+wANCwAC+yDwABXbIDAgAREjkZsAMvGDAxEzMDI+2udHAGP/6vAAADAHEE8AODBogAAwAMABUANwCwCy+wAtCwAi+wAdCwAS+wAhCwA9AZsAMvGLALELIGBQorWCHYG/RZsA/QsAsQsBTQsBQvMDEBMwMjBTQ2MhYUBiImJTQ2MhYUBiImAeG8ZYf+wDdsODhsNwI3N2w4OGw3Boj++CUtPT1aPDwrLT4+Wjw8//8AkwJrAXkDSQEGAHgAAAAGALACLzAxAAEAsQAABDAFsAAFACsAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwBBCyAAEKK1gh2Bv0WTAxASERIxEhBDD9QsEDfwUS+u4FsAACAB8AAAVzBbAAAwAGAC8AsABFWLAALxuxABw+WbAARViwAi8bsQIQPlmyBAEKK1gh2Bv0WbIGAgAREjkwMQEzASElIQEChqoCQ/qsAQYDTP5nBbD6UJ0EKAADAGf/7AT6BcQAAwAVACMAd7IIJCUREjmwCBCwAdCwCBCwINAAsABFWLARLxuxERw+WbAARViwCC8bsQgQPlmyAggRERI5sAIvss8CAV2y/wIBXbIvAgFdtL8CzwICcbIBAQorWCHYG/RZsBEQshkBCitYIdgb9FmwCBCyIAEKK1gh2Bv0WTAxASE1IQUUAgQjIiQCJzU0EiQzMgQSFwcQAiMiAgcVFBIzMhI3A8D9+wIFATqP/vixrP72kwKSAQusrwEIkQK/0Lu20QPRu7rMAwKTmILV/sKqqQE5zmnSAUKrqP7FzwsBAwEV/uv2a/r+4AEP/QABADIAAAUDBbAABgAxALAARViwAy8bsQMcPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbIAAwEREjkwMQEBIwEzASMCmv5mzgISrAITzwSJ+3cFsPpQAAADAHgAAAQhBbAAAwAHAAsATwCwAEVYsAgvG7EIHD5ZsABFWLACLxuxAhA+WbIAAQorWCHYG/RZsAIQsAXQsAUvsi8FAV2yBgEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDE3IRUhEyEVIQMhFSF4A6n8V1cC8v0OUwOU/GydnQM/nQMOngABALIAAAUBBbAABwA4ALAARViwBi8bsQYcPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEhIxEhESMRIQUBwf0ywARPBRL67gWwAAEARQAABEQFsAAMADwAsABFWLAILxuxCBw+WbAARViwAy8bsQMQPlmyAQEKK1gh2Bv0WbAF0LAIELIKAQorWCHYG/RZsAfQMDEBASEVITUBATUhFSEBAvL+QwMP/AEB4f4fA879JAG7As79z52PAkoCR5Ce/dQAAAMATQAABXQFsAAUABsAIwBssgokJRESObAKELAV0LAKELAc0ACwAEVYsBMvG7ETHD5ZsABFWLAJLxuxCRA+WbISEwkREjmwEi+wANCyCAkTERI5sAgvsAvQsAgQsh0BCitYIdgb9FmwFdCwEhCyFgEKK1gh2Bv0WbAc0DAxATIEFhUUBgQjFSM1IiQmEDY2MzUzAxEjIgYQFgERMzI2NTQmA0KgAQOPkv8AoMKi/v6Pkf+jwsIFrMPCAXQErMPDBPeM/Jud/Yuvr436ATj9jLn7ngMK0v6Y0AMK/PbRtbPRAAABAFoAAAUhBbAAGABcsgAZGhESOQCwAEVYsAQvG7EEHD5ZsABFWLARLxuxERw+WbAARViwFy8bsRccPlmwAEVYsAsvG7ELED5ZshYECxESObAWL7AA0LAWELINAQorWCHYG/RZsArQMDEBNjY1ETMRFAYGBxEjESYAJxEzERYWFxEzAxacrsF/7Z/B5/7vA8ABpZXBAgsX16oCDf3wn/WTD/6WAWoXASrtAhj976PXGQOkAAABAHEAAATLBcQAJABcshklJhESOQCwAEVYsBkvG7EZHD5ZsABFWLAOLxuxDhA+WbAARViwIy8bsSMQPlmwDhCyEAEKK1gh2Bv0WbAN0LAA0LAZELIGAQorWCHYG/RZsBAQsCHQsCLQMDElNhI3NTQmIAYVFRQSFxUhNTMmAjU1NBI2MzIWEhcVFAIHMxUhAuGKmgPC/q7AnZH+FN1qeI3+oaD9jgN4atz+HKIbARzqhuf2+uVx8P7YHKKdZgEzom+6ASSfnP7ktIKg/s1mnQAAAgBk/+sEdwROABYAIQB8sh8iIxESObAfELAT0ACwAEVYsBMvG7ETGD5ZsABFWLAWLxuxFhg+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsAgQsgMBCitYIdgb9FmyChMIERI5shUTCBESObAMELIaAQorWCHYG/RZsBMQsh8BCitYIdgb9FkwMQERFjMyNxcGIyInBiMiAjU1EBIzMhc3ARQWMzI3ESYjIgYD7gJOEw8XMEqTJmvRwOTixMtrEf3MkoetUlWohpUEOvzjjAWJIqWlARv0DwEIAT2hjf26r8O6Ab684wAAAgCg/oAETQXEABQAKgBpsgArLBESObAY0ACwDy+wAEVYsAAvG7EAHD5ZsABFWLAMLxuxDBA+WbIoAAwREjmwKC+yJQEKK1gh2Bv0WbIGJSgREjmyDgwAERI5sAAQshgBCitYIdgb9FmwDBCyHwEKK1gh2Bv0WTAxATIWFRQGBxYWFRQGIyInESMRNDY2ATQmIyIGBxEWFjMyNjU0JicjNTMyNgJdwetiWHuD+c21eLp6zwFniGtslgEskF6GmoxtllV4fgXE265bmC4tw4LN71/+NQWxbLxr/ntmh45r/MM0P6CBdqUDmHcAAQAu/mAD3wQ6AAgAOLIACQoREjkAsABFWLABLxuxARg+WbAARViwBy8bsQcYPlmwAEVYsAQvG7EEEj5ZsgAHBBESOTAxAQEzAREjEQEzAgoBGL3+hbr+hL0BFAMm+//+JwHgA/oAAgBg/+wEJwYcAB4AKgBeshQrLBESObAUELAi0ACwAEVYsAMvG7EDHj5ZsABFWLAULxuxFBA+WbADELIIAQorWCHYG/RZshsUAxESObAbL7IoCworWCHYG/RZsAzQsBQQsiIBCitYIdgb9FkwMRM0NjMyFwcmIyIGFRQEEhcVFAYGIyIANTU0EjcnJiYTFBYzMjY1NCYnIgbdy6+LhgKXfFZlAbvPBXbbkd7++byQAWNrPqGJiKCpfYikBPWInzegO0g+bJn+88QnmfOFASfyDaUBCCMFJ4z9Y7DLysaI2xnNAAEAY//sA+wETQAlAG+yAyYnERI5ALAARViwFS8bsRUYPlmwAEVYsAovG7EKED5ZsgMBCitYIdgb9FmwChCwBtCwChCwItCwIi+yLyIBXbK/IgFdsiMBCitYIdgb9FmyDyMiERI5shkVIhESObAVELIcAQorWCHYG/RZMDEBFBYzMjY1MxQGIyImNTQ3JiY1NDYzMhYVIzQmIyIGFRQzMxUjBgEek3Zxm7n/xsz4zVhi58q6+bmPa3CH9MTg6gEwTWJuUZu5sZO6QiR6SZSms45GZVtKoJQGAAEAbf6BA8MFsAAfAEuyCCAhERI5ALAPL7AARViwAC8bsQAcPlmyHQEKK1gh2Bv0WbAB0LIVIAAREjmyAhUAERI5sBUQsgcBCitYIdgb9FmyHAAVERI5MDEBFQEGBhUUFhcXFhYVBgYHJzY2NTQkJyYmNTQSNwEhNQPD/qKKZkNS91FHAmxDYi8z/sw2Z1uSfwEd/YMFsHj+VaHlhVphGUgYWE5FrDZUNVUtRE4YLZmBggFAlgFDmAABAJH+YQPwBE4AEgBTsgwTFBESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwBy8bsQcSPlmwAEVYsBAvG7EQED5ZsgEQAxESObADELIMAQorWCHYG/RZMDEBFzYzMhYXESMRNCYjIgYHESMRATgLeMi+rgG5bIBcgiK6BDqInMXM+6QEUYh8V0787wQ6AAADAHr/7AQSBcQADQAWAB4AkrIDHyAREjmwAxCwE9CwAxCwG9AAsABFWLAKLxuxChw+WbAARViwAy8bsQMQPlmyDgMKERI5sA4vsl8OAV2y/w4BXbSPDp8OAnG0vw7PDgJxsi8OAXGyzw4BXbIvDgFdtO8O/w4CcbAKELITAQorWCHYG/RZsA4QshgBCitYIdgb9FmwAxCyGwEKK1gh2Bv0WTAxARACIyICAzUQEjMyEhMFITU0JiMiBhUFIRUUFiA2NwQS7N/b7gTs397rBP0hAiWLiIaMAiX925IBBI0CAoD+v/6tAUwBNM0BPQFO/rz+zSw34/Hx488n5frw4wAAAQDD//QCSwQ6AAwAKACwAEVYsAAvG7EAGD5ZsABFWLAJLxuxCRA+WbIEAQorWCHYG/RZMDEBERQWMzI3FwYjIhERAXw3QDAnAUZJ+QQ6/Nc/QAyXEwEmAyAAAQAl/+8EOwXuABoAULIQGxwREjkAsAAvsABFWLALLxuxCxA+WbAARViwES8bsREQPlmwCxCyBwEKK1gh2Bv0WbIQAAsREjmwEBCwE9CwABCyFwEKK1gh2Bv0WTAxATIWFwEWFjM3FwYjIiYmJwMBIwEnJiYjByc2AQVieCEBqxQtIyYGJCpNTj4d5v7izgGKYBc1LS8BKgXuUF/7qzMnA5gMJVZQAlH89QQF6zguAo4MAAEAZf53A6kFxAAtAFayAy4vERI5ALAXL7AARViwKy8bsSscPlmyAgEKK1gh2Bv0WbIILisREjmwCC+yCQEKK1gh2Bv0WbIeLisREjmwHhCyDwEKK1gh2Bv0WbIlCQgREjkwMQEmIyIGFRQhMxUjBgYVFBYEFhcWFRQGByc3NjU0LgQ1NDY3JiY1NCQzMhcDcoRhjaABTYWWtseQAQ98IE9oSGs5MUzmqXdBpJZ2gwEC5JFwBQgkZ1XbmAKco3CdQSUUMWlApz1UQDw+Jy4zQmmZb5HLLiqYYJ+5JwABACn/9ASkBDoAFABcsgsVFhESOQCwAEVYsBMvG7ETGD5ZsABFWLAKLxuxChA+WbAARViwDy8bsQ8QPlmwExCyAAEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAAQsA3QsA7QsBHQsBLQMDEBIxEUFjMyNxcGIyIRESERIxEjNSEEcZw2QTAnAUZJ+f5vuakESAOh/XJAQQyXEwEmAof8XwOhmQACAJH+YAQfBE4ADwAbAFeyEhwdERI5sBIQsADQALAARViwAC8bsQAYPlmwAEVYsAovG7EKEj5ZsABFWLAHLxuxBxA+WbIJAAcREjmyEgEKK1gh2Bv0WbAAELIYAQorWCHYG/RZMDEBMhIXFxQCIyInESMRNDY2AxYzMjY1NCYjIgYVAlDP9AsB4L/DcrpxzYRTq4eWkYV1kARO/ub+QvD+6Hz9+APknuyA/MiTw8PN4NipAAABAGX+igPhBE4AIgBJsgAjJBESOQCwFC+wAEVYsAAvG7EAGD5ZsABFWLAbLxuxGxA+WbAAELAE0LAAELIHAQorWCHYG/RZsBsQsg0BCitYIdgb9FkwMQEyFhUjNCYjIgYVFRAFFxYWFQYGByc3NjU0JicmAjU1NDY2Aj2956+Gb4SbAUCGYlACY0piLzFGVuz4d9cETtW0boPbsyD+/GMmHWBQP6c+VTY8RisrEzQBAdMqmPuJAAIAYP/sBHsEOgARAB0ATLIIHh8REjmwCBCwFdAAsABFWLAQLxuxEBg+WbAARViwCC8bsQgQPlmwEBCyAAEKK1gh2Bv0WbAIELIVAQorWCHYG/RZsAAQsBvQMDEBIRYRFRQGBiMiADU1NDY2NyEBFBYzMjY1NCYjIgYEe/7kyHrdjNr+9nbZjAJA/J+gioufoYuJnwOhlP7vEYzriAEv/w2Y8ogB/de319nLrM7MAAEAUf/sA9kEOgAQAEmyChESERI5ALAARViwDy8bsQ8YPlmwAEVYsAkvG7EJED5ZsA8QsgABCitYIdgb9FmwCRCyBAEKK1gh2Bv0WbAAELAN0LAO0DAxASERFDMyNxcGIyImJxEhNSED2f6NaSsxKkxqfXUB/qUDiAOk/WmFGoI0k5ICk5YAAQCP/+wD9gQ6ABIAPLIOExQREjkAsABFWLAALxuxABg+WbAARViwCC8bsQgYPlmwAEVYsA4vG7EOED5ZsgMBCitYIdgb9FkwMQEREDMyNjUmAzMWERAAIyImJxEBScmBqgV2w3H+/9rCyAIEOv15/s/6tucBIfH+6f75/sHg1wKXAAIAV/4iBUwEOgAZACIAXLIPIyQREjmwDxCwGtAAsBgvsABFWLAGLxuxBhg+WbAARViwEC8bsRAYPlmwAEVYsBcvG7EXED5ZsADQsBcQshoBCitYIdgb9FmwDNCwEBCyIAEKK1gh2Bv0WTAxBSQANTQSNxcGBxQWFxE0NjMyFhYVFAAFESMTNjY1JiYjIhUCbP8A/uuBf2WhCrWminGC4YL+3v77ubmqxAWlgkIRFwEz+6gBB1eFjPWt5RoCzGl9jfiV8/7XFf4zAmYW3qSp2FIAAAEAX/4oBUMEOgAZAFiyABobERI5ALANL7AARViwAC8bsQAYPlmwAEVYsAYvG7EGGD5ZsABFWLATLxuxExg+WbAARViwDC8bsQwQPlmyAQEKK1gh2Bv0WbAMELAP0LABELAY0DAxARE2NjUmAzMWERAABREjESYAEREzERYWFxEDHKvDBXrCdv7j/va5//77ugKmogQ6/E4Y5bLoARvs/un+/f7QFf45AckaATYBEwHm/g7C5BkDsQABAHr/7AYZBDoAIwBashskJRESOQCwAEVYsAAvG7EAGD5ZsABFWLATLxuxExg+WbAARViwGS8bsRkQPlmwAEVYsB4vG7EeED5ZsgUBCitYIdgb9FmyCQAeERI5sA7QshsTGRESOTAxAQIHFBYzMjY1ETMRFhYzMjY1JgMzFhEQAiMiJwYGIyICERA3AcSKB3JqbHG7AXFranIHisOHz7zwVSmkd7zPhwQ6/uXvy+OtpgEt/s6kquLM7wEb9P7q/u3+z+51eQExARMBH+sAAAIAef/sBHkFxgAfACgAbrIUKSoREjmwFBCwJtAAsABFWLAZLxuxGRw+WbAARViwBi8bsQYQPlmyHRkGERI5sB0vsgIBCitYIdgb9FmyCxkGERI5sAYQsg8BCitYIdgb9FmwAhCwE9CwHRCwI9CwGRCyJgEKK1gh2Bv0WTAxAQYHFQYGIyImNRE3ERQWMzI2NTUmADU0NjMyFhURNjcBFBYXESYjIhUEeTxTAuXIy/e6jHx0gtn+87iWn7I/SP2UoooFk5QCcxcJptPu99cBRwL+sI+bkpimHwEa2aC7xbL+oQUTAVKFvR4BaMbEAAAB/9oAAARuBbwAGgBJsgAbHBESOQCwAEVYsAQvG7EEHD5ZsABFWLAXLxuxFxw+WbAARViwDS8bsQ0QPlmyAAQNERI5sAQQsgkBCitYIdgb9FmwEtAwMQETNjYzMhcHJiMiBwERIxEBJiMiByc2MzIWFwIk4StrV0g0JA0nRiT+17/+2CdDJw0kNEdYayoDBgH7Y1gblwhP/Xf9xgI8AodPCJYcVF0AAgBK/+wGGwQ6ABIAJgBwsggnKBESObAIELAe0ACwAEVYsBEvG7ERGD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmwERCyAAEKK1gh2Bv0WbIIEQYREjmwD9CwENCwFdCwFtCwChCyGwEKK1gh2Bv0WbIfChEREjmwJNAwMQEjFhUQAiMiJwYjIgIRNDcjNSEBJichBgcUFjMyNjcRMxEWFjMyNgYbiEC8q/FTU/CqvUB0BdH+/gRK/LtLBGBYaXECuwJxalZgA6Gsxf7v/s3v7wEwARS/spn99qrHyKnL46eiAQf++aKn4gABACr/9QWxBbAAGABhshEZGhESOQCwAEVYsBcvG7EXHD5ZsABFWLAJLxuxCRA+WbAXELIAAQorWCHYG/RZsgQXCRESObAEL7AJELIKAQorWCHYG/RZsAQQshABCitYIdgb9FmwABCwFdCwFtAwMQEhETYzMgQQBCMnMjY1JiYjIgcRIxEhNSEElP32nYT0ARL+/O0Cm5gCo6KWisH+YQRqBRL+OTDx/k7jlpGUjpYu/VoFEp4AAAEAe//sBNwFxAAfAIayAyAhERI5ALAARViwCy8bsQscPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmyFgMLERI5sBYvtL8WzxYCcbLPFgFdsp8WAXGy/xYBXbIvFgFdsl8WAXKyjxYBcrIXAQorWCHYG/RZsAMQshwBCitYIdgb9FmwAxCwH9AwMQEGBCMgABE1NBIkMzIAFyMmJiMiAgchFSEVFBIzMjY3BNwb/uHu/v7+yY8BC7DoARgXwBmnl7nOAgI6/cbGsqCrHAHO5/sBcgE2i8kBNaf+/eWsnv7x6p0C7f7okbQAAgAxAAAIOwWwABgAIQB0sgkiIxESObAJELAZ0ACwAEVYsAAvG7EAHD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyAQAIERI5sAEvsAAQsgoBCitYIdgb9FmwEBCyEgEKK1gh2Bv0WbABELIZAQorWCHYG/RZsBIQsBrQsBvQMDEBESEWBBUUBAchESEDAgIGByM1Nz4CNxMBESEyNjU0JicE7gFp3gEG/v7e/dP+ABoPWayQPyhdZDQLHgN3AV+Mop2KBbD9ywPwy8bzBAUS/b/+3v7ciQKdAgdr6vMCwv0t/cCehICcAgACALEAAAhNBbAAEgAbAIKyARwdERI5sAEQsBPQALAARViwEi8bsRIcPlmwAEVYsAIvG7ECHD5ZsABFWLAPLxuxDxA+WbAARViwDC8bsQwQPlmyAAIPERI5sAAvsgQMAhESObAEL7AAELIOAQorWCHYG/RZsAQQshMBCitYIdgb9FmwDBCyFAEKK1gh2Bv0WTAxASERMxEhFgQVFAQHIREhESMRMwERITI2NTQmJwFyAs7AAWriAQH+/9/90/0ywcEDjgFfjqCYigM5Anf9ngPivb/pBAKc/WQFsP0B/fWOenSMAwABAD4AAAXUBbAAFQBdsg4WFxESOQCwAEVYsBQvG7EUHD5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmwFBCyAAEKK1gh2Bv0WbIEFAgREjmwBC+yDQEKK1gh2Bv0WbAAELAS0LAT0DAxASERNjMyFhcRIxEmJiMiBxEjESE1IQSm/fCgr/ryA8EBiaSppsD+aARoBRL+UCja3f4tAc6Yhir9PgUSngABALD+mQT/BbAACwBIALAJL7AARViwAC8bsQAcPlmwAEVYsAQvG7EEHD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAD0DAxEzMRIREzESERIxEhsMECzsD+QMH+MgWw+u0FE/pQ/pkBZwACAKIAAASxBbAADAAVAFuyDxYXERI5sA8QsAPQALAARViwCy8bsQscPlmwAEVYsAkvG7EJED5ZsAsQsgABCitYIdgb9FmyAgsJERI5sAIvsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxASERIRYEFRQEByERIQERITI2NTQmJwQh/UIBauQBAP7+3/3SA3/9QgFfj5+ZjQUS/kwD5MTF6gQFsP0Q/d2YgHuOAgACADL+mgXJBbAADgAVAFuyEhYXERI5sBIQsAvQALAEL7AARViwCy8bsQscPlmwAEVYsAIvG7ECED5ZsAQQsAHQsAIQsgYBCitYIdgb9FmwDdCwDtCwD9CwENCwCxCyEQEKK1gh2Bv0WTAxASMRIREjAzM2EjcTIREzISERIQMGAgXHv/vrwAF3Xm8OIANnvvu7Asb+ExUNa/6bAWX+mgIDagFl1QJv+u0Edf5U+/6eAAEAGwAABzUFsAAVAIYAsABFWLAJLxuxCRw+WbAARViwDS8bsQ0cPlmwAEVYsBEvG7ERHD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsBQvG7EUED5ZsAIQsBDQsBAvsi8QAV2yzxABXbIAAQorWCHYG/RZsATQsggQABESObAQELAL0LITABAREjkwMQEjESMRIwEjAQEzATMRMxEzATMBASMEqJzApf5k8AHq/jzjAYOlwJ4Bg+L+PAHq7wKY/WgCmP1oAwACsP2IAnj9iAJ4/VH8/wABAFD/7ARqBcQAKABysgMpKhESOQCwAEVYsAsvG7ELHD5ZsABFWLAWLxuxFhA+WbALELIDAQorWCHYG/RZsAsQsAbQsiUWCxESObAlL7LPJQFdsp8lAXGyJAEKK1gh2Bv0WbIRJCUREjmwFhCwG9CwFhCyHgEKK1gh2Bv0WTAxATQmIyIGFSM0NjYzMgQVFAYHBBUUBCMiJiY1MxQWMzI2NRAlIzUzNjYDlKmZgK3Af+SK9AEOfG8BAf7c9JHthMC2jJ27/sO0s5KWBCl0iY1odLhn28NlpjBW/8TmZ76Dc5mSeAEABZ4DfgABALEAAAT/BbAACQBdALAARViwAC8bsQAcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAACERI5QAmKBJoEqgS6BARdsgkAAhESOUAJhQmVCaUJtQkEXTAxATMRIxEBIxEzEQQ/wMD9M8HBBbD6UARi+54FsPueAAABAC8AAAT2BbAAEQBNsgQSExESOQCwAEVYsAAvG7EAHD5ZsABFWLABLxuxARA+WbAARViwCS8bsQkQPlmwABCyAwEKK1gh2Bv0WbAJELILAQorWCHYG/RZMDEBESMRIQMCAgYHIzU3PgI3EwT2wP32Gg9ZrJA/KF1kNAseBbD6UAUS/b/+3v7ciQKdAgdr6vMCwgAAAQBN/+sEywWwABEASrIEEhMREjkAsABFWLABLxuxARw+WbAARViwEC8bsRAcPlmwAEVYsAcvG7EHED5ZsgABBxESObILAQorWCHYG/RZsg8HEBESOTAxAQEzAQ4CIyInNxcyPwIBMwKdAU/f/f00WnlbTxYGW2kzGSb+ENcCYwNN+0N0YTMJmARlNFkENgAAAwBT/8QF4wXsABgAIQAqAFuyDCssERI5sAwQsCDQsAwQsCLQALALL7AXL7IVFwsREjmwFS+wANCyCQsXERI5sAkvsA3QsBUQshkBCitYIdgb9FmwCRCyJAEKK1gh2Bv0WbAf0LAZELAi0DAxATMWBBIVFAIEByMVIzUjIiQCEBIkMzM1MwMiBhUUFjMzETMRMzI2NTQmIwN4H6UBEJeY/vSkI7ocp/7vl5cBEaccuta829q/Grocv9fXwwUeAZj+9aWm/vKXAsTEmAEMAU4BDJjO/pvnzc7lA2f8mevKyOoAAAEAr/6hBZcFsAALADsAsAkvsABFWLAALxuxABw+WbAARViwBC8bsQQcPlmwAEVYsAovG7EKED5ZsgIBCitYIdgb9FmwBtAwMRMzESERMxEzAyMRIa/BAs7AmRKt+9cFsPrtBRP68f4AAV8AAAEAlgAABMgFsAASAEayBRMUERI5ALAARViwAC8bsQAcPlmwAEVYsAovG7EKHD5ZsABFWLABLxuxARA+WbIPAAEREjmwDy+yBgEKK1gh2Bv0WTAxAREjEQYGIyImJxEzERYWMzI3EQTIwWmsbvnyA8EBiaO+xQWw+lACWx4X2N8B0/4ymIY2ArYAAAEAsAAABtcFsAALAEgAsABFWLAALxuxABw+WbAARViwAy8bsQMcPlmwAEVYsAcvG7EHHD5ZsABFWLAJLxuxCRA+WbIBAQorWCHYG/RZsAXQsAbQMDEBESERMxEhETMRIREBcQH1vwHywPnZBbD67QUT+u0FE/pQBbAAAQCw/qEHagWwAA8AVACwCy+wAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwBy8bsQccPlmwAEVYsA0vG7ENED5ZsgEBCitYIdgb9FmwBdCwBtCwCdCwCtCwAtAwMQERIREzESERMxEzAyMRIREBcQH1vwHywJMSpfn9BbD67QUT+u0FE/rn/goBXwWwAAACABAAAAW4BbAADAAVAF6yARYXERI5sAEQsA3QALAARViwAC8bsQAcPlmwAEVYsAkvG7EJED5ZsgIACRESObACL7AAELILAQorWCHYG/RZsAIQsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxEyERITIEFRQEByERIQERITI2NTQmJxACWwFa7wEE/v7i/db+ZgJbAV+On5mMBbD9ruXGxesDBRj9qP3dmIB7jgIAAAMAsgAABjAFsAAKABMAFwBtshIYGRESObASELAG0LASELAV0ACwAEVYsAkvG7EJHD5ZsABFWLAWLxuxFhw+WbAARViwBy8bsQcQPlmwAEVYsBQvG7EUED5ZsgAJBxESObAAL7ILAQorWCHYG/RZsAcQsgwBCitYIdgb9FkwMQEhFgQVFAQHIREzEREhMjY1NCYnASMRMwFyAWrkAQD+/t/908ABX4+fmY0DV8DAA14D5MTF6gQFsP0Q/d2YgHuOAv1ABbAAAAIAowAABLEFsAAKABMATbINFBUREjmwDRCwAdAAsABFWLAJLxuxCRw+WbAARViwBy8bsQcQPlmyAAkHERI5sAAvsgsBCitYIdgb9FmwBxCyDAEKK1gh2Bv0WTAxASEWBBUUBAchETMRESEyNjU0JicBYwFq5AEA/v7f/dPAAV+Pn5mNA14D5MTF6gQFsP0Q/d2YgHuOAgAAAQCT/+wE9AXEAB8Aj7IMICEREjkAsABFWLATLxuxExw+WbAARViwHC8bsRwQPlmwANCwHBCyAwEKK1gh2Bv0WbIIHBMREjmwCC+07wj/CAJxss8IAV2yLwgBcbS/CM8IAnGynwgBcbL/CAFdsi8IAV2yXwgBcrKPCAFysgYBCitYIdgb9FmwExCyDAEKK1gh2Bv0WbATELAP0DAxARYWMzISNyE1ITQCIyIGByM2ADMyBBIVFRQCBCMiJCcBVByroK3JAv3DAj3PupanGcEXARjosAELj47+/aju/uEbAc60kQEO8J7tARScruUBA6f+y8mRyf7MpfvnAAIAt//sBtoFxAAXACUAobIhJicREjmwIRCwEtAAsABFWLATLxuxExw+WbAARViwDS8bsQ0cPlmwAEVYsAQvG7EEED5ZsABFWLAKLxuxChA+WbIPCg0REjmwDy+yXw8BXbL/DwFdtE8PXw8CcbSPD58PAnGyLw8BcbLPDwFdsi8PAV2yzw8BcbIIAQorWCHYG/RZsBMQshsBCitYIdgb9FmwBBCyIgEKK1gh2Bv0WTAxARQCBCMiJAInIxEjETMRMzYSJDMyBBIVJxACIyICBxUUEjMyEjcG2pD++LCm/vmVCNHAwNADkAEKrK8BC5C/0Lu20QPTubrMAwKp1v7BqKABKsf9gwWw/WTOATerqf6/1QIBAwEV/uv2a/v+4QEP/QAAAgBZAAAEZAWwAAwAFQBhshAWFxESObAQELAK0ACwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyEQoAERI5sBEvsgEBCitYIdgb9FmyBQEKERI5sAoQshIBCitYIdgb9FkwMSERIQEjASQRNCQzIREBFBYXIREhIgYDo/6w/tPNAVL+5gER8wHP/O2lkwEa/u+cpQI3/ckCbG8BHtDn+lAD+YSgAQI+lAACAGH/7AQoBhEAGwAoAGKyHCkqERI5sBwQsAjQALAARViwEi8bsRIePlmwAEVYsAgvG7EIED5ZsgASCBESObAAL7IXABIREjmyDxIXERI5shoACBESObIcAQorWCHYG/RZsAgQsiMBCitYIdgb9FkwMQEyEhUVFAYGIyIANTUQEjc2NjUzFAYHBwYGBzYXIgYVFRQWMzI2NTQmAmfM9XbdkNr+9v33jGKYcXyKpaUZk6+IoKGJiqChA/z+798RmfGFASP1WgFVAZIsGUg/fYwdHye5mqqYt6IQrsvMxJm5AAMAnQAABCkEOgAOABYAHACOshgdHhESObAYELAC0LAYELAW0ACwAEVYsAEvG7EBGD5ZsABFWLAALxuxABA+WbIXAQAREjmwFy+0vxfPFwJdtJ8XrxcCcbL/FwFdsg8XAXG0Lxc/FwJdtG8XfxcCcrIPAQorWCHYG/RZsggPFxESObAAELIQAQorWCHYG/RZsAEQshsBCitYIdgb9FkwMTMRITIWFRQGBxYWFRQGIwERITI2NTQjJTMgECcjnQGm2OdaWGJ328j+0AEydHPu/tXvAQT2/QQ6l5JLeSAXhl2VngHb/rpWTqKUATAFAAABAJoAAANHBDoABQArALAARViwBC8bsQQYPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIQNH/g26Aq0DofxfBDoAAgAu/sIEkwQ6AA4AFABbshIVFhESObASELAE0ACwDC+wAEVYsAQvG7EEGD5ZsABFWLAKLxuxChA+WbIAAQorWCHYG/RZsAbQsAfQsAwQsAnQsAcQsA/QsBDQsAQQshEBCitYIdgb9FkwMTc3NhMTIREzESMRIREjEyEhESEDAoNAbA8RArmLuf0NuQEBLwHx/rMLEZdPjAEYAbD8Xf4rAT7+wgHVAvj+/v69AAEAFQAABgQEOgAVAJAAsABFWLAJLxuxCRg+WbAARViwDS8bsQ0YPlmwAEVYsBEvG7ERGD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmwAEVYsBQvG7EUED5ZsAIQsBDQsBAvsr8QAV2y/xABXbIvEAFdss8QAXGyAAEKK1gh2Bv0WbAE0LIIEAAREjmwEBCwC9CyEwAQERI5MDEBIxEjESMBIwEBMwEzETMRMwEzAQEjA+uCuYL+0eoBg/6i4AEXf7l+ARng/qEBg+oB1v4qAdb+KgIwAgr+QAHA/kABwP31/dEAAQBY/+0DrARNACYAhrIDJygREjkAsABFWLAKLxuxChg+WbAARViwFS8bsRUQPlmwChCyAwEKK1gh2Bv0WbIlChUREjmwJS+0LyU/JQJdtL8lzyUCXbSfJa8lAnG0byV/JQJysgYlChESObIiAQorWCHYG/RZshAiJRESObIZFQoREjmwFRCyHAEKK1gh2Bv0WTAxATQmIyIGFSM0NjMyFhUUBgcWFRQGIyImNTMUFjMyNjU0JiMjNTM2At90ZWKDuOyxvtRYUb3mwLvzuI1paoJtc7nJvQMSTFlmRY20o5dJeiRAvJWut5xPcWJOW0+cBQABAJwAAAQBBDoACQBFALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLACLxuxAhA+WbAARViwBS8bsQUQPlmyBAcCERI5sgkHAhESOTAxATMRIxEBIxEzEQNIubn+Dbm5BDr7xgMV/OsEOvzqAAABAJwAAAQ/BDoADAB3ALAARViwBC8bsQQYPlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmwAhCwBtCwBi+ynwYBXbL/BgFdss8GAXGynwYBcbS/Bs8GAl2yLwYBXbJvBgFysgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAd2Hurp5AWzg/lQB0OsBzf4zBDr+NgHK/fj9zgABACwAAAQDBDoADwBNsgQQERESOQCwAEVYsAAvG7EAGD5ZsABFWLABLxuxARA+WbAARViwCC8bsQgQPlmwABCyAwEKK1gh2Bv0WbAIELIKAQorWCHYG/RZMDEBESMRIQMCBgcjNTc2NjcTBAO6/pAWEpekSjVaTgsUBDr7xgOh/mv+6fAFowQKvP4BzwAAAQCdAAAFUgQ6AAwAWQCwAEVYsAEvG7EBGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsABFWLAJLxuxCRA+WbIACwMREjmyBQsDERI5sggLAxESOTAxJQEzESMRASMBESMRMwL7AXDnuf6igP6bufD1A0X7xgMT/O0DJPzcBDoAAQCcAAAEAAQ6AAsAigCwAEVYsAYvG7EGGD5ZsABFWLAKLxuxChg+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAAQsAnQsAkvsm8JAV20vwnPCQJdsj8JAXG0zwnfCQJxsg8JAXK0nwmvCQJxsv8JAV2yDwkBcbKfCQFdsi8JAV20bwl/CQJysgIBCitYIdgb9FkwMSEjESERIxEzESERMwQAuf4PuroB8bkBzv4yBDr+KwHVAAEAnAAABAEEOgAHADgAsABFWLAGLxuxBhg+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsAYQsgIBCitYIdgb9FkwMSEjESERIxEhBAG5/g66A2UDofxfBDoAAQAoAAADsAQ6AAcAMQCwAEVYsAYvG7EGGD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQsAXQMDEBIREjESE1IQOw/pW5/pwDiAOk/FwDpJYAAAMAZP5gBWkGAAAaACUAMAB/sgcxMhESObAHELAg0LAHELAr0ACwBi+wAEVYsAMvG7EDGD5ZsABFWLAKLxuxChg+WbAARViwEy8bsRMSPlmwAEVYsBAvG7EQED5ZsABFWLAXLxuxFxA+WbAKELIeAQorWCHYG/RZsBAQsiMBCitYIdgb9FmwKdCwHhCwLtAwMRMQEjMyFxEzETYzMhIRFAIjIicRIxEGIyICNSU0JiMiBxEWMzI2JRQWMzI3ESYjIgZk0rdVQLlGXrjS0bdhRblCVbbRBEyMez8vLUN8ifxtgno6Lyo9eoQCCQEPATYdAc/+KyP+yv7c7/7mIP5VAagdARr1D8zhFPzxEcCytrwSAxER2gAAAQCc/r8EggQ6AAsAOwCwCC+wAEVYsAAvG7EAGD5ZsABFWLAELxuxBBg+WbAARViwCi8bsQoQPlmyAgEKK1gh2Bv0WbAG0DAxEzMRIREzETMDIxEhnLoB8rmBEqb80gQ6/F0Do/xd/igBQQAAAQBnAAADvQQ7ABAARrIEERIREjkAsABFWLAILxuxCBg+WbAARViwDy8bsQ8YPlmwAEVYsAAvG7EAED5ZsgwPABESObAML7IEAQorWCHYG/RZMDEhIxEGIyImJxEzERYzMjcRMwO9unqAy9UCuQXkgHq6AYgg0MABQ/638iACGgABAJwAAAXgBDoACwBIALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAHLxuxBxg+WbAARViwCS8bsQkQPlmyAQEKK1gh2Bv0WbAF0LAG0DAxAREhETMRIREzESERAVYBjLkBi7r6vAQ6/F0Do/xdA6P7xgQ6AAEAkf6/Bm0EOgAPAEsAsAwvsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAcvG7EHGD5ZsABFWLANLxuxDRA+WbIBAQorWCHYG/RZsAXQsAnQMDEBESERMxEhETMRMwMjESERAUsBjLkBi7qYEqb63AQ6/F0Do/xdA6P8Xf4oAUEEOgACAB4AAAS/BDoADAAVAF6yARYXERI5sAEQsA3QALAARViwAC8bsQAYPlmwAEVYsAkvG7EJED5ZsgIACRESObACL7AAELILAQorWCHYG/RZsAIQsg0BCitYIdgb9FmwCRCyDgEKK1gh2Bv0WTAxEyERIRYWFRQGIyERIQERITI2NTQmJx4B+gEZuNbcuv42/r8B+gETaHJvZAQ6/osCvKGixAOi/oz+aWtdWnMCAAADAJ0AAAV/BDoACgAOABcAbbIGGBkREjmwBhCwDNCwBhCwE9AAsABFWLAJLxuxCRg+WbAARViwDS8bsQ0YPlmwAEVYsAcvG7EHED5ZsABFWLALLxuxCxA+WbIADQcREjmwAC+yDwEKK1gh2Bv0WbAHELIQAQorWCHYG/RZMDEBIRYWFRQGIyERMwEjETMBESEyNjU0JicBVgEZuNbcuv42uQQpurr71wETaHJvZALFAryhosQEOvvGBDr99P5pa11acwIAAgCdAAAD/QQ6AAoAEwBNsgcUFRESObAHELAN0ACwAEVYsAkvG7EJGD5ZsABFWLAHLxuxBxA+WbIACQcREjmwAC+yCwEKK1gh2Bv0WbAHELIMAQorWCHYG/RZMDEBIRYWFRQGIyERMxERITI2NTQmJwFWARm41ty6/ja5ARNocm9kAsUCvKGixAQ6/fT+aWtdWnMCAAEAZP/sA+AETgAfAIKyACAhERI5ALAARViwCC8bsQgYPlmwAEVYsBAvG7EQED5ZsAgQsgABCitYIdgb9FmyHQgQERI5sB0vtC8dPx0CXbS/Hc8dAl20nx2vHQJxtG8dfx0CcrIDCB0REjmyFBAIERI5sBAQshcBCitYIdgb9FmwHRCyGgEKK1gh2Bv0WTAxASIGFSM0NjYzMgAVFRQGBiMiJjUzFBYzMjY3ITUhJiYCCGORsHbEatMBBXfXirTwsI5md5oM/moBlA6WA7Z+Vl2qZf7P9h+Y+4ngp2aLuKGYkrEAAAIAnf/sBjAETgAUAB8AnbINICEREjmwDRCwFdAAsABFWLAULxuxFBg+WbAARViwBC8bsQQYPlmwAEVYsBEvG7ERED5ZsABFWLAMLxuxDBA+WbIAERQREjmwAC+0vwDPAAJdtJ8ArwACcbL/AAFdsg8AAXG0LwA/AAJdtl8AbwB/AANyshABCitYIdgb9FmwDBCyGAEKK1gh2Bv0WbAEELIdAQorWCHYG/RZMDEBITYAMzIAFxcUBgYjIgAnIREjETMBFBYgNjU0JiMiBgFWAQQVAQnK1AEOCwF84JDR/vYQ/v25uQG6pwEapaiMiqgCb9gBB/7i5Tqe/okBEdr+KQQ6/de02t7Gsd7aAAACAC8AAAPHBDoADQAWAGGyFBcYERI5sBQQsA3QALAARViwAC8bsQAYPlmwAEVYsAEvG7EBED5ZsABFWLAFLxuxBRA+WbISAAEREjmwEi+yAwEKK1gh2Bv0WbIHAwAREjmwABCyEwEKK1gh2Bv0WTAxAREjESEDIwEmJjU0NjcDFBYXIREhIgYDx7r+6f/IARBob9663mxZASb+9md6BDr7xgGl/lsBwSafapS1Af60T2EBAWdlAAH/6P5LA98GAAAiAISyDSMkERI5ALAfL7AARViwBC8bsQQYPlmwAEVYsBkvG7EZED5ZsABFWLAKLxuxChI+WbK/HwFdsi8fAV2yDx8BXbIeGR8REjmwHi+wIdCyAQEKK1gh2Bv0WbICGQQREjmwChCyDwEKK1gh2Bv0WbAEELIVAQorWCHYG/RZsAEQsBvQMDEBIRE2MyATERQGIyInNxYyNjURNCYjIgYHESMRIzUzNTMVIQJj/uJ7xQFXA6qYPTYPI4JIaXBaiCa5pKS5AR4Euf7+l/59/NyqshKTDWhcAyB4cmBO/P0EuZivrwABAGf/7AP3BE4AHwCcsgAgIRESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsgMIEBESObIbEAgREjmwGy+0DxsfGwJytL8bzxsCXbSfG68bAnG0zxvfGwJxsv8bAV2yDxsBcbQvGz8bAl20bxt/GwJysr8bAXKyFBAbERI5sBAQshcBCitYIdgb9FmwGxCyHAEKK1gh2Bv0WTAxJTI2NzMOAiMiABE1NDY2MzIWFyMmJiMiBgchFSEWFgJIY5QIsAV4xG7e/v112JS28QiwCI9ogpoKAZT+bAqZg3haXqhjASgBAB6f94barmmHsZ2YoK0AAgAnAAAGhgQ6ABYAHwB5sgkgIRESObAJELAX0ACwAEVYsAAvG7EAGD5ZsABFWLAILxuxCBA+WbAARViwDy8bsQ8QPlmyAQAIERI5sAEvsAAQsgoBCitYIdgb9FmwDxCyEQEKK1gh2Bv0WbABELIXAQorWCHYG/RZsAgQshgBCitYIdgb9FkwMQERIRYWFRQGByERIQMCBgcjNTc2NjcTAREhMjY1NCYnA98BHrbT07f+Kf6vFxScpUE2VU0NFwK8ARNldXJjBDr+ZAO1lJO8AwOh/lr+6+QCowQKp9MCD/3M/o9pVlFgAQAAAgCcAAAGpwQ6ABIAGwB7sgEcHRESObABELAT0ACwAEVYsAIvG7ECGD5ZsABFWLARLxuxERg+WbAARViwCy8bsQsQPlmwAEVYsA8vG7EPED5ZsgERCxESObABL7AE0LABELINAQorWCHYG/RZsAQQshMBCitYIdgb9FmwCxCyFAEKK1gh2Bv0WTAxASERMxEhFhYVFAYjIREhESMRMwERITI2NTQmJwFWAfG5ASK00dm9/jb+D7q6AqoBE2V1cmMCoQGZ/mMEsZaXuwIK/fYEOv3M/o9pVlFgAQAB//0AAAPfBgAAGQB5sgwaGxESOQCwFi+wAEVYsAQvG7EEGD5ZsABFWLAHLxuxBxA+WbAARViwEC8bsRAQPlmyvxYBXbIvFgFdsg8WAV2yGRAWERI5sBkvsgABCitYIdgb9FmyAgQHERI5sAQQsgwBCitYIdgb9FmwABCwEtCwGRCwFNAwMQEhETYzIBMRIxEmJiMiBgcRIxEjNTM1MxUhAnn+zHvFAVcDuQFpb1qIJrmPj7kBNAS+/vmX/n39NQLMdXBgTvz9BL6Xq6sAAAEAnP6cBAEEOgALAEUAsAgvsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAUvG7EFED5ZsABFWLAJLxuxCRA+WbIBAQorWCHYG/RZMDEBESERMxEhESMRIREBVgHyuf6tuf6nBDr8XQOj+8b+nAFkBDoAAAEAnP/sBnUFsAAgAGCyByEiERI5ALAARViwAC8bsQAcPlmwAEVYsA4vG7EOHD5ZsABFWLAXLxuxFxw+WbAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsgcABBESObITAQorWCHYG/RZsBzQMDEBERQGIyImJwYGIyImJxEzERQWMzI2NREzERQWMzI2NREGdeHDbasxNLJxvdcBwXJicoLHfGlqegWw+97G3FdZWVfbwwQm+917iol8BCP73X2IiX0EIgABAIH/6wWtBDoAHgBgsgYfIBESOQCwAEVYsAAvG7EAGD5ZsABFWLAMLxuxDBg+WbAARViwFS8bsRUYPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbIGFQQREjmyEQEKK1gh2Bv0WbAa0DAxAREUBiMiJwYjIiYnETMRFhYzMjY1ETMRFBYzMjY3EQWtyq7GWV/Op8ABuQFbU2JvumVcWWUBBDr9J7DGlJTDsALc/SNmdXhnAtn9J2d4dWYC3QAC/9wAAAP8BhYAEQAaAHGyFBscERI5sBQQsAPQALAARViwDi8bsQ4ePlmwAEVYsAgvG7EIED5ZshEOCBESObARL7IAAQorWCHYG/RZsgIOCBESObACL7AAELAK0LARELAM0LACELISAQorWCHYG/RZsAgQshMBCitYIdgb9FkwMQEhESEWFhAGByERIzUzETMRIQERITI2NTQmJwKW/r8BGLvU1Lf+Kr+/ugFB/r8BEmlxb2QEOv6wAsr+ttEDBDqXAUX+u/2B/kV3ZGF9AgAAAQC3/+0GoAXFACYAh7IeJygREjkAsABFWLAFLxuxBRw+WbAARViwJi8bsSYcPlmwAEVYsB0vG7EdED5ZsABFWLAjLxuxIxA+WbIQBR0REjmwEC+wANCwBRCwCdCwBRCyDAEKK1gh2Bv0WbAQELIRAQorWCHYG/RZsB0QshYBCitYIdgb9FmwHRCwGdCwERCwIdAwMQEzNhIkMzIAFyMmJiMiAgchFSEVFBIzMjY3MwYEIyAAETUjESMRMwF4xwWTAQas5gEZGMAZp5e0zwYCHv3ixrKjqRzAG/7h7v7+/snHwcEDQMEBJp7/AOisnv774pca7f7ok7Ln+wFyATYU/VcFsAABAJn/7AWhBE4AJADEsgMlJhESOQCwAEVYsAQvG7EEGD5ZsABFWLAkLxuxJBg+WbAARViwIS8bsSEQPlmwAEVYsBwvG7EcED5Zsg8cBBESObAPL7S/D88PAl20Pw9PDwJxtM8P3w8CcbQPDx8PAnK0nw+vDwJxsv8PAV2yDw8BcbQvDz8PAl20bw9/DwJysADQsggPBBESObAEELILAQorWCHYG/RZsA8QshABCitYIdgb9FmwHBCyFAEKK1gh2Bv0WbIXHAQREjmwEBCwH9AwMQEzNhIzMhYXIyYmIyIGByEVIRYWMzI2NzMOAiMiAicjESMRMwFTvxD/0bbxCLAIj2iEmAoBtf5LCpmDY5QIsAV4xG7R/hDAuroCZ98BCNquaYexnpegrXhaXqhjAQbe/jAEOgAAAgAoAAAE5AWwAAsADgBWALAARViwCC8bsQgcPlmwAEVYsAIvG7ECED5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCyDggCERI5MDEBIxEjESMDIwEzASMBIQMDiaq8npjFAg2rAgTF/Z8Bk8cBtv5KAbb+SgWw+lACWgJJAAACAA8AAAQlBDoACwAQAFYAsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsABFWLAKLxuxChA+WbINAggREjmwDS+yAQEKK1gh2Bv0WbAE0LIPCAIREjkwMQEjESMRIwMjATMBIwEhAycHAu11uXx3vQG6nwG9vv4ZAS+AGBgBKf7XASn+1wQ6+8YBwQE7WVkAAAIAyQAABvUFsAATABYAfACwAEVYsAIvG7ECHD5ZsABFWLASLxuxEhw+WbAARViwBC8bsQQQPlmwAEVYsAgvG7EIED5ZsABFWLAMLxuxDBA+WbAARViwEC8bsRAQPlmyFQIEERI5sBUvsADQsBUQsgYBCitYIdgb9FmwCtCwBhCwDtCyFgIEERI5MDEBIQEzASMDIxEjESMDIxMhESMRMwEhAwGKAYcBNasCBMWWqryemMWe/rPBwQJFAZPHAlkDV/pQAbb+SgG2/koBuP5IBbD8qgJJAAACALwAAAXkBDoAEwAYAH8AsABFWLACLxuxAhg+WbAARViwEi8bsRIYPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbAARViwDC8bsQwQPlmwAEVYsBAvG7EQED5ZsgAQEhESObAAL7AB0LIOAQorWCHYG/RZsAvQsAfQsAEQsBTQsBXQshcSBBESOTAxASEBMwEjAyMRIxEjAyMTIxEjETMBIQMnBwF2AQ8BA58Bvb56dbl8d7150bq6AckBL4AYGAHBAnn7xgEp/tcBKf7XASj+2AQ6/YcBO1lZAAACAJMAAAY/BbAAHQAhAHayHiIjERI5sB4QsA7QALAARViwHC8bsRwcPlmwAEVYsAUvG7EFED5ZsABFWLANLxuxDRA+WbAARViwFS8bsRUQPlmyAQ0cERI5sAEvsgoBCitYIdgb9FmwENCwARCwGtCwARCwHtCwHBCyIAEKK1gh2Bv0WTAxATMyFhcRIxEmJicjBxEjEScjIgYHESMRNjYzMwEhATMBIQRBG/TsA8EBfJqFFcENiJ6CBMAD7PMq/ngEsv2fEAEa/bsDKtTY/oIBeJCCAiP9lwJ2FnuN/nwBftjUAob9egHoAAACAJYAAAVLBDoAGwAfAHOyHCAhERI5sBwQsBTQALAARViwBi8bsQYYPlmwAEVYsBsvG7EbED5ZsABFWLAULxuxFBA+WbAARViwDC8bsQwQPlmyHBQGERI5sBwvsATQsBwQsAfQshABCitYIdgb9FmwF9CwBhCyHgEKK1gh2Bv0WTAxMzU2NjcBIQEWFhcVIzUmJiMjBxEjEScjIgYHFQEzEyGWBMrS/uEDv/7gzsUCugJzjDULuQY+jHUCAaIIt/6Lts3SBgHf/iEL09CtsZKBE/5PAbsJfpWxAlwBRgACALYAAAhyBbAAIgAmAJOyJicoERI5sCYQsB7QALAARViwCC8bsQgcPlmwAEVYsAsvG7ELHD5ZsABFWLAFLxuxBRA+WbAARViwIi8bsSIQPlmwAEVYsBsvG7EbED5ZsABFWLATLxuxExA+WbIJBQgREjmwCS+yBAEKK1gh2Bv0WbAJELAj0LAN0LAEELAe0LAY0LALELImAQorWCHYG/RZMDEhETY3IREjETMRIQEhATMyFhcRIxEmJicjBxEjEScjIgYHEQEzASECxQFP/mLBwQNZ/nkEs/54G/TsA8EBfJqFFsAOh56CBAIVEAEa/bsBeLNp/WwFsP18AoT9etTY/oIBeJCCAiX9mQJ1F3uN/nwDKgHoAAIAmwAABzsEOgAhACUAlrIeJicREjmwHhCwJdAAsABFWLAHLxuxBxg+WbAARViwCy8bsQsYPlmwAEVYsAAvG7EAED5ZsABFWLAFLxuxBRA+WbAARViwES8bsREQPlmwAEVYsBkvG7EZED5ZsgoLABESObAKL7IdAQorWCHYG/RZsAPQsAoQsA3QsB0QsBbQsAoQsCLQsAsQsiQBCitYIdgb9FkwMSE1NjchESMRMxEhASEBFhYXFSM1JiYjIwcRIxEnIwYGBxUBMxMhAoYCRv6HuroC0f7hA7/+4M7FAroCc4w1C7kGS4VvAgGiCLf+i6+taP48BDr+IgHe/iEL09CtsZKBE/5PAbsJAoCTrwJcAUYAAAIAUP5GA6oHhgApADIAh7IqMzQREjmwKhCwAtAAsBkvsC4vsABFWLAFLxuxBRw+WbAARViwEi8bsRIQPlmwBRCyAwEKK1gh2Bv0WbIoBRIREjmwKC+yJQEKK1gh2Bv0WbIMJSgREjmwEhCyHwEKK1gh2Bv0WbIPLgFdsC4QsCvQsCsvtA8rHysCXbIqLisREjmwMtAwMQE0JiMhNSEyBBUUBgcWFhUUBCMjBhUUFxcHJiY1NDY3MzY2NRAlIzUzIAM3MxUDIwM1MwLanYf+zgEr3gEGgXOCif734DSNgh9Keo2lojSGn/6+mYYBP7yXoP5y+p0EKm6AmNiyZ6QtKa2CxOUDbWlCD301qGN6gwEBlHkBCAWYA6WqCv7uARIKAAIATP5GA3YGMAApADIAnrIuMzQREjmwLhCwH9AAsBgvsC4vsABFWLAFLxuxBRg+WbAARViwES8bsREQPlmwBRCyAwEKK1gh2Bv0WbIoBREREjmwKC+0Lyg/KAJdtL8ozygCXbSfKK8oAnG0byh/KAJysiUBCitYIdgb9FmyDCUoERI5sBEQsh4BCitYIdgb9FmwLhCwK9CwKy+0DysfKwJdsiouKxESObAy0DAxATQmJyE1ITIWFRQGBxYVFAYjIwYVFBcXByYmNTQ2NzM2NzY1NCUjNTMgAzczFQMjAzUzAqd/cP7JASfK7mZb1/PIMo2CH0t8iqWiNnJDP/7omYgBE9qXoP5y+p0DCUNTApmqi0l3JEKvlK8DbWlCD303qGF6gwECMC5IogOYAx2qCv7uARIKAAADAGf/7AT6BcQAEQAYAB8AibIEICEREjmwBBCwEtCwBBCwGdAAsABFWLANLxuxDRw+WbAARViwBC8bsQQQPlmwDRCyEgEKK1gh2Bv0WbIWDQQREjmwFi+yLxYBXbLPFgFdsi8WAXGy/xYBXbJfFgFdtE8WXxYCcbKfFgFxsAQQshkBCitYIdgb9FmwFhCyHAEKK1gh2Bv0WTAxARQCBCMiJAInNTQSJDMyBBIXASICByEmAgMyEjchFhIE+o/++LGs/vaTApIBC6yvAQiRAv22ttAEAxQEzra2ygj87AjTAqnV/sKqqQE5zmnSAUKrqP7FzwIN/u3y+AEN+3ABAPTs/vgAAAMAW//sBDQETgAPABUAHACHsgQdHhESObAEELAT0LAEELAW0ACwAEVYsAQvG7EEGD5ZsABFWLAMLxuxDBA+WbIaDAQREjmwGi+0vxrPGgJdtJ8arxoCcbL/GgFdsg8aAXG0Lxo/GgJdtM8a3xoCcbIQAQorWCHYG/RZsAwQshQBCitYIdgb9FmwBBCyFgEKK1gh2Bv0WTAxEzQ2NjMyABcXFAYGIyIANQUhFhYgNgEiBgchJiZbe+GP1AEOCwF84JDe/vEDHP2fDaQBAqH+3H2iDwJeEqMCJ5/9i/7i5Tqe/okBM/tEm7i6Anm1k5exAAEAFgAABN0FwwAPAEayAhARERI5ALAARViwBi8bsQYcPlmwAEVYsA8vG7EPHD5ZsABFWLAMLxuxDBA+WbIBBgwREjmwBhCyCAEKK1gh2Bv0WTAxARc3ATY2MxcHIgYHASMBMwJDISMBCDOGZy4BQEAf/nyq/gfQAXaCgQM/l3gBqzxU+3kFsAABAC4AAAQLBE0AEQBGsgISExESOQCwAEVYsAUvG7EFGD5ZsABFWLARLxuxERg+WbAARViwDi8bsQ4QPlmyAQUOERI5sAUQsgoBCitYIdgb9FkwMQEXNxM2MzIXByYjIgYHASMBMwHbFxmdTaxHIxUNHR88EP7Xjf6DvQE8ZGQCH/IYlAgwLfy0BDoAAAIAZ/9zBPoGNAATACcAUrIFKCkREjmwBRCwGdAAsABFWLANLxuxDRw+WbAARViwAy8bsQMQPlmwBtCwDRCwENCyFwEKK1gh2Bv0WbAa0LADELIkAQorWCHYG/RZsCHQMDEBEAAHFSM1JgADNRAANzUzFRYAESc0AicVIzUGAhUVFBIXNTMVNhI1BPr+/uO55f7xAQEO57niAQO/mY25k6OkkrmPlwKp/t3+kSOBfx8BcQEjYAEkAXYfdngl/pD+2QfgAQkjYWQf/u7fXd7+7B9mZCIBC+IAAAIAW/+JBDQEtQATACUAWLIDJicREjmwAxCwHNAAsABFWLADLxuxAxg+WbAARViwEC8bsRAQPlmwAxCwBtCwEBCwDdCwEBCyIwEKK1gh2Bv0WbAU0LADELIdAQorWCHYG/RZsBrQMDETNBI3NTMVFhIVFRQCBxUjNSYCNQE2NjU0JicVIzUGBhUUFhc1M1vUubm62d22ubTZAkZjdnRluWJycWO5AifSASoicG8g/tjdENj+2B1rbB8BJ9z+eR/Nq5HQIGJhIdClkssiZgAAAwCc/+sGbwdRACwAQABJAKayCkpLERI5sAoQsDLQsAoQsEnQALAARViwFC8bsRQcPlmwAEVYsA0vG7ENED5ZsBQQsADQsA0QsAfQsgoNFBESObAUELIVAQorWCHYG/RZsA0QshwBCitYIdgb9FmyIBQNERI5sCXQsBUQsCzQsBQQsDjQsDgvsC/Qsi0CCitYIdgb9FmwLxCwNNCwNC+yPAIKK1gh2Bv0WbA4ELBE0LBJ0LBJLzAxATIWFREUBiMiJicGBiMiJicRNDYzFSIGFREUFjMyNjURMxEUFjMyNjURNCYjExUjIi4CIyIVFSM1NDYzMh4CATY3NTMVFAYHBNu72dm7cLI0NLBwudgE2L1jcXJicoLBgnNjcG9kaCtQgrg0GHGAf24oSL9q/kBCA51bOwWv8Nb9xtTwVVhYVejNAkrU8Z6dif3EjJuJfAGs/lR6i5yMAjqInwHCfyJQDHAPJG5sEVIb/pBQPGlmMnUgAAMAfv/rBaoF8QArAD8ASACssglJShESObAJELA80LAJELBI0ACwAEVYsBMvG7ETGD5ZsABFWLAMLxuxDBA+WbATELAA0LAMELAH0LIJDBMREjmwExCyFAEKK1gh2Bv0WbAMELIbAQorWCHYG/RZsh8TDBESObAk0LAUELAr0LATELA30LA3L7At0LAtL7IsAgorWCHYG/RZsC0QsDPQsDMvsjsCCitYIdgb9FmwNxCwQ9CwQy+wSNCwSC8wMQEyFhURFAYjIicGBiMiJicRNDYzFSIGFREUFjMyNjU1MxUWFjMyNjURNCYjExUjIi4CIyIVFSM1NDYzMh4CATY3NTMVFAYHBEKowMCo0F8vnGKjwQTAqFJdXFNib7kBcGFRXV1RqixPfsAwGHKAf28pSrdt/kFBA55bOwRE28L+38HalUtK0LsBMsHbmIh8/t57iXhn6+5ndYh9ASF8iAHHfyBSC28PJG5sElAc/oZOP2hmMnUgAAIAnP/sBnUHAwAgACgAgrIHKSoREjmwBxCwJ9AAsABFWLAPLxuxDxw+WbAARViwFy8bsRccPlmwAEVYsCAvG7EgHD5ZsABFWLAKLxuxChA+WbAE0LIHCg8REjmwChCyEwEKK1gh2Bv0WbAc0LAPELAn0LAnL7Ao0LAoL7IiBgorWCHYG/RZsCgQsCXQsCUvMDEBERQGIyImJwYGIyImJxEzERQWMzI2NREzERQWMzI2NRElNSEXIRUjNQZ14cNtqzE0snG91wHBcmJygsd8aWp6/EIDLAH+tagFsPvextxXWVlX28MEJvvde4qJfAQj+919iIl9BCLoa2t9fQAAAgCB/+sFrQWwAB4AJgCFsgYnKBESObAGELAj0ACwAEVYsA0vG7ENGD5ZsABFWLAVLxuxFRg+WbAARViwHi8bsR4YPlmwAEVYsAgvG7EIED5ZsATQsAQvsgYIDRESObAIELIRAQorWCHYG/RZsBrQsA0QsCXQsCUvsCbQsCYvsiAGCitYIdgb9FmwJhCwI9CwIy8wMQERFAYjIicGIyImJxEzERYWMzI2NREzERQWMzI2NxEBNSEXIRUjNQWtyq7GWV/Op8ABuQFbU2JvumVcWWUB/JMDLAP+s6kEOv0nsMaUlMOwAtz9I2Z1eGcC2f0nZ3h1ZgLdAQtra4CAAAABAHX+hAS8BcUAGQBJshgaGxESOQCwAC+wAEVYsAovG7EKHD5ZsABFWLACLxuxAhA+WbAKELAO0LAKELIRAQorWCHYG/RZsAIQshkBCitYIdgb9FkwMQEjESYANTU0EiQzMgAXIyYmIyICFRUUEhczAxS/2P74jgEAoPcBIALBArWhoM3FnXz+hAFsHAFW//SxASCf/vjgnqz+/NT0yv77BAABAGT+ggPgBE4AGQBJshgaGxESOQCwAC+wAEVYsAovG7EKGD5ZsABFWLACLxuxAhA+WbAKELAO0LAKELIRAQorWCHYG/RZsAIQshgBCitYIdgb9FkwMQEjESYCNTU0NjYzMhYVIzQmIyIGFRUUFhczAqK5sdR314uz8K+PZYScloJt/oIBcB4BJtkjmfmK4ahljNq1H6jbAwAAAQB0AAAEkAU+ABMAEwCwDi+wAEVYsAQvG7EEED5ZMDEBBQclAyMTJTcFEyU3BRMzAwUHJQJYASFE/t22qOH+30QBJc3+3kYBI7yl5wElSP7gAb6se6r+vwGOq3urAW2rfasBS/5oq3qqAAH8ZwSm/ycF/AAHABEAsAAvsgMGCitYIdgb9FkwMQEVJzchJxcV/Q2mAQIbAaUFI30B6WwB2AAAAfxxBRf/ZAYVABMALgCwDi+wCNCwCC+yAAIKK1gh2Bv0WbAOELAF0LAFL7AOELIPAgorWCHYG/RZMDEBMhYVFSM1NCMiBwcGByM1Mj4C/nZvf4ByKi1viXY8bGrBRwYVbG4kDnASLzoCfhtTEQAB/WYFFv5UBlcABQAMALABL7AF0LAFLzAxATUzFRcH/WazO00F3HuMdEEAAAH9pAUW/pMGVwAFAAwAsAMvsADQsAAvMDEBJzcnMxX98U07AbUFFkF0jHsACPob/sQBtgWvAAwAGgAnADUAQgBPAFwAagB6ALBFL7BTL7BgL7A4L7AARViwAi8bsQIcPlmyCQsKK1gh2Bv0WbBFELAQ0LBFELJMCworWCHYG/RZsBfQsFMQsB7QsFMQsloLCitYIdgb9FmwJdCwYBCwK9CwYBCyZwsKK1gh2Bv0WbAy0LA4ELI/CworWCHYG/RZMDEBNDYyFhUjNCYjIgYVATQ2MzIWFSM0JiMiBhUTNDYzMhYVIzQmIgYVATQ2MzIWFSM0JiMiBhUBNDYyFhUjNCYjIgYVATQ2MhYVIzQmIyIGFQE0NjMyFhUjNCYiBhUTNDYzMhYVIzQmIyIGFf0Ic750cDMwLjMB3nRdX3VxNS4sM0h1XV90cDVcM/7LdF1fdHA1Li0z/U9zvnRwMzAuM/1NdL50cDMwLjP+3nVdX3RwNVwzNXVdX3VxNS4tMwTzVGhoVC43NTD+61RoZ1UxNDUw/glVZ2hUMTQ3Lv35VGhoVDE0Ny7+5FRoaFQuNzcuBRpUaGhULjc1MP4JVWdoVDE0Ny79+VVnZ1UxNDUwAAj6LP5jAWsFxgAEAAkADgATABgAHQAiACcAOQCwIS+wEi+wCy+wGy+wJi+wAEVYsAcvG7EHHD5ZsABFWLAWLxuxFho+WbAARViwAi8bsQISPlkwMQUXAyMTAycTMwMBNwUVJQUHJTUFATclFwUBBwUnJQMnAzcTARcTBwP+Lwt6YEY6DHpgRgIdDQFN/qb7dQ3+swFaA5wCAUBE/tv88wL+wEUBJisRlEHGA2ARlELEPA7+rQFhBKIOAVL+oP4RDHxiRzsMfGJHAa4QmUTI/I4RmUXIAuQCAUZF/tX84wL+u0cBKwAAAv/cAAAD/AZxABEAGgB0shQbHBESObAUELAD0ACwAEVYsAwvG7EMHD5ZsABFWLAQLxuxEBw+WbAARViwCC8bsQgQPlmwEBCyAAEKK1gh2Bv0WbICDAgREjmwAi+wABCwCtCwC9CwAhCyEgEKK1gh2Bv0WbAIELITAQorWCHYG/RZMDEBIREhFhYQBgchESM1MzUzFSEBESEyNjU0JicClv6/ARi71NS3/iq/v7oBQf6/ARJpcW9kBRj90gLK/rbRAwUYmMHB/KL+RXdkYX0CAAIAqAAABNcFsAAOABsAVLIEHB0REjmwBBCwF9AAsABFWLADLxuxAxw+WbAARViwAS8bsQEQPlmyFgMBERI5sBYvsgABCitYIdgb9FmyCQADERI5sAMQshQBCitYIdgb9FkwMQERIxEhMgQVFAcXBycGIwE2NTQmJyERITI3JzcBacECGewBE2d+bYt2qAEZJaWR/qABWGJFbm4COv3GBbDyy7pwimeZNwEbQVuCnQL9xR15ZgAAAgCM/mAEIwROABMAIgB1shwjJBESObAcELAQ0ACwAEVYsBAvG7EQGD5ZsABFWLANLxuxDRg+WbAARViwCi8bsQoSPlmwAEVYsAcvG7EHED5ZsgIHEBESObIJEAcREjmyDhAHERI5sBAQshcBCitYIdgb9FmwBxCyHAEKK1gh2Bv0WTAxARQHFwcnBiMiJxEjETMXNjMyEhEnNCYjIgcRFjMyNyc3FzYEHmpvbm5Zc8VxuakJccnD47mciKhUU6tSPGZuWjICEe6XfWZ7OH399wXaeIz+2v76BLfUlf37lCdzZ2diAAABAKIAAAQjBwAACQA1sgMKCxESOQCwCC+wAEVYsAYvG7EGHD5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEBIxUhESMRIREzBCMD/ULAAsi5BRgG+u4FsAFQAAABAJEAAANCBXYABwAuALAGL7AARViwBC8bsQQYPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIREzA0L+CboB+LkDofxfBDoBPAABALH+3wR8BbAAFQBbsgoWFxESOQCwCS+wAEVYsBQvG7EUHD5ZsABFWLASLxuxEhA+WbAUELIAAQorWCHYG/RZsgMUCRESObADL7AJELIKAQorWCHYG/RZsAMQshABCitYIdgb9FkwMQEhETMgABEQAiMnMjY1JiYjIxEjESEEMP1CsgEcATz15AKRkAHMzrXBA38FEv4v/s/+8P74/ueTw8vL1P1hBbAAAAEAkf7lA74EOgAWAFuyCxcYERI5ALAKL7AARViwFS8bsRUYPlmwAEVYsBMvG7ETED5ZsBUQsgABCitYIdgb9FmyAxUKERI5sAMvsAoQsgsBCitYIdgb9FmwAxCyEQEKK1gh2Bv0WTAxASERMzIAFRQGBgcnNjY1NCYjIxEjESEDPv4NbO8BGGKqdTCAeLKYcLoCrQOh/uT+/NdiyIYVkiGZeZGo/h0EOgAAAQCjAAAE/wWwABQAYgCwAEVYsAAvG7EAHD5ZsABFWLAMLxuxDBw+WbAARViwAi8bsQIQPlmwAEVYsAovG7EKED5ZsA/QsA8vsi8PAV2yzw8BXbIIAQorWCHYG/RZsgEIDxESObAF0LAPELAS0DAxCQIjASMVIzUjESMRMxEzETMRMwEE0v5wAb3x/qJQlGjBwWiUTQFDBbD9Tv0CAo709P1yBbD9fwEA/wACgQAAAQCaAAAEfwQ6ABQAewCwAEVYsA0vG7ENGD5ZsABFWLAULxuxFBg+WbAARViwCi8bsQoQPlmwAEVYsAMvG7EDED5ZsAoQsA7QsA4vsp8OAV2y/w4BXbKfDgFxtL8Ozw4CXbIvDgFdsm8OAXKyCQEKK1gh2Bv0WbIBCQ4REjmwBdCwDhCwEtAwMQkCIwEjFSM1IxEjETMRMzUzFTMBBFr+rgF36/7rMpRlurpllCoBAwQ6/f79yAHNwsL+MwQ6/jbV1QHKAAEARAAABosFsAAOAGsAsABFWLAGLxuxBhw+WbAARViwCi8bsQocPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIBgIREjmwCC+yLwgBXbLPCAFdsgEBCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbIMAQgREjkwMQEjESMRITUhETMBMwEBIwOQsMH+JQKclgH87/3UAlbsAo79cgUYmP1+AoL9P/0RAAEAPgAABX0EOgAOAIAAsABFWLAGLxuxBhg+WbAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbACELAJ0LAJL7KfCQFdsv8JAV2ynwkBcbS/Cc8JAl2yLwkBXbJvCQFysgABCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbIMAAkREjkwMQEjESMRITUhETMBMwEBIwMbiLr+ZQJVegFr4f5TAdHrAc3+MwOhmf42Acr9+P3OAAABAKgAAAeEBbAADQBeALAARViwAi8bsQIcPlmwAEVYsAwvG7EMHD5ZsABFWLAGLxuxBhA+WbAARViwCi8bsQoQPlmwAdCwAS+yLwEBXbACELIEAQorWCHYG/RZsAEQsggBCitYIdgb9FkwMQEhESEVIREjESERIxEzAWkC3gM9/YPA/SLBwQM+AnKY+ugCof1fBbAAAQCRAAAFaQQ6AA0AmwCwAEVYsAIvG7ECGD5ZsABFWLAMLxuxDBg+WbAARViwBi8bsQYQPlmwAEVYsAovG7EKED5ZsAYQsAHQsAEvsm8BAV20vwHPAQJdsj8BAXG0zwHfAQJxsg8BAXK0nwGvAQJxsv8BAV2yDwEBcbKfAQFdsi8BAV20bwF/AQJysAIQsgQBCitYIdgb9FmwARCyCAEKK1gh2Bv0WTAxASERIRUhESMRIREjETMBSwHxAi3+jLn+D7q6AmUB1Zn8XwHO/jIEOgAAAQCw/t8HzQWwABcAaLIRGBkREjkAsAcvsABFWLAWLxuxFhw+WbAARViwFC8bsRQQPlmwAEVYsBEvG7ERED5ZsgEWBxESObABL7AHELIIAQorWCHYG/RZsAEQsg4BCitYIdgb9FmwFhCyEgEKK1gh2Bv0WTAxATMgABEQAiMnMjY1JiYjIxEjESERIxEhBP92ARwBPPXkApGQAczOecH9MsAETwNB/s/+8P74/ueTw8vL1P1hBRL67gWwAAABAJH+5QawBDoAGABoshIZGhESOQCwCC+wAEVYsBcvG7EXGD5ZsABFWLAVLxuxFRA+WbAARViwEi8bsRIQPlmyARcIERI5sAEvsAgQsgkBCitYIdgb9FmwARCyDwEKK1gh2Bv0WbAXELITAQorWCHYG/RZMDEBMzIAFQcGBgcnNjY1NCYjIxEjESERIxEhA/ag+AEiAxTRmTB8e7ygpLn+DroDZQKF/vzXJqPhG5Igln2Sp/4dA6H8XwQ6AAIAcf/kBaIFxQAoADYAm7IYNzgREjmwGBCwKdAAsABFWLANLxuxDRw+WbAARViwHy8bsR8cPlmwAEVYsAQvG7EEED5ZsADQsAAvsgIEHxESObACL7ANELIOAQorWCHYG/RZsAQQshUBCitYIdgb9FmwAhCyLAEKK1gh2Bv0WbIXAiwREjmyJiwCERI5sAAQsigBCitYIdgb9FmwHxCyMwEKK1gh2Bv0WTAxBSInBiMiJAI1NTQSNjMXIgYVFRQSMzI3JgI1NTQ2NjMyEhUVFAIHFjMBFBYXNjY1NTQmIyIGFQWi17OOrLL+5J910oQBdpTsv0Y4eYRovXa25m9maHn9fXh1Ymh5Y2F6HElCsgFCxKyxASKjpf7Zpuz+1w1hARWq45r9jf7M/eue/vZfGgI0mO1KSOeN+bHO0rIAAAIAbf/rBJwETwAkAC8AorIEMDEREjmwBBCwJdAAsABFWLAMLxuxDBg+WbAARViwHC8bsRwYPlmwAEVYsAQvG7EEED5ZsABFWLAALxuxABA+WbICBBwREjmwAi+wDBCyDQEKK1gh2Bv0WbAEELIUAQorWCHYG/RZsAIQsicBCitYIdgb9FmyFhQnERI5sAAQsiQBCitYIdgb9FmyIickERI5sBwQsiwBCitYIdgb9FkwMQUiJwYjIiYCNTU0EjMVIgYVFRQWMzI3JhE1NDYzMhYVFRQHFjMBFBc2NzU0JiIGBwScsox2j4zhf8WbSV2piS4swa2PjLKAT2H+D59mA0l4RgEMOUKVARKnOs0BDp6tkjjB8AuiARFewOv5zmLjnRUBqdZ0c7p1gp6NegAAAQA0/qEGkwWwABMAWwCwES+wAEVYsAcvG7EHHD5ZsABFWLAMLxuxDBw+WbAARViwEy8bsRMQPlmwBxCyCAEKK1gh2Bv0WbAA0LAHELAF0LAD0LAC0LATELIKAQorWCHYG/RZsA7QMDEBITUhNTMVIRUhESERMxEzAyMRIQGr/okBd8EBgf5/As7BmBKs+9YFGJcBAZf7hQUT+vH+AAFfAAEAH/6/BRYEOgAPAEsAsA0vsABFWLADLxuxAxg+WbAARViwDy8bsQ8QPlmwAxCyBAEKK1gh2Bv0WbAA0LAPELIGAQorWCHYG/RZsAMQsAjQsAYQsArQMDEBITUhFSMRIREzETMDIxEhATH+7gLE+QHyuoASpfzSA6OXl/z0A6P8Xf4oAUEAAQCWAAAEyAWwABcAT7IEGBkREjkAsABFWLAALxuxABw+WbAARViwCi8bsQocPlmwAEVYsAwvG7EMED5ZsgcADBESObAHL7AE0LAHELIQAQorWCHYG/RZsBPQMDEBERYWMxEzETY3ETMRIxEGBxUjNSImJxEBVwGJoJV5eMHBcn+V+O8EBbD+MpqEATb+0g0hArb6UAJbIg3u6NnaAdcAAAEAgwAAA9kEOwAWAE+yBhcYERI5ALAARViwCy8bsQsYPlmwAEVYsBUvG7EVGD5ZsABFWLAALxuxABA+WbIPFQAREjmwDy+yBwEKK1gh2Bv0WbAE0LAPELAS0DAxISMRBgcVIzUmJicRMxEWFxEzETY3ETMD2bpGU5awuwK5Ba+WVEW6AYgTCYeFDcy1AUP+tdMaARj+6goRAhoAAAEAigAABLwFsAARAEayBRITERI5ALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZsABFWLAJLxuxCRA+WbIFAQAREjmwBS+yDgEKK1gh2Bv0WTAxMxEzETYzMhYXESMRJiYjIgcRisG5yvnyA8EBiaO7yAWw/aU12N/+LQHOmIY3/UsAAAIAP//qBb0FwwAdACUAZLIXJicREjmwFxCwJNAAsABFWLAPLxuxDxw+WbAARViwAC8bsQAQPlmyHw8AERI5sB8vshMBCitYIdgb9FmwBNCwHxCwC9CwABCyGAEKK1gh2Bv0WbAPELIjAQorWCHYG/RZMDEFIAARNSYmNTMUFhc0EjYzIAARFSEVFBYzMjcXBgYBITU0JiMiAgPp/uL+s5mmmFBXjv2WAQIBHPyC3syzpi9A0v3gAr6zq57CFgFRASlbE8WiWn0UtAEfov6j/r5sXdz3U48tNQNaIdnl/v0AAv/e/+wEYwROABkAIQByshQiIxESObAUELAb0ACwAEVYsA0vG7ENGD5ZsABFWLAALxuxABA+WbIeDQAREjmwHi+0vx7PHgJdshEBCitYIdgb9FmwA9CwHhCwCdCwABCyFQEKK1gh2Bv0WbIXDQAREjmwDRCyGgEKK1gh2Bv0WTAxBSIANSYmNTMUFz4CMzISERUhFhYzMjcXBgEiBgchNSYmAr3c/ux4d5NlFITIcNPq/SMEs4qub3GI/tlwmBICHgiIFAEh+h2uhpMwgslu/ur+/U2gxZJY0QPKo5MOjZsAAAEAo/7WBMwFsAAWAF2yFRcYERI5ALAOL7AARViwAi8bsQIcPlmwAEVYsAYvG7EGHD5ZsABFWLAALxuxABA+WbIEAAIREjmwBC+wCNCwDhCyDwEKK1gh2Bv0WbAEELIWAQorWCHYG/RZMDEhIxEzETMBMwEWABUQAiMnMjY1JiYnIQFkwcGFAgHi/fj4AQ355gKQkALHx/7sBbD9jwJx/YgW/tL6/vj+5JjBycrSAQAAAQCa/v4EGQQ6ABYAebINFxgREjkAsAcvsABFWLARLxuxERg+WbAARViwFS8bsRUYPlmwAEVYsA8vG7EPED5ZsBPQsBMvsp8TAV2y/xMBXbKfEwFxtL8TzxMCXbIvEwFdss8TAXGwANCwBxCyCAEKK1gh2Bv0WbATELIOAQorWCHYG/RZMDEBFhYVFAYGByc2NTQmJyMRIxEzETMBMwJ/w85krHAw+K2lsrq6WwGK4AJkH+K0XcV8E5I55oqSAv4zBDr+NgHKAAABALH+SwT+BbAAFQCnsgoWFxESOQCwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwCC8bsQgSPlmwAEVYsBMvG7ETED5ZsALQsAIvsl8CAV2yzwIBXbIfAgFxtG8CfwICcbS/As8CAnG0DwIfAgJysu8CAXGynwIBcbJPAgFxsv8CAV2yrwIBXbIvAgFdsj8CAXKwCBCyDQEKK1gh2Bv0WbACELIRAQorWCHYG/RZMDEBESERMxEUBiMiJzcWMzI2NREhESMRAXICzMCrnDw2DiU9QUj9NMEFsP1uApL5/ai6EpoOZ1wC1f1/BbAAAAEAkf5LA/UEOgAWAJ+yChcYERI5ALAARViwAC8bsQAYPlmwAEVYsAMvG7EDGD5ZsABFWLAILxuxCBI+WbAARViwFC8bsRQQPlmwAtCwAi+ybwIBXbS/As8CAl2yPwIBcbTPAt8CAnGyDwIBcrSfAq8CAnGy/wIBXbIPAgFxsp8CAV2yLwIBXbRvAn8CAnKwCBCyDgEKK1gh2Bv0WbACELISAQorWCHYG/RZMDEBESERMxEUBiMiJzcWFxcyNjURIREjEQFLAfG5q5g8NA8RPBRCSP4PugQ6/isB1fttqrISkwcFAWhcAif+MgQ6AAACAF3/7AUSBcQAFwAfAF6yCCAhERI5sAgQsBjQALAARViwAC8bsQAcPlmwAEVYsAgvG7EIED5Zsg0ACBESObANL7AAELIRAQorWCHYG/RZsAgQshgBCitYIdgb9FmwDRCyGwEKK1gh2Bv0WTAxASAAERUUAgQjIAARNSE1EAIjIgcHJzc2ATISNyEVFBYCgAEuAWSc/uqn/uP+wQP09N2liz0vFp4BIaneD/zP0wXE/of+sVTF/r+2AVkBRXUHAQIBHDoajw1Y+sYBBdsi2uQAAQBo/+sELAWwABsAZ7ILHB0REjkAsABFWLACLxuxAhw+WbAARViwCy8bsQsQPlmwAhCyAAEKK1gh2Bv0WbAE0LIFAgsREjmwBS+wCxCwENCwCxCyEwEKK1gh2Bv0WbAFELIZAQorWCHYG/RZsAUQsBvQMDEBITUhFwEWFhUUBCMiJiY1MxQWMzI2NTQmIyM1Ax39dgNrAf5r2en+8+CG23bAnHuJo6aejQUSnn3+Hg7nxsPoab6CcpqSeJ2OlwAAAQBp/nUEKAQ6ABoAWrILGxwREjkAsAsvsABFWLACLxuxAhg+WbIAAQorWCHYG/RZsATQsgUCCxESObAFL7ALELAQ0LALELITAQorWCHYG/RZsAUQshgDCitYIdgb9FmwBRCwGtAwMQEhNSEXARYWFRQEIyImJjUzFBYzMjY1ECUjNQMM/YgDZQH+ctTo/vTehNd6up59jaT+yaADoZl2/hEQ4cXD52a/g3GflXkBIgiX//8AOv5LBHQFsAAmALBEAAAmAd6rQAAHAa8A8AAA//8AO/5LA5YEOgAmAOtPAAAmAd6sjgEHAa8A4QAAAAgAsgAGAV0wMQACAFcAAARlBbAACgATAFCyBBQVERI5sAQQsA3QALAARViwAS8bsQEcPlmwAEVYsAMvG7EDED5ZsgABAxESObAAL7ADELILAQorWCHYG/RZsAAQsgwBCitYIdgb9FkwMQERMxEhIiQ1NDY3AREhIgYVFBYXA6PC/d/k/vf/4AFt/qGMoZ+KA3MCPfpQ8svH6wT9KgI4loCCnwEAAgBZAAAGZwWwABcAHwBasgcgIRESObAHELAY0ACwAEVYsAgvG7EIHD5ZsABFWLAALxuxABA+WbIHCAAREjmwBy+wABCyGAEKK1gh2Bv0WbAK0LIQAAgREjmwBxCyGQEKK1gh2Bv0WTAxISIkNTQkNyERMxE3NjY3NiczFxYHBgYjJREhIgYUFhcCR+X+9wEB4wFqwVhvcgMEQLoWLwME5cP+7/6gjp6YhfTJxu0DAj366wECknuip0SXbsPonQI4l/6fBAAAAgBk/+cGbgYYAB8AKwCDshosLRESObAaELAq0ACwAEVYsAYvG7EGHj5ZsABFWLADLxuxAxg+WbAARViwGC8bsRgQPlmwAEVYsBwvG7EcED5ZsgUDGBESObAYELILAQorWCHYG/RZshEDGBESObIaAxgREjmwAxCyIgEKK1gh2Bv0WbAcELIoAQorWCHYG/RZMDETEBIzMhcRMxEGFjM2Njc2JzcWFgcOAiMGJwYjIgI1ASYjIgYVFBYzMjcnZOLEt2q5Al9OiZcEBEGzHCkCAnnZifJObNvA5ALHUqGHlJGIp1MFAgkBCAE9gwJN+0FfeALQvbrYAWbHZqn5hAS6tgEb9AExht/erb+TPgAAAQA2/+MF1QWwACcAY7IQKCkREjkAsABFWLAJLxuxCRw+WbAARViwIS8bsSEQPlmyASgJERI5sAEvsgABCitYIdgb9FmwCRCyBwEKK1gh2Bv0WbIPAAEREjmwIRCyFQEKK1gh2Bv0WbIaIQkREjkwMRM1MzY2NTQhITUhFhYVFAcWExUUFjM2Njc2JzMXFgcGAiMEAzU0Jif+m5+T/sv+oAFr7/zt2wVTQXSGBARBuhcwAwT2x/69D4d1AnmeAnuD+54B0cnoYkX+/FBPWwLOubvYWLuA/f7XCAFNQHiQAQABADH/4wToBDoAJwBgsg8oKRESOQCwAEVYsB8vG7EfGD5ZsABFWLAOLxuxDhA+WbICAQorWCHYG/RZsgcOHxESObIXKB8REjmwFy+yFAEKK1gh2Bv0WbAfELIdAQorWCHYG/RZsiUUFxESOTAxJQYzNjY3NiczFhYHBgYjBiYnNTQjIyczNjY1NCYjISchFhYVFAcWFwLnAl9wdgMEQrQtGAEE57iHiQfYzQLAem59df77BgEYxNy8tgTVWAKbiZmmhoA5zfADcINHnZYBV0pVXZYDp5idSjSyAAEAUv7XA/UFrwAhAF2yICIjERI5ALAXL7AARViwCS8bsQkcPlmwAEVYsBovG7EaED5ZsgEiCRESObABL7IAAQorWCHYG/RZsAkQsgcBCitYIdgb9FmyDwABERI5sBoQsRIKK1jYG9xZMDETNTM2NjUQISE1IRYWFRQHFhMVMxUUBgcnNjcjJic1NCYjr6mkm/7K/vEBIej05d4EqWFNalEOazwDkncCeZcBfYUBBZcD0sniZEb++KmUYchASHNuNKuPfo0AAAEAef7HA9kEOgAgAF2yICEiERI5ALAXL7AARViwCC8bsQgYPlmwAEVYsBovG7EaED5ZsgEhCBESObABL7IAAQorWCHYG/RZsAgQsgYBCitYIdgb9FmyDwABERI5sBoQsRIKK1jYG9xZMDETJzM2NTQjITUhFhcWFRQHFhcVMxUUBgcnNjcjJic1NCPCAdvp9f7pASfdbFa+vQGaYk1pVA1nMwLaAbiXAqGylgNnU4ShSTXKTJRhyj5IdH0hhV60AAEARP/rB3AFsAAjAGKyACQlERI5ALAARViwDi8bsQ4cPlmwAEVYsCAvG7EgED5ZsABFWLAHLxuxBxA+WbAOELIAAQorWCHYG/RZsAcQsggBCitYIdgb9FmwIBCyEwEKK1gh2Bv0WbIZDiAREjkwMQEhAwICBgcjNTc+AjcTIREUFjMyNjc2JzcWFgcGAgcHIiY1BCf+GhoPWayQPyhdZDQLHgNfWU+ClwQCP7ocKQID6cMus7cFEv2//t7+3IkCnQIHa+rzAsL7rGB0zbzA0gFmx2bs/toSArq0AAABAD//6wY6BDoAIQBisiAiIxESOQCwAEVYsAwvG7EMGD5ZsABFWLAeLxuxHhA+WbAARViwBi8bsQYQPlmwDBCyAAEKK1gh2Bv0WbAGELIHAQorWCHYG/RZsB4QshEBCitYIdgb9FmyFh4MERI5MDEBIQMCBgcjNTc2NjcTIREUFjMyNjc2JzMXFgcOAiMiJicDMf67FxScpUE2VU0NFwKvWk9sewQEQbMWMAMCbL54rrMBA6H+Wv7r5AKjBAqn0wIP/SFgebersstQsXya5nm4sQABAKn/5wdxBbAAHQCushQeHxESOQCwAEVYsAAvG7EAHD5ZsABFWLAZLxuxGRw+WbAARViwES8bsREQPlmwAEVYsBcvG7EXED5ZsBEQsgQBCitYIdgb9FmyCgARERI5sBcQsBzQsBwvsu8cAXGyXxwBXbLPHAFdsh8cAXG0bxx/HAJxtL8czxwCcbKfHAFxsk8cAXGy/xwBXbKvHAFdsi8cAV20DxwfHAJysj8cAXKyFQEKK1gh2Bv0WTAxAREUFjM2Njc2JzcWFgcOAiMGJicRIREjETMRIREE6V1KhpQEBEK7GysCAnvYiqu1CP1CwcECvgWw+6xlbwLNurfbAWLKZ6j7gwS4uwEn/X8FsP1uApIAAQCQ/+cGTQQ6ABwAo7IbHR4REjkAsABFWLAELxuxBBg+WbAARViwCC8bsQgYPlmwAEVYsBkvG7EZED5ZsABFWLACLxuxAhA+WbAH0LAHL7JvBwFdtL8HzwcCXbI/BwFxtM8H3wcCcbIPBwFytJ8HrwcCcbL/BwFdsg8HAXGynwcBXbIvBwFdtG8HfwcCcrIAAQorWCHYG/RZsBkQsg0BCitYIdgb9FmyEhkIERI5MDEBIREjETMRIREzERQWMzY2NzYnMxcWBwYCIwYmJwND/ga5uQH6uVxNbHwEBEGyFzADBOa7p7MIAc3+MwQ6/ioB1v0hZHUCtaus0VOxeer+8QS3uwABAHb/6wSgBcUAIgBHshUjJBESOQCwAEVYsAkvG7EJHD5ZsABFWLAALxuxABA+WbAJELIOAQorWCHYG/RZsAAQshYBCitYIdgb9FmyGwAJERI5MDEFIiQCJxE0EiQzMhcHJiMiAhUVFBYWMzY2NzYnMxcWBw4CArmk/viVApQBCqXchzuGoqzXYrBxjZYDAzW6JhMBAnveFZsBGK0BEK8BHp1YikT+/tL+g9V1ApmGms+zW1uIyW0AAQBl/+sDxwROAB4ARLITHyAREjkAsABFWLATLxuxExg+WbAARViwCy8bsQsQPlmyAAEKK1gh2Bv0WbIFCxMREjmwExCyGAEKK1gh2Bv0WTAxJTY2NzQnMxYHBgYjIgA1NTQ2NjMyFwcmIyIGFRUUFgJRYFoCFLIcAQTErdz+8HbWi7lgLGOKg5umggJQWXpyllaZqQEy9x6X+YxCkDrcsx+r2wABACP/5wVHBbAAGABNsgUZGhESOQCwAEVYsAIvG7ECHD5ZsABFWLAVLxuxFRA+WbACELIAAQorWCHYG/RZsATQsAXQsBUQsgkBCitYIdgb9FmyDgIVERI5MDEBITUhFSERFBYzNjYSJzcWFgcOAiMGJicB/v4lBID+HFxMhpQIQrobKwMCedmJqrcIBRKenvxIYHIC0AFu2wFiymep+YQEt7wAAAEARv/nBLcEOgAYAE2yFhkaERI5ALAARViwAi8bsQIYPlmwAEVYsBUvG7EVED5ZsAIQsgABCitYIdgb9FmwBNCwBdCwFRCyCQEKK1gh2Bv0WbIOFQIREjkwMQEhNSEVIREUFjM2Njc2JzMWFgcGBiMGJicBrP6aA4v+lV5NcXcDBECyKhsBBOi5qrMIA6SWlv21Y3QCnYmXrn2MPNDvBLm5AAEAlv/sBP8FxQApAG+yJCorERI5ALAARViwFi8bsRYcPlmwAEVYsAsvG7ELED5ZsgMBCitYIdgb9FmwCxCwBtCyJQsWERI5sCUvss8lAV2ynyUBcbImAQorWCHYG/RZshAmJRESObAWELAb0LAWELIeAQorWCHYG/RZMDEBFBYzMjY1MxQGBiMgJDU0JSYmNTQkITIWFhUjNCYjIgYVFBYXMxUjBgYBWM+wm8zBjf6d/vv+xAEUeIYBJQEGk/WMwcGSp8Kto8TEsbUBkniSmHSDvmflxf9WMKZlxNtlunVnj4h2dX0CngJ+AAIAbwRwAskF1gAFAA0AIwCwCy+wB9CwBy+wAdCwAS+wCxCwBNCwBC+wBdAZsAUvGDAxARMzFQMjATMVFhcHJjUBkXTE31n+3qgDUEmyBJQBQhX+wwFSW3tVO1+7AP//ACUCHwINArYABgARAAD//wAlAh8CDQK2AAYAEQAA//8AogKLBI0DIgBGAZfZAEzNQAD//wCQAosFyQMiAEYBl4QAZmZAAP//AA3+bAOhAAAAJwBDAAn/AwEGAEMJAAAUAEAJAwITAiMCMwIEXbKwAgFdMDEAAQBgBDEBeAYTAAgAIbIICQoREjkAsABFWLAALxuxAB4+WbIFCQAREjmwBS8wMQEXBgcVIzU0NgEOal0DuGEGE0h/k4h0ZsgAAQAwBBYBRwYAAAgAIbIICQoREjkAsABFWLAELxuxBB4+WbIACQQREjmwAC8wMRMnNjc1MxUGBplpXQO3AWEEFkiCkJCCZMcAAQAk/uUBOwC1AAgAHrIICQoREjkAsAkvsgQFCitYIdgb9FmwANCwAC8wMRMnNjc1MxUUBo1pWwO5Y/7lSX+SdmRlygABAE8EFgFnBgAACAAMALAIL7AE0LAELzAxARUWFwcmJic1AQYEXWpNXwIGAJOQf0hAwmGHAP//AGgEMQK7BhMAJgFsCAAABwFsAUMAAP//ADwEFgKGBgAAJgFtDAAABwFtAT8AAAACACT+0wJkAPYACAARADCyChITERI5sAoQsAXQALASL7IEBQorWCHYG/RZsADQsAAvsAnQsAkvsAQQsA3QMDETJzY3NTMVFAYXJzY3NTMVFAaNaVsDuWPdaVsDumH+00iJmbmkbNNASImZuaRr0QAAAQBGAAAEJAWwAAsASwCwAEVYsAgvG7EIHD5ZsABFWLAGLxuxBhg+WbAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZsAoQsgABCitYIdgb9FmwBNCwBdAwMQEhESMRITUhETMRIQQk/my6/nABkLoBlAOh/F8DoZkBdv6KAAEAV/5gBDQFsAATAHwAsABFWLAMLxuxDBw+WbAARViwCi8bsQoYPlmwAEVYsA4vG7EOGD5ZsABFWLACLxuxAhI+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgYBCitYIdgb9FmwDhCyCAEKK1gh2Bv0WbAJ0LAQ0LAR0LAGELAS0LAT0DAxISERIxEhNSERITUhETMRIRUhESEENP5quv5zAY3+cwGNugGW/moBlv5gAaCXAwqZAXb+ipn89gAAAQCKAhcCIgPLAA0AFrIKDg8REjkAsAMvsQoKK1jYG9xZMDETNDYzMhYVFRQGIyImNYpvXFtybl5dbwMEV3BtXSVXbm9Y//8AlP/1Ay8A0QAmABIEAAAHABIBuQAA//8AlP/1BM4A0QAmABIEAAAnABIBuQAAAAcAEgNYAAAAAQAmAh4AzwK3AAMADwCwAi+xAQorWNgb3FkwMRMjNTPPqakCHpkAAAYARP/rB1cFxQAVACMAJwA1AEMAUQC4sgJSUxESObACELAb0LACELAm0LACELAo0LACELA20LACELBJ0ACwAEVYsBkvG7EZHD5ZsABFWLASLxuxEhA+WbAD0LADL7AH0LAHL7ASELAO0LAOL7AZELAg0LAgL7IkEhkREjmwJC+yJhkSERI5sCYvsBIQsisECitYIdgb9FmwAxCyMgQKK1gh2Bv0WbArELA50LAyELBA0LAgELJHBAorWCHYG/RZsBkQsk4ECitYIdgb9FkwMQE0NjMyFzYzMhYVFRQGIyInBiMiJjUBNDYzMhYVFRQGIyImNQEnARcDFBYzMjY1NTQmIyIGFQUUFjMyNjU1NCYjIgYVARQWMzI2NTU0JiMiBhUDN6eDmE1Pl4Oop4KZT0yXgqr9DaeDhKelhIKqAWloAsdos1hKSFZXSUdZActYSUhWV0lIV/tCWEpHV1ZKSFgBZYOpeXmoi0eDqXh4p4sDe4OqqohIgaqni/wcQgRyQvw3T2VjVUpPZGNUSk9lZlJKT2RkUwLqTmViVUlOZmVTAAABAGwAmQIgA7UABgAQALAFL7ICBwUREjmwAi8wMQEBIwE1ATMBHgECjf7ZASeNAib+cwGEEwGFAAEAWQCYAg4DtQAGABAAsAAvsgMHABESObADLzAxEwEVASMBAecBJ/7ZjgEC/v4Dtf57E/57AY4BjwABADsAbgNqBSIAAwAJALAAL7ACLzAxNycBF6NoAsdobkIEckIA//8ANgKQArsFpQMHAdgAAAKQABMAsABFWLAJLxuxCRw+WbAN0DAxAAABAHoCiwL4BboADwBTsgoQERESOQCwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxw+WbAARViwDS8bsQ0UPlmwAEVYsAYvG7EGFD5ZsgENAxESObADELIKAworWCHYG/RZMDETFzYzIBERIxEmIyIHESMR+h5KkgEEqgONbiyqBat7iv7G/gsB5rlt/c4DIAAAAQBbAAAEaAXEACkAlrIhKisREjkAsABFWLAZLxuxGRw+WbAARViwBi8bsQYQPlmyKRkGERI5sCkvsgACCitYIdgb9FmwBhCyBAEKK1gh2Bv0WbAI0LAJ0LAAELAO0LApELAQ0LApELAV0LAVL7YPFR8VLxUDXbISAgorWCHYG/RZsBkQsB3QsBkQsiABCitYIdgb9FmwFRCwJNCwEhCwJtAwMQEhFxQHIQchNTM2Njc1JyM1MycjNTMnNDYzMhYVIzQmIyIGFRchFSEXIQMV/rEDPgLdAfv4TSgyAgOqpgSinQb1yL7ev39vaYIGAVz+qQQBUwHWRJpbnZ0Jg2AIRX2IfbfH7tSxa3yafbd9iAAFAB8AAAY2BbAAGwAfACMAJgApALEAsABFWLAXLxuxFxw+WbAARViwGi8bsRocPlmwAEVYsAwvG7EMED5ZsABFWLAJLxuxCRA+WbIQDBcREjmwEC+wFNCwFC+0DxQfFAJdsCTQsCQvsBjQsBgvsADQsAAvsBQQshMBCitYIdgb9FmwH9CwI9CwA9CwEBCwHNCwHC+wINCwIC+wBNCwBC+wEBCyDwEKK1gh2Bv0WbAL0LAp0LAH0LImFwwREjmyJwkaERI5MDEBMxUjFTMVIxEjASERIxEjNTM1IzUzETMBIREzASEnIwUzNSElMycBNSMFV9/f39/C/sH+YsDZ2dnZwAFRAY+//GEBO2HaAhTM/tT+THd3AuBoA6yYlJj+GAHo/hgB6JiUmAIE/fwCBPzQlJSUmLb8558AAAIAp//sBgMFsAAfACgAorIjKSoREjmwIxCwEdAAsABFWLAWLxuxFhw+WbAARViwGi8bsRoYPlmwAEVYsB4vG7EeGD5ZsABFWLAKLxuxChA+WbAARViwFC8bsRQQPlmwHhCyAAEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAAQsA7QsA/QsiEUFhESObAhL7ISAQorWCHYG/RZsB4QsB3QsB0vsBYQsicBCitYIdgb9FkwMQEjERQWMzI3FwYjIiY1ESMGBgcjESMRITIWFzMRMxEzATMyNjU0JicjBf7KNkEjNAFJRnx+jxTnx8m5AXnK7RSPusr7YsCLi4eEywOr/WFBQQyWFJaKAp+3vQL9ywWwwLYBBv76/pKNl5iOAv//AKj/7AgQBbAAJgA2AAAABwBXBFUAAAAHADkAAAcpBbAAHwAjACcAKwAwADUAOgC3ALAARViwHi8bsR4cPlmwAEVYsBsvG7EbHD5ZsABFWLACLxuxAhw+WbAARViwDS8bsQ0QPlmwAEVYsBAvG7EQED5ZshQQGxESObAUL7AY0LAYL7Ac0LA20LAA0LAE0LAYELIXAQorWCHYG/RZsCfQsCPQsCvQsAfQsBQQsCTQsCDQsCjQsAjQsBQQshMBCitYIdgb9FmwMtCwD9CwLdCwC9CyNBAeERI5sDQQsC/QsjkeEBESOTAxASETMwMzFSMHMxUhAyMDIQMjAyE1MycjNTMDMxMhEzMDIScjBTM3IQUzNyETIxcXNyUjFxc3ATMnJwcEhwFTbMFzlbov6f7ydK+I/oSNr3X+9uUvtpFzwG4BVoih4wEkN7T+eqU3/vgDP6Us/vm5WQwpH/zpVwYdKAFEXRcXFwPUAdz+JJjCmP4eAeL+HgHimMKYAdz+JAHc/MrCwsLCwv6mKrLGFhfArQIcUW9vAAACAIwAAAWeBDoADQAbAGQAsABFWLAWLxuxFhg+WbAARViwAC8bsQAYPlmwAEVYsAsvG7ELED5ZsABFWLAOLxuxDhA+WbIRAQorWCHYG/RZsgURABESObAFL7AAELIKAQorWCHYG/RZsg8KCxESObAPLzAxATIWFxEjETQmJyERIxEBETMRITI2NxEzEQYGBwK6r6gEuWVv/r25AYm5AT5xZwG5AqWtBDrBv/6jAUx/eAH8XwQ6+8YC3f27dX4Cr/1OwsQCAAABAF//7AQcBcQAIwCHshUkJRESOQCwAEVYsBYvG7EWHD5ZsABFWLAJLxuxCRA+WbIjCRYREjmwIy+yAAIKK1gh2Bv0WbAJELIEAQorWCHYG/RZsAAQsAzQsCMQsA/QsCMQsB/QsB8vtg8fHx8vHwNdsiACCitYIdgb9FmwENCwHxCwE9CwFhCyGwEKK1gh2Bv0WTAxASEWFjMyNxcGIyIAAyM1MzUjNTMSADMyFwcmIyIGByEVIRUhA1H+gAS0pXRmFHh4+P7jBrKysrIKAR3zaocUbW6ksQYBf/6AAYACHcPSIqAeASUBDHyJfQEGAR8foiPLvH2JAAQAHwAABbwFsAAZAB4AIwAoALgAsABFWLALLxuxCxw+WbAARViwAS8bsQEQPlmwCxCyKAEKK1gh2Bv0WbIkKAEREjmwJC+ycCQBcbYAJBAkICQDXbIcAQorWCHYG/RZsB3QsB0vsnAdAXG2AB0QHSAdA12yIAEKK1gh2Bv0WbAh0LAhL7JwIQFxsiAhAV2yAAEKK1gh2Bv0WbAgELAD0LAdELAG0LAGL7AcELAH0LAkELAK0LAkELAP0LAcELAS0LAdELAU0LAULzAxAREjESM1MzUjNTM1ITIWFzMVIxcHMxUjBiEBJyEVIQchFSEyASEmIyEBpcDGxsbGAhmx6zbswwMCwuVr/owBRAT9bQKVP/2qAVms/fsCSlSe/qgCOv3GAzCXXpf0hHCXMiyX9gG3NF6XWQHlVgAAAQAqAAAD+AWwABoAZgCwAEVYsBkvG7EZHD5ZsABFWLAMLxuxDBA+WbAZELIYAQorWCHYG/RZsAHQsBgQsBTQsBQvsAPQsBQQshMBCitYIdgb9FmwBtCwExCwDtCwDi+yCQEKK1gh2Bv0WbINCQ4REjkwMQEjFhczByMGBiMBFSMBJzM2NjchNyEmJyE3IQPK7EARyS6YEvbbAe3j/e4B+X2cFf29LgITMPb+5y8DnQUSUXWesrT9xAwCaX0Ba1yevgieAAEAIP/uBBoFsAAeAI0AsABFWLARLxuxERw+WbAARViwBS8bsQUQPlmyExEFERI5sBMvsBfQsBcvsgAXAV2yGAEKK1gh2Bv0WbAZ0LAI0LAJ0LAXELAW0LAL0LAK0LATELIUAQorWCHYG/RZsBXQsAzQsA3QsBMQsBLQsA/QsA7QsAUQshoBCitYIdgb9FmyHgURERI5sB4vMDEBFQYCBCMiJxEHNTc1BzU3ETMRNxUHFTcVBxE2EhE1BBoCkP73r1Bs9PT09MD7+/v7vskDA2TS/semEgJab7JvmW+ybwFZ/v9zsnOZc7Jz/d4CARABCVgAAQBdAAAE6wQ6ABcAXLIAGBkREjkAsABFWLAWLxuxFhg+WbAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsABFWLAQLxuxEBA+WbIAChYREjmwAC+yCQEKK1gh2Bv0WbAM0LAAELAV0DAxARYAERUjNSYCJxEjEQYCBxUjNRIANzUzAv/nAQW5Ap6TuY+fArkDAQffuQNxIf6N/tq3yN8BBSD9NALKIf712MbFAR0BbSLJAAIAHwAABQMFsAAWAB8AbQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIGAwwREjmwBi+yBQEKK1gh2Bv0WbAB0LAGELAK0LAKL7QPCh8KAl2yCQEKK1gh2Bv0WbAU0LAGELAV0LAKELAX0LAMELIfAQorWCHYG/RZMDEBIREjESM1MzUjNTMRITIEFRQEByEVIQEhMjY1NCYnIQL8/rG/z8/PzwIZ6gES/vny/qMBT/6xAVqboqiP/qABE/7tAROeiZ0C2e7L1ecBiQEmkox/nQEABAB6/+sFgwXFABsAJwA1ADkAt7IcOjsREjmwHBCwANCwHBCwKNCwHBCwONAAsABFWLAKLxuxChw+WbAARViwJS8bsSUQPlmwChCwA9CwAy+yDgoDERI5tioOOg5KDgNdsAoQshEECitYIdgb9FmwAxCyGAQKK1gh2Bv0WbIbAwoREjm0NhtGGwJdsiUbAV2wJRCwH9CwHy+wJRCyKwQKK1gh2Bv0WbAfELIyBAorWCHYG/RZsjYlChESObA2L7I4CiUREjmwOC8wMQEUBiMiJjU1NDYzMhYVIzQmIyIGFRUUFjMyNjUBNDYgFhUVFAYgJjUXFBYzMjY1NTQmIyIGFQUnARcCqJh7eqGee3mciklCQU1PQT1MARCnAQaop/78qopYSkhWV0lHWf4GaQLHaQQebpCoiUeCq5FvOk1mUklOZUw6/UeDqaiLR4Opp4sGT2VjVUpPZGNU80IEckIAAAIAaP/rA2oGEwAXACEAZLITIiMREjmwExCwGNAAsABFWLAMLxuxDB4+WbAARViwAC8bsQAQPlmyBgwAERI5sAYvsgUBCitYIdgb9FmwE9CwABCyFwEKK1gh2Bv0WbAGELAY0LAMELIfAQorWCHYG/RZMDEFIiY1BiM1MjcRNjYzMhYVFRQCBxUUFjMDNjY1NTQmIyIHAszC0mJucV8BnYV4l86ra3DbWWcwJmcDFerrHLAjAiSyxq2TJcH+j2timo0CY1X1eydSTNEAAAQAogAAB8YFwAADABAAHgAoAKOyHykqERI5sB8QsAHQsB8QsATQsB8QsBHQALAARViwJy8bsSccPlmwAEVYsCUvG7ElHD5ZsABFWLAHLxuxBxw+WbAARViwIi8bsSIQPlmwAEVYsCAvG7EgED5ZsAcQsA3QsALQsAIvshACAV2yAQMKK1gh2Bv0WbANELIUAworWCHYG/RZsAcQshsDCitYIdgb9FmyISUgERI5siYgJRESOTAxASE1IQE0NiAWFRUUBiMiJjUXFBYzMjY3NTQmIyIGFQEjAREjETMBETMHpP2ZAmf9dboBOLu5nJ66o19WVF0BX1VUX/68zP2vucsCVLcBnI4CPZu+u6Ndnbq7oQVia2pgZWFra2P7mwRu+5IFsPuPBHEAAgBnA5cEOAWwAAwAFABtALAARViwBi8bsQYcPlmwAEVYsAkvG7EJHD5ZsABFWLATLxuxExw+WbIBFQYREjmwAS+yAAkBERI5sgMBBhESObAE0LIIAQkREjmwARCwC9CwBhCxDQorWNgb3FmwARCwD9CwDRCwEdCwEtAwMQEDIwMRIxEzExMzESMBIxEjESM1IQPejDSMWnCQkHBa/guTW5QBggUh/nYBif53Ahn+cQGP/ecByP44AchRAAACAJj/7ASTBE4AFQAcAGKyAh0eERI5sAIQsBbQALAARViwCi8bsQoYPlmwAEVYsAIvG7ECED5ZshoKAhESObAaL7IPCgorWCHYG/RZsAIQshMKCitYIdgb9FmyFQoCERI5sAoQshYKCitYIdgb9FkwMSUGIyImAjU0EjYzMhYWFxUhERYzMjcBIgcRIREmBBa3u5H0h5D4hIXjhAP9AHeaxKz+kJd6AhxzXnKdAQGTjwEDn4vzkD7+uG56Ayp6/usBHnH//wBU//UFswWbACcB1f/aAoYAJwF8AOYAAAAHAdwDFAAA//8AZP/1BlMFtAAnAdcAJgKUACcBfAGlAAAABwHcA7QAAP//AGP/9QZJBaQAJwHZAAgCjwAnAXwBgwAAAAcB3AOqAAD//wBZ//UF/QWkACcB2wAfAo8AJwF8ASAAAAAHAdwDXgAAAAIAav/rBDIF7AAbACoAW7IVKywREjmwFRCwI9AAsA0vsABFWLAVLxuxFRA+WbIADRUREjmwAC+yAwAVERI5sA0QsgcBCitYIdgb9FmwABCyHAEKK1gh2Bv0WbAVELIjAQorWCHYG/RZMDEBMhYXLgIjIgcnNzYzIAARFRQCBiMiADU1NAAXIgYVFRQWMzI2NTUnJiYCPF2mOg5ppmCBmxAxdJcBBwEfeN6Q2v74AQDkjJ+fio6fBBygA/5NRIzZeTuXFTD+Tv5uMrz+1qUBI/YO3AEQmLugEKrP+ds9D1pqAAABAKn/KwTlBbAABwAnALAEL7AARViwBi8bsQYcPlmwBBCwAdCwBhCyAgEKK1gh2Bv0WTAxBSMRIREjESEE5bn9NrkEPNUF7foTBoUAAQBF/vMEqwWwAAwANQCwAy+wAEVYsAgvG7EIHD5ZsAMQsgIBCitYIdgb9FmwBdCwCBCyCgEKK1gh2Bv0WbAH0DAxAQEhFSE1AQE1IRUhAQNr/bsDhfuaAmH9nwQZ/McCRgJB/UqYjwLMAtKQmP1CAAEAqAKLA+sDIgADABsAsABFWLACLxuxAhY+WbIBAQorWCHYG/RZMDEBITUhA+v8vQNDAouXAAEAPwAABJgFsAAIADyyAwkKERI5ALAHL7AARViwAS8bsQEcPlmwAEVYsAMvG7EDED5ZsgABAxESObAHELIGAQorWCHYG/RZMDEBATMBIwMjNSECMAGrvf3ijfW5ATsBHASU+lACdJoAAwBi/+sHywROABwALAA8AG+yBz0+ERI5sAcQsCTQsAcQsDTQALAARViwBC8bsQQQPlmwAEVYsAovG7EKED5ZsBPQsBMvsBnQsBkvsgcZBBESObIWGQQREjmwChCyIAEKK1gh2Bv0WbATELIpAQorWCHYG/RZsDDQsCAQsDnQMDEBFAIGIyImJwYGIyImAjU1NBI2MzIWFzY2MzIAFQUUFjMyNjc3NS4CIyIGFSU0JiMiBgcHFR4CMzI2NQfLft+Jke5QUeyQid6Aft+Ike1RUO+SzgEW+VCmiHK5NAsYcpJQhqYF96aFc7w1CRZ1kFCIpQIPk/8Akbixs7aPAQCXGJMBAJK3s7G5/sHzDbHcvKMnKmPAYdy5CK7fvagfKmHFYN64AAH/sP5LAo4GFQAVAD2yAhYXERI5ALAARViwDi8bsQ4ePlmwAEVYsAMvG7EDEj5ZsggBCitYIdgb9FmwDhCyEwEKK1gh2Bv0WTAxBRQGIyInNxYzMjURNDYzMhcHJiMiFQFlpJ45OhIuIZuxoTxUGCU2tmuiqBSRDbEFGaq+FY4L2wACAGUBGAQLA/QAFQArAI2yHCwtERI5sBwQsAXQALADL7IPAwFdsA3QsA0vsgANAV2yCAEKK1gh2Bv0WbADELAK0LAKL7ADELISAQorWCHYG/RZsA0QsBXQsBUvsA0QsBnQsBkvsCPQsCMvsgAjAV2yHgEKK1gh2Bv0WbAZELAg0LAgL7AZELIoAQorWCHYG/RZsCMQsCvQsCsvMDETNjYzNhcXFjMyNxUGIyInJyYHIgYHBzY2MzYXFxYzMjcXBiMiJycmByIGB2Ywg0JSSphCToZmZ4VOQqFET0KDMAEwgkJSSpVEUIVmAWeFTkKYSlJCgzADhTM6AiNOH4C+bR9THwJEPOUzOwIjTSGAvW0fTiMCRDwAAAEAmACbA9oE1QATADcAsBMvsgABCitYIdgb9FmwBNCwExCwB9CwExCwD9CwDy+yEAEKK1gh2Bv0WbAI0LAPELAL0DAxASEHJzcjNSE3ITUhExcHMxUhByED2v3tjl9srgELlf5gAf6ZX3fD/t+UAbUBj/Q7uaD/oQEGO8uh/wD//wA+AAIDgQQ+AGYAIABhQAA5mgEHAZf/lv13AB0AsABFWLAFLxuxBRg+WbAARViwCC8bsQgQPlkwMQD//wCFAAED3ARRAGYAIgBzQAA5mgEHAZf/3f12AB0AsABFWLACLxuxAhg+WbAARViwCC8bsQgQPlkwMQAAAgArAAAD3AWwAAUACQA4sggKCxESObAIELAB0ACwAEVYsAAvG7EAHD5ZsABFWLADLxuxAxA+WbIGAAMREjmyCAADERI5MDEBMwEBIwkEAbyMAZT+cI3+bAHW/ukBHAEYBbD9J/0pAtcCD/3x/fICDgD//wC1AKcBmwT1ACcAEgAlALIABwASACUEJAACAG4CeQIzBDoAAwAHACwAsABFWLACLxuxAhg+WbAARViwBi8bsQYYPlmwAhCwANCwAC+wBNCwBdAwMRMjETMBIxEz+42NATiNjQJ5AcH+PwHBAAABAFz/XwFXAO8ACAAgsggJChESOQCwCS+wBNCwBC+0QARQBAJdsADQsAAvMDEXJzY3NTMVFAbFaUgCsU+hSG1/XExbswD//wA8AAAE9gYVACYASgAAAAcASgIsAAAAAgAfAAADzQYVABUAGQCDsggaGxESObAIELAX0ACwAEVYsAgvG7EIHj5ZsABFWLADLxuxAxg+WbAARViwES8bsREYPlmwAEVYsBgvG7EYGD5ZsABFWLAALxuxABA+WbAARViwFi8bsRYQPlmwAxCyAQEKK1gh2Bv0WbAIELINAQorWCHYG/RZsAEQsBPQsBTQMDEzESM1MzU0NjMyFwcmIyIGFRUzFSMRISMRM8qrq8+9cKsffXF3ad3dAkm6ugOrj1y1yj2cMmtrXo/8VQQ6AAEAPAAAA+kGFQAWAFwAsABFWLASLxuxEh4+WbAARViwBi8bsQYYPlmwAEVYsAkvG7EJED5ZsABFWLAWLxuxFhA+WbASELICAQorWCHYG/RZsAYQsgcBCitYIdgb9FmwC9CwBhCwDtAwMQEmIyIVFTMVIxEjESM1MzU2NjMyBREjAzB8TMjn57mrqwHAsWUBK7kFYxTSa4/8VQOrj3atuD36KAAAAgA8AAAGMgYVACcAKwCdALAARViwFi8bsRYePlmwAEVYsAgvG7EIHj5ZsABFWLAgLxuxIBg+WbAARViwEi8bsRIYPlmwAEVYsAQvG7EEGD5ZsABFWLAqLxuxKhg+WbAARViwKS8bsSkQPlmwAEVYsCMvG7EjED5ZsABFWLAnLxuxJxA+WbAgELIhAQorWCHYG/RZsCXQsAHQsAgQsg0BCitYIdgb9FmwG9AwMTMRIzUzNTQ2MzIXByYjIgYVFSE1NDYzMhcHJiMiBhUVMxUjESMRIREhIxEz56uruqpAPwovNVpiAZDPvXCrH31yd2ne3rn+cASSubkDq49vrr4RlglpYnJctco9nDJqbF6P/FUDq/xVBDoAAAEAPAAABjIGFQAoAGoAsABFWLAILxuxCB4+WbAARViwIS8bsSEYPlmwAEVYsCgvG7EoED5ZsCEQsiIBCitYIdgb9FmwJtCwAdCwIRCwEtCwBNCwCBCyDQEKK1gh2Bv0WbAIELAW0LAoELAl0LAa0LANELAd0DAxMxEjNTM1NDYzMhcHJiMiBhUVITU2NjMyBREjESYjIhUVMxUjESMRIRHnq6u6qkA/Ci81WmIBkAHAsWUBK7l8TMjn57n+cAOrj2+uvhGWCWlicnatuD36KAVjFNJrj/xVA6v8VQABADz/7ASbBhUAJgBzALAARViwIS8bsSEePlmwAEVYsB0vG7EdGD5ZsABFWLAYLxuxGBA+WbAARViwCi8bsQoQPlmwHRCwENCwJdCyAQEKK1gh2Bv0WbAKELIFAQorWCHYG/RZsAEQsA7QsCEQshUBCitYIdgb9FmwDhCwGtAwMQEjERQWMzI3FwYjIiY1ESM1MxEmJyciFREjESM1MzU0NjMyFhcRMwSWyjZBIzQBSUZ8fsXFPWYYt7mrq7OgXdtaygOr/WFBQQyWFJaKAp+PAR8cBwHd+2ADq49wrb45LP6KAAABAF//7AZUBhEATAC5shZNThESOQCwAEVYsEcvG7FHHj5ZsABFWLAPLxuxDxg+WbAARViwSy8bsUsYPlmwAEVYsEAvG7FAGD5ZsABFWLAJLxuxCRA+WbAARViwLC8bsSwQPlmwSxCyAQEKK1gh2Bv0WbAJELIEAQorWCHYG/RZsAEQsA3QsEcQshQBCitYIdgb9FmwQBCyIAEKK1gh2Bv0WbI6LEAREjmwOhCyJQEKK1gh2Bv0WbAsELI0AQorWCHYG/RZMDEBIxEUMzI3FwYjIiY1ESM1MzU0JiMiBhUUHgIVIzQmIyIGFRQWBBYWFRQGIyImJjUzFhYzMjY1NCYkJiY1NDYzMhcmNTQ2MzIWFRUzBk/KdyM0AU1CdoS8vGZiWFwfJR66gWJlcmoBFaxT6LmCyHG5BYtyaX9x/uelT+GvYFYsypu5ycoDq/1+nwyWFKaXAoKPVXJ1WEY7aXB8TExuWEdDRD5WeVeRr1ylYF1tVUdLUzxUdFCFuB5uUnylx8NNAAAWAFv+cgfuBa4ADQAaACgANwA9AEMASQBPAFYAWgBeAGIAZgBqAG4AdgB6AH4AggCGAIoAjgG+shCPkBESObAQELAA0LAQELAb0LAQELAw0LAQELA80LAQELA+0LAQELBG0LAQELBK0LAQELBQ0LAQELBX0LAQELBb0LAQELBh0LAQELBj0LAQELBn0LAQELBt0LAQELBw0LAQELB30LAQELB70LAQELB/0LAQELCE0LAQELCI0LAQELCM0ACwPS+wAEVYsEYvG7FGHD5Zsn5JAyuyensDK7KCdwMrsn86AyuyCj1GERI5sAovsAPQsAMvsA7QsA4vsAoQsA/QsA8vslAODxESObBQL7JvBworWCHYG/RZshVQbxESObAKELIeBworWCHYG/RZsAMQsiUHCitYIdgb9FmwDxCwKdCwKS+wDhCwLtCwLi+yNAcKK1gh2Bv0WbA9ELI8CgorWCHYG/RZsD0QsGvQsGfQsGPQsD7QsDwQsGzQsGjQsGTQsD/QsDoQsEHQsEYQsGDQsFzQsFjQsEvQskoKCitYIdgb9FmwWtCwXtCwYtCwR9CwSRCwTtCwDhCyUQcKK1gh2Bv0WbAPELJ2BworWCHYG/RZsHcQsITQsHoQsIXQsHsQsIjQsH4QsInQsH8QsIzQsIIQsI3QMDEBFAYjIiYnNTQ2MzIWFxMRMzIWFRQHFhYVFCMBNCYjIgYVFRQWMzI2NQEzERQGIyImNTMUMzI2NQERMxUzFSE1MzUzEQERIRUjFSU1IREjNQEVMzI1NCcTNSEVITUhFSE1IRUBNSEVITUhFSE1IRUTMzI1NCYjIwEjNTM1IzUzESM1MyUjNTM1IzUzESM1MwM5gWRmgAJ+aGWAAkO8YnJUMjTQ/o9KQUBKSkJASQO6XGlSWG1daCk2+cRxxAUox2/4bQE1xAXsATZv/Fx+Z2LLARb9WwEV/VwBFAIKARb9WwEV/VwBFLxddjo8XfzxcXFxcXFxByJvb29vb28B1GJ5eF51X3x4Xv6zAiVJTVQgDUYtmwFIRU5ORXBFTk5FAU/+hk5dUVNbNiz8yQE7ynFxyv7FBh8BHXSpqXT+46n8tqlTUgQDSnR0dHR0dPk4cXFxcXFxA8RQKR7+0/x++vwV+X78fvr8FfkABQBc/dUH1whzAAMAHAAgACQAKABSsxEPEAQrswQPHAQrswoPFwQrsAQQsB3QsBwQsB7QALAhL7AlL7IcHgMrsCUQsADQsAAvsCEQsALQsAIvsg0AAhESObANL7IfHgIREjmwHy8wMQkDBTQ2NzY2NTQmIyIGBzM2NjMyFhUUBwYGFRcjFTMDMxUjAzMVIwQYA7/8QfxEBA8eJEpcp5WQoALLAjorOThdWy/KyspLBAQCBAQGUvwx/DEDz/E6Ohgnh0qAl4t/MzRANF88QVxMW6r9TAQKngQAAQA7AAAD0gWwAAYAMgCwAEVYsAUvG7EFHD5ZsABFWLABLxuxARA+WbAFELIDAQorWCHYG/RZsgADBRESOTAxAQEjASE1IQPS/b66AkD9JQOXBUj6uAUYmAAAAgBa/+wERAROABAAHAA2ALAARViwBC8bsQQYPlmwAEVYsAwvG7EMED5ZshQBCitYIdgb9FmwBBCyGgEKK1gh2Bv0WTAxEzQ2NjMyABUVFAYGIyImJic3FBYzMjY1NCYjIgZagOOQ3QEafuWSj+OBArmvjY6usY2LrwInnP+M/sz7Dp38jIj5mgqw3uDEr+DeAAAB/7b+SwFnAJgADAAnALANL7AARViwBC8bsQQSPlmyCQEKK1gh2Bv0WbANELAM0LAMLzAxJRUGBiMiJzcWMzI1NQFnAaqXOzQOHkOJmPWosBKdDcLpAAEAZ/6ZASEAmQADABIAsAQvsALQsAIvsAHQsAEvMDEBIxEzASG6uv6ZAgAAAgCDBNkC0gbQAA0AIQB7ALADL7AH0LAHL0ANDwcfBy8HPwdPB18HBl2wAxCyCgQKK1gh2Bv0WbAHELAN0LANL7AHELAR0LARL7AU0LAUL0ALDxQfFC8UPxRPFAVdsBEQsBfQsBcvsBQQshsECitYIdgb9FmwERCyHgQKK1gh2Bv0WbAbELAh0DAxARQGIyImNTMUFjMyNjUTFAYjIiYjIgYVJzQ2MzIWMzI2NQLSoYaHoZZKSEdKjWBGOncsIjBTYEUwgSwjMAWuX3Z2XzZAQDYBCkppSzMmFUtrSzMmAAACAIEE4ALKBwMADQAcAGUAsAMvsAfQsAcvQA0PBx8HLwc/B08HXwcGXbADELIKBAorWCHYG/RZsAcQsA3QsA0vsAcQsA7QsA4vsBXQsBUvQA8PFR8VLxU/FU8VXxVvFQddsBTQsg8UDhESObIbDhUREjkwMQEUBiMiJjUzFBYzMjY1Jyc2NjU0IzcyFhUUBgcHAsqhg4ShkkpJRUzJAUpCoAeQlFFEAQWwXnJzXTU+PTYRfAQYHTtSTkIyOwc+AAACAIEE3wLgBooADQARAF8AsAMvsAfQsAcvQA0PBx8HLwc/B08HXwcGXbADELIKBAorWCHYG/RZsAcQsA3QsA0vsAcQsBDQsBAvsA/QsA8vQA8PDx8PLw8/D08PXw9vDwddsBAQsBHQGbARLxgwMQEUBiMiJjUzFBYzMjY1JzMHIwLgqIeIqJhPSUdPYJmkZgWwX3JyXzc9PzXaxgACAGkE5ANGBtQABgAaAIUAsAMvsAHQsAEvsAbQsAYvQAkPBh8GLwY/BgRdsgQDBhESORmwBC8YsADQsgIGARESObAGELAK0LAKL7Q/Ck8KAl2wDdCwDS9ADQ8NHw0vDT8NTw1fDQZdsAoQsBDQsBAvsA0QshQECitYIdgb9FmwChCyFwQKK1gh2Bv0WbAUELAa0DAxASMnByMlMzcUBiMiJiMiBhUnNDYzMhYzMjY1A0aqxcWpAS2Dw2BBNm4oHTZNYEAqfCYfNATknp705T5eRy4dEz9iRi0cAAIAaQTkA+wGzwAGABUAYQCwAy+wBdCwBS+2DwUfBS8FA12yBAMFERI5GbAELxiwANCwAxCwAdCwAS+yAgUDERI5sAfQsAcvsA7QsA4vQA0PDh8OLw4/Dk8OXw4GXbAN0LIIBw0REjmyFA4HERI5MDEBIycHIwEzFyc2NjU0IzcyFhUUBgcHA0aqxcWpARC8vgFBO40FgIZKPAEE5Lq6AQZ8gwQaIUNcWEk7Qgc8AAL/XgTPA0YGggAGAAoAXQCwAy+yDwMBXbAE0BmwBC8YsADQGbAALxiwAxCwAdCwAS+wBtCwBi+2DwYfBi8GA12yAgMGERI5sAMQsAjQsAgvsAfQGbAHLxiwCBCwCtCwCi+2DwofCi8KA10wMQEjJwcjATMFIwMzA0bFqqrEASKY/o+MyMcEz56eAQZVAQIAAAIAbgThBFgGlQAGAAoAXQCwAy+yDwMBXbAF0LAFL7AA0LAAL7YPAB8ALwADXbADELAC0BmwAi8YsgQDABESObAG0BmwBi8YsAMQsAnQsAkvsAfQsAcvtg8HHwcvBwNdsAkQsArQGbAKLxgwMQEzASMnByMBMwMjAZKYASLFqarGAyLIyY0F6P75n58BtP79AAIAgQTfAuAGigANABEAXwCwAy+wB9CwBy9ADQ8HHwcvBz8HTwdfBwZdsAMQsgoECitYIdgb9FmwBxCwDdCwDS+wBxCwEdCwES+wD9CwDy9ADw8PHw8vDz8PTw9fD28PB12wERCwENAZsBAvGDAxARQGIyImNTMUFjMyNjUlMxcjAuCoh4iomE9JR0/+pppwZQWwX3JyXzc9PzXaxgAAAQCfBI4BlgY7AAgADACwAC+wBNCwBC8wMQEXBgcVIzU0NgErazsDuVQGO1Njb4iCTa0AAAIAEwAABHAEjQAHAAoARgCwAEVYsAQvG7EEGj5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMjATMBIwEhAwNG/fhuvQHfpgHYvP3GAZHHARf+6QSN+3MBrgH9AAMAigAAA+8EjQAOABYAHgBoALAARViwAS8bsQEaPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7K/FwFdtB8XLxcCXbTfF+8XAl2yDwEKK1gh2Bv0WbIIDxcREjmwABCyEAEKK1gh2Bv0WbABELIeAQorWCHYG/RZMDEzESEyFhUUBgcWFhUUBgcBESEyNjU0IyUzMjY1NCcjigGW0d5fWGN02sn+9wEGc3rr/vjqbHzl7QSNo5tRfiEYlWWergECEv6FYlXEjVVTqAUAAAEAYP/wBDAEnQAcAEyyAx0eERI5ALAARViwCy8bsQsaPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbADELAc0DAxAQYGIyIAETU0NjYzMhYXIyYmIyIGBxUUFjMyNjcEMBT80eD+8XvnmMz3E7kSjX6ZpwGfl4eNFAF5u84BJwEDXqT5iNO7gnTLvWq9z2+DAAIAigAABB8EjQAKABQARrICFRYREjmwAhCwFNAAsABFWLABLxuxARo+WbAARViwAC8bsQAQPlmwARCyCwEKK1gh2Bv0WbAAELIMAQorWCHYG/RZMDEzESEyFhYXFRQAIQMRMzI2NTU0JiOKAWmi+4wD/sn++Z6kusa9twSNhfafTfz+1gP0/KPQwEDAzQABAIoAAAOuBI0ACwBUALAARViwBi8bsQYaPlmwAEVYsAQvG7EEED5ZsAvQsAsvst8LAV2yHwsBXbIAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASERIRUhESEVIREhA1f97AJr/NwDHv2bAhQCDv6JlwSNmf6yAAEAigAAA5sEjQAJAEEAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmwCdCwCS+yHwkBXbIAAQorWCHYG/RZsAQQsgYBCitYIdgb9FkwMQEhESMRIRUhESEDS/34uQMR/agCCAHz/g0EjZn+mAAAAQBj//AENQSdAB0AX7IKHh8REjkAsABFWLAKLxuxCho+WbAARViwAy8bsQMQPlmyHQoDERI5sB0vsg0dChESObAKELIQAQorWCHYG/RZsAMQshcBCitYIdgb9FmwHRCyGgMKK1gh2Bv0WTAxJQYGIyIAJzUQADMyFhcjJiMiBhUVFBYzMjc1ITUhBDVC6Zfu/uACAQvyyPIbuCb1n6a5oLZR/ucB0ZZTUwEq/FoBBgEnvLXZzsdUvtdK7pAAAAEAigAABFgEjQALAFMAsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbIJAAoREjl8sAkvGLKjCQFdsgIBCitYIdgb9FkwMSEjESERIxEzESERMwRYuf2kubkCXLkB8v4OBI39/QIDAAABAJcAAAFRBI0AAwAdALAARViwAi8bsQIaPlmwAEVYsAAvG7EAED5ZMDEhIxEzAVG6ugSNAAABACv/8ANNBI0ADwA1sgUQERESOQCwAEVYsAAvG7EAGj5ZsABFWLAFLxuxBRA+WbAJ0LAFELIMAQorWCHYG/RZMDEBMxEUBiMiJjUzFBYzMjY1ApK71LHC27pxclxuBI38xZ3Ft6ReZm1fAAABAIoAAARXBI0ADABMALAARViwBC8bsQQaPlmwAEVYsAgvG7EIGj5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAIIERI5sgYCBBESObIKAggREjkwMQEHESMRMxE3ATMBASMB1pO5uYIBjeP+IQIB4QIHjv6HBI391ZABm/35/XoAAAEAigAAA4sEjQAFACgAsABFWLAELxuxBBo+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WTAxJSEVIREzAUMCSPz/uZeXBI0AAAEAigAABXcEjQAOAGCyAQ8QERI5ALAARViwAC8bsQAaPlmwAEVYsAIvG7ECGj5ZsABFWLAELxuxBBA+WbAARViwCC8bsQgQPlmwAEVYsAwvG7EMED5ZsgEABBESObIHAAQREjmyCgAEERI5MDEJAjMRIxETASMBExEjEQF6AYcBhfG4E/5yiP5zE7gEjfxxA4/7cwGRAhX8WgOi/e/+bwSNAAEAigAABFgEjQAJAEUAsABFWLAFLxuxBRo+WbAARViwCC8bsQgaPlmwAEVYsAAvG7EAED5ZsABFWLADLxuxAxA+WbICBQAREjmyBwUAERI5MDEhIwERIxEzAREzBFi4/aO5uQJduANs/JQEjfyTA20AAAIAYP/wBFoEnQANABsARrIDHB0REjmwAxCwEdAAsABFWLAKLxuxCho+WbAARViwAy8bsQMQPlmwChCyEQEKK1gh2Bv0WbADELIYAQorWCHYG/RZMDEBEAAjIgARNRAAMzIAFwc0JiMiBhUVFBYzMjY1BFr+7Ojl/ucBF+XpARMCt6yblq+wl5ypAiT++/7RATIBBz4BAgE0/tD/BcbS1sVCw9fTxwACAIoAAAQbBI0ACgATAE2yChQVERI5sAoQsAzQALAARViwAy8bsQMaPlmwAEVYsAEvG7EBED5ZsgsDARESObALL7IAAQorWCHYG/RZsAMQshIBCitYIdgb9FkwMQERIxEhMhYVFAYjJSEyNjU0JichAUO5AdPM8urW/ugBGnyIiHf+4QG2/koEjceoqr6YamRgdwEAAgBZ/zYEVwSdABMAIQBNsggiIxESObAIELAe0ACwAEVYsBAvG7EQGj5ZsABFWLAILxuxCBA+WbIDCBAREjmwEBCyFwEKK1gh2Bv0WbAIELIeAQorWCHYG/RZMDEBFAYHFwclBiMiABE1NBI2MzIAESc0JiMiBgcVFBYzMjY1BFVwZth8/vk2RuT+5X/oluoBFbesnJSsBK6YnKoCJKbzRqBvxw0BMQEIPqkBA4r+zf75BsbSz7lVwtjTxwACAIoAAAQlBI0ADQAWAGGyFRcYERI5sBUQsAXQALAARViwBC8bsQQaPlmwAEVYsAIvG7ECED5ZsABFWLAMLxuxDBA+WbIPBAIREjmwDy+yAAEKK1gh2Bv0WbIKAAQREjmwBBCyFQEKK1gh2Bv0WTAxASERIxEhMhYVFAcBFSMBMzI2NTQmIyMCWv7puQGq1efrASDG/eT2dYmGfvABwf4/BI26quRZ/h4KAlhtXWRuAAEAQ//wA90EnQAlAFoAsABFWLAJLxuxCRo+WbAARViwHC8bsRwQPlmyAhwJERI5sAkQsA3QsAkQshABCitYIdgb9FmwAhCyFgEKK1gh2Bv0WbAcELAg0LAcELIjAQorWCHYG/RZMDEBNCYkJyY1NDYzMhYVIzQmIyIGFRQWBBYWFRQGIyIkNTMUFjMyNgMjef7aVsPzv8T5uY15cYZ7ATiwVvPHz/7vupqMfoIBKlBYSitis4+yyJxia1lQQVhQZYhbk6nLomZyWwABACgAAAP9BI0ABwAuALAARViwBi8bsQYaPlmwAEVYsAIvG7ECED5ZsAYQsgABCitYIdgb9FmwBNAwMQEhESMRITUhA/3+cbn+cwPVA/T8DAP0mQABAHT/8AQKBI0AEQA8sgQSExESOQCwAEVYsAAvG7EAGj5ZsABFWLAILxuxCBo+WbAARViwBC8bsQQQPlmyDQEKK1gh2Bv0WTAxAREUBiMiJicRMxEUFjMyNjURBAr60dL2A7ePhYOPBI389Lbb07YDFPz0eYF/ewMMAAEAFAAABFMEjQAIADEAsABFWLADLxuxAxo+WbAARViwBy8bsQcaPlmwAEVYsAUvG7EFED5ZsgEDBRESOTAxARc3ATMBIwEzAhoZGgFAxv43rf43xwEkXlwDa/tzBI0AAAEAMQAABfEEjQASAGCyDhMUERI5ALAARViwAy8bsQMaPlmwAEVYsAgvG7EIGj5ZsABFWLARLxuxERo+WbAARViwCi8bsQoQPlmwAEVYsA8vG7EPED5ZsgEDChESObIGAwoREjmyDQMKERI5MDEBFzcTMxMXNxMzASMBJwcBIwEzAa8LD/il9A0Mxrj+1q7+/AEB/vSt/te3ASZQQAN3/IY7UANl+3MDlQUF/GsEjQAAAQAmAAAEMQSNAAsAUwCwAEVYsAEvG7EBGj5ZsABFWLAKLxuxCho+WbAARViwBC8bsQQQPlmwAEVYsAcvG7EHED5ZsgABBBESObIGAQQREjmyAwAGERI5sgkGABESOTAxAQEzAQEjAQEjAQEzAigBH9z+dQGZ3P7V/tjcAZb+c9sC2gGz/b79tQG7/kUCSwJCAAABAA0AAAQcBI0ACAAxALAARViwAS8bsQEaPlmwAEVYsAcvG7EHGj5ZsABFWLAELxuxBBA+WbIAAQQREjkwMQEBMwERIxEBMwIUATjQ/lK5/ljQAkoCQ/0K/mkBogLrAAABAEcAAAPgBI0ACQBEALAARViwBy8bsQcaPlmwAEVYsAIvG7ECED5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIRUhNQEhNSEVAS8CsfxnApj9cQN4l5d8A3iZeQAAAgBQ//UCnQMgAA0AFwBGsgMYGRESObADELAQ0ACwAEVYsAovG7EKFj5ZsABFWLADLxuxAxA+WbAKELIQAgorWCHYG/RZsAMQshUCCitYIdgb9FkwMQEUBiMiJic1NDYzMhYXJzQjIgcVFDMyNwKdmI2LnAGbi42YAp2KhQSLhAQBRaKurKCOo66snQfAtLPCtQABAHoAAAHvAxUABgA1ALAARViwBS8bsQUWPlmwAEVYsAEvG7EBED5ZsgQFARESObAEL7IDAgorWCHYG/RZsALQMDEhIxEHNSUzAe+d2AFjEgJZOYB1AAEAQgAAAqsDIAAWAFSyCBcYERI5ALAARViwDi8bsQ4WPlmwAEVYsAAvG7EAED5ZshUCCitYIdgb9FmwAtCyFBUOERI5sgMOFBESObAOELIIAgorWCHYG/RZsA4QsAvQMDEhITUBNjU0JiMiBhUjNDYgFhUUDwIhAqv9qQEsbUA8S0edpwEImmtUsAGPbAEaZkUxPUw5cpR/bmhrT5EAAQA+//UCmgMgACYAcQCwAEVYsA4vG7EOFj5ZsABFWLAZLxuxGRA+WbIAGQ4REjl8sAAvGLaAAJAAoAADXbAOELIHAgorWCHYG/RZsgoABxESObAAELImAgorWCHYG/RZshQmABESObAZELIgAgorWCHYG/RZsh0mIBESOTAxATMyNjU0JiMiBhUjNDYzMhYVFAYHFhUUBiMiJjUzFBYzMjY1NCcjAQlUSkg/RjlLnaN8iZxGQpWqiISmnk9DRkmcWAHLPTAtOjMpYnt5aDdbGSmPan1+ay08PDNxAgAAAgA2AAACuwMVAAoADgBJALAARViwCS8bsQkWPlmwAEVYsAQvG7EEED5ZsgEJBBESObABL7ICAgorWCHYG/RZsAbQsAEQsAvQsggLBhESObINCQQREjkwMQEzFSMVIzUhJwEzATMRBwJQa2ud/okGAXmh/oTfEQErgqmpZgIG/hYBIRwAAQBb//UCpwMVABsAYQCwAEVYsAEvG7EBFj5ZsABFWLANLxuxDRA+WbABELIECQorWCHYG/RZsgcNARESObAHL7IZAgorWCHYG/RZsgUHGRESObANELAR0LANELITAgorWCHYG/RZsAcQsBvQMDETEyEVIQc2MzIWFRQGIyImJzMWMzI2NTQmIyIHcDIB3v6jFkFKgI+ghnmnBpsKgUFITkpJOwGDAZKEqh2JeXyRfmVjS0Q+TSsAAAIAVv/1AqsDHgATAB8ATgCwAEVYsAAvG7EAFj5ZsABFWLAMLxuxDBA+WbAAELIBAgorWCHYG/RZsgYMABESObAGL7IUAgorWCHYG/RZsAwQshsCCitYIdgb9FkwMQEVIwQHNjMyFhUUBiMiJjU1NDY3AyIGBxUUFjMyNjQmAigR/vQXSHJ2h5+Ei6fezX4zTRFTPz1ORwMegwLbTZF3dJqmlzPQ5AX+biwgIlRVT3xMAAABADoAAAKlAxUABgAyALAARViwBS8bsQUWPlmwAEVYsAIvG7ECED5ZsAUQsgQCCitYIdgb9FmyAAUEERI5MDEBASMBITUhAqX+o6YBXf47AmsCu/1FApOCAAADAE//9QKfAyAAEwAeACgAegCwAEVYsBEvG7ERFj5ZsABFWLAGLxuxBhA+WbIkBhEREjmwJC+23yTvJP8kA122DyQfJC8kA12y/yQBcbQPJB8kAnKyFwIKK1gh2Bv0WbICJBcREjmyDBckERI5sAYQsh0CCitYIdgb9FmwERCyHwIKK1gh2Bv0WTAxARQHFhUUBiAmNTQ2NyY1NDYzMhYDNCYjIgYVFBYyNgMiBhUUFjI2NCYCi3eLoP7woEpAd5d9fpeJTj4/S0x+TIw3Pz9wP0ACQ3Y3O4NqeXlqQmEbN3Zndnb+OjQ6OjQ1OjoB8DUwLjg4XDcAAAIASf/5ApUDIAASAB4AWgCwAEVYsAgvG7EIFj5ZsABFWLAPLxuxDxA+WbICDwgREjmwAi+2DwIfAi8CA12wDxCyEAIKK1gh2Bv0WbACELITAgorWCHYG/RZsAgQshkCCitYIdgb9FkwMQEGIyImNTQ2MzIWFxUQBQc1MjYnMjc1NCYjIgYVFBYB9kVldo2jgYmcA/5zN5aEe14qTzw7TEoBQEGKfnmgpZQ9/mQUAX9inkc8U1BUQ0FOAAEAjwKLAwsDIgADABEAsAIvsgEBCitYIdgb9FkwMQEhNSEDC/2EAnwCi5cAAwCeBEACbgZyAAMADwAbAHIAsABFWLANLxuxDRg+WbAH0LAHL0AJPwdPB18HbwcEXbAC0LACL7Y/Ak8CXwIDXbAA0LAAL0ARDwAfAC8APwBPAF8AbwB/AAhdsAIQsAPQGbADLxiwDRCyEwcKK1gh2Bv0WbAHELIZBworWCHYG/RZMDEBMwcjBzQ2MzIWFRQGIyImNxQWMzI2NTQmIyIGAbG93HKCZEhEY2FGSGRVMyQjMDAjJTIGcrjXRmFeSUdcXkUjMjEkJjI0AAMAHv5KBBEETgApADcARACPALAARViwJi8bsSYYPlmwAEVYsBYvG7EWEj5ZsCYQsCnQsCkvsgADCitYIdgb9FmyCBYmERI5sAgvsg4IFhESObAOL7SQDqAOAl2yNwEKK1gh2Bv0WbIcNw4REjmyIAgmERI5sBYQsjABCitYIdgb9FmwCBCyOwEKK1gh2Bv0WbAmELJCAQorWCHYG/RZMDEBIxYXFRQGBiMiJwYVFBczFhYVFAYGIyImNTQ2NyY1NDcmNTU0NjMyFyEBBgYVFBYzMjY1NCYnIwMUFjMyNjU1NCYiBhUEEZc6AW/DeE9JNHq3yM6N9JfR/15UOHOu8btQRwFv/Tw4PJSDks1obO90jGlniorSigOnVGkZYqZeFSpAUAIBlY9UoWCbelOKKi9KfFJqxQudyhT7+BpdN0pZckxKQQICpVN7elgSV3h4WgAAAgBk/+sEWAROABAAHABhALAARViwCS8bsQkYPlmwAEVYsAwvG7EMGD5ZsABFWLACLxuxAhA+WbAARViwEC8bsRAQPlmyAAIJERI5sgsJAhESObACELIUAQorWCHYG/RZsAkQshoBCitYIdgb9FkwMSUCISICNTUQEjMgEzczAxMjARQWMzITNSYmIyIGA4Js/vLA5OLEAQlsIrBqcbD9dZKH00gckmuGlfH++gEb9A8BCAE9/v/t/eL95AH0r8MBhyS+y+MAAgCxAAAE4wWvABYAHgBhshgfIBESObAYELAE0ACwAEVYsAMvG7EDHD5ZsABFWLABLxuxARA+WbAARViwDy8bsQ8QPlmyFwMBERI5sBcvsgABCitYIdgb9FmyCRcAERI5sAMQsh0BCitYIdgb9FkwMQERIxEhMhYVFAcWExUWFxUjJic1NCYjJSEyNjUQISEBcsECDvD77d4FAkHGOwOMf/6eATminf7P/rkCdP2MBa/SzOVjRf76nI09GDasi3iPnXyEAQAAAQCyAAAFHQWwAAwAaACwAEVYsAQvG7EEHD5ZsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgYCBBESOXywBi8YtGMGcwYCXbQzBkMGAl2ykwYBXbIBAQorWCHYG/RZsgoBBhESOTAxASMRIxEzETMBMwEBIwIjscDAlgH97/3UAlXrAo79cgWw/X4Cgv0+/RIAAAEAkgAABBQGAAAMAFMAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIHCAIREjmwBy+yAAEKK1gh2Bv0WbIKAAcREjkwMQEjESMRMxEzATMBASMBzIC6un4BO9v+hgGu2wH1/gsGAPyOAaz+E/2zAAEAsgAABPoFsAALAEwAsABFWLADLxuxAxw+WbAARViwBy8bsQccPlmwAEVYsAEvG7EBED5ZsABFWLAKLxuxChA+WbIAAwEREjmyBQMBERI5sgkABRESOTAxAREjETMRMwEzAQEjAXLAwAwCY/H9awK97QK1/UsFsP15Aof9O/0VAAABAJIAAAPxBhgADABMALAARViwBC8bsQQePlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAgCERI5sgYIAhESObIKBgAREjkwMQEjESMRMxEzATMBASMBUAS6ugEBivD+KwH/5AHz/g0GGPx1Aa3+Df25AAABAEP/EwPdBXMAKwBmALAARViwCS8bsQkaPlmwAEVYsCIvG7EiED5ZsgIiCRESObAJELAM0LAJELAQ0LAJELITAQorWCHYG/RZsAIQshkBCitYIdgb9FmwIhCwH9CwIhCwJtCwIhCyKQEKK1gh2Bv0WTAxATQmJCcmNTQ2NzUzFRYWFSM0JiMiBhUUFgQWFhUUBgcVIzUmJjUzFBYzMjYDI3n+2lbDy6aVo8a5jXlxhnsBOLBWw6mVut+6mox+ggEqUFhKK2KzgqwQ2dsVwohia1lQQVhQZYhbgqYQ4eETwpRmclsAAAEAMAAAA+8EnQAgAGAAsABFWLAULxuxFBo+WbAARViwBy8bsQcQPlmyDwcUERI5sA8vsg4ECitYIdgb9FmwAdCwBxCyBAEKK1gh2Bv0WbAI0LAUELAY0LAUELIbAQorWCHYG/RZsA8QsB/QMDEBIRcWByEHITUzNjc3JyM1MycmNjMyFhUjNCYjIgYXFyEDHf5wAQU4ApQB/IQKTwkBAaSgBAbLtbfKuWhgXWgEBAGUAfQiy2+YmBfdRiJ5e8nszLdwd4+KewAAAQAWAAAEJQSNABcAigCwAEVYsBcvG7EXGj5ZsABFWLABLxuxARo+WbAARViwDS8bsQ0QPlmyAA0XERI5shANFxESObAQL7IPEAFdsBTQsBQvtA8UHxQCcUAPDxQfFC8UPxRPFF8UbxQHXbAD0LAUELITBAorWCHYG/RZsAbQsBAQsAjQsBAQsg8ECitYIdgb9FmwC9AwMQEBMwEzFSEHFSEVIRUjNSE1ITUhNSEBMwIdATjQ/pv7/sEFAUT+vLn+vAFE/rwBAP6c0AJLAkL9jHkJQnjd3XhLeQJ0AAEAigAAA4UEjQAFADKyAQYHERI5ALAARViwBC8bsQQaPlmwAEVYsAIvG7ECED5ZsAQQsgABCitYIdgb9FkwMQEhESMRIQOF/b65AvsD9PwMBI0AAAIAFAAABFMEjQADAAgAPLIFCQoREjmwBRCwAtAAsABFWLACLxuxAho+WbAARViwAC8bsQAQPlmyBQIAERI5sgcBCitYIdgb9FkwMSEhATMDJwcBIQRT+8EBya09Ghn++AJDBI3+3Vxe/TAAAAMAYP/wBFoEnQADABEAHwBeALAARViwDi8bsQ4aPlmwAEVYsAcvG7EHED5ZsgIHDhESOXywAi8YtGACcAICcbRgAnACAl2yAQEKK1gh2Bv0WbAOELIVAQorWCHYG/RZsAcQshwBCitYIdgb9FkwMQEhNSEFEAAjIgARNRAAMzIAFwc0JiMiBhUVFBYzMjY1A1X+HwHhAQX+7Ojl/ucBF+XpARMCt6yblq+wl5ypAfmZbv77/tEBMgEHPgECATT+0P8FxtLWxULD19PHAAEAFAAABFMEjQAIADiyBwkKERI5ALAARViwAi8bsQIaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbIHAgAREjkwMTMjATMBIwEnB9vHAcmtAcnG/sAaGQSN+3MDalxeAAADAD4AAANLBI0AAwAHAAsAY7IEDA0REjmwBBCwAdCwBBCwCdAAsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmyAgEKK1gh2Bv0WbIHCgAREjmwBy+yvwcBXbIEAQorWCHYG/RZsAoQsggBCitYIdgb9FkwMSEhNSEDITUhEyE1IQNL/PMDDUP9dwKJQ/zzAw2YAXuYAUmZAAEAigAABEQEjQAHAD+yAQgJERI5ALAARViwBi8bsQYaPlmwAEVYsAAvG7EAED5ZsABFWLAELxuxBBA+WbAGELICAQorWCHYG/RZMDEhIxEhESMRIQREuv25uQO6A/T8DASNAAABAD8AAAPIBI0ADABDsgYNDhESOQCwAEVYsAgvG7EIGj5ZsABFWLADLxuxAxA+WbIBAQorWCHYG/RZsAXQsAgQsgoBCitYIdgb9FmwB9AwMQEBIRUhNQEBNSEVIQECb/62AqP8dwFR/q8DV/2PAUoCOv5fmZABtwG2kJn+XwADAGAAAAUGBI0AEQAXAB4AXACwAEVYsBAvG7EQGj5ZsABFWLAILxuxCBA+WbIPEAgREjmwDy+wANCyCQgQERI5sAkvsAbQsAkQshQBCitYIdgb9FmwDxCyFQEKK1gh2Bv0WbAb0LAUELAc0DAxARYEFRQEBxUjNSYkNTQkNzUzARAFEQYGBTQmJxE2NgMQ5gEQ/u3juen+8gEQ57n+CAE/mqUDNqaYmKYEFg36y838DW5uDfvMzfsNdv21/tgRAnMJl5iZlQn9jgqWAAABAGAAAAS2BI0AFQBcsgAWFxESOQCwAEVYsAMvG7EDGj5ZsABFWLAPLxuxDxo+WbAARViwFC8bsRQaPlmwAEVYsAkvG7EJED5ZshMDCRESObATL7AA0LATELILAQorWCHYG/RZsAjQMDEBJBERMxEGAgcRIxEmAicRMxEQBREzAugBFbkD8tm62fAFugEUugG7MwFrATT+vfP+4hj+3wEfFAEd8gFL/sv+ji0C1AABAHUAAAR+BJ0AIQBcsgciIxESOQCwAEVYsBgvG7EYGj5ZsABFWLAPLxuxDxA+WbAARViwIC8bsSAQPlmwDxCyEQEKK1gh2Bv0WbAO0LAA0LAYELIHAQorWCHYG/RZsBEQsB7QsB/QMDElNjY1NTQmIyIGFRUUFhcVITUzJhE1NAAzMgAVFRAHMxUhAruIf66dnKyNf/4+r7MBG+foARyytf49nR/fzSazwMG3IczfIJ2XnQE6Hu4BI/7c9Rz+y5yXAAEAJv/sBSwEjQAZAGuyFhobERI5ALAARViwAi8bsQIaPlmwAEVYsA4vG7EOED5ZsABFWLAYLxuxGBA+WbACELIAAQorWCHYG/RZsATQsAXQsggCDhESObAIL7AOELIPAQorWCHYG/RZsAgQshUBCitYIdgb9FkwMQEhNSEVIRE2MzIWFRQGIzUyNjU0JiMiBxEjAYr+nAOJ/pSXnNTi5eCNf32AnZa5A/SZmf7XMdDEvr6XbXiDeTL9zgAAAQBg//AEMASdAB4AfbIDHyAREjkAsABFWLALLxuxCxo+WbAARViwAy8bsQMQPlmyDwsDERI5sAsQshIBCitYIdgb9FmyFgsDERI5fLAWLxiyoBYBXbRgFnAWAl2yMBYBcbRgFnAWAnGyFwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsh4DCxESOTAxAQYGIyIAETU0NjYzMhYXIyYmIyIGByEVIRYWMzI2NwQwFPzR4P7xe+eYzPcTuRKNfpmiBgG//kEEoZGHjRQBebvOAScBA16k+YjTu4J0w6+YssJvgwACACcAAAb7BI0AFwAgAHayBCEiERI5sAQQsBjQALAARViwEi8bsRIaPlmwAEVYsAMvG7EDED5ZsABFWLALLxuxCxA+WbASELIFAQorWCHYG/RZsAsQsg4BCitYIdgb9FmyFBIDERI5sBQvshgBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WTAxARQGByERIQMOAgcjNzc2NhMTIREhFhYlESEyNjU0JiMG++bD/iv+Xg8LTZd7OwQuYFEKFAMOASTB4P07ARVyhINzAW6lxwID9P5l7fZ1AaUBBL4BCQIc/koEwS3+WXVjX3AAAgCKAAAHCQSNABIAGwCJsgEcHRESObABELAT0ACwAEVYsAIvG7ECGj5ZsABFWLARLxuxERo+WbAARViwCy8bsQsQPlmwAEVYsA8vG7EPED5ZsgECCxESOXywAS8YsqABAV2yBAILERI5sAQvsAEQsg0BCitYIdgb9FmwBBCyEwEKK1gh2Bv0WbALELIUAQorWCHYG/RZMDEBIREzESEWFhUUBgchESERIxEzAREhMjY1NCYnAUMCSLkBJMHg5sP+K/24ubkDAQEVc4R9bgKKAgP+SgTBpKXHAgHy/g4Ejf2y/ll3YVtxAwAAAQAoAAAFLgSNABUAWrIHFhcREjkAsABFWLACLxuxAho+WbAARViwDC8bsQwQPlmwAEVYsBQvG7EUED5ZsAIQsgABCitYIdgb9FmwBNCwBdCyCAIMERI5sAgvshEBCitYIdgb9FkwMQEhNSEVIRE2MzIWFxEjETQmIyIHESMBi/6dA4n+lJOg1N4Eun1/nZa6A/SZmf7XMcrB/o8BZId5Mv3OAAABAIr+mwRDBI0ACwBPsgMMDRESOQCwAi+wAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsggBCitYIdgb9FmwCdAwMSEhESMRIREzESERMwRD/oG5/n+5Ake5/psBZQSN/AsD9QACAIoAAAQIBI0ADAAVAF6yAxYXERI5sAMQsA3QALAARViwCy8bsQsaPlmwAEVYsAkvG7EJED5ZsAsQsgABCitYIdgb9FmyAwsJERI5sAMvsAkQsg0BCitYIdgb9FmwAxCyEwEKK1gh2Bv0WTAxASERITIWFRQGByERIQEyNjU0JichEQOV/a4BEc7m5MX+KwML/sNzhH1u/t8D9/7gxKWkyAIEjfwLd2FbcQP+WQACAC7+rATnBI0ADwAVAFuyExYXERI5sBMQsAXQALAJL7AARViwBS8bsQUaPlmwAEVYsAsvG7ELED5ZsgABCitYIdgb9FmwB9CwCNCwCRCwDdCwCBCwENCwEdCwBRCyEgEKK1gh2Bv0WTAxNzc2NjcTIREzESMRIREjEyEhESEDAoUpR0cHDgMHj7n8uroBAS4CQv5kDBGYMVb92AGZ/Av+FAFU/q0B6wNc/sj+mQABAB8AAAXrBI0AFQCRsgEWFxESOQCwAEVYsAkvG7EJGj5ZsABFWLANLxuxDRo+WbAARViwES8bsREaPlmwAEVYsAIvG7ECED5ZsABFWLAGLxuxBhA+WbAARViwFC8bsRQQPlmyEAkCERI5fLAQLxiyoBABXbRgEHAQAl2yAAEKK1gh2Bv0WbAE0LITEAAREjmwExCwCNCwEBCwC9AwMQEjESMRIwEjAQEzATMRMxEzATMBASMDxWO6ZP7F6gGG/p7gASxZulkBLOD+nAGI6gH2/goB9v4KAlECPP4DAf3+AwH9/c39pgAAAQBH//AD1ASdACgAfbIkKSoREjkAsABFWLAKLxuxCho+WbAARViwFi8bsRYQPlmwChCyAwEKK1gh2Bv0WbIGChYREjmyJwoWERI5sCcvtB8nLycCXbK/JwFdtN8n7ycCXbIkAQorWCHYG/RZshAkJxESObIcFgoREjmwFhCyHwEKK1gh2Bv0WTAxATQmIyIGFSM0NjMyFhUUBgcWFhUUBiMiJicmNTMWFjMyNjU0JSM1MzYDCIp9boG67bzT7m5ndnH+1VupPXm5BYN5iJL+/52c7wNQVF1YT461qJZWjSkkkluetCwuWZ1WYGBYwQWYBQABAIoAAARhBI0ACQBMsgAKCxESOQCwAEVYsAAvG7EAGj5ZsABFWLAHLxuxBxo+WbAARViwAi8bsQIQPlmwAEVYsAUvG7EFED5ZsgQAAhESObIJAAIREjkwMQEzESMRASMRMxEDqLm5/Zu5uQSN+3MDdPyMBI38jAABAIsAAAQsBI0ADABosgoNDhESOQCwAEVYsAQvG7EEGj5ZsABFWLAILxuxCBo+WbAARViwAi8bsQIQPlmwAEVYsAsvG7ELED5ZsgYCBBESOXywBi8YsqAGAV20YAZwBgJdsgEBCitYIdgb9FmyCgEGERI5MDEBIxEjETMRMwEzAQEjAa5qublkAYXf/jUB6+8B9v4KBI3+AwH9/cX9rgAAAQAnAAAENgSNAA8ATbIEEBEREjkAsABFWLAALxuxABo+WbAARViwAS8bsQEQPlmwAEVYsAgvG7EIED5ZsAAQsgMBCitYIdgb9FmwCBCyCgEKK1gh2Bv0WTAxAREjESEDAgIHIzc3NjY3EwQ2uf5eDw2ksEQEKV5QDRkEjftzA/T+gv6q/uUFpQMHnuICXgAAAQAi/+wECwSNABEAQ7IBEhMREjkAsABFWLACLxuxAho+WbAARViwEC8bsRAaPlmwAEVYsAgvG7EIED5ZsgEIAhESObIMAQorWCHYG/RZMDEBFwEzAQcGBwciJzcXMjY3ATMB9S0BFNX+XiVQqiZQFAZcMUkg/mbWAjB4AtX8RUmRCwEIkwUxOwOfAAABAIr+rATxBI0ACwBFsgkMDRESOQCwAi+wAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAI0LAJ0DAxJTMDIxEhETMRIREzBEStEqX8ULkCR7qY/hQBVASN/AsD9QAAAQA9AAAD3wSNABEARrIEEhMREjkAsABFWLAILxuxCBo+WbAARViwEC8bsRAaPlmwAEVYsAAvG7EAED5Zsg0IABESObANL7IEAQorWCHYG/RZMDEhIxEGIyImJxEzERQWMzI3ETMD37mQo9TeBLl+f52WuQHCMMrBAXD+nYd5MgIxAAEAigAABcYEjQALAE+yBQwNERI5ALAARViwAi8bsQIaPlmwAEVYsAYvG7EGGj5ZsABFWLAKLxuxCho+WbAARViwAC8bsQAQPlmyBAEKK1gh2Bv0WbAI0LAJ0DAxISERMxEhETMRIREzBcb6xLkBiLoBiLkEjfwLA/X8CwP1AAEAiv6sBnUEjQAPAFiyCxARERI5ALACL7AARViwBi8bsQYaPlmwAEVYsAovG7EKGj5ZsABFWLAOLxuxDho+WbAARViwBC8bsQQQPlmyAAEKK1gh2Bv0WbAI0LAJ0LAM0LAN0DAxJTMDIxEhETMRIREzESERMwXHrhKm+s25AYi6AYi6mP4UAVQEjfwLA/X8CwP1AAACAAgAAATWBI0ADQAWAF6yCBcYERI5sAgQsBXQALAARViwBy8bsQcaPlmwAEVYsAMvG7EDED5ZsAcQsgUBCitYIdgb9FmyCgcDERI5sAovsAMQsg4BCitYIdgb9FmwChCyFAEKK1gh2Bv0WTAxARQGByERITUhESEyFhYBMjY1NCYjIREE1uTE/ir+sAIKARaEwmj+UXKEg3P+6wFupMgCA/SZ/kpYo/68dWNfcP5Z//8AigAABWcEjQAmAggAAAAHAcIEFgAAAAIAigAABAgEjQAKABMAULIIFBUREjmwCBCwC9AAsABFWLAFLxuxBRo+WbAARViwAy8bsQMQPlmyCAUDERI5sAgvsAMQsgsBCitYIdgb9FmwCBCyEQEKK1gh2Bv0WTAxARQGByERMxEhMhYBMjY1NCYnIREECOTF/iu5ARHO5v5Qc4R9bv7fAW6kyAIEjf5KxP6Fd2FbcQP+WQABAEv/8AQbBJ0AHgB6sgMfIBESOQCwAEVYsBMvG7ETGj5ZsABFWLAbLxuxGxA+WbIAGxMREjmyAwEKK1gh2Bv0WbIJExsREjl8sAkvGLKgCQFdtGAJcAkCXbIwCQFxtGAJcAkCcbIGAQorWCHYG/RZsBMQsgwBCitYIdgb9FmyDxMbERI5MDEBFhYzMjY3ITUhJiYjIgYHIzY2MzIAFxUUBgYjIiYnAQQUjYeNogf+QQG+BaOYfo0SuRP3zOQBEQV44pXP/hQBeYNvu7mYr8N0grvT/t/0daP5h867AAACAIr/8AYVBJ0AEwAhAIqyBCIjERI5sAQQsBjQALAARViwEC8bsRAaPlmwAEVYsAsvG7ELGj5ZsABFWLADLxuxAxA+WbAARViwCC8bsQgQPlmyDQgLERI5fLANLxi0YA1wDQJxsqANAV20YA1wDQJdsgYBCitYIdgb9FmwEBCyFwEKK1gh2Bv0WbADELIeAQorWCHYG/RZMDEBEAAjIgAnIxEjETMRMzYAMzIAFwc0JiMiBhUVFBYzMjY1BhX+7Ojd/usM2Lm52A4BFNrpARMCt6yblq+wl5ypAiT++/7RARzy/gIEjf4J8QEW/tD/BcbS1sVCw9fTxwAAAgBQAAAD/ASNAA0AFABhshMVFhESObATELAH0ACwAEVYsAcvG7EHGj5ZsABFWLAALxuxABA+WbAARViwCS8bsQkQPlmyEQcAERI5sBEvsgsBCitYIdgb9FmyAQsHERI5sAcQshIBCitYIdgb9FkwMTMBJiY1NDY3IREjESEDExQXIREhIlABInpx3MgB0bn+0P8u5gEb/u/wAg0mnWihsgL7cwHf/iEDMLQEAXwAAQALAAAD5wSNAA0AULIBDg8REjkAsABFWLAILxuxCBo+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASMRIxEjNTMRIRUhETMCh+K54eEC+/2+4gH9/gMB/ZcB+Zn+oAAAAQAf/qwGIgSNABkAqrIIGhsREjkAsABFWLAQLxuxEBo+WbAARViwFC8bsRQaPlmwAEVYsBgvG7EYGj5ZsABFWLANLxuxDRA+WbAARViwCi8bsQoQPlmwAEVYsAUvG7EFED5ZshcKGBESOXywFy8YsqAXAV20YBdwFwJdtGAXcBcCcbIHAQorWCHYG/RZsgAHFxESObAFELIBAQorWCHYG/RZsAcQsAvQsg8XBxESObAXELAS0DAxAQEzESMRIwEjESMRIwEjAQEzATMRMxEzATMEYwEmmad6/sRjumT+xeoBhv6e4AEsWbpZASzgAlr+PP4WAVQB9v4KAfb+CgJRAjz+AwH9/gMB/QABAIv+rAROBI0AEACAsgAREhESOQCwAy+wAEVYsAsvG7ELGj5ZsABFWLAPLxuxDxo+WbAARViwCS8bsQkQPlmwAEVYsAUvG7EFED5Zsg0JCxESOXywDS8YtGANcA0CcbKgDQFdtGANcA0CXbIIAQorWCHYG/RZsgAIDRESObAFELIBAQorWCHYG/RZMDEBATMRIxEjASMRIxEzETMBMwJBAW+eqGn+cWq5uWQBhd8CUv5E/hYBVAH2/goEjf4DAf0AAAEAiwAABOcEjQAUAHiyCxUWERI5ALAARViwBi8bsQYaPlmwAEVYsBMvG7ETGj5ZsABFWLAJLxuxCRA+WbAARViwES8bsREQPlmyABETERI5fLAALxiyoAABXbRgAHAAAl20YABwAAJxsATQsAAQshABCitYIdgb9FmyCBAAERI5sAzQMDEBMzUzFTMBMwEBIwEjFSM1IxEjETMBRFCUPAGE4P40Aevv/nFBlFC5uQKQ5OQB/f3F/a4B9s7O/goEjQAAAQAjAAAFFQSNAA4AfbIADxAREjkAsABFWLAGLxuxBho+WbAARViwCi8bsQoaPlmwAEVYsAIvG7ECED5ZsABFWLANLxuxDRA+WbIIAgYREjl8sAgvGLKgCAFdtGAIcAgCXbRgCHAIAnGyAQEKK1gh2Bv0WbAGELIEAQorWCHYG/RZsgwBCBESOTAxASMRIxEhNSERMwEzAQEjApdpuv6vAgtjAYXg/jQB6+8B9v4KA/WY/gMB/f3F/a4AAgBg/+sFWwSfACMALgCUshQvMBESObAUELAk0ACwAEVYsAsvG7ELGj5ZsABFWLAbLxuxGxo+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZsgIEGxESObACL7ALELIMAQorWCHYG/RZsAQQshMBCitYIdgb9FmwAhCyJgEKK1gh2Bv0WbIVEyYREjmyIQImERI5sBsQsiwBCitYIdgb9FkwMQUiJwYjIAARNRASMxciBhUVFBYzMjcmAzU0EjMyEhUVEAcWMwEQFzYRNTQmIyIDBVvZpomj/ur+xvTSAX6Q0Mc2MuMBz7W4zbZedv2S4bZiasYFFDs8AUUBKhoBAwEonsPIIejlCLIBRSfrAQT+//E4/tqyEgH9/sx5gQEeOKyj/sP//wANAAAEHASNACYB0gAAAQcB3gBE/t4ACACyAAoBXTAxAAEAJv6sBHEEjQAQAGuyCxESERI5ALAHL7AARViwAS8bsQEaPlmwAEVYsA8vG7EPGj5ZsABFWLAJLxuxCRA+WbAARViwDC8bsQwQPlmyAAEMERI5sgsMARESObIDCwAREjmwCRCyBAEKK1gh2Bv0WbIOAAsREjkwMQEBMwEBNTMRIxEjAQEjAQEzAigBH9z+dQExqKh0/tX+2NwBlv5z2wLaAbP9vv5KAf4WAVQBu/5FAksCQgAAAQAm/qwF8gSNAA8AXLIJEBEREjkAsAIvsABFWLAILxuxCBo+WbAARViwDi8bsQ4aPlmwAEVYsAQvG7EEED5ZsgABCitYIdgb9FmwCBCyBgEKK1gh2Bv0WbAK0LAL0LAAELAM0LAN0DAxJTMDIxEhESE1IRUhESERMwVErhKl/FD+mwOJ/pUCRrqY/hQBVAP0mZn8pAP1AAABAD0AAAPfBI0AFwBPsgQYGRESOQCwAEVYsAsvG7ELGj5ZsABFWLAWLxuxFho+WbAARViwAC8bsQAQPlmyEAsAERI5sBAvsgcBCitYIdgb9FmwBNCwEBCwE9AwMSEjEQYHFSM1JiYnETMRFBYXNTMVNjcRMwPfuWNplbzJA7lnaJVnZbkBwiELxsMKyboBbf6de3gL8O0LIgIxAAABAIoAAAQsBI0AEQBGsgQSExESOQCwAEVYsAAvG7EAGj5ZsABFWLAILxuxCBA+WbAARViwEC8bsRAQPlmyBAAIERI5sAQvsg0BCitYIdgb9FkwMRMzETYzMhYXESMRNCYjIgcRI4q5mpnU3gS5fn+Ym7kEjf4+McrB/o8BZId5M/3PAAACAAL/8AVrBJ0AHAAkAGmyFSUmERI5sBUQsB7QALAARViwDi8bsQ4aPlmwAEVYsAAvG7EAED5ZsiEOABESObAhL7K/IQFdshIBCitYIdgb9FmwA9CwIRCwCtCwABCyFgEKK1gh2Bv0WbAOELIdAQorWCHYG/RZMDEFIgA1JiY1MxQWFz4CMzIAERUhFBYzMjY3FwYGAyIGByE1NCYDkf/+zqa4mV9mBYfpjvgBEPyuwbdMh1A5PLiWj7UGApmuEAEi8wvGqF53DJPsgf7r/v2CscAfKJIoLwQRwqQboaoAAAIAXv/wBGkEnQAWAB4AXrIIHyAREjmwCBCwF9AAsABFWLAALxuxABo+WbAARViwCC8bsQgQPlmyDQAIERI5sA0vsAAQshEBCitYIdgb9FmwCBCyFwEKK1gh2Bv0WbANELIaAQorWCHYG/RZMDEBMgAXFRQGBiMiABE1ITU0JiMiByc2NhMyNjchFRQWAkf3ASkChOyT+P7wA1LBt5OQOUHAiZGzBv1nrQSd/uDviJn0iQEVAQGCAbHBSJIpL/vtxqEboKwAAAEAR//tA9QEjQAcAG2yGh0eERI5ALAARViwAi8bsQIaPlmwAEVYsAsvG7ELED5ZsAIQsgABCitYIdgb9FmyBAACERI5sgULAhESObAFL7IRCwIREjmwCxCyFAEKK1gh2Bv0WbAFELIaAQorWCHYG/RZshwFGhESOTAxASE1IRcBFhYVFAYjIiYnJjUzFhYzMjY1NCYjIzUCs/28AzgC/qmx0fzXWas8erkFiXOIkoqGgAP0mXb+mxDFi6e+LS5anllkaGpfaqUAAwBg//AEWgSdAA0AFAAbAHOyAxwdERI5sAMQsA7QsAMQsBXQALAARViwCi8bsQoaPlmwAEVYsAMvG7EDED5Zsg4BCitYIdgb9FmyGQoDERI5fLAZLxiyoBkBXbRgGXAZAl20YBlwGQJxshEBCitYIdgb9FmwChCyFQEKK1gh2Bv0WTAxARAAIyIAETUQADMyABcBMjY3IRYWEyIGByEmJgRa/uzo5f7nARfl6QETAv4Ek6gJ/XYKrY2RqwgCigmqAiT++/7RATIBBz4BAgE0/tD//hy8tLDAA3fDrLO8AAABADAAAAPvBJ0AJwCush0oKRESOQCwAEVYsB0vG7EdGj5ZsABFWLAMLxuxDBA+WbIGHQwREjmwBi+yDwYBcbIPBgFdsk8GAXGwAdCwAS9ACR8BLwE/AU8BBF2yAAEBXbICBAorWCHYG/RZsAYQsgcECitYIdgb9FmwDBCyCgEKK1gh2Bv0WbAO0LAP0LAHELAR0LAGELAT0LACELAW0LABELAY0LIhAR0REjmwHRCyJAEKK1gh2Bv0WTAxASEVIRcVIRUhBgchByE1MzY3IzUzNScjNTMnJjYzMhYVIzQmIyIGFwGHAZb+bgMBj/5sCiQClAH8hAo/FJ+lA6KeAgbLtbfKuWhgXWgEAqh5XRB5akeYmBKfeRBdeUDJ7My3cHePigAAAQBC//ADngSdACEAnrIUIiMREjkAsABFWLAVLxuxFRo+WbAARViwCC8bsQgQPlmyIRUIERI5sCEvsg8hAV20ECEgIQJdsgAECitYIdgb9FmwCBCyAwEKK1gh2Bv0WbAAELAL0LAhELAN0LAhELAS0LASL0AJHxIvEj8STxIEXbIAEgFdsg8ECitYIdgb9FmwFRCyGgEKK1gh2Bv0WbASELAc0LAPELAe0DAxASESITI3FwYjIiYnIzUzNSM1MzY2MzIXByYjIAMhFSEVIQMv/mggAQJiaBt2b9P1FJuXl5sW9c9ghxVZef8AIAGY/mQBnAGW/vEclR7azHlteczcH5Uc/vB5bQAABACKAAAHrQSdAAMAEAAeACgAqLIfKSoREjmwHxCwAdCwHxCwBNCwHxCwEdAAsABFWLAnLxuxJxo+WbAARViwJS8bsSUaPlmwAEVYsAcvG7EHGj5ZsABFWLAiLxuxIhA+WbAARViwIC8bsSAQPlmwBxCwDdCwDS+wAtCwAi+0AAIQAgJdsgEDCitYIdgb9FmwDRCyFAMKK1gh2Bv0WbAHELIbAworWCHYG/RZsiEnIBESObImICcREjkwMSUhNSEBNDYgFhUVFAYjIiY1FxQWMzI2NTU0JiMiBhUBIwERIxEzAREzB2790wIt/ZK8ATS9vpeZv6NeV1ReYVNSYf61uP2jubkCXbi9jgIDlbq4m1CYtrecBVlqaVxSWmhnXvy1A2z8lASN/JMDbQAAAgAoAAAEZgSNABYAHwCDsgAgIRESObAY0ACwAEVYsAwvG7EMGj5ZsABFWLACLxuxAhA+WbIWDAIREjmwFi+yAAEKK1gh2Bv0WbAE0LAWELAG0LAWELAL0LALL0AJDwsfCy8LPwsEXbS/C88LAl2yCAEKK1gh2Bv0WbAT0LALELAX0LAMELIeAQorWCHYG/RZMDElIRUjNSM1MzUjNTMRITIWFRQGByEVISUhMjY1NCYjIQKk/v66wMDAwAHPxerjvv7dAQL+/gEVcoOEcP7qtLS0mFmYAlDMqKXLBFnxeGJkegAAAgCM/+wENAYAABAAGwBkshQcHRESObAUELAN0ACwCS+wAEVYsA0vG7ENGD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyBg0EERI5sgsNBBESObANELIUAQorWCHYG/RZsAQQshkBCitYIdgb9FkwMQEUBgYjIicHIxEzETYzMhIRJzQmIyIHERYzMjYENG/JgNFwD6C5cMXJ8bmjjLdQVbSKowISn/yLlYEGAP3Di/7T/v8HtNaq/iyr2AAAAQBc/+wD7wROAB0ASbIAHh8REjkAsABFWLAQLxuxEBg+WbAARViwCC8bsQgQPlmyAAEKK1gh2Bv0WbAIELAD0LAQELAU0LAQELIXAQorWCHYG/RZMDElMjY3Mw4CIyIANTU0NjYzMhYXIyYmIyIGFRUUFgJAY5QIsAV4xG7f/vt225O28QiwCI9oj5udg3haXqhjASr8IJ35htquaYfOvyG8yQACAFv/7AQABgAAEQAcAGSyGh0eERI5sBoQsATQALAHL7AARViwBC8bsQQYPlmwAEVYsA0vG7ENED5ZsABFWLAJLxuxCRA+WbIGBA0REjmyCwQNERI5sA0QshUBCitYIdgb9FmwBBCyGgEKK1gh2Bv0WTAxEzQ2NjMyFxEzESMnBiMiJiYnNxQWMzI3ESYjIgZbcc6Avm+5oQ5vynzLdQG5qIqvUlOsjacCJp/8jYICNPoAeIyM+5gGsdifAfGZ1gACAFv+VgQABE4AGwAmAHyyHycoERI5sB8QsAvQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLALLxuxCxI+WbAARViwGC8bsRgQPlmyBQMYERI5sAsQshIBCitYIdgb9FmyFgMYERI5sBgQsh8BCitYIdgb9FmwAxCyJAEKK1gh2Bv0WTAxEzQSMzIXNzMRBgIjIiYnNxYWMzI2NTUGIyICNRcUFjMyNxEmIyIGW/jGzG8PnQL04FbISDc/n0+Vim/Bwvq5pouvU1OtjqUCJvYBMpSA/A7v/v03MooqMrCoKIEBOPQHsNmhAeud1wD//wBXAAAChgW3AAYAFa0AAAIAjP5gBDIETgAQABsAbrIZHB0REjmwGRCwDdAAsABFWLANLxuxDRg+WbAARViwCi8bsQoYPlmwAEVYsAcvG7EHEj5ZsABFWLAELxuxBBA+WbIGDQQREjmyCw0EERI5sA0QshQBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WTAxARQGBiMiJxEjETMXNjMyEhcHNCYjIgcRFjMyNgQybsiBxXG5nw90ysHuCripj6hUU6uMqgIRnvyLff33Bdp9kf7p6iew25X9+5TfAAACAFv+YAP/BE4ADwAaAGuyGBscERI5sBgQsAPQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLAILxuxCBI+WbAARViwDC8bsQwQPlmyBQMMERI5sgoDDBESObITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMRM0EjMyFzczESMRBiMiAjUXFBYzMjcRJiMiBlv3zMRvDqC5cLrH+rmqjKZWWKKOqgIl9QE0hnL6JgIEeAE19geu35MCEY/fAAIAXf/sA/METgAUABwAYrIIHR4REjmwCBCwFdAAsABFWLAILxuxCBg+WbAARViwAC8bsQAQPlmyGQgAERI5sBkvtL8ZzxkCXbIMAQorWCHYG/RZsAAQshABCitYIdgb9FmwCBCyFQEKK1gh2Bv0WTAxBSIAJyc0NjYzMhIVFSEWFjMyNxcGASIGByE1NCYCceX+3QsBfN2A1ej9JAjCmaB4OYP+7nOYEQIgiRQBF+NOm/WK/v7wdJ3IWn9yA8qglhmDmgACAGD+VgPyBE4AGgAlAHyyIyYnERI5sCMQsAvQALAARViwAy8bsQMYPlmwAEVYsAYvG7EGGD5ZsABFWLALLxuxCxI+WbAARViwFy8bsRcQPlmyBQMXERI5sAsQshEBCitYIdgb9FmyFQMXERI5sBcQsh4BCitYIdgb9FmwAxCyIwEKK1gh2Bv0WTAxEzQSMzIXNzMRFAYjIiYnNxYzMjY1NQYjIgI1FxQWMzI3ESYjIgZg6MPKcBCd9eFSr0E3eo+ViW/Avuu6lYivUlWqiZYCJfoBL5N//AXq/y0pikmnnjqAATL6CLXToAHum9AAAQB+/+sFHQXFAB4ATLIMHyAREjkAsABFWLAMLxuxDBw+WbAARViwAy8bsQMQPlmwDBCwENCwDBCyEwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsAMQsB7QMDEBBgAjIiQCJzU0EiQzMgAXIyYmIyICERUUEhYzMjY3BRwY/tvusf7hogGdARuy7QEvGcEYv53A6m7IfaGwGgHO3/78tAFHy0TTAUqz/vrjo6j+y/7+N6H/AJCdqQABAH7/6wUeBcQAIgBtsgwjJBESOQCwAEVYsAwvG7EMHD5ZsABFWLADLxuxAxA+WbIQAwwREjmwEC+wDBCyEwEKK1gh2Bv0WbADELIbAQorWCHYG/RZsiIMAxESObAiL7Q/Ik8iAl20DyIfIgJdsh8BCitYIdgb9FkwMSUGBCMiJAInNTQSJDMyBBcjJiYjIgIHBxQSFjMyNjcRITUhBR5D/uOwu/7WqAObARy18QEhIsAeupy17AoBeNOFcrUq/rACD75hcrQBR9It2wFOtuXalYz+3PJGrP72jDowAUabAAIAsgAABREFsAALABUARrIDFhcREjmwAxCwFdAAsABFWLABLxuxARw+WbAARViwAC8bsQAQPlmwARCyDAEKK1gh2Bv0WbAAELINAQorWCHYG/RZMDEzESEyBBIXFRQCBAcDETMyABE1NAAjsgGxwQE4sQSt/sLL6d/qARP+9+gFsKz+xMg+0P7BsQIFEvuLASoBAyT8ASgAAgB+/+sFXwXFABEAIgBGsgQjJBESObAEELAf0ACwAEVYsA0vG7ENHD5ZsABFWLAELxuxBBA+WbANELIWAQorWCHYG/RZsAQQsh8BCitYIdgb9FkwMQEUAgQjIiQCJzU0EiQzMgQSFwc0AiYjIgYGBxUUEhYzMhI1BV+i/uKvq/7hpgKkASGrrQEgowG/bsd9eMZyAXHJecHvAsLO/rC5uQFKyDfNAU+8uf60zAWiAQCPj/6cNaD+/pIBO/8AAAIAfv8EBV8FxQAVACYATbIIJygREjmwCBCwI9AAsABFWLARLxuxERw+WbAARViwCC8bsQgQPlmyAwgRERI5sBEQshoBCitYIdgb9FmwCBCyIwEKK1gh2Bv0WTAxARQCBxcHJQYjIiQCJzU0EiQzMgQSFSc0AiYjIgYGBxUUEhYzMhI1BV+plPqD/sw5PKv+4KQDogEirK4BIaK/bsd9eMdxAXHJecHvAsLU/qxaw3nzDLoBRsY6zAFQvrv+sM4BowEBj5D/nDOg/v6SATv/AAABAKAAAALJBI0ABgAyALAARViwBS8bsQUaPlmwAEVYsAAvG7EAED5ZsgQABRESObAEL7IDAQorWCHYG/RZMDEhIxEFNSUzAsm5/pACCh8DpouoygABAIMAAAQgBKAAGABUsgkZGhESOQCwAEVYsBEvG7ERGj5ZsABFWLAALxuxABA+WbIXAQorWCHYG/RZsALQshYXERESObIDERYREjmwERCyCQEKK1gh2Bv0WbARELAM0DAxISE1ATY3NzQmIyIGFSM0NjYzMhYVFAcBIQQg/IcB/X0KA31mepW5eNJ+u+HF/oYCeIMByXNUNVRsjnVwv2y4mLG0/qwAAQCKAAADhQXEAAcAMrIDCAkREjkAsABFWLAGLxuxBho+WbAARViwBC8bsQQQPlmwBhCyAgEKK1gh2Bv0WTAxATMRIREjESECzLn9vrkCQgXE/jD8DASNAAEAD/6jA94EjQAYAE4AsAsvsABFWLACLxuxAho+WbIBAQorWCHYG/RZsATQsgULAhESObAFL7ALELIQAQorWCHYG/RZsAUQshcBCitYIdgb9FmyGBcFERI5MDEBITUhFQEWFhUUACMiJzcWMzI2NTQmIyM1AuT9dANy/oCy4v7M/8rSNKWxtNe5wDwD9Jl2/mwY9rP5/tpni1jKpaulZwACAD7+tgSgBI0ACgAOAEsAsABFWLAJLxuxCRo+WbAARViwAi8bsQIQPlmwAEVYsAYvG7EGED5ZsgABCitYIdgb9FmwBhCwBdCwBS+wABCwDNCyDQkCERI5MDElMxUjESMRITUBMwEhEQcD28XFuv0dAtbH/TwCChyWl/63AUltBCH8CQL8NQD//wBQAo0CnQW4AwcB1AAAApgAEwCwAEVYsAovG7EKHD5ZsBDQMDEA//8ANgKYArsFrQMHAdgAAAKYABMAsABFWLAJLxuxCRw+WbAN0DAxAP//AFsCjQKnBa0DBwHZAAACmAAQALAARViwAS8bsQEcPlkwMf//AFYCjQKrBbYDBwHaAAACmAATALAARViwAC8bsQAcPlmwFNAwMQD//wA6ApgCpQWtAwcB2wAAApgAEACwAEVYsAUvG7EFHD5ZMDH//wBPAo0CnwW4AwcB3AAAApgAGQCwAEVYsBEvG7ERHD5ZsBfQsBEQsB/QMDEA//8ASQKRApUFuAMHAd0AAAKYABMAsABFWLAILxuxCBw+WbAZ0DAxAAABAGX+oAQFBIwAGwBOALANL7AARViwAS8bsQEaPlmyBAEKK1gh2Bv0WbIHDQEREjmwBy+yGAEKK1gh2Bv0WbIFBxgREjmwDRCyEgEKK1gh2Bv0WbAHELAb0DAxExMhFSEDNjc2EhUUACMiJzcWMzI2NTQmIyIGB4ZmAxT9fjZvlcjx/uDx4K86gtOZv6WHanUiAXQDGKv+dEACAv714e/+4nKLZc+kj7Y6UwAAAQBK/rYD8gSNAAYAJQCwAS+wAEVYsAUvG7EFGj5ZsgMBCitYIdgb9FmyAAMFERI5MDEBASMBITUhA/L9oLoCV/0bA6gEI/qTBT+YAAIAYP/wBm0EnQATAB0AmrIVHh8REjmwFRCwCtAAsABFWLAJLxuxCRo+WbAARViwCy8bsQsaPlmwAEVYsAIvG7ECED5ZsABFWLAALxuxABA+WbALELIMAQorWCHYG/RZsAAQsA/QsA8vsh8PAV2y3w8BXbIQAQorWCHYG/RZsAAQshMBCitYIdgb9FmwAhCyFAEKK1gh2Bv0WbAJELIXAQorWCHYG/RZMDEhIQUiABE1EAAzBSEVIREhFSERIQU3ESciBhUVFBYGbf1j/o7l/ucBF+UBWwKv/ZsCFP3sAmz78erslq+wEAEyAQc+AQIBNBCZ/rKY/okNBwNnCdbFQsPXAAIAgv6pBD8EoQAYACUASwCwFC+wAEVYsAwvG7EMGj5ZsBQQsgABCitYIdgb9FmyBRQMERI5sAUvsgMFDBESObIaAQorWCHYG/RZsAwQsiABCitYIdgb9FkwMQUyNjcGIyICNTQ2NjMyABMVFAIEIyInNxYTMjY3NTQmIyIGFRQWAd+x3BV3t9L/ddKE6wEFApL+86+fdiZ64GmfIqGSf5ijv/TZaQEU4pzsfv7c/vb63P66rjyOMgH8XFKUxcXDq5XJAAACAHj/6wSJBKEACwAZADkAsABFWLAILxuxCBo+WbAARViwAy8bsQMQPlmwCBCyDwEKK1gh2Bv0WbADELIWAQorWCHYG/RZMDEBEAAgAAM1EAAgABMnNCYjIgYHFRQWMzI2NwSJ/uj+Iv7mAQEZAd4BGQG6sp2bsgK2m5qxAgI8/ur+xQE8ARQUARQBPv7E/usNyuLgxTTJ5d3KAP///7T+SwFlBDoABgCbAAD///+0/ksBZQQ6AAYAmwAA//8AmwAAAVUEOgAGAIwAAP////r+WQFaBDoAJgCMAAAABgCjyAr//wCbAAABVQQ6AAYAjAAA//8Ahv6sAWEEOgAmAIwAAAAHAKwDTgAKAAEAiv/sA/kEnQAhAFwAsABFWLAVLxuxFRo+WbAARViwEC8bsRAQPlmwAEVYsB8vG7EfED5ZsgIBCitYIdgb9FmyGR8VERI5sBkvsQgKK1jYG9xZsBkQsArQsBUQsg0BCitYIdgb9FkwMSUWMzI2NTQmIyM1EyYjIgMRIxE2NjMyFhcBFhYVFAYjIicBw1JYYXKIh1TtTmPTBLgBxclrw2X+7qm217V3aLUze2NiVYkBJz7+9f0GAvXS1lVi/rYPo4aszDEA//8AJQIfAg0CtgIGABEAAAACACUAAATkBbAADwAdAGYAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvss8EAV2yLwQBXbKfBAFxsgEBCitYIdgb9FmwEdCwABCyEgEKK1gh2Bv0WbAFELIbAQorWCHYG/RZsAQQsBzQMDEzESM1MxEhMgQSFxUUAgQHEyERMzISNzU0AicjESHHoqIBm74BJJ8Bn/7ZxEf+5sne9wHp1uABGgKalwJ/qP7KyV3O/sqmAgKa/gMBEvld+AETAv4fAAACACUAAATkBbAADwAdAGYAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvss8EAV2yLwQBXbKfBAFxsgEBCitYIdgb9FmwEdCwABCyEgEKK1gh2Bv0WbAFELIbAQorWCHYG/RZsAQQsBzQMDEzESM1MxEhMgQSFxUUAgQHEyERMzISNzU0AicjESHHoqIBm74BJJ8Bn/7ZxEf+5sne9wHp1uABGgKalwJ/qP7KyV3O/sqmAgKa/gMBEvld+AETAv4fAAABAAAAAAP9BgAAGQBqALAXL7AARViwBC8bsQQYPlmwAEVYsBAvG7EQED5ZsABFWLAILxuxCBA+WbIvFwFdsg8XAV2yFRAXERI5sBUvshIBCitYIdgb9FmwAdCyAhAEERI5sAQQsgwBCitYIdgb9FmwFRCwGNAwMQEhETYzIBMRIxEmJiMiBgcRIxEjNTM1MxUhAnz+53vFAVcDuQFpb1qIJrmqqrkBGQTS/uWX/n39NQLMdXBgTvz9BNKXl5cAAQAxAAAElwWwAA8ATACwAEVYsAovG7EKHD5ZsABFWLACLxuxAhA+WbIPCgIREjmwDy+yAAEKK1gh2Bv0WbAE0LAPELAG0LAKELIIAQorWCHYG/RZsAzQMDEBIxEjESM1MxEhNSEVIREzA6rnv9bW/i0EZv4s5wM3/MkDN5cBRJ6e/rwAAf/0/+wCcAVAAB0AcwCwAEVYsAEvG7EBGD5ZsABFWLARLxuxERA+WbABELAA0LAAL7ABELIEAQorWCHYG/RZsAEQsAXQsAUvsgAFAV2yCAEKK1gh2Bv0WbARELIMAQorWCHYG/RZsAgQsBXQsAUQsBjQsAQQsBnQsAEQsBzQMDEBETMVIxUzFSMRFBYzMjcVBiMiJjURIzUzNSM1MxEBh8rK6ek2QSA4SUV8ftraxcUFQP76j7qX/rJBQQyWFJaKAU6Xuo8BBv//ABwAAAUdBzQCJgAlAAABBwBEATABNgAUALAARViwBC8bsQQcPlmxDAj0MDH//wAcAAAFHQc0AiYAJQAAAQcAdQG/ATYAFACwAEVYsAUvG7EFHD5ZsQ0I9DAx//8AHAAABR0HNgImACUAAAEHAJ0AyQE2ABQAsABFWLAELxuxBBw+WbEPBvQwMf//ABwAAAUdByICJgAlAAABBwCkAMUBOgAUALAARViwBS8bsQUcPlmxDgT0MDH//wAcAAAFHQb7AiYAJQAAAQcAagD5ATYAFwCwAEVYsAQvG7EEHD5ZsREE9LAb0DAxAP//ABwAAAUdB5ECJgAlAAABBwCiAVABQQAXALAARViwBC8bsQQcPlmxDgb0sBjQMDEA//8AHAAABR0HlAImACUAAAAHAd8BWgEi//8Ad/5EBNgFxAImACcAAAAHAHkB0v/3//8AqQAABEYHQAImACkAAAEHAEQA+wFCABQAsABFWLAGLxuxBhw+WbENCPQwMf//AKkAAARGB0ACJgApAAABBwB1AYoBQgAUALAARViwBi8bsQYcPlmxDgj0MDH//wCpAAAERgdCAiYAKQAAAQcAnQCUAUIAFACwAEVYsAYvG7EGHD5ZsRAG9DAx//8AqQAABEYHBwImACkAAAEHAGoAxAFCABcAsABFWLAGLxuxBhw+WbESBPSwG9AwMQD////gAAABgQdAAiYALQAAAQcARP+nAUIAFACwAEVYsAIvG7ECHD5ZsQUI9DAx//8AsAAAAlEHQAImAC0AAAEHAHUANQFCABQAsABFWLADLxuxAxw+WbEGCPQwMf///+kAAAJGB0ICJgAtAAABBwCd/0ABQgAUALAARViwAi8bsQIcPlmxCAb0MDH////WAAACXwcHAiYALQAAAQcAav9wAUIAFwCwAEVYsAIvG7ECHD5ZsQoE9LAU0DAxAP//AKkAAAUIByICJgAyAAABBwCkAPsBOgAUALAARViwBi8bsQYcPlmxDQT0MDH//wB2/+wFCQc2AiYAMwAAAQcARAFSATgAFACwAEVYsA0vG7ENHD5ZsSEI9DAx//8Adv/sBQkHNgImADMAAAEHAHUB4QE4ABQAsABFWLANLxuxDRw+WbEiCPQwMf//AHb/7AUJBzgCJgAzAAABBwCdAOsBOAAUALAARViwDS8bsQ0cPlmxIgb0MDH//wB2/+wFCQckAiYAMwAAAQcApADnATwAFACwAEVYsA0vG7ENHD5ZsSME9DAx//8Adv/sBQkG/QImADMAAAEHAGoBGwE4ABcAsABFWLANLxuxDRw+WbEnBPSwMNAwMQD//wCM/+wEqgc0AiYAOQAAAQcARAErATYAFACwAEVYsAovG7EKHD5ZsRQI9DAx//8AjP/sBKoHNAImADkAAAEHAHUBugE2ABQAsABFWLASLxuxEhw+WbEVCPQwMf//AIz/7ASqBzYCJgA5AAABBwCdAMQBNgAUALAARViwCi8bsQocPlmxFwb0MDH//wCM/+wEqgb7AiYAOQAAAQcAagD0ATYAFwCwAEVYsAovG7EKHD5ZsRkE9LAj0DAxAP//AA8AAAS7BzQCJgA9AAABBwB1AYgBNgAUALAARViwAS8bsQEcPlmxCwj0MDH//wBt/+wD6gX+AiYARQAAAQcARADVAAAAFACwAEVYsBcvG7EXGD5ZsSoJ9DAx//8Abf/sA+oF/gImAEUAAAEHAHUBZAAAABQAsABFWLAXLxuxFxg+WbErCfQwMf//AG3/7APqBgACJgBFAAABBgCdbgAAFACwAEVYsBcvG7EXGD5ZsSsB9DAx//8Abf/sA+oF7AImAEUAAAEGAKRqBAAUALAARViwFy8bsRcYPlmxLAH0MDH//wBt/+wD6gXFAiYARQAAAQcAagCeAAAAFwCwAEVYsBcvG7EXGD5ZsTAB9LA50DAxAP//AG3/7APqBlsCJgBFAAABBwCiAPUACwAXALAARViwFy8bsRcYPlmxLAT0sDbQMDEA//8Abf/sA+oGXwImAEUAAAAHAd8A///t//8AXP5EA+wETgImAEcAAAAHAHkBP//3//8AXf/sA/MF/gImAEkAAAEHAEQAxQAAABQAsABFWLAILxuxCBg+WbEfCfQwMf//AF3/7APzBf4CJgBJAAABBwB1AVQAAAAUALAARViwCC8bsQgYPlmxIAn0MDH//wBd/+wD8wYAAiYASQAAAQYAnV4AABQAsABFWLAILxuxCBg+WbEgAfQwMf//AF3/7APzBcUCJgBJAAABBwBqAI4AAAAXALAARViwCC8bsQgYPlmxJQH0sC7QMDEA////xgAAAWcF/QImAIwAAAEGAESN/wAUALAARViwAi8bsQIYPlmxBQn0MDH//wCWAAACNwX9AiYAjAAAAQYAdRv/ABQAsABFWLADLxuxAxg+WbEGCfQwMf///88AAAIsBf8CJgCMAAABBwCd/yb//wAUALAARViwAi8bsQIYPlmxCAH0MDH///+8AAACRQXEAiYAjAAAAQcAav9W//8AFwCwAEVYsAIvG7ECGD5ZsQsB9LAU0DAxAP//AIwAAAPfBewCJgBSAAABBgCkYQQAFACwAEVYsAMvG7EDGD5ZsRUB9DAx//8AW//sBDQF/gImAFMAAAEHAEQAzwAAABQAsABFWLAELxuxBBg+WbEdCfQwMf//AFv/7AQ0Bf4CJgBTAAABBwB1AV4AAAAUALAARViwBC8bsQQYPlmxHgn0MDH//wBb/+wENAYAAiYAUwAAAQYAnWgAABQAsABFWLAELxuxBBg+WbEeAfQwMf//AFv/7AQ0BewCJgBTAAABBgCkZAQAFACwAEVYsAQvG7EEGD5ZsR8B9DAx//8AW//sBDQFxQImAFMAAAEHAGoAmAAAABcAsABFWLAELxuxBBg+WbEjAfSwLNAwMQD//wCI/+wD3AX+AiYAWQAAAQcARADHAAAAFACwAEVYsAcvG7EHGD5ZsRIJ9DAx//8AiP/sA9wF/gImAFkAAAEHAHUBVgAAABQAsABFWLANLxuxDRg+WbETCfQwMf//AIj/7APcBgACJgBZAAABBgCdYAAAFACwAEVYsAcvG7EHGD5ZsRUB9DAx//8AiP/sA9wFxQImAFkAAAEHAGoAkAAAABcAsABFWLAHLxuxBxg+WbEYAfSwIdAwMQD//wAW/ksDsAX+AiYAXQAAAQcAdQEbAAAAFACwAEVYsAEvG7EBGD5ZsRIJ9DAx//8AFv5LA7AFxQImAF0AAAEGAGpVAAAXALAARViwDy8bsQ8YPlmxFwH0sCDQMDEA//8AHAAABR0G7gImACUAAAEHAHAAxwE+ABMAsABFWLAELxuxBBw+WbAM3DAxAP//AG3/7APqBbgCJgBFAAABBgBwbAgAEwCwAEVYsBcvG7EXGD5ZsCrcMDEA//8AHAAABR0HDgImACUAAAEHAKAA9AE3ABMAsABFWLAELxuxBBw+WbAN3DAxAP//AG3/7APqBdgCJgBFAAABBwCgAJkAAQATALAARViwFy8bsRcYPlmwK9wwMQAAAgAc/k8FHQWwABYAGQBnALAARViwFi8bsRYcPlmwAEVYsBQvG7EUED5ZsABFWLABLxuxARA+WbAARViwDC8bsQwSPlmyBwMKK1gh2Bv0WbABELAR0LARL7IXFBYREjmwFy+yEwEKK1gh2Bv0WbIZFhQREjkwMQEBIwcGFRQzMjcXBiMiJjU0NwMhAyMBAyEDAvACLSY6cU4wNA1GWllnqYf9nonGAiyjAe/4BbD6UC1bVkgaeSxoVpBsAXP+hAWw/GoCqQAAAgBt/k8D6gROAC0ANwCQALAARViwFy8bsRcYPlmwAEVYsAQvG7EEED5ZsABFWLAeLxuxHhA+WbAARViwKS8bsSkSPlmwHhCwANCwAC+yAgQXERI5sgsXBBESObALL7AXELIPAQorWCHYG/RZshILFxESObApELIkAworWCHYG/RZsAQQsi4BCitYIdgb9FmwCxCyMwEKK1gh2Bv0WTAxJSYnBiMiJjU0JDMzNTQmIyIGFSM0NjYzMhYXERQXFSMHBhUUMzI3FwYjIiY1NCcyNjc1IyAVFBYDJA8HgbOgzQEB6bR0cWOGunPFdrvUBCYhOnFOMDQNRlpZZ4hXnCOR/qx0ByZFhrWLqbtVYXNkR1GXWLuk/g6VWBAtW1ZIGnksaFaQ8FpI3sdXYgD//wB3/+wE2AdVAiYAJwAAAQcAdQHGAVcAFACwAEVYsAsvG7ELHD5ZsR8I9DAx//8AXP/sA+wF/gImAEcAAAEHAHUBMwAAABQAsABFWLAQLxuxEBg+WbEgCfQwMf//AHf/7ATYB1cCJgAnAAABBwCdANABVwAUALAARViwCy8bsQscPlmxHwb0MDH//wBc/+wD7AYAAiYARwAAAQYAnT0AABQAsABFWLAQLxuxEBg+WbEgAfQwMf//AHf/7ATYBxkCJgAnAAABBwChAa4BVwAUALAARViwCy8bsQscPlmxIwT0MDH//wBc/+wD7AXCAiYARwAAAQcAoQEbAAAAFACwAEVYsBAvG7EQGD5ZsSQB9DAx//8Ad//sBNgHVwImACcAAAEHAJ4A5gFYABQAsABFWLALLxuxCxw+WbEhBvQwMf//AFz/7APsBgACJgBHAAABBgCeUwEAFACwAEVYsBAvG7EQGD5ZsSIB9DAx//8AqQAABMYHQgImACgAAAEHAJ4AnwFDABQAsABFWLABLxuxARw+WbEbBvQwMf//AF//7AUrBgIAJgBIAAABBwGiA9QFEwBIALLwHwFysh8fAV2ynx8BXbIfHwFxtM8f3x8CcbLfHwFysl8fAXKyTx8BcbLPHwFdtE8fXx8CXbJgHwFdsuAfAXGy4B8BXTAx//8AqQAABEYG+gImACkAAAEHAHAAkgFKABMAsABFWLAGLxuxBhw+WbAN3DAxAP//AF3/7APzBbgCJgBJAAABBgBwXAgAEwCwAEVYsAgvG7EIGD5ZsB/cMDEA//8AqQAABEYHGgImACkAAAEHAKAAvwFDABMAsABFWLAGLxuxBhw+WbAP3DAxAP//AF3/7APzBdgCJgBJAAABBwCgAIkAAQATALAARViwCC8bsQgYPlmwIdwwMQD//wCpAAAERgcEAiYAKQAAAQcAoQFyAUIAFACwAEVYsAYvG7EGHD5ZsRME9DAx//8AXf/sA/MFwgImAEkAAAEHAKEBPAAAABQAsABFWLAILxuxCBg+WbElAfQwMQABAKn+TwRGBbAAGwB2ALAARViwFi8bsRYcPlmwAEVYsBUvG7EVED5ZsABFWLAPLxuxDxI+WbAARViwBC8bsQQQPlmyGhUWERI5sBovsgEBCitYIdgb9FmwFRCyAgEKK1gh2Bv0WbAPELIKAworWCHYG/RZsBYQshkBCitYIdgb9FkwMQEhESEVIwcGFRQzMjcXBiMiJjU0NyERIRUhESED4P2JAt1JOnFOMDQNRlpZZ5v9XQOT/S0CdwKh/fydLVtWSBp5LGhWimkFsJ7+LAAAAgBd/mgD8wROACUALQB6ALAARViwGi8bsRoYPlmwAEVYsA0vG7ENEj5ZsABFWLASLxuxEhA+WbAE0LANELIIAworWCHYG/RZsioSGhESObAqL7S/Ks8qAl2yHgEKK1gh2Bv0WbASELIiAQorWCHYG/RZsiUSGhESObAaELImAQorWCHYG/RZMDElBgczBwYVFDMyNxcGIyImNTQ3JgA1NTQ2NjMyEhEVIRYWMzI2NwEiBgchNSYmA+VHcwE6cU4wNA1GWllnYtr+9XvdgdPq/SMEs4piiDP+wnCYEgIeCIi9bjYtW1ZIGnksaFZsWgQBIe8hof2P/ur+/U2gxVBCAqGjkw6NmwD//wCpAAAERgdCAiYAKQAAAQcAngCqAUMAFACwAEVYsAYvG7EGHD5ZsREG9DAx//8AXf/sA/MGAAImAEkAAAEGAJ50AQAUALAARViwCC8bsQgYPlmxIgH0MDH//wB6/+wE3AdXAiYAKwAAAQcAnQDIAVcAFACwAEVYsAsvG7ELHD5ZsSIG9DAx//8AYP5WA/IGAAImAEsAAAEGAJ1VAAAUALAARViwAy8bsQMYPlmxJwH0MDH//wB6/+wE3AcvAiYAKwAAAQcAoADzAVgAEwCwAEVYsAsvG7ELHD5ZsCLcMDEA//8AYP5WA/IF2AImAEsAAAEHAKAAgAABABMAsABFWLADLxuxAxg+WbAn3DAxAP//AHr/7ATcBxkCJgArAAABBwChAaYBVwAUALAARViwCy8bsQscPlmxJwT0MDH//wBg/lYD8gXCAiYASwAAAQcAoQEzAAAAFACwAEVYsAMvG7EDGD5ZsSwB9DAx//8Aev3/BNwFxAImACsAAAAHAaIBo/6g//8AYP5WA/IGkwImAEsAAAEHAbkBKwBYABMAsABFWLADLxuxAxg+WbAq3DAxAP//AKkAAAUIB0ICJgAsAAABBwCdAPEBQgAUALAARViwBy8bsQccPlmxEAb0MDH//wCMAAAD3wdBAiYATAAAAQcAnQAdAUEACQCwES+wFNwwMQD///+3AAACegcuAiYALQAAAQcApP88AUYAFACwAEVYsAMvG7EDHD5ZsQcE9DAx////nQAAAmAF6gImAIwAAAEHAKT/IgACABQAsABFWLADLxuxAxg+WbEHAfQwMf///7YAAAKABvoCJgAtAAABBwBw/z4BSgATALAARViwAi8bsQIcPlmwBdwwMQD///+cAAACZgW2AiYAjAAAAQcAcP8kAAYAEwCwAEVYsAIvG7ECGD5ZsAXcMDEA////7AAAAkMHGgImAC0AAAEHAKD/awFDABMAsABFWLACLxuxAhw+WbAH3DAxAP///9IAAAIpBdcCJgCMAAABBwCg/1EAAAATALAARViwAi8bsQIYPlmwB9wwMQD//wAY/lgBeAWwAiYALQAAAAYAo+YJ////+/5PAWgFxAImAE0AAAAGAKPJAP//AKoAAAGFBwQCJgAtAAABBwChAB0BQgAUALAARViwAi8bsQIcPlmxCwT0MDH//wC3/+wF+QWwACYALQAAAAcALgItAAD//wCN/ksDSgXEACYATQAAAAcATgHxAAD//wA1/+wEggc1AiYALgAAAQcAnQF8ATUAFACwAEVYsAAvG7EAHD5ZsRQG9DAx////tP5LAjkF2AImAJsAAAEHAJ3/M//YABQAsABFWLANLxuxDRg+WbESBPQwMf//AKn9/wUFBbACJgAvAAAABwGiAZT+oP//AI39/wQMBgACJgBPAAAABwGiARH+oP//AKEAAAQcBy8CJgAwAAABBwB1ACYBMQAUALAARViwBS8bsQUcPlmxCAj0MDH//wCTAAACNAeUAiYAUAAAAQcAdQAYAZYAFACwAEVYsAMvG7EDHj5ZsQYJ9DAx//8Aqf3/BBwFsAImADAAAAAHAaIBbP6g//8AV/3/AVUGAAImAFAAAAAHAaL/+/6g//8AqQAABBwFsQImADAAAAEHAaIB1QTCABAAsABFWLAKLxuxChw+WTAx//8AnAAAAq0GAgAmAFAAAAEHAaIBVgUTAFAAsh8IAV2ynwgBXbQfCC8IAnGyrwgBcbQvCD8IAnKy3wgBcrZfCG8IfwgDcrTPCN8IAnGyTwgBcbLPCAFdtE8IXwgCXbJgCAFdsvAIAXIwMf//AKkAAAQcBbACJgAwAAAABwChAbz9xf//AJwAAAKgBgAAJgBQAAAABwChATj9tv//AKkAAAUIBzQCJgAyAAABBwB1AfUBNgAUALAARViwCC8bsQgcPlmxDAj0MDH//wCMAAAD3wX+AiYAUgAAAQcAdQFbAAAAFACwAEVYsAMvG7EDGD5ZsRQJ9DAx//8Aqf3/BQgFsAImADIAAAAHAaIB0P6g//8AjP3/A98ETgImAFIAAAAHAaIBM/6g//8AqQAABQgHNgImADIAAAEHAJ4BFQE3ABQAsABFWLAGLxuxBhw+WbEPBvQwMf//AIwAAAPfBgACJgBSAAABBgCeewEAFACwAEVYsAMvG7EDGD5ZsRYB9DAx////vAAAA98GBAImAFIAAAEHAaL/YAUVAAYAsBcvMDH//wB2/+wFCQbwAiYAMwAAAQcAcADpAUAAEwCwAEVYsA0vG7ENHD5ZsCHcMDEA//8AW//sBDQFuAImAFMAAAEGAHBmCAATALAARViwBC8bsQQYPlmwHdwwMQD//wB2/+wFCQcQAiYAMwAAAQcAoAEWATkAEwCwAEVYsA0vG7ENHD5ZsCLcMDEA//8AW//sBDQF2AImAFMAAAEHAKAAkwABABMAsABFWLAELxuxBBg+WbAf3DAxAP//AHb/7AUJBzcCJgAzAAABBwClAWsBOAAXALAARViwDS8bsQ0cPlmxJgj0sCLQMDEA//8AW//sBDQF/wImAFMAAAEHAKUA6AAAABcAsABFWLAELxuxBBg+WbEiCfSwHtAwMQD//wCoAAAEyQc0AiYANgAAAQcAdQGAATYAFACwAEVYsAQvG7EEHD5ZsRoI9DAx//8AjAAAAtIF/gImAFYAAAEHAHUAtgAAABQAsABFWLALLxuxCxg+WbEQCfQwMf//AKj9/wTJBbACJgA2AAAABwGiAWP+oP//AFP9/wKXBE4CJgBWAAAABwGi//f+oP//AKgAAATJBzYCJgA2AAABBwCeAKABNwAUALAARViwBC8bsQQcPlmxHQb0MDH//wBjAAACzQYAAiYAVgAAAQYAntcBABQAsABFWLALLxuxCxg+WbESAfQwMf//AFD/7ARyBzYCJgA3AAABBwB1AY0BOAAUALAARViwBi8bsQYcPlmxKQj0MDH//wBf/+wDuwX+AiYAVwAAAQcAdQFRAAAAFACwAEVYsAkvG7EJGD5ZsSkJ9DAx//8AUP/sBHIHOAImADcAAAEHAJ0AlwE4ABQAsABFWLAGLxuxBhw+WbEpBvQwMf//AF//7AO7BgACJgBXAAABBgCdWwAAFACwAEVYsAkvG7EJGD5ZsSkB9DAx//8AUP5NBHIFxAImADcAAAAHAHkBnwAA//8AX/5FA7sETgImAFcAAAAHAHkBXf/4//8AUP3/BHIFxAImADcAAAAHAaIBdf6g//8AX/3/A7sETgImAFcAAAAHAaIBM/6g//8AUP/sBHIHOAImADcAAAEHAJ4ArQE5ABQAsABFWLAGLxuxBhw+WbErBvQwMf//AF//7AO7BgACJgBXAAABBgCecQEAFACwAEVYsAkvG7EJGD5ZsSsB9DAx//8AMf3/BJcFsAImADgAAAAHAaIBZv6g//8ACf3/AlYFQAImAFgAAAAHAaIAxf6g//8AMf5NBJcFsAImADgAAAAHAHkBkAAA//8ACf5NApkFQAImAFgAAAAHAHkA7wAA//8AMQAABJcHNgImADgAAAEHAJ4AogE3ABQAsABFWLAGLxuxBhw+WbENBvQwMf//AAn/7ALsBnkAJgBYAAAABwGiAZUFiv//AIz/7ASqByICJgA5AAABBwCkAMABOgAUALAARViwEi8bsRIcPlmxFgT0MDH//wCI/+wD3AXsAiYAWQAAAQYApFwEABQAsABFWLANLxuxDRg+WbEUAfQwMf//AIz/7ASqBu4CJgA5AAABBwBwAMIBPgATALAARViwEi8bsRIcPlmwE9wwMQD//wCI/+wD3AW4AiYAWQAAAQYAcF4IABMAsABFWLAHLxuxBxg+WbAS3DAxAP//AIz/7ASqBw4CJgA5AAABBwCgAO8BNwATALAARViwCi8bsQocPlmwFtwwMQD//wCI/+wD3AXYAiYAWQAAAQcAoACLAAEAEwCwAEVYsAcvG7EHGD5ZsBTcMDEA//8AjP/sBKoHkQImADkAAAEHAKIBSwFBABcAsABFWLAKLxuxChw+WbEWBvSwINAwMQD//wCI/+wD3AZbAiYAWQAAAQcAogDnAAsAFwCwAEVYsAcvG7EHGD5ZsRQE9LAe0DAxAP//AIz/7ASqBzUCJgA5AAABBwClAUQBNgAXALAARViwEi8bsRIcPlmxFQj0sBnQMDEA//8AiP/sBAwF/wImAFkAAAEHAKUA4AAAABcAsABFWLANLxuxDRg+WbETCfSwF9AwMQAAAQCM/nsEqgWwACAAUwCwAEVYsBgvG7EYHD5ZsABFWLANLxuxDRI+WbAARViwEy8bsRMQPlmwGBCwINCyBBMgERI5sA0QsggDCitYIdgb9FmwExCyHAEKK1gh2Bv0WTAxAREGBgcGFRQzMjcXBiMiJjU0NwciACcRMxEUFjMyNjURBKoBioObTjA0DUZaWWdPFu/+5AK+rqGjrQWw/CGU4jtyYEgaeSxoVmFTAQEC4gPg/Caer66eA9sAAQCI/k8D5gQ6AB8AbQCwAEVYsBcvG7EXGD5ZsABFWLAdLxuxHRg+WbAARViwHy8bsR8QPlmwAEVYsBIvG7ESED5ZsABFWLAKLxuxChI+WbIFAworWCHYG/RZsB8QsA/QsA8vshASHRESObASELIaAQorWCHYG/RZMDEhBwYVFDMyNxcGIyImNTQ3JwYjIiYnETMRFDMyNxEzEQPSOnFOMDQNRlpZZ6YEbNGttQG5yNRGuS1bVkgaeSxoVo9qZX/JxQLA/UX2ngMT+8b//wA9AAAG7Qc2AiYAOwAAAQcAnQHFATYAFACwAEVYsAMvG7EDHD5ZsRcG9DAx//8AKwAABdMGAAImAFsAAAEHAJ0BJAAAABQAsABFWLAMLxuxDBg+WbEPAfQwMf//AA8AAAS7BzYCJgA9AAABBwCdAJIBNgAUALAARViwAS8bsQEcPlmxCwb0MDH//wAW/ksDsAYAAiYAXQAAAQYAnSUAABQAsABFWLAPLxuxDxg+WbEUAfQwMf//AA8AAAS7BvsCJgA9AAABBwBqAMIBNgAXALAARViwCC8bsQgcPlmxEAT0sBnQMDEA//8AVgAABHoHNAImAD4AAAEHAHUBhwE2ABQAsABFWLAHLxuxBxw+WbEMCPQwMf//AFgAAAOzBf4CJgBeAAABBwB1ASEAAAAUALAARViwBy8bsQcYPlmxDAn0MDH//wBWAAAEegb4AiYAPgAAAQcAoQFvATYAFACwAEVYsAcvG7EHHD5ZsREE9DAx//8AWAAAA7MFwgImAF4AAAEHAKEBCQAAABQAsABFWLAHLxuxBxg+WbERAfQwMf//AFYAAAR6BzYCJgA+AAABBwCeAKcBNwAUALAARViwBy8bsQccPlmxDwb0MDH//wBYAAADswYAAiYAXgAAAQYAnkEBABQAsABFWLAHLxuxBxg+WbEPAfQwMf////IAAAdXB0ACJgCBAAABBwB1AskBQgAUALAARViwBi8bsQYcPlmxFQj0MDH//wBO/+wGfAX/AiYAhgAAAQcAdQJ6AAEAFACwAEVYsB0vG7EdGD5ZsUAJ9DAx//8Adv+jBR0HfgImAIMAAAEHAHUB6QGAABQAsABFWLAQLxuxEBw+WbEsCPQwMf//AFv/egQ0Bf4CJgCJAAABBwB1ATcAAAAUALAARViwBC8bsQQYPlmxKQn0MDH///++AAAEHwSNAiYBvQAAAQcB3v8v/3gALACyHxgBcbTfGO8YAnG0HxgvGAJdsh8YAXKyTxgBcbTvGP8YAl2yXxgBXTAx////vgAABB8EjQImAb0AAAEHAd7/L/94ADYAtO8X/xcCXbJPFwFxsh8XAXKy3xcBcrJvFwFytN8X7xcCcbIfFwFxsl8XAV20HxcvFwJdMDH//wAoAAAD/QSNAiYBzQAAAQYB3kXgAA0AsgMKAV2ysAoBXTAxAP//ABMAAARwBhwCJgG6AAABBwBEANUAHgAUALAARViwBC8bsQQaPlmxDAb0MDH//wATAAAEcAYcAiYBugAAAQcAdQFkAB4AFACwAEVYsAUvG7EFGj5ZsQ0G9DAx//8AEwAABHAGHgImAboAAAEGAJ1uHgAUALAARViwBC8bsQQaPlmxDwT0MDH//wATAAAEcAYKAiYBugAAAQYApGoiABQAsABFWLAFLxuxBRo+WbEOAvQwMf//ABMAAARwBeMCJgG6AAABBwBqAJ4AHgAXALAARViwBC8bsQQaPlmxEgL0sBvQMDEA//8AEwAABHAGeQImAboAAAEHAKIA9QApABcAsABFWLAELxuxBBo+WbEOBvSwGNAwMQD//wATAAAEcAZ8AiYBugAAAAcB3wD/AAr//wBg/koEMASdAiYBvAAAAAcAeQF0//3//wCKAAADrgYcAiYBvgAAAQcARACoAB4AFACwAEVYsAYvG7EGGj5ZsQ0G9DAx//8AigAAA64GHAImAb4AAAEHAHUBNwAeABQAsABFWLAHLxuxBxo+WbEOBvQwMf//AIoAAAOuBh4CJgG+AAABBgCdQR4AFACwAEVYsAYvG7EGGj5ZsRAE9DAx//8AigAAA64F4wImAb4AAAEGAGpxHgAXALAARViwBi8bsQYaPlmxEwL0sBzQMDEA////vgAAAV8GHAImAcIAAAEGAESFHgAUALAARViwAi8bsQIaPlmxBQb0MDH//wCOAAACLwYcAiYBwgAAAQYAdRMeABQAsABFWLADLxuxAxo+WbEGBvQwMf///8cAAAIkBh4CJgHCAAABBwCd/x4AHgAUALAARViwAi8bsQIaPlmxCAT0MDH///+0AAACPQXjAiYBwgAAAQcAav9OAB4AFwCwAEVYsAIvG7ECGj5ZsQsC9LAU0DAxAP//AIoAAARYBgoCJgHHAAABBwCkAJUAIgAUALAARViwBi8bsQYaPlmxDQL0MDH//wBg//AEWgYcAiYByAAAAQcARADuAB4AFACwAEVYsAovG7EKGj5ZsR0G9DAx//8AYP/wBFoGHAImAcgAAAEHAHUBfQAeABQAsABFWLAKLxuxCho+WbEeBvQwMf//AGD/8ARaBh4CJgHIAAABBwCdAIcAHgAUALAARViwCi8bsQoaPlmxIAT0MDH//wBg//AEWgYKAiYByAAAAQcApACDACIAFACwAEVYsAovG7EKGj5ZsR8C9DAx//8AYP/wBFoF4wImAcgAAAEHAGoAtwAeABcAsABFWLAKLxuxCho+WbEjAvSwLNAwMQD//wB0//AECgYcAiYBzgAAAQcARADPAB4AFACwAEVYsAkvG7EJGj5ZsRMG9DAx//8AdP/wBAoGHAImAc4AAAEHAHUBXgAeABQAsABFWLARLxuxERo+WbEUBvQwMf//AHT/8AQKBh4CJgHOAAABBgCdaB4AFACwAEVYsAkvG7EJGj5ZsRYE9DAx//8AdP/wBAoF4wImAc4AAAEHAGoAmAAeABcAsABFWLAJLxuxCRo+WbEZAvSwItAwMQD//wANAAAEHAYcAiYB0gAAAQcAdQEzAB4AFACwAEVYsAEvG7EBGj5ZsQsG9DAx//8AEwAABHAF1gImAboAAAEGAHBsJgATALAARViwBC8bsQQaPlmwDNwwMQD//wATAAAEcAX2AiYBugAAAQcAoACZAB8AFACwAEVYsAQvG7EEGj5ZsQ4I9DAxAAIAE/5PBHAEjQAWABkAZwCwAEVYsAAvG7EAGj5ZsABFWLAULxuxFBA+WbAARViwAS8bsQEQPlmwAEVYsAwvG7EMEj5ZsgcDCitYIdgb9FmwARCwEdCwES+yFxQAERI5sBcvshMBCitYIdgb9FmyGQAUERI5MDEBASMHBhUUMzI3FwYjIiY1NDcDIQMjAQMhAwKYAdgmOnFOMDQNRlpZZ7Bo/fhuvQHfeAGRxwSN+3MtW1ZIGnksaFaUbAEK/ukEjf0hAf0A//8AYP/wBDAGHAImAbwAAAEHAHUBaQAeABQAsABFWLALLxuxCxo+WbEfBvQwMf//AGD/8AQwBh4CJgG8AAABBgCdcx4AFACwAEVYsAsvG7ELGj5ZsSEE9DAx//8AYP/wBDAF4AImAbwAAAEHAKEBUQAeABQAsABFWLALLxuxCxo+WbEjAvQwMf//AGD/8AQwBh4CJgG8AAABBwCeAIkAHwAUALAARViwCy8bsQsaPlmxIQb0MDH//wCKAAAEHwYeAiYBvQAAAQYAnjIfABQAsABFWLABLxuxARo+WbEaBvQwMf//AIoAAAOuBdYCJgG+AAABBgBwPyYAEwCwAEVYsAYvG7EGGj5ZsA3cMDEA//8AigAAA64F9gImAb4AAAEGAKBsHwAUALAARViwBi8bsQYaPlmxDwj0MDH//wCKAAADrgXgAiYBvgAAAQcAoQEfAB4AFACwAEVYsAYvG7EGGj5ZsRMC9DAxAAEAiv5PA64EjQAbAHgAsABFWLAWLxuxFho+WbAARViwFC8bsRQQPlmwAEVYsA8vG7EPEj5ZsBQQsBvQsBsvsh8bAV2y3xsBXbIAAQorWCHYG/RZsBQQsgIBCitYIdgb9FmwFBCwBdCwDxCyCgMKK1gh2Bv0WbAWELIZAQorWCHYG/RZMDEBIREhFSMHBhUUMzI3FwYjIiY1NDchESEVIREhA1f97AJrPTpxTjA0DUZaWWeb/coDHv2bAhQCDv6Jly1bVkgaeSxoVoppBI2Z/rIA//8AigAAA64GHgImAb4AAAEGAJ5XHwAUALAARViwBi8bsQYaPlmxEQb0MDH//wBj//AENQYeAiYBwAAAAQYAnXEeABQAsABFWLAKLxuxCho+WbEgBPQwMf//AGP/8AQ1BfYCJgHAAAABBwCgAJwAHwAUALAARViwCi8bsQoaPlmxIAj0MDH//wBj//AENQXgAiYBwAAAAQcAoQFPAB4AFACwAEVYsAovG7EKGj5ZsSUC9DAx//8AY/38BDUEnQImAcAAAAAHAaIBT/6d//8AigAABFgGHgImAcEAAAEHAJ0AkAAeABQAsABFWLAHLxuxBxo+WbEQBPQwMf///5UAAAJYBgoCJgHCAAABBwCk/xoAIgAUALAARViwAy8bsQMaPlmxBwL0MDH///+UAAACXgXWAiYBwgAAAQcAcP8cACYAEwCwAEVYsAIvG7ECGj5ZsAXcMDEA////ygAAAiEF9gImAcIAAAEHAKD/SQAfABQAsABFWLACLxuxAho+WbEHCPQwMf//AAb+TwFmBI0CJgHCAAAABgCj1AD//wCJAAABZAXgAiYBwgAAAQYAofweABQAsABFWLACLxuxAho+WbELAvQwMf//ACv/8AQNBh4CJgHDAAABBwCdAQcAHgAUALAARViwAC8bsQAaPlmxFAT0MDH//wCK/fwEVwSNAiYBxAAAAAcBogEU/p3//wCCAAADiwYcAiYBxQAAAQYAdQceABQAsABFWLAFLxuxBRo+WbEIBvQwMf//AIr9/AOLBI0CJgHFAAAABwGiARD+nf//AIoAAAOLBI4CJgHFAAABBwGiAX4DnwAQALAARViwCi8bsQoaPlkwMf//AIoAAAOLBI0CJgHFAAAABwChAWb9N///AIoAAARYBhwCJgHHAAABBwB1AY8AHgAUALAARViwCC8bsQgaPlmxDAb0MDH//wCK/fwEWASNAiYBxwAAAAcBogFs/p3//wCKAAAEWAYeAiYBxwAAAQcAngCvAB8AFACwAEVYsAYvG7EGGj5ZsQ8G9DAx//8AYP/wBFoF1gImAcgAAAEHAHAAhQAmABMAsABFWLAKLxuxCho+WbAd3DAxAP//AGD/8ARaBfYCJgHIAAABBwCgALIAHwAUALAARViwCi8bsQoaPlmxHwj0MDH//wBg//AEWgYdAiYByAAAAQcApQEHAB4AFwCwAEVYsAovG7EKGj5ZsR4G9LAi0DAxAP//AIoAAAQlBhwCJgHLAAABBwB1AScAHgAUALAARViwBS8bsQUaPlmxGQb0MDH//wCK/fwEJQSNAiYBywAAAAcBogEN/p3//wCKAAAEJQYeAiYBywAAAQYAnkcfABQAsABFWLAELxuxBBo+WbEcBvQwMf//AEP/8APdBhwCJgHMAAABBwB1AT4AHgAUALAARViwCS8bsQkaPlmxKAb0MDH//wBD//AD3QYeAiYBzAAAAQYAnUgeABQAsABFWLAJLxuxCRo+WbEqBPQwMf//AEP+TQPdBJ0CJgHMAAAABwB5AVMAAP//AEP/8APdBh4CJgHMAAABBgCeXh8AFACwAEVYsAkvG7EJGj5ZsSoG9DAx//8AKP38A/0EjQImAc0AAAAHAaIBFP6d//8AKAAAA/0GHgImAc0AAAEGAJ5RHwAUALAARViwBi8bsQYaPlmxDQb0MDH//wAo/k8D/QSNAiYBzQAAAAcAeQE+AAL//wB0//AECgYKAiYBzgAAAQYApGQiABQAsABFWLARLxuxERo+WbEVAvQwMf//AHT/8AQKBdYCJgHOAAABBgBwZiYAEwCwAEVYsAkvG7EJGj5ZsBPcMDEA//8AdP/wBAoF9gImAc4AAAEHAKAAkwAfABQAsABFWLAJLxuxCRo+WbEVCPQwMf//AHT/8AQKBnkCJgHOAAABBwCiAO8AKQAXALAARViwCS8bsQkaPlmxFQb0sB/QMDEA//8AdP/wBBQGHQImAc4AAAEHAKUA6AAeABcAsABFWLARLxuxERo+WbEUBvSwGNAwMQAAAQB0/nQECgSNACAAUwCwAEVYsBgvG7EYGj5ZsABFWLAOLxuxDhI+WbAARViwEy8bsRMQPlmwGBCwINCyBRMgERI5sA4QsgkDCitYIdgb9FmwExCyHAEKK1gh2Bv0WTAxAREUBgcHBhUUMzI3FwYjIiY1NDciJicRMxEUFjMyNjURBAp4bzJsTjA0DUZaWWdazfkEt4+Fg48EjfzzerowKFtSSBp5LGhWaFbOuAMX/PR5gX97AwwA//8AMQAABfEGHgImAdAAAAEHAJ0BOwAeABQAsABFWLADLxuxAxo+WbEXBPQwMf//AA0AAAQcBh4CJgHSAAABBgCdPR4AFACwAEVYsAgvG7EIGj5ZsQ0E9DAx//8ADQAABBwF4wImAdIAAAEGAGptHgAXALAARViwCC8bsQgaPlmxEAL0sBnQMDEA//8ARwAAA+AGHAImAdMAAAEHAHUBMwAeABQAsABFWLAILxuxCBo+WbEMBvQwMf//AEcAAAPgBeACJgHTAAABBwChARsAHgAUALAARViwBy8bsQcaPlmxEQL0MDH//wBHAAAD4AYeAiYB0wAAAQYAnlMfABQAsABFWLAHLxuxBxo+WbEPBvQwMf//ABwAAAUdBj8CJgAlAAAABgCtBAD////wAAAEqgY/ACYAKWQAAAcArf85AAD////+AAAFbAZBACYALGQAAAcArf9HAAL//wAEAAAB2wZAACYALWQAAAcArf9NAAH////6/+wFHQY/ACYAMxQAAAcArf9DAAD///94AAAFHwY/ACYAPWQAAAcArf7BAAD////9AAAE3wY/ACYAuRQAAAcArf9GAAD///+b//QCrQZ0AiYAwgAAAQcArv8q/+wAHQCwAEVYsAwvG7EMGD5ZsRgB9LAP0LAYELAh0DAxAP//ABwAAAUdBbACBgAlAAD//wCpAAAEiAWwAgYAJgAA//8AqQAABEYFsAIGACkAAP//AFYAAAR6BbACBgA+AAD//wCpAAAFCAWwAgYALAAA//8AtwAAAXcFsAIGAC0AAP//AKkAAAUFBbACBgAvAAD//wCpAAAGUgWwAgYAMQAA//8AqQAABQgFsAIGADIAAP//AHb/7AUJBcQCBgAzAAD//wCpAAAEwAWwAgYANAAA//8AMQAABJcFsAIGADgAAP//AA8AAAS7BbACBgA9AAD//wA5AAAEzgWwAgYAPAAA////1gAAAl8HBwImAC0AAAEHAGr/cAFCABcAsABFWLACLxuxAhw+WbELBPSwFNAwMQD//wAPAAAEuwb7AiYAPQAAAQcAagDCATYAFwCwAEVYsAgvG7EIHD5ZsRAE9LAZ0DAxAP//AGT/6wR3BjoCJgC6AAABBwCtAXX/+wAUALAARViwEy8bsRMYPlmxJAH0MDH//wBj/+wD7AY5AiYAvgAAAQcArQEr//oAFACwAEVYsBUvG7EVGD5ZsSgB9DAx//8Akf5hA/AGOgImAMAAAAEHAK0BRv/7ABQAsABFWLADLxuxAxg+WbEVAfQwMf//AMP/9AJLBiUCJgDCAAABBgCtKuYAFACwAEVYsAwvG7EMGD5ZsQ8B9DAx//8Aj//sA/YGdAImAMoAAAEGAK4h7AAdALAARViwAC8bsQAYPlmxHQH0sBXQsB0QsCfQMDEA//8AmgAABD8EOgIGAI0AAP//AFv/7AQ0BE4CBgBTAAD//wCa/mAD7gQ6AgYAdgAA//8AIQAAA7oEOgIGAFoAAP//ACkAAAPKBDoCBgBcAAD////m//QCbwWxAiYAwgAAAQYAaoDsABcAsABFWLAMLxuxDBg+WbEUAfSwHdAwMQD//wCP/+wD9gWxAiYAygAAAQYAanfsABcAsABFWLAALxuxABg+WbEaAfSwI9AwMQD//wBb/+wENAY6AiYAUwAAAQcArQFD//sAFACwAEVYsAQvG7EEGD5ZsR4B9DAx//8Aj//sA/YGJQImAMoAAAEHAK0BIv/mABQAsABFWLAALxuxABg+WbEVAfQwMf//AHr/7AYZBiICJgDNAAABBwCtAlP/4wAUALAARViwAC8bsQAYPlmxJgH0MDH//wCpAAAERgcHAiYAKQAAAQcAagDEAUIAFwCwAEVYsAYvG7EGHD5ZsRME9LAc0DAxAP//ALEAAAQwB0ACJgCwAAABBwB1AZABQgAUALAARViwBC8bsQQcPlmxCAj0MDEAAQBQ/+wEcgXEACYAYbIAJygREjkAsABFWLAGLxuxBhw+WbAARViwGi8bsRoQPlmwBhCwC9CwBhCyDgEKK1gh2Bv0WbImGgYREjmwJhCyFAEKK1gh2Bv0WbAaELAf0LAaELIiAQorWCHYG/RZMDEBJiY1NCQzMhYWFSM0JiMiBhUUFgQWFhUUBCMiJCY1MxQWMzI2NCYCVvfhARPcluuBwaiZjp+XAWvNY/7s55b+/I3Bw6OYopYCiUfPmKzhdMx5hJd9b1l7Znukb7HVc8h/hJl81nUA//8AtwAAAXcFsAIGAC0AAP///9YAAAJfBwcCJgAtAAABBwBq/3ABQgAXALAARViwAi8bsQIcPlmxCwT0sBTQMDEA//8ANf/sA8wFsAIGAC4AAP//ALIAAAUdBbACBgHjAAD//wCpAAAFBQcuAiYALwAAAQcAdQF7ATAAFACwAEVYsAUvG7EFHD5ZsQ4I9DAx//8ATf/rBMsHGgImAN0AAAEHAKAA2gFDABMAsABFWLARLxuxERw+WbAV3DAxAP//ABwAAAUdBbACBgAlAAD//wCpAAAEiAWwAgYAJgAA//8AsQAABDAFsAIGALAAAP//AKkAAARGBbACBgApAAD//wCxAAAE/wcaAiYA2wAAAQcAoAExAUMAEwCwAEVYsAgvG7EIHD5ZsA3cMDEA//8AqQAABlIFsAIGADEAAP//AKkAAAUIBbACBgAsAAD//wB2/+wFCQXEAgYAMwAA//8AsgAABQEFsAIGALUAAP//AKkAAATABbACBgA0AAD//wB3/+wE2AXEAgYAJwAA//8AMQAABJcFsAIGADgAAP//ADkAAATOBbACBgA8AAD//wBt/+wD6gROAgYARQAA//8AXf/sA/METgIGAEkAAP//AJwAAAQBBcQCJgDvAAABBwCgAKL/7QATALAARViwCC8bsQgYPlmwDdwwMQD//wBb/+wENAROAgYAUwAA//8AjP5gBB4ETgIGAFQAAAABAFz/7APsBE4AHQBJshAeHxESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsAPQsBAQsBTQsBAQshcBCitYIdgb9FkwMSUyNjczDgIjIgARNTQ2NjMyFhcjJiYjIgYVFRQWAj5jlAivBXbFbt3++3TZlLbxCK8Ij2mNm5qDeFpdqGQBJwEAH572iNquaYfLwCO7ygD//wAW/ksDsAQ6AgYAXQAA//8AKQAAA8oEOgIGAFwAAP//AF3/7APzBcUCJgBJAAABBwBqAI4AAAAXALAARViwCC8bsQgYPlmxJQH0sC7QMDEA//8AmgAAA0cF6gImAOsAAAEHAHUAzf/sABQAsABFWLAELxuxBBg+WbEICfQwMf//AF//7AO7BE4CBgBXAAD//wCNAAABaAXEAgYATQAA////vAAAAkUFxAImAIwAAAEHAGr/Vv//ABcAsABFWLACLxuxAhg+WbELAfSwFNAwMQD///+//ksBWQXEAgYATgAA//8AnAAABD8F6QImAPAAAAEHAHUBO//rABQAsABFWLAELxuxBBg+WbEPCfQwMf//ABb+SwOwBdgCJgBdAAABBgCgUAEAEwCwAEVYsA8vG7EPGD5ZsBPcMDEA//8APQAABu0HNAImADsAAAEHAEQCLAE2ABQAsABFWLADLxuxAxw+WbEUCPQwMf//ACsAAAXTBf4CJgBbAAABBwBEAYsAAAAUALAARViwCy8bsQsYPlmxDgn0MDH//wA9AAAG7Qc0AiYAOwAAAQcAdQK7ATYAFACwAEVYsAQvG7EEHD5ZsRUI9DAx//8AKwAABdMF/gImAFsAAAEHAHUCGgAAABQAsABFWLAMLxuxDBg+WbEPCfQwMf//AD0AAAbtBvsCJgA7AAABBwBqAfUBNgAXALAARViwAy8bsQMcPlmxGgT0sCPQMDEA//8AKwAABdMFxQImAFsAAAEHAGoBVAAAABcAsABFWLALLxuxCxg+WbEUAfSwHdAwMQD//wAPAAAEuwc0AiYAPQAAAQcARAD5ATYAFACwAEVYsAgvG7EIHD5ZsQoI9DAx//8AFv5LA7AF/gImAF0AAAEHAEQAjAAAABQAsABFWLAPLxuxDxg+WbERCfQwMf//AGcEIQD9BgACBgALAAD//wCIBBICIwYAAgYABgAA//8AoP/1A4oFsAAmAAUAAAAHAAUCDwAA////tP5LAj8F2AImAJsAAAEHAJ7/Sf/ZABQAsABFWLANLxuxDRg+WbETAfQwMf//ADAEFgFHBgACBgFtAAD//wCpAAAGUgc0AiYAMQAAAQcAdQKZATYAFACwAEVYsAIvG7ECHD5ZsREI9DAx//8AiwAABngF/gImAFEAAAEHAHUCrQAAABQAsABFWLADLxuxAxg+WbEgCfQwMf//ABz+awUdBbACJgAlAAAABwCmAX8AAP//AG3+awPqBE4CJgBFAAAABwCmAMcAAP//AKkAAARGB0ACJgApAAABBwBEAPsBQgAUALAARViwBi8bsQYcPlmxDQj0MDH//wCxAAAE/wdAAiYA2wAAAQcARAFtAUIAFACwAEVYsAgvG7EIHD5ZsQsI9DAx//8AXf/sA/MF/gImAEkAAAEHAEQAxQAAABQAsABFWLAILxuxCBg+WbEfCfQwMf//AJwAAAQBBeoCJgDvAAABBwBEAN7/7AAUALAARViwCC8bsQgYPlmxCwn0MDH//wBaAAAFIQWwAgYAuAAA//8AX/4oBUMEOgIGAMwAAP//ABYAAATdBugCJgEYAAABBwCrBDkA+gAXALAARViwDy8bsQ8cPlmxEQj0sBXQMDEA////+wAABAsFwQImARkAAAEHAKsD1P/TABcAsABFWLARLxuxERg+WbETCfSwF9AwMQD//wBb/ksIQAROACYAUwAAAAcAXQSQAAD//wB2/ksJMAXEACYAMwAAAAcAXQWAAAD//wBQ/lEEagXEAiYA2gAAAAcBsAGc/7j//wBY/lIDrARNAiYA7gAAAAcBsAFD/7n//wB3/lEE2AXEAiYAJwAAAAcBsAHl/7j//wBc/lED7AROAiYARwAAAAcBsAFS/7j//wAPAAAEuwWwAgYAPQAA//8ALv5gA98EOgIGALwAAP//ALcAAAF3BbACBgAtAAD//wAbAAAHNQcaAiYA2QAAAQcAoAH4AUMAEwCwAEVYsA0vG7ENHD5ZsBncMDEA//8AFQAABgQFxAImAO0AAAEHAKABX//tABMAsABFWLANLxuxDRg+WbAZ3DAxAP//ALcAAAF3BbACBgAtAAD//wAcAAAFHQcOAiYAJQAAAQcAoAD0ATcAEwCwAEVYsAQvG7EEHD5ZsA7cMDEA//8Abf/sA+oF2AImAEUAAAEHAKAAmQABABMAsABFWLAXLxuxFxg+WbAs3DAxAP//ABwAAAUdBvsCJgAlAAABBwBqAPkBNgAUALAARViwBC8bsQQcPlmxEgT0MDH//wBt/+wD6gXFAiYARQAAAQcAagCeAAAAFwCwAEVYsBcvG7EXGD5ZsTAB9LA50DAxAP////IAAAdXBbACBgCBAAD//wBO/+wGfAROAgYAhgAA//8AqQAABEYHGgImACkAAAEHAKAAvwFDABMAsABFWLAGLxuxBhw+WbAP3DAxAP//AF3/7APzBdgCJgBJAAABBwCgAIkAAQATALAARViwCC8bsQgYPlmwIdwwMQD//wBd/+wFEgbZAiYBRQAAAQcAagDTARQAFwCwAEVYsAAvG7EAHD5ZsScE9LAw0DAxAP//AGL/7APpBE8CBgCcAAD//wBi/+wD6QXGAiYAnAAAAQcAagCHAAEAFwCwAEVYsAAvG7EAGD5ZsSQB9LAt0DAxAP//ABsAAAc1BwcCJgDZAAABBwBqAf0BQgAXALAARViwDS8bsQ0cPlmxHQT0sCbQMDEA//8AFQAABgQFsQImAO0AAAEHAGoBZP/sABcAsABFWLANLxuxDRg+WbEdAfSwJtAwMQD//wBQ/+wEagccAiYA2gAAAQcAagC3AVcAFwCwAEVYsAsvG7ELHD5ZsTAE9LA50DAxAP//AFj/7QOsBcUCJgDuAAABBgBqXgAAFwCwAEVYsAovG7EKGD5ZsS4B9LA30DAxAP//ALEAAAT/BvoCJgDbAAABBwBwAQQBSgATALAARViwCC8bsQgcPlmwC9wwMQD//wCcAAAEAQWkAiYA7wAAAQYAcHX0ABMAsABFWLAHLxuxBxg+WbAL3DAxAP//ALEAAAT/BwcCJgDbAAABBwBqATYBQgAXALAARViwCC8bsQgcPlmxEQT0sBrQMDEA//8AnAAABAEFsQImAO8AAAEHAGoAp//sABcAsABFWLAILxuxCBg+WbERAfSwGtAwMQD//wB2/+wFCQb9AiYAMwAAAQcAagEbATgAFwCwAEVYsA0vG7ENHD5ZsScE9LAw0DAxAP//AFv/7AQ0BcUCJgBTAAABBwBqAJgAAAAXALAARViwBC8bsQQYPlmxIwH0sCzQMDEA//8AZ//sBPoFxAIGARYAAP//AFv/7AQ0BE4CBgEXAAD//wBn/+wE+gcCAiYBFgAAAQcAagEOAT0AFwCwAEVYsA0vG7ENHD5ZsScE9LAw0DAxAP//AFv/7AQ0BccCJgEXAAABBwBqAIgAAgAXALAARViwBC8bsQQYPlmxJAH0sC3QMDEA//8Ak//sBPQHHQImAOYAAAEHAGoBDQFYABcAsABFWLATLxuxExw+WbEnBPSwMNAwMQD//wBk/+wD4AXFAiYA/gAAAQYAanwAABcAsABFWLAILxuxCBg+WbEnAfSwMNAwMQD//wBN/+sEywb6AiYA3QAAAQcAcACtAUoAEwCwAEVYsBEvG7ERHD5ZsBPcMDEA//8AFv5LA7AFuAImAF0AAAEGAHAjCAATALAARViwDi8bsQ4YPlmwEdwwMQD//wBN/+sEywcHAiYA3QAAAQcAagDfAUIAFwCwAEVYsBEvG7ERHD5ZsRkE9LAi0DAxAP//ABb+SwOwBcUCJgBdAAABBgBqVQAAFwCwAEVYsA8vG7EPGD5ZsRcB9LAg0DAxAP//AE3/6wTLB0ECJgDdAAABBwClAS8BQgAXALAARViwAS8bsQEcPlmxFAj0sBjQMDEA//8AFv5LA9EF/wImAF0AAAEHAKUApQAAABcAsABFWLAPLxuxDxg+WbEWCfSwEtAwMQD//wCWAAAEyAcHAiYA4AAAAQcAagEJAUIAFwCwAEVYsAsvG7ELHD5ZsRoE9LAj0DAxAP//AGcAAAO9BbECJgD4AAABBgBqZOwAFwCwAEVYsAkvG7EJGD5ZsRgB9LAh0DAxAP//ALIAAAYwBwcAJgDlDwAAJwAtBLkAAAEHAGoB0wFCABcAsABFWLAKLxuxChw+WbEfBPSwKNAwMQD//wCdAAAFfwWxACYA/QAAACcAjAQqAAABBwBqAW3/7AAXALAARViwCi8bsQoYPlmxHwH0sCjQMDEA//8AOf5LBQ4FsAImADwAAAAHAa8DpwAA//8AKf5LBBwEOgImAFwAAAAHAa8CtQAA//8AX//sA/AGAAIGAEgAAP//AC/+SwWsBbACJgDcAAAABwGvBEUAAP//ACz+SwS7BDoCJgDxAAAABwGvA1QAAP//ABz+ogUdBbACJgAlAAAABwCsBQIAAP//AG3+ogPqBE4CJgBFAAAABwCsBEoAAP//ABwAAAUdB7oCJgAlAAABBwCqBO4BRgAUALAARViwBC8bsQQcPlmxCwj0MDH//wBt/+wD6gaEAiYARQAAAQcAqgSTABAAFACwAEVYsBcvG7EXGD5ZsSkB9DAx//8AHAAABR0HwwImACUAAAEHAbcAwwEuABcAsABFWLAFLxuxBRw+WbEODPSwFNAwMQD//wBt/+wEwAaOAiYARQAAAQYBt2j5ABcAsABFWLAXLxuxFxg+WbEsCPSwMtAwMQD//wAcAAAFHQe/AiYAJQAAAQcBtgDHAT0AFwCwAEVYsAQvG7EEHD5ZsQ4M9LAT0DAxAP///8r/7APqBokCJgBFAAABBgG2bAcAFwCwAEVYsBcvG7EXGD5ZsSwI9LAx0DAxAP//ABwAAAUdB+oCJgAlAAABBwG1AMgBGwAXALAARViwBS8bsQUcPlmxDAz0sCDQMDEA//8Abf/sBFkGtQImAEUAAAEGAbVt5gAXALAARViwFy8bsRcYPlmxKgj0sDDQMDEA//8AHAAABR0H2gImACUAAAEHAbQAxwEGABcAsABFWLAFLxuxBRw+WbEMDPSwFdAwMQD//wBt/+wD6galAiYARQAAAQYBtGzRABcAsABFWLAXLxuxFxg+WbEqCPSwM9AwMQD//wAc/qIFHQc2AiYAJQAAACcAnQDJATYBBwCsBQIAAAAUALAARViwBC8bsQQcPlmxDwb0MDH//wBt/qID6gYAAiYARQAAACYAnW4AAQcArARKAAAAFACwAEVYsBcvG7EXGD5ZsS0B9DAx//8AHAAABR0HtwImACUAAAEHAbMA6gEtABcAsABFWLAELxuxBBw+WbEOB/SwG9AwMQD//wBt/+wD6gaCAiYARQAAAQcBswCP//gAFwCwAEVYsBcvG7EXGD5ZsSwE9LA50DAxAP//ABwAAAUdB7cCJgAlAAABBwG4AOoBLQAXALAARViwBC8bsQQcPlmxDgf0sBzQMDEA//8Abf/sA+oGggImAEUAAAEHAbgAj//4ABcAsABFWLAXLxuxFxg+WbEsBPSwOtAwMQD//wAcAAAFHQhAAiYAJQAAAQcBsgDuAT0AFwCwAEVYsAQvG7EEHD5ZsQ4H9LAn0DAxAP//AG3/7APqBwoCJgBFAAABBwGyAJMABwAXALAARViwFy8bsRcYPlmxLAT0sEXQMDEA//8AHAAABR0IFQImACUAAAEHAbEA7gFFABcAsABFWLAELxuxBBw+WbEOB/SwHNAwMQD//wBt/+wD6gbfAiYARQAAAQcBsQCTAA8AFwCwAEVYsBcvG7EXGD5ZsSwE9LA60DAxAP//ABz+ogUdBw4CJgAlAAAAJwCgAPQBNwEHAKwFAgAAABMAsABFWLAELxuxBBw+WbAO3DAxAP//AG3+ogPqBdgCJgBFAAAAJwCgAJkAAQEHAKwESgAAABMAsABFWLAXLxuxFxg+WbAs3DAxAP//AKn+ogRGBbACJgApAAAABwCsBMAAAP//AF3+ogPzBE4CJgBJAAAABwCsBIwAAP//AKkAAARGB8YCJgApAAABBwCqBLkBUgAUALAARViwBi8bsQYcPlmxDAj0MDH//wBd/+wD8waEAiYASQAAAQcAqgSDABAAFACwAEVYsAgvG7EIGD5ZsR4B9DAx//8AqQAABEYHLgImACkAAAEHAKQAkAFGABQAsABFWLAGLxuxBhw+WbEPBPQwMf//AF3/7APzBewCJgBJAAABBgCkWgQAFACwAEVYsAgvG7EIGD5ZsSEB9DAx//8AqQAABOYHzwImACkAAAEHAbcAjgE6ABcAsABFWLAHLxuxBxw+WbEPDPSwFdAwMQD//wBd/+wEsAaOAiYASQAAAQYBt1j5ABcAsABFWLAILxuxCBg+WbEhCPSwJ9AwMQD////wAAAERgfLAiYAKQAAAQcBtgCSAUkAFwCwAEVYsAYvG7EGHD5ZsQ8M9LAU0DAxAP///7r/7APzBokCJgBJAAABBgG2XAcAFwCwAEVYsAgvG7EIGD5ZsSEI9LAm0DAxAP//AKkAAAR/B/YCJgApAAABBwG1AJMBJwAXALAARViwBi8bsQYcPlmxDwz0sBPQMDEA//8AXf/sBEkGtQImAEkAAAEGAbVd5gAXALAARViwCC8bsQgYPlmxHwj0sCXQMDEA//8AqQAABEYH5gImACkAAAEHAbQAkgESABcAsABFWLAGLxuxBhw+WbEPDPSwFtAwMQD//wBd/+wD8walAiYASQAAAQYBtFzRABcAsABFWLAILxuxCBg+WbEhCPSwKNAwMQD//wCp/qIERgdCAiYAKQAAACcAnQCUAUIBBwCsBMAAAAAUALAARViwBi8bsQYcPlmxEAb0MDH//wBd/qID8wYAAiYASQAAACYAnV4AAQcArASMAAAAFACwAEVYsAgvG7EIGD5ZsSAB9DAx//8AtwAAAfgHxgImAC0AAAEHAKoDZAFSABQAsABFWLACLxuxAhw+WbEECPQwMf//AJsAAAHeBoICJgCMAAABBwCqA0oADgAUALAARViwAi8bsQIYPlmxBAH0MDH//wCj/qIBfgWwAiYALQAAAAcArANrAAD//wCF/qIBaAXEAiYATQAAAAcArANNAAD//wB2/qIFCQXEAiYAMwAAAAcArAUYAAD//wBb/qIENAROAiYAUwAAAAcArASdAAD//wB2/+wFCQe8AiYAMwAAAQcAqgUQAUgAFACwAEVYsA0vG7ENHD5ZsS4I9DAx//8AW//sBDQGhAImAFMAAAEHAKoEjQAQABQAsABFWLAELxuxBBg+WbEqAfQwMf//AHb/7AU9B8UCJgAzAAABBwG3AOUBMAAXALAARViwDS8bsQ0cPlmxIwz0sCnQMDEA//8AW//sBLoGjgImAFMAAAEGAbdi+QAXALAARViwBC8bsQQYPlmxHwj0sCXQMDEA//8AR//sBQkHwQImADMAAAEHAbYA6QE/ABcAsABFWLANLxuxDRw+WbEhDPSwKNAwMQD////E/+wENAaJAiYAUwAAAQYBtmYHABcAsABFWLAELxuxBBg+WbEdCPSwJNAwMQD//wB2/+wFCQfsAiYAMwAAAQcBtQDqAR0AFwCwAEVYsA0vG7ENHD5ZsSEM9LAn0DAxAP//AFv/7ARTBrUCJgBTAAABBgG1Z+YAFwCwAEVYsAQvG7EEGD5ZsR0I9LAj0DAxAP//AHb/7AUJB9wCJgAzAAABBwG0AOkBCAAXALAARViwDS8bsQ0cPlmxIQz0sCrQMDEA//8AW//sBDQGpQImAFMAAAEGAbRm0QAXALAARViwBC8bsQQYPlmxHQj0sCbQMDEA//8Adv6iBQkHOAImADMAAAAnAJ0A6wE4AQcArAUYAAAAFACwAEVYsA0vG7ENHD5ZsSIG9DAx//8AW/6iBDQGAAImAFMAAAAmAJ1oAAEHAKwEnQAAABQAsABFWLAELxuxBBg+WbEeAfQwMf//AGX/7AWdBy8CJgCXAAABBwB1Ad0BMQAUALAARViwDS8bsQ0cPlmxKAj0MDH//wBb/+wEugX+AiYAmAAAAQcAdQFlAAAAFACwAEVYsAQvG7EEGD5ZsSYJ9DAx//8AZf/sBZ0HLwImAJcAAAEHAEQBTgExABQAsABFWLANLxuxDRw+WbEnCPQwMf//AFv/7AS6Bf4CJgCYAAABBwBEANYAAAAUALAARViwBC8bsQQYPlmxJQn0MDH//wBl/+wFnQe1AiYAlwAAAQcAqgUMAUEAFACwAEVYsA0vG7ENHD5ZsTQI9DAx//8AW//sBLoGhAImAJgAAAEHAKoElAAQABQAsABFWLAELxuxBBg+WbEyAfQwMf//AGX/7AWdBx0CJgCXAAABBwCkAOMBNQAUALAARViwDS8bsQ0cPlmxKQT0MDH//wBb/+wEugXsAiYAmAAAAQYApGsEABQAsABFWLAELxuxBBg+WbEnAfQwMf//AGX+ogWdBjcCJgCXAAAABwCsBQkAAP//AFv+ogS6BLACJgCYAAAABwCsBJsAAP//AIz+ogSqBbACJgA5AAAABwCsBO4AAP//AIj+ogPcBDoCJgBZAAAABwCsBFEAAP//AIz/7ASqB7oCJgA5AAABBwCqBOkBRgAUALAARViwCi8bsQocPlmxEwj0MDH//wCI/+wD3AaEAiYAWQAAAQcAqgSFABAAFACwAEVYsAcvG7EHGD5ZsREB9DAx//8AjP/sBh0HQAImAJkAAAEHAHUB1AFCABQAsABFWLAaLxuxGhw+WbEdCPQwMf//AIj/7AUPBeoCJgCaAAABBwB1AWP/7AAUALAARViwEy8bsRMYPlmxHAn0MDH//wCM/+wGHQdAAiYAmQAAAQcARAFFAUIAFACwAEVYsBIvG7ESHD5ZsRwI9DAx//8AiP/sBQ8F6gImAJoAAAEHAEQA1P/sABQAsABFWLANLxuxDRg+WbEbCfQwMf//AIz/7AYdB8YCJgCZAAABBwCqBQMBUgAUALAARViwGi8bsRocPlmxKQj0MDH//wCI/+wFDwZwAiYAmgAAAQcAqgSS//wAFACwAEVYsBMvG7ETGD5ZsSgB9DAx//8AjP/sBh0HLgImAJkAAAEHAKQA2gFGABQAsABFWLASLxuxEhw+WbEeBPQwMf//AIj/7AUPBdgCJgCaAAABBgCkafAAFACwAEVYsBMvG7ETGD5ZsR0B9DAx//8AjP6iBh0GAgImAJkAAAAHAKwFCQAA//8AiP6iBQ8EkAImAJoAAAAHAKwEVwAA//8AD/6iBLsFsAImAD0AAAAHAKwEuwAA//8AFv4FA7AEOgImAF0AAAAHAKwFHP9j//8ADwAABLsHugImAD0AAAEHAKoEtwFGABQAsABFWLAILxuxCBw+WbEJCPQwMf//ABb+SwOwBoQCJgBdAAABBwCqBEoAEAAUALAARViwDy8bsQ8YPlmxEAH0MDH//wAPAAAEuwciAiYAPQAAAQcApACOAToAFACwAEVYsAEvG7EBHD5ZsQwE9DAx//8AFv5LA7AF7AImAF0AAAEGAKQhBAAUALAARViwAS8bsQEYPlmxEwH0MDEAAgBf/+wErAYAABcAIgB/ALAUL7AARViwDS8bsQ0YPlmwAEVYsAMvG7EDED5ZsABFWLAGLxuxBhA+WbIPFAFdsi8UAV2yEwMUERI5sBMvshABCitYIdgb9FmwAdCyBAYNERI5sg8NBhESObATELAW0LAGELIbAQorWCHYG/RZsA0QsiABCitYIdgb9FkwMQEjESMnBiMiAjU1NBIzMhcRITUhNTMVMwEUFjMyNxEmIyIGBKy8qglvxrzt7L++b/75AQe5vPxsmIawUVOsiJgE0vsudIgBNPgO+QEvggEGl5eX/Ki40J4B8ZnSAP//AF/+zQSsBgAAJgBIAAAAJwHeAaECRwEHAEMAn/9kAAgAsi8eAV0wMf//ALL+mAVEBbACJgHjAAAABwGwBCP/////AJz+mQSBBDoCJgDwAAAABwGwA2AAAP//AKn+mQWpBbACJgAsAAAABwGwBIgAAP//AJz+mQSiBDoCJgDzAAAABwGwA4EAAP//ADH+mQSXBbACJgA4AAAABwGwAj8AAP//ACj+mQOwBDoCJgD1AAAABwGwAcYAAP//ADn+mQT4BbACJgA8AAAABwGwA9cAAP//ACn+mQQGBDoCJgBcAAAABwGwAuUAAP//AJb+mQVmBbACJgDgAAAABwGwBEUAAP//AGf+mQReBDsCJgD4AAAABwGwAz0AAP//AJb+mQTIBbACJgDgAAAABwGwAv4AAP//AGf+mQO9BDsCJgD4AAAABwGwAfUAAP//ALH+mQQwBbACJgCwAAAABwGwAO8AAP//AJr+mQNHBDoCJgDrAAAABwGwANUAAP//ABv+mQeCBbACJgDZAAAABwGwBmEAAP//ABX+mQY9BDoCJgDtAAAABwGwBRwAAP//AD/+VQW9BcMCJgE/AAAABwGwAwb/vP///97+WQRjBE4CJgFAAAAABwGwAgH/wP//AIwAAAPfBgACBgBMAAAAAv/UAAAEsQWwABIAGwBhALAARViwDy8bsQ8cPlmwAEVYsAovG7EKED5ZsgIKDxESObACL7IODwIREjmwDi+yCwEKK1gh2Bv0WbAB0LAOELAR0LACELITAQorWCHYG/RZsAoQshQBCitYIdgb9FkwMQEjFSEWBBUUBAchESM1MzUzFTMDESEyNjU0JicCUO0BauQBAP7+3/3Tz8/A7e0BX4+fmY0EUPID5MTF6gQEUJfJyf3Z/d2YgHuOAgAC/9QAAASxBbAAEgAbAGEAsABFWLAQLxuxEBw+WbAARViwCi8bsQoQPlmyAgoQERI5sAIvshECEBESObARL7IBAQorWCHYG/RZsAvQsBEQsA7QsAIQshMBCitYIdgb9FmwChCyFAEKK1gh2Bv0WTAxASMVIRYEFRQEByERIzUzNTMVMwMRITI2NTQmJwJQ7QFq5AEA/v7f/dPPz8Dt7QFfj5+ZjQRQ8gPkxMXqBARQl8nJ/dn93ZiAe44CAAEAAwAABDAFsAANAE4AsABFWLAILxuxCBw+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsnoNAV2yAAEKK1gh2Bv0WbAE0LANELAG0LAIELIKAQorWCHYG/RZMDEBIREjESM1MxEhFSERIQJ//vPBrq4Df/1CAQ0CrP1UAqyXAm2e/jEAAAH//AAAA0cEOgANAEkAsABFWLAILxuxCBg+WbAARViwAi8bsQIQPlmyDQgCERI5sA0vsgABCitYIdgb9FmwBNCwDRCwBtCwCBCyCgEKK1gh2Bv0WTAxASERIxEjNTMRIRUhESECeP7cup6eAq3+DQEkAd/+IQHflwHEmf7VAAEACwAABTEFsAAUAH4AsABFWLAILxuxCBw+WbAARViwEC8bsRAcPlmwAEVYsAIvG7ECED5ZsABFWLATLxuxExA+WbIOCAIREjmwDi+yLw4BXbLPDgFdsgEBCitYIdgb9FmyBwgCERI5sAcvsgQBCitYIdgb9FmwBxCwCtCwBBCwDNCyEgEOERI5MDEBIxEjESM1MzUzFSEVIREzATMBASMCN7HAu7vAAQH+/5YB/e/91AJV6wKO/XIEN5fi4pf+9wKC/T79EgAAAf/TAAAEKAYAABQAdACwAEVYsAgvG7EIHj5ZsABFWLAQLxuxEBg+WbAARViwAi8bsQIQPlmwAEVYsBMvG7ETED5Zsg4QAhESObAOL7IBAQorWCHYG/RZsgcIEBESObAHL7IEAQorWCHYG/RZsAcQsArQsAQQsAzQshIBDhESOTAxASMRIxEjNTM1MxUzFSMRMwEzAQEjAeCAutPTuu/vfgE72/6GAa7bAfX+CwTBl6iol/3NAaz+E/2zAP//ALH+mwWyBxoCJgDbAAAAJwCgATEBQwEHABAEfv+9ABMAsABFWLAILxuxCBw+WbAN3DAxAP//AJz+mwS1BcQCJgDvAAAAJwCgAKL/7QEHABADgf+9ABMAsABFWLAILxuxCBg+WbAN3DAxAP//AKn+mwW7BbACJgAsAAAABwAQBIf/vf//AJz+mwS0BDoCJgDzAAAABwAQA4D/vf//AKn+mwb4BbACJgAxAAAABwAQBcT/vf//AJ3+mwYGBDoCJgDyAAAABwAQBNL/vf//AC/+mwWoBbACJgDcAAAABwAQBHT/vf//ACz+mwS3BDoCJgDxAAAABwAQA4P/vQABAA8AAAS7BbAADgBWsgoPEBESOQCwAEVYsAgvG7EIHD5ZsABFWLALLxuxCxw+WbAARViwAi8bsQIQPlmyBggCERI5sAYvsgUBCitYIdgb9FmwANCyCggCERI5sAYQsA7QMDEBIxEjESM1MwEzAQEzATMDpuHA25T+UdwBegF82v5RmgIJ/fcCCZcDEP0lAtv88AAAAQAu/mAD3wQ6AA4AY7IKDxAREjkAsABFWLAILxuxCBg+WbAARViwCy8bsQsYPlmwAEVYsAIvG7ECEj5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmyBgEKK1gh2Bv0WbIKCwAREjmwDdCwDtAwMQUjESMRIzUzATMBATMBMwNK5rrcv/6hvQEfARi9/qPIC/5rAZWXA6782gMm/FIAAAEAOQAABM4FsAARAGMAsABFWLALLxuxCxw+WbAARViwDi8bsQ4cPlmwAEVYsAIvG7ECED5ZsABFWLAFLxuxBRA+WbIRCwIREjmwES+yAAEKK1gh2Bv0WbIECwIREjmwB9CwERCwCdCyDQsCERI5MDEBIwEjAQEjASM1MwEzAQEzATMDxKQBruT+mv6Y4wGvoJH+a+EBXwFd4v5rlgKe/WICOP3IAp6XAnv90gIu/YUAAQApAAADygQ6ABEAYwCwAEVYsAsvG7ELGD5ZsABFWLAOLxuxDhg+WbAARViwAi8bsQIQPlmwAEVYsAUvG7EFED5ZshEOAhESObARL7IAAQorWCHYG/RZsgQOAhESObAH0LARELAJ0LINDgIREjkwMQEjASMDAyMBIzUzATMTEzMBMwM8swFB1vr61wFBqp7+1tbt8Nj+1qcB4f4fAZX+awHhlwHC/nUBi/4+//8AY//sA+wETQIGAL4AAP//ABIAAAQvBbACJgAqAAAABwHe/4P+f///AJACiwXJAyIARgGXhABmZkAA//8AXQAABDMFxAIGABYAAP//AF7/7AP5BcQCBgAXAAD//wA1AAAEUAWwAgYAGAAA//8Amv/sBC0FsAIGABkAAP//AGT//wP4BcQABgAdAAD//wCH/+wEHgXEAAYAFBQA//8Aev/sBNwHVQImACsAAAEHAHUBvgFXABQAsABFWLALLxuxCxw+WbEiCPQwMf//AGD+VgPyBf4CJgBLAAABBwB1AUsAAAAUALAARViwAy8bsQMYPlmxJwn0MDH//wCpAAAFCAc0AiYAMgAAAQcARAFmATYAFACwAEVYsAYvG7EGHD5ZsQsI9DAx//8AjAAAA98F/gImAFIAAAEHAEQAzAAAABQAsABFWLADLxuxAxg+WbETCfQwMf//ABwAAAUdByACJgAlAAABBwCrBG0BMgAXALAARViwBC8bsQQcPlmxDAj0sBDQMDEA//8AOf/sA+oF6wImAEUAAAEHAKsEEv/9ABcAsABFWLAXLxuxFxg+WbEqCfSwLtAwMQD//wBfAAAERgcsAiYAKQAAAQcAqwQ4AT4AFwCwAEVYsAYvG7EGHD5ZsQ0I9LAR0DAxAP//ACn/7APzBesCJgBJAAABBwCrBAL//QAXALAARViwCC8bsQgYPlmxHwn0sCPQMDEA////CgAAAeoHLAImAC0AAAEHAKsC4wE+ABcAsABFWLACLxuxAhw+WbEFCPSwCdAwMQD///7wAAAB0AXpAiYAjAAAAQcAqwLJ//sAFwCwAEVYsAIvG7ECGD5ZsQUJ9LAJ0DAxAP//AHb/7AUJByICJgAzAAABBwCrBI8BNAAXALAARViwDS8bsQ0cPlmxIQj0sCXQMDEA//8AM//sBDQF6wImAFMAAAEHAKsEDP/9ABcAsABFWLAELxuxBBg+WbEdCfSwIdAwMQD//wBVAAAEyQcgAiYANgAAAQcAqwQuATIAFwCwAEVYsAQvG7EEHD5ZsRkI9LAd0DAxAP///4sAAAKXBesCJgBWAAABBwCrA2T//QAXALAARViwCy8bsQsYPlmxDwn0sBPQMDEA//8AjP/sBKoHIAImADkAAAEHAKsEaAEyABcAsABFWLAJLxuxCRw+WbEUCPSwGNAwMQD//wAr/+wD3AXrAiYAWQAAAQcAqwQE//0AFwCwAEVYsAcvG7EHGD5ZsRIJ9LAW0DAxAP///zoAAATSBj8AJgDPZAAABwCt/oMAAP//AKn+ogSIBbACJgAmAAAABwCsBLoAAP//AIz+ogQgBgACJgBGAAAABwCsBKsAAP//AKn+ogTGBbACJgAoAAAABwCsBLkAAP//AF/+ogPwBgACJgBIAAAABwCsBL0AAP//AKn9/wTGBbACJgAoAAAABwGiAWX+oP//AF/9/wPwBgACJgBIAAAABwGiAWn+oP//AKn+ogUIBbACJgAsAAAABwCsBR8AAP//AIz+ogPfBgACJgBMAAAABwCsBKEAAP//AKkAAAUFBy4CJgAvAAABBwB1AXsBMAAUALAARViwBS8bsQUcPlmxDgj0MDH//wCNAAAEDAc/AiYATwAAAQcAdQFEAUEACQCwBS+wD9wwMQD//wCp/qIFBQWwAiYALwAAAAcArAToAAD//wCN/qIEDAYAAiYATwAAAAcArARlAAD//wCp/qIEHAWwAiYAMAAAAAcArATAAAD//wCG/qIBYQYAAiYAUAAAAAcArANOAAD//wCp/qIGUgWwAiYAMQAAAAcArAXSAAD//wCL/qIGeAROAiYAUQAAAAcArAXWAAD//wCp/qIFCAWwAiYAMgAAAAcArAUkAAD//wCM/qID3wROAiYAUgAAAAcArASHAAD//wCpAAAEwAdAAiYANAAAAQcAdQF8AUIAFACwAEVYsAMvG7EDHD5ZsRYI9DAx//8AjP5gBB4F9QImAFQAAAEHAHUBk//3ABQAsABFWLAMLxuxDBg+WbEdCfQwMf//AKj+ogTJBbACJgA2AAAABwCsBLcAAP//AIL+ogKXBE4CJgBWAAAABwCsA0oAAP//AFD+ogRyBcQCJgA3AAAABwCsBMkAAP//AF/+ogO7BE4CJgBXAAAABwCsBIcAAP//ADH+ogSXBbACJgA4AAAABwCsBLoAAP//AAn+ogJWBUACJgBYAAAABwCsBBkAAP//ABwAAAT9By4CJgA6AAABBwCkALQBRgAUALAARViwBi8bsQYcPlmxCgT0MDH//wAhAAADugXjAiYAWgAAAQYApB37ABQAsABFWLABLxuxARg+WbEKAfQwMf//ABz+ogT9BbACJgA6AAAABwCsBOQAAP//ACH+ogO6BDoCJgBaAAAABwCsBE0AAP//AD3+ogbtBbACJgA7AAAABwCsBe8AAP//ACv+ogXTBDoCJgBbAAAABwCsBVMAAP//AFb+ogR6BbACJgA+AAAABwCsBLoAAP//AFj+ogOzBDoCJgBeAAAABwCsBGIAAP///nj/7AVPBdYAJgAzRgAABwFa/gkAAP//ABMAAARwBRwCJgG6AAAABwCt/9z+3f///58AAAPqBR8AJgG+PAAABwCt/uj+4P///7wAAASUBRwAJgHBPAAABwCt/wX+3f///8AAAAGNBR4AJgHCPAAABwCt/wn+3////9//8ARkBRwAJgHICgAABwCt/yj+3f///1cAAARYBRwAJgHSPAAABwCt/qD+3f////gAAASIBRsAJgHzCgAABwCt/0H+3P//ABMAAARwBI0CBgG6AAD//wCKAAAD7wSNAgYBuwAA//8AigAAA64EjQIGAb4AAP//AEcAAAPgBI0CBgHTAAD//wCKAAAEWASNAgYBwQAA//8AlwAAAVEEjQIGAcIAAP//AIoAAARXBI0CBgHEAAD//wCKAAAFdwSNAgYBxgAA//8AYP/wBFoEnQIGAcgAAP//AIoAAAQbBI0CBgHJAAD//wAoAAAD/QSNAgYBzQAA//8ADQAABBwEjQIGAdIAAP//ACYAAAQxBI0CBgHRAAD///+0AAACPQXjAiYBwgAAAQcAav9OAB4AFwCwAEVYsAIvG7ECGj5ZsQsC9LAU0DAxAP//AA0AAAQcBeMCJgHSAAABBgBqbR4AFwCwAEVYsAgvG7EIGj5ZsRAC9LAZ0DAxAP//AIoAAAOuBeMCJgG+AAABBgBqcR4AFwCwAEVYsAYvG7EGGj5ZsRMC9LAc0DAxAP//AIoAAAOFBhwCJgHqAAABBwB1ATQAHgAUALAARViwBC8bsQQaPlmxCAb0MDH//wBD//AD3QSdAgYBzAAA//8AlwAAAVEEjQIGAcIAAP///7QAAAI9BeMCJgHCAAABBwBq/04AHgAXALAARViwAi8bsQIaPlmxCwL0sBTQMDEA//8AK//wA00EjQIGAcMAAP//AIoAAARXBhwCJgHEAAABBwB1ASUAHgAUALAARViwBS8bsQUaPlmxDwb0MDH//wAi/+wECwX2AiYCAQAAAQYAoGcfABQAsABFWLACLxuxAho+WbEUCPQwMf//ABMAAARwBI0CBgG6AAD//wCKAAAD7wSNAgYBuwAA//8AigAAA4UEjQIGAeoAAP//AIoAAAOuBI0CBgG+AAD//wCKAAAEYQX2AiYB/gAAAQcAoADJAB8AFACwAEVYsAgvG7EIGj5ZsQ0I9DAx//8AigAABXcEjQIGAcYAAP//AIoAAARYBI0CBgHBAAD//wBg//AEWgSdAgYByAAA//8AigAABEQEjQIGAe8AAP//AIoAAAQbBI0CBgHJAAD//wBg//AEMASdAgYBvAAA//8AKAAAA/0EjQIGAc0AAP//ACYAAAQxBI0CBgHRAAAAAQBH/lAD1ASdACkAmgCwAEVYsAovG7EKGj5ZsABFWLAZLxuxGRA+WbAARViwGC8bsRgSPlmwChCyAwEKK1gh2Bv0WbIGChkREjmyJxkKERI5fLAnLxiy8CcBXbIAJwFxsqAnAV20YCdwJwJdsjAnAXG0YCdwJwJxsiYBCitYIdgb9FmyECYnERI5sBkQsBbQsh0ZChESObAZELIgAQorWCHYG/RZMDEBNCYjIgYVIzQ2MzIWFRQGBxYWFRQGBxEjESYmNTMWFjMyNjU0JSM1MzYDCIp9boG67bzT7m5ndnHLr7qjtrkFg3mIkv7/nZzvA1BUXVhPjrWollaNKSSSW4yvEv5bAacUrYhWYGBYwQWYBQAAAQCK/pkE+gSNAA8AXQCwAS+wAEVYsAkvG7EJGj5ZsABFWLADLxuxAxA+WbAARViwBi8bsQYQPlmyCwMJERI5fLALLxiyoAsBXbIEAQorWCHYG/RZsAkQsAzQsAMQsg4BCitYIdgb9FkwMQEjESMRIREjETMRIREzETME+rqh/aS5uQJcuaL+mQFnAfL+DgSN/f0CA/wMAAABAGD+VgQwBJ0AHwBYALAARViwDi8bsQ4aPlmwAEVYsAMvG7EDED5ZsABFWLAFLxuxBRI+WbADELAG0LAOELAS0LAOELIVAQorWCHYG/RZsAMQshwBCitYIdgb9FmwAxCwH9AwMQEGBgcRIxEmAjU1NDY2MzIWFyMmJiMiBgcVFBYzMjY3BDAUy6m6t9d755jM9xO5Eo1+macBn5eHjRQBeajHFP5gAaIeAR7jYaT5iNO7gnTLvWq9z2+D//8ADQAABBwEjQIGAdIAAP//AAL+UQVrBJ0CJgIXAAAABwGwArz/uP//AIoAAARhBdYCJgH+AAABBwBwAJwAJgATALAARViwCC8bsQgaPlmwC9wwMQD//wAi/+wECwXWAiYCAQAAAQYAcDomABMAsABFWLARLxuxERo+WbAT3DAxAP//AGAAAAUGBI0CBgHxAAD//wAc/k8FHQWwAiYAJQAAAAcAowF8AAD//wBt/k8D6gROAiYARQAAAAcAowDEAAD//wCp/lkERgWwAiYAKQAAAAcAowE6AAr//wBd/k8D8wROAiYASQAAAAcAowEGAAAAAAAAAA0AogADAAEECQAAAF4AAAADAAEECQABAAwAXgADAAEECQACAA4AagADAAEECQADAAwAXgADAAEECQAEAAwAXgADAAEECQAFACwAeAADAAEECQAGABwApAADAAEECQAHAEAAwAADAAEECQAJAAwBAAADAAEECQALABQBDAADAAEECQAMACYBIAADAAEECQANAFwBRgADAAEECQAOAFQBogBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADEAIABHAG8AbwBnAGwAZQAgAEkAbgBjAC4AIABBAGwAbAAgAFIAaQBnAGgAdABzACAAUgBlAHMAZQByAHYAZQBkAC4AUgBvAGIAbwB0AG8AUgBlAGcAdQBsAGEAcgBWAGUAcgBzAGkAbwBuACAAMgAuADAAMAAxADEAMAAxADsAIAAyADAAMQA0AFIAbwBiAG8AdABvAC0AUgBlAGcAdQBsAGEAcgBSAG8AYgBvAHQAbwAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlAC4ARwBvAG8AZwBsAGUARwBvAG8AZwBsAGUALgBjAG8AbQBDAGgAcgBpAHMAdABpAGEAbgAgAFIAbwBiAGUAcgB0AHMAbwBuAEwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAQQBwAGEAYwBoAGUAIABMAGkAYwBlAG4AcwBlACwAIABWAGUAcgBzAGkAbwBuACAAMgAuADAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAcABhAGMAaABlAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBMAEkAQwBFAE4AUwBFAC0AMgAuADAAAwAAAAAAAP9qAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIACAAC//8ADwABAAAADAAAAAAAAAACAF4AJQA+AAEARQBeAAEAeQB5AAMAgQCBAAEAgwCDAAEAhgCGAAEAiQCJAAEAiwCVAAEAlwCcAAEAowCjAAMApwCsAAMAsACwAAEAuQC6AAEAvgC+AAEAwADAAAEAwgDCAAEAxgDGAAEAygDKAAEAzADNAAEAzwDQAAEA0gDSAAEA2QDdAAEA4ADgAAEA5ADkAAEA5gDoAAEA6gD6AAEA/AD8AAEA/gEAAAEBAgECAAEBBwEIAAEBFQEZAAEBGwEbAAEBHwEhAAEBIwEkAAMBOAE5AAEBPgFAAAEBRQFFAAEBTQFNAAEBTwFPAAEBUwFTAAEBVQFXAAEBWQFZAAEBogGiAAMBowGpAAIBugHTAAEB4gHiAAEB5AHkAAEB6gHqAAEB8wHzAAEB9QH1AAEB/AH+AAECAAIBAAECAwIDAAECBwIHAAECCQILAAECEQIRAAECFgIYAAECGgIaAAECPgJDAAECRwKvAAECsgNYAAEDWwNqAAEDcQNxAAEDcwN3AAEDegN/AAEDgQOEAAEDhgOKAAEDjAOnAAEDqwOrAAEDrQO0AAEDtgO4AAEDvQO/AAEDwQPNAAEDzwPZAAED3APsAAED7wRIAAEESwRLAAEETQRNAAEETwRQAAEEWwRbAAEEYgRkAAEEZgRmAAEEagRqAAEEbARtAAEEbwRvAAEEdwSGAAEEhwSHAAIEiASwAAEEsgTKAAEEzATQAAEE0gTVAAEE1wTZAAEE2wTcAAEE3gThAAEAAQAAAAoAXACaAARERkxUABpjeXJsAChncmVrADZsYXRuAEQABAAAAAD//wACAAAABAAEAAAAAP//AAIAAQAFAAQAAAAA//8AAgACAAYABAAAAAD//wACAAMABwAIY3BzcAAyY3BzcAAyY3BzcAAyY3BzcAAya2VybgA4a2VybgA4a2VybgA4a2VybgA4AAAAAQAAAAAAAQABAAIABgHYAAEAAAABAAgAAQAKAAUAJABIAAEA3gAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAkgCwALEAsgCzALQAtQC2ALcAuAC5ANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoASwBMAEyATgBOgE8AT4BPwFFAUYBfwGFAYoBjQJHAkgCSgJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgKDAoUChwKJAosCjQKPApECkwKVApcCmQKbAp0CnwKhAqMCpQKnAqkCqwKtAq8CsgK0ArYCuAK6ArwCvgLAAsICxQLHAskCywLNAs8C0QLTAtUC2QLbAt0C3wLhAuMC5QLnAukC6wLtAu8C8QLyAvQC9gNTA1QDVQNWA1cDWANZA1sDXANdA14DXwNgA2EDYgNkA2UDZgNnA2gDaQNqA3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DuwO9A78D1APaA+AESQRLBE8EVwRZBF4EagACAAAABAAOD84V8jViAAEDVAAEAAABpQrSCtIGggtwCoAK/g+aDAAGiA7uDu4MRg6gCiIO7g7uD5oKigaSDGYMRgrYCqwNUg8QCl4L4gsQDBYGmA22DbYNtgwgCxAKUAxMDbAMTAsQBqYN5gtwD5oLcAasBrIGvAbCBsgMTAbOBtgNtgb+BxQHKgcwB0YHTAdSB4QHigeQDcANwAe+Du4H4AgCDVIIMA7uDu4LJg7uDu4IRg3ADcAIeAiCCIwIpg1ICLgNsAjSCOgLEAkyCUwJaAloCxAJYgloCWgJaAtwDCAK2AxMCxAN5g1IDqAOoA1ICtIK0grSCtIK0gmKCbAJugnECeIJ9AoGChgK/g+aD5oPmg+aDGYLcAtwC3ALcAtwC3ALcAr+DAAMAAwADAAO7g7uDu4O7g7uD5oPmg+aD5oPmgxGDEYMRgxGDxAL4gviC+IL4gviC+IL4gwWDBYMFgwWDbYMIAwgDCAMIAwgDEwMTAtwC+ILcAviC3AL4gr+Cv4K/gr+D5oMAAwWDAAMFgwADBYMAAwWDAAMFg7uDbYO7g7uDu4O7g7uDEYOoAoiCiIKIgoiDu4Ntg7uDbYO7g22DbYPmgwgD5oMIA+aDCAKUApQClAMZgxmDGYMRgxGDEYMRgxGDEYKrA8QDEwPEApeCl4KXgtwDAAO7g7uD5oPEAtwCoAMAApeDu4O7g6gDu4O7g+aCooMZg8QDVIO7g8QDbYMIAxMDCAMAA3mDu4O7gxGDqAOoAsmC3AKgA3mDAAO7g7uD5oKigr+DGYNUgviDBYMIAsQDEwNsAwWDUgMTAqsCqwKrA8QDEwK0grSCtIO7g22C3AL4gwADBYK2AxMCv4PEAxMDu4NUg2wDu4LcAviC3AL4gwADBYMFgwWDVINsA+aDCAMIAsQCyYMTAsmDEwLJgxMDVINsAtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gtwC+ILcAviC3AL4gwADBYMAAwWDAAMFgwADBYMAAwWDAAMFgwADBYMAAwWDu4O7g+aDCAPmgwgD5oMIA+aDCAPmgwgD5oMIA+aDCAMIAxGDEYPEAxMDxAMTA8QDEwOoA7uDGYNUg2wDeYNSA1SDbANtg3ADeYOoA7uDu4PEA+aAAIAhwAGAAYAAAALAAsAAQATABMAAgAlACoAAwAsADUACQA4AD4AEwBFAEYAGgBJAEoAHABMAEwAHgBRAFQAHwBWAFYAIwBaAFoAJABcAF0AJQCKAIoAJwCcAJwAKACwALQAKQC2ALgALgC6ALoAMQC8AL0AMgC/AMAANADCAMQANgDGAMsAOQDRANEAPwDTAN0AQADfAN8ASwDhAOMATADlAOcATwDpAO0AUgDwAPAAVwD1APcAWAD6APsAWwD9AP8AXQEDAQQAYAEJAQkAYgEMAQwAYwEXARkAZAErAS0AZwEwATAAagEyATIAawFJAUkAbAFsAW0AbQFvAXEAbwG6AboAcgG9Ab0AcwHEAcUAdAHIAcgAdgHKAcsAdwHNAc0AeQIoAigAegIqAisAewJHAkgAfQJKAkoAfwJMAm0AgAJvAnIAogJ3AnwApgKBAokArAKLAosAtQKNAo0AtgKPAo8AtwKRApEAuAKTApwAuQKlAqcAwwKpAqkAxgKrAqsAxwKtAq0AyAKvAq8AyQKyArIAygK0ArQAywK2ArYAzAK4ArgAzQK6AroAzgK8ArwAzwK+AsoA0ALMAswA3QLOAs4A3gLQAtAA3wLbAtsA4ALdAt0A4QLfAt8A4gLh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BB7/6wQg/+sEIv/rBCT/6wQm/+sEKP/rBCr/6wQs/+sELv/rBDD/6wQy/+sENP/qBDb/6gQ4/+oEOv/qBDz/6gQ+/+oEQP/qBEL/6ARE/+gERv/oBE0AFAAfADj/1QA6/+QAO//sAD3/3QDR/9UA1f/VARj/5AEy/9UBOv/VAmb/3QLb/9UC3f/VAt//1QLt/+wC7//dAvH/3QNY/90DZ//dA2r/3QOO/9UDoP/sA6L/7AOk/+wDpv/dA7f/5AO//90EQf/dBEP/3QRF/90ETf/VBGr/3QAaADj/sAA6/+0APf/QANH/sADV/7ABGP/tATL/sAE6/7ACZv/QAtv/sALd/7AC3/+wAu//0ALx/9ADWP/QA2f/0ANq/9ADjv+wA6b/0AO3/+0Dv//QBEH/0ARD/9AERf/QBE3/sARq/9AAEAAu/+4AOf/uAmL/7gJj/+4CZP/uAmX/7gKy/+4C4f/uAuP/7gLl/+4C5//uAun/7gLr/+4Df//uBDP/7gQ1/+4ARwAGABAACwAQAEf/6ABI/+gASf/oAEv/6ABV/+gAk//oAJj/6AC6/+gAx//oAMj/6AD2/+gBAv/oAR3/6AEh/+gBOf/oAUv/6AFM/+gBVv/oAWwAEAFtABABbwAQAXAAEAFxABACbv/oAm//6AJw/+gCcf/oAnL/6AKK/+gCjP/oAo7/6AKQ/+gCkv/oApT/6AKW/+gCmP/oApr/6AKc/+gCnv/oAqD/6AKi/+gCpP/oA2v/6AOR/+gDlf/oA5j/6AOoABADqQAQA6wAEAOz/+gDuf/oA77/6APM/+gDzv/oA8//6APb/+gD7P/oBAj/6AQK/+gEDP/oBA7/6AQQ/+gEEv/oBBT/6AQW/+gEKv/oBCz/6AQu/+gEMv/oAAEAVgAEAAAAJgCmAZwB+gIUAlYCzAPCBLgFkgYsCMYKjAteDFQOGg5MDn4O/BDiEVgSKhRMFQIWaBciF6gYBhjIGT4ewBlQGqIc4B0CHhgelh7AHuoAAQAmAE8AWABbAF8AnAC0ALYAtwC4AL8AwgDDAMQAyQDLAMwAzQDRANUA1wDYANoA4gDmAOcA6ADpAOoA7ADuAPAA9QD3APoA/wECASEBbQA9AEf/7ABI/+wASf/sAEv/7ABV/+wAk//sAJj/7AC6/+wAx//sAMj/7AD2/+wBAv/sAR3/7AEh/+wBOf/sAUv/7AFM/+wBVv/sAm7/7AJv/+wCcP/sAnH/7AJy/+wCiv/sAoz/7AKO/+wCkP/sApL/7AKU/+wClv/sApj/7AKa/+wCnP/sAp7/7AKg/+wCov/sAqT/7ANr/+wDkf/sA5X/7AOY/+wDs//sA7n/7AO+/+wDzP/sA87/7APP/+wD2//sA+z/7AQI/+wECv/sBAz/7AQO/+wEEP/sBBL/7AQU/+wEFv/sBCr/7AQs/+wELv/sBDL/7AAXAFP/7AEX/+wCeP/sAnn/7AJ6/+wCe//sAnz/7ALG/+wCyP/sAsr/7ANx/+wDd//sA5P/7APZ/+wD3f/sBBz/7AQe/+wEIP/sBCL/7AQk/+wEJv/sBCj/7AQw/+wABgAQ/4QAEv+EAW7/hAFy/4QBdv+EAXf/hAAQAC7/7AA5/+wCYv/sAmP/7AJk/+wCZf/sArL/7ALh/+wC4//sAuX/7ALn/+wC6f/sAuv/7AN//+wEM//sBDX/7AAdAAb/8gAL//IAWv/zAF3/8wC8//MBGf/zAWz/8gFt//IBb//yAXD/8gFx//ICgf/zAoL/8wLw//MDc//zA5b/8wOf//MDp//zA6j/8gOp//IDrP/yA7j/8wPA//MD4f/zA+P/8wPl//MEQv/zBET/8wRG//MAPQAn//MAK//zADP/8wA1//MAg//zAJL/8wCX//MAsv/zANL/8wEH//MBFv/zARr/8wEc//MBHv/zASD/8wE4//MBVf/zAij/8wIp//MCK//zAiz/8wJT//MCXf/zAl7/8wJf//MCYP/zAmH/8wKJ//MCi//zAo3/8wKP//MCnf/zAp//8wKh//MCo//zAsX/8wLH//MCyf/zAvr/8wNX//MDZP/zA4r/8wON//MDuv/zA73/8wPY//MD2v/zA9z/8wQb//MEHf/zBB//8wQh//MEI//zBCX/8wQn//MEKf/zBCv/8wQt//MEL//zBDH/8wSq//MAPQAn/+YAK//mADP/5gA1/+YAg//mAJL/5gCX/+YAsv/mANL/5gEH/+YBFv/mARr/5gEc/+YBHv/mASD/5gE4/+YBVf/mAij/5gIp/+YCK//mAiz/5gJT/+YCXf/mAl7/5gJf/+YCYP/mAmH/5gKJ/+YCi//mAo3/5gKP/+YCnf/mAp//5gKh/+YCo//mAsX/5gLH/+YCyf/mAvr/5gNX/+YDZP/mA4r/5gON/+YDuv/mA73/5gPY/+YD2v/mA9z/5gQb/+YEHf/mBB//5gQh/+YEI//mBCX/5gQn/+YEKf/mBCv/5gQt/+YEL//mBDH/5gSq/+YANgAl/+QAPP/SAD3/0wCx/+QAs//kANn/0gEM/+QCTP/kAk3/5AJO/+QCT//kAlD/5AJR/+QCUv/kAmb/0wKD/+QChf/kAof/5ALv/9MC8f/TA1P/5ANY/9MDW//kA2f/0wNo/9IDav/TA4P/5AOP/9IDpv/TA6//5AO//9MDwv/SA8X/5APH/+QD0P/SA+r/0gPv/+QD8f/kA/P/5AP1/+QD9//kA/n/5AP7/+QD/f/kA///5AQB/+QEA//kBAX/5ARB/9MEQ//TBEX/0wRP/9IEV//SBGr/0wAmABD/HgAS/x4AJf/NALH/zQCz/80BDP/NAW7/HgFy/x4Bdv8eAXf/HgJM/80CTf/NAk7/zQJP/80CUP/NAlH/zQJS/80Cg//NAoX/zQKH/80DU//NA1v/zQOD/80Dr//NA8X/zQPH/80D7//NA/H/zQPz/80D9f/NA/f/zQP5/80D+//NA/3/zQP//80EAf/NBAP/zQQF/80ApgBH/9wASP/cAEn/3ABL/9wAUf/zAFL/8wBT/9YAVP/zAFX/3ABZ/90AWv/hAF3/4QCT/9wAmP/cAJr/3QC6/9wAvP/hAMD/8wDH/9wAyP/cAMr/3QDr//MA7//zAPD/8wDy//MA8//zAPT/8wD2/9wA9//zAPn/8wD6//MA/f/zAP//8wEC/9wBBP/zARf/1gEZ/+EBHf/cASH/3AE1//MBOf/cAUT/8wFJ//MBS//cAUz/3AFW/9wCbv/cAm//3AJw/9wCcf/cAnL/3AJ3//MCeP/WAnn/1gJ6/9YCe//WAnz/1gJ9/90Cfv/dAn//3QKA/90Cgf/hAoL/4QKK/9wCjP/cAo7/3AKQ/9wCkv/cApT/3AKW/9wCmP/cApr/3AKc/9wCnv/cAqD/3AKi/9wCpP/cAr//8wLB//MCw//zAsT/8wLG/9YCyP/WAsr/1gLi/90C5P/dAub/3QLo/90C6v/dAuz/3QLw/+EDa//cA23/8wNv/90Dcf/WA3P/4QN2/90Dd//WA3j/3QOR/9wDkv/zA5P/1gOU//MDlf/cA5b/4QOY/9wDmf/zA57/8wOf/+EDp//hA67/8wOz/9wDtP/zA7j/4QO5/9wDvv/cA8D/4QPM/9wDzv/cA8//3APV//MD1//zA9n/1gPb/9wD3f/WA+H/4QPj/+ED5f/hA+n/8wPs/9wECP/cBAr/3AQM/9wEDv/cBBD/3AQS/9wEFP/cBBb/3AQc/9YEHv/WBCD/1gQi/9YEJP/WBCb/1gQo/9YEKv/cBCz/3AQu/9wEMP/WBDL/3AQ0/90ENv/dBDj/3QQ6/90EPP/dBD7/3QRA/90EQv/hBET/4QRG/+EESv/zBEz/8wRW//MEY//zBGX/8wRn//MAcQAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAk//wAJj/8ACa/+8Auv/wALz/3ADH//AAyP/wAMr/7wD2//ABAv/wARn/3AEd//ABIf/wATn/8AFL//ABTP/wAVb/8AFs/9oBbf/aAW//2gFw/9oBcf/aAm7/8AJv//ACcP/wAnH/8AJy//ACff/vAn7/7wJ//+8CgP/vAoH/3AKC/9wCiv/wAoz/8AKO//ACkP/wApL/8AKU//AClv/wApj/8AKa//ACnP/wAp7/8AKg//ACov/wAqT/8ALi/+8C5P/vAub/7wLo/+8C6v/vAuz/7wLw/9wDa//wA2//7wNz/9wDdv/vA3j/7wOR//ADlf/wA5b/3AOY//ADn//cA6f/3AOo/9oDqf/aA6z/2gOz//ADuP/cA7n/8AO+//ADwP/cA8z/8APO//ADz//wA9v/8APh/9wD4//cA+X/3APs//AECP/wBAr/8AQM//AEDv/wBBD/8AQS//AEFP/wBBb/8AQq//AELP/wBC7/8AQy//AENP/vBDb/7wQ4/+8EOv/vBDz/7wQ+/+8EQP/vBEL/3ARE/9wERv/cADQABv+gAAv/oABZ//EAWv/FAF3/xQCa//EAvP/FAMr/8QEZ/8UBbP+gAW3/oAFv/6ABcP+gAXH/oAJ9//ECfv/xAn//8QKA//ECgf/FAoL/xQLi//EC5P/xAub/8QLo//EC6v/xAuz/8QLw/8UDb//xA3P/xQN2//EDeP/xA5b/xQOf/8UDp//FA6j/oAOp/6ADrP+gA7j/xQPA/8UD4f/FA+P/xQPl/8UENP/xBDb/8QQ4//EEOv/xBDz/8QQ+//EEQP/xBEL/xQRE/8UERv/FAD0AR//nAEj/5wBJ/+cAS//nAFX/5wCT/+cAmP/nALr/5wDH/+cAyP/nAPb/5wEC/+cBHf/nASH/5wE5/+cBS//nAUz/5wFW/+cCbv/nAm//5wJw/+cCcf/nAnL/5wKK/+cCjP/nAo7/5wKQ/+cCkv/nApT/5wKW/+cCmP/nApr/5wKc/+cCnv/nAqD/5wKi/+cCpP/nA2v/5wOR/+cDlf/nA5j/5wOz/+cDuf/nA77/5wPM/+cDzv/nA8//5wPb/+cD7P/nBAj/5wQK/+cEDP/nBA7/5wQQ/+cEEv/nBBT/5wQW/+cEKv/nBCz/5wQu/+cEMv/nAHEABgAMAAsADABH/+gASP/oAEn/6ABL/+gAU//qAFX/6ABaAAsAXQALAJP/6ACY/+gAuv/oALwACwDH/+gAyP/oAPb/6AEC/+gBF//qARkACwEd/+gBIf/oATn/6AFL/+gBTP/oAVb/6AFsAAwBbQAMAW8ADAFwAAwBcQAMAm7/6AJv/+gCcP/oAnH/6AJy/+gCeP/qAnn/6gJ6/+oCe//qAnz/6gKBAAsCggALAor/6AKM/+gCjv/oApD/6AKS/+gClP/oApb/6AKY/+gCmv/oApz/6AKe/+gCoP/oAqL/6AKk/+gCxv/qAsj/6gLK/+oC8AALA2v/6ANx/+oDcwALA3f/6gOR/+gDk//qA5X/6AOWAAsDmP/oA58ACwOnAAsDqAAMA6kADAOsAAwDs//oA7gACwO5/+gDvv/oA8AACwPM/+gDzv/oA8//6APZ/+oD2//oA93/6gPhAAsD4wALA+UACwPs/+gECP/oBAr/6AQM/+gEDv/oBBD/6AQS/+gEFP/oBBb/6AQc/+oEHv/qBCD/6gQi/+oEJP/qBCb/6gQo/+oEKv/oBCz/6AQu/+gEMP/qBDL/6ARCAAsERAALBEYACwAMAFz/7QBe/+0A7f/tAvP/7QL1/+0C9//tA5f/7QPD/+0D0f/tA+v/7QRQ/+0EWP/tAAwAXP/yAF7/8gDt//IC8//yAvX/8gL3//IDl//yA8P/8gPR//ID6//yBFD/8gRY//IAHwBa//QAXP/yAF3/9ABe//MAvP/0AO3/8gEZ//QCgf/0AoL/9ALw//QC8//zAvX/8wL3//MDc//0A5b/9AOX//IDn//0A6f/9AO4//QDwP/0A8P/8gPR//ID4f/0A+P/9APl//QD6//yBEL/9ARE//QERv/0BFD/8gRY//IAeQAG/8oAC//KADj/0gA6/9QAPP/0AD3/0wBR/9EAUv/RAFT/0QBa/+YAXP/vAF3/5gC8/+YAwP/RANH/0gDV/9IA2f/0AN3/7QDg/+EA6//RAO3/7wDv/9EA8P/RAPL/0QDz/9EA9P/RAPf/0QD5/9EA+v/RAP3/0QD//9EBBP/RARj/1AEZ/+YBMv/SATX/0QE6/9IBRP/RAUn/0QFs/8oBbf/KAW//ygFw/8oBcf/KAmb/0wJ3/9ECgf/mAoL/5gK//9ECwf/RAsP/0QLE/9EC2//SAt3/0gLf/9IC7//TAvD/5gLx/9MDWP/TA2f/0wNo//QDav/TA23/0QNz/+YDgv/tA47/0gOP//QDkv/RA5T/0QOW/+YDl//vA5n/0QOe/9EDn//mA6b/0wOn/+YDqP/KA6n/ygOs/8oDrv/RA7T/0QO3/9QDuP/mA7//0wPA/+YDwv/0A8P/7wPQ//QD0f/vA9X/0QPX/9ED4P/tA+H/5gPi/+0D4//mA+T/7QPl/+YD5v/hA+n/0QPq//QD6//vBEH/0wRC/+YEQ//TBET/5gRF/9MERv/mBEr/0QRM/9EETf/SBE//9ARQ/+8EUf/hBFP/4QRW/9EEV//0BFj/7wRj/9EEZf/RBGf/0QRq/9MAHQA4/74AWv/vAF3/7wC8/+8A0f++ANX/vgEZ/+8BMv++ATr/vgKB/+8Cgv/vAtv/vgLd/74C3/++AvD/7wNz/+8Djv++A5b/7wOf/+8Dp//vA7j/7wPA/+8D4f/vA+P/7wPl/+8EQv/vBET/7wRG/+8ETf++ADQAOP/mADr/5wA8//IAPf/nAFz/8QDR/+YA1f/mANn/8gDd/+4A4P/oAO3/8QEY/+cBMv/mATr/5gJm/+cC2//mAt3/5gLf/+YC7//nAvH/5wNY/+cDZ//nA2j/8gNq/+cDgv/uA47/5gOP//IDl//xA6b/5wO3/+cDv//nA8L/8gPD//ED0P/yA9H/8QPg/+4D4v/uA+T/7gPm/+gD6v/yA+v/8QRB/+cEQ//nBEX/5wRN/+YET//yBFD/8QRR/+gEU//oBFf/8gRY//EEav/nAIgAJQAQACf/6AAr/+gAM//oADX/6AA4/+AAOv/gAD3/3wCD/+gAkv/oAJf/6ACxABAAsv/oALMAEADR/+AA0v/oANMAEADV/+AA3AAQAOD/4QDxABAA+P/gAQMAEAEH/+gBDAAQARb/6AEY/+ABGv/oARz/6AEe/+gBIP/oATL/4AE4/+gBOv/gAVEAEAFV/+gCKP/oAin/6AIr/+gCLP/oAkwAEAJNABACTgAQAk8AEAJQABACUQAQAlIAEAJT/+gCXf/oAl7/6AJf/+gCYP/oAmH/6AJm/98CgwAQAoUAEAKHABACif/oAov/6AKN/+gCj//oAp3/6AKf/+gCof/oAqP/6ALF/+gCx//oAsn/6ALb/+AC3f/gAt//4ALv/98C8f/fAvr/6ANTABADV//oA1j/3wNbABADZP/oA2f/3wNq/98DgwAQA4r/6AON/+gDjv/gA6b/3wOvABADt//gA7r/6AO9/+gDv//fA8UAEAPHABAD2P/oA9r/6APc/+gD5v/hA+f/4APtABAD7gAQA+8AEAPxABAD8wAQA/UAEAP3ABAD+QAQA/sAEAP9ABAD/wAQBAEAEAQDABAEBQAQBBv/6AQd/+gEH//oBCH/6AQj/+gEJf/oBCf/6AQp/+gEK//oBC3/6AQv/+gEMf/oBEH/3wRD/98ERf/fBE3/4ARR/+EEUv/gBFP/4QRU/+AEaAAQBGkAEARq/98Eqv/oAC0AOP/xADr/9AA8//QAPf/wANH/8QDT//UA1f/xANn/9ADc//UA3f/zARj/9AEy//EBOv/xAVH/9QJm//AC2//xAt3/8QLf//EC7//wAvH/8ANY//ADZ//wA2j/9ANq//ADgv/zA47/8QOP//QDpv/wA7f/9AO///ADwv/0A9D/9APg//MD4v/zA+T/8wPq//QD7f/1BEH/8ARD//AERf/wBE3/8QRP//QEV//0BGj/9QRq//AAWQAlAA8AOP/mADr/5gA8AA4APf/mALEADwCzAA8A0f/mANMADgDV/+YA2QAOANwADgDdAAsA4P/lAPEADwD4/+gBAwAPAQwADwEY/+YBMv/mATr/5gFRAA4CTAAPAk0ADwJOAA8CTwAPAlAADwJRAA8CUgAPAmb/5gKDAA8ChQAPAocADwLb/+YC3f/mAt//5gLv/+YC8f/mA1MADwNY/+YDWwAPA2f/5gNoAA4Dav/mA4IACwODAA8Djv/mA48ADgOm/+YDrwAPA7f/5gO//+YDwgAOA8UADwPHAA8D0AAOA+AACwPiAAsD5AALA+b/5QPn/+gD6gAO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ABADogOiABADpAOkABADpgOmAA8DpwOnABkDqAOpAB0DrAOsAB0DrQOtAAIDrgOuABcDsAOwABMDsQOxAAUDswOzABYDtwO3AA0DuAO4ABkDvQO9AAQDvgO+ABQDvwO/AA8DwAPAABkDwQPBAAIDwgPCAA4DwwPDABsDxAPEAAIDxgPGABMDyAPIABMDywPLAAUDzAPMABYDzgPPABYD0APQAA4D0QPRABsD2APYAAMD2QPZABgD3QPdABgD3wPfABUD4APgABID4QPhABkD4gPiABID4wPjABkD5APkABID5QPlABkD6gPqAA4D6wPrABsD8APwABMD8gPyABMD9AP0ABMD9gP2ABMD+AP4ABMD+gP6ABMD/AP8ABMD/gP+ABMEAAQAABMEAgQCABMEBAQEABMEBgQGABMEBwQHAAUECAQIABYECQQJAAUECgQKABYECwQLAAUEDAQMABYEDQQNAAUEDgQOABYEDwQPAAUEEAQQABYEEQQRAAUEEgQSABYEEwQTAAUEFAQUABYEFQQVAAUEFgQWABYEFwQXAAIEGQQZAAIEGwQbAAMEHAQcABgEHQQdAAMEHgQeABgEHwQfAAMEIAQgABgEIQQhAAMEIgQiABgEIwQjAAMEJAQkABgEJQQlAAMEJgQmABgEJwQnAAMEKAQoABgEMAQwABgEMwQzAAwENQQ1AAwEQQRBAA8EQgRCABkEQwRDAA8ERAREABkERQRFAA8ERgRGABkESQRJAAkESwRLAAIETQRNAAYETwRPAA4EUARQABsEVQRVAAcEVgRWAAgEVwRXAA4EWARYABsEWwRbABcEXQRdAB8EXgReAAcEYARgAAkEZARkAAIEZgRmAAIEagRqAA8EqgSqAAMAAgFtAAYABgAHAAsACwAHABAAEAATABEAEQAXABIAEgATACUAJQARACcAJwAFACsAKwAFAC4ALgAcADMAMwAFADUANQAFADcANwAZADgAOAAKADkAOQAGADoAOgANADsAOwAJADwAPAASAD0APQAOAD4APgAUAEUARQAaAEcASQAVAEsASwAVAFEAUgAYAFMAUwAIAFQAVAAYAFUAVQAVAFcAVwAbAFkAWQALAFoAWgACAFwAXAAWAF0AXQACAF4AXgAMAIMAgwAFAJIAkgAFAJMAkwAVAJcAlwAFAJgAmAAVAJoAmgALALEAsQAR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b20EbGRub20EbGRub20EbGZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmZyYWMEcmxpZ2EEfGxpZ2EEhGxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxudW0EimxvY2wEkGxvY2wElmxvY2wEnG51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom51bXIEom9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqG9udW0EqHBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnBudW0ErnNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNtY3AEtHNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDEEunNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDIEwHNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDMExnNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDQEzHNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDUE0nNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDYE2HNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nNzMDcE3nRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5HRudW0E5AAAAAEAAAAAAAIAAgADAAAAAQAHAAAAAQAYAAAAAwAVABYAFwAAAAIACAAJAAAAAQAJAAAAAQAUAAAAAQAEAAAAAQAGAAAAAQAFAAAAAQAZAAAAAQARAAAAAQATAAAAAQABAAAAAQAKAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQASABsAOAPGBrQHYA3wDfAOBg4oDl4OhA6yDsYO2g7uDwAPGg9cD3oPmA/KD/wQLhBCEHoQbBB6EKYAAQAAAAEACAACAcQA3wHnAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHoAekCRAI7AeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQTdAgICAwIEAgUCBgIHAggCCQIKAgsCLwIPAhACEQIUAhUCFgIXAhgCGQIbAhwCHgIdAvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYB/wTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNgE2QTbAhoE3AIOBNcCEwINBNoCDAISAAEA3wAIACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgBlAGcAhQCSALAAsQCyALMAtAC1ALYAtwC4ALkA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgBLAEwATIBOAE6ATwBPgE/AUUBRgF/AYUBigGNAkcCSAJKAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAoMChQKHAokCiwKNAo8CkQKTApUClwKZApsCnQKfAqECowKlAqcCqQKrAq0CrwKyArQCtgK4AroCvAK+AsACwgLFAscCyQLLAs0CzwLRAtMC1QLZAtsC3QLfAuEC4wLlAucC6QLrAu0C7wLxAvIC9AL2A1MDVANVA1YDVwNYA1kDWwNcA10DXgNfA2ADYQNiA2QDZQNmA2cDaANpA2oDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwO7A70DvwPUA9oD4ARJBEsETwRXBFkEXgRqAAEAAAABAAgAAgF0ALcBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAv0DMAI7AfoEygTLAfsB/AH9Af4B/wIABM4EzwTRBNQE3QICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5Ai8CDwIQAhECFAIVAhcCGQL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZA08DGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRgNFA0cDSANJA0oDSwNMA00DTgNQA1EDUgTJBMwEzQTQBNIE0wIBBNUEwQTCBMMExATFBMYExwTIBNYE2ATZAhgE2wIaBNwC/AIOBNcCEwINBNoCFgIMAhIAAQC3AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgCHAIwAkwDpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEtATEBMwE5ATsBPQFAAUcCSwJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoQChgKIAooCjAKOApACkgKUApYCmAKaApwCngKgAqICpAKmAqgCqgKsAq4CswK1ArcCuQK7Ar0CvwLBAsMCxgLIAsoCzALOAtAC0gLUAtYC2gLcAt4C4ALiAuQC5gLoAuoC7ALuAvAC8wL1AvcDkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwO8A74DwAPOA9UD2wPhBEcESgRMBFAEWARaBFsEXwRrAAYAAAAGABIAKgBCAFoAcgCKAAMAAAABABIAAQCQAAEAAAAaAAEAAQBNAAMAAAABABIAAQB4AAEAAAAaAAEAAQBOAAMAAAABABIAAQBgAAEAAAAaAAEAAQKuAAMAAAABABIAAQBIAAEAAAAaAAEAAQObAAMAAAABABIAAQAwAAEAAAAaAAEAAQOdAAMAAAABABIAAQAYAAEAAAAaAAEAAQQaAAIAAQCnAKsAAAAEAAAAAQAIAAEGHgA2AHIApACuALgAygD8AQ4BGAFKAWQBfgGQAboB7AH2AhgCMgJEAnYCiAKiAswC3gMQAxoDJAM2A2gDcgN8A4YDoAO6A8wD9gQoBDIEVARuBIAEsgTEBN4FCAUaBSQFLgU4BUIFbAWWBcAF6gYUAAYADgAUABoAIAAmACwCTAACAKcCTQACAKgCTwACAKkD8QACAKoEewACAKsD7wACAKwAAQAEBIgAAgCsAAEABAKJAAIAqAACAAYADASKAAIArASMAAIBogAGAA4AFAAaACAAJgAsAlQAAgCnAlUAAgCoBAsAAgCpBAkAAgCqBH0AAgCrBAcAAgCsAAIABgAMBHcAAgCoAqMAAgGiAAEABASOAAIArAAGAA4AFAAaACAAJgAsAlgAAgCnAlkAAgCoAqcAAgCpBBcAAgCqBH8AAgCrBBkAAgCsAAMACAAOABQEkAACAKgEkgACAKwCtAACAaIAAwAIAA4AFAK2AAIAqASUAAIArAK4AAIBogACAAYADAOtAAIAqASWAAIArAAFAAwAEgAYAB4AJAR5AAIApwK+AAIAqAJcAAIAqQSYAAIArALAAAIBogAGAA4AFAAaACAAJgAsAl0AAgCnAl4AAgCoAmAAAgCpBB0AAgCqBIEAAgCrBBsAAgCsAAEABASaAAIAqAAEAAoAEAAWABwCywACAKgEgwACAKsEnAACAKwCzQACAaIAAwAIAA4AFALRAAIAqASeAAIArALXAAIBogACAAYADASgAAIArALbAAIBogAGAA4AFAAaACAAJgAsAmIAAgCnAmMAAgCoAuEAAgCpBDUAAgCqBIUAAgCrBDMAAgCsAAIABgAMBKIAAgCpBKQAAgCsAAMACAAOABQDoAACAKcDogACAKgEpgACAKwABQAMABIAGAAeACQDpgACAKcCZgACAKgERQACAKkEQwACAKoEQQACAKwAAgAGAAwC8gACAKgEqAACAKwABgAOABQAGgAgACYALAJnAAIApwJoAAIAqAJqAAIAqQPyAAIAqgR8AAIAqwPwAAIArAABAAQEiQACAKwAAQAEAooAAgCoAAIABgAMBIsAAgCsBI0AAgGiAAYADgAUABoAIAAmACwCbwACAKcCcAACAKgEDAACAKkECgACAKoEfgACAKsECAACAKwAAQAEBHgAAgCoAAEABASPAAIArAABAAQEGgACAKwAAwAIAA4AFASRAAIAqASTAAIArAK1AAIBogADAAgADgAUArcAAgCoBJUAAgCsArkAAgGiAAIABgAMA64AAgCoBJcAAgCsAAUADAASABgAHgAkBHoAAgCnAr8AAgCoAncAAgCpBJkAAgCsAsEAAgGiAAYADgAUABoAIAAmACwCeAACAKcCeQACAKgCewACAKkEHgACAKoEggACAKsEHAACAKwAAQAEBJsAAgCoAAQACgAQABYAHALMAAIAqASEAAIAqwSdAAIArALOAAIBogADAAgADgAUAtIAAgCoBJ8AAgCsAtgAAgGiAAIABgAMBKEAAgCsAtwAAgGiAAYADgAUABoAIAAmACwCfQACAKcCfgACAKgC4gACAKkENgACAKoEhgACAKsENAACAKwAAgAGAAwEowACAKkEpQACAKwAAwAIAA4AFAOhAAIApwOjAAIAqASnAAIArAAFAAwAEgAYAB4AJAOnAAIApwKBAAIAqARGAAIAqQREAAIAqgRCAAIArAACAAYADALzAAIAqASpAAIArAABAAQC+AACAKgAAQAEAvoAAgCoAAEABAL5AAIAqAABAAQC+wACAKgABQAMABIAGAAeACQCcwACAKcCdAACAKgCqAACAKkEGAACAKoEgAACAKsABQAMABIAGAAeACQEKwACAKcEKQACAKgELwACAKkELQACAKoEMQACAKwABQAMABIAGAAeACQELAACAKcEKgACAKgEMAACAKkELgACAKoEMgACAKwABQAMABIAGAAeACQEOQACAKcENwACAKgEPQACAKkEOwACAKoEPwACAKwABQAMABIAGAAeACQEOgACAKcEOAACAKgEPgACAKkEPAACAKoEQAACAKwAAQAEBIcAAgCoAAIAEQAlACkAAAArAC0ABQAvADQACAA2ADsADgA9AD4AFABFAEkAFgBLAE0AGwBPAFQAHgBWAFsAJABdAF4AKgCBAIEALACDAIMALQCGAIYALgCJAIkALwCMAIwAMACXAJoAMQDPAM8ANQABAAAAAQAIAAEABgACAAEAAgLVAtYAAQAAAAEACAACAA4ABATeBN8E4AThAAEABAKHAogCmQKaAAQAAAABAAgAAQAmAAIACgAcAAIABgAMAaMAAgBKAagAAgBYAAEABAGpAAIAWAABAAIASgBXAAQAAAABAAgAAQBEAAIACgAUAAEABAGkAAIATQABAAQBpgACAE0ABAAAAAEACAABAB4AAgAKABQAAQAEAaUAAgBQAAEABAGnAAIAUAABAAIASgGjAAEAAAABAAgAAQAGAZUAAQABAEsAAQAAAAEACAABAAYBJwABAAEAugABAAAAAQAIAAEABgGsAAEAAQA2AAEAAAABAAgAAgAcAAIB4wHkAAEAAAABAAgAAgAKAAIB5QHmAAEAAgAvAE8AAQAAAAEACAACAB4ADAIoAioCKQIrAiwCHwIgAiECIgGuAiQCJQABAAwAJwAoACsAMwA1AEYARwBIAEsAUwBUAFUAAQAAAAEACAACAAwAAwImAicCJwABAAMASQBLAiIAAQAAAAEACAACAGYACAI9Ai0CLgIwAjECOQI6AjwAAQAAAAEACAACABYACAAbABUAFgAXABgAGQAdABQAAQAIAa0CIwRxBHIEcwR0BHUEdgABAAAAAQAIAAIAFgAIBHYCIwRxBHIEcwR0Aa0EdQABAAgAFAAVABYAFwAYABkAGwAdAAEAAAABAAgAAgAWAAgAFQAWABcAGAAZABsAHQAUAAEACAItAi4CMAIxAjkCOgI8Aj0AAQAAAAEACAABAAYBaQABAAEAEwAGAAAAAQAIAAMAAQASAAEAUgAAAAEAAAAaAAIAAgF8AXwAAAHUAd0AAQABAAAAAQAIAAEAKAHAAAEAAAABAAgAAgAaAAoCMgB6AHMAdAIzAjQCNQI2AjcCOAACAAEAFAAdAAAAAQAAAAEACAACACYAEAHUAdUB1gHXAdgB2QHaAdsB3AHdAkACPgJBAkICPwJDAAEAEAAUABUAFgAXABgAGQAaABsAHAAdAE0ATgKuA5sDnQQa", "sampleImage.jpg": "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AAGyAAAAEAAAAAEAAAAAABJwcmludE91dHB1dE9wdGlvbnMAAAASAAAAAENwdG5ib29sAAAAAABDbGJyYm9vbAAAAAAAUmdzTWJvb2wAAAAAAENybkNib29sAAAAAABDbnRDYm9vbAAAAAAATGJsc2Jvb2wAAAAAAE5ndHZib29sAAAAAABFbWxEYm9vbAAAAAAASW50cmJvb2wAAAAAAEJja2dPYmpjAAAAAQAAAAAAAFJHQkMAAAADAAAAAFJkICBkb3ViQG/gAAAAAAAAAAAAR3JuIGRvdWJAb+AAAAAAAAAAAABCbCAgZG91YkBv4AAAAAAAAAAAAEJyZFRVbnRGI1JsdAAAAAAAAAAAAAAAAEJsZCBVbnRGI1JsdAAAAAAAAAAAAAAAAFJzbHRVbnRGI1B4bEBSAAAAAAAAAAAACnZlY3RvckRhdGFib29sAQAAAABQZ1BzZW51bQAAAABQZ1BzAAAAAFBnUEMAAAAATGVmdFVudEYjUmx0AAAAAAAAAAAAAAAAVG9wIFVudEYjUmx0AAAAAAAAAAAAAAAAU2NsIFVudEYjUHJjQFkAAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAgBIAAAAAQACOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAB4OEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgABOEJJTQQCAAAAAAAEAAAAADhCSU0EMAAAAAAAAgEBOEJJTQQtAAAAAAAGAAEAAAACOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0sAAAAGAAAA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aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTQtMDMtMTlUMDM6MDI6MjYrMDE6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDI4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE4NzFGODEzMUZCNkU2ODk4IiBzdEV2dDp3aGVuPSIyMDE0LTAzLTE5VDAzOjAyOjI2KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMjgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgc3RFdnQ6d2hlbj0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAA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" }; /*! pdfmake v0.1.32, @license MIT, @link http://pdfmake.org */ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){(function(e){t.exports=e.pdfMake=n(1)}).call(e,function(){return this}())},function(t,e,n){(function(e,r){"use strict";function i(t,e,n,r){this.docDefinition=t,this.tableLayouts=e||null,this.fonts=n||l,this.vfs=r}function o(){return!!Object.keys}var a=n(6),s=n(300),u=s.saveAs,l={Roboto:{normal:"Roboto-Regular.ttf",bold:"Roboto-Medium.ttf",italics:"Roboto-Italic.ttf",bolditalics:"Roboto-MediumItalic.ttf"}};i.prototype._createDoc=function(t,n){t=t||{},this.tableLayouts&&(t.tableLayouts=this.tableLayouts);var r=new a(this.fonts);r.fs.bindFS(this.vfs);var i,o=r.createPdfKitDocument(this.docDefinition,t),s=[];o.on("readable",function(){for(var t;null!==(t=o.read(9007199254740991));)s.push(t)}),o.on("end",function(){i=e.concat(s),n(i,o._pdfMakePages)}),o.end()},i.prototype._getPages=function(t,e){if(!e)throw"_getPages is an async method and needs a callback argument";this._createDoc(t,function(t,n){e(n)})},i.prototype._bufferToBlob=function(t){var e;try{e=new Blob([t],{type:"application/pdf"})}catch(r){if("InvalidStateError"===r.name){var n=new Uint8Array(t);e=new Blob([n.buffer],{type:"application/pdf"})}}if(!e)throw"Could not generate blob";return e},i.prototype._openWindow=function(){var t=r.open("","_blank");if(null===t)throw"Open PDF in new window blocked by browser";return t},i.prototype._openPdf=function(t,e){e||(e=this._openWindow());try{this.getBlob(function(t){var n=r.URL||r.webkitURL,i=n.createObjectURL(t);e.location.href=i},t)}catch(t){throw e.close(),t}},i.prototype.open=function(t,e){t=t||{},t.autoPrint=!1,e=e||null,this._openPdf(t,e)},i.prototype.print=function(t,e){t=t||{},t.autoPrint=!0,e=e||null,this._openPdf(t,e)},i.prototype.download=function(t,e,n){"function"==typeof t&&(e=t,t=null),t=t||"file.pdf",this.getBlob(function(n){u(n,t),"function"==typeof e&&e()},n)},i.prototype.getBase64=function(t,e){if(!t)throw"getBase64 is an async method and needs a callback argument";this.getBuffer(function(e){t(e.toString("base64"))},e)},i.prototype.getDataUrl=function(t,e){if(!t)throw"getDataUrl is an async method and needs a callback argument";this.getBuffer(function(e){t("data:application/pdf;base64,"+e.toString("base64"))},e)},i.prototype.getBlob=function(t,e){if(!t)throw"getBlob is an async method and needs a callback argument";var n=this;this.getBuffer(function(e){var r=n._bufferToBlob(e);t(r)},e)},i.prototype.getBuffer=function(t,e){if(!t)throw"getBuffer is an async method and needs a callback argument";this._createDoc(e,function(e){t(e)})},t.exports={createPdf:function(t){if(!o())throw"Your browser does not provide the level of support needed";return new i(t,r.pdfMake.tableLayouts,r.pdfMake.fonts,r.pdfMake.vfs)}}}).call(e,n(2).Buffer,function(){return this}())},function(t,e,n){(function(t){"use strict";function r(){return o.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function i(t,e){if(r()<e)throw new RangeError("Invalid typed array length");return o.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=o.prototype):(null===t&&(t=new o(e)),t.length=e),t}function o(t,e,n){if(!(o.TYPED_ARRAY_SUPPORT||this instanceof o))return new o(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return l(this,t)}return a(this,t,e,n)}function a(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?h(t,e,n,r):"string"==typeof e?c(t,e,n):p(t,e)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function u(t,e,n,r){return s(e),e<=0?i(t,e):void 0!==n?"string"==typeof r?i(t,e).fill(n,r):i(t,e).fill(n):i(t,e)}function l(t,e){if(s(e),t=i(t,e<0?0:0|d(e)),!o.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function c(t,e,n){if("string"==typeof n&&""!==n||(n="utf8"),!o.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|y(e,n);t=i(t,r);var a=t.write(e,n);return a!==r&&(t=t.slice(0,a)),t}function f(t,e){var n=e.length<0?0:0|d(e.length);t=i(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function h(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r),o.TYPED_ARRAY_SUPPORT?(t=e,t.__proto__=o.prototype):t=f(t,e),t}function p(t,e){if(o.isBuffer(e)){var n=0|d(e.length);return t=i(t,n),0===t.length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||X(e.length)?i(t,0):f(t,e);if("Buffer"===e.type&&Q(e.data))return f(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function d(t){if(t>=r())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r().toString(16)+" bytes");return 0|t}function g(t){return+t!=t&&(t=0),o.alloc(+t)}function y(t,e){if(o.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(t).length;default:if(r)return V(t).length;e=(""+e).toLowerCase(),r=!0}}function v(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,e>>>=0,n<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return B(this,e,n);case"utf8":case"utf-8":return E(this,e,n);case"ascii":return T(this,e,n);case"latin1":case"binary":return O(this,e,n);case"base64":return P(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function b(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function m(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=o.from(e,r)),o.isBuffer(e))return 0===e.length?-1:w(t,e,n,r,i);if("number"==typeof e)return e&=255,o.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):w(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function w(t,e,n,r,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,s=t.length,u=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,n/=2}var l;if(i){var c=-1;for(l=n;l<s;l++)if(o(t,l)===o(e,-1===c?0:l-c)){if(-1===c&&(c=l),l-c+1===u)return c*a}else-1!==c&&(l-=l-c),c=-1}else for(n+u>s&&(n=s-u),l=n;l>=0;l--){for(var f=!0,h=0;h<u;h++)if(o(t,l+h)!==o(e,h)){f=!1;break}if(f)return l}return-1}function x(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a<r;++a){var s=parseInt(e.substr(2*a,2),16);if(isNaN(s))return a;t[n+a]=s}return a}function _(t,e,n,r){return Y(V(e,t.length-n),t,n,r)}function k(t,e,n,r){return Y(H(e),t,n,r)}function S(t,e,n,r){return k(t,e,n,r)}function C(t,e,n,r){return Y(Z(e),t,n,r)}function A(t,e,n,r){return Y(q(e,t.length-n),t,n,r)}function P(t,e,n){return 0===e&&n===t.length?K.fromByteArray(t):K.fromByteArray(t.slice(e,n))}function E(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var o=t[i],a=null,s=o>239?4:o>223?3:o>191?2:1;if(i+s<=n){var u,l,c,f;switch(s){case 1:o<128&&(a=o);break;case 2:u=t[i+1],128==(192&u)&&(f=(31&o)<<6|63&u)>127&&(a=f);break;case 3:u=t[i+1],l=t[i+2],128==(192&u)&&128==(192&l)&&(f=(15&o)<<12|(63&u)<<6|63&l)>2047&&(f<55296||f>57343)&&(a=f);break;case 4:u=t[i+1],l=t[i+2],c=t[i+3],128==(192&u)&&128==(192&l)&&128==(192&c)&&(f=(15&o)<<18|(63&u)<<12|(63&l)<<6|63&c)>65535&&f<1114112&&(a=f)}}null===a?(a=65533,s=1):a>65535&&(a-=65536,r.push(a>>>10&1023|55296),a=56320|1023&a),r.push(a),i+=s}return I(r)}function I(t){var e=t.length;if(e<=$)return String.fromCharCode.apply(String,t);for(var n="",r=0;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=$));return n}function T(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function O(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function B(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",o=e;o<n;++o)i+=G(t[o]);return i}function L(t,e,n){for(var r=t.slice(e,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function M(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function R(t,e,n,r,i,a){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<a)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function F(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);i<o;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function z(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);i<o;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function D(t,e,n,r,i,o){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(t,e,n,r,i){return i||D(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(t,e,n,r,23,4),n+4}function U(t,e,n,r,i){return i||D(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(t,e,n,r,52,8),n+8}function W(t){if(t=j(t).replace(tt,""),t.length<2)return"";for(;t.length%4!=0;)t+="=";return t}function j(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function G(t){return t<16?"0"+t.toString(16):t.toString(16)}function V(t,e){e=e||1/0;for(var n,r=t.length,i=null,o=[],a=0;a<r;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function H(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}function q(t,e){for(var n,r,i,o=[],a=0;a<t.length&&!((e-=2)<0);++a)n=t.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}function Z(t){return K.toByteArray(W(t))}function Y(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function X(t){return t!==t}var K=n(3),J=n(4),Q=n(5);e.Buffer=o,e.SlowBuffer=g,e.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=r(),o.poolSize=8192,o._augment=function(t){return t.__proto__=o.prototype,t},o.from=function(t,e,n){return a(null,t,e,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(t,e,n){return u(null,t,e,n)},o.allocUnsafe=function(t){return l(null,t)},o.allocUnsafeSlow=function(t){return l(null,t)},o.isBuffer=function(t){return!(null==t||!t._isBuffer)},o.compare=function(t,e){if(!o.isBuffer(t)||!o.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},o.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(t,e){if(!Q(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return o.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=o.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var a=t[n];if(!o.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i),i+=a.length}return r},o.byteLength=y,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)b(this,e,e+1);return this},o.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)b(this,e,e+3),b(this,e+1,e+2);return this},o.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)b(this,e,e+7),b(this,e+1,e+6),b(this,e+2,e+5),b(this,e+3,e+4);return this},o.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?E(this,0,t):v.apply(this,arguments)},o.prototype.equals=function(t){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===o.compare(this,t)},o.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},o.prototype.compare=function(t,e,n,r,i){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,r>>>=0,i>>>=0,this===t)return 0;for(var a=i-r,s=n-e,u=Math.min(a,s),l=this.slice(r,i),c=t.slice(e,n),f=0;f<u;++f)if(l[f]!==c[f]){a=l[f],s=c[f];break}return a<s?-1:s<a?1:0},o.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},o.prototype.indexOf=function(t,e,n){return m(this,t,e,n,!0)},o.prototype.lastIndexOf=function(t,e,n){return m(this,t,e,n,!1)},o.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return x(this,t,e,n);case"utf8":case"utf-8":return _(this,t,e,n);case"ascii":return k(this,t,e,n);case"latin1":case"binary":return S(this,t,e,n);case"base64":return C(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;o.prototype.slice=function(t,e){var n=this.length;t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t);var r;if(o.TYPED_ARRAY_SUPPORT)r=this.subarray(t,e),r.__proto__=o.prototype;else{var i=e-t;r=new o(i,void 0);for(var a=0;a<i;++a)r[a]=this[a+t]}return r},o.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r},o.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},o.prototype.readUInt8=function(t,e){return e||M(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,e){return e||M(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,e){return e||M(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,e){return e||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,e){return e||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return i*=128,r>=i&&(r-=Math.pow(2,8*e)),r},o.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return e||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){e||M(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(t,e){e||M(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(t,e){return e||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return e||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,e){return e||M(t,4,this.length),J.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return e||M(t,4,this.length),J.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return e||M(t,8,this.length),J.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return e||M(t,8,this.length),J.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){R(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=1,o=0;for(this[e]=255&t;++o<n&&(i*=256);)this[e+o]=t/i&255;return e+n},o.prototype.writeUIntBE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){R(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=n-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+n},o.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,1,255,0),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},o.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},o.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},o.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):z(this,t,e,!0),e+4},o.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):z(this,t,e,!1),e+4},o.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);R(this,t,e,n,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o<n&&(a*=256);)t<0&&0===s&&0!==this[e+o-1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);R(this,t,e,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,1,127,-128),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},o.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},o.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):z(this,t,e,!0),e+4},o.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):z(this,t,e,!1),e+4},o.prototype.writeFloatLE=function(t,e,n){return N(this,t,e,!0,n)},o.prototype.writeFloatBE=function(t,e,n){return N(this,t,e,!1,n)},o.prototype.writeDoubleLE=function(t,e,n){return U(this,t,e,!0,n)},o.prototype.writeDoubleBE=function(t,e,n){return U(this,t,e,!1,n)},o.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,a=r-n;if(this===t&&n<e&&e<r)for(i=a-1;i>=0;--i)t[i+e]=this[i+n];else if(a<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},o.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!o.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var a;if("number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var s=o.isBuffer(t)?t:V(new o(t,r).toString()),u=s.length;for(a=0;a<n-e;++a)this[a+e]=s[a%u]}return this};var tt=/[^+\/0-9A-Za-z-_]/g}).call(e,function(){return this}())},function(t,e){"use strict";function n(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function r(t){return 3*t.length/4-n(t)}function i(t){var e,r,i,o,a,s=t.length;o=n(t),a=new c(3*s/4-o),r=o>0?s-4:s;var u=0;for(e=0;e<r;e+=4)i=l[t.charCodeAt(e)]<<18|l[t.charCodeAt(e+1)]<<12|l[t.charCodeAt(e+2)]<<6|l[t.charCodeAt(e+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=l[t.charCodeAt(e)]<<2|l[t.charCodeAt(e+1)]>>4,a[u++]=255&i):1===o&&(i=l[t.charCodeAt(e)]<<10|l[t.charCodeAt(e+1)]<<4|l[t.charCodeAt(e+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function o(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function a(t,e,n){for(var r,i=[],a=e;a<n;a+=3)r=(t[a]<<16)+(t[a+1]<<8)+t[a+2],i.push(o(r));return i.join("")}function s(t){for(var e,n=t.length,r=n%3,i="",o=[],s=0,l=n-r;s<l;s+=16383)o.push(a(t,s,s+16383>l?l:s+16383));return 1===r?(e=t[n-1],i+=u[e>>2],i+=u[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=u[e>>10],i+=u[e>>4&63],i+=u[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=s;for(var u=[],l=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,p=f.length;h<p;++h)u[h]=f[h],l[f.charCodeAt(h)]=h;l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var o,a,s=8*i-r-1,u=(1<<s)-1,l=u>>1,c=-7,f=n?i-1:0,h=n?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-c)-1,p>>=-c,c+=s;c>0;o=256*o+t[e+f],f+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=r;c>0;a=256*a+t[e+f],f+=h,c-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),o-=l}return(p?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,s,u,l=8*o-i-1,c=(1<<l)-1,f=c>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+f>=1?h/u:h*Math.pow(2,1-f),e*u>=2&&(a++,u/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(e*u-1)*Math.pow(2,i),a+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;t[n+p]=255&s,p+=d,s/=256,i-=8);for(a=a<<i|s,l+=i;l>0;t[n+p]=255&a,p+=d,a/=256,l-=8);t[n+p-d]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){"use strict";function r(t){this.fontDescriptors=t}function i(t,e){if(e.info.Producer="pdfmake",e.info.Creator="pdfmake",t.info)for(var n in t.info){var r=t.info[n];r&&(n=function(t){var e=["Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped"],n=t.charAt(0).toUpperCase()+t.slice(1);return-1!==e.indexOf(n)?n:t.replace(/\s+/g,"")}(n),e.info[n]=r)}}function o(t,e){function n(t){return"function"==typeof t.item.getHeight?t.item.getHeight():t.item._height?t.item._height:0}var r=s(e||40),i=r.top+r.bottom;return t.forEach(function(t){t.items.forEach(function(t){i+=n(t)})}),i}function a(t,e){t&&"auto"===t.height&&(t.height=1/0);var n=l(t||"A4");return function(t){return("string"==typeof t||t instanceof String)&&("portrait"===(t=t.toLowerCase())&&n.width>n.height||"landscape"===t&&n.width<n.height)}(e)&&(n={width:n.height,height:n.width}),n.orientation=n.width>n.height?"landscape":"portrait",n}function s(t){if(!t)return null;if("number"==typeof t||t instanceof Number)t={left:t,right:t,top:t,bottom:t};else if(Array.isArray(t))if(2===t.length)t={left:t[0],top:t[1],right:t[0],bottom:t[1]};else{if(4!==t.length)throw"Invalid pageMargins definition";t={left:t[0],top:t[1],right:t[2],bottom:t[3]}}return t}function u(t){t.registerTableLayouts({noBorders:{hLineWidth:function(t){return 0},vLineWidth:function(t){return 0},paddingLeft:function(t){return t&&4||0},paddingRight:function(t,e){return t<e.table.widths.length-1?4:0}},headerLineOnly:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:0},vLineWidth:function(t){return 0},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}},lightHorizontalLines:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:1},vLineWidth:function(t){return 0},hLineColor:function(t){return 1===t?"black":"#aaa"},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}}})}function l(t){if("string"==typeof t||t instanceof String){var e=w[t.toUpperCase()];if(!e)throw"Page size "+t+" not recognized";return{width:e[0],height:e[1]}}return t}function c(t,e){var n=e.options.size[0]>e.options.size[1]?"landscape":"portrait";if(t.pageSize.orientation!==n){var r=e.options.size[0],i=e.options.size[1];e.options.size=[i,r]}}function f(t,e,n,r){n._pdfMakePages=t,n.addPage();var i=r&&y.sumBy(t,function(t){return t.items.length}),o=0;r=r||function(){};for(var a=0;a<t.length;a++){a>0&&(c(t[a],n),n.addPage(n.options));for(var s=t[a],u=0,l=s.items.length;u<l;u++){var f=s.items[u];switch(f.type){case"vector":d(f.item,n);break;case"line":h(f.item,f.item.x,f.item.y,n);break;case"image":g(f.item,f.item.x,f.item.y,n)}o++,r(o/i)}s.watermark&&p(s,n)}}function h(t,e,n,r){if(t._tocItemNode){var i,o,a=new k(null);switch(t.inlines[0].text=t._tocItemNode.positions[0].pageNumber.toString(),i=a.widthOfString(t.inlines[0].text,t.inlines[0].font,t.inlines[0].fontSize,t.inlines[0].characterSpacing),o=t.inlines[0].width-i,t.inlines[0].width=i,t.inlines[0].alignment){case"right":t.inlines[0].x+=o;break;case"center":t.inlines[0].x+=o/2}}e=e||0,n=n||0;var s=t.getHeight(),u=t.getAscenderHeight(),l=s-u;_.drawBackground(t,e,n,r);for(var c=0,f=t.inlines.length;c<f;c++){var h=t.inlines[c],p=s-h.font.ascender/1e3*h.fontSize-l;if(r.fill(h.color||"black"),r._font=h.font,r.fontSize(h.fontSize),r.text(h.text,e+h.x,n+p,{lineBreak:!1,textWidth:h.width,characterSpacing:h.characterSpacing,wordCount:1,link:h.link}),h.linkToPage){r.ref({Type:"Action",S:"GoTo",D:[h.linkToPage,0,0]}).end();r.annotate(e+h.x,n+p,h.width,h.height,{Subtype:"Link",Dest:[h.linkToPage-1,"XYZ",null,null,null]})}}_.drawDecorations(t,e,n,r)}function p(t,e){var n=t.watermark;e.fill(n.color),e.opacity(n.opacity),e.save();var r=-180*Math.atan2(e.page.height,e.page.width)/Math.PI;e.rotate(r,{origin:[e.page.width/2,e.page.height/2]});var i=e.page.width/2-n.size.size.width/2,o=e.page.height/2-n.size.size.height/4;e._font=n.font,e.fontSize(n.size.fontSize),e.text(n.text,i,o,{lineBreak:!1}),e.restore()}function d(t,e){switch(e.lineWidth(t.lineWidth||1),t.dash?e.dash(t.dash.length,{space:t.dash.space||t.dash.length,phase:t.dash.phase||0}):e.undash(),e.lineJoin(t.lineJoin||"miter"),t.type){case"ellipse":e.ellipse(t.x,t.y,t.r1,t.r2);break;case"rect":if(t.r?e.roundedRect(t.x,t.y,t.w,t.h,t.r):e.rect(t.x,t.y,t.w,t.h),t.linearGradient){for(var n=e.linearGradient(t.x,t.y,t.x+t.w,t.y),r=1/(t.linearGradient.length-1),i=0;i<t.linearGradient.length;i++)n.stop(i*r,t.linearGradient[i]);t.color=n}break;case"line":e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2);break;case"polyline":if(0===t.points.length)break;e.moveTo(t.points[0].x,t.points[0].y);for(var i=1,o=t.points.length;i<o;i++)e.lineTo(t.points[i].x,t.points[i].y);if(t.points.length>1){var a=t.points[0],s=t.points[t.points.length-1];(t.closePath||a.x===s.x&&a.y===s.y)&&e.closePath()}break;case"path":e.path(t.d)}t.color&&t.lineColor?(e.fillColor(t.color,t.fillOpacity||1),e.strokeColor(t.lineColor,t.strokeOpacity||1),e.fillAndStroke()):t.color?(e.fillColor(t.color,t.fillOpacity||1),e.fill()):(e.strokeColor(t.lineColor||"black",t.strokeOpacity||1),e.stroke())}function g(t,e,n,r){r.image(t.image,t.x,t.y,{width:t._width,height:t._height}),t.link&&r.link(t.x,t.y,t._width,t._height,t.link)}var y=n(7),v=n(9),b=n(10),m=n(30),w=n(297),x=n(298),_=n(299),k=n(15);y.noConflict(),r.prototype.createPdfKitDocument=function(t,e){e=e||{};var n=a(t.pageSize,t.pageOrientation);this.pdfKitDoc=new m({size:[n.width,n.height],autoFirstPage:!1,compress:t.compress||!0}),i(t,this.pdfKitDoc),this.fontProvider=new v(this.fontDescriptors,this.pdfKitDoc),t.images=t.images||{};var r=new b(n,s(t.pageMargins||40),new x(this.pdfKitDoc,t.images));u(r),e.tableLayouts&&r.registerTableLayouts(e.tableLayouts);var l=r.layoutDocument(t.content,this.fontProvider,t.styles||{},t.defaultStyle||{fontSize:12,font:"Roboto"},t.background,t.header,t.footer,t.images,t.watermark,t.pageBreakBefore),c=t.maxPagesNumber||-1;if("number"==typeof c&&c>-1&&(l=l.slice(0,c)),n.height===1/0){var h=o(l,t.pageMargins);this.pdfKitDoc.options.size=[n.width,h]}if(f(l,this.fontProvider,this.pdfKitDoc,e.progressCallback),e.autoPrint){var p=this.pdfKitDoc.ref({Type:"Action",S:"Named",N:"Print"});this.pdfKitDoc._root.data.OpenAction=p,p.end()}return this.pdfKitDoc},t.exports=r,r.prototype.fs=n(56)},function(t,e,n){var r;(function(t,i){(function(){function o(t,e){return t.set(e[0],e[1]),t}function a(t,e){return t.add(e),t}function s(t,e,n){switch(n.length){ case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function u(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function l(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function c(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function f(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function h(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function p(t,e){return!!(null==t?0:t.length)&&S(t,e,0)>-1}function d(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function g(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function y(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function v(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function b(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function m(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function w(t){return t.split("")}function x(t){return t.match(Ue)||[]}function _(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function k(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function S(t,e,n){return e===e?J(t,e,n):k(t,A,n)}function C(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function A(t){return t!==t}function P(t,e){var n=null==t?0:t.length;return n?B(t,e)/n:Rt}function E(t){return function(e){return null==e?it:e[t]}}function I(t){return function(e){return null==t?it:t[e]}}function T(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function O(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function B(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==it&&(n=n===it?o:n+o)}return n}function L(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function M(t,e){return g(e,function(e){return[e,t[e]]})}function R(t){return function(e){return t(e)}}function F(t,e){return g(e,function(e){return t[e]})}function z(t,e){return t.has(e)}function D(t,e){for(var n=-1,r=t.length;++n<r&&S(e,t[n],0)>-1;);return n}function N(t,e){for(var n=t.length;n--&&S(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function W(t){return"\\"+En[t]}function j(t,e){return null==t?it:t[e]}function G(t){return mn.test(t)}function V(t){return wn.test(t)}function H(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function q(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function Z(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==ct||(t[n]=ct,o[i++]=n)}return o}function X(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function K(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function J(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function Q(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function $(t){return G(t)?et(t):Hn(t)}function tt(t){return G(t)?nt(t):w(t)}function et(t){for(var e=vn.lastIndex=0;vn.test(t);)++e;return e}function nt(t){return t.match(vn)||[]}function rt(t){return t.match(bn)||[]}var it,ot=200,at="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",st="Expected a function",ut="__lodash_hash_undefined__",lt=500,ct="__lodash_placeholder__",ft=1,ht=2,pt=4,dt=1,gt=2,yt=1,vt=2,bt=4,mt=8,wt=16,xt=32,_t=64,kt=128,St=256,Ct=512,At=30,Pt="...",Et=800,It=16,Tt=1,Ot=2,Bt=1/0,Lt=9007199254740991,Mt=1.7976931348623157e308,Rt=NaN,Ft=4294967295,zt=Ft-1,Dt=Ft>>>1,Nt=[["ary",kt],["bind",yt],["bindKey",vt],["curry",mt],["curryRight",wt],["flip",Ct],["partial",xt],["partialRight",_t],["rearg",St]],Ut="[object Arguments]",Wt="[object Array]",jt="[object AsyncFunction]",Gt="[object Boolean]",Vt="[object Date]",Ht="[object DOMException]",qt="[object Error]",Zt="[object Function]",Yt="[object GeneratorFunction]",Xt="[object Map]",Kt="[object Number]",Jt="[object Null]",Qt="[object Object]",$t="[object Proxy]",te="[object RegExp]",ee="[object Set]",ne="[object String]",re="[object Symbol]",ie="[object Undefined]",oe="[object WeakMap]",ae="[object WeakSet]",se="[object ArrayBuffer]",ue="[object DataView]",le="[object Float32Array]",ce="[object Float64Array]",fe="[object Int8Array]",he="[object Int16Array]",pe="[object Int32Array]",de="[object Uint8Array]",ge="[object Uint8ClampedArray]",ye="[object Uint16Array]",ve="[object Uint32Array]",be=/\b__p \+= '';/g,me=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,_e=/[&<>"']/g,ke=RegExp(xe.source),Se=RegExp(_e.source),Ce=/<%-([\s\S]+?)%>/g,Ae=/<%([\s\S]+?)%>/g,Pe=/<%=([\s\S]+?)%>/g,Ee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ie=/^\w*$/,Te=/^\./,Oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Be=/[\\^$.*+?()[\]{}|]/g,Le=RegExp(Be.source),Me=/^\s+|\s+$/g,Re=/^\s+/,Fe=/\s+$/,ze=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,De=/\{\n\/\* \[wrapped with (.+)\] \*/,Ne=/,? & /,Ue=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,We=/\\(\\)?/g,je=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ge=/\w*$/,Ve=/^[-+]0x[0-9a-f]+$/i,He=/^0b[01]+$/i,qe=/^\[object .+?Constructor\]$/,Ze=/^0o[0-7]+$/i,Ye=/^(?:0|[1-9]\d*)$/,Xe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ke=/($^)/,Je=/['\n\r\u2028\u2029\\]/g,Qe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",$e="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tn="["+$e+"]",en="["+Qe+"]",nn="[a-z\\xdf-\\xf6\\xf8-\\xff]",rn="[^\\ud800-\\udfff"+$e+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",on="\\ud83c[\\udffb-\\udfff]",an="(?:\\ud83c[\\udde6-\\uddff]){2}",sn="[\\ud800-\\udbff][\\udc00-\\udfff]",un="[A-Z\\xc0-\\xd6\\xd8-\\xde]",ln="(?:"+nn+"|"+rn+")",cn="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",fn="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",an,sn].join("|")+")[\\ufe0e\\ufe0f]?"+cn+")*",hn="[\\ufe0e\\ufe0f]?"+cn+fn,pn="(?:"+["[\\u2700-\\u27bf]",an,sn].join("|")+")"+hn,dn="(?:"+["[^\\ud800-\\udfff]"+en+"?",en,an,sn,"[\\ud800-\\udfff]"].join("|")+")",gn=RegExp("['’]","g"),yn=RegExp(en,"g"),vn=RegExp(on+"(?="+on+")|"+dn+hn,"g"),bn=RegExp([un+"?"+nn+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tn,un,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tn,un+ln,"$"].join("|")+")",un+"?"+ln+"+(?:['’](?:d|ll|m|re|s|t|ve))?",un+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",pn].join("|"),"g"),mn=RegExp("[\\u200d\\ud800-\\udfff"+Qe+"\\ufe0e\\ufe0f]"),wn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],_n=-1,kn={};kn[le]=kn[ce]=kn[fe]=kn[he]=kn[pe]=kn[de]=kn[ge]=kn[ye]=kn[ve]=!0,kn[Ut]=kn[Wt]=kn[se]=kn[Gt]=kn[ue]=kn[Vt]=kn[qt]=kn[Zt]=kn[Xt]=kn[Kt]=kn[Qt]=kn[te]=kn[ee]=kn[ne]=kn[oe]=!1;var Sn={};Sn[Ut]=Sn[Wt]=Sn[se]=Sn[ue]=Sn[Gt]=Sn[Vt]=Sn[le]=Sn[ce]=Sn[fe]=Sn[he]=Sn[pe]=Sn[Xt]=Sn[Kt]=Sn[Qt]=Sn[te]=Sn[ee]=Sn[ne]=Sn[re]=Sn[de]=Sn[ge]=Sn[ye]=Sn[ve]=!0,Sn[qt]=Sn[Zt]=Sn[oe]=!1;var Cn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},An={"&":"&","<":"<",">":">",'"':""","'":"'"},Pn={"&":"&","<":"<",">":">",""":'"',"'":"'"},En={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},In=parseFloat,Tn=parseInt,On="object"==typeof t&&t&&t.Object===Object&&t,Bn="object"==typeof self&&self&&self.Object===Object&&self,Ln=On||Bn||Function("return this")(),Mn="object"==typeof e&&e&&!e.nodeType&&e,Rn=Mn&&"object"==typeof i&&i&&!i.nodeType&&i,Fn=Rn&&Rn.exports===Mn,zn=Fn&&On.process,Dn=function(){try{return zn&&zn.binding&&zn.binding("util")}catch(t){}}(),Nn=Dn&&Dn.isArrayBuffer,Un=Dn&&Dn.isDate,Wn=Dn&&Dn.isMap,jn=Dn&&Dn.isRegExp,Gn=Dn&&Dn.isSet,Vn=Dn&&Dn.isTypedArray,Hn=E("length"),qn=I(Cn),Zn=I(An),Yn=I(Pn),Xn=function t(e){function n(t){if(ou(t)&&!vh(t)&&!(t instanceof w)){if(t instanceof i)return t;if(yc.call(t,"__wrapped__"))return na(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=it}function w(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Ft,this.__views__=[]}function I(){var t=new w(this.__wrapped__);return t.__actions__=zi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=zi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=zi(this.__views__),t}function J(){if(this.__filtered__){var t=new w(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=vh(t),r=e<0,i=n?t.length:0,o=Po(0,i,this.__views__),a=o.start,s=o.end,u=s-a,l=r?s:a-1,c=this.__iteratees__,f=c.length,h=0,p=qc(u,this.__takeCount__);if(!n||!r&&i==u&&p==u)return bi(t,this.__actions__);var d=[];t:for(;u--&&h<p;){l+=e;for(var g=-1,y=t[l];++g<f;){var v=c[g],b=v.iteratee,m=v.type,w=b(y);if(m==Ot)y=w;else if(!w){if(m==Tt)continue t;break t}}d[h++]=y}return d}function nt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ue(){this.__data__=nf?nf(null):{},this.size=0}function Qe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function $e(t){var e=this.__data__;if(nf){var n=e[t];return n===ut?it:n}return yc.call(e,t)?e[t]:it}function tn(t){var e=this.__data__;return nf?e[t]!==it:yc.call(e,t)}function en(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nf&&e===it?ut:e,this}function nn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function rn(){this.__data__=[],this.size=0}function on(t){var e=this.__data__,n=Kn(e,t);return!(n<0)&&(n==e.length-1?e.pop():Tc.call(e,n,1),--this.size,!0)}function an(t){var e=this.__data__,n=Kn(e,t);return n<0?it:e[n][1]}function sn(t){return Kn(this.__data__,t)>-1}function un(t,e){var n=this.__data__,r=Kn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function cn(){this.size=0,this.__data__={hash:new nt,map:new(Qc||nn),string:new nt}}function fn(t){var e=ko(this,t).delete(t);return this.size-=e?1:0,e}function hn(t){return ko(this,t).get(t)}function pn(t){return ko(this,t).has(t)}function dn(t,e){var n=ko(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function vn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new ln;++e<n;)this.add(t[e])}function bn(t){return this.__data__.set(t,ut),this}function mn(t){return this.__data__.has(t)}function wn(t){var e=this.__data__=new nn(t);this.size=e.size}function Cn(){this.__data__=new nn,this.size=0}function An(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function Pn(t){return this.__data__.get(t)}function En(t){return this.__data__.has(t)}function On(t,e){var n=this.__data__;if(n instanceof nn){var r=n.__data__;if(!Qc||r.length<ot-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new ln(r)}return n.set(t,e),this.size=n.size,this}function Bn(t,e){var n=vh(t),r=!n&&yh(t),i=!n&&!r&&mh(t),o=!n&&!r&&!i&&Sh(t),a=n||r||i||o,s=a?L(t.length,lc):[],u=s.length;for(var l in t)!e&&!yc.call(t,l)||a&&("length"==l||i&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Ro(l,u))||s.push(l);return s}function Mn(t){var e=t.length;return e?t[$r(0,e-1)]:it}function Rn(t,e){return Qo(zi(t),nr(e,0,t.length))}function zn(t){return Qo(zi(t))}function Dn(t,e,n){(n===it||Hs(t[e],n))&&(n!==it||e in t)||tr(t,e,n)}function Hn(t,e,n){var r=t[e];yc.call(t,e)&&Hs(r,n)&&(n!==it||e in t)||tr(t,e,n)}function Kn(t,e){for(var n=t.length;n--;)if(Hs(t[n][0],e))return n;return-1}function Jn(t,e,n,r){return gf(t,function(t,i,o){e(r,t,n(t),o)}),r}function Qn(t,e){return t&&Di(e,Uu(e),t)}function $n(t,e){return t&&Di(e,Wu(e),t)}function tr(t,e,n){"__proto__"==e&&Mc?Mc(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function er(t,e){for(var n=-1,r=e.length,i=nc(r),o=null==t;++n<r;)i[n]=o?it:zu(t,e[n]);return i}function nr(t,e,n){return t===t&&(n!==it&&(t=t<=n?t:n),e!==it&&(t=t>=e?t:e)),t}function rr(t,e,n,r,i,o){var a,s=e&ft,u=e&ht,c=e&pt;if(n&&(a=i?n(t,r,i,o):n(t)),a!==it)return a;if(!iu(t))return t;var f=vh(t);if(f){if(a=To(t),!s)return zi(t,a)}else{var h=Pf(t),p=h==Zt||h==Yt;if(mh(t))return Ci(t,s);if(h==Qt||h==Ut||p&&!i){if(a=u||p?{}:Oo(t),!s)return u?Ui(t,$n(a,t)):Ni(t,Qn(a,t))}else{if(!Sn[h])return i?t:{};a=Bo(t,h,rr,s)}}o||(o=new wn);var d=o.get(t);if(d)return d;o.set(t,a);var g=c?u?mo:bo:u?Wu:Uu,y=f?it:g(t);return l(y||t,function(r,i){y&&(i=r,r=t[i]),Hn(a,i,rr(r,e,n,i,t,o))}),a}function ir(t){var e=Uu(t);return function(n){return or(n,t,e)}}function or(t,e,n){var r=n.length;if(null==t)return!r;for(t=sc(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===it&&!(i in t)||!o(a))return!1}return!0}function ar(t,e,n){if("function"!=typeof t)throw new cc(st);return Tf(function(){t.apply(it,n)},e)}function sr(t,e,n,r){var i=-1,o=p,a=!0,s=t.length,u=[],l=e.length;if(!s)return u;n&&(e=g(e,R(n))),r?(o=d,a=!1):e.length>=ot&&(o=z,a=!1,e=new vn(e));t:for(;++i<s;){var c=t[i],f=null==n?c:n(c);if(c=r||0!==c?c:0,a&&f===f){for(var h=l;h--;)if(e[h]===f)continue t;u.push(c)}else o(e,f,r)||u.push(c)}return u}function ur(t,e){var n=!0;return gf(t,function(t,r,i){return n=!!e(t,r,i)}),n}function lr(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],a=e(o);if(null!=a&&(s===it?a===a&&!yu(a):n(a,s)))var s=a,u=o}return u}function cr(t,e,n,r){var i=t.length;for(n=_u(n),n<0&&(n=-n>i?0:i+n),r=r===it||r>i?i:_u(r),r<0&&(r+=i),r=n>r?0:ku(r);n<r;)t[n++]=e;return t}function fr(t,e){var n=[];return gf(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function hr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=Mo),i||(i=[]);++o<a;){var s=t[o];e>0&&n(s)?e>1?hr(s,e-1,n,r,i):y(i,s):r||(i[i.length]=s)}return i}function pr(t,e){return t&&vf(t,e,Uu)}function dr(t,e){return t&&bf(t,e,Uu)}function gr(t,e){return h(e,function(e){return eu(t[e])})}function yr(t,e){e=ki(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[$o(e[n++])];return n&&n==r?t:it}function vr(t,e,n){var r=e(t);return vh(t)?r:y(r,n(t))}function br(t){return null==t?t===it?ie:Jt:Lc&&Lc in sc(t)?Ao(t):qo(t)}function mr(t,e){return t>e}function wr(t,e){return null!=t&&yc.call(t,e)}function xr(t,e){return null!=t&&e in sc(t)}function _r(t,e,n){return t>=qc(e,n)&&t<Hc(e,n)}function kr(t,e,n){for(var r=n?d:p,i=t[0].length,o=t.length,a=o,s=nc(o),u=1/0,l=[];a--;){var c=t[a];a&&e&&(c=g(c,R(e))),u=qc(c.length,u),s[a]=!n&&(e||i>=120&&c.length>=120)?new vn(a&&c):it}c=t[0];var f=-1,h=s[0];t:for(;++f<i&&l.length<u;){var y=c[f],v=e?e(y):y;if(y=n||0!==y?y:0,!(h?z(h,v):r(l,v,n))){for(a=o;--a;){var b=s[a];if(!(b?z(b,v):r(t[a],v,n)))continue t}h&&h.push(v),l.push(y)}}return l}function Sr(t,e,n,r){return pr(t,function(t,i,o){e(r,n(t),i,o)}),r}function Cr(t,e,n){e=ki(e,t),t=Yo(t,e);var r=null==t?t:t[$o(xa(e))];return null==r?it:s(r,t,n)}function Ar(t){return ou(t)&&br(t)==Ut}function Pr(t){return ou(t)&&br(t)==se}function Er(t){return ou(t)&&br(t)==Vt}function Ir(t,e,n,r,i){return t===e||(null==t||null==e||!ou(t)&&!ou(e)?t!==t&&e!==e:Tr(t,e,n,r,Ir,i))}function Tr(t,e,n,r,i,o){var a=vh(t),s=vh(e),u=a?Wt:Pf(t),l=s?Wt:Pf(e);u=u==Ut?Qt:u,l=l==Ut?Qt:l;var c=u==Qt,f=l==Qt,h=u==l;if(h&&mh(t)){if(!mh(e))return!1;a=!0,c=!1}if(h&&!c)return o||(o=new wn),a||Sh(t)?po(t,e,n,r,i,o):go(t,e,u,n,r,i,o);if(!(n&dt)){var p=c&&yc.call(t,"__wrapped__"),d=f&&yc.call(e,"__wrapped__");if(p||d){var g=p?t.value():t,y=d?e.value():e;return o||(o=new wn),i(g,y,n,r,o)}}return!!h&&(o||(o=new wn),yo(t,e,n,r,i,o))}function Or(t){return ou(t)&&Pf(t)==Xt}function Br(t,e,n,r){var i=n.length,o=i,a=!r;if(null==t)return!o;for(t=sc(t);i--;){var s=n[i];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++i<o;){s=n[i];var u=s[0],l=t[u],c=s[1];if(a&&s[2]){if(l===it&&!(u in t))return!1}else{var f=new wn;if(r)var h=r(l,c,u,t,e,f);if(!(h===it?Ir(c,l,dt|gt,r,f):h))return!1}}return!0}function Lr(t){return!(!iu(t)||Uo(t))&&(eu(t)?_c:qe).test(ta(t))}function Mr(t){return ou(t)&&br(t)==te}function Rr(t){return ou(t)&&Pf(t)==ee}function Fr(t){return ou(t)&&ru(t.length)&&!!kn[br(t)]}function zr(t){return"function"==typeof t?t:null==t?Tl:"object"==typeof t?vh(t)?Gr(t[0],t[1]):jr(t):Dl(t)}function Dr(t){if(!Wo(t))return Vc(t);var e=[];for(var n in sc(t))yc.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Nr(t){if(!iu(t))return Ho(t);var e=Wo(t),n=[];for(var r in t)("constructor"!=r||!e&&yc.call(t,r))&&n.push(r);return n}function Ur(t,e){return t<e}function Wr(t,e){var n=-1,r=qs(t)?nc(t.length):[];return gf(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function jr(t){var e=So(t);return 1==e.length&&e[0][2]?Go(e[0][0],e[0][1]):function(n){return n===t||Br(n,t,e)}}function Gr(t,e){return zo(t)&&jo(e)?Go($o(t),e):function(n){var r=zu(n,t);return r===it&&r===e?Nu(n,t):Ir(e,r,dt|gt)}}function Vr(t,e,n,r,i){t!==e&&vf(e,function(o,a){if(iu(o))i||(i=new wn),Hr(t,e,a,n,Vr,r,i);else{var s=r?r(t[a],o,a+"",t,e,i):it;s===it&&(s=o),Dn(t,a,s)}},Wu)}function Hr(t,e,n,r,i,o,a){var s=t[n],u=e[n],l=a.get(u);if(l)return void Dn(t,n,l);var c=o?o(s,u,n+"",t,e,a):it,f=c===it;if(f){var h=vh(u),p=!h&&mh(u),d=!h&&!p&&Sh(u);c=u,h||p||d?vh(s)?c=s:Zs(s)?c=zi(s):p?(f=!1,c=Ci(u,!0)):d?(f=!1,c=Bi(u,!0)):c=[]:pu(u)||yh(u)?(c=s,yh(s)?c=Cu(s):(!iu(s)||r&&eu(s))&&(c=Oo(u))):f=!1}f&&(a.set(u,c),i(c,u,r,o,a),a.delete(u)),Dn(t,n,c)}function qr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Ro(e,n)?t[e]:it}function Zr(t,e,n){var r=-1;return e=g(e.length?e:[Tl],R(_o())),O(Wr(t,function(t,n,i){return{criteria:g(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return Mi(t,e,n)})}function Yr(t,e){return Xr(t,e,function(e,n){return Nu(t,n)})}function Xr(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],s=yr(t,a);n(s,a)&&oi(o,ki(a,t),s)}return o}function Kr(t){return function(e){return yr(e,t)}}function Jr(t,e,n,r){var i=r?C:S,o=-1,a=e.length,s=t;for(t===e&&(e=zi(e)),n&&(s=g(t,R(n)));++o<a;)for(var u=0,l=e[o],c=n?n(l):l;(u=i(s,c,u,r))>-1;)s!==t&&Tc.call(s,u,1),Tc.call(t,u,1);return t}function Qr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Ro(i)?Tc.call(t,i,1):gi(t,i)}}return t}function $r(t,e){return t+Nc(Xc()*(e-t+1))}function ti(t,e,n,r){for(var i=-1,o=Hc(Dc((e-t)/(n||1)),0),a=nc(o);o--;)a[r?o:++i]=t,t+=n;return a}function ei(t,e){var n="";if(!t||e<1||e>Lt)return n;do{e%2&&(n+=t),(e=Nc(e/2))&&(t+=t)}while(e);return n}function ni(t,e){return Of(Zo(t,e,Tl),t+"")}function ri(t){return Mn($u(t))}function ii(t,e){var n=$u(t);return Qo(n,nr(e,0,n.length))}function oi(t,e,n,r){if(!iu(t))return t;e=ki(e,t);for(var i=-1,o=e.length,a=o-1,s=t;null!=s&&++i<o;){var u=$o(e[i]),l=n;if(i!=a){var c=s[u];l=r?r(c,u,s):it,l===it&&(l=iu(c)?c:Ro(e[i+1])?[]:{})}Hn(s,u,l),s=s[u]}return t}function ai(t){return Qo($u(t))}function si(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=nc(i);++r<i;)o[r]=t[r+e];return o}function ui(t,e){var n;return gf(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function li(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e===e&&i<=Dt){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!yu(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return ci(t,e,Tl,n)}function ci(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,a=e!==e,s=null===e,u=yu(e),l=e===it;i<o;){var c=Nc((i+o)/2),f=n(t[c]),h=f!==it,p=null===f,d=f===f,g=yu(f);if(a)var y=r||d;else y=l?d&&(r||h):s?d&&h&&(r||!p):u?d&&h&&!p&&(r||!g):!p&&!g&&(r?f<=e:f<e);y?i=c+1:o=c}return qc(o,zt)}function fi(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],s=e?e(a):a;if(!n||!Hs(s,u)){var u=s;o[i++]=0===a?0:a}}return o}function hi(t){return"number"==typeof t?t:yu(t)?Rt:+t}function pi(t){if("string"==typeof t)return t;if(vh(t))return g(t,pi)+"";if(yu(t))return pf?pf.call(t):"";var e=t+"";return"0"==e&&1/t==-Bt?"-0":e}function di(t,e,n){var r=-1,i=p,o=t.length,a=!0,s=[],u=s;if(n)a=!1,i=d;else if(o>=ot){var l=e?null:kf(t);if(l)return X(l);a=!1,i=z,u=new vn}else u=e?[]:s;t:for(;++r<o;){var c=t[r],f=e?e(c):c;if(c=n||0!==c?c:0,a&&f===f){for(var h=u.length;h--;)if(u[h]===f)continue t;e&&u.push(f),s.push(c)}else i(u,f,n)||(u!==s&&u.push(f),s.push(c))}return s}function gi(t,e){return e=ki(e,t),null==(t=Yo(t,e))||delete t[$o(xa(e))]}function yi(t,e,n,r){return oi(t,e,n(yr(t,e)),r)}function vi(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?si(t,r?0:o,r?o+1:i):si(t,r?o+1:0,r?i:o)}function bi(t,e){var n=t;return n instanceof w&&(n=n.value()),v(e,function(t,e){return e.func.apply(e.thisArg,y([t],e.args))},n)}function mi(t,e,n){var r=t.length;if(r<2)return r?di(t[0]):[];for(var i=-1,o=nc(r);++i<r;)for(var a=t[i],s=-1;++s<r;)s!=i&&(o[i]=sr(o[i]||a,t[s],e,n));return di(hr(o,1),e,n)}function wi(t,e,n){for(var r=-1,i=t.length,o=e.length,a={};++r<i;){var s=r<o?e[r]:it;n(a,t[r],s)}return a}function xi(t){return Zs(t)?t:[]}function _i(t){return"function"==typeof t?t:Tl}function ki(t,e){return vh(t)?t:zo(t,e)?[t]:Bf(Pu(t))}function Si(t,e,n){var r=t.length;return n=n===it?r:n,!e&&n>=r?t:si(t,e,n)}function Ci(t,e){if(e)return t.slice();var n=t.length,r=Ac?Ac(n):new t.constructor(n);return t.copy(r),r}function Ai(t){var e=new t.constructor(t.byteLength);return new Cc(e).set(new Cc(t)),e}function Pi(t,e){var n=e?Ai(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function Ei(t,e,n){return v(e?n(q(t),ft):q(t),o,new t.constructor)}function Ii(t){var e=new t.constructor(t.source,Ge.exec(t));return e.lastIndex=t.lastIndex,e}function Ti(t,e,n){return v(e?n(X(t),ft):X(t),a,new t.constructor)}function Oi(t){return hf?sc(hf.call(t)):{}}function Bi(t,e){var n=e?Ai(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Li(t,e){if(t!==e){var n=t!==it,r=null===t,i=t===t,o=yu(t),a=e!==it,s=null===e,u=e===e,l=yu(e);if(!s&&!l&&!o&&t>e||o&&a&&u&&!s&&!l||r&&a&&u||!n&&u||!i)return 1;if(!r&&!o&&!l&&t<e||l&&n&&i&&!r&&!o||s&&n&&i||!a&&i||!u)return-1}return 0}function Mi(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,a=i.length,s=n.length;++r<a;){var u=Li(i[r],o[r]);if(u){if(r>=s)return u;return u*("desc"==n[r]?-1:1)}}return t.index-e.index}function Ri(t,e,n,r){for(var i=-1,o=t.length,a=n.length,s=-1,u=e.length,l=Hc(o-a,0),c=nc(u+l),f=!r;++s<u;)c[s]=e[s];for(;++i<a;)(f||i<o)&&(c[n[i]]=t[i]);for(;l--;)c[s++]=t[i++];return c}function Fi(t,e,n,r){for(var i=-1,o=t.length,a=-1,s=n.length,u=-1,l=e.length,c=Hc(o-s,0),f=nc(c+l),h=!r;++i<c;)f[i]=t[i];for(var p=i;++u<l;)f[p+u]=e[u];for(;++a<s;)(h||i<o)&&(f[p+n[a]]=t[i++]);return f}function zi(t,e){var n=-1,r=t.length;for(e||(e=nc(r));++n<r;)e[n]=t[n];return e}function Di(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],u=r?r(n[s],t[s],s,n,t):it;u===it&&(u=t[s]),i?tr(n,s,u):Hn(n,s,u)}return n}function Ni(t,e){return Di(t,Cf(t),e)}function Ui(t,e){return Di(t,Af(t),e)}function Wi(t,e){return function(n,r){var i=vh(n)?u:Jn,o=e?e():{};return i(n,t,_o(r,2),o)}}function ji(t){return ni(function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:it,a=i>2?n[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,a&&Fo(n[0],n[1],a)&&(o=i<3?it:o,i=1),e=sc(e);++r<i;){var s=n[r];s&&t(e,s,r,o)}return e})}function Gi(t,e){return function(n,r){if(null==n)return n;if(!qs(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=sc(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function Vi(t){return function(e,n,r){for(var i=-1,o=sc(e),a=r(e),s=a.length;s--;){var u=a[t?s:++i];if(!1===n(o[u],u,o))break}return e}}function Hi(t,e,n){function r(){return(this&&this!==Ln&&this instanceof r?o:t).apply(i?n:this,arguments)}var i=e&yt,o=Yi(t);return r}function qi(t){return function(e){e=Pu(e);var n=G(e)?tt(e):it,r=n?n[0]:e.charAt(0),i=n?Si(n,1).join(""):e.slice(1);return r[t]()+i}}function Zi(t){return function(e){return v(Cl(ol(e).replace(gn,"")),t,"")}}function Yi(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=df(t.prototype),r=t.apply(n,e);return iu(r)?r:n}}function Xi(t,e,n){function r(){for(var o=arguments.length,a=nc(o),u=o,l=xo(r);u--;)a[u]=arguments[u];var c=o<3&&a[0]!==l&&a[o-1]!==l?[]:Y(a,l);return(o-=c.length)<n?ao(t,e,Qi,r.placeholder,it,a,c,it,it,n-o):s(this&&this!==Ln&&this instanceof r?i:t,this,a)}var i=Yi(t);return r}function Ki(t){return function(e,n,r){var i=sc(e);if(!qs(e)){var o=_o(n,3);e=Uu(e),n=function(t){return o(i[t],t,i)}}var a=t(e,n,r);return a>-1?i[o?e[a]:a]:it}}function Ji(t){return vo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new cc(st);if(o&&!s&&"wrapper"==wo(a))var s=new i([],!0)}for(r=s?r:n;++r<n;){a=e[r];var u=wo(a),l="wrapper"==u?Sf(a):it;s=l&&No(l[0])&&l[1]==(kt|mt|xt|St)&&!l[4].length&&1==l[9]?s[wo(l[0])].apply(s,l[3]):1==a.length&&No(a)?s[u]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&vh(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function Qi(t,e,n,r,i,o,a,s,u,l){function c(){for(var v=arguments.length,b=nc(v),m=v;m--;)b[m]=arguments[m];if(d)var w=xo(c),x=U(b,w);if(r&&(b=Ri(b,r,i,d)),o&&(b=Fi(b,o,a,d)),v-=x,d&&v<l){var _=Y(b,w);return ao(t,e,Qi,c.placeholder,n,b,_,s,u,l-v)}var k=h?n:this,S=p?k[t]:t;return v=b.length,s?b=Xo(b,s):g&&v>1&&b.reverse(),f&&u<v&&(b.length=u),this&&this!==Ln&&this instanceof c&&(S=y||Yi(S)),S.apply(k,b)}var f=e&kt,h=e&yt,p=e&vt,d=e&(mt|wt),g=e&Ct,y=p?it:Yi(t);return c}function $i(t,e){return function(n,r){return Sr(n,t,e(r),{})}}function to(t,e){return function(n,r){var i;if(n===it&&r===it)return e;if(n!==it&&(i=n),r!==it){if(i===it)return r;"string"==typeof n||"string"==typeof r?(n=pi(n),r=pi(r)):(n=hi(n),r=hi(r)),i=t(n,r)}return i}}function eo(t){return vo(function(e){return e=g(e,R(_o())),ni(function(n){var r=this;return t(e,function(t){return s(t,r,n)})})})}function no(t,e){e=e===it?" ":pi(e);var n=e.length;if(n<2)return n?ei(e,t):e;var r=ei(e,Dc(t/$(e)));return G(e)?Si(tt(r),0,t).join(""):r.slice(0,t)}function ro(t,e,n,r){function i(){for(var e=-1,u=arguments.length,l=-1,c=r.length,f=nc(c+u),h=this&&this!==Ln&&this instanceof i?a:t;++l<c;)f[l]=r[l];for(;u--;)f[l++]=arguments[++e];return s(h,o?n:this,f)}var o=e&yt,a=Yi(t);return i}function io(t){return function(e,n,r){return r&&"number"!=typeof r&&Fo(e,n,r)&&(n=r=it),e=xu(e),n===it?(n=e,e=0):n=xu(n),r=r===it?e<n?1:-1:xu(r),ti(e,n,r,t)}}function oo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Su(e),n=Su(n)),t(e,n)}}function ao(t,e,n,r,i,o,a,s,u,l){var c=e&mt,f=c?a:it,h=c?it:a,p=c?o:it,d=c?it:o;e|=c?xt:_t,(e&=~(c?_t:xt))&bt||(e&=~(yt|vt));var g=[t,e,i,p,f,d,h,s,u,l],y=n.apply(it,g);return No(t)&&If(y,g),y.placeholder=r,Ko(y,t,e)}function so(t){var e=ac[t];return function(t,n){if(t=Su(t),n=null==n?0:qc(_u(n),292)){var r=(Pu(t)+"e").split("e");return r=(Pu(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"),+(r[0]+"e"+(+r[1]-n))}return e(t)}}function uo(t){return function(e){var n=Pf(e);return n==Xt?q(e):n==ee?K(e):M(e,t(e))}}function lo(t,e,n,r,i,o,a,s){var u=e&vt;if(!u&&"function"!=typeof t)throw new cc(st);var l=r?r.length:0;if(l||(e&=~(xt|_t),r=i=it),a=a===it?a:Hc(_u(a),0),s=s===it?s:_u(s),l-=i?i.length:0,e&_t){var c=r,f=i;r=i=it}var h=u?it:Sf(t),p=[t,e,n,r,i,c,f,o,a,s];if(h&&Vo(p,h),t=p[0],e=p[1],n=p[2],r=p[3],i=p[4],s=p[9]=p[9]===it?u?0:t.length:Hc(p[9]-l,0),!s&&e&(mt|wt)&&(e&=~(mt|wt)),e&&e!=yt)d=e==mt||e==wt?Xi(t,e,s):e!=xt&&e!=(yt|xt)||i.length?Qi.apply(it,p):ro(t,e,n,r);else var d=Hi(t,e,n);return Ko((h?mf:If)(d,p),t,e)}function co(t,e,n,r){return t===it||Hs(t,pc[n])&&!yc.call(r,n)?e:t}function fo(t,e,n,r,i,o){return iu(t)&&iu(e)&&(o.set(e,t),Vr(t,e,it,fo,o),o.delete(e)),t}function ho(t){return pu(t)?it:t}function po(t,e,n,r,i,o){var a=n&dt,s=t.length,u=e.length;if(s!=u&&!(a&&u>s))return!1;var l=o.get(t);if(l&&o.get(e))return l==e;var c=-1,f=!0,h=n>?new vn:it;for(o.set(t,e),o.set(e,t);++c<s;){var p=t[c],d=e[c];if(r)var g=a?r(d,p,c,e,t,o):r(p,d,c,t,e,o);if(g!==it){if(g)continue;f=!1;break}if(h){if(!m(e,function(t,e){if(!z(h,e)&&(p===t||i(p,t,n,r,o)))return h.push(e)})){f=!1;break}}else if(p!==d&&!i(p,d,n,r,o)){f=!1;break}}return o.delete(t),o.delete(e),f}function go(t,e,n,r,i,o,a){switch(n){case ue:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case se:return!(t.byteLength!=e.byteLength||!o(new Cc(t),new Cc(e)));case Gt:case Vt:case Kt:return Hs(+t,+e);case qt:return t.name==e.name&&t.message==e.message;case te:case ne:return t==e+"";case Xt:var s=q;case ee:var u=r&dt;if(s||(s=X),t.size!=e.size&&!u)return!1;var l=a.get(t);if(l)return l==e;r|=gt,a.set(t,e);var c=po(s(t),s(e),r,i,o,a);return a.delete(t),c;case re:if(hf)return hf.call(t)==hf.call(e)}return!1}function yo(t,e,n,r,i,o){var a=n&dt,s=bo(t),u=s.length;if(u!=bo(e).length&&!a)return!1;for(var l=u;l--;){var c=s[l];if(!(a?c in e:yc.call(e,c)))return!1}var f=o.get(t);if(f&&o.get(e))return f==e;var h=!0;o.set(t,e),o.set(e,t);for(var p=a;++l<u;){c=s[l];var d=t[c],g=e[c];if(r)var y=a?r(g,d,c,e,t,o):r(d,g,c,t,e,o) ;if(!(y===it?d===g||i(d,g,n,r,o):y)){h=!1;break}p||(p="constructor"==c)}if(h&&!p){var v=t.constructor,b=e.constructor;v!=b&&"constructor"in t&&"constructor"in e&&!("function"==typeof v&&v instanceof v&&"function"==typeof b&&b instanceof b)&&(h=!1)}return o.delete(t),o.delete(e),h}function vo(t){return Of(Zo(t,it,pa),t+"")}function bo(t){return vr(t,Uu,Cf)}function mo(t){return vr(t,Wu,Af)}function wo(t){for(var e=t.name+"",n=of[e],r=yc.call(of,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function xo(t){return(yc.call(n,"placeholder")?n:t).placeholder}function _o(){var t=n.iteratee||Ol;return t=t===Ol?zr:t,arguments.length?t(arguments[0],arguments[1]):t}function ko(t,e){var n=t.__data__;return Do(e)?n["string"==typeof e?"string":"hash"]:n.map}function So(t){for(var e=Uu(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,jo(i)]}return e}function Co(t,e){var n=j(t,e);return Lr(n)?n:it}function Ao(t){var e=yc.call(t,Lc),n=t[Lc];try{t[Lc]=it;var r=!0}catch(t){}var i=mc.call(t);return r&&(e?t[Lc]=n:delete t[Lc]),i}function Po(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=qc(e,t+a);break;case"takeRight":t=Hc(t,e-a)}}return{start:t,end:e}}function Eo(t){var e=t.match(De);return e?e[1].split(Ne):[]}function Io(t,e,n){e=ki(e,t);for(var r=-1,i=e.length,o=!1;++r<i;){var a=$o(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&ru(i)&&Ro(a,i)&&(vh(t)||yh(t))}function To(t){var e=t.length,n=t.constructor(e);return e&&"string"==typeof t[0]&&yc.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function Oo(t){return"function"!=typeof t.constructor||Wo(t)?{}:df(Pc(t))}function Bo(t,e,n,r){var i=t.constructor;switch(e){case se:return Ai(t);case Gt:case Vt:return new i(+t);case ue:return Pi(t,r);case le:case ce:case fe:case he:case pe:case de:case ge:case ye:case ve:return Bi(t,r);case Xt:return Ei(t,r,n);case Kt:case ne:return new i(t);case te:return Ii(t);case ee:return Ti(t,r,n);case re:return Oi(t)}}function Lo(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(ze,"{\n/* [wrapped with "+e+"] */\n")}function Mo(t){return vh(t)||yh(t)||!!(Oc&&t&&t[Oc])}function Ro(t,e){return!!(e=null==e?Lt:e)&&("number"==typeof t||Ye.test(t))&&t>-1&&t%1==0&&t<e}function Fo(t,e,n){if(!iu(n))return!1;var r=typeof e;return!!("number"==r?qs(n)&&Ro(e,n.length):"string"==r&&e in n)&&Hs(n[e],t)}function zo(t,e){if(vh(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!yu(t))||(Ie.test(t)||!Ee.test(t)||null!=e&&t in sc(e))}function Do(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}function No(t){var e=wo(t),r=n[e];if("function"!=typeof r||!(e in w.prototype))return!1;if(t===r)return!0;var i=Sf(r);return!!i&&t===i[0]}function Uo(t){return!!bc&&bc in t}function Wo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||pc)}function jo(t){return t===t&&!iu(t)}function Go(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==it||t in sc(n)))}}function Vo(t,e){var n=t[1],r=e[1],i=n|r,o=i<(yt|vt|kt),a=r==kt&&n==mt||r==kt&&n==St&&t[7].length<=e[8]||r==(kt|St)&&e[7].length<=e[8]&&n==mt;if(!o&&!a)return t;r&yt&&(t[2]=e[2],i|=n&yt?0:bt);var s=e[3];if(s){var u=t[3];t[3]=u?Ri(u,s,e[4]):s,t[4]=u?Y(t[3],ct):e[4]}return s=e[5],s&&(u=t[5],t[5]=u?Fi(u,s,e[6]):s,t[6]=u?Y(t[5],ct):e[6]),s=e[7],s&&(t[7]=s),r&kt&&(t[8]=null==t[8]?e[8]:qc(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Ho(t){var e=[];if(null!=t)for(var n in sc(t))e.push(n);return e}function qo(t){return mc.call(t)}function Zo(t,e,n){return e=Hc(e===it?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Hc(r.length-e,0),a=nc(o);++i<o;)a[i]=r[e+i];i=-1;for(var u=nc(e+1);++i<e;)u[i]=r[i];return u[e]=n(a),s(t,this,u)}}function Yo(t,e){return e.length<2?t:yr(t,si(e,0,-1))}function Xo(t,e){for(var n=t.length,r=qc(e.length,n),i=zi(t);r--;){var o=e[r];t[r]=Ro(o,n)?i[o]:it}return t}function Ko(t,e,n){var r=e+"";return Of(t,Lo(r,ea(Eo(r),n)))}function Jo(t){var e=0,n=0;return function(){var r=Zc(),i=It-(r-n);if(n=r,i>0){if(++e>=Et)return arguments[0]}else e=0;return t.apply(it,arguments)}}function Qo(t,e){var n=-1,r=t.length,i=r-1;for(e=e===it?r:e;++n<e;){var o=$r(n,i),a=t[o];t[o]=t[n],t[n]=a}return t.length=e,t}function $o(t){if("string"==typeof t||yu(t))return t;var e=t+"";return"0"==e&&1/t==-Bt?"-0":e}function ta(t){if(null!=t){try{return gc.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function ea(t,e){return l(Nt,function(n){var r="_."+n[0];e&n[1]&&!p(t,r)&&t.push(r)}),t.sort()}function na(t){if(t instanceof w)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=zi(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function ra(t,e,n){e=(n?Fo(t,e,n):e===it)?1:Hc(_u(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=nc(Dc(r/e));i<r;)a[o++]=si(t,i,i+=e);return a}function ia(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i}function oa(){var t=arguments.length;if(!t)return[];for(var e=nc(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return y(vh(n)?zi(n):[n],hr(e,1))}function aa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:_u(e),si(t,e<0?0:e,r)):[]}function sa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:_u(e),e=r-e,si(t,0,e<0?0:e)):[]}function ua(t,e){return t&&t.length?vi(t,_o(e,3),!0,!0):[]}function la(t,e){return t&&t.length?vi(t,_o(e,3),!0):[]}function ca(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Fo(t,e,n)&&(n=0,r=i),cr(t,e,n,r)):[]}function fa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:_u(n);return i<0&&(i=Hc(r+i,0)),k(t,_o(e,3),i)}function ha(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==it&&(i=_u(n),i=n<0?Hc(r+i,0):qc(i,r-1)),k(t,_o(e,3),i,!0)}function pa(t){return(null==t?0:t.length)?hr(t,1):[]}function da(t){return(null==t?0:t.length)?hr(t,Bt):[]}function ga(t,e){return(null==t?0:t.length)?(e=e===it?1:_u(e),hr(t,e)):[]}function ya(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r}function va(t){return t&&t.length?t[0]:it}function ba(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:_u(n);return i<0&&(i=Hc(r+i,0)),S(t,e,i)}function ma(t){return(null==t?0:t.length)?si(t,0,-1):[]}function wa(t,e){return null==t?"":Gc.call(t,e)}function xa(t){var e=null==t?0:t.length;return e?t[e-1]:it}function _a(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==it&&(i=_u(n),i=i<0?Hc(r+i,0):qc(i,r-1)),e===e?Q(t,e,i):k(t,A,i,!0)}function ka(t,e){return t&&t.length?qr(t,_u(e)):it}function Sa(t,e){return t&&t.length&&e&&e.length?Jr(t,e):t}function Ca(t,e,n){return t&&t.length&&e&&e.length?Jr(t,e,_o(n,2)):t}function Aa(t,e,n){return t&&t.length&&e&&e.length?Jr(t,e,it,n):t}function Pa(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=_o(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return Qr(t,i),n}function Ea(t){return null==t?t:Kc.call(t)}function Ia(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Fo(t,e,n)?(e=0,n=r):(e=null==e?0:_u(e),n=n===it?r:_u(n)),si(t,e,n)):[]}function Ta(t,e){return li(t,e)}function Oa(t,e,n){return ci(t,e,_o(n,2))}function Ba(t,e){var n=null==t?0:t.length;if(n){var r=li(t,e);if(r<n&&Hs(t[r],e))return r}return-1}function La(t,e){return li(t,e,!0)}function Ma(t,e,n){return ci(t,e,_o(n,2),!0)}function Ra(t,e){if(null==t?0:t.length){var n=li(t,e,!0)-1;if(Hs(t[n],e))return n}return-1}function Fa(t){return t&&t.length?fi(t):[]}function za(t,e){return t&&t.length?fi(t,_o(e,2)):[]}function Da(t){var e=null==t?0:t.length;return e?si(t,1,e):[]}function Na(t,e,n){return t&&t.length?(e=n||e===it?1:_u(e),si(t,0,e<0?0:e)):[]}function Ua(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:_u(e),e=r-e,si(t,e<0?0:e,r)):[]}function Wa(t,e){return t&&t.length?vi(t,_o(e,3),!1,!0):[]}function ja(t,e){return t&&t.length?vi(t,_o(e,3)):[]}function Ga(t){return t&&t.length?di(t):[]}function Va(t,e){return t&&t.length?di(t,_o(e,2)):[]}function Ha(t,e){return e="function"==typeof e?e:it,t&&t.length?di(t,it,e):[]}function qa(t){if(!t||!t.length)return[];var e=0;return t=h(t,function(t){if(Zs(t))return e=Hc(t.length,e),!0}),L(e,function(e){return g(t,E(e))})}function Za(t,e){if(!t||!t.length)return[];var n=qa(t);return null==e?n:g(n,function(t){return s(e,it,t)})}function Ya(t,e){return wi(t||[],e||[],Hn)}function Xa(t,e){return wi(t||[],e||[],oi)}function Ka(t){var e=n(t);return e.__chain__=!0,e}function Ja(t,e){return e(t),t}function Qa(t,e){return e(t)}function $a(){return Ka(this)}function ts(){return new i(this.value(),this.__chain__)}function es(){this.__values__===it&&(this.__values__=wu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function ns(){return this}function rs(t){for(var e,n=this;n instanceof r;){var i=na(n);i.__index__=0,i.__values__=it,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function is(){var t=this.__wrapped__;if(t instanceof w){var e=t;return this.__actions__.length&&(e=new w(this)),e=e.reverse(),e.__actions__.push({func:Qa,args:[Ea],thisArg:it}),new i(e,this.__chain__)}return this.thru(Ea)}function os(){return bi(this.__wrapped__,this.__actions__)}function as(t,e,n){var r=vh(t)?f:ur;return n&&Fo(t,e,n)&&(e=it),r(t,_o(e,3))}function ss(t,e){return(vh(t)?h:fr)(t,_o(e,3))}function us(t,e){return hr(ds(t,e),1)}function ls(t,e){return hr(ds(t,e),Bt)}function cs(t,e,n){return n=n===it?1:_u(n),hr(ds(t,e),n)}function fs(t,e){return(vh(t)?l:gf)(t,_o(e,3))}function hs(t,e){return(vh(t)?c:yf)(t,_o(e,3))}function ps(t,e,n,r){t=qs(t)?t:$u(t),n=n&&!r?_u(n):0;var i=t.length;return n<0&&(n=Hc(i+n,0)),gu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&S(t,e,n)>-1}function ds(t,e){return(vh(t)?g:Wr)(t,_o(e,3))}function gs(t,e,n,r){return null==t?[]:(vh(e)||(e=null==e?[]:[e]),n=r?it:n,vh(n)||(n=null==n?[]:[n]),Zr(t,e,n))}function ys(t,e,n){var r=vh(t)?v:T,i=arguments.length<3;return r(t,_o(e,4),n,i,gf)}function vs(t,e,n){var r=vh(t)?b:T,i=arguments.length<3;return r(t,_o(e,4),n,i,yf)}function bs(t,e){return(vh(t)?h:fr)(t,Bs(_o(e,3)))}function ms(t){return(vh(t)?Mn:ri)(t)}function ws(t,e,n){return e=(n?Fo(t,e,n):e===it)?1:_u(e),(vh(t)?Rn:ii)(t,e)}function xs(t){return(vh(t)?zn:ai)(t)}function _s(t){if(null==t)return 0;if(qs(t))return gu(t)?$(t):t.length;var e=Pf(t);return e==Xt||e==ee?t.size:Dr(t).length}function ks(t,e,n){var r=vh(t)?m:ui;return n&&Fo(t,e,n)&&(e=it),r(t,_o(e,3))}function Ss(t,e){if("function"!=typeof e)throw new cc(st);return t=_u(t),function(){if(--t<1)return e.apply(this,arguments)}}function Cs(t,e,n){return e=n?it:e,e=t&&null==e?t.length:e,lo(t,kt,it,it,it,it,e)}function As(t,e){var n;if("function"!=typeof e)throw new cc(st);return t=_u(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=it),n}}function Ps(t,e,n){e=n?it:e;var r=lo(t,mt,it,it,it,it,it,e);return r.placeholder=Ps.placeholder,r}function Es(t,e,n){e=n?it:e;var r=lo(t,wt,it,it,it,it,it,e);return r.placeholder=Es.placeholder,r}function Is(t,e,n){function r(e){var n=h,r=p;return h=p=it,b=e,g=t.apply(r,n)}function i(t){return b=t,y=Tf(s,e),m?r(t):g}function o(t){var n=t-v,r=t-b,i=e-n;return w?qc(i,d-r):i}function a(t){var n=t-v,r=t-b;return v===it||n>=e||n<0||w&&r>=d}function s(){var t=oh();if(a(t))return u(t);y=Tf(s,o(t))}function u(t){return y=it,x&&h?r(t):(h=p=it,g)}function l(){y!==it&&_f(y),b=0,h=v=p=y=it}function c(){return y===it?g:u(oh())}function f(){var t=oh(),n=a(t);if(h=arguments,p=this,v=t,n){if(y===it)return i(v);if(w)return y=Tf(s,e),r(v)}return y===it&&(y=Tf(s,e)),g}var h,p,d,g,y,v,b=0,m=!1,w=!1,x=!0;if("function"!=typeof t)throw new cc(st);return e=Su(e)||0,iu(n)&&(m=!!n.leading,w="maxWait"in n,d=w?Hc(Su(n.maxWait)||0,e):d,x="trailing"in n?!!n.trailing:x),f.cancel=l,f.flush=c,f}function Ts(t){return lo(t,Ct)}function Os(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new cc(st);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Os.Cache||ln),n}function Bs(t){if("function"!=typeof t)throw new cc(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Ls(t){return As(2,t)}function Ms(t,e){if("function"!=typeof t)throw new cc(st);return e=e===it?e:_u(e),ni(t,e)}function Rs(t,e){if("function"!=typeof t)throw new cc(st);return e=null==e?0:Hc(_u(e),0),ni(function(n){var r=n[e],i=Si(n,0,e);return r&&y(i,r),s(t,this,i)})}function Fs(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new cc(st);return iu(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Is(t,e,{leading:r,maxWait:e,trailing:i})}function zs(t){return Cs(t,1)}function Ds(t,e){return fh(_i(e),t)}function Ns(){if(!arguments.length)return[];var t=arguments[0];return vh(t)?t:[t]}function Us(t){return rr(t,pt)}function Ws(t,e){return e="function"==typeof e?e:it,rr(t,pt,e)}function js(t){return rr(t,ft|pt)}function Gs(t,e){return e="function"==typeof e?e:it,rr(t,ft|pt,e)}function Vs(t,e){return null==e||or(t,e,Uu(e))}function Hs(t,e){return t===e||t!==t&&e!==e}function qs(t){return null!=t&&ru(t.length)&&!eu(t)}function Zs(t){return ou(t)&&qs(t)}function Ys(t){return!0===t||!1===t||ou(t)&&br(t)==Gt}function Xs(t){return ou(t)&&1===t.nodeType&&!pu(t)}function Ks(t){if(null==t)return!0;if(qs(t)&&(vh(t)||"string"==typeof t||"function"==typeof t.splice||mh(t)||Sh(t)||yh(t)))return!t.length;var e=Pf(t);if(e==Xt||e==ee)return!t.size;if(Wo(t))return!Dr(t).length;for(var n in t)if(yc.call(t,n))return!1;return!0}function Js(t,e){return Ir(t,e)}function Qs(t,e,n){n="function"==typeof n?n:it;var r=n?n(t,e):it;return r===it?Ir(t,e,it,n):!!r}function $s(t){if(!ou(t))return!1;var e=br(t);return e==qt||e==Ht||"string"==typeof t.message&&"string"==typeof t.name&&!pu(t)}function tu(t){return"number"==typeof t&&jc(t)}function eu(t){if(!iu(t))return!1;var e=br(t);return e==Zt||e==Yt||e==jt||e==$t}function nu(t){return"number"==typeof t&&t==_u(t)}function ru(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Lt}function iu(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ou(t){return null!=t&&"object"==typeof t}function au(t,e){return t===e||Br(t,e,So(e))}function su(t,e,n){return n="function"==typeof n?n:it,Br(t,e,So(e),n)}function uu(t){return hu(t)&&t!=+t}function lu(t){if(Ef(t))throw new ic(at);return Lr(t)}function cu(t){return null===t}function fu(t){return null==t}function hu(t){return"number"==typeof t||ou(t)&&br(t)==Kt}function pu(t){if(!ou(t)||br(t)!=Qt)return!1;var e=Pc(t);if(null===e)return!0;var n=yc.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&gc.call(n)==wc}function du(t){return nu(t)&&t>=-Lt&&t<=Lt}function gu(t){return"string"==typeof t||!vh(t)&&ou(t)&&br(t)==ne}function yu(t){return"symbol"==typeof t||ou(t)&&br(t)==re}function vu(t){return t===it}function bu(t){return ou(t)&&Pf(t)==oe}function mu(t){return ou(t)&&br(t)==ae}function wu(t){if(!t)return[];if(qs(t))return gu(t)?tt(t):zi(t);if(Bc&&t[Bc])return H(t[Bc]());var e=Pf(t);return(e==Xt?q:e==ee?X:$u)(t)}function xu(t){if(!t)return 0===t?t:0;if((t=Su(t))===Bt||t===-Bt){return(t<0?-1:1)*Mt}return t===t?t:0}function _u(t){var e=xu(t),n=e%1;return e===e?n?e-n:e:0}function ku(t){return t?nr(_u(t),0,Ft):0}function Su(t){if("number"==typeof t)return t;if(yu(t))return Rt;if(iu(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=iu(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Me,"");var n=He.test(t);return n||Ze.test(t)?Tn(t.slice(2),n?2:8):Ve.test(t)?Rt:+t}function Cu(t){return Di(t,Wu(t))}function Au(t){return t?nr(_u(t),-Lt,Lt):0===t?t:0}function Pu(t){return null==t?"":pi(t)}function Eu(t,e){var n=df(t);return null==e?n:Qn(n,e)}function Iu(t,e){return _(t,_o(e,3),pr)}function Tu(t,e){return _(t,_o(e,3),dr)}function Ou(t,e){return null==t?t:vf(t,_o(e,3),Wu)}function Bu(t,e){return null==t?t:bf(t,_o(e,3),Wu)}function Lu(t,e){return t&&pr(t,_o(e,3))}function Mu(t,e){return t&&dr(t,_o(e,3))}function Ru(t){return null==t?[]:gr(t,Uu(t))}function Fu(t){return null==t?[]:gr(t,Wu(t))}function zu(t,e,n){var r=null==t?it:yr(t,e);return r===it?n:r}function Du(t,e){return null!=t&&Io(t,e,wr)}function Nu(t,e){return null!=t&&Io(t,e,xr)}function Uu(t){return qs(t)?Bn(t):Dr(t)}function Wu(t){return qs(t)?Bn(t,!0):Nr(t)}function ju(t,e){var n={};return e=_o(e,3),pr(t,function(t,r,i){tr(n,e(t,r,i),t)}),n}function Gu(t,e){var n={};return e=_o(e,3),pr(t,function(t,r,i){tr(n,r,e(t,r,i))}),n}function Vu(t,e){return Hu(t,Bs(_o(e)))}function Hu(t,e){if(null==t)return{};var n=g(mo(t),function(t){return[t]});return e=_o(e),Xr(t,n,function(t,n){return e(t,n[0])})}function qu(t,e,n){e=ki(e,t);var r=-1,i=e.length;for(i||(i=1,t=it);++r<i;){var o=null==t?it:t[$o(e[r])];o===it&&(r=i,o=n),t=eu(o)?o.call(t):o}return t}function Zu(t,e,n){return null==t?t:oi(t,e,n)}function Yu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:oi(t,e,n,r)}function Xu(t,e,n){var r=vh(t),i=r||mh(t)||Sh(t);if(e=_o(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:iu(t)&&eu(o)?df(Pc(t)):{}}return(i?l:pr)(t,function(t,r,i){return e(n,t,r,i)}),n}function Ku(t,e){return null==t||gi(t,e)}function Ju(t,e,n){return null==t?t:yi(t,e,_i(n))}function Qu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:yi(t,e,_i(n),r)}function $u(t){return null==t?[]:F(t,Uu(t))}function tl(t){return null==t?[]:F(t,Wu(t))}function el(t,e,n){return n===it&&(n=e,e=it),n!==it&&(n=Su(n),n=n===n?n:0),e!==it&&(e=Su(e),e=e===e?e:0),nr(Su(t),e,n)}function nl(t,e,n){return e=xu(e),n===it?(n=e,e=0):n=xu(n),t=Su(t),_r(t,e,n)}function rl(t,e,n){if(n&&"boolean"!=typeof n&&Fo(t,e,n)&&(e=n=it),n===it&&("boolean"==typeof e?(n=e,e=it):"boolean"==typeof t&&(n=t,t=it)),t===it&&e===it?(t=0,e=1):(t=xu(t),e===it?(e=t,t=0):e=xu(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Xc();return qc(t+i*(e-t+In("1e-"+((i+"").length-1))),e)}return $r(t,e)}function il(t){return Kh(Pu(t).toLowerCase())}function ol(t){return(t=Pu(t))&&t.replace(Xe,qn).replace(yn,"")}function al(t,e,n){t=Pu(t),e=pi(e);var r=t.length;n=n===it?r:nr(_u(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function sl(t){return t=Pu(t),t&&Se.test(t)?t.replace(_e,Zn):t}function ul(t){return t=Pu(t),t&&Le.test(t)?t.replace(Be,"\\$&"):t}function ll(t,e,n){t=Pu(t),e=_u(e);var r=e?$(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return no(Nc(i),n)+t+no(Dc(i),n)}function cl(t,e,n){t=Pu(t),e=_u(e);var r=e?$(t):0;return e&&r<e?t+no(e-r,n):t}function fl(t,e,n){t=Pu(t),e=_u(e);var r=e?$(t):0;return e&&r<e?no(e-r,n)+t:t}function hl(t,e,n){return n||null==e?e=0:e&&(e=+e),Yc(Pu(t).replace(Re,""),e||0)}function pl(t,e,n){return e=(n?Fo(t,e,n):e===it)?1:_u(e),ei(Pu(t),e)}function dl(){var t=arguments,e=Pu(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function gl(t,e,n){return n&&"number"!=typeof n&&Fo(t,e,n)&&(e=n=it),(n=n===it?Ft:n>>>0)?(t=Pu(t),t&&("string"==typeof e||null!=e&&!_h(e))&&!(e=pi(e))&&G(t)?Si(tt(t),0,n):t.split(e,n)):[]}function yl(t,e,n){return t=Pu(t),n=null==n?0:nr(_u(n),0,t.length),e=pi(e),t.slice(n,n+e.length)==e}function vl(t,e,r){var i=n.templateSettings;r&&Fo(t,e,r)&&(e=it),t=Pu(t),e=Ih({},e,i,co);var o,a,s=Ih({},e.imports,i.imports,co),u=Uu(s),l=F(s,u),c=0,f=e.interpolate||Ke,h="__p += '",p=uc((e.escape||Ke).source+"|"+f.source+"|"+(f===Pe?je:Ke).source+"|"+(e.evaluate||Ke).source+"|$","g"),d="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++_n+"]")+"\n";t.replace(p,function(e,n,r,i,s,u){return r||(r=i),h+=t.slice(c,u).replace(Je,W),n&&(o=!0,h+="' +\n__e("+n+") +\n'"),s&&(a=!0,h+="';\n"+s+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),c=u+e.length,e}),h+="';\n";var g=e.variable;g||(h="with (obj) {\n"+h+"\n}\n"),h=(a?h.replace(be,""):h).replace(me,"$1").replace(we,"$1;"),h="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var y=Jh(function(){return oc(u,d+"return "+h).apply(it,l)});if(y.source=h,$s(y))throw y;return y}function bl(t){return Pu(t).toLowerCase()}function ml(t){return Pu(t).toUpperCase()}function wl(t,e,n){if((t=Pu(t))&&(n||e===it))return t.replace(Me,"");if(!t||!(e=pi(e)))return t;var r=tt(t),i=tt(e);return Si(r,D(r,i),N(r,i)+1).join("")}function xl(t,e,n){if((t=Pu(t))&&(n||e===it))return t.replace(Fe,"");if(!t||!(e=pi(e)))return t;var r=tt(t);return Si(r,0,N(r,tt(e))+1).join("")}function _l(t,e,n){if((t=Pu(t))&&(n||e===it))return t.replace(Re,"");if(!t||!(e=pi(e)))return t;var r=tt(t);return Si(r,D(r,tt(e))).join("")}function kl(t,e){var n=At,r=Pt;if(iu(e)){var i="separator"in e?e.separator:i;n="length"in e?_u(e.length):n,r="omission"in e?pi(e.omission):r}t=Pu(t);var o=t.length;if(G(t)){var a=tt(t);o=a.length}if(n>=o)return t;var s=n-$(r);if(s<1)return r;var u=a?Si(a,0,s).join(""):t.slice(0,s);if(i===it)return u+r;if(a&&(s+=u.length-s),_h(i)){if(t.slice(s).search(i)){var l,c=u;for(i.global||(i=uc(i.source,Pu(Ge.exec(i))+"g")),i.lastIndex=0;l=i.exec(c);)var f=l.index;u=u.slice(0,f===it?s:f)}}else if(t.indexOf(pi(i),s)!=s){var h=u.lastIndexOf(i);h>-1&&(u=u.slice(0,h))}return u+r}function Sl(t){return t=Pu(t),t&&ke.test(t)?t.replace(xe,Yn):t}function Cl(t,e,n){return t=Pu(t),e=n?it:e,e===it?V(t)?rt(t):x(t):t.match(e)||[]}function Al(t){var e=null==t?0:t.length,n=_o();return t=e?g(t,function(t){if("function"!=typeof t[1])throw new cc(st);return[n(t[0]),t[1]]}):[],ni(function(n){for(var r=-1;++r<e;){var i=t[r];if(s(i[0],this,n))return s(i[1],this,n)}})}function Pl(t){return ir(rr(t,ft))}function El(t){return function(){return t}}function Il(t,e){return null==t||t!==t?e:t}function Tl(t){return t}function Ol(t){return zr("function"==typeof t?t:rr(t,ft))}function Bl(t){return jr(rr(t,ft))}function Ll(t,e){return Gr(t,rr(e,ft))}function Ml(t,e,n){var r=Uu(e),i=gr(e,r);null!=n||iu(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=gr(e,Uu(e)));var o=!(iu(n)&&"chain"in n&&!n.chain),a=eu(t);return l(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=zi(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,y([this.value()],arguments))})}),t}function Rl(){return Ln._===this&&(Ln._=xc),this}function Fl(){}function zl(t){return t=_u(t),ni(function(e){return qr(e,t)})}function Dl(t){return zo(t)?E($o(t)):Kr(t)}function Nl(t){return function(e){return null==t?it:yr(t,e)}}function Ul(){return[]}function Wl(){return!1}function jl(){return{}}function Gl(){return""}function Vl(){return!0}function Hl(t,e){if((t=_u(t))<1||t>Lt)return[];var n=Ft,r=qc(t,Ft);e=_o(e),t-=Ft;for(var i=L(r,e);++n<t;)e(n);return i}function ql(t){return vh(t)?g(t,$o):yu(t)?[t]:zi(Bf(Pu(t)))}function Zl(t){var e=++vc;return Pu(t)+e}function Yl(t){return t&&t.length?lr(t,Tl,mr):it}function Xl(t,e){return t&&t.length?lr(t,_o(e,2),mr):it}function Kl(t){return P(t,Tl)}function Jl(t,e){return P(t,_o(e,2))}function Ql(t){return t&&t.length?lr(t,Tl,Ur):it}function $l(t,e){return t&&t.length?lr(t,_o(e,2),Ur):it}function tc(t){return t&&t.length?B(t,Tl):0}function ec(t,e){return t&&t.length?B(t,_o(e,2)):0}e=null==e?Ln:Xn.defaults(Ln.Object(),e,Xn.pick(Ln,xn));var nc=e.Array,rc=e.Date,ic=e.Error,oc=e.Function,ac=e.Math,sc=e.Object,uc=e.RegExp,lc=e.String,cc=e.TypeError,fc=nc.prototype,hc=oc.prototype,pc=sc.prototype,dc=e["__core-js_shared__"],gc=hc.toString,yc=pc.hasOwnProperty,vc=0,bc=function(){var t=/[^.]+$/.exec(dc&&dc.keys&&dc.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),mc=pc.toString,wc=gc.call(sc),xc=Ln._,_c=uc("^"+gc.call(yc).replace(Be,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),kc=Fn?e.Buffer:it,Sc=e.Symbol,Cc=e.Uint8Array,Ac=kc?kc.allocUnsafe:it,Pc=Z(sc.getPrototypeOf,sc),Ec=sc.create,Ic=pc.propertyIsEnumerable,Tc=fc.splice,Oc=Sc?Sc.isConcatSpreadable:it,Bc=Sc?Sc.iterator:it,Lc=Sc?Sc.toStringTag:it,Mc=function(){try{var t=Co(sc,"defineProperty");return t({},"",{}),t}catch(t){}}(),Rc=e.clearTimeout!==Ln.clearTimeout&&e.clearTimeout,Fc=rc&&rc.now!==Ln.Date.now&&rc.now,zc=e.setTimeout!==Ln.setTimeout&&e.setTimeout,Dc=ac.ceil,Nc=ac.floor,Uc=sc.getOwnPropertySymbols,Wc=kc?kc.isBuffer:it,jc=e.isFinite,Gc=fc.join,Vc=Z(sc.keys,sc),Hc=ac.max,qc=ac.min,Zc=rc.now,Yc=e.parseInt,Xc=ac.random,Kc=fc.reverse,Jc=Co(e,"DataView"),Qc=Co(e,"Map"),$c=Co(e,"Promise"),tf=Co(e,"Set"),ef=Co(e,"WeakMap"),nf=Co(sc,"create"),rf=ef&&new ef,of={},af=ta(Jc),sf=ta(Qc),uf=ta($c),lf=ta(tf),cf=ta(ef),ff=Sc?Sc.prototype:it,hf=ff?ff.valueOf:it,pf=ff?ff.toString:it,df=function(){function t(){}return function(e){if(!iu(e))return{};if(Ec)return Ec(e);t.prototype=e;var n=new t;return t.prototype=it,n}}();n.templateSettings={escape:Ce,evaluate:Ae,interpolate:Pe,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=df(r.prototype),i.prototype.constructor=i,w.prototype=df(r.prototype),w.prototype.constructor=w,nt.prototype.clear=Ue,nt.prototype.delete=Qe,nt.prototype.get=$e,nt.prototype.has=tn,nt.prototype.set=en,nn.prototype.clear=rn,nn.prototype.delete=on,nn.prototype.get=an,nn.prototype.has=sn,nn.prototype.set=un,ln.prototype.clear=cn,ln.prototype.delete=fn,ln.prototype.get=hn,ln.prototype.has=pn,ln.prototype.set=dn,vn.prototype.add=vn.prototype.push=bn,vn.prototype.has=mn,wn.prototype.clear=Cn,wn.prototype.delete=An,wn.prototype.get=Pn,wn.prototype.has=En,wn.prototype.set=On;var gf=Gi(pr),yf=Gi(dr,!0),vf=Vi(),bf=Vi(!0),mf=rf?function(t,e){return rf.set(t,e),t}:Tl,wf=Mc?function(t,e){return Mc(t,"toString",{configurable:!0,enumerable:!1,value:El(e),writable:!0})}:Tl,xf=ni,_f=Rc||function(t){return Ln.clearTimeout(t)},kf=tf&&1/X(new tf([,-0]))[1]==Bt?function(t){return new tf(t)}:Fl,Sf=rf?function(t){return rf.get(t)}:Fl,Cf=Uc?function(t){return null==t?[]:(t=sc(t),h(Uc(t),function(e){return Ic.call(t,e)}))}:Ul,Af=Uc?function(t){for(var e=[];t;)y(e,Cf(t)),t=Pc(t);return e}:Ul,Pf=br;(Jc&&Pf(new Jc(new ArrayBuffer(1)))!=ue||Qc&&Pf(new Qc)!=Xt||$c&&"[object Promise]"!=Pf($c.resolve())||tf&&Pf(new tf)!=ee||ef&&Pf(new ef)!=oe)&&(Pf=function(t){var e=br(t),n=e==Qt?t.constructor:it,r=n?ta(n):"";if(r)switch(r){case af:return ue;case sf:return Xt;case uf:return"[object Promise]";case lf:return ee;case cf:return oe}return e});var Ef=dc?eu:Wl,If=Jo(mf),Tf=zc||function(t,e){return Ln.setTimeout(t,e)},Of=Jo(wf),Bf=function(t){var e=Os(t,function(t){return n.size===lt&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return Te.test(t)&&e.push(""),t.replace(Oe,function(t,n,r,i){e.push(r?i.replace(We,"$1"):n||t)}),e}),Lf=ni(function(t,e){return Zs(t)?sr(t,hr(e,1,Zs,!0)):[]}),Mf=ni(function(t,e){var n=xa(e);return Zs(n)&&(n=it),Zs(t)?sr(t,hr(e,1,Zs,!0),_o(n,2)):[]}),Rf=ni(function(t,e){var n=xa(e);return Zs(n)&&(n=it),Zs(t)?sr(t,hr(e,1,Zs,!0),it,n):[]}),Ff=ni(function(t){var e=g(t,xi);return e.length&&e[0]===t[0]?kr(e):[]}),zf=ni(function(t){var e=xa(t),n=g(t,xi);return e===xa(n)?e=it:n.pop(),n.length&&n[0]===t[0]?kr(n,_o(e,2)):[]}),Df=ni(function(t){var e=xa(t),n=g(t,xi);return e="function"==typeof e?e:it,e&&n.pop(),n.length&&n[0]===t[0]?kr(n,it,e):[]}),Nf=ni(Sa),Uf=vo(function(t,e){var n=null==t?0:t.length,r=er(t,e);return Qr(t,g(e,function(t){return Ro(t,n)?+t:t}).sort(Li)),r}),Wf=ni(function(t){return di(hr(t,1,Zs,!0))}),jf=ni(function(t){var e=xa(t);return Zs(e)&&(e=it),di(hr(t,1,Zs,!0),_o(e,2))}),Gf=ni(function(t){var e=xa(t);return e="function"==typeof e?e:it,di(hr(t,1,Zs,!0),it,e)}),Vf=ni(function(t,e){return Zs(t)?sr(t,e):[]}),Hf=ni(function(t){return mi(h(t,Zs))}),qf=ni(function(t){var e=xa(t);return Zs(e)&&(e=it),mi(h(t,Zs),_o(e,2))}),Zf=ni(function(t){var e=xa(t);return e="function"==typeof e?e:it,mi(h(t,Zs),it,e)}),Yf=ni(qa),Xf=ni(function(t){var e=t.length,n=e>1?t[e-1]:it;return n="function"==typeof n?(t.pop(),n):it,Za(t,n)}),Kf=vo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return er(e,t)};return!(e>1||this.__actions__.length)&&r instanceof w&&Ro(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Qa,args:[o],thisArg:it}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(it),t})):this.thru(o)}),Jf=Wi(function(t,e,n){yc.call(t,n)?++t[n]:tr(t,n,1)}),Qf=Ki(fa),$f=Ki(ha),th=Wi(function(t,e,n){yc.call(t,n)?t[n].push(e):tr(t,n,[e])}),eh=ni(function(t,e,n){var r=-1,i="function"==typeof e,o=qs(t)?nc(t.length):[];return gf(t,function(t){o[++r]=i?s(e,t,n):Cr(t,e,n)}),o}),nh=Wi(function(t,e,n){tr(t,n,e)}),rh=Wi(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),ih=ni(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Fo(t,e[0],e[1])?e=[]:n>2&&Fo(e[0],e[1],e[2])&&(e=[e[0]]),Zr(t,hr(e,1),[])}),oh=Fc||function(){return Ln.Date.now()},ah=ni(function(t,e,n){var r=yt;if(n.length){var i=Y(n,xo(ah));r|=xt}return lo(t,r,e,n,i)}),sh=ni(function(t,e,n){var r=yt|vt;if(n.length){var i=Y(n,xo(sh));r|=xt}return lo(e,r,t,n,i)}),uh=ni(function(t,e){return ar(t,1,e)}),lh=ni(function(t,e,n){return ar(t,Su(e)||0,n)});Os.Cache=ln;var ch=xf(function(t,e){e=1==e.length&&vh(e[0])?g(e[0],R(_o())):g(hr(e,1),R(_o()));var n=e.length;return ni(function(r){for(var i=-1,o=qc(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return s(t,this,r)})}),fh=ni(function(t,e){var n=Y(e,xo(fh));return lo(t,xt,it,e,n)}),hh=ni(function(t,e){var n=Y(e,xo(hh));return lo(t,_t,it,e,n)}),ph=vo(function(t,e){return lo(t,St,it,it,it,e)}),dh=oo(mr),gh=oo(function(t,e){return t>=e}),yh=Ar(function(){return arguments}())?Ar:function(t){return ou(t)&&yc.call(t,"callee")&&!Ic.call(t,"callee")},vh=nc.isArray,bh=Nn?R(Nn):Pr,mh=Wc||Wl,wh=Un?R(Un):Er,xh=Wn?R(Wn):Or,_h=jn?R(jn):Mr,kh=Gn?R(Gn):Rr,Sh=Vn?R(Vn):Fr,Ch=oo(Ur),Ah=oo(function(t,e){return t<=e}),Ph=ji(function(t,e){if(Wo(e)||qs(e))return void Di(e,Uu(e),t);for(var n in e)yc.call(e,n)&&Hn(t,n,e[n])}),Eh=ji(function(t,e){Di(e,Wu(e),t)}),Ih=ji(function(t,e,n,r){Di(e,Wu(e),t,r)}),Th=ji(function(t,e,n,r){Di(e,Uu(e),t,r)}),Oh=vo(er),Bh=ni(function(t){return t.push(it,co),s(Ih,it,t)}),Lh=ni(function(t){return t.push(it,fo),s(Dh,it,t)}),Mh=$i(function(t,e,n){t[e]=n},El(Tl)),Rh=$i(function(t,e,n){yc.call(t,e)?t[e].push(n):t[e]=[n]},_o),Fh=ni(Cr),zh=ji(function(t,e,n){Vr(t,e,n)}),Dh=ji(function(t,e,n,r){Vr(t,e,n,r)}),Nh=vo(function(t,e){var n={};if(null==t)return n;var r=!1;e=g(e,function(e){return e=ki(e,t),r||(r=e.length>1),e}),Di(t,mo(t),n),r&&(n=rr(n,ft|ht|pt,ho));for(var i=e.length;i--;)gi(n,e[i]);return n}),Uh=vo(function(t,e){return null==t?{}:Yr(t,e)}),Wh=uo(Uu),jh=uo(Wu),Gh=Zi(function(t,e,n){return e=e.toLowerCase(),t+(n?il(e):e)}),Vh=Zi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Hh=Zi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),qh=qi("toLowerCase"),Zh=Zi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Yh=Zi(function(t,e,n){return t+(n?" ":"")+Kh(e)}),Xh=Zi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Kh=qi("toUpperCase"),Jh=ni(function(t,e){try{return s(t,it,e)}catch(t){return $s(t)?t:new ic(t)}}),Qh=vo(function(t,e){return l(e,function(e){e=$o(e),tr(t,e,ah(t[e],t))}),t}),$h=Ji(),tp=Ji(!0),ep=ni(function(t,e){return function(n){return Cr(n,t,e)}}),np=ni(function(t,e){return function(n){return Cr(t,n,e)}}),rp=eo(g),ip=eo(f),op=eo(m),ap=io(),sp=io(!0),up=to(function(t,e){return t+e},0),lp=so("ceil"),cp=to(function(t,e){return t/e},1),fp=so("floor"),hp=to(function(t,e){return t*e},1),pp=so("round"),dp=to(function(t,e){return t-e},0);return n.after=Ss,n.ary=Cs,n.assign=Ph,n.assignIn=Eh,n.assignInWith=Ih,n.assignWith=Th,n.at=Oh,n.before=As,n.bind=ah,n.bindAll=Qh,n.bindKey=sh, n.castArray=Ns,n.chain=Ka,n.chunk=ra,n.compact=ia,n.concat=oa,n.cond=Al,n.conforms=Pl,n.constant=El,n.countBy=Jf,n.create=Eu,n.curry=Ps,n.curryRight=Es,n.debounce=Is,n.defaults=Bh,n.defaultsDeep=Lh,n.defer=uh,n.delay=lh,n.difference=Lf,n.differenceBy=Mf,n.differenceWith=Rf,n.drop=aa,n.dropRight=sa,n.dropRightWhile=ua,n.dropWhile=la,n.fill=ca,n.filter=ss,n.flatMap=us,n.flatMapDeep=ls,n.flatMapDepth=cs,n.flatten=pa,n.flattenDeep=da,n.flattenDepth=ga,n.flip=Ts,n.flow=$h,n.flowRight=tp,n.fromPairs=ya,n.functions=Ru,n.functionsIn=Fu,n.groupBy=th,n.initial=ma,n.intersection=Ff,n.intersectionBy=zf,n.intersectionWith=Df,n.invert=Mh,n.invertBy=Rh,n.invokeMap=eh,n.iteratee=Ol,n.keyBy=nh,n.keys=Uu,n.keysIn=Wu,n.map=ds,n.mapKeys=ju,n.mapValues=Gu,n.matches=Bl,n.matchesProperty=Ll,n.memoize=Os,n.merge=zh,n.mergeWith=Dh,n.method=ep,n.methodOf=np,n.mixin=Ml,n.negate=Bs,n.nthArg=zl,n.omit=Nh,n.omitBy=Vu,n.once=Ls,n.orderBy=gs,n.over=rp,n.overArgs=ch,n.overEvery=ip,n.overSome=op,n.partial=fh,n.partialRight=hh,n.partition=rh,n.pick=Uh,n.pickBy=Hu,n.property=Dl,n.propertyOf=Nl,n.pull=Nf,n.pullAll=Sa,n.pullAllBy=Ca,n.pullAllWith=Aa,n.pullAt=Uf,n.range=ap,n.rangeRight=sp,n.rearg=ph,n.reject=bs,n.remove=Pa,n.rest=Ms,n.reverse=Ea,n.sampleSize=ws,n.set=Zu,n.setWith=Yu,n.shuffle=xs,n.slice=Ia,n.sortBy=ih,n.sortedUniq=Fa,n.sortedUniqBy=za,n.split=gl,n.spread=Rs,n.tail=Da,n.take=Na,n.takeRight=Ua,n.takeRightWhile=Wa,n.takeWhile=ja,n.tap=Ja,n.throttle=Fs,n.thru=Qa,n.toArray=wu,n.toPairs=Wh,n.toPairsIn=jh,n.toPath=ql,n.toPlainObject=Cu,n.transform=Xu,n.unary=zs,n.union=Wf,n.unionBy=jf,n.unionWith=Gf,n.uniq=Ga,n.uniqBy=Va,n.uniqWith=Ha,n.unset=Ku,n.unzip=qa,n.unzipWith=Za,n.update=Ju,n.updateWith=Qu,n.values=$u,n.valuesIn=tl,n.without=Vf,n.words=Cl,n.wrap=Ds,n.xor=Hf,n.xorBy=qf,n.xorWith=Zf,n.zip=Yf,n.zipObject=Ya,n.zipObjectDeep=Xa,n.zipWith=Xf,n.entries=Wh,n.entriesIn=jh,n.extend=Eh,n.extendWith=Ih,Ml(n,n),n.add=up,n.attempt=Jh,n.camelCase=Gh,n.capitalize=il,n.ceil=lp,n.clamp=el,n.clone=Us,n.cloneDeep=js,n.cloneDeepWith=Gs,n.cloneWith=Ws,n.conformsTo=Vs,n.deburr=ol,n.defaultTo=Il,n.divide=cp,n.endsWith=al,n.eq=Hs,n.escape=sl,n.escapeRegExp=ul,n.every=as,n.find=Qf,n.findIndex=fa,n.findKey=Iu,n.findLast=$f,n.findLastIndex=ha,n.findLastKey=Tu,n.floor=fp,n.forEach=fs,n.forEachRight=hs,n.forIn=Ou,n.forInRight=Bu,n.forOwn=Lu,n.forOwnRight=Mu,n.get=zu,n.gt=dh,n.gte=gh,n.has=Du,n.hasIn=Nu,n.head=va,n.identity=Tl,n.includes=ps,n.indexOf=ba,n.inRange=nl,n.invoke=Fh,n.isArguments=yh,n.isArray=vh,n.isArrayBuffer=bh,n.isArrayLike=qs,n.isArrayLikeObject=Zs,n.isBoolean=Ys,n.isBuffer=mh,n.isDate=wh,n.isElement=Xs,n.isEmpty=Ks,n.isEqual=Js,n.isEqualWith=Qs,n.isError=$s,n.isFinite=tu,n.isFunction=eu,n.isInteger=nu,n.isLength=ru,n.isMap=xh,n.isMatch=au,n.isMatchWith=su,n.isNaN=uu,n.isNative=lu,n.isNil=fu,n.isNull=cu,n.isNumber=hu,n.isObject=iu,n.isObjectLike=ou,n.isPlainObject=pu,n.isRegExp=_h,n.isSafeInteger=du,n.isSet=kh,n.isString=gu,n.isSymbol=yu,n.isTypedArray=Sh,n.isUndefined=vu,n.isWeakMap=bu,n.isWeakSet=mu,n.join=wa,n.kebabCase=Vh,n.last=xa,n.lastIndexOf=_a,n.lowerCase=Hh,n.lowerFirst=qh,n.lt=Ch,n.lte=Ah,n.max=Yl,n.maxBy=Xl,n.mean=Kl,n.meanBy=Jl,n.min=Ql,n.minBy=$l,n.stubArray=Ul,n.stubFalse=Wl,n.stubObject=jl,n.stubString=Gl,n.stubTrue=Vl,n.multiply=hp,n.nth=ka,n.noConflict=Rl,n.noop=Fl,n.now=oh,n.pad=ll,n.padEnd=cl,n.padStart=fl,n.parseInt=hl,n.random=rl,n.reduce=ys,n.reduceRight=vs,n.repeat=pl,n.replace=dl,n.result=qu,n.round=pp,n.runInContext=t,n.sample=ms,n.size=_s,n.snakeCase=Zh,n.some=ks,n.sortedIndex=Ta,n.sortedIndexBy=Oa,n.sortedIndexOf=Ba,n.sortedLastIndex=La,n.sortedLastIndexBy=Ma,n.sortedLastIndexOf=Ra,n.startCase=Yh,n.startsWith=yl,n.subtract=dp,n.sum=tc,n.sumBy=ec,n.template=vl,n.times=Hl,n.toFinite=xu,n.toInteger=_u,n.toLength=ku,n.toLower=bl,n.toNumber=Su,n.toSafeInteger=Au,n.toString=Pu,n.toUpper=ml,n.trim=wl,n.trimEnd=xl,n.trimStart=_l,n.truncate=kl,n.unescape=Sl,n.uniqueId=Zl,n.upperCase=Xh,n.upperFirst=Kh,n.each=fs,n.eachRight=hs,n.first=va,Ml(n,function(){var t={};return pr(n,function(e,r){yc.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.4",l(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),l(["drop","take"],function(t,e){w.prototype[t]=function(n){n=n===it?1:Hc(_u(n),0);var r=this.__filtered__&&!e?new w(this):this.clone();return r.__filtered__?r.__takeCount__=qc(n,r.__takeCount__):r.__views__.push({size:qc(n,Ft),type:t+(r.__dir__<0?"Right":"")}),r},w.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),l(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==Tt||3==n;w.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:_o(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),l(["head","last"],function(t,e){var n="take"+(e?"Right":"");w.prototype[t]=function(){return this[n](1).value()[0]}}),l(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");w.prototype[t]=function(){return this.__filtered__?new w(this):this[n](1)}}),w.prototype.compact=function(){return this.filter(Tl)},w.prototype.find=function(t){return this.filter(t).head()},w.prototype.findLast=function(t){return this.reverse().find(t)},w.prototype.invokeMap=ni(function(t,e){return"function"==typeof t?new w(this):this.map(function(n){return Cr(n,t,e)})}),w.prototype.reject=function(t){return this.filter(Bs(_o(t)))},w.prototype.slice=function(t,e){t=_u(t);var n=this;return n.__filtered__&&(t>0||e<0)?new w(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==it&&(e=_u(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},w.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},w.prototype.toArray=function(){return this.take(Ft)},pr(w.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],s=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,u=o?[1]:arguments,l=e instanceof w,c=u[0],f=l||vh(e),h=function(t){var e=a.apply(n,y([t],u));return o&&p?e[0]:e};f&&r&&"function"==typeof c&&1!=c.length&&(l=f=!1);var p=this.__chain__,d=!!this.__actions__.length,g=s&&!p,v=l&&!d;if(!s&&f){e=v?e:new w(this);var b=t.apply(e,u);return b.__actions__.push({func:Qa,args:[h],thisArg:it}),new i(b,p)}return g&&v?t.apply(this,u):(b=this.thru(h),g?o?b.value()[0]:b.value():b)})}),l(["pop","push","shift","sort","splice","unshift"],function(t){var e=fc[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(vh(n)?n:[],t)}return this[r](function(n){return e.apply(vh(n)?n:[],t)})}}),pr(w.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(of[i]||(of[i]=[])).push({name:e,func:r})}}),of[Qi(it,vt).name]=[{name:"wrapper",func:it}],w.prototype.clone=I,w.prototype.reverse=J,w.prototype.value=et,n.prototype.at=Kf,n.prototype.chain=$a,n.prototype.commit=ts,n.prototype.next=es,n.prototype.plant=rs,n.prototype.reverse=is,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=os,n.prototype.first=n.prototype.head,Bc&&(n.prototype[Bc]=ns),n}();Ln._=Xn,(r=function(){return Xn}.call(e,n,e,i))!==it&&(i.exports=r)}).call(this)}).call(e,function(){return this}(),n(8)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";function r(t,e){var n="normal";return t&&e?n="bolditalics":t?n="bold":e&&(n="italics"),n}function i(t,e){this.fonts={},this.pdfKitDoc=e,this.fontCache={};for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];this.fonts[n]={normal:r.normal,bold:r.bold,italics:r.italics,bolditalics:r.bolditalics}}}n(7).noConflict(),i.prototype.provideFont=function(t,e,n){var i=r(e,n);if(!this.fonts[t]||!this.fonts[t][i])throw new Error("Font '"+t+"' in style '"+i+"' is not defined in the font section of the document definition.");if(this.fontCache[t]=this.fontCache[t]||{},!this.fontCache[t][i]){var o=this.fonts[t][i];Array.isArray(o)||(o=[o]),this.fontCache[t][i]=this.pdfKitDoc.font.apply(this.pdfKitDoc,o)._font}return this.fontCache[t][i]},t.exports=i},function(t,e,n){"use strict";function r(t,e){a.each(e,function(e){t.push(e)})}function i(t,e,n){this.pageSize=t,this.pageMargins=e,this.tracker=new s,this.imageMeasure=n,this.tableLayouts={}}function o(t){var e=t.x,n=t.y;t.positions=[],a.each(t.canvas,function(t){var e=t.x,n=t.y,r=t.x1,i=t.y1,o=t.x2,a=t.y2;t.resetXY=function(){t.x=e,t.y=n,t.x1=r,t.y1=i,t.x2=o,t.y2=a}}),t.resetXY=function(){t.x=e,t.y=n,a.each(t.canvas,function(t){t.resetXY()})}}var a=n(7),s=n(11),u=n(12),l=n(14),c=n(25),f=n(26),h=n(23),p=n(29),d=n(28),g=n(13).pack,y=n(13).offsetVector,v=n(13).fontStringify,b=n(13).isFunction,m=n(15),w=n(22);i.prototype.registerTableLayouts=function(t){this.tableLayouts=g(this.tableLayouts,t)},i.prototype.layoutDocument=function(t,e,n,r,i,o,s,c,f,h){this.docPreprocessor=new u,this.docMeasure=new l(e,n,r,this.imageMeasure,this.tableLayouts,c);for(var p=this.tryLayoutDocument(t,e,n,r,i,o,s,c,f);function(t,e){return!!b(h)&&(t=a.reject(t,function(t){return a.isEmpty(t.positions)}),a.each(t,function(t){var n=a.pick(t,["id","text","ul","ol","table","image","qr","canvas","columns","headlineLevel","style","pageBreak","pageOrientation","width","height"]);n.startPosition=a.first(t.positions),n.pageNumbers=a.chain(t.positions).map("pageNumber").uniq().value(),n.pages=e.length,n.stack=a.isArray(t.stack),t.nodeInfo=n}),a.some(t,function(t,e,n){if("before"!==t.pageBreak&&!t.pageBreakCalculated){t.pageBreakCalculated=!0;var r=a.first(t.nodeInfo.pageNumbers),i=a.chain(n).drop(e+1).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r)}).value(),o=a.chain(n).drop(e+1).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r+1)}).value(),s=a.chain(n).take(e).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r)}).value();if(h(t.nodeInfo,a.map(i,"nodeInfo"),a.map(o,"nodeInfo"),a.map(s,"nodeInfo")))return t.pageBreak="before",!0}}))}(p.linearNodeList,p.pages);)!function(t){a.each(t.linearNodeList,function(t){t.resetXY()})}(p),p=this.tryLayoutDocument(t,e,n,r,i,o,s,c,f);return p.pages},i.prototype.tryLayoutDocument=function(t,e,n,r,i,o,a,s,u,l){this.linearNodeList=[],t=this.docPreprocessor.preprocessDocument(t),t=this.docMeasure.measureDocument(t),this.writer=new f(new c(this.pageSize,this.pageMargins),this.tracker);var h=this;return this.writer.context().tracker.startTracking("pageAdded",function(){h.addBackground(i)}),this.addBackground(i),this.processNode(t),this.addHeadersAndFooters(o,a),null!=u&&this.addWatermark(u,e,r),{pages:this.writer.context().pages,linearNodeList:this.linearNodeList}},i.prototype.addBackground=function(t){var e=b(t)?t:function(){return t},n=e(this.writer.context().page+1);if(n){var r=this.writer.context().getCurrentPage().pageSize;this.writer.beginUnbreakableBlock(r.width,r.height),n=this.docPreprocessor.preprocessDocument(n),this.processNode(this.docMeasure.measureDocument(n)),this.writer.commitUnbreakableBlock(0,0)}},i.prototype.addStaticRepeatable=function(t,e){this.addDynamicRepeatable(function(){return JSON.parse(JSON.stringify(t))},e)},i.prototype.addDynamicRepeatable=function(t,e){for(var n=this.writer.context().pages,r=0,i=n.length;r<i;r++){this.writer.context().page=r;var o=t(r+1,i,this.writer.context().pages[r].pageSize);if(o){var a=e(this.writer.context().getCurrentPage().pageSize,this.pageMargins);this.writer.beginUnbreakableBlock(a.width,a.height),o=this.docPreprocessor.preprocessDocument(o),this.processNode(this.docMeasure.measureDocument(o)),this.writer.commitUnbreakableBlock(a.x,a.y)}}},i.prototype.addHeadersAndFooters=function(t,e){var n=function(t,e){return{x:0,y:0,width:t.width,height:e.top}},r=function(t,e){return{x:0,y:t.height-e.bottom,width:t.width,height:e.bottom}};b(t)?this.addDynamicRepeatable(t,n):t&&this.addStaticRepeatable(t,n),b(e)?this.addDynamicRepeatable(e,r):e&&this.addStaticRepeatable(e,r)},i.prototype.addWatermark=function(t,e,n){if("string"==typeof t&&(t={text:t}),t.text){t.font=t.font||n.font||"Roboto",t.color=t.color||"black",t.opacity=t.opacity||.6,t.bold=t.bold||!1,t.italics=t.italics||!1;for(var r={text:t.text,font:e.provideFont(t.font,t.bold,t.italics),size:function(t,e,n){for(var r,i=t.width,o=t.height,a=.8*Math.sqrt(i*i+o*o),s=new m(n),u=new w(null,{font:e.font,bold:e.bold,italics:e.italics}),l=0,c=1e3,f=(l+c)/2;Math.abs(l-c)>1;)u.push({fontSize:f}),r=s.sizeOfString(e.text,u),r.width>a?(c=f,f=(l+c)/2):r.width<a&&(l=f,f=(l+c)/2),u.pop();return{size:r,fontSize:f}}(this.pageSize,t,e),color:t.color,opacity:t.opacity},i=this.writer.context().pages,o=0,a=i.length;o<a;o++)i[o].watermark=r}},i.prototype.processNode=function(t){var e=this;this.linearNodeList.push(t),o(t),function(n){var r=t._margin;"before"===t.pageBreak&&e.writer.moveToNextPage(t.pageOrientation),r&&(e.writer.context().moveDown(r[1]),e.writer.context().addMargin(r[0],r[2])),n(),r&&(e.writer.context().addMargin(-r[0],-r[2]),e.writer.context().moveDown(r[3])),"after"===t.pageBreak&&e.writer.moveToNextPage(t.pageOrientation)}(function(){var n=t.unbreakable;n&&e.writer.beginUnbreakableBlock();var r=t.absolutePosition;r&&(e.writer.context().beginDetachedBlock(),e.writer.context().moveTo(r.x||0,r.y||0));var i=t.relativePosition;if(i&&(e.writer.context().beginDetachedBlock(),e.writer.context().moveTo((i.x||0)+e.writer.context().x,(i.y||0)+e.writer.context().y)),t.stack)e.processVerticalContainer(t);else if(t.columns)e.processColumns(t);else if(t.ul)e.processList(!1,t);else if(t.ol)e.processList(!0,t);else if(t.table)e.processTable(t);else if(void 0!==t.text)e.processLeaf(t);else if(t.toc)e.processToc(t);else if(t.image)e.processImage(t);else if(t.canvas)e.processCanvas(t);else if(t.qr)e.processQr(t);else if(!t._span)throw"Unrecognized document structure: "+JSON.stringify(t,v);(r||i)&&e.writer.context().endDetachedBlock(),n&&e.writer.commitUnbreakableBlock()})},i.prototype.processVerticalContainer=function(t){var e=this;t.stack.forEach(function(n){e.processNode(n),r(t.positions,n.positions)})},i.prototype.processColumns=function(t){var e=t.columns,n=this.writer.context().availableWidth,i=function(t){if(!t)return null;var n=[];n.push(0);for(var r=e.length-1;r>0;r--)n.push(t);return n}(t._gap);i&&(n-=(i.length-1)*t._gap),h.buildColumnWidths(e,n);var o=this.processRow(e,e,i);r(t.positions,o.positions)},i.prototype.processRow=function(t,e,n,i,o){function a(t){for(var e,n=0,r=c.length;n<r;n++){var i=c[n];if(i.prevPage===t.prevPage){e=i;break}}e||(e=t,c.push(e)),e.prevY=Math.max(e.prevY,t.prevY),e.y=Math.min(e.y,t.y)}function s(t){return n&&n.length>t?n[t]:0}function u(t,e){if(t.rowSpan&&t.rowSpan>1){var n=o+t.rowSpan-1;if(n>=i.length)throw"Row span for column "+e+" (with indexes starting from 0) exceeded row count";return i[n][e]}return null}var l=this,c=[],f=[];return this.tracker.auto("pageChanged",a,function(){e=e||t,l.writer.context().beginColumnGroup();for(var i=0,o=t.length;i<o;i++){var a=t[i],c=e[i]._calcWidth,h=s(i);if(a.colSpan&&a.colSpan>1)for(var p=1;p<a.colSpan;p++)c+=e[++i]._calcWidth+n[i];l.writer.context().beginColumn(c,h,u(a,i)),a._span?a._columnEndingContext&&l.writer.context().markEnding(a):(l.processNode(a),r(f,a.positions))}l.writer.context().completeColumnGroup()}),{pageBreaks:c,positions:f}},i.prototype.processList=function(t,e){function n(t){if(s){var e=s;if(s=null,e.canvas){var n=e.canvas[0];y(n,-e._minWidth,0),i.writer.addVector(n)}else if(e._inlines){var r=new d(i.pageSize.width);r.addInline(e._inlines[0]),r.x=-e._minWidth,r.y=t.getAscenderHeight()-r.getAscenderHeight(),i.writer.addLine(r,!0)}}}var i=this,o=t?e.ol:e.ul,a=e._gapSize;this.writer.context().addMargin(a.width);var s;this.tracker.auto("lineAdded",n,function(){o.forEach(function(t){s=t.listMarker,i.processNode(t),r(e.positions,t.positions)})}),this.writer.context().addMargin(-a.width)},i.prototype.processTable=function(t){var e=new p(t);e.beginTable(this.writer);for(var n=0,i=t.table.body.length;n<i;n++){e.beginRow(n,this.writer);var o=this.processRow(t.table.body[n],t.table.widths,t._offsets.offsets,t.table.body,n);r(t.positions,o.positions),e.endRow(n,this.writer,o.pageBreaks)}e.endTable(this.writer)},i.prototype.processLeaf=function(t){var e=this.buildNextLine(t),n=e?e.getHeight():0,r=t.maxHeight||-1;for(t._tocItemRef&&(e._tocItemNode=t._tocItemRef);e&&(-1===r||n<r);){var i=this.writer.addLine(e);t.positions.push(i),e=this.buildNextLine(t),e&&(n+=e.getHeight())}},i.prototype.processToc=function(t){t.toc.title&&this.processNode(t.toc.title),this.processNode(t.toc._table)},i.prototype.buildNextLine=function(t){if(!t._inlines||0===t._inlines.length)return null;for(var e=new d(this.writer.context().availableWidth),n=new m(null);t._inlines&&t._inlines.length>0&&e.hasEnoughSpaceForInline(t._inlines[0]);){var r=t._inlines.shift();if(!r.noWrap&&r.text.length>1&&r.width>e.maxWidth){var i=r.width/r.text.length,o=Math.floor(e.maxWidth/i);if(o<1&&(o=1),o<r.text.length){var a=function(t){var e=t.constructor();for(var n in t)e[n]=t[n];return e}(r);a.text=r.text.substr(o),r.text=r.text.substr(0,o),a.width=n.widthOfString(a.text,a.font,a.fontSize,a.characterSpacing),r.width=n.widthOfString(r.text,r.font,r.fontSize,r.characterSpacing),t._inlines.unshift(a)}}e.addInline(r)}return e.lastLineInParagraph=0===t._inlines.length,e},i.prototype.processImage=function(t){var e=this.writer.addImage(t);t.positions.push(e)},i.prototype.processCanvas=function(t){var e=t._minHeight;this.writer.context().availableHeight<e&&this.writer.moveToNextPage(),t.canvas.forEach(function(e){var n=this.writer.addVector(e);t.positions.push(n)},this),this.writer.context().moveDown(e)},i.prototype.processQr=function(t){var e=this.writer.addQr(t);t.positions.push(e)},t.exports=i},function(t,e){"use strict";function n(){this.events={}}n.prototype.startTracking=function(t,e){var n=this.events[t]||(this.events[t]=[]);n.indexOf(e)<0&&n.push(e)},n.prototype.stopTracking=function(t,e){var n=this.events[t];if(n){var r=n.indexOf(e);r>=0&&n.splice(r,1)}},n.prototype.emit=function(t){var e=Array.prototype.slice.call(arguments,1),n=this.events[t];n&&n.forEach(function(t){t.apply(this,e)})},n.prototype.auto=function(t,e,n){this.startTracking(t,e),n(),this.stopTracking(t,e)},t.exports=n},function(t,e,n){"use strict";function r(){}var i=n(13).fontStringify;r.prototype.preprocessDocument=function(t){return this.tocs=[],this.preprocessNode(t)},r.prototype.preprocessNode=function(t){if(Array.isArray(t)?t={stack:t}:"string"==typeof t||t instanceof String?t={text:t}:"number"==typeof t||"boolean"==typeof t?t={text:t.toString()}:null===t?t={text:""}:0===Object.keys(t).length&&(t={text:""}),t.columns)return this.preprocessColumns(t);if(t.stack)return this.preprocessVerticalContainer(t);if(t.ul)return this.preprocessList(t);if(t.ol)return this.preprocessList(t);if(t.table)return this.preprocessTable(t);if(void 0!==t.text)return this.preprocessText(t);if(t.toc)return this.preprocessToc(t);if(t.image)return this.preprocessImage(t);if(t.canvas)return this.preprocessCanvas(t);if(t.qr)return this.preprocessQr(t);throw"Unrecognized document structure: "+JSON.stringify(t,i)},r.prototype.preprocessColumns=function(t){for(var e=t.columns,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},r.prototype.preprocessVerticalContainer=function(t){for(var e=t.stack,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},r.prototype.preprocessList=function(t){for(var e=t.ul||t.ol,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},r.prototype.preprocessTable=function(t){var e,n,r,i;for(e=0,r=t.table.body[0].length;e<r;e++)for(n=0,i=t.table.body.length;n<i;n++){var o=t.table.body[n],a=o[e];void 0!==a&&(null===a&&(a=""),a._span||(o[e]=this.preprocessNode(a)))}return t},r.prototype.preprocessText=function(t){if(t.tocItem){Array.isArray(t.tocItem)||(t.tocItem=[t.tocItem]);for(var e=0,n=t.tocItem.length;e<n;e++){"string"==typeof t.tocItem[e]||t.tocItem[e]instanceof String||(t.tocItem[e]="_default_");var r=t.tocItem[e];this.tocs[r]||(this.tocs[r]={toc:{_items:[],_pseudo:!0}}),this.tocs[r].toc._items.push(t)}}return t},r.prototype.preprocessToc=function(t){if(t.toc.id||(t.toc.id="_default_"),t.toc.title=t.toc.title?this.preprocessNode(t.toc.title):null,t.toc._items=[],this.tocs[t.toc.id]){if(!this.tocs[t.toc.id].toc._pseudo)throw"TOC '"+t.toc.id+"' already exists";t.toc._items=this.tocs[t.toc.id].toc._items}return this.tocs[t.toc.id]=t,t},r.prototype.preprocessImage=function(t){return t},r.prototype.preprocessCanvas=function(t){return t},r.prototype.preprocessQr=function(t){return t},t.exports=r},function(t,e){"use strict";function n(){for(var t={},e=0,n=arguments.length;e<n;e++){var r=arguments[e];if(r)for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i])}return t}function r(t,e,n){switch(t.type){case"ellipse":case"rect":t.x+=e,t.y+=n;break;case"line":t.x1+=e,t.x2+=e,t.y1+=n,t.y2+=n;break;case"polyline":for(var r=0,i=t.points.length;r<i;r++)t.points[r].x+=e,t.points[r].y+=n}}function i(t,e){return"font"===t?"font":e}function o(t){var e={};return t&&"[object Function]"===e.toString.call(t)}t.exports={pack:n,fontStringify:i,offsetVector:r,isFunction:o}},function(t,e,n){"use strict";function r(t,e,n,r,a,s){this.textTools=new i(t),this.styleStack=new o(e,n),this.imageMeasure=r,this.tableLayouts=a,this.images=s,this.autoImageIndex=1}var i=n(15),o=n(22),a=n(23),s=n(13).fontStringify,u=n(13).pack,l=n(24);r.prototype.measureDocument=function(t){return this.measureNode(t)},r.prototype.measureNode=function(t){function e(t){var e=t._margin;return e&&(t._minWidth+=e[0]+e[2],t._maxWidth+=e[0]+e[2]),t}function n(){function e(t,e){return t.marginLeft||t.marginTop||t.marginRight||t.marginBottom?[t.marginLeft||e[0]||0,t.marginTop||e[1]||0,t.marginRight||e[2]||0,t.marginBottom||e[3]||0]:e}function n(t){return"number"==typeof t||t instanceof Number?t=[t,t,t,t]:Array.isArray(t)&&2===t.length&&(t=[t[0],t[1],t[0],t[1]]),t}var i=[void 0,void 0,void 0,void 0];if(t.style){var o=Array.isArray(t.style)?t.style:[t.style],a=function(t){for(var e={},n=t.length-1;n>=0;n--){var i=t[n],o=r.styleStack.styleDictionary[i];for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a])}return e}(o);a&&(i=e(a,i)),a.margin&&(i=n(a.margin))}return i=e(t,i),t.margin&&(i=n(t.margin)),void 0===i[0]&&void 0===i[1]&&void 0===i[2]&&void 0===i[3]?null:i}var r=this;return this.styleStack.auto(t,function(){if(t._margin=n(),t.columns)return e(r.measureColumns(t));if(t.stack)return e(r.measureVerticalContainer(t));if(t.ul)return e(r.measureUnorderedList(t));if(t.ol)return e(r.measureOrderedList(t));if(t.table)return e(r.measureTable(t));if(void 0!==t.text)return e(r.measureLeaf(t));if(t.toc)return e(r.measureToc(t));if(t.image)return e(r.measureImage(t));if(t.canvas)return e(r.measureCanvas(t));if(t.qr)return e(r.measureQr(t));throw"Unrecognized document structure: "+JSON.stringify(t,s)})},r.prototype.convertIfBase64Image=function(t){if(/^data:image\/(jpeg|jpg|png);base64,/.test(t.image)){var e="$$pdfmake$$"+this.autoImageIndex++;this.images[e]=t.image,t.image=e}},r.prototype.measureImage=function(t){this.images&&this.convertIfBase64Image(t);var e=this.imageMeasure.measureImage(t.image);if(t.fit){var n=e.width/e.height>t.fit[0]/t.fit[1]?t.fit[0]/e.width:t.fit[1]/e.height;t._width=t._minWidth=t._maxWidth=e.width*n,t._height=e.height*n}else t._width=t._minWidth=t._maxWidth=t.width||e.width,t._height=t.height||e.height*t._width/e.width,"number"==typeof t.maxWidth&&t.maxWidth<t._width&&(t._width=t._minWidth=t._maxWidth=t.maxWidth,t._height=t._width*e.height/e.width),"number"==typeof t.maxHeight&&t.maxHeight<t._height&&(t._height=t.maxHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height),"number"==typeof t.minWidth&&t.minWidth>t._width&&(t._width=t._minWidth=t._maxWidth=t.minWidth,t._height=t._width*e.height/e.width),"number"==typeof t.minHeight&&t.minHeight>t._height&&(t._height=t.minHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height);return t._alignment=this.styleStack.getProperty("alignment"),t},r.prototype.measureLeaf=function(t){var e=this.styleStack.clone();e.push(t);var n=this.textTools.buildInlines(t.text,e);return t._inlines=n.items,t._minWidth=n.minWidth,t._maxWidth=n.maxWidth,t},r.prototype.measureToc=function(t){t.toc.title&&(t.toc.title=this.measureNode(t.toc.title));for(var e=[],n=0,r=t.toc._items.length;n<r;n++){var i=t.toc._items[n];e.push([{text:i.text,alignment:"left"},{text:"00000",alignment:"right",_tocItemRef:i}])}return t.toc._table={table:{dontBreakRows:!0,widths:["*","auto"],body:e},layout:"noBorders"},t.toc._table=this.measureNode(t.toc._table),t},r.prototype.measureVerticalContainer=function(t){var e=t.stack;t._minWidth=0,t._maxWidth=0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]),t._minWidth=Math.max(t._minWidth,e[n]._minWidth),t._maxWidth=Math.max(t._maxWidth,e[n]._maxWidth);return t},r.prototype.gapSizeForList=function(){return this.textTools.sizeOfString("9. ",this.styleStack)},r.prototype.buildUnorderedMarker=function(t,e,n){var r,i=t.getProperty("markerColor")||t.getProperty("color")||"black";switch(n){case"circle":r=function(t,e){var n=t.fontSize/6;return{canvas:[{x:n,y:t.height/t.lineHeight+t.descender-t.fontSize/3,r1:n,r2:n,type:"ellipse",lineColor:e}]}}(e,i);break;case"square":r=function(t,e){var n=t.fontSize/3;return{canvas:[{x:0,y:t.height/t.lineHeight+t.descender-t.fontSize/3-n/2,h:n,w:n,type:"rect",color:e}]}}(e,i);break;case"none":r={};break;case"disc":default:r=function(t,e){var n=t.fontSize/6;return{canvas:[{x:n,y:t.height/t.lineHeight+t.descender-t.fontSize/3,r1:n,r2:n,type:"ellipse",color:e}]}}(e,i)}return r._minWidth=r._maxWidth=e.width,r._minHeight=r._maxHeight=e.height,r},r.prototype.buildOrderedMarker=function(t,e,n,r){function i(t){function e(t){return(t>=26?e((t/26>>0)-1):"")+"abcdefghijklmnopqrstuvwxyz"[t%26>>0]}return t<1?t.toString():e(t-1)}function o(t){if(t<1||t>4999)return t.toString();var e,n=t,r={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},i="";for(e in r)for(;n>=r[e];)i+=e,n-=r[e];return i}var a;switch(n){case"none":a=null;break;case"upper-alpha":a=i(t).toUpperCase();break;case"lower-alpha":a=i(t);break;case"upper-roman":a=o(t);break;case"lower-roman":a=o(t).toLowerCase();break;case"decimal":default:a=function(t){return t.toString()}(t)}if(null===a)return{};r&&(Array.isArray(r)?(r[0]&&(a=r[0]+a),r[1]&&(a+=r[1]),a+=" "):a+=r+" ");var s={text:a},u=e.getProperty("markerColor");return u&&(s.color=u),{_inlines:this.textTools.buildInlines(s,e).items}},r.prototype.measureUnorderedList=function(t){var e=this.styleStack.clone(),n=t.ul;t.type=t.type||"disc",t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=0,i=n.length;r<i;r++){var o=n[r]=this.measureNode(n[r]);o.ol||o.ul||(o.listMarker=this.buildUnorderedMarker(e,t._gapSize,t.type)),t._minWidth=Math.max(t._minWidth,n[r]._minWidth+t._gapSize.width),t._maxWidth=Math.max(t._maxWidth,n[r]._maxWidth+t._gapSize.width)}return t},r.prototype.measureOrderedList=function(t){var e=this.styleStack.clone(),n=t.ol;t.type=t.type||"decimal",t.separator=t.separator||".",t.reversed=t.reversed||!1,t.start||(t.start=t.reversed?n.length:1),t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=t.start,i=0,o=n.length;i<o;i++){var a=n[i]=this.measureNode(n[i]);a.ol||a.ul||(a.listMarker=this.buildOrderedMarker(a.counter||r,e,t.type,t.separator),a.listMarker._inlines&&(t._gapSize.width=Math.max(t._gapSize.width,a.listMarker._inlines[0].width))),t._minWidth=Math.max(t._minWidth,n[i]._minWidth),t._maxWidth=Math.max(t._maxWidth,n[i]._maxWidth),t.reversed?r--:r++}t._minWidth+=t._gapSize.width,t._maxWidth+=t._gapSize.width;for(var i=0,o=n.length;i<o;i++){var a=n[i];a.ol||a.ul||(a.listMarker._minWidth=a.listMarker._maxWidth=t._gapSize.width)}return t},r.prototype.measureColumns=function(t){var e=t.columns;t._gap=this.styleStack.getProperty("columnGap")||0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]);var i=a.measureMinMax(e),o=e.length>0?e.length-1:0;return t._minWidth=i.min+t._gap*o,t._maxWidth=i.max+t._gap*o,t},r.prototype.measureTable=function(t){function e(e,n,r){for(var i={minWidth:0,maxWidth:0},o=0;o<n;o++)i.minWidth+=t.table.widths[e+o]._minWidth+(o?r.offsets[e+o]:0),i.maxWidth+=t.table.widths[e+o]._maxWidth+(o?r.offsets[e+o]:0);return i}!function(t){if(t.table.widths||(t.table.widths="auto"),"string"==typeof t.table.widths||t.table.widths instanceof String)for(t.table.widths=[t.table.widths];t.table.widths.length<t.table.body[0].length;)t.table.widths.push(t.table.widths[t.table.widths.length-1]);for(var e=0,n=t.table.widths.length;e<n;e++){var r=t.table.widths[e];("number"==typeof r||r instanceof Number||"string"==typeof r||r instanceof String)&&(t.table.widths[e]={width:r})}}(t),t._layout=function(e){var n=t.layout;return("string"==typeof t.layout||t instanceof String)&&(n=e[n]),u({hLineWidth:function(t,e){return 1},vLineWidth:function(t,e){return 1},hLineColor:function(t,e){return"black"},vLineColor:function(t,e){return"black"},paddingLeft:function(t,e){return 4},paddingRight:function(t,e){return 4},paddingTop:function(t,e){return 2},paddingBottom:function(t,e){return 2},fillColor:function(t,e){return null},defaultBorder:!0},n)}(this.tableLayouts),t._offsets=function(e){for(var n=[],r=0,i=0,o=0,a=t.table.widths.length;o<a;o++){var s=i+e.vLineWidth(o,t)+e.paddingLeft(o,t);n.push(s),r+=s,i=e.paddingRight(o,t)}return r+=i+e.vLineWidth(t.table.widths.length,t),{total:r,offsets:n}}(t._layout);var n,r,i,o,s=[];for(n=0,i=t.table.body[0].length;n<i;n++){var l=t.table.widths[n];for(l._minWidth=0,l._maxWidth=0,r=0,o=t.table.body.length;r<o;r++){var c=t.table.body[r],f=c[n];if(void 0===f)throw"Malformed table row, a cell is undefined.";null===f&&(f=""),f._span||(f=c[n]=this.styleStack.auto(f,function(t,e){return function(){return null!==e&&"object"==typeof e&&(e.fillColor=t.styleStack.getProperty("fillColor")),t.measureNode(e)}}(this,f)),f.colSpan&&f.colSpan>1?(!function(t,e,n){for(var r=1;r<n;r++)t[e+r]={_span:!0,_minWidth:0,_maxWidth:0,rowSpan:t[e].rowSpan}}(c,n,f.colSpan),s.push({col:n,span:f.colSpan,minWidth:f._minWidth,maxWidth:f._maxWidth})):(l._minWidth=Math.max(l._minWidth,f._minWidth),l._maxWidth=Math.max(l._maxWidth,f._maxWidth))),f.rowSpan&&f.rowSpan>1&&function(t,e,n,r){for(var i=1;i<r;i++)t.body[e+i][n]={_span:!0,_minWidth:0,_maxWidth:0,fillColor:t.body[e][n].fillColor}}(t.table,r,n,f.rowSpan)}}!function(){for(var n,r,i=0,o=s.length;i<o;i++){var a=s[i],u=e(a.col,a.span,t._offsets),l=a.minWidth-u.minWidth,c=a.maxWidth-u.maxWidth;if(l>0)for(n=l/a.span,r=0;r<a.span;r++)t.table.widths[a.col+r]._minWidth+=n;if(c>0)for(n=c/a.span,r=0;r<a.span;r++)t.table.widths[a.col+r]._maxWidth+=n}}();var h=a.measureMinMax(t.table.widths);return t._minWidth=h.min+t._offsets.total,t._maxWidth=h.max+t._offsets.total,t},r.prototype.measureCanvas=function(t){for(var e=0,n=0,r=0,i=t.canvas.length;r<i;r++){var o=t.canvas[r];switch(o.type){case"ellipse":e=Math.max(e,o.x+o.r1),n=Math.max(n,o.y+o.r2);break;case"rect":e=Math.max(e,o.x+o.w),n=Math.max(n,o.y+o.h);break;case"line":e=Math.max(e,o.x1,o.x2),n=Math.max(n,o.y1,o.y2);break;case"polyline":for(var a=0,s=o.points.length;a<s;a++)e=Math.max(e,o.points[a].x),n=Math.max(n,o.points[a].y)}}return t._minWidth=t._maxWidth=e,t._minHeight=t._maxHeight=n,t},r.prototype.measureQr=function(t){return t=l.measure(t),t._alignment=this.styleStack.getProperty("alignment"),t},t.exports=r},function(t,e,n){"use strict";function r(t){this.fontProvider=t}function i(t,e){var n=[];if(t=t.replace("\t"," "),e)return n.push({text:t}),n;for(var r,i=new f(t),o=0;r=i.nextBreak();){var a=t.slice(o,r.position);r.required||a.match(/\r?\n$|\r$/)?(a=a.replace(/\r?\n$|\r$/,""),n.push({text:a,lineEnd:!0})):n.push({text:a}),o=r.position}return n}function o(t,e){e=e||{},t=t||{};for(var n in t)"text"!=n&&t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function a(t,e){var n=[];Array.isArray(t)||(t=[t]) ;for(var r=0,a=t.length;r<a;r++){var l,c=t[r],f=null,h=u(c||{},e,"noWrap",!1);null!==c&&("object"==typeof c||c instanceof Object)?(l=i(s(c.text),h),f=o(c)):l=i(s(c),h);for(var p=0,d=l.length;p<d;p++){var g={text:l[p].text};l[p].lineEnd&&(g.lineEnd=!0),o(f,g),n.push(g)}}return n}function s(t){return void 0===t||null===t?"":"number"==typeof t?t.toString():"string"==typeof t||t instanceof String?t:t.toString()}function u(t,e,n,r){var i;return void 0!==t[n]&&null!==t[n]?t[n]:e?(e.auto(t,function(){i=e.getProperty(n)}),null!==i&&void 0!==i?i:r):r}function l(t,e,n){var r=a(e,n);if(r.length){var i=u(r[0],n,"leadingIndent",0);i&&(r[0].leadingCut=-i,r[0].leadingIndent=i)}return r.forEach(function(e){var r=u(e,n,"font","Roboto"),i=u(e,n,"fontSize",12),o=u(e,n,"bold",!1),a=u(e,n,"italics",!1),s=u(e,n,"color","black"),l=u(e,n,"decoration",null),f=u(e,n,"decorationColor",null),d=u(e,n,"decorationStyle",null),g=u(e,n,"background",null),y=u(e,n,"lineHeight",1),v=u(e,n,"characterSpacing",0),b=u(e,n,"link",null),m=u(e,n,"linkToPage",null),w=u(e,n,"noWrap",null),x=u(e,n,"preserveLeadingSpaces",!1),_=t.provideFont(r,o,a);e.width=c(e.text,_,i,v),e.height=_.lineHeight(i)*y;var k=e.text.match(h);e.leadingCut||(e.leadingCut=0),k&&!x&&(e.leadingCut+=c(k[0],_,i,v));var S=e.text.match(p);e.trailingCut=S?c(S[0],_,i,v):0,e.alignment=u(e,n,"alignment","left"),e.font=_,e.fontSize=i,e.characterSpacing=v,e.color=s,e.decoration=l,e.decorationColor=f,e.decorationStyle=d,e.background=g,e.link=b,e.linkToPage=m,e.noWrap=w}),r}function c(t,e,n,r){return e.widthOfString(t,n)+(r||0)*(t.length-1)}var f=n(16),h=/^(\s)+/g,p=/(\s)+$/g;r.prototype.buildInlines=function(t,e){function n(t){return Math.max(0,t.width-t.leadingCut-t.trailingCut)}var r,i=l(this.fontProvider,t,e),o=0,a=0;return i.forEach(function(t){o=Math.max(o,t.width-t.leadingCut-t.trailingCut),r||(r={width:0,leadingCut:t.leadingCut,trailingCut:0}),r.width+=t.width,r.trailingCut=t.trailingCut,a=Math.max(a,n(r)),t.lineEnd&&(r=null)}),u({},e,"noWrap",!1)&&(o=a),{items:i,minWidth:o,maxWidth:a}},r.prototype.sizeOfString=function(t,e){t=t?t.toString().replace("\t"," "):"";var n=u({},e,"font","Roboto"),r=u({},e,"fontSize",12),i=u({},e,"bold",!1),o=u({},e,"italics",!1),a=u({},e,"lineHeight",1),s=u({},e,"characterSpacing",0),l=this.fontProvider.provideFont(n,i,o);return{width:c(t,l,r,s),height:l.lineHeight(r)*a,fontSize:r,lineHeight:a,ascender:l.ascender/1e3*r,descender:l.descender/1e3*r}},r.prototype.widthOfString=function(t,e,n,r){return c(t,e,n,r)},t.exports=r},function(t,e,n){(function(){var e,r,i,o,a,s,u,l,c,f,h,p,d,g,y,v,b,m,w,x,_,k,S,C,A,P,E;w=n(17),k=n(19),P=n(20),o=P.BK,c=P.CR,p=P.LF,g=P.NL,a=P.CB,i=P.BA,m=P.SP,x=P.WJ,m=P.SP,o=P.BK,p=P.LF,g=P.NL,e=P.AI,r=P.AL,v=P.SA,b=P.SG,_=P.XX,u=P.CJ,P.ID,y=P.NS,P.characterClasses,E=n(21),f=E.DI_BRK,h=E.IN_BRK,s=E.CI_BRK,l=E.CP_BRK,E.PR_BRK,A=E.pairTable,C=k.toByteArray("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"),S=new w(C),d=function(){function t(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null}var n,d,w;return t.prototype.nextCodePoint=function(){var t,e;return t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos),55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t},d=function(t){switch(t){case e:return r;case v:case b:case _:return r;case u:return y;default:return t}},w=function(t){switch(t){case p:case g:return o;case a:return i;case m:return x;default:return t}},t.prototype.nextCharClass=function(t){return null==t&&(t=!1),d(S.get(this.nextCodePoint()))},n=function(){function t(t,e){this.position=t,this.required=null!=e&&e}return t}(),t.prototype.nextBreak=function(){var t,e,r;for(null==this.curClass&&(this.curClass=w(this.nextCharClass()));this.pos<this.string.length;){if(this.lastPos=this.pos,e=this.nextClass,this.nextClass=this.nextCharClass(),this.curClass===o||this.curClass===c&&this.nextClass!==p)return this.curClass=w(d(this.nextClass)),new n(this.lastPos,!0);if(null==(t=function(){switch(this.nextClass){case m:return this.curClass;case o:case p:case g:return o;case c:return c;case a:return i}}.call(this))){switch(r=!1,A[this.curClass][this.nextClass]){case f:r=!0;break;case h:r=e===m;break;case s:if(!(r=e===m))continue;break;case l:if(e!==m)continue}if(this.curClass=this.nextClass,r)return new n(this.lastPos)}else if(this.curClass=t,this.nextClass===a)return new n(this.lastPos)}if(this.pos>=this.string.length)return this.lastPos<this.string.length?(this.lastPos=this.string.length,new n(this.string.length)):null},t}(),t.exports=d}).call(this)},function(t,e,n){var r,i;i=n(18),r=function(){function t(t){var e,n,r;e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice,e||t instanceof Uint8Array?(e?(this.highStart=t.readUInt32BE(0),this.errorValue=t.readUInt32BE(4),n=t.readUInt32BE(8),t=t.slice(12)):(r=new DataView(t.buffer),this.highStart=r.getUint32(0),this.errorValue=r.getUint32(4),n=r.getUint32(8),t=t.subarray(12)),t=i(t,new Uint8Array(n)),t=i(t,new Uint8Array(n)),this.data=new Uint32Array(t.buffer)):(this.data=t.data,this.highStart=t.highStart,this.errorValue=t.errorValue)}var e,n,r,o,a,s,u,l,c,f,h,p,d,g,y,v;return p=11,g=5,d=p-g,h=65536>>p,a=1<<d,u=a-1,l=2,e=1<<g,r=e-1,f=65536>>g,c=1024>>g,s=f+c,v=s,y=32,o=v+y,n=1<<l,t.prototype.get=function(t){var e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>g]<<l)+(t&r),this.data[e]):t<=65535?(e=(this.data[f+(t-55296>>g)]<<l)+(t&r),this.data[e]):t<this.highStart?(e=this.data[o-h+(t>>p)],e=this.data[e+(t>>g&u)],e=(e<<l)+(t&r),this.data[e]):this.data[this.data.length-n]},t}(),t.exports=r},function(t,e){function n(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,e){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=e,this.destLen=0,this.ltree=new n,this.dtree=new n}function i(t,e,n,r){var i,o;for(i=0;i<n;++i)t[i]=0;for(i=0;i<30-n;++i)t[i+n]=i/n|0;for(o=r,i=0;i<30;++i)e[i]=o,o+=1<<t[i]}function o(t,e,n,r){var i,o;for(i=0;i<16;++i)t.table[i]=0;for(i=0;i<r;++i)t.table[e[n+i]]++;for(t.table[0]=0,o=0,i=0;i<16;++i)S[i]=o,o+=t.table[i];for(i=0;i<r;++i)e[n+i]&&(t.trans[S[e[n+i]]++]=i)}function a(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function s(t,e,n){if(!e)return n;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,r+n}function u(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=0,r=0,i=0,o=t.tag;do{r=2*r+(1&o),o>>>=1,++i,n+=e.table[i],r-=e.table[i]}while(r>=0);return t.tag=o,t.bitcount-=i,e.trans[n+r]}function l(t,e,n){var r,i,a,l,c,f;for(r=s(t,5,257),i=s(t,5,1),a=s(t,4,4),l=0;l<19;++l)k[l]=0;for(l=0;l<a;++l){var h=s(t,3,0);k[x[l]]=h}for(o(_,k,0,19),c=0;c<r+i;){var p=u(t,_);switch(p){case 16:var d=k[c-1];for(f=s(t,2,3);f;--f)k[c++]=d;break;case 17:for(f=s(t,3,3);f;--f)k[c++]=0;break;case 18:for(f=s(t,7,11);f;--f)k[c++]=0;break;default:k[c++]=p}}o(e,k,0,r),o(n,k,r,i)}function c(t,e,n){for(;;){var r=u(t,e);if(256===r)return p;if(r<256)t.dest[t.destLen++]=r;else{var i,o,a,l;for(r-=257,i=s(t,v[r],b[r]),o=u(t,n),a=t.destLen-s(t,m[o],w[o]),l=a;l<a+i;++l)t.dest[t.destLen++]=t.dest[l]}}}function f(t){for(var e,n,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if(e=t.source[t.sourceIndex+1],e=256*e+t.source[t.sourceIndex],n=t.source[t.sourceIndex+3],n=256*n+t.source[t.sourceIndex+2],e!==(65535&~n))return d;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,p}function h(t,e){var n,i,o=new r(t,e);do{switch(n=a(o),s(o,2,0)){case 0:i=f(o);break;case 1:i=c(o,g,y);break;case 2:l(o,o.ltree,o.dtree),i=c(o,o.ltree,o.dtree);break;default:i=d}if(i!==p)throw new Error("Data error")}while(!n);return o.destLen<o.dest.length?"function"==typeof o.dest.slice?o.dest.slice(0,o.destLen):o.dest.subarray(0,o.destLen):o.dest}var p=0,d=-3,g=new n,y=new n,v=new Uint8Array(30),b=new Uint16Array(30),m=new Uint8Array(30),w=new Uint16Array(30),x=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),_=new n,k=new Uint8Array(320),S=new Uint16Array(16);!function(t,e){var n;for(n=0;n<7;++n)t.table[n]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,n=0;n<24;++n)t.trans[n]=256+n;for(n=0;n<144;++n)t.trans[24+n]=n;for(n=0;n<8;++n)t.trans[168+n]=280+n;for(n=0;n<112;++n)t.trans[176+n]=144+n;for(n=0;n<5;++n)e.table[n]=0;for(e.table[5]=32,n=0;n<32;++n)e.trans[n]=n}(g,y),i(v,b,4,3),i(m,w,2,1),v[28]=0,b[28]=258,t.exports=h},function(t,e,n){!function(t){"use strict";function e(t){var e=t.charCodeAt(0);return e===o||e===c?62:e===a||e===f?63:e<s?-1:e<s+10?e-s+26+26:e<l+26?e-l:e<u+26?e-u+26:void 0}function n(t){function n(t){l[f++]=t}var r,o,a,s,u,l;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var c=t.length;u="="===t.charAt(c-2)?2:"="===t.charAt(c-1)?1:0,l=new i(3*t.length/4-u),a=u>0?t.length-4:t.length;var f=0;for(r=0,o=0;r<a;r+=4,o+=3)s=e(t.charAt(r))<<18|e(t.charAt(r+1))<<12|e(t.charAt(r+2))<<6|e(t.charAt(r+3)),n((16711680&s)>>16),n((65280&s)>>8),n(255&s);return 2===u?(s=e(t.charAt(r))<<2|e(t.charAt(r+1))>>4,n(255&s)):1===u&&(s=e(t.charAt(r))<<10|e(t.charAt(r+1))<<4|e(t.charAt(r+2))>>2,n(s>>8&255),n(255&s)),l}function r(t){function e(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}var n,r,i,o=t.length%3,a="";for(n=0,i=t.length-o;n<i;n+=3)r=(t[n]<<16)+(t[n+1]<<8)+t[n+2],a+=function(t){return e(t>>18&63)+e(t>>12&63)+e(t>>6&63)+e(63&t)}(r);switch(o){case 1:r=t[t.length-1],a+=e(r>>2),a+=e(r<<4&63),a+="==";break;case 2:r=(t[t.length-2]<<8)+t[t.length-1],a+=e(r>>10),a+=e(r>>4&63),a+=e(r<<2&63),a+="="}return a}var i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),a="/".charCodeAt(0),s="0".charCodeAt(0),u="a".charCodeAt(0),l="A".charCodeAt(0),c="-".charCodeAt(0),f="_".charCodeAt(0);t.toByteArray=n,t.fromByteArray=r}(e)},function(t,e){(function(){e.OP=0,e.CL=1,e.CP=2,e.QU=3,e.GL=4,e.NS=5,e.EX=6,e.SY=7,e.IS=8,e.PR=9,e.PO=10,e.NU=11,e.AL=12,e.HL=13,e.ID=14,e.IN=15,e.HY=16,e.BA=17,e.BB=18,e.B2=19,e.ZW=20,e.CM=21,e.WJ=22,e.H2=23,e.H3=24,e.JL=25,e.JV=26,e.JT=27,e.RI=28,e.AI=29,e.BK=30,e.CB=31,e.CJ=32,e.CR=33,e.LF=34,e.NL=35,e.SA=36,e.SG=37,e.SP=38,e.XX=39}).call(this)},function(t,e){(function(){var t,n,r,i,o;e.DI_BRK=r=0,e.IN_BRK=i=1,e.CI_BRK=t=2,e.CP_BRK=n=3,e.PR_BRK=o=4,e.pairTable=[[o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,n,o,o,o,o,o,o,o],[r,o,o,i,i,o,o,o,o,i,i,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,o,o,o,o,i,i,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[o,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,i,r,i,i,r,r,o,t,o,i,i,i,i,i,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,o,o,t,o,r,r,r,r,r,r],[r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,o,r,r,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,i,i,i,i,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,i]]}).call(this)},function(t,e){"use strict";function n(t,e){this.defaultStyle=e||{},this.styleDictionary=t,this.styleOverrides=[]}n.prototype.clone=function(){var t=new n(this.styleDictionary,this.defaultStyle);return this.styleOverrides.forEach(function(e){t.styleOverrides.push(e)}),t},n.prototype.push=function(t){this.styleOverrides.push(t)},n.prototype.pop=function(t){for(t=t||1;t-- >0;)this.styleOverrides.pop()},n.prototype.autopush=function(t){if("string"==typeof t||t instanceof String)return 0;var e=[];t.style&&(e=Array.isArray(t.style)?t.style:[t.style]);for(var n=0,r=e.length;n<r;n++)this.push(e[n]);var i={},o=!1;return["font","fontSize","bold","italics","alignment","color","columnGap","fillColor","decoration","decorationStyle","decorationColor","background","lineHeight","characterSpacing","noWrap","markerColor","leadingIndent"].forEach(function(e){void 0!==t[e]&&null!==t[e]&&(i[e]=t[e],o=!0)}),o&&this.push(i),e.length+(o?1:0)},n.prototype.auto=function(t,e){var n=this.autopush(t),r=e();return n>0&&this.pop(n),r},n.prototype.getProperty=function(t){if(this.styleOverrides)for(var e=this.styleOverrides.length-1;e>=0;e--){var n=this.styleOverrides[e];if("string"==typeof n||n instanceof String){var r=this.styleDictionary[n];if(r&&null!==r[t]&&void 0!==r[t])return r[t]}else if(void 0!==n[t]&&null!==n[t])return n[t]}return this.defaultStyle&&this.defaultStyle[t]},t.exports=n},function(t,e){"use strict";function n(t,e){var n=[],o=0,a=0,s=[],u=0,l=0,c=[],f=e;t.forEach(function(t){r(t)?(n.push(t),o+=t._minWidth,a+=t._maxWidth):i(t)?(s.push(t),u=Math.max(u,t._minWidth),l=Math.max(l,t._maxWidth)):c.push(t)}),c.forEach(function(t){"string"==typeof t.width&&/\d+%/.test(t.width)&&(t.width=parseFloat(t.width)*f/100),t.width<t._minWidth&&t.elasticWidth?t._calcWidth=t._minWidth:t._calcWidth=t.width,e-=t._calcWidth});var h=o+u*s.length,p=a+l*s.length;if(h>=e)n.forEach(function(t){t._calcWidth=t._minWidth}),s.forEach(function(t){t._calcWidth=u});else{if(p<e)n.forEach(function(t){t._calcWidth=t._maxWidth,e-=t._calcWidth});else{var d=e-h,g=p-h;n.forEach(function(t){var n=t._maxWidth-t._minWidth;t._calcWidth=t._minWidth+n*d/g,e-=t._calcWidth})}if(s.length>0){var y=e/s.length;s.forEach(function(t){t._calcWidth=y})}}}function r(t){return"auto"===t.width}function i(t){return null===t.width||void 0===t.width||"*"===t.width||"star"===t.width}function o(t){for(var e={min:0,max:0},n={min:0,max:0},o=0,a=0,s=t.length;a<s;a++){var u=t[a];i(u)?(n.min=Math.max(n.min,u._minWidth),n.max=Math.max(n.max,u._maxWidth),o++):r(u)?(e.min+=u._minWidth,e.max+=u._maxWidth):(e.min+=void 0!==u.width&&u.width||u._minWidth,e.max+=void 0!==u.width&&u.width||u._maxWidth)}return o&&(e.min+=o*n.min,e.max+=o*n.max),e}t.exports={buildColumnWidths:n,measureMinMax:o,isAutoColumn:r,isStarColumn:i}},function(t,e){"use strict";function n(t,e){var n={numeric:a,alphanumeric:s,octet:u},r={L:h,M:p,Q:d,H:g};e=e||{};var i=e.version||-1,o=r[(e.eccLevel||"L").toUpperCase()],c=e.mode?n[e.mode.toLowerCase()]:-1,y="mask"in e?e.mask:-1;if(c<0)c="string"==typeof t?t.match(l)?a:t.match(f)?s:u:u;else if(c!=a&&c!=s&&c!=u)throw"invalid or unsupported mode";if(null===(t=M(c,t)))throw"invalid data format";if(o<0||o>3)throw"invalid ECC level";if(i<0){for(i=1;i<=40&&!(t.length<=L(i,c,o));++i);if(i>40)throw"too large data for the Qr format"}else if(i<1||i>40)throw"invalid Qr version! should be between 1 and 40";if(-1!=y&&(y<0||y>8))throw"invalid mask";return V(t,i,c,o,y)}function r(t,e){var r=[],i=e.background||"#fff",o=e.foreground||"#000",a=n(t,e),s=a.length,u=Math.floor(e.fit?e.fit/s:5),l=s*u;r.push({type:"rect",x:0,y:0,w:l,h:l,lineWidth:0,color:i});for(var c=0;c<s;++c)for(var f=0;f<s;++f)a[c][f]&&r.push({type:"rect",x:u*f,y:u*c,w:u,h:u,lineWidth:0,color:o});return{canvas:r,size:l}}function i(t){var e=r(t.qr,t);return t._canvas=e.canvas,t._width=t._height=t._minWidth=t._maxWidth=t._minHeight=t._maxHeight=e.size,t}for(var o=[null,[[10,7,17,13],[1,1,1,1],[]],[[16,10,28,22],[1,1,1,1],[4,16]],[[26,15,22,18],[1,1,2,2],[4,20]],[[18,20,16,26],[2,1,4,2],[4,24]],[[24,26,22,18],[2,1,4,4],[4,28]],[[16,18,28,24],[4,2,4,4],[4,32]],[[18,20,26,18],[4,2,5,6],[4,20,36]],[[22,24,26,22],[4,2,6,6],[4,22,40]],[[22,30,24,20],[5,2,8,8],[4,24,44]],[[26,18,28,24],[5,4,8,8],[4,26,48]],[[30,20,24,28],[5,4,11,8],[4,28,52]],[[22,24,28,26],[8,4,11,10],[4,30,56]],[[22,26,22,24],[9,4,16,12],[4,32,60]],[[24,30,24,20],[9,4,16,16],[4,24,44,64]],[[24,22,24,30],[10,6,18,12],[4,24,46,68]],[[28,24,30,24],[10,6,16,17],[4,24,48,72]],[[28,28,28,28],[11,6,19,16],[4,28,52,76]],[[26,30,28,28],[13,6,21,18],[4,28,54,80]],[[26,28,26,26],[14,7,25,21],[4,28,56,84]],[[26,28,28,30],[16,8,25,20],[4,32,60,88]],[[26,28,30,28],[17,8,25,23],[4,26,48,70,92]],[[28,28,24,30],[17,9,34,23],[4,24,48,72,96]],[[28,30,30,30],[18,9,30,25],[4,28,52,76,100]],[[28,30,30,30],[20,10,32,27],[4,26,52,78,104]],[[28,26,30,30],[21,12,35,29],[4,30,56,82,108]],[[28,28,30,28],[23,12,37,34],[4,28,56,84,112]],[[28,30,30,30],[25,12,40,34],[4,32,60,88,116]],[[28,30,30,30],[26,13,42,35],[4,24,48,72,96,120]],[[28,30,30,30],[28,14,45,38],[4,28,52,76,100,124]],[[28,30,30,30],[29,15,48,40],[4,24,50,76,102,128]],[[28,30,30,30],[31,16,51,43],[4,28,54,80,106,132]],[[28,30,30,30],[33,17,54,45],[4,32,58,84,110,136]],[[28,30,30,30],[35,18,57,48],[4,28,56,84,112,140]],[[28,30,30,30],[37,19,60,51],[4,32,60,88,116,144]],[[28,30,30,30],[38,19,63,53],[4,28,52,76,100,124,148]],[[28,30,30,30],[40,20,66,56],[4,22,48,74,100,126,152]],[[28,30,30,30],[43,21,70,59],[4,26,52,78,104,130,156]],[[28,30,30,30],[45,22,74,62],[4,30,56,82,108,134,160]],[[28,30,30,30],[47,24,77,65],[4,24,52,80,108,136,164]],[[28,30,30,30],[49,25,81,68],[4,28,56,84,112,140,168]]],a=1,s=2,u=4,l=/^\d*$/,c=/^[A-Za-z0-9 $%*+\-.\/:]*$/,f=/^[A-Z0-9 $%*+\-.\/:]*$/,h=1,p=0,d=3,g=2,y=[],v=[-1],b=0,m=1;b<255;++b)y.push(m),v[m]=b,m=2*m^(m>=128?285:0);for(var w=[[]],b=0;b<30;++b){for(var x=w[b],_=[],k=0;k<=b;++k){var S=k<b?y[x[k]]:0,C=y[(b+(x[k-1]||0))%255];_.push(v[S^C])}w.push(_)}for(var A={},b=0;b<45;++b)A["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".charAt(b)]=b;var P=[function(t,e){return(t+e)%2==0},function(t,e){return t%2==0},function(t,e){return e%3==0},function(t,e){return(t+e)%3==0},function(t,e){return((t/2|0)+(e/3|0))%2==0},function(t,e){return t*e%2+t*e%3==0},function(t,e){return(t*e%2+t*e%3)%2==0},function(t,e){return((t+e)%2+t*e%3)%2==0}],E=function(t){return t>6},I=function(t){return 4*t+17},T=function(t){var e=o[t],n=16*t*t+128*t+64;return E(t)&&(n-=36),e[2].length&&(n-=25*e[2].length*e[2].length-10*e[2].length-55),n},O=function(t,e){var n=-8&T(t),r=o[t];return n-=8*r[0][e]*r[1][e]},B=function(t,e){switch(e){case a:return t<10?10:t<27?12:14;case s:return t<10?9:t<27?11:13;case u:return t<10?8:16;case 8:return t<10?8:t<27?10:12}},L=function(t,e,n){var r=O(t,n)-4-B(t,e);switch(e){case a:return 3*(r/10|0)+(r%10<4?0:r%10<7?1:2);case s:return 2*(r/11|0)+(r%11<6?0:1);case u:return r/8|0;case 8:return r/13|0}},M=function(t,e){switch(t){case a:return e.match(l)?e:null;case s:return e.match(c)?e.toUpperCase():null;case u:if("string"==typeof e){for(var n=[],r=0;r<e.length;++r){var i=e.charCodeAt(r);i<128?n.push(i):i<2048?n.push(192|i>>6,128|63&i):i<65536?n.push(224|i>>12,128|i>>6&63,128|63&i):n.push(240|i>>18,128|i>>12&63,128|i>>6&63,128|63&i)}return n}return e}},R=function(t,e,n,r){var i=[],o=0,l=8,c=n.length,f=function(t,e){if(e>=l){for(i.push(o|t>>(e-=l));e>=8;)i.push(t>>(e-=8)&255);o=0,l=8}e>0&&(o|=(t&(1<<e)-1)<<(l-=e))},h=B(t,e);switch(f(e,4),f(c,h),e){case a:for(var p=2;p<c;p+=3)f(parseInt(n.substring(p-2,p+1),10),10);f(parseInt(n.substring(p-2),10),[0,4,7][c%3]);break;case s:for(var p=1;p<c;p+=2)f(45*A[n.charAt(p-1)]+A[n.charAt(p)],11);c%2==1&&f(A[n.charAt(p-1)],6);break;case u:for(var p=0;p<c;++p)f(n[p],8)}for(f(0,4),l<8&&i.push(o);i.length+1<r;)i.push(236,17);return i.length<r&&i.push(236),i},F=function(t,e){for(var n=t.slice(0),r=t.length,i=e.length,o=0;o<i;++o)n.push(0);for(var o=0;o<r;){var a=v[n[o++]];if(a>=0)for(var s=0;s<i;++s)n[o+s]^=y[(a+e[s])%255]}return n.slice(r)},z=function(t,e,n){for(var r=[],i=t.length/e|0,o=0,a=e-t.length%e,s=0;s<a;++s)r.push(o),o+=i;for(var s=a;s<e;++s)r.push(o),o+=i+1;r.push(o);for(var u=[],s=0;s<e;++s)u.push(F(t.slice(r[s],r[s+1]),n));for(var l=[],c=t.length/e|0,s=0;s<c;++s)for(var f=0;f<e;++f)l.push(t[r[f]+s]);for(var f=a;f<e;++f)l.push(t[r[f+1]-1]);for(var s=0;s<n.length;++s)for(var f=0;f<e;++f)l.push(u[f][s]);return l},D=function(t,e,n,r){for(var i=t<<r,o=e-1;o>=0;--o)i>>r+o&1&&(i^=n<<o);return t<<r|i},N=function(t){for(var e=o[t],n=I(t),r=[],i=[],a=0;a<n;++a)r.push([]),i.push([]);var s=function(t,e,n,o,a){for(var s=0;s<n;++s)for(var u=0;u<o;++u)r[t+s][e+u]=a[s]>>u&1,i[t+s][e+u]=1};s(0,0,9,9,[127,65,93,93,93,65,383,0,64]),s(n-8,0,8,9,[256,127,65,93,93,93,65,127]),s(0,n-8,9,8,[254,130,186,186,186,130,254,0,0]);for(var a=9;a<n-8;++a)r[6][a]=r[a][6]=1&~a,i[6][a]=i[a][6]=1;for(var u=e[2],l=u.length,a=0;a<l;++a)for(var c=0===a||a===l-1?1:0,f=0===a?l-1:l,h=c;h<f;++h)s(u[a],u[h],5,5,[31,17,21,17,31]);if(E(t))for(var p=D(t,6,7973,12),d=0,a=0;a<6;++a)for(var h=0;h<3;++h)r[a][n-11+h]=r[n-11+h][a]=p>>d++&1,i[a][n-11+h]=i[n-11+h][a]=1;return{matrix:r,reserved:i}},U=function(t,e,n){for(var r=t.length,i=0,o=-1,a=r-1;a>=0;a-=2){6==a&&--a;for(var s=o<0?r-1:0,u=0;u<r;++u){for(var l=a;l>a-2;--l)e[s][l]||(t[s][l]=n[i>>3]>>(7&~i)&1,++i);s+=o}o=-o}return t},W=function(t,e,n){for(var r=P[n],i=t.length,o=0;o<i;++o)for(var a=0;a<i;++a)e[o][a]||(t[o][a]^=r(o,a));return t},j=function(t,e,n,r){for(var i=t.length,o=21522^D(n<<3|r,5,1335,10),a=0;a<15;++a){var s=[0,1,2,3,4,5,7,8,i-7,i-6,i-5,i-4,i-3,i-2,i-1][a],u=[i-1,i-2,i-3,i-4,i-5,i-6,i-7,i-8,7,5,4,3,2,1,0][a];t[s][8]=t[8][u]=o>>a&1}return t},G=function(t){for(var e=function(t){for(var e=0,n=0;n<t.length;++n)t[n]>=5&&(e+=t[n]-5+3);for(var n=5;n<t.length;n+=2){var r=t[n];t[n-1]==r&&t[n-2]==3*r&&t[n-3]==r&&t[n-4]==r&&(t[n-5]>=4*r||t[n+1]>=4*r)&&(e+=40)}return e},n=t.length,r=0,i=0,o=0;o<n;++o){var a,s=t[o];a=[0];for(var u=0;u<n;){var l;for(l=0;u<n&&s[u];++l)++u;for(a.push(l),l=0;u<n&&!s[u];++l)++u;a.push(l)}r+=e(a),a=[0];for(var u=0;u<n;){var l;for(l=0;u<n&&t[u][o];++l)++u;for(a.push(l),l=0;u<n&&!t[u][o];++l)++u;a.push(l)}r+=e(a);var c=t[o+1]||[];i+=s[0];for(var u=1;u<n;++u){var f=s[u];i+=f,s[u-1]==f&&c[u]===f&&c[u-1]===f&&(r+=3)}}return r+=10*(Math.abs(i/n/n-.5)/.05|0)},V=function(t,e,n,r,i){var a=o[e],s=R(e,n,t,O(e,r)>>3);s=z(s,a[1][r],w[a[0][r]]);var u=N(e),l=u.matrix,c=u.reserved;if(U(l,c,s),i<0){W(l,c,0),j(l,0,r,0);var f=0,h=G(l);for(W(l,c,0),i=1;i<8;++i){W(l,c,i),j(l,0,r,i);var p=G(l);h>p&&(h=p,f=i),W(l,c,i)}i=f}return W(l,c,i),j(l,0,r,i),l};t.exports={measure:i}},function(t,e,n){"use strict";function r(t,e){this.pages=[],this.pageMargins=e,this.x=e.left,this.availableWidth=t.width-e.left-e.right,this.availableHeight=0,this.page=-1,this.snapshots=[],this.endingCell=null,this.tracker=new a,this.addPage(t)}function i(t,e){return void 0===t?e:("string"==typeof t||t instanceof String)&&"landscape"===t.toLowerCase()?"landscape":"portrait"}function o(t,e){var n;return n=t.page>e.page?t:e.page>t.page?e:t.y>e.y?t:e,{page:n.page,x:n.x,y:n.y,availableHeight:n.availableHeight,availableWidth:n.availableWidth}}var a=n(11);r.prototype.beginColumnGroup=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,bottomMost:{x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page},endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth}),this.lastColumnWidth=0},r.prototype.beginColumn=function(t,e,n){var r=this.snapshots[this.snapshots.length-1];this.calculateBottomMost(r),this.endingCell=n,this.page=r.page,this.x=this.x+this.lastColumnWidth+(e||0),this.y=r.y,this.availableWidth=t,this.availableHeight=r.availableHeight,this.lastColumnWidth=t},r.prototype.calculateBottomMost=function(t){this.endingCell?(this.saveContextInEndingCell(this.endingCell),this.endingCell=null):t.bottomMost=o(this,t.bottomMost)},r.prototype.markEnding=function(t){this.page=t._columnEndingContext.page,this.x=t._columnEndingContext.x,this.y=t._columnEndingContext.y,this.availableWidth=t._columnEndingContext.availableWidth,this.availableHeight=t._columnEndingContext.availableHeight,this.lastColumnWidth=t._columnEndingContext.lastColumnWidth},r.prototype.saveContextInEndingCell=function(t){t._columnEndingContext={page:this.page,x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,lastColumnWidth:this.lastColumnWidth}},r.prototype.completeColumnGroup=function(){var t=this.snapshots.pop();this.calculateBottomMost(t),this.endingCell=null,this.x=t.x,this.y=t.bottomMost.y,this.page=t.bottomMost.page,this.availableWidth=t.availableWidth,this.availableHeight=t.bottomMost.availableHeight,this.lastColumnWidth=t.lastColumnWidth},r.prototype.addMargin=function(t,e){this.x+=t,this.availableWidth-=t+(e||0)},r.prototype.moveDown=function(t){return this.y+=t,this.availableHeight-=t,this.availableHeight>0},r.prototype.initializePage=function(){this.y=this.pageMargins.top,this.availableHeight=this.getCurrentPage().pageSize.height-this.pageMargins.top-this.pageMargins.bottom,this.pageSnapshot().availableWidth=this.getCurrentPage().pageSize.width-this.pageMargins.left-this.pageMargins.right},r.prototype.pageSnapshot=function(){return this.snapshots[0]?this.snapshots[0]:this},r.prototype.moveTo=function(t,e){void 0!==t&&null!==t&&(this.x=t,this.availableWidth=this.getCurrentPage().pageSize.width-this.x-this.pageMargins.right),void 0!==e&&null!==e&&(this.y=e,this.availableHeight=this.getCurrentPage().pageSize.height-this.y-this.pageMargins.bottom)},r.prototype.beginDetachedBlock=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth})},r.prototype.endDetachedBlock=function(){var t=this.snapshots.pop();this.x=t.x,this.y=t.y,this.availableWidth=t.availableWidth,this.availableHeight=t.availableHeight,this.page=t.page,this.endingCell=t.endingCell,this.lastColumnWidth=t.lastColumnWidth};var s=function(t,e){return e=i(e,t.pageSize.orientation),e!==t.pageSize.orientation?{orientation:e,width:t.pageSize.height,height:t.pageSize.width}:{orientation:t.pageSize.orientation,width:t.pageSize.width,height:t.pageSize.height}};r.prototype.moveToNextPage=function(t){var e=this.page+1,n=this.page,r=this.y,i=e>=this.pages.length;if(i){var o=this.availableWidth,a=this.getCurrentPage().pageSize.orientation,u=s(this.getCurrentPage(),t);this.addPage(u),a===u.orientation&&(this.availableWidth=o)}else this.page=e,this.initializePage();return{newPageCreated:i,prevPage:n,prevY:r,y:this.y}},r.prototype.addPage=function(t){var e={items:[],pageSize:t};return this.pages.push(e),this.page=this.pages.length-1,this.initializePage(),this.tracker.emit("pageAdded"),e},r.prototype.getCurrentPage=function(){return this.page<0||this.page>=this.pages.length?null:this.pages[this.page]},r.prototype.getCurrentPosition=function(){ var t=this.getCurrentPage().pageSize,e=t.height-this.pageMargins.top-this.pageMargins.bottom,n=t.width-this.pageMargins.left-this.pageMargins.right;return{pageNumber:this.page+1,pageOrientation:t.orientation,pageInnerHeight:e,pageInnerWidth:n,left:this.x,top:this.y,verticalRatio:(this.y-this.pageMargins.top)/e,horizontalRatio:(this.x-this.pageMargins.left)/n}},t.exports=r},function(t,e,n){"use strict";function r(t,e){this.transactionLevel=0,this.repeatables=[],this.tracker=e,this.writer=new o(t,e)}function i(t,e){var n=e(t);return n||(t.moveToNextPage(),n=e(t)),n}var o=n(27);r.prototype.addLine=function(t,e,n){return i(this,function(r){return r.writer.addLine(t,e,n)})},r.prototype.addImage=function(t,e){return i(this,function(n){return n.writer.addImage(t,e)})},r.prototype.addQr=function(t,e){return i(this,function(n){return n.writer.addQr(t,e)})},r.prototype.addVector=function(t,e,n,r){return this.writer.addVector(t,e,n,r)},r.prototype.addFragment=function(t,e,n,r){this.writer.addFragment(t,e,n,r)||(this.moveToNextPage(),this.writer.addFragment(t,e,n,r))},r.prototype.moveToNextPage=function(t){var e=this.writer.context.moveToNextPage(t);e.newPageCreated?this.repeatables.forEach(function(t){this.writer.addFragment(t,!0)},this):this.repeatables.forEach(function(t){this.writer.context.moveDown(t.height)},this),this.writer.tracker.emit("pageChanged",{prevPage:e.prevPage,prevY:e.prevY,y:e.y})},r.prototype.beginUnbreakableBlock=function(t,e){0==this.transactionLevel++&&(this.originalX=this.writer.context.x,this.writer.pushContext(t,e))},r.prototype.commitUnbreakableBlock=function(t,e){if(0==--this.transactionLevel){var n=this.writer.context;this.writer.popContext();var r=n.pages.length;if(r>0){var i=n.pages[0];if(i.xOffset=t,i.yOffset=e,r>1)if(void 0!==t||void 0!==e)i.height=n.getCurrentPage().pageSize.height-n.pageMargins.top-n.pageMargins.bottom;else{i.height=this.writer.context.getCurrentPage().pageSize.height-this.writer.context.pageMargins.top-this.writer.context.pageMargins.bottom;for(var o=0,a=this.repeatables.length;o<a;o++)i.height-=this.repeatables[o].height}else i.height=n.y;void 0!==t||void 0!==e?this.writer.addFragment(i,!0,!0,!0):this.addFragment(i)}}},r.prototype.currentBlockToRepeatable=function(){var t=this.writer.context,e={items:[]};return t.pages[0].items.forEach(function(t){e.items.push(t)}),e.xOffset=this.originalX,e.height=t.y,e},r.prototype.pushToRepeatables=function(t){this.repeatables.push(t)},r.prototype.popFromRepeatables=function(){this.repeatables.pop()},r.prototype.context=function(){return this.writer.context},t.exports=r},function(t,e,n){"use strict";function r(t,e){this.context=t,this.contextStack=[],this.tracker=e}function i(t,e,n){null===n||void 0===n||n<0||n>t.items.length?t.items.push(e):t.items.splice(n,0,e)}function o(t){var e=new a(t.maxWidth);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var a=n(28),s=n(13).pack,u=n(13).offsetVector,l=n(25);r.prototype.addLine=function(t,e,n){var r=t.getHeight(),o=this.context,a=o.getCurrentPage(),s=this.getCurrentPositionOnPage();return!(o.availableHeight<r||!a)&&(t.x=o.x+(t.x||0),t.y=o.y+(t.y||0),this.alignLine(t),i(a,{type:"line",item:t},n),this.tracker.emit("lineAdded",t),e||o.moveDown(r),s)},r.prototype.alignLine=function(t){var e=this.context.availableWidth,n=t.getWidth(),r=t.inlines&&t.inlines.length>0&&t.inlines[0].alignment,i=0;switch(r){case"right":i=e-n;break;case"center":i=(e-n)/2}if(i&&(t.x=(t.x||0)+i),"justify"===r&&!t.newLineForced&&!t.lastLineInParagraph&&t.inlines.length>1)for(var o=(e-n)/(t.inlines.length-1),a=1,s=t.inlines.length;a<s;a++)i=a*o,t.inlines[a].x+=i,t.inlines[a].justifyShift=o},r.prototype.addImage=function(t,e){var n=this.context,r=n.getCurrentPage(),o=this.getCurrentPositionOnPage();return!(!r||n.availableHeight<t._height&&r.items.length>0)&&(void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t),i(r,{type:"image",item:t},e),n.moveDown(t._height),o)},r.prototype.addQr=function(t,e){var n=this.context,r=n.getCurrentPage(),i=this.getCurrentPositionOnPage();if(n.availableHeight<t._height||!r)return!1;void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t);for(var o=0,a=t._canvas.length;o<a;o++){var s=t._canvas[o];s.x+=t.x,s.y+=t.y,this.addVector(s,!0,!0,e)}return n.moveDown(t._height),i},r.prototype.alignImage=function(t){var e=this.context.availableWidth,n=t._minWidth,r=0;switch(t._alignment){case"right":r=e-n;break;case"center":r=(e-n)/2}r&&(t.x=(t.x||0)+r)},r.prototype.addVector=function(t,e,n,r){var o=this.context,a=o.getCurrentPage(),s=this.getCurrentPositionOnPage();if(a)return u(t,e?0:o.x,n?0:o.y),i(a,{type:"vector",item:t},r),s},r.prototype.addFragment=function(t,e,n,r){var i=this.context,a=i.getCurrentPage();return!(!e&&t.height>i.availableHeight)&&(t.items.forEach(function(r){switch(r.type){case"line":var l=o(r.item);l.x=(l.x||0)+(e?t.xOffset||0:i.x),l.y=(l.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"line",item:l});break;case"vector":var c=s(r.item);u(c,e?t.xOffset||0:i.x,n?t.yOffset||0:i.y),a.items.push({type:"vector",item:c});break;case"image":var f=s(r.item);f.x=(f.x||0)+(e?t.xOffset||0:i.x),f.y=(f.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"image",item:f})}}),r||i.moveDown(t.height),!0)},r.prototype.pushContext=function(t,e){void 0===t&&(e=this.context.getCurrentPage().height-this.context.pageMargins.top-this.context.pageMargins.bottom,t=this.context.availableWidth),("number"==typeof t||t instanceof Number)&&(t=new l({width:t,height:e},{left:0,right:0,top:0,bottom:0})),this.contextStack.push(this.context),this.context=t},r.prototype.popContext=function(){this.context=this.contextStack.pop()},r.prototype.getCurrentPositionOnPage=function(){return(this.contextStack[0]||this.context).getCurrentPosition()},t.exports=r},function(t,e){"use strict";function n(t){this.maxWidth=t,this.leadingCut=0,this.trailingCut=0,this.inlineWidths=0,this.inlines=[]}n.prototype.getAscenderHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.font.ascender/1e3*e.fontSize)}),t},n.prototype.hasEnoughSpaceForInline=function(t){return 0===this.inlines.length||!this.newLineForced&&this.inlineWidths+t.width-this.leadingCut-(t.trailingCut||0)<=this.maxWidth},n.prototype.addInline=function(t){0===this.inlines.length&&(this.leadingCut=t.leadingCut||0),this.trailingCut=t.trailingCut||0,t.x=this.inlineWidths-this.leadingCut,this.inlines.push(t),this.inlineWidths+=t.width,t.lineEnd&&(this.newLineForced=!0)},n.prototype.getWidth=function(){return this.inlineWidths-this.leadingCut-this.trailingCut},n.prototype.getHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.height||0)}),t},t.exports=n},function(t,e,n){"use strict";function r(t){this.tableNode=t}var i=n(23);r.prototype.beginTable=function(t){var e,n,r=this;e=this.tableNode,this.offsets=e._offsets,this.layout=e._layout,n=t.context().availableWidth-this.offsets.total,i.buildColumnWidths(e.table.widths,n),this.tableWidth=e._offsets.total+function(){var t=0;return e.table.widths.forEach(function(e){t+=e._calcWidth}),t}(),this.rowSpanData=function(){var t=[],e=0,n=0;t.push({left:0,rowSpan:0});for(var i=0,o=r.tableNode.table.body[0].length;i<o;i++){n=r.layout.paddingLeft(i,r.tableNode)+r.layout.paddingRight(i,r.tableNode)+r.layout.vLineWidth(i,r.tableNode)+r.tableNode.table.widths[i]._calcWidth,t[t.length-1].width=n,e+=n,t.push({left:e,rowSpan:0,width:0})}return t}(),this.cleanUpRepeatables=!1,this.headerRows=e.table.headerRows||0,this.rowsWithoutPageBreak=this.headerRows+(e.table.keepWithHeaderRows||0),this.dontBreakRows=e.table.dontBreakRows||!1,this.rowsWithoutPageBreak&&t.beginUnbreakableBlock(),function(t){function e(e,n,r,i){var o=t[e][n];o.border=o.border||{},o.border[r]=i}for(var n=0;n<t.length;n++)for(var r=t[n],i=0;i<r.length;i++){var o=r[i];if(o.border){for(var a=o.rowSpan||1,s=o.colSpan||1,u=0;u<a;u++)void 0!==o.border[0]&&u>0&&e(n+u,i,0,o.border[0]),void 0!==o.border[2]&&e(n+u,i+s-1,2,o.border[2]);for(var l=0;l<s;l++)void 0!==o.border[1]&&l>0&&e(n,i+l,1,o.border[1]),void 0!==o.border[3]&&e(n+a-1,i+l,3,o.border[3])}}}(this.tableNode.table.body),this.drawHorizontalLine(0,t)},r.prototype.onRowBreak=function(t,e){var n=this;return function(){var t=n.rowPaddingTop+(n.headerRows?0:n.topLineWidth);e.context().availableHeight-=n.reservedAtBottom,e.context().moveDown(t)}},r.prototype.beginRow=function(t,e){this.topLineWidth=this.layout.hLineWidth(t,this.tableNode),this.rowPaddingTop=this.layout.paddingTop(t,this.tableNode),this.bottomLineWidth=this.layout.hLineWidth(t+1,this.tableNode),this.rowPaddingBottom=this.layout.paddingBottom(t,this.tableNode),this.rowCallback=this.onRowBreak(t,e),e.tracker.startTracking("pageChanged",this.rowCallback),this.dontBreakRows&&e.beginUnbreakableBlock(),this.rowTopY=e.context().y,this.reservedAtBottom=this.bottomLineWidth+this.rowPaddingBottom,e.context().availableHeight-=this.reservedAtBottom,e.context().moveDown(this.rowPaddingTop)},r.prototype.drawHorizontalLine=function(t,e,n){var r=this.layout.hLineWidth(t,this.tableNode);if(r){for(var i=r/2,o=null,a=this.tableNode.table.body,s=0,u=this.rowSpanData.length;s<u;s++){var l=this.rowSpanData[s],c=!l.rowSpan;if(c&&s<u-1){var f=!1,h=!1;if(t<a.length){var p=a[t][s];f=p.border?p.border[1]:this.layout.defaultBorder}if(t>0){var d=a[t-1][s];h=d.border?d.border[3]:this.layout.defaultBorder}c=f||h}!o&&c&&(o={left:l.left,width:0}),c&&(o.width+=l.width||0);var g=(n||0)+i;c&&s!==u-1||o&&o.width&&(e.addVector({type:"line",x1:o.left,x2:o.left+o.width,y1:g,y2:g,lineWidth:r,lineColor:"function"==typeof this.layout.hLineColor?this.layout.hLineColor(t,this.tableNode):this.layout.hLineColor},!1,n),o=null)}e.context().moveDown(r)}},r.prototype.drawVerticalLine=function(t,e,n,r,i){var o=this.layout.vLineWidth(r,this.tableNode);0!==o&&i.addVector({type:"line",x1:t+o/2,x2:t+o/2,y1:e,y2:n,lineWidth:o,lineColor:"function"==typeof this.layout.vLineColor?this.layout.vLineColor(r,this.tableNode):this.layout.vLineColor},!1,!0)},r.prototype.endTable=function(t){this.cleanUpRepeatables&&(t.popFromRepeatables(),this.headerRepeatableHeight=null)},r.prototype.endRow=function(t,e,n){var r,i,o=this;e.tracker.stopTracking("pageChanged",this.rowCallback),e.context().moveDown(this.layout.paddingBottom(t,this.tableNode)),e.context().availableHeight+=this.reservedAtBottom;var a=e.context().page,s=e.context().y,u=function(){for(var e=[],n=0,r=0,i=o.tableNode.table.body[t].length;r<i;r++){if(!n){e.push({x:o.rowSpanData[r].left,index:r});var a=o.tableNode.table.body[t][r];n=a._colSpan||a.colSpan||0}n>0&&n--}return e.push({x:o.rowSpanData[o.rowSpanData.length-1].left,index:o.rowSpanData.length-1}),e}(),l=[],c=n&&n.length>0,f=this.tableNode.table.body;if(l.push({y0:this.rowTopY,page:c?n[0].prevPage:a}),c)for(i=0,r=n.length;i<r;i++){var h=n[i];l[l.length-1].y1=h.prevY,l.push({y0:h.y,page:h.prevPage+1}),this.headerRepeatableHeight&&(l[l.length-1].y0+=this.headerRepeatableHeight)}l[l.length-1].y1=s;for(var p=l[0].y1-l[0].y0===this.rowPaddingTop,d=p?1:0,g=l.length;d<g;d++){var y=d<l.length-1,v=d>0&&!this.headerRows,b=v?0:this.topLineWidth,m=l[d].y0,w=l[d].y1;for(y&&(w+=this.rowPaddingBottom),e.context().page!=l[d].page&&(e.context().page=l[d].page,this.reservedAtBottom=0),i=0,r=u.length;i<r;i++){var x=!1,_=!1,k=u[i].index;if(k<f[t].length){var S=f[t][k];x=S.border?S.border[0]:this.layout.defaultBorder}if(k>0){var S=f[t][k-1];_=S.border?S.border[2]:this.layout.defaultBorder}if((x||_)&&this.drawVerticalLine(u[i].x,m-b,w+this.bottomLineWidth,u[i].index,e),i<r-1){var C=f[t][k].fillColor;if(C||(C="function"==typeof this.layout.fillColor?this.layout.fillColor(t,this.tableNode):this.layout.fillColor),C){var A=x||_?this.layout.vLineWidth(k,this.tableNode):0,P=u[i].x+A,E=this.dontBreakRows?m:m-b;e.addVector({type:"rect",x:P,y:E,w:u[i+1].x-P,h:w+this.bottomLineWidth-E,lineWidth:0,color:C},!1,!0,0)}}}y&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t+1,e,w),v&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t,e,m)}e.context().page=a,e.context().y=s;var I=this.tableNode.table.body[t];for(i=0,r=I.length;i<r;i++){if(I[i].rowSpan&&(this.rowSpanData[i].rowSpan=I[i].rowSpan,I[i].colSpan&&I[i].colSpan>1))for(var T=1;T<I[i].rowSpan;T++)this.tableNode.table.body[t+T][i]._colSpan=I[i].colSpan;this.rowSpanData[i].rowSpan>0&&this.rowSpanData[i].rowSpan--}this.drawHorizontalLine(t+1,e),this.headerRows&&t===this.headerRows-1&&(this.headerRepeatable=e.currentBlockToRepeatable()),this.dontBreakRows&&e.tracker.auto("pageChanged",function(){o.headerRows||!1===o.layout.hLineWhenBroken||o.drawHorizontalLine(t,e)},function(){e.commitUnbreakableBlock()}),!this.headerRepeatable||t!==this.rowsWithoutPageBreak-1&&t!==this.tableNode.table.body.length-1||(this.headerRepeatableHeight=this.headerRepeatable.height,e.commitUnbreakableBlock(),e.pushToRepeatables(this.headerRepeatable),this.cleanUpRepeatables=!0,this.headerRepeatable=null)},t.exports=r},function(t,e,n){(function(e){(function(){var r,i,o,a,s,u,l=function(t,e){function n(){this.constructor=t}for(var r in e)c.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},c={}.hasOwnProperty;u=n(31),s=n(56),i=n(57),a=n(58),o=n(76),r=function(t){function r(t){var e,n,i,o;if(this.options=null!=t?t:{},r.__super__.constructor.apply(this,arguments),this.version=1.3,this.compress=null==(n=this.options.compress)||n,this._pageBuffer=[],this._pageBufferStart=0,this._offsets=[],this._waiting=0,this._ended=!1,this._offset=0,this._root=this.ref({Type:"Catalog",Pages:this.ref({Type:"Pages",Count:0,Kids:[]})}),this.page=null,this.initColor(),this.initVector(),this.initFonts(),this.initText(),this.initImages(),this.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},this.options.info){i=this.options.info;for(e in i)o=i[e],this.info[e]=o}this._write("%PDF-"+this.version),this._write("%ÿÿÿÿ"),!1!==this.options.autoFirstPage&&this.addPage()}var u;return l(r,t),u=function(t){var e,n,i;i=[];for(n in t)e=t[n],i.push(r.prototype[n]=e);return i},u(n(77)),u(n(79)),u(n(81)),u(n(288)),u(n(290)),u(n(296)),r.prototype.addPage=function(t){var e;return null==t&&(t=this.options),this.options.bufferPages||this.flushPages(),this.page=new o(this,t),this._pageBuffer.push(this.page),e=this._root.data.Pages.data,e.Kids.push(this.page.dictionary),e.Count++,this.x=this.page.margins.left,this.y=this.page.margins.top,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this.emit("pageAdded"),this},r.prototype.bufferedPageRange=function(){return{start:this._pageBufferStart,count:this._pageBuffer.length}},r.prototype.switchToPage=function(t){var e;if(!(e=this._pageBuffer[t-this._pageBufferStart]))throw new Error("switchToPage("+t+") out of bounds, current buffer covers pages "+this._pageBufferStart+" to "+(this._pageBufferStart+this._pageBuffer.length-1));return this.page=e},r.prototype.flushPages=function(){var t,e,n,r;for(r=this._pageBuffer,this._pageBuffer=[],this._pageBufferStart+=r.length,t=0,e=r.length;t<e;t++)n=r[t],n.end()},r.prototype.ref=function(t){var e;return e=new a(this,this._offsets.length+1,t),this._offsets.push(null),this._waiting++,e},r.prototype._read=function(){},r.prototype._write=function(t){return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.push(t),this._offset+=t.length},r.prototype.addContent=function(t){return this.page.write(t),this},r.prototype._refEnd=function(t){if(this._offsets[t.id-1]=t.offset,0==--this._waiting&&this._ended)return this._finalize(),this._ended=!1},r.prototype.write=function(t,e){return new Error("PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream."),this.pipe(s.createWriteStream(t)),this.end(),this.once("end",e)},r.prototype.output=function(t){throw new Error("PDFDocument#output is deprecated, and has been removed from PDFKit. Please pipe the document into a Node stream.")},r.prototype.end=function(){var t,e,n,r,i,o;this.flushPages(),this._info=this.ref(),r=this.info;for(e in r)o=r[e],"string"==typeof o&&(o=new String(o)),this._info.data[e]=o;this._info.end(),i=this._fontFamilies;for(n in i)t=i[n],t.finalize();return this._root.end(),this._root.data.Pages.end(),0===this._waiting?this._finalize():this._ended=!0},r.prototype._finalize=function(t){var e,n,r,o,a;for(a=this._offset,this._write("xref"),this._write("0 "+(this._offsets.length+1)),this._write("0000000000 65535 f "),o=this._offsets,e=0,n=o.length;e<n;e++)r=o[e],r=("0000000000"+r).slice(-10),this._write(r+" 00000 n ");return this._write("trailer"),this._write(i.convert({Size:this._offsets.length+1,Root:this._root,Info:this._info})),this._write("startxref"),this._write(""+a),this._write("%%EOF"),this.push(null)},r.prototype.toString=function(){return"[object PDFDocument]"},r}(u.Readable),t.exports=r}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){function r(){i.call(this)}t.exports=r;var i=n(32).EventEmitter;n(33)(r,i),r.Readable=n(34),r.Writable=n(52),r.Duplex=n(53),r.Transform=n(54),r.PassThrough=n(55),r.Stream=r,r.prototype.pipe=function(t,e){function n(e){t.writable&&!1===t.write(e)&&l.pause&&l.pause()}function r(){l.readable&&l.resume&&l.resume()}function o(){c||(c=!0,t.end())}function a(){c||(c=!0,"function"==typeof t.destroy&&t.destroy())}function s(t){if(u(),0===i.listenerCount(this,"error"))throw t}function u(){l.removeListener("data",n),t.removeListener("drain",r),l.removeListener("end",o),l.removeListener("close",a),l.removeListener("error",s),t.removeListener("error",s),l.removeListener("end",u),l.removeListener("close",u),t.removeListener("close",u)}var l=this;l.on("data",n),t.on("drain",r),t._isStdio||e&&!1===e.end||(l.on("end",o),l.on("close",a));var c=!1;return l.on("error",s),t.on("error",s),l.on("end",u),l.on("close",u),t.on("close",u),t.emit("pipe",l),t}},function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function i(t){return"number"==typeof t}function o(t){return"object"==typeof t&&null!==t}function a(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!i(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,n,i,s,u,l;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var c=new Error('Uncaught, unspecified "error" event. ('+e+")");throw c.context=e,c}if(n=this._events[t],a(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(o(n))for(s=Array.prototype.slice.call(arguments,1),l=n.slice(),i=l.length,u=0;u<i;u++)l[u].apply(this,s);return!0},n.prototype.addListener=function(t,e){var i;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,o(this._events[t])&&!this._events[t].warned&&(i=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.trace),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,a,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],a=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(s=a;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){e=t.exports=n(35),e.Stream=e,e.Readable=e,e.Writable=n(45),e.Duplex=n(44),e.Transform=n(50),e.PassThrough=n(51)},function(t,e,n){(function(e,r){"use strict";function i(t){return z.from(t)}function o(t){return z.isBuffer(t)||t instanceof D}function a(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?M(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}function s(t,e){L=L||n(44),t=t||{},this.objectMode=!!t.objectMode,e instanceof L&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new G,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(j||(j=n(49).StringDecoder),this.decoder=new j(t.encoding),this.encoding=t.encoding)}function u(t){if(L=L||n(44),!(this instanceof u))return new u(t);this._readableState=new s(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),F.call(this)}function l(t,e,n,r,o){var a=t._readableState;if(null===e)a.reading=!1,g(t,a);else{var s;o||(s=f(a,e)),s?t.emit("error",s):a.objectMode||e&&e.length>0?("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===z.prototype||(e=i(e)),r?a.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):c(t,a,e,!0):a.ended?t.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(e=a.decoder.write(e),a.objectMode||0!==e.length?c(t,a,e,!1):b(t,a)):c(t,a,e,!1))):r||(a.reading=!1)}return h(a)}function c(t,e,n,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,r?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&y(t)),b(t,e)}function f(t,e){var n;return o(e)||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function h(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}function p(t){return t>=q?t=q:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function d(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=p(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function g(t,e){if(!e.ended){if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,y(t)}}function y(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(W("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?B(v,t):v(t))}function v(t){W("emit readable"),t.emit("readable"),S(t)}function b(t,e){e.readingMore||(e.readingMore=!0,B(m,t,e))}function m(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(W("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function w(t){return function(){var e=t._readableState;W("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&R(t,"data")&&(e.flowing=!0,S(t))}}function x(t){W("readable nexttick read 0"),t.read(0)}function _(t,e){e.resumeScheduled||(e.resumeScheduled=!0,B(k,t,e))}function k(t,e){e.reading||(W("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),S(t),e.flowing&&!e.reading&&t.read(0)}function S(t){var e=t._readableState;for(W("flow",e.flowing);e.flowing&&null!==t.read(););}function C(t,e){if(0===e.length)return null;var n;return e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=A(t,e.buffer,e.decoder),n}function A(t,e,n){var r;return t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():n?P(t,e):E(t,e),r}function P(t,e){var n=e.head,r=1,i=n.data;for(t-=i.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(a===o.length?i+=o:i+=o.slice(0,t),0===(t-=a)){a===o.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++r}return e.length-=r,i}function E(t,e){var n=z.allocUnsafe(t),r=e.head,i=1;for(r.data.copy(n),t-=r.data.length;r=r.next;){var o=r.data,a=t>o.length?o.length:t;if(o.copy(n,n.length-t,0,a),0===(t-=a)){a===o.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++i}return e.length-=i,n}function I(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,B(T,e,t))}function T(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function O(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}var B=n(37);t.exports=u;var L,M=n(5);u.ReadableState=s;var R=(n(32).EventEmitter,function(t,e){return t.listeners(e).length}),F=n(38),z=n(39).Buffer,D=e.Uint8Array||function(){},N=n(40);N.inherits=n(33);var U=n(41),W=void 0;W=U&&U.debuglog?U.debuglog("stream"):function(){};var j,G=n(42),V=n(43);N.inherits(u,F);var H=["error","close","destroy","pause","resume"];Object.defineProperty(u.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),u.prototype.destroy=V.destroy,u.prototype._undestroy=V.undestroy,u.prototype._destroy=function(t,e){this.push(null),e(t)},u.prototype.push=function(t,e){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof t&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=z.from(t,e),e=""),n=!0),l(this,t,e,!1,n)},u.prototype.unshift=function(t){return l(this,t,null,!0,!1)},u.prototype.isPaused=function(){return!1===this._readableState.flowing},u.prototype.setEncoding=function(t){return j||(j=n(49).StringDecoder),this._readableState.decoder=new j(t),this._readableState.encoding=t,this};var q=8388608;u.prototype.read=function(t){W("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return W("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?I(this):y(this),null;if(0===(t=d(t,e))&&e.ended)return 0===e.length&&I(this),null;var r=e.needReadable;W("need readable",r),(0===e.length||e.length-t<e.highWaterMark)&&(r=!0,W("length less than watermark",r)),e.ended||e.reading?(r=!1,W("reading or ended",r)):r&&(W("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=d(n,e)));var i;return i=t>0?C(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&I(this)),null!==i&&this.emit("data",i),i},u.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},u.prototype.pipe=function(t,e){function n(t,e){W("onunpipe"),t===h&&e&&!1===e.hasUnpiped&&(e.hasUnpiped=!0,o())}function i(){W("onend"),t.end()}function o(){W("cleanup"),t.removeListener("close",l),t.removeListener("finish",c),t.removeListener("drain",y),t.removeListener("error",u),t.removeListener("unpipe",n),h.removeListener("end",i),h.removeListener("end",f),h.removeListener("data",s),v=!0,!p.awaitDrain||t._writableState&&!t._writableState.needDrain||y()}function s(e){W("ondata"),b=!1,!1!==t.write(e)||b||((1===p.pipesCount&&p.pipes===t||p.pipesCount>1&&-1!==O(p.pipes,t))&&!v&&(W("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++,b=!0),h.pause())}function u(e){W("onerror",e),f(),t.removeListener("error",u),0===R(t,"error")&&t.emit("error",e)}function l(){t.removeListener("finish",c),f()}function c(){W("onfinish"),t.removeListener("close",l),f()}function f(){W("unpipe"),h.unpipe(t)}var h=this,p=this._readableState;switch(p.pipesCount){case 0:p.pipes=t;break;case 1:p.pipes=[p.pipes,t];break;default:p.pipes.push(t)}p.pipesCount+=1,W("pipe count=%d opts=%j",p.pipesCount,e);var d=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr,g=d?i:f;p.endEmitted?B(g):h.once("end",g),t.on("unpipe",n);var y=w(h);t.on("drain",y);var v=!1,b=!1;return h.on("data",s),a(t,"error",u),t.once("close",l),t.once("finish",c),t.emit("pipe",h),p.flowing||(W("pipe resume"),h.resume()),t},u.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var r=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<i;o++)r[o].emit("unpipe",this,n);return this}var a=O(e.pipes,t);return-1===a?this:(e.pipes.splice(a,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},u.prototype.on=function(t,e){var n=F.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&y(this):B(x,this))}return n},u.prototype.addListener=u.prototype.on,u.prototype.resume=function(){var t=this._readableState;return t.flowing||(W("resume"),t.flowing=!0,_(this,t)),this},u.prototype.pause=function(){return W("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(W("pause"),this._readableState.flowing=!1,this.emit("pause")),this},u.prototype.wrap=function(t){var e=this._readableState,n=!1,r=this;t.on("end",function(){if(W("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&r.push(t)}r.push(null)}),t.on("data",function(i){if(W("wrapped data"),e.decoder&&(i=e.decoder.write(i)),(!e.objectMode||null!==i&&void 0!==i)&&(e.objectMode||i&&i.length)){r.push(i)||(n=!0,t.pause())}});for(var i in t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var o=0;o<H.length;o++)t.on(H[o],r.emit.bind(r,H[o]));return r._read=function(e){W("wrapped _read",e),n&&(n=!1,t.resume())},r},u._fromList=C}).call(e,function(){return this}(),n(36))},function(t,e){function n(){ throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(c===setTimeout)return setTimeout(t,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(t,0);try{return c(t,0)}catch(e){try{return c.call(null,t,0)}catch(e){return c.call(this,t,0)}}}function o(t){if(f===clearTimeout)return clearTimeout(t);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function a(){g&&p&&(g=!1,p.length?d=p.concat(d):y=-1,d.length&&s())}function s(){if(!g){var t=i(a);g=!0;for(var e=d.length;e;){for(p=d,d=[];++y<e;)p&&p[y].run();y=-1,e=d.length}p=null,g=!1,o(t)}}function u(t,e){this.fun=t,this.array=e}function l(){}var c,f,h=t.exports={};!function(){try{c="function"==typeof setTimeout?setTimeout:n}catch(t){c=n}try{f="function"==typeof clearTimeout?clearTimeout:r}catch(t){f=r}}();var p,d=[],g=!1,y=-1;h.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];d.push(new u(t,e)),1!==d.length||g||i(s)},u.prototype.run=function(){this.fun.apply(null,this.array)},h.title="browser",h.browser=!0,h.env={},h.argv=[],h.version="",h.versions={},h.on=l,h.addListener=l,h.once=l,h.off=l,h.removeListener=l,h.removeAllListeners=l,h.emit=l,h.prependListener=l,h.prependOnceListener=l,h.listeners=function(t){return[]},h.binding=function(t){throw new Error("process.binding is not supported")},h.cwd=function(){return"/"},h.chdir=function(t){throw new Error("process.chdir is not supported")},h.umask=function(){return 0}},function(t,e,n){(function(e){"use strict";function n(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,i)});default:for(o=new Array(s-1),a=0;a<o.length;)o[a++]=arguments[a];return e.nextTick(function(){t.apply(null,o)})}}!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports=n:t.exports=e.nextTick}).call(e,n(36))},function(t,e,n){t.exports=n(32).EventEmitter},function(t,e,n){function r(t,e){for(var n in t)e[n]=t[n]}function i(t,e,n){return a(t,e,n)}var o=n(2),a=o.Buffer;a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?t.exports=o:(r(o,e),e.Buffer=i),r(a,i),i.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return a(t,e,n)},i.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=a(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},i.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return a(t)},i.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return o.SlowBuffer(t)}},function(t,e,n){(function(t){function n(t){return Array.isArray?Array.isArray(t):"[object Array]"===y(t)}function r(t){return"boolean"==typeof t}function i(t){return null===t}function o(t){return null==t}function a(t){return"number"==typeof t}function s(t){return"string"==typeof t}function u(t){return"symbol"==typeof t}function l(t){return void 0===t}function c(t){return"[object RegExp]"===y(t)}function f(t){return"object"==typeof t&&null!==t}function h(t){return"[object Date]"===y(t)}function p(t){return"[object Error]"===y(t)||t instanceof Error}function d(t){return"function"==typeof t}function g(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t}function y(t){return Object.prototype.toString.call(t)}e.isArray=n,e.isBoolean=r,e.isNull=i,e.isNullOrUndefined=o,e.isNumber=a,e.isString=s,e.isSymbol=u,e.isUndefined=l,e.isRegExp=c,e.isObject=f,e.isDate=h,e.isError=p,e.isFunction=d,e.isPrimitive=g,e.isBuffer=t.isBuffer}).call(e,n(2).Buffer)},function(t,e){},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e,n){t.copy(e,n)}var o=n(39).Buffer;t.exports=function(){function t(){r(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return o.alloc(0);if(1===this.length)return this.head.data;for(var e=o.allocUnsafe(t>>>0),n=this.head,r=0;n;)i(n.data,e,r),r+=n.data.length,n=n.next;return e},t}()},function(t,e,n){"use strict";function r(t,e){var n=this,r=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;if(r||i)return void(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||a(o,this,t));this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(a(o,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)})}function i(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function o(t,e){t.emit("error",e)}var a=n(37);t.exports={destroy:r,undestroy:i}},function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);l.call(this,t),c.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",i)}function i(){this.allowHalfOpen||this._writableState.ended||a(o,this)}function o(t){t.end()}var a=n(37),s=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=r;var u=n(40);u.inherits=n(33);var l=n(35),c=n(45);u.inherits(r,l);for(var f=s(c.prototype),h=0;h<f.length;h++){var p=f[h];r.prototype[p]||(r.prototype[p]=c.prototype[p])}Object.defineProperty(r.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),r.prototype._destroy=function(t,e){this.push(null),this.end(),a(e,t)}},function(t,e,n){(function(e,r,i){"use strict";function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){P(e,t)}}function a(t){return M.from(t)}function s(t){return M.isBuffer(t)||t instanceof R}function u(){}function l(t,e){I=I||n(44),t=t||{},this.objectMode=!!t.objectMode,e instanceof I&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var r=t.highWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){b(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function c(t){if(I=I||n(44),!(z.call(c,this)||this instanceof I))return new c(t);this._writableState=new l(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),L.call(this)}function f(t,e){var n=new Error("write after end");t.emit("error",n),E(e,n)}function h(t,e,n,r){var i=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||e.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(t.emit("error",o),E(r,o),i=!1),i}function p(t,e,n){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=M.from(e,n)),e}function d(t,e,n,r,i,o){if(!n){var a=p(e,r,i);r!==a&&(n=!0,i="buffer",r=a)}var s=e.objectMode?1:r.length;e.length+=s;var u=e.length<e.highWaterMark;if(u||(e.needDrain=!0),e.writing||e.corked){var l=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:o,next:null},l?l.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else g(t,e,!1,s,r,i,o);return u}function g(t,e,n,r,i,o,a){e.writelen=r,e.writecb=a,e.writing=!0,e.sync=!0,n?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function y(t,e,n,r,i){--e.pendingcb,n?(E(i,r),E(C,t,e),t._writableState.errorEmitted=!0,t.emit("error",r)):(i(r),t._writableState.errorEmitted=!0,t.emit("error",r),C(t,e))}function v(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function b(t,e){var n=t._writableState,r=n.sync,i=n.writecb;if(v(n),e)y(t,n,r,e,i);else{var o=_(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||x(t,n),r?T(m,t,n,o,i):m(t,n,o,i)}}function m(t,e,n,r){n||w(t,e),e.pendingcb--,r(),C(t,e)}function w(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}function x(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var r=e.bufferedRequestCount,i=new Array(r),a=e.corkedRequestsFree;a.entry=n;for(var s=0,u=!0;n;)i[s]=n,n.isBuf||(u=!1),n=n.next,s+=1;i.allBuffers=u,g(t,e,!0,e.length,i,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e)}else{for(;n;){var l=n.chunk,c=n.encoding,f=n.callback;if(g(t,e,!1,e.objectMode?1:l.length,l,c,f),n=n.next,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequestCount=0,e.bufferedRequest=n,e.bufferProcessing=!1}function _(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function k(t,e){t._final(function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),C(t,e)})}function S(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,E(k,t,e)):(e.prefinished=!0,t.emit("prefinish")))}function C(t,e){var n=_(e);return n&&(S(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),n}function A(t,e,n){e.ending=!0,C(t,e),n&&(e.finished?E(n):t.once("finish",n)),e.ended=!0,t.writable=!1}function P(t,e,n){var r=t.entry;for(t.entry=null;r;){var i=r.callback;e.pendingcb--,i(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}var E=n(37);t.exports=c;var I,T=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?r:E;c.WritableState=l;var O=n(40);O.inherits=n(33);var B={deprecate:n(48)},L=n(38),M=n(39).Buffer,R=i.Uint8Array||function(){},F=n(43);O.inherits(c,L),l.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(l.prototype,"buffer",{get:B.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}();var z;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(z=Function.prototype[Symbol.hasInstance],Object.defineProperty(c,Symbol.hasInstance,{value:function(t){return!!z.call(this,t)||t&&t._writableState instanceof l}})):z=function(t){return t instanceof this},c.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},c.prototype.write=function(t,e,n){var r=this._writableState,i=!1,o=s(t)&&!r.objectMode;return o&&!M.isBuffer(t)&&(t=a(t)),"function"==typeof e&&(n=e,e=null),o?e="buffer":e||(e=r.defaultEncoding),"function"!=typeof n&&(n=u),r.ended?f(this,n):(o||h(this,r,t,n))&&(r.pendingcb++,i=d(this,r,o,t,e,n)),i},c.prototype.cork=function(){this._writableState.corked++},c.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||x(this,t))},c.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},c.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},c.prototype._writev=null,c.prototype.end=function(t,e,n){var r=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!==t&&void 0!==t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||A(this,r,n)},Object.defineProperty(c.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),c.prototype.destroy=F.destroy,c.prototype._undestroy=F.undestroy,c.prototype._destroy=function(t,e){this.end(),e(t)}}).call(e,n(36),n(46).setImmediate,function(){return this}())},function(t,e,n){function r(t,e){this._id=t,this._clearFn=e}var i=Function.prototype.apply;e.setTimeout=function(){return new r(i.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new r(i.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(47),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function r(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var r={callback:t,args:e};return l[u]=r,s(u),u++}function i(t){delete l[t]}function o(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}function a(t){if(c)setTimeout(a,0,t);else{var e=l[t];if(e){c=!0;try{o(e)}finally{i(t),c=!1}}}}if(!t.setImmediate){var s,u=1,l={},c=!1,f=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?function(){s=function(t){e.nextTick(function(){a(t)})}}():function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&a(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),s=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){a(t.data)},s=function(e){t.port2.postMessage(e)}}():f&&"onreadystatechange"in f.createElement("script")?function(){var t=f.documentElement;s=function(e){var n=f.createElement("script");n.onreadystatechange=function(){a(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():function(){s=function(t){setTimeout(a,0,t)}}(),h.setImmediate=r,h.clearImmediate=i}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,function(){return this}(),n(36))},function(t,e){(function(e){function n(t,e){function n(){if(!i){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation"),i=!0}return t.apply(this,arguments)}if(r("noDeprecation"))return t;var i=!1;return n}function r(t){try{if(!e.localStorage)return!1}catch(t){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=n}).call(e,function(){return this}())},function(t,e,n){"use strict";function r(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function i(t){var e=r(t);if("string"!=typeof e&&(b.isEncoding===m||!m(t)))throw new Error("Unknown encoding: "+t);return e||t}function o(t){this.encoding=i(t);var e;switch(this.encoding){case"utf16le":this.text=h,this.end=p,e=4;break;case"utf8":this.fillLast=l,e=4;break;case"base64":this.text=d,this.end=g,e=3;break;default:return this.write=y,void(this.end=v)}this.lastNeed=0,this.lastTotal=0,this.lastChar=b.allocUnsafe(e)}function a(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:-1}function s(t,e,n){var r=e.length-1;if(r<n)return 0;var i=a(e[r]);return i>=0?(i>0&&(t.lastNeed=i-1),i):--r<n?0:(i=a(e[r]))>=0?(i>0&&(t.lastNeed=i-2),i):--r<n?0:(i=a(e[r]),i>=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0)}function u(t,e,n){if(128!=(192&e[0]))return t.lastNeed=0,"�".repeat(n);if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�".repeat(n+1);if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�".repeat(n+2)}}function l(t){var e=this.lastTotal-this.lastNeed,n=u(this,t,e);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function c(t,e){var n=s(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var r=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,r),t.toString("utf8",e,r)}function f(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�".repeat(this.lastTotal-this.lastNeed):e}function h(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function p(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function d(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function g(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function y(t){return t.toString(this.encoding)}function v(t){return t&&t.length?this.write(t):""}var b=n(39).Buffer,m=b.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<t.length?e?e+this.text(t,n):this.text(t,n):e||""},o.prototype.end=f,o.prototype.text=c,o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,n){"use strict";function r(t){this.afterTransform=function(e,n){return i(t,e,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function i(t,e,n){var r=t._transformState;r.transforming=!1;var i=r.writecb;if(!i)return t.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!==n&&void 0!==n&&t.push(n),i(e);var o=t._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&t._read(o.highWaterMark)}function o(t){if(!(this instanceof o))return new o(t);s.call(this,t),this._transformState=new r(this);var e=this;this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(t,n){a(e,t,n)}):a(e)})}function a(t,e,n){if(e)return t.emit("error",e);null!==n&&void 0!==n&&t.push(n);var r=t._writableState,i=t._transformState;if(r.length)throw new Error("Calling transform done when ws.length != 0");if(i.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}t.exports=o;var s=n(44),u=n(40);u.inherits=n(33),u.inherits(o,s),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,s.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},o.prototype._write=function(t,e,n){var r=this._transformState;if(r.writecb=n,r.writechunk=t,r.writeencoding=e,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},o.prototype._destroy=function(t,e){var n=this;s.prototype._destroy.call(this,t,function(t){e(t),n.emit("close")})}},function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);i.call(this,t)}t.exports=r;var i=n(50),o=n(40);o.inherits=n(33),o.inherits(r,i),r.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){t.exports=n(45)},function(t,e,n){t.exports=n(44)},function(t,e,n){t.exports=n(34).Transform},function(t,e,n){t.exports=n(34).PassThrough},function(t,e,n){(function(e,n){"use strict";function r(){this.fileSystem={},this.baseSystem={}}function i(t){return 0===t.indexOf(n)&&(t=t.substring(n.length)),0===t.indexOf("/")&&(t=t.substring(1)),t}r.prototype.readFileSync=function(t){t=i(t);var n=this.baseSystem[t];if(n)return new e(n,"base64");var r=this.fileSystem[t];if(r)return r;throw"File '"+t+"' not found in virtual file system"},r.prototype.writeFileSync=function(t,e){this.fileSystem[i(t)]=e},r.prototype.bindFS=function(t){this.baseSystem=t||{}},t.exports=new r}).call(e,n(2).Buffer,"/")},function(t,e,n){(function(e){(function(){var r,i;r=function(){function t(){}var n,r,o,a;return o=function(t,e){return(Array(e+1).join("0")+t).slice(-e)},r=/[\n\r\t\b\f\(\)\\]/g,n={"\n":"\\n","\r":"\\r","\t":"\\t","\b":"\\b","\f":"\\f","\\":"\\\\","(":"\\(",")":"\\)"},a=function(t){var e,n,r,i,o;if(1&(i=t.length))throw new Error("Buffer length must be even");for(n=r=0,o=i-1;r<o;n=r+=2)e=t[n],t[n]=t[n+1],t[n+1]=e;return t},t.convert=function(s){var u,l,c,f,h,p,d,g,y;if("string"==typeof s)return"/"+s;if(s instanceof String){for(g=s,c=!1,l=f=0,d=g.length;f<d;l=f+=1)if(g.charCodeAt(l)>127){c=!0;break}return c&&(g=a(new e("\ufeff"+g,"utf16le")).toString("binary")),"("+(g=g.replace(r,function(t){return n[t]}))+")"}if(e.isBuffer(s))return"<"+s.toString("hex")+">";if(s instanceof i)return s.toString();if(s instanceof Date)return"(D:"+o(s.getUTCFullYear(),4)+o(s.getUTCMonth()+1,2)+o(s.getUTCDate(),2)+o(s.getUTCHours(),2)+o(s.getUTCMinutes(),2)+o(s.getUTCSeconds(),2)+"Z)";if(Array.isArray(s))return"["+function(){var e,n,r;for(r=[],e=0,n=s.length;e<n;e++)u=s[e],r.push(t.convert(u));return r}().join(" ")+"]";if("[object Object]"==={}.toString.call(s)){p=["<<"];for(h in s)y=s[h],p.push("/"+h+" "+t.convert(y));return p.push(">>"),p.join("\n")}return"number"==typeof s?t.number(s):""+s},t.number=function(t){if(t>-1e21&&t<1e21)return Math.round(1e6*t)/1e6;throw new Error("unsupported number: "+t)},t}(),t.exports=r,i=n(58)}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e){(function(){var r,i,o,a,s=function(t,e){return function(){return t.apply(e,arguments)}},u=function(t,e){function n(){this.constructor=t}for(var r in e)l.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},l={}.hasOwnProperty;a=n(59),o=n(31),i=function(t){function n(t,e,r){this.document=t,this.id=e,this.data=null!=r?r:{},this.finalize=s(this.finalize,this),n.__super__.constructor.call(this,{decodeStrings:!1}),this.gen=0,this.deflate=null,this.compress=this.document.compress&&!this.data.Filter,this.uncompressedLength=0,this.chunks=[]}return u(n,t),n.prototype.initDeflate=function(){return this.data.Filter="FlateDecode",this.deflate=a.createDeflate(),this.deflate.on("data",function(t){return function(e){return t.chunks.push(e),t.data.Length+=e.length}}(this)),this.deflate.on("end",this.finalize)},n.prototype._write=function(t,n,r){var i;return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.uncompressedLength+=t.length,null==(i=this.data).Length&&(i.Length=0),this.compress?(this.deflate||this.initDeflate(),this.deflate.write(t)):(this.chunks.push(t),this.data.Length+=t.length),r()},n.prototype.end=function(t){return n.__super__.end.apply(this,arguments),this.deflate?this.deflate.end():this.finalize()},n.prototype.finalize=function(){var t,e,n,i;if(this.offset=this.document._offset,this.document._write(this.id+" "+this.gen+" obj"),this.document._write(r.convert(this.data)),this.chunks.length){for(this.document._write("stream"),i=this.chunks,e=0,n=i.length;e<n;e++)t=i[e],this.document._write(t);this.chunks.length=0,this.document._write("\nendstream")}return this.document._write("endobj"),this.document._refEnd(this)},n.prototype.toString=function(){return this.id+" "+this.gen+" R"},n}(o.Writable),t.exports=i,r=n(57)}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(t,r){function i(e,n,r){function i(){for(var t;null!==(t=e.read());)s.push(t),u+=t.length;e.once("readable",i)}function o(t){e.removeListener("end",a),e.removeListener("readable",i),r(t)}function a(){var n=t.concat(s,u);s=[],r(null,n),e.close()}var s=[],u=0;e.on("error",o),e.on("end",a),e.end(n),i()}function o(e,n){if("string"==typeof n&&(n=new t(n)),!t.isBuffer(n))throw new TypeError("Not a string or buffer");var r=g.Z_FINISH;return e._processChunk(n,r)}function a(t){if(!(this instanceof a))return new a(t);p.call(this,t,g.DEFLATE)}function s(t){if(!(this instanceof s))return new s(t);p.call(this,t,g.INFLATE)}function u(t){if(!(this instanceof u))return new u(t);p.call(this,t,g.GZIP)}function l(t){if(!(this instanceof l))return new l(t);p.call(this,t,g.GUNZIP)}function c(t){if(!(this instanceof c))return new c(t);p.call(this,t,g.DEFLATERAW)}function f(t){if(!(this instanceof f))return new f(t);p.call(this,t,g.INFLATERAW)}function h(t){if(!(this instanceof h))return new h(t);p.call(this,t,g.UNZIP)}function p(n,r){if(this._opts=n=n||{},this._chunkSize=n.chunkSize||e.Z_DEFAULT_CHUNK,d.call(this,n),n.flush&&n.flush!==g.Z_NO_FLUSH&&n.flush!==g.Z_PARTIAL_FLUSH&&n.flush!==g.Z_SYNC_FLUSH&&n.flush!==g.Z_FULL_FLUSH&&n.flush!==g.Z_FINISH&&n.flush!==g.Z_BLOCK)throw new Error("Invalid flush flag: "+n.flush);if(this._flushFlag=n.flush||g.Z_NO_FLUSH,n.chunkSize&&(n.chunkSize<e.Z_MIN_CHUNK||n.chunkSize>e.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+n.chunkSize);if(n.windowBits&&(n.windowBits<e.Z_MIN_WINDOWBITS||n.windowBits>e.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+n.windowBits);if(n.level&&(n.level<e.Z_MIN_LEVEL||n.level>e.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+n.level);if(n.memLevel&&(n.memLevel<e.Z_MIN_MEMLEVEL||n.memLevel>e.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+n.memLevel);if(n.strategy&&n.strategy!=e.Z_FILTERED&&n.strategy!=e.Z_HUFFMAN_ONLY&&n.strategy!=e.Z_RLE&&n.strategy!=e.Z_FIXED&&n.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+n.strategy);if(n.dictionary&&!t.isBuffer(n.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new g.Zlib(r);var i=this;this._hadError=!1,this._binding.onerror=function(t,n){i._binding=null,i._hadError=!0;var r=new Error(t);r.errno=n,r.code=e.codes[n],i.emit("error",r)};var o=e.Z_DEFAULT_COMPRESSION;"number"==typeof n.level&&(o=n.level);var a=e.Z_DEFAULT_STRATEGY;"number"==typeof n.strategy&&(a=n.strategy),this._binding.init(n.windowBits||e.Z_DEFAULT_WINDOWBITS,o,n.memLevel||e.Z_DEFAULT_MEMLEVEL,a,n.dictionary),this._buffer=new t(this._chunkSize),this._offset=0,this._closed=!1,this._level=o,this._strategy=a,this.once("end",this.close)}var d=n(54),g=n(60),y=n(72),v=n(75).ok;g.Z_MIN_WINDOWBITS=8,g.Z_MAX_WINDOWBITS=15,g.Z_DEFAULT_WINDOWBITS=15,g.Z_MIN_CHUNK=64,g.Z_MAX_CHUNK=1/0,g.Z_DEFAULT_CHUNK=16384,g.Z_MIN_MEMLEVEL=1,g.Z_MAX_MEMLEVEL=9,g.Z_DEFAULT_MEMLEVEL=8,g.Z_MIN_LEVEL=-1,g.Z_MAX_LEVEL=9,g.Z_DEFAULT_LEVEL=g.Z_DEFAULT_COMPRESSION,Object.keys(g).forEach(function(t){t.match(/^Z/)&&(e[t]=g[t])}),e.codes={Z_OK:g.Z_OK,Z_STREAM_END:g.Z_STREAM_END,Z_NEED_DICT:g.Z_NEED_DICT,Z_ERRNO:g.Z_ERRNO,Z_STREAM_ERROR:g.Z_STREAM_ERROR,Z_DATA_ERROR:g.Z_DATA_ERROR,Z_MEM_ERROR:g.Z_MEM_ERROR,Z_BUF_ERROR:g.Z_BUF_ERROR,Z_VERSION_ERROR:g.Z_VERSION_ERROR},Object.keys(e.codes).forEach(function(t){e.codes[e.codes[t]]=t}),e.Deflate=a,e.Inflate=s,e.Gzip=u,e.Gunzip=l,e.DeflateRaw=c,e.InflateRaw=f,e.Unzip=h,e.createDeflate=function(t){return new a(t)},e.createInflate=function(t){return new s(t)},e.createDeflateRaw=function(t){return new c(t)},e.createInflateRaw=function(t){return new f(t)},e.createGzip=function(t){return new u(t)},e.createGunzip=function(t){return new l(t)},e.createUnzip=function(t){return new h(t)},e.deflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new a(e),t,n)},e.deflateSync=function(t,e){return o(new a(e),t)},e.gzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new u(e),t,n)},e.gzipSync=function(t,e){return o(new u(e),t)},e.deflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new c(e),t,n)},e.deflateRawSync=function(t,e){return o(new c(e),t)},e.unzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new h(e),t,n)},e.unzipSync=function(t,e){return o(new h(e),t)},e.inflate=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new s(e),t,n)},e.inflateSync=function(t,e){return o(new s(e),t)},e.gunzip=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new l(e),t,n)},e.gunzipSync=function(t,e){return o(new l(e),t)},e.inflateRaw=function(t,e,n){return"function"==typeof e&&(n=e,e={}),i(new f(e),t,n)},e.inflateRawSync=function(t,e){return o(new f(e),t)},y.inherits(p,d),p.prototype.params=function(t,n,i){if(t<e.Z_MIN_LEVEL||t>e.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(n!=e.Z_FILTERED&&n!=e.Z_HUFFMAN_ONLY&&n!=e.Z_RLE&&n!=e.Z_FIXED&&n!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+n);if(this._level!==t||this._strategy!==n){var o=this;this.flush(g.Z_SYNC_FLUSH,function(){o._binding.params(t,n), o._hadError||(o._level=t,o._strategy=n,i&&i())})}else r.nextTick(i)},p.prototype.reset=function(){return this._binding.reset()},p.prototype._flush=function(e){this._transform(new t(0),"",e)},p.prototype.flush=function(e,n){var i=this._writableState;if(("function"==typeof e||void 0===e&&!n)&&(n=e,e=g.Z_FULL_FLUSH),i.ended)n&&r.nextTick(n);else if(i.ending)n&&this.once("end",n);else if(i.needDrain){var o=this;this.once("drain",function(){o.flush(n)})}else this._flushFlag=e,this.write(new t(0),"",n)},p.prototype.close=function(t){if(t&&r.nextTick(t),!this._closed){this._closed=!0,this._binding.close();var e=this;r.nextTick(function(){e.emit("close")})}},p.prototype._transform=function(e,n,r){var i,o=this._writableState,a=o.ending||o.ended,s=a&&(!e||o.length===e.length);if(null===!e&&!t.isBuffer(e))return r(new Error("invalid input"));s?i=g.Z_FINISH:(i=this._flushFlag,e.length>=o.length&&(this._flushFlag=this._opts.flush||g.Z_NO_FLUSH));this._processChunk(e,i,r)},p.prototype._processChunk=function(e,n,r){function i(c,p){if(!u._hadError){var d=a-p;if(v(d>=0,"have should not go down"),d>0){var g=u._buffer.slice(u._offset,u._offset+d);u._offset+=d,l?u.push(g):(f.push(g),h+=g.length)}if((0===p||u._offset>=u._chunkSize)&&(a=u._chunkSize,u._offset=0,u._buffer=new t(u._chunkSize)),0===p){if(s+=o-c,o=c,!l)return!0;var y=u._binding.write(n,e,s,o,u._buffer,u._offset,u._chunkSize);return y.callback=i,void(y.buffer=e)}if(!l)return!1;r()}}var o=e&&e.length,a=this._chunkSize-this._offset,s=0,u=this,l="function"==typeof r;if(!l){var c,f=[],h=0;this.on("error",function(t){c=t});do{var p=this._binding.writeSync(n,e,s,o,this._buffer,this._offset,a)}while(!this._hadError&&i(p[0],p[1]));if(this._hadError)throw c;var d=t.concat(f,h);return this.close(),d}var g=this._binding.write(n,e,s,o,this._buffer,this._offset,a);g.buffer=e,g.callback=i},y.inherits(a,p),y.inherits(s,p),y.inherits(u,p),y.inherits(l,p),y.inherits(c,p),y.inherits(f,p),y.inherits(h,p)}).call(e,n(2).Buffer,n(36))},function(t,e,n){(function(t,r){function i(t){if(t<e.DEFLATE||t>e.UNZIP)throw new TypeError("Bad argument");this.mode=t,this.init_done=!1,this.write_in_progress=!1,this.pending_close=!1,this.windowBits=0,this.level=0,this.memLevel=0,this.strategy=0,this.dictionary=null}function o(t,e){for(var n=0;n<t.length;n++)this[e+n]=t[n]}var a=n(61),s=n(62),u=n(63),l=n(68),c=n(71);for(var f in c)e[f]=c[f];e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7,i.prototype.init=function(t,n,r,i,o){switch(this.windowBits=t,this.level=n,this.memLevel=r,this.strategy=i,this.mode!==e.GZIP&&this.mode!==e.GUNZIP||(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),this.mode!==e.DEFLATERAW&&this.mode!==e.INFLATERAW||(this.windowBits=-this.windowBits),this.strm=new s,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:var a=u.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:var a=l.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}if(a!==e.Z_OK)return void this._error(a);this.write_in_progress=!1,this.init_done=!0},i.prototype.params=function(){throw new Error("deflateParams Not supported")},i.prototype._writeCheck=function(){if(!this.init_done)throw new Error("write before init");if(this.mode===e.NONE)throw new Error("already finalized");if(this.write_in_progress)throw new Error("write already in progress");if(this.pending_close)throw new Error("close is pending")},i.prototype.write=function(e,n,r,i,o,a,s){this._writeCheck(),this.write_in_progress=!0;var u=this;return t.nextTick(function(){u.write_in_progress=!1;var t=u._write(e,n,r,i,o,a,s);u.callback(t[0],t[1]),u.pending_close&&u.close()}),this},i.prototype.writeSync=function(t,e,n,r,i,o,a){return this._writeCheck(),this._write(t,e,n,r,i,o,a)},i.prototype._write=function(t,n,i,a,s,c,f){if(this.write_in_progress=!0,t!==e.Z_NO_FLUSH&&t!==e.Z_PARTIAL_FLUSH&&t!==e.Z_SYNC_FLUSH&&t!==e.Z_FULL_FLUSH&&t!==e.Z_FINISH&&t!==e.Z_BLOCK)throw new Error("Invalid flush value");null==n&&(n=new r(0),a=0,i=0),s._set?s.set=s._set:s.set=o;var h=this.strm;switch(h.avail_in=a,h.input=n,h.next_in=i,h.avail_out=f,h.output=s,h.next_out=c,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:var p=u.deflate(h,t);break;case e.UNZIP:case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:var p=l.inflate(h,t);break;default:throw new Error("Unknown mode "+this.mode)}return p!==e.Z_STREAM_END&&p!==e.Z_OK&&this._error(p),this.write_in_progress=!1,[h.avail_in,h.avail_out]},i.prototype.close=function(){if(this.write_in_progress)return void(this.pending_close=!0);this.pending_close=!1,this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?u.deflateEnd(this.strm):l.inflateEnd(this.strm),this.mode=e.NONE},i.prototype.reset=function(){switch(this.mode){case e.DEFLATE:case e.DEFLATERAW:var t=u.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:var t=l.inflateReset(this.strm)}t!==e.Z_OK&&this._error(t)},i.prototype._error=function(t){this.onerror(a[t]+": "+this.strm.msg,t),this.write_in_progress=!1,this.pending_close&&this.close()},e.Zlib=i}).call(e,n(36),n(2).Buffer)},function(t,e){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(t,e){"use strict";function n(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}t.exports=n},function(t,e,n){"use strict";function r(t,e){return t.msg=M[e],e}function i(t){return(t<<1)-(t>4?9:0)}function o(t){for(var e=t.length;--e>=0;)t[e]=0}function a(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(T.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function s(t,e){O._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,a(t.strm)}function u(t,e){t.pending_buf[t.pending++]=e}function l(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function c(t,e,n,r){var i=t.avail_in;return i>r&&(i=r),0===i?0:(t.avail_in-=i,T.arraySet(e,t.input,t.next_in,i,n),1===t.state.wrap?t.adler=B(t.adler,e,i,n):2===t.state.wrap&&(t.adler=L(t.adler,e,i,n)),t.next_in+=i,t.total_in+=i,i)}function f(t,e){var n,r,i=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match,u=t.strstart>t.w_size-lt?t.strstart-(t.w_size-lt):0,l=t.window,c=t.w_mask,f=t.prev,h=t.strstart+ut,p=l[o+a-1],d=l[o+a];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(n=e,l[n+a]===d&&l[n+a-1]===p&&l[n]===l[o]&&l[++n]===l[o+1]){o+=2,n++;do{}while(l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&l[++o]===l[++n]&&o<h);if(r=ut-(h-o),o=h-ut,r>a){if(t.match_start=e,a=r,r>=s)break;p=l[o+a-1],d=l[o+a]}}}while((e=f[e&c])>u&&0!=--i);return a<=t.lookahead?a:t.lookahead}function h(t){var e,n,r,i,o,a=t.w_size;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=a+(a-lt)){T.arraySet(t.window,t.window,a,a,0),t.match_start-=a,t.strstart-=a,t.block_start-=a,n=t.hash_size,e=n;do{r=t.head[--e],t.head[e]=r>=a?r-a:0}while(--n);n=a,e=n;do{r=t.prev[--e],t.prev[e]=r>=a?r-a:0}while(--n);i+=a}if(0===t.strm.avail_in)break;if(n=c(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=n,t.lookahead+t.insert>=st)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=(t.ins_h<<t.hash_shift^t.window[o+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[o+st-1])&t.hash_mask,t.prev[o&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=o,o++,t.insert--,!(t.lookahead+t.insert<st)););}while(t.lookahead<lt&&0!==t.strm.avail_in)}function p(t,e){var n=65535;for(n>t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(h(t),0===t.lookahead&&e===R)return bt;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var r=t.block_start+n;if((0===t.strstart||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,s(t,!1),0===t.strm.avail_out))return bt;if(t.strstart-t.block_start>=t.w_size-lt&&(s(t,!1),0===t.strm.avail_out))return bt}return t.insert=0,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):(t.strstart>t.block_start&&(s(t,!1),t.strm.avail_out),bt)}function d(t,e){for(var n,r;;){if(t.lookahead<lt){if(h(t),t.lookahead<lt&&e===R)return bt;if(0===t.lookahead)break}if(n=0,t.lookahead>=st&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==n&&t.strstart-n<=t.w_size-lt&&(t.match_length=f(t,n)),t.match_length>=st)if(r=O._tr_tally(t,t.strstart-t.match_start,t.match_length-st),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=st){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else r=O._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&(s(t,!1),0===t.strm.avail_out))return bt}return t.insert=t.strstart<st-1?t.strstart:st-1,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?bt:mt}function g(t,e){for(var n,r,i;;){if(t.lookahead<lt){if(h(t),t.lookahead<lt&&e===R)return bt;if(0===t.lookahead)break}if(n=0,t.lookahead>=st&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=st-1,0!==n&&t.prev_length<t.max_lazy_match&&t.strstart-n<=t.w_size-lt&&(t.match_length=f(t,n),t.match_length<=5&&(t.strategy===q||t.match_length===st&&t.strstart-t.match_start>4096)&&(t.match_length=st-1)),t.prev_length>=st&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-st,r=O._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-st),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+st-1])&t.hash_mask,n=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=st-1,t.strstart++,r&&(s(t,!1),0===t.strm.avail_out))return bt}else if(t.match_available){if(r=O._tr_tally(t,0,t.window[t.strstart-1]),r&&s(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return bt}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=O._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<st-1?t.strstart:st-1,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?bt:mt}function y(t,e){for(var n,r,i,o,a=t.window;;){if(t.lookahead<=ut){if(h(t),t.lookahead<=ut&&e===R)return bt;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=st&&t.strstart>0&&(i=t.strstart-1,(r=a[i])===a[++i]&&r===a[++i]&&r===a[++i])){o=t.strstart+ut;do{}while(r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&r===a[++i]&&i<o);t.match_length=ut-(o-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=st?(n=O._tr_tally(t,1,t.match_length-st),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=O._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(s(t,!1),0===t.strm.avail_out))return bt}return t.insert=0,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?bt:mt}function v(t,e){for(var n;;){if(0===t.lookahead&&(h(t),0===t.lookahead)){if(e===R)return bt;break}if(t.match_length=0,n=O._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(s(t,!1),0===t.strm.avail_out))return bt}return t.insert=0,e===D?(s(t,!0),0===t.strm.avail_out?wt:xt):t.last_lit&&(s(t,!1),0===t.strm.avail_out)?bt:mt}function b(t,e,n,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=r,this.func=i}function m(t){t.window_size=2*t.w_size,o(t.head),t.max_lazy_match=I[t.level].max_lazy,t.good_match=I[t.level].good_length,t.nice_match=I[t.level].nice_length,t.max_chain_length=I[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=st-1,t.match_available=0,t.ins_h=0}function w(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Q,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new T.Buf16(2*ot),this.dyn_dtree=new T.Buf16(2*(2*rt+1)),this.bl_tree=new T.Buf16(2*(2*it+1)),o(this.dyn_ltree),o(this.dyn_dtree),o(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new T.Buf16(at+1),this.heap=new T.Buf16(2*nt+1),o(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new T.Buf16(2*nt+1),o(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function x(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=J,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?ft:yt,t.adler=2===e.wrap?0:1,e.last_flush=R,O._tr_init(e),U):r(t,j)}function _(t){var e=x(t);return e===U&&m(t.state),e}function k(t,e){return t&&t.state?2!==t.state.wrap?j:(t.state.gzhead=e,U):j}function S(t,e,n,i,o,a){if(!t)return j;var s=1;if(e===H&&(e=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),o<1||o>$||n!==Q||i<8||i>15||e<0||e>9||a<0||a>X)return r(t,j);8===i&&(i=9);var u=new w;return t.state=u,u.strm=t,u.wrap=s,u.gzhead=null,u.w_bits=i,u.w_size=1<<u.w_bits,u.w_mask=u.w_size-1,u.hash_bits=o+7,u.hash_size=1<<u.hash_bits,u.hash_mask=u.hash_size-1,u.hash_shift=~~((u.hash_bits+st-1)/st),u.window=new T.Buf8(2*u.w_size),u.head=new T.Buf16(u.hash_size),u.prev=new T.Buf16(u.w_size),u.lit_bufsize=1<<o+6,u.pending_buf_size=4*u.lit_bufsize,u.pending_buf=new T.Buf8(u.pending_buf_size),u.d_buf=1*u.lit_bufsize,u.l_buf=3*u.lit_bufsize,u.level=e,u.strategy=a,u.method=n,_(t)}function C(t,e){return S(t,e,Q,tt,et,K)}function A(t,e){var n,s,c,f;if(!t||!t.state||e>N||e<0)return t?r(t,j):j;if(s=t.state,!t.output||!t.input&&0!==t.avail_in||s.status===vt&&e!==D)return r(t,0===t.avail_out?V:j);if(s.strm=t,n=s.last_flush,s.last_flush=e,s.status===ft)if(2===s.wrap)t.adler=0,u(s,31),u(s,139),u(s,8),s.gzhead?(u(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),u(s,255&s.gzhead.time),u(s,s.gzhead.time>>8&255),u(s,s.gzhead.time>>16&255),u(s,s.gzhead.time>>24&255),u(s,9===s.level?2:s.strategy>=Z||s.level<2?4:0),u(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(u(s,255&s.gzhead.extra.length),u(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(t.adler=L(t.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=ht):(u(s,0),u(s,0),u(s,0),u(s,0),u(s,0),u(s,9===s.level?2:s.strategy>=Z||s.level<2?4:0),u(s,_t),s.status=yt);else{var h=Q+(s.w_bits-8<<4)<<8,p=-1;p=s.strategy>=Z||s.level<2?0:s.level<6?1:6===s.level?2:3,h|=p<<6,0!==s.strstart&&(h|=ct),h+=31-h%31,s.status=yt,l(s,h),0!==s.strstart&&(l(s,t.adler>>>16),l(s,65535&t.adler)),t.adler=1}if(s.status===ht)if(s.gzhead.extra){for(c=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>c&&(t.adler=L(t.adler,s.pending_buf,s.pending-c,c)),a(t),c=s.pending,s.pending!==s.pending_buf_size));)u(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>c&&(t.adler=L(t.adler,s.pending_buf,s.pending-c,c)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=pt)}else s.status=pt;if(s.status===pt)if(s.gzhead.name){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(t.adler=L(t.adler,s.pending_buf,s.pending-c,c)),a(t),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,u(s,f)}while(0!==f);s.gzhead.hcrc&&s.pending>c&&(t.adler=L(t.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.gzindex=0,s.status=dt)}else s.status=dt;if(s.status===dt)if(s.gzhead.comment){c=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>c&&(t.adler=L(t.adler,s.pending_buf,s.pending-c,c)),a(t),c=s.pending,s.pending===s.pending_buf_size)){f=1;break}f=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,u(s,f)}while(0!==f);s.gzhead.hcrc&&s.pending>c&&(t.adler=L(t.adler,s.pending_buf,s.pending-c,c)),0===f&&(s.status=gt)}else s.status=gt;if(s.status===gt&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&a(t),s.pending+2<=s.pending_buf_size&&(u(s,255&t.adler),u(s,t.adler>>8&255),t.adler=0,s.status=yt)):s.status=yt),0!==s.pending){if(a(t),0===t.avail_out)return s.last_flush=-1,U}else if(0===t.avail_in&&i(e)<=i(n)&&e!==D)return r(t,V);if(s.status===vt&&0!==t.avail_in)return r(t,V);if(0!==t.avail_in||0!==s.lookahead||e!==R&&s.status!==vt){var d=s.strategy===Z?v(s,e):s.strategy===Y?y(s,e):I[s.level].func(s,e);if(d!==wt&&d!==xt||(s.status=vt),d===bt||d===wt)return 0===t.avail_out&&(s.last_flush=-1),U;if(d===mt&&(e===F?O._tr_align(s):e!==N&&(O._tr_stored_block(s,0,0,!1),e===z&&(o(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),a(t),0===t.avail_out))return s.last_flush=-1,U}return e!==D?U:s.wrap<=0?W:(2===s.wrap?(u(s,255&t.adler),u(s,t.adler>>8&255),u(s,t.adler>>16&255),u(s,t.adler>>24&255),u(s,255&t.total_in),u(s,t.total_in>>8&255),u(s,t.total_in>>16&255),u(s,t.total_in>>24&255)):(l(s,t.adler>>>16),l(s,65535&t.adler)),a(t),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?U:W)}function P(t){var e;return t&&t.state?(e=t.state.status)!==ft&&e!==ht&&e!==pt&&e!==dt&&e!==gt&&e!==yt&&e!==vt?r(t,j):(t.state=null,e===yt?r(t,G):U):j}function E(t,e){var n,r,i,a,s,u,l,c,f=e.length;if(!t||!t.state)return j;if(n=t.state,2===(a=n.wrap)||1===a&&n.status!==ft||n.lookahead)return j;for(1===a&&(t.adler=B(t.adler,e,f,0)),n.wrap=0,f>=n.w_size&&(0===a&&(o(n.head),n.strstart=0,n.block_start=0,n.insert=0),c=new T.Buf8(n.w_size),T.arraySet(c,e,f-n.w_size,n.w_size,0),e=c,f=n.w_size),s=t.avail_in,u=t.next_in,l=t.input,t.avail_in=f,t.next_in=0,t.input=e,h(n);n.lookahead>=st;){r=n.strstart,i=n.lookahead-(st-1);do{n.ins_h=(n.ins_h<<n.hash_shift^n.window[r+st-1])&n.hash_mask,n.prev[r&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=r,r++}while(--i);n.strstart=r,n.lookahead=st-1,h(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=st-1,n.match_available=0,t.next_in=u,t.input=l,t.avail_in=s,n.wrap=a,U}var I,T=n(64),O=n(65),B=n(66),L=n(67),M=n(61),R=0,F=1,z=3,D=4,N=5,U=0,W=1,j=-2,G=-3,V=-5,H=-1,q=1,Z=2,Y=3,X=4,K=0,J=2,Q=8,$=9,tt=15,et=8,nt=286,rt=30,it=19,ot=2*nt+1,at=15,st=3,ut=258,lt=ut+st+1,ct=32,ft=42,ht=69,pt=73,dt=91,gt=103,yt=113,vt=666,bt=1,mt=2,wt=3,xt=4,_t=3;I=[new b(0,0,0,0,p),new b(4,4,8,4,d),new b(4,5,16,8,d),new b(4,6,32,32,d),new b(4,4,16,16,g),new b(8,16,32,32,g),new b(8,16,128,128,g),new b(8,32,128,256,g),new b(32,128,258,1024,g),new b(32,258,258,4096,g)],e.deflateInit=C,e.deflateInit2=S,e.deflateReset=_,e.deflateResetKeep=x,e.deflateSetHeader=k,e.deflate=A,e.deflateEnd=P,e.deflateSetDictionary=E,e.deflateInfo="pako deflate (from Nodeca project)"},function(t,e){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var n=e.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var r in n)n.hasOwnProperty(r)&&(t[r]=n[r])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var r={arraySet:function(t,e,n,r,i){if(e.subarray&&t.subarray)return void t.set(e.subarray(n,n+r),i);for(var o=0;o<r;o++)t[i+o]=e[n+o]},flattenChunks:function(t){var e,n,r,i,o,a;for(r=0,e=0,n=t.length;e<n;e++)r+=t[e].length;for(a=new Uint8Array(r),i=0,e=0,n=t.length;e<n;e++)o=t[e],a.set(o,i),i+=o.length;return a}},i={arraySet:function(t,e,n,r,i){for(var o=0;o<r;o++)t[i+o]=e[n+o]},flattenChunks:function(t){return[].concat.apply([],t)}};e.setTyped=function(t){t?(e.Buf8=Uint8Array,e.Buf16=Uint16Array,e.Buf32=Int32Array,e.assign(e,r)):(e.Buf8=Array,e.Buf16=Array,e.Buf32=Array,e.assign(e,i))},e.setTyped(n)},function(t,e,n){"use strict";function r(t){for(var e=t.length;--e>=0;)t[e]=0}function i(t,e,n,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}function o(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function a(t){return t<256?ot[t]:ot[256+(t>>>7)]}function s(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function u(t,e,n){t.bi_valid>Z-n?(t.bi_buf|=e<<t.bi_valid&65535,s(t,t.bi_buf),t.bi_buf=e>>Z-t.bi_valid,t.bi_valid+=n-Z):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=n)}function l(t,e,n){u(t,n[2*e],n[2*e+1])}function c(t,e){var n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}function f(t){16===t.bi_valid?(s(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function h(t,e){var n,r,i,o,a,s,u=e.dyn_tree,l=e.max_code,c=e.stat_desc.static_tree,f=e.stat_desc.has_stree,h=e.stat_desc.extra_bits,p=e.stat_desc.extra_base,d=e.stat_desc.max_length,g=0;for(o=0;o<=q;o++)t.bl_count[o]=0;for(u[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<H;n++)r=t.heap[n],o=u[2*u[2*r+1]+1]+1,o>d&&(o=d,g++),u[2*r+1]=o,r>l||(t.bl_count[o]++,a=0,r>=p&&(a=h[r-p]),s=u[2*r],t.opt_len+=s*(o+a),f&&(t.static_len+=s*(c[2*r+1]+a)));if(0!==g){do{for(o=d-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[d]--,g-=2}while(g>0);for(o=d;0!==o;o--)for(r=t.bl_count[o];0!==r;)(i=t.heap[--n])>l||(u[2*i+1]!==o&&(t.opt_len+=(o-u[2*i+1])*u[2*i],u[2*i+1]=o),r--)}}function p(t,e,n){var r,i,o=new Array(q+1),a=0;for(r=1;r<=q;r++)o[r]=a=a+n[r-1]<<1;for(i=0;i<=e;i++){var s=t[2*i+1];0!==s&&(t[2*i]=c(o[s]++,s))}}function d(){var t,e,n,r,o,a=new Array(q+1);for(n=0,r=0;r<U-1;r++)for(st[r]=n,t=0;t<1<<$[r];t++)at[n++]=r;for(at[n-1]=r,o=0,r=0;r<16;r++)for(ut[r]=o,t=0;t<1<<tt[r];t++)ot[o++]=r;for(o>>=7;r<G;r++)for(ut[r]=o<<7,t=0;t<1<<tt[r]-7;t++)ot[256+o++]=r;for(e=0;e<=q;e++)a[e]=0;for(t=0;t<=143;)rt[2*t+1]=8,t++,a[8]++;for(;t<=255;)rt[2*t+1]=9,t++,a[9]++;for(;t<=279;)rt[2*t+1]=7,t++,a[7]++;for(;t<=287;)rt[2*t+1]=8,t++,a[8]++;for(p(rt,j+1,a),t=0;t<G;t++)it[2*t+1]=5,it[2*t]=c(t,5);lt=new i(rt,$,W+1,j,q),ct=new i(it,tt,0,G,q),ft=new i(new Array(0),et,0,V,Y)}function g(t){var e;for(e=0;e<j;e++)t.dyn_ltree[2*e]=0;for(e=0;e<G;e++)t.dyn_dtree[2*e]=0;for(e=0;e<V;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*X]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function y(t){t.bi_valid>8?s(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function v(t,e,n,r){y(t),r&&(s(t,n),s(t,~n)),B.arraySet(t.pending_buf,t.window,e,n,t.pending),t.pending+=n}function b(t,e,n,r){var i=2*e,o=2*n;return t[i]<t[o]||t[i]===t[o]&&r[e]<=r[n]}function m(t,e,n){for(var r=t.heap[n],i=n<<1;i<=t.heap_len&&(i<t.heap_len&&b(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!b(e,r,t.heap[i],t.depth));)t.heap[n]=t.heap[i],n=i,i<<=1;t.heap[n]=r}function w(t,e,n){var r,i,o,s,c=0;if(0!==t.last_lit)do{r=t.pending_buf[t.d_buf+2*c]<<8|t.pending_buf[t.d_buf+2*c+1],i=t.pending_buf[t.l_buf+c],c++,0===r?l(t,i,e):(o=at[i],l(t,o+W+1,e),s=$[o],0!==s&&(i-=st[o],u(t,i,s)),r--,o=a(r),l(t,o,n),0!==(s=tt[o])&&(r-=ut[o],u(t,r,s)))}while(c<t.last_lit);l(t,X,e)}function x(t,e){var n,r,i,o=e.dyn_tree,a=e.stat_desc.static_tree,s=e.stat_desc.has_stree,u=e.stat_desc.elems,l=-1;for(t.heap_len=0,t.heap_max=H,n=0;n<u;n++)0!==o[2*n]?(t.heap[++t.heap_len]=l=n,t.depth[n]=0):o[2*n+1]=0;for(;t.heap_len<2;)i=t.heap[++t.heap_len]=l<2?++l:0,o[2*i]=1,t.depth[i]=0,t.opt_len--,s&&(t.static_len-=a[2*i+1]);for(e.max_code=l,n=t.heap_len>>1;n>=1;n--)m(t,o,n);i=u;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],m(t,o,1),r=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=r,o[2*i]=o[2*n]+o[2*r],t.depth[i]=(t.depth[n]>=t.depth[r]?t.depth[n]:t.depth[r])+1,o[2*n+1]=o[2*r+1]=i,t.heap[1]=i++,m(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],h(t,e),p(o,l,t.bl_count)}function _(t,e,n){var r,i,o=-1,a=e[1],s=0,u=7,l=4;for(0===a&&(u=138,l=3),e[2*(n+1)+1]=65535,r=0;r<=n;r++)i=a,a=e[2*(r+1)+1],++s<u&&i===a||(s<l?t.bl_tree[2*i]+=s:0!==i?(i!==o&&t.bl_tree[2*i]++,t.bl_tree[2*K]++):s<=10?t.bl_tree[2*J]++:t.bl_tree[2*Q]++,s=0,o=i,0===a?(u=138,l=3):i===a?(u=6,l=3):(u=7,l=4))}function k(t,e,n){var r,i,o=-1,a=e[1],s=0,c=7,f=4;for(0===a&&(c=138,f=3),r=0;r<=n;r++)if(i=a,a=e[2*(r+1)+1],!(++s<c&&i===a)){if(s<f)do{l(t,i,t.bl_tree)}while(0!=--s);else 0!==i?(i!==o&&(l(t,i,t.bl_tree),s--),l(t,K,t.bl_tree),u(t,s-3,2)):s<=10?(l(t,J,t.bl_tree),u(t,s-3,3)):(l(t,Q,t.bl_tree),u(t,s-11,7));s=0,o=i,0===a?(c=138,f=3):i===a?(c=6,f=3):(c=7,f=4)}}function S(t){var e;for(_(t,t.dyn_ltree,t.l_desc.max_code),_(t,t.dyn_dtree,t.d_desc.max_code),x(t,t.bl_desc),e=V-1;e>=3&&0===t.bl_tree[2*nt[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function C(t,e,n,r){var i;for(u(t,e-257,5),u(t,n-1,5),u(t,r-4,4),i=0;i<r;i++)u(t,t.bl_tree[2*nt[i]+1],3);k(t,t.dyn_ltree,e-1),k(t,t.dyn_dtree,n-1)}function A(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return M;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return R;for(e=32;e<W;e++)if(0!==t.dyn_ltree[2*e])return R;return M}function P(t){ht||(d(),ht=!0),t.l_desc=new o(t.dyn_ltree,lt),t.d_desc=new o(t.dyn_dtree,ct),t.bl_desc=new o(t.bl_tree,ft),t.bi_buf=0,t.bi_valid=0,g(t)}function E(t,e,n,r){u(t,(z<<1)+(r?1:0),3),v(t,e,n,!0)}function I(t){u(t,D<<1,3),l(t,X,rt),f(t)}function T(t,e,n,r){var i,o,a=0;t.level>0?(t.strm.data_type===F&&(t.strm.data_type=A(t)),x(t,t.l_desc),x(t,t.d_desc),a=S(t),i=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=i&&(i=o)):i=o=n+5,n+4<=i&&-1!==e?E(t,e,n,r):t.strategy===L||o===i?(u(t,(D<<1)+(r?1:0),3),w(t,rt,it)):(u(t,(N<<1)+(r?1:0),3),C(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),w(t,t.dyn_ltree,t.dyn_dtree)),g(t),r&&y(t)}function O(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(at[n]+W+1)]++,t.dyn_dtree[2*a(e)]++),t.last_lit===t.lit_bufsize-1}var B=n(64),L=4,M=0,R=1,F=2,z=0,D=1,N=2,U=29,W=256,j=W+1+U,G=30,V=19,H=2*j+1,q=15,Z=16,Y=7,X=256,K=16,J=17,Q=18,$=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],tt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],et=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],nt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],rt=new Array(2*(j+2));r(rt);var it=new Array(2*G);r(it);var ot=new Array(512);r(ot);var at=new Array(256);r(at);var st=new Array(U);r(st);var ut=new Array(G);r(ut);var lt,ct,ft,ht=!1;e._tr_init=P,e._tr_stored_block=E,e._tr_flush_block=T,e._tr_tally=O,e._tr_align=I},function(t,e){"use strict";function n(t,e,n,r){for(var i=65535&t|0,o=t>>>16&65535|0,a=0;0!==n;){a=n>2e3?2e3:n,n-=a;do{i=i+e[r++]|0,o=o+i|0}while(--a);i%=65521,o%=65521}return i|o<<16|0}t.exports=n},function(t,e){"use strict";function n(t,e,n,i){var o=r,a=i+n;t^=-1;for(var s=i;s<a;s++)t=t>>>8^o[255&(t^e[s])];return-1^t}var r=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();t.exports=n},function(t,e,n){"use strict";function r(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function i(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new b.Buf16(320),this.work=new b.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function o(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=z,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new b.Buf32(gt),e.distcode=e.distdyn=new b.Buf32(yt),e.sane=1,e.back=-1,I):B}function a(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,o(t)):B}function s(t,e){var n,r;return t&&t.state?(r=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?B:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=n,r.wbits=e,a(t))):B}function u(t,e){var n,r;return t?(r=new i,t.state=r,r.window=null,n=s(t,e),n!==I&&(t.state=null),n):B}function l(t){return u(t,vt)}function c(t){if(bt){var e;for(y=new b.Buf32(512),v=new b.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(_(S,t.lens,0,288,y,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;_(C,t.lens,0,32,v,0,t.work,{bits:5}),bt=!1}t.lencode=y,t.lenbits=9,t.distcode=v,t.distbits=5}function f(t,e,n,r){var i,o=t.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new b.Buf8(o.wsize)),r>=o.wsize?(b.arraySet(o.window,e,n-o.wsize,o.wsize,0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),b.arraySet(o.window,e,n-r,i,o.wnext),r-=i,r?(b.arraySet(o.window,e,n-r,r,0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=i))),0}function h(t,e){var n,i,o,a,s,u,l,h,p,d,g,y,v,gt,yt,vt,bt,mt,wt,xt,_t,kt,St,Ct,At=0,Pt=new b.Buf8(4),Et=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return B;n=t.state,n.mode===Y&&(n.mode=X),s=t.next_out,o=t.output,l=t.avail_out,a=t.next_in,i=t.input,u=t.avail_in,h=n.hold,p=n.bits,d=u,g=l,kt=I;t:for(;;)switch(n.mode){case z:if(0===n.wrap){n.mode=X;break}for(;p<16;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(2&n.wrap&&35615===h){n.check=0,Pt[0]=255&h,Pt[1]=h>>>8&255,n.check=w(n.check,Pt,2,0),h=0,p=0,n.mode=D;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",n.mode=ht;break}if((15&h)!==F){t.msg="unknown compression method",n.mode=ht;break}if(h>>>=4,p-=4,_t=8+(15&h),0===n.wbits)n.wbits=_t;else if(_t>n.wbits){t.msg="invalid window size",n.mode=ht;break}n.dmax=1<<_t,t.adler=n.check=1,n.mode=512&h?q:Y,h=0,p=0;break;case D:for(;p<16;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(n.flags=h,(255&n.flags)!==F){t.msg="unknown compression method",n.mode=ht;break}if(57344&n.flags){t.msg="unknown header flags set",n.mode=ht;break}n.head&&(n.head.text=h>>8&1),512&n.flags&&(Pt[0]=255&h,Pt[1]=h>>>8&255,n.check=w(n.check,Pt,2,0)),h=0,p=0,n.mode=N;case N:for(;p<32;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}n.head&&(n.head.time=h),512&n.flags&&(Pt[0]=255&h,Pt[1]=h>>>8&255,Pt[2]=h>>>16&255,Pt[3]=h>>>24&255,n.check=w(n.check,Pt,4,0)),h=0,p=0,n.mode=U;case U:for(;p<16;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}n.head&&(n.head.xflags=255&h,n.head.os=h>>8),512&n.flags&&(Pt[0]=255&h,Pt[1]=h>>>8&255,n.check=w(n.check,Pt,2,0)),h=0,p=0,n.mode=W;case W:if(1024&n.flags){for(;p<16;){ if(0===u)break t;u--,h+=i[a++]<<p,p+=8}n.length=h,n.head&&(n.head.extra_len=h),512&n.flags&&(Pt[0]=255&h,Pt[1]=h>>>8&255,n.check=w(n.check,Pt,2,0)),h=0,p=0}else n.head&&(n.head.extra=null);n.mode=j;case j:if(1024&n.flags&&(y=n.length,y>u&&(y=u),y&&(n.head&&(_t=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),b.arraySet(n.head.extra,i,a,y,_t)),512&n.flags&&(n.check=w(n.check,i,y,a)),u-=y,a+=y,n.length-=y),n.length))break t;n.length=0,n.mode=G;case G:if(2048&n.flags){if(0===u)break t;y=0;do{_t=i[a+y++],n.head&&_t&&n.length<65536&&(n.head.name+=String.fromCharCode(_t))}while(_t&&y<u);if(512&n.flags&&(n.check=w(n.check,i,y,a)),u-=y,a+=y,_t)break t}else n.head&&(n.head.name=null);n.length=0,n.mode=V;case V:if(4096&n.flags){if(0===u)break t;y=0;do{_t=i[a+y++],n.head&&_t&&n.length<65536&&(n.head.comment+=String.fromCharCode(_t))}while(_t&&y<u);if(512&n.flags&&(n.check=w(n.check,i,y,a)),u-=y,a+=y,_t)break t}else n.head&&(n.head.comment=null);n.mode=H;case H:if(512&n.flags){for(;p<16;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(h!==(65535&n.check)){t.msg="header crc mismatch",n.mode=ht;break}h=0,p=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=Y;break;case q:for(;p<32;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}t.adler=n.check=r(h),h=0,p=0,n.mode=Z;case Z:if(0===n.havedict)return t.next_out=s,t.avail_out=l,t.next_in=a,t.avail_in=u,n.hold=h,n.bits=p,O;t.adler=n.check=1,n.mode=Y;case Y:if(e===P||e===E)break t;case X:if(n.last){h>>>=7&p,p-=7&p,n.mode=lt;break}for(;p<3;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}switch(n.last=1&h,h>>>=1,p-=1,3&h){case 0:n.mode=K;break;case 1:if(c(n),n.mode=nt,e===E){h>>>=2,p-=2;break t}break;case 2:n.mode=$;break;case 3:t.msg="invalid block type",n.mode=ht}h>>>=2,p-=2;break;case K:for(h>>>=7&p,p-=7&p;p<32;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",n.mode=ht;break}if(n.length=65535&h,h=0,p=0,n.mode=J,e===E)break t;case J:n.mode=Q;case Q:if(y=n.length){if(y>u&&(y=u),y>l&&(y=l),0===y)break t;b.arraySet(o,i,a,y,s),u-=y,a+=y,l-=y,s+=y,n.length-=y;break}n.mode=Y;break;case $:for(;p<14;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(n.nlen=257+(31&h),h>>>=5,p-=5,n.ndist=1+(31&h),h>>>=5,p-=5,n.ncode=4+(15&h),h>>>=4,p-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=ht;break}n.have=0,n.mode=tt;case tt:for(;n.have<n.ncode;){for(;p<3;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}n.lens[Et[n.have++]]=7&h,h>>>=3,p-=3}for(;n.have<19;)n.lens[Et[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,St={bits:n.lenbits},kt=_(k,n.lens,0,19,n.lencode,0,n.work,St),n.lenbits=St.bits,kt){t.msg="invalid code lengths set",n.mode=ht;break}n.have=0,n.mode=et;case et:for(;n.have<n.nlen+n.ndist;){for(;At=n.lencode[h&(1<<n.lenbits)-1],yt=At>>>24,vt=At>>>16&255,bt=65535&At,!(yt<=p);){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(bt<16)h>>>=yt,p-=yt,n.lens[n.have++]=bt;else{if(16===bt){for(Ct=yt+2;p<Ct;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(h>>>=yt,p-=yt,0===n.have){t.msg="invalid bit length repeat",n.mode=ht;break}_t=n.lens[n.have-1],y=3+(3&h),h>>>=2,p-=2}else if(17===bt){for(Ct=yt+3;p<Ct;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}h>>>=yt,p-=yt,_t=0,y=3+(7&h),h>>>=3,p-=3}else{for(Ct=yt+7;p<Ct;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}h>>>=yt,p-=yt,_t=0,y=11+(127&h),h>>>=7,p-=7}if(n.have+y>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=ht;break}for(;y--;)n.lens[n.have++]=_t}}if(n.mode===ht)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=ht;break}if(n.lenbits=9,St={bits:n.lenbits},kt=_(S,n.lens,0,n.nlen,n.lencode,0,n.work,St),n.lenbits=St.bits,kt){t.msg="invalid literal/lengths set",n.mode=ht;break}if(n.distbits=6,n.distcode=n.distdyn,St={bits:n.distbits},kt=_(C,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,St),n.distbits=St.bits,kt){t.msg="invalid distances set",n.mode=ht;break}if(n.mode=nt,e===E)break t;case nt:n.mode=rt;case rt:if(u>=6&&l>=258){t.next_out=s,t.avail_out=l,t.next_in=a,t.avail_in=u,n.hold=h,n.bits=p,x(t,g),s=t.next_out,o=t.output,l=t.avail_out,a=t.next_in,i=t.input,u=t.avail_in,h=n.hold,p=n.bits,n.mode===Y&&(n.back=-1);break}for(n.back=0;At=n.lencode[h&(1<<n.lenbits)-1],yt=At>>>24,vt=At>>>16&255,bt=65535&At,!(yt<=p);){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(vt&&0==(240&vt)){for(mt=yt,wt=vt,xt=bt;At=n.lencode[xt+((h&(1<<mt+wt)-1)>>mt)],yt=At>>>24,vt=At>>>16&255,bt=65535&At,!(mt+yt<=p);){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}h>>>=mt,p-=mt,n.back+=mt}if(h>>>=yt,p-=yt,n.back+=yt,n.length=bt,0===vt){n.mode=ut;break}if(32&vt){n.back=-1,n.mode=Y;break}if(64&vt){t.msg="invalid literal/length code",n.mode=ht;break}n.extra=15&vt,n.mode=it;case it:if(n.extra){for(Ct=n.extra;p<Ct;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}n.length+=h&(1<<n.extra)-1,h>>>=n.extra,p-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=ot;case ot:for(;At=n.distcode[h&(1<<n.distbits)-1],yt=At>>>24,vt=At>>>16&255,bt=65535&At,!(yt<=p);){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(0==(240&vt)){for(mt=yt,wt=vt,xt=bt;At=n.distcode[xt+((h&(1<<mt+wt)-1)>>mt)],yt=At>>>24,vt=At>>>16&255,bt=65535&At,!(mt+yt<=p);){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}h>>>=mt,p-=mt,n.back+=mt}if(h>>>=yt,p-=yt,n.back+=yt,64&vt){t.msg="invalid distance code",n.mode=ht;break}n.offset=bt,n.extra=15&vt,n.mode=at;case at:if(n.extra){for(Ct=n.extra;p<Ct;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}n.offset+=h&(1<<n.extra)-1,h>>>=n.extra,p-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=ht;break}n.mode=st;case st:if(0===l)break t;if(y=g-l,n.offset>y){if((y=n.offset-y)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=ht;break}y>n.wnext?(y-=n.wnext,v=n.wsize-y):v=n.wnext-y,y>n.length&&(y=n.length),gt=n.window}else gt=o,v=s-n.offset,y=n.length;y>l&&(y=l),l-=y,n.length-=y;do{o[s++]=gt[v++]}while(--y);0===n.length&&(n.mode=rt);break;case ut:if(0===l)break t;o[s++]=n.length,l--,n.mode=rt;break;case lt:if(n.wrap){for(;p<32;){if(0===u)break t;u--,h|=i[a++]<<p,p+=8}if(g-=l,t.total_out+=g,n.total+=g,g&&(t.adler=n.check=n.flags?w(n.check,o,g,s-g):m(n.check,o,g,s-g)),g=l,(n.flags?h:r(h))!==n.check){t.msg="incorrect data check",n.mode=ht;break}h=0,p=0}n.mode=ct;case ct:if(n.wrap&&n.flags){for(;p<32;){if(0===u)break t;u--,h+=i[a++]<<p,p+=8}if(h!==(4294967295&n.total)){t.msg="incorrect length check",n.mode=ht;break}h=0,p=0}n.mode=ft;case ft:kt=T;break t;case ht:kt=L;break t;case pt:return M;case dt:default:return B}return t.next_out=s,t.avail_out=l,t.next_in=a,t.avail_in=u,n.hold=h,n.bits=p,(n.wsize||g!==t.avail_out&&n.mode<ht&&(n.mode<lt||e!==A))&&f(t,t.output,t.next_out,g-t.avail_out)?(n.mode=pt,M):(d-=t.avail_in,g-=t.avail_out,t.total_in+=d,t.total_out+=g,n.total+=g,n.wrap&&g&&(t.adler=n.check=n.flags?w(n.check,o,g,t.next_out-g):m(n.check,o,g,t.next_out-g)),t.data_type=n.bits+(n.last?64:0)+(n.mode===Y?128:0)+(n.mode===nt||n.mode===J?256:0),(0===d&&0===g||e===A)&&kt===I&&(kt=R),kt)}function p(t){if(!t||!t.state)return B;var e=t.state;return e.window&&(e.window=null),t.state=null,I}function d(t,e){var n;return t&&t.state?(n=t.state,0==(2&n.wrap)?B:(n.head=e,e.done=!1,I)):B}function g(t,e){var n,r,i=e.length;return t&&t.state?(n=t.state,0!==n.wrap&&n.mode!==Z?B:n.mode===Z&&(r=1,(r=m(r,e,i,0))!==n.check)?L:f(t,e,i,i)?(n.mode=pt,M):(n.havedict=1,I)):B}var y,v,b=n(64),m=n(66),w=n(67),x=n(69),_=n(70),k=0,S=1,C=2,A=4,P=5,E=6,I=0,T=1,O=2,B=-2,L=-3,M=-4,R=-5,F=8,z=1,D=2,N=3,U=4,W=5,j=6,G=7,V=8,H=9,q=10,Z=11,Y=12,X=13,K=14,J=15,Q=16,$=17,tt=18,et=19,nt=20,rt=21,it=22,ot=23,at=24,st=25,ut=26,lt=27,ct=28,ft=29,ht=30,pt=31,dt=32,gt=852,yt=592,vt=15,bt=!0;e.inflateReset=a,e.inflateReset2=s,e.inflateResetKeep=o,e.inflateInit=l,e.inflateInit2=u,e.inflate=h,e.inflateEnd=p,e.inflateGetHeader=d,e.inflateSetDictionary=g,e.inflateInfo="pako inflate (from Nodeca project)"},function(t,e){"use strict";t.exports=function(t,e){var n,r,i,o,a,s,u,l,c,f,h,p,d,g,y,v,b,m,w,x,_,k,S,C,A;n=t.state,r=t.next_in,C=t.input,i=r+(t.avail_in-5),o=t.next_out,A=t.output,a=o-(e-t.avail_out),s=o+(t.avail_out-257),u=n.dmax,l=n.wsize,c=n.whave,f=n.wnext,h=n.window,p=n.hold,d=n.bits,g=n.lencode,y=n.distcode,v=(1<<n.lenbits)-1,b=(1<<n.distbits)-1;t:do{d<15&&(p+=C[r++]<<d,d+=8,p+=C[r++]<<d,d+=8),m=g[p&v];e:for(;;){if(w=m>>>24,p>>>=w,d-=w,0===(w=m>>>16&255))A[o++]=65535&m;else{if(!(16&w)){if(0==(64&w)){m=g[(65535&m)+(p&(1<<w)-1)];continue e}if(32&w){n.mode=12;break t}t.msg="invalid literal/length code",n.mode=30;break t}x=65535&m,w&=15,w&&(d<w&&(p+=C[r++]<<d,d+=8),x+=p&(1<<w)-1,p>>>=w,d-=w),d<15&&(p+=C[r++]<<d,d+=8,p+=C[r++]<<d,d+=8),m=y[p&b];n:for(;;){if(w=m>>>24,p>>>=w,d-=w,!(16&(w=m>>>16&255))){if(0==(64&w)){m=y[(65535&m)+(p&(1<<w)-1)];continue n}t.msg="invalid distance code",n.mode=30;break t}if(_=65535&m,w&=15,d<w&&(p+=C[r++]<<d,(d+=8)<w&&(p+=C[r++]<<d,d+=8)),(_+=p&(1<<w)-1)>u){t.msg="invalid distance too far back",n.mode=30;break t}if(p>>>=w,d-=w,w=o-a,_>w){if((w=_-w)>c&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(k=0,S=h,0===f){if(k+=l-w,w<x){x-=w;do{A[o++]=h[k++]}while(--w);k=o-_,S=A}}else if(f<w){if(k+=l+f-w,(w-=f)<x){x-=w;do{A[o++]=h[k++]}while(--w);if(k=0,f<x){w=f,x-=w;do{A[o++]=h[k++]}while(--w);k=o-_,S=A}}}else if(k+=f-w,w<x){x-=w;do{A[o++]=h[k++]}while(--w);k=o-_,S=A}for(;x>2;)A[o++]=S[k++],A[o++]=S[k++],A[o++]=S[k++],x-=3;x&&(A[o++]=S[k++],x>1&&(A[o++]=S[k++]))}else{k=o-_;do{A[o++]=A[k++],A[o++]=A[k++],A[o++]=A[k++],x-=3}while(x>2);x&&(A[o++]=A[k++],x>1&&(A[o++]=A[k++]))}break}}break}}while(r<i&&o<s);x=d>>3,r-=x,d-=x<<3,p&=(1<<d)-1,t.next_in=r,t.next_out=o,t.avail_in=r<i?i-r+5:5-(r-i),t.avail_out=o<s?s-o+257:257-(o-s),n.hold=p,n.bits=d}},function(t,e,n){"use strict";var r=n(64),i=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],s=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,n,u,l,c,f,h){var p,d,g,y,v,b,m,w,x,_=h.bits,k=0,S=0,C=0,A=0,P=0,E=0,I=0,T=0,O=0,B=0,L=null,M=0,R=new r.Buf16(16),F=new r.Buf16(16),z=null,D=0;for(k=0;k<=15;k++)R[k]=0;for(S=0;S<u;S++)R[e[n+S]]++;for(P=_,A=15;A>=1&&0===R[A];A--);if(P>A&&(P=A),0===A)return l[c++]=20971520,l[c++]=20971520,h.bits=1,0;for(C=1;C<A&&0===R[C];C++);for(P<C&&(P=C),T=1,k=1;k<=15;k++)if(T<<=1,(T-=R[k])<0)return-1;if(T>0&&(0===t||1!==A))return-1;for(F[1]=0,k=1;k<15;k++)F[k+1]=F[k]+R[k];for(S=0;S<u;S++)0!==e[n+S]&&(f[F[e[n+S]]++]=S);if(0===t?(L=z=f,b=19):1===t?(L=i,M-=257,z=o,D-=257,b=256):(L=a,z=s,b=-1),B=0,S=0,k=C,v=c,E=P,I=0,g=-1,O=1<<P,y=O-1,1===t&&O>852||2===t&&O>592)return 1;for(var N=0;;){N++,m=k-I,f[S]<b?(w=0,x=f[S]):f[S]>b?(w=z[D+f[S]],x=L[M+f[S]]):(w=96,x=0),p=1<<k-I,d=1<<E,C=d;do{d-=p,l[v+(B>>I)+d]=m<<24|w<<16|x|0}while(0!==d);for(p=1<<k-1;B&p;)p>>=1;if(0!==p?(B&=p-1,B+=p):B=0,S++,0==--R[k]){if(k===A)break;k=e[n+f[S]]}if(k>P&&(B&y)!==g){for(0===I&&(I=P),v+=C,E=k-I,T=1<<E;E+I<A&&!((T-=R[E+I])<=0);)E++,T<<=1;if(O+=1<<E,1===t&&O>852||2===t&&O>592)return 1;g=B&y,l[g]=P<<24|E<<16|v-c|0}}return 0!==B&&(l[v+B]=k-I<<24|64<<16|0),h.bits=P,0}},function(t,e){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(t,e,n){(function(t,r){function i(t,n){var r={seen:[],stylize:a};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),g(n)?r.showHidden=n:n&&e._extend(r,n),x(r.showHidden)&&(r.showHidden=!1),x(r.depth)&&(r.depth=2),x(r.colors)&&(r.colors=!1),x(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),u(r,t,r.depth)}function o(t,e){var n=i.styles[e];return n?"["+i.colors[n][0]+"m"+t+"["+i.colors[n][1]+"m":t}function a(t,e){return t}function s(t){var e={};return t.forEach(function(t,n){e[t]=!0}),e}function u(t,n,r){if(t.customInspect&&n&&A(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return m(i)||(i=u(t,i,r)),i}var o=l(t,n);if(o)return o;var a=Object.keys(n),g=s(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(n)),C(n)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return c(n);if(0===a.length){if(A(n)){var y=n.name?": "+n.name:"";return t.stylize("[Function"+y+"]","special")}if(_(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(S(n))return t.stylize(Date.prototype.toString.call(n),"date");if(C(n))return c(n)}var v="",b=!1,w=["{","}"];if(d(n)&&(b=!0,w=["[","]"]),A(n)){v=" [Function"+(n.name?": "+n.name:"")+"]"}if(_(n)&&(v=" "+RegExp.prototype.toString.call(n)),S(n)&&(v=" "+Date.prototype.toUTCString.call(n)),C(n)&&(v=" "+c(n)),0===a.length&&(!b||0==n.length))return w[0]+v+w[1];if(r<0)return _(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special");t.seen.push(n);var x;return x=b?f(t,n,r,g,a):a.map(function(e){return h(t,n,r,g,e,b)}),t.seen.pop(),p(x,v,w)}function l(t,e){if(x(e))return t.stylize("undefined","undefined");if(m(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}return b(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,n,r,i){for(var o=[],a=0,s=e.length;a<s;++a)I(e,String(a))?o.push(h(t,e,n,r,String(a),!0)):o.push("");return i.forEach(function(i){i.match(/^\d+$/)||o.push(h(t,e,n,r,i,!0))}),o}function h(t,e,n,r,i,o){var a,s,l;if(l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]},l.get?s=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(s=t.stylize("[Setter]","special")),I(r,i)||(a="["+i+"]"),s||(t.seen.indexOf(l.value)<0?(s=y(n)?u(t,l.value,null):u(t,l.value,n-1),s.indexOf("\n")>-1&&(s=o?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n"))):s=t.stylize("[Circular]","special")),x(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+s}function p(t,e,n){var r=0;return t.reduce(function(t,e){return r++,e.indexOf("\n")>=0&&r++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1]:n[0]+e+" "+t.join(", ")+" "+n[1]}function d(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function y(t){return null===t}function v(t){return null==t}function b(t){return"number"==typeof t}function m(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function x(t){return void 0===t}function _(t){return k(t)&&"[object RegExp]"===E(t)}function k(t){return"object"==typeof t&&null!==t}function S(t){return k(t)&&"[object Date]"===E(t)}function C(t){return k(t)&&("[object Error]"===E(t)||t instanceof Error)}function A(t){return"function"==typeof t}function P(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t}function E(t){return Object.prototype.toString.call(t)}function I(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var T=/%[sdj%]/g;e.format=function(t){if(!m(t)){for(var e=[],n=0;n<arguments.length;n++)e.push(i(arguments[n]));return e.join(" ")}for(var n=1,r=arguments,o=r.length,a=String(t).replace(T,function(t){if("%%"===t)return"%";if(n>=o)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"}default:return t}}),s=r[n];n<o;s=r[++n])y(s)||!k(s)?a+=" "+s:a+=" "+i(s);return a},e.deprecate=function(n,i){function o(){if(!a){if(r.throwDeprecation)throw new Error(i);r.traceDeprecation,a=!0}return n.apply(this,arguments)}if(x(t.process))return function(){return e.deprecate(n,i).apply(this,arguments)};if(!0===r.noDeprecation)return n;var a=!1;return o};var O,B={};e.debuglog=function(t){if(x(O)&&(O=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!B[t])if(new RegExp("\\b"+t+"\\b","i").test(O)){r.pid;B[t]=function(){e.format.apply(e,arguments)}}else B[t]=function(){};return B[t]},e.inspect=i,i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=d,e.isBoolean=g,e.isNull=y,e.isNullOrUndefined=v,e.isNumber=b,e.isString=m,e.isSymbol=w,e.isUndefined=x,e.isRegExp=_,e.isObject=k,e.isDate=S,e.isError=C,e.isFunction=A,e.isPrimitive=P,e.isBuffer=n(73);e.log=function(){},e.inherits=n(74),e._extend=function(t,e){if(!e||!k(e))return t;for(var n=Object.keys(e),r=n.length;r--;)t[n[r]]=e[n[r]];return t}}).call(e,function(){return this}(),n(36))},function(t,e){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){(function(e){"use strict";function r(t,e){if(t===e)return 0;for(var n=t.length,r=e.length,i=0,o=Math.min(n,r);i<o;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0}function i(t){return e.Buffer&&"function"==typeof e.Buffer.isBuffer?e.Buffer.isBuffer(t):!(null==t||!t._isBuffer)}function o(t){return Object.prototype.toString.call(t)}function a(t){return!i(t)&&("function"==typeof e.ArrayBuffer&&("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):!!t&&(t instanceof DataView||!!(t.buffer&&t.buffer instanceof ArrayBuffer))))}function s(t){if(w.isFunction(t)){if(k)return t.name;var e=t.toString(),n=e.match(C);return n&&n[1]}}function u(t,e){return"string"==typeof t?t.length<e?t:t.slice(0,e):t}function l(t){if(k||!w.isFunction(t))return w.inspect(t);var e=s(t);return"[Function"+(e?": "+e:"")+"]"}function c(t){return u(l(t.actual),128)+" "+t.operator+" "+u(l(t.expected),128)}function f(t,e,n,r,i){throw new S.AssertionError({message:n,actual:t,expected:e,operator:r,stackStartFunction:i})}function h(t,e){t||f(t,!0,e,"==",S.ok)}function p(t,e,n,s){if(t===e)return!0;if(i(t)&&i(e))return 0===r(t,e);if(w.isDate(t)&&w.isDate(e))return t.getTime()===e.getTime();if(w.isRegExp(t)&&w.isRegExp(e))return t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase;if(null!==t&&"object"==typeof t||null!==e&&"object"==typeof e){if(a(t)&&a(e)&&o(t)===o(e)&&!(t instanceof Float32Array||t instanceof Float64Array))return 0===r(new Uint8Array(t.buffer),new Uint8Array(e.buffer));if(i(t)!==i(e))return!1;s=s||{actual:[],expected:[]};var u=s.actual.indexOf(t);return-1!==u&&u===s.expected.indexOf(e)||(s.actual.push(t),s.expected.push(e),g(t,e,n,s))}return n?t===e:t==e}function d(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function g(t,e,n,r){if(null===t||void 0===t||null===e||void 0===e)return!1;if(w.isPrimitive(t)||w.isPrimitive(e))return t===e;if(n&&Object.getPrototypeOf(t)!==Object.getPrototypeOf(e))return!1;var i=d(t),o=d(e);if(i&&!o||!i&&o)return!1;if(i)return t=_.call(t),e=_.call(e),p(t,e,n);var a,s,u=A(t),l=A(e);if(u.length!==l.length)return!1;for(u.sort(),l.sort(),s=u.length-1;s>=0;s--)if(u[s]!==l[s])return!1;for(s=u.length-1;s>=0;s--)if(a=u[s],!p(t[a],e[a],n,r))return!1;return!0}function y(t,e,n){p(t,e,!0)&&f(t,e,n,"notDeepStrictEqual",y)}function v(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function b(t){var e;try{t()}catch(t){e=t}return e}function m(t,e,n,r){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=b(e),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),t&&!i&&f(i,n,"Missing expected exception"+r);var o="string"==typeof r,a=!t&&w.isError(i),s=!t&&i&&!n;if((a&&o&&v(i,n)||s)&&f(i,n,"Got unwanted exception"+r),t&&i&&n&&!v(i,n)||!t&&i)throw i}var w=n(72),x=Object.prototype.hasOwnProperty,_=Array.prototype.slice,k=function(){return"foo"===function(){}.name}(),S=t.exports=h,C=/\s*function\s+([^\(\s]*)\s*/;S.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=c(this),this.generatedMessage=!0);var e=t.stackStartFunction||f;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var n=new Error;if(n.stack){var r=n.stack,i=s(e),o=r.indexOf("\n"+i);if(o>=0){var a=r.indexOf("\n",o+1);r=r.substring(a+1)}this.stack=r}}},w.inherits(S.AssertionError,Error),S.fail=f,S.ok=h,S.equal=function(t,e,n){t!=e&&f(t,e,n,"==",S.equal)},S.notEqual=function(t,e,n){t==e&&f(t,e,n,"!=",S.notEqual)},S.deepEqual=function(t,e,n){p(t,e,!1)||f(t,e,n,"deepEqual",S.deepEqual)},S.deepStrictEqual=function(t,e,n){p(t,e,!0)||f(t,e,n,"deepStrictEqual",S.deepStrictEqual)},S.notDeepEqual=function(t,e,n){p(t,e,!1)&&f(t,e,n,"notDeepEqual",S.notDeepEqual)},S.notDeepStrictEqual=y,S.strictEqual=function(t,e,n){t!==e&&f(t,e,n,"===",S.strictEqual)},S.notStrictEqual=function(t,e,n){t===e&&f(t,e,n,"!==",S.notStrictEqual)},S.throws=function(t,e,n){m(!0,t,e,n)},S.doesNotThrow=function(t,e,n){m(!1,t,e,n)},S.ifError=function(t){if(t)throw t};var A=Object.keys||function(t){var e=[];for(var n in t)x.call(t,n)&&e.push(n);return e}}).call(e,function(){return this}())},function(t,e){(function(){var e;e=function(){function t(t,r){var i;this.document=t,null==r&&(r={}),this.size=r.size||"letter",this.layout=r.layout||"portrait","number"==typeof r.margin?this.margins={top:r.margin,left:r.margin,bottom:r.margin,right:r.margin}:this.margins=r.margins||e,i=Array.isArray(this.size)?this.size:n[this.size.toUpperCase()],this.width=i["portrait"===this.layout?0:1],this.height=i["portrait"===this.layout?1:0],this.content=this.document.ref(),this.resources=this.document.ref({ProcSet:["PDF","Text","ImageB","ImageC","ImageI"]}),Object.defineProperties(this,{fonts:{get:function(t){return function(){var e;return null!=(e=t.resources.data).Font?e.Font:e.Font={}}}(this)},xobjects:{get:function(t){return function(){var e;return null!=(e=t.resources.data).XObject?e.XObject:e.XObject={}}}(this)},ext_gstates:{get:function(t){return function(){var e;return null!=(e=t.resources.data).ExtGState?e.ExtGState:e.ExtGState={}}}(this)},patterns:{get:function(t){return function(){var e;return null!=(e=t.resources.data).Pattern?e.Pattern:e.Pattern={}}}(this)},annotations:{get:function(t){return function(){var e;return null!=(e=t.dictionary.data).Annots?e.Annots:e.Annots=[]}}(this)}}),this.dictionary=this.document.ref({Type:"Page",Parent:this.document._root.data.Pages,MediaBox:[0,0,this.width,this.height],Contents:this.content,Resources:this.resources})}var e,n;return t.prototype.maxY=function(){return this.height-this.margins.bottom},t.prototype.write=function(t){return this.content.write(t)},t.prototype.end=function(){return this.dictionary.end(),this.resources.end(),this.content.end()},e={top:72,left:72,bottom:72,right:72},n={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i,o,a;a=n(78),e=a.PDFGradient,r=a.PDFLinearGradient,i=a.PDFRadialGradient,t.exports={initColor:function(){return this._opacityRegistry={},this._opacityCount=0,this._gradCount=0},_normalizeColor:function(t){var n,r;return t instanceof e?t:("string"==typeof t&&("#"===t.charAt(0)?(4===t.length&&(t=t.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i,"#$1$1$2$2$3$3")),n=parseInt(t.slice(1),16),t=[n>>16,n>>8&255,255&n]):o[t]&&(t=o[t])),Array.isArray(t)?(3===t.length?t=function(){var e,n,i;for(i=[],e=0,n=t.length;e<n;e++)r=t[e],i.push(r/255);return i}():4===t.length&&(t=function(){var e,n,i;for(i=[],e=0,n=t.length;e<n;e++)r=t[e],i.push(r/100);return i}()),t):null)},_setColor:function(t,n){var r,i;return!!(t=this._normalizeColor(t))&&(r=n?"SCN":"scn",t instanceof e?(this._setColorSpace("Pattern",n),t.apply(r)):(i=4===t.length?"DeviceCMYK":"DeviceRGB",this._setColorSpace(i,n),t=t.join(" "),this.addContent(t+" "+r)),!0)},_setColorSpace:function(t,e){var n;return n=e?"CS":"cs",this.addContent("/"+t+" "+n)},fillColor:function(t,e){var n;return n=this._setColor(t,!1),n&&this.fillOpacity(e),this._fillColor=[t,e],this},strokeColor:function(t,e){var n;return n=this._setColor(t,!0),n&&this.strokeOpacity(e),this},opacity:function(t){return this._doOpacity(t,t),this},fillOpacity:function(t){return this._doOpacity(t,null),this},strokeOpacity:function(t){return this._doOpacity(null,t),this},_doOpacity:function(t,e){var n,r,i,o,a;if(null!=t||null!=e)return null!=t&&(t=Math.max(0,Math.min(1,t))),null!=e&&(e=Math.max(0,Math.min(1,e))),i=t+"_"+e,this._opacityRegistry[i]?(a=this._opacityRegistry[i],n=a[0],o=a[1]):(n={Type:"ExtGState"},null!=t&&(n.ca=t),null!=e&&(n.CA=e),n=this.ref(n),n.end(),r=++this._opacityCount,o="Gs"+r,this._opacityRegistry[i]=[n,o]),this.page.ext_gstates[o]=n,this.addContent("/"+o+" gs")},linearGradient:function(t,e,n,i){return new r(this,t,e,n,i)},radialGradient:function(t,e,n,r,o,a){return new i(this,t,e,n,r,o,a)}},o={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}).call(this)},function(t,e){(function(){var e,n,r,i=function(t,e){function n(){this.constructor=t}for(var r in e)o.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;e=function(){function t(t){this.doc=t,this.stops=[],this.embedded=!1,this.transform=[1,0,0,1,0,0],this._colorSpace="DeviceRGB"}return t.prototype.stop=function(t,e,n){return null==n&&(n=1),n=Math.max(0,Math.min(1,n)),this.stops.push([t,this.doc._normalizeColor(e),n]),this},t.prototype.setTransform=function(t,e,n,r,i,o){return this.transform=[t,e,n,r,i,o],this},t.prototype.embed=function(t){var e,n,r,i,o,a,s,u,l,c,f,h,p,d,g,y,v,b,m,w;if(0!==this.stops.length){for(this.embedded=!0,this.matrix=t,c=this.stops[this.stops.length-1],c[0]<1&&this.stops.push([1,c[1],c[2]]),e=[],n=[],m=[],s=u=0,g=this.stops.length-1;0<=g?u<g:u>g;s=0<=g?++u:--u)n.push(0,1),s+2!==this.stops.length&&e.push(this.stops[s+1][0]),r=this.doc.ref({FunctionType:2,Domain:[0,1],C0:this.stops[s+0][1],C1:this.stops[s+1][1],N:1}),m.push(r),r.end();if(1===m.length?r=m[0]:(r=this.doc.ref({FunctionType:3,Domain:[0,1],Functions:m,Bounds:e,Encode:n}),r.end()),this.id="Sh"+ ++this.doc._gradCount,v=this.shader(r),v.end(),d=this.doc.ref({Type:"Pattern",PatternType:2,Shading:v,Matrix:function(){var t,e,n,r;for(n=this.matrix,r=[],t=0,e=n.length;t<e;t++)w=n[t],r.push(+w.toFixed(5));return r}.call(this)}),d.end(),this.stops.some(function(t){return t[2]<1})){for(o=this.opacityGradient(),o._colorSpace="DeviceGray",y=this.stops,l=0,f=y.length;l<f;l++)b=y[l],o.stop(b[0],[b[2]]);o=o.embed(this.matrix),p=[0,0,this.doc.page.width,this.doc.page.height],i=this.doc.ref({ Type:"XObject",Subtype:"Form",FormType:1,BBox:p,Group:{Type:"Group",S:"Transparency",CS:"DeviceGray"},Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:o}}}),i.write("/Pattern cs /Sh1 scn"),i.end(p.join(" ")+" re f"),a=this.doc.ref({Type:"ExtGState",SMask:{Type:"Mask",S:"Luminosity",G:i}}),a.end(),h=this.doc.ref({Type:"Pattern",PatternType:1,PaintType:1,TilingType:2,BBox:p,XStep:p[2],YStep:p[3],Resources:{ProcSet:["PDF","Text","ImageB","ImageC","ImageI"],Pattern:{Sh1:d},ExtGState:{Gs1:a}}}),h.write("/Gs1 gs /Pattern cs /Sh1 scn"),h.end(p.join(" ")+" re f"),this.doc.page.patterns[this.id]=h}else this.doc.page.patterns[this.id]=d;return d}},t.prototype.apply=function(t){var e,n,r,i,o,a,s,u,l,c,f,h,p,d,g;return d=this.doc._ctm.slice(),i=d[0],o=d[1],u=d[2],f=d[3],h=d[4],p=d[5],g=this.transform,a=g[0],s=g[1],l=g[2],c=g[3],e=g[4],n=g[5],r=[i*a+u*s,o*a+f*s,i*l+u*c,o*l+f*c,i*e+u*n+h,o*e+f*n+p],this.embedded&&r.join(" ")===this.matrix.join(" ")||this.embed(r),this.doc.addContent("/"+this.id+" "+t)},t}(),n=function(t){function e(t,n,r,i,o){this.doc=t,this.x1=n,this.y1=r,this.x2=i,this.y2=o,e.__super__.constructor.apply(this,arguments)}return i(e,t),e.prototype.shader=function(t){return this.doc.ref({ShadingType:2,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.x2,this.y2],Function:t,Extend:[!0,!0]})},e.prototype.opacityGradient=function(){return new e(this.doc,this.x1,this.y1,this.x2,this.y2)},e}(e),r=function(t){function e(t,n,r,i,o,a,s){this.doc=t,this.x1=n,this.y1=r,this.r1=i,this.x2=o,this.y2=a,this.r2=s,e.__super__.constructor.apply(this,arguments)}return i(e,t),e.prototype.shader=function(t){return this.doc.ref({ShadingType:3,ColorSpace:this._colorSpace,Coords:[this.x1,this.y1,this.r1,this.x2,this.y2,this.r2],Function:t,Extend:[!0,!0]})},e.prototype.opacityGradient=function(){return new e(this.doc,this.x1,this.y1,this.r1,this.x2,this.y2,this.r2)},e}(e),t.exports={PDFGradient:e,PDFLinearGradient:n,PDFRadialGradient:r}}).call(this)},function(t,e,n){(function(){var e,r,i,o=[].slice;r=n(80),i=n(57).number,e=(Math.sqrt(2)-1)/3*4,t.exports={initVector:function(){return this._ctm=[1,0,0,1,0,0],this._ctmStack=[]},save:function(){return this._ctmStack.push(this._ctm.slice()),this.addContent("q")},restore:function(){return this._ctm=this._ctmStack.pop()||[1,0,0,1,0,0],this.addContent("Q")},closePath:function(){return this.addContent("h")},lineWidth:function(t){return this.addContent(i(t)+" w")},_CAP_STYLES:{BUTT:0,ROUND:1,SQUARE:2},lineCap:function(t){return"string"==typeof t&&(t=this._CAP_STYLES[t.toUpperCase()]),this.addContent(t+" J")},_JOIN_STYLES:{MITER:0,ROUND:1,BEVEL:2},lineJoin:function(t){return"string"==typeof t&&(t=this._JOIN_STYLES[t.toUpperCase()]),this.addContent(t+" j")},miterLimit:function(t){return this.addContent(i(t)+" M")},dash:function(t,e){var n,r,o,a;return null==e&&(e={}),null==t?this:Array.isArray(t)?(t=function(){var e,n,r;for(r=[],e=0,n=t.length;e<n;e++)a=t[e],r.push(i(a));return r}().join(" "),n=e.phase||0,this.addContent("["+t+"] "+i(n)+" d")):(o=null!=(r=e.space)?r:t,n=e.phase||0,this.addContent("["+i(t)+" "+i(o)+"] "+i(n)+" d"))},undash:function(){return this.addContent("[] 0 d")},moveTo:function(t,e){return this.addContent(i(t)+" "+i(e)+" m")},lineTo:function(t,e){return this.addContent(i(t)+" "+i(e)+" l")},bezierCurveTo:function(t,e,n,r,o,a){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" "+i(o)+" "+i(a)+" c")},quadraticCurveTo:function(t,e,n,r){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" v")},rect:function(t,e,n,r){return this.addContent(i(t)+" "+i(e)+" "+i(n)+" "+i(r)+" re")},roundedRect:function(t,n,r,i,o){var a;return null==o&&(o=0),o=Math.min(o,.5*r,.5*i),a=o*(1-e),this.moveTo(t+o,n),this.lineTo(t+r-o,n),this.bezierCurveTo(t+r-a,n,t+r,n+a,t+r,n+o),this.lineTo(t+r,n+i-o),this.bezierCurveTo(t+r,n+i-a,t+r-a,n+i,t+r-o,n+i),this.lineTo(t+o,n+i),this.bezierCurveTo(t+a,n+i,t,n+i-a,t,n+i-o),this.lineTo(t,n+o),this.bezierCurveTo(t,n+a,t+a,n,t+o,n),this.closePath()},ellipse:function(t,n,r,i){var o,a,s,u,l,c;return null==i&&(i=r),t-=r,n-=i,o=r*e,a=i*e,s=t+2*r,l=n+2*i,u=t+r,c=n+i,this.moveTo(t,c),this.bezierCurveTo(t,c-a,u-o,n,u,n),this.bezierCurveTo(u+o,n,s,c-a,s,c),this.bezierCurveTo(s,c+a,u+o,l,u,l),this.bezierCurveTo(u-o,l,t,c+a,t,c),this.closePath()},circle:function(t,e,n){return this.ellipse(t,e,n)},arc:function(t,n,r,i,o,a){var s,u,l,c,f,h,p,d,g,y,v,b,m,w,x,_,k,S;for(null==a&&(a=!1),u=2*Math.PI,s=.5*Math.PI,y=o-i,Math.abs(y)>u?y=u:0!==y&&a!==y<0&&(m=a?-1:1,y=m*u+y),_=Math.ceil(Math.abs(y)/s),S=y/_,w=S/s*e*r,g=i,v=-Math.sin(g)*w,b=Math.cos(g)*w,l=t+Math.cos(g)*r,c=n+Math.sin(g)*r,this.moveTo(l,c),x=0,k=_;0<=k?x<k:x>k;0<=k?++x:--x)f=l+v,h=c+b,g+=S,l=t+Math.cos(g)*r,c=n+Math.sin(g)*r,v=-Math.sin(g)*w,b=Math.cos(g)*w,p=l-v,d=c-b,this.bezierCurveTo(f,h,p,d,l,c);return this},polygon:function(){var t,e,n,r;for(r=1<=arguments.length?o.call(arguments,0):[],this.moveTo.apply(this,r.shift()),t=0,e=r.length;t<e;t++)n=r[t],this.lineTo.apply(this,n);return this.closePath()},path:function(t){return r.apply(this,t),this},_windingRule:function(t){return/even-?odd/.test(t)?"*":""},fill:function(t,e){return/(even-?odd)|(non-?zero)/.test(t)&&(e=t,t=null),t&&this.fillColor(t),this.addContent("f"+this._windingRule(e))},stroke:function(t){return t&&this.strokeColor(t),this.addContent("S")},fillAndStroke:function(t,e,n){var r;return null==e&&(e=t),r=/(even-?odd)|(non-?zero)/,r.test(t)&&(n=t,t=null),r.test(e)&&(n=e,e=t),t&&(this.fillColor(t),this.strokeColor(e)),this.addContent("B"+this._windingRule(n))},clip:function(t){return this.addContent("W"+this._windingRule(t)+" n")},transform:function(t,e,n,r,o,a){var s,u,l,c,f,h,p,d,g;return s=this._ctm,u=s[0],l=s[1],c=s[2],f=s[3],h=s[4],p=s[5],s[0]=u*t+c*e,s[1]=l*t+f*e,s[2]=u*n+c*r,s[3]=l*n+f*r,s[4]=u*o+c*a+h,s[5]=l*o+f*a+p,g=function(){var s,u,l,c;for(l=[t,e,n,r,o,a],c=[],s=0,u=l.length;s<u;s++)d=l[s],c.push(i(d));return c}().join(" "),this.addContent(g+" cm")},translate:function(t,e){return this.transform(1,0,0,1,t,e)},rotate:function(t,e){var n,r,i,o,a,s,u,l;return null==e&&(e={}),r=t*Math.PI/180,n=Math.cos(r),o=Math.sin(r),a=u=0,null!=e.origin&&(i=e.origin,a=i[0],u=i[1],s=a*n-u*o,l=a*o+u*n,a-=s,u-=l),this.transform(n,o,-o,n,a,u)},scale:function(t,e,n){var r,i,o;return null==e&&(e=t),null==n&&(n={}),"object"==typeof e&&(n=e,e=t),i=o=0,null!=n.origin&&(r=n.origin,i=r[0],o=r[1],i-=t*i,o-=e*o),this.transform(t,0,0,e,i,o)}}}).call(this)},function(t,e){(function(){var e;e=function(){function t(){}var e,n,r,i,o,a,s,u,l,c,f,h,p;return t.apply=function(t,n){var r;return r=a(n),e(r,t)},o={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0},a=function(t){var e,n,r,i,a,s,u,l,c;for(c=[],e=[],i="",a=!1,l=0,s=0,u=t.length;s<u;s++)if(n=t[s],null!=o[n])l=o[n],r&&(i.length>0&&(e[e.length]=+i),c[c.length]={cmd:r,args:e},e=[],i="",a=!1),r=n;else if(" "===n||","===n||"-"===n&&i.length>0&&"e"!==i[i.length-1]||"."===n&&a){if(0===i.length)continue;e.length===l?(c[c.length]={cmd:r,args:e},e=[+i],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+i,a="."===n,i="-"===n||"."===n?n:""}else i+=n,"."===n&&(a=!0);return i.length>0&&(e.length===l?(c[c.length]={cmd:r,args:e},e=[+i],"M"===r&&(r="L"),"m"===r&&(r="l")):e[e.length]=+i),c[c.length]={cmd:r,args:e},c},r=i=s=u=h=p=0,e=function(t,e){var n,o,a,c,f;for(r=i=s=u=h=p=0,o=a=0,c=t.length;a<c;o=++a)n=t[o],"function"==typeof l[f=n.cmd]&&l[f](e,n.args);return r=i=s=u=0},l={M:function(t,e){return r=e[0],i=e[1],s=u=null,h=r,p=i,t.moveTo(r,i)},m:function(t,e){return r+=e[0],i+=e[1],s=u=null,h=r,p=i,t.moveTo(r,i)},C:function(t,e){return r=e[4],i=e[5],s=e[2],u=e[3],t.bezierCurveTo.apply(t,e)},c:function(t,e){return t.bezierCurveTo(e[0]+r,e[1]+i,e[2]+r,e[3]+i,e[4]+r,e[5]+i),s=r+e[2],u=i+e[3],r+=e[4],i+=e[5]},S:function(t,e){return null===s&&(s=r,u=i),t.bezierCurveTo(r-(s-r),i-(u-i),e[0],e[1],e[2],e[3]),s=e[0],u=e[1],r=e[2],i=e[3]},s:function(t,e){return null===s&&(s=r,u=i),t.bezierCurveTo(r-(s-r),i-(u-i),r+e[0],i+e[1],r+e[2],i+e[3]),s=r+e[0],u=i+e[1],r+=e[2],i+=e[3]},Q:function(t,e){return s=e[0],u=e[1],r=e[2],i=e[3],t.quadraticCurveTo(e[0],e[1],r,i)},q:function(t,e){return t.quadraticCurveTo(e[0]+r,e[1]+i,e[2]+r,e[3]+i),s=r+e[0],u=i+e[1],r+=e[2],i+=e[3]},T:function(t,e){return null===s?(s=r,u=i):(s=r-(s-r),u=i-(u-i)),t.quadraticCurveTo(s,u,e[0],e[1]),s=r-(s-r),u=i-(u-i),r=e[0],i=e[1]},t:function(t,e){return null===s?(s=r,u=i):(s=r-(s-r),u=i-(u-i)),t.quadraticCurveTo(s,u,r+e[0],i+e[1]),r+=e[0],i+=e[1]},A:function(t,e){return f(t,r,i,e),r=e[5],i=e[6]},a:function(t,e){return e[5]+=r,e[6]+=i,f(t,r,i,e),r=e[5],i=e[6]},L:function(t,e){return r=e[0],i=e[1],s=u=null,t.lineTo(r,i)},l:function(t,e){return r+=e[0],i+=e[1],s=u=null,t.lineTo(r,i)},H:function(t,e){return r=e[0],s=u=null,t.lineTo(r,i)},h:function(t,e){return r+=e[0],s=u=null,t.lineTo(r,i)},V:function(t,e){return i=e[0],s=u=null,t.lineTo(r,i)},v:function(t,e){return i+=e[0],s=u=null,t.lineTo(r,i)},Z:function(t){return t.closePath(),r=h,i=p},z:function(t){return t.closePath(),r=h,i=p}},f=function(t,e,r,i){var o,a,s,u,l,f,h,p,d,g,y,v,b;for(d=i[0],g=i[1],p=i[2],l=i[3],b=i[4],a=i[5],s=i[6],v=n(a,s,d,g,l,b,p,e,r),h=[],u=0,f=v.length;u<f;u++)y=v[u],o=c.apply(null,y),h.push(t.bezierCurveTo.apply(t,o));return h},n=function(t,e,n,r,i,o,a,l,c){var f,h,p,d,g,y,v,b,m,w,x,_,k,S,C,A,P,E,I,T,O,B,L,M,R,F,z;for(A=a*(Math.PI/180),C=Math.sin(A),g=Math.cos(A),n=Math.abs(n),r=Math.abs(r),s=g*(l-t)*.5+C*(c-e)*.5,u=g*(c-e)*.5-C*(l-t)*.5,m=s*s/(n*n)+u*u/(r*r),m>1&&(m=Math.sqrt(m),n*=m,r*=m),f=g/n,h=C/n,p=-C/r,d=g/r,B=f*l+h*c,R=p*l+d*c,L=f*t+h*e,F=p*t+d*e,y=(L-B)*(L-B)+(F-R)*(F-R),S=1/y-.25,S<0&&(S=0),k=Math.sqrt(S),o===i&&(k=-k),M=.5*(B+L)-k*(F-R),z=.5*(R+F)+k*(L-B),P=Math.atan2(R-z,B-M),E=Math.atan2(F-z,L-M),O=E-P,O<0&&1===o?O+=2*Math.PI:O>0&&0===o&&(O-=2*Math.PI),_=Math.ceil(Math.abs(O/(.5*Math.PI+.001))),x=[],v=b=0,w=_;0<=w?b<w:b>w;v=0<=w?++b:--b)I=P+v*O/_,T=P+(v+1)*O/_,x[v]=[M,z,I,T,n,r,C,g];return x},c=function(t,e,n,r,i,o,a,s){var u,l,c,f,h,p,d,g,y,v,b,m;return u=s*i,l=-a*o,c=a*i,f=s*o,p=.5*(r-n),h=8/3*Math.sin(.5*p)*Math.sin(.5*p)/Math.sin(p),d=t+Math.cos(n)-h*Math.sin(n),v=e+Math.sin(n)+h*Math.cos(n),y=t+Math.cos(r),m=e+Math.sin(r),g=y+h*Math.sin(r),b=m-h*Math.cos(r),[u*d+l*v,c*d+f*v,u*g+l*b,c*g+f*b,u*y+l*m,c*y+f*m]},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e;e=n(82),t.exports={initFonts:function(){this._fontFamilies={},this._fontCount=0,this._fontSize=12,this._font=null,this._registeredFonts={}},font:function(t,n,r){var i,o,a,s;return"number"==typeof n&&(r=n,n=null),"string"==typeof t&&this._registeredFonts[t]?(i=t,s=this._registeredFonts[t],t=s.src,n=s.family):"string"!=typeof(i=n||t)&&(i=null),null!=r&&this.fontSize(r),(o=this._fontFamilies[i])?(this._font=o,this):(a="F"+ ++this._fontCount,this._font=e.open(this,t,n,a),(o=this._fontFamilies[this._font.name])?(this._font=o,this):(i&&(this._fontFamilies[i]=this._font),this._font.name&&(this._fontFamilies[this._font.name]=this._font),this))},fontSize:function(t){return this._fontSize=t,this},currentLineHeight:function(t){return null==t&&(t=!1),this._font.lineHeight(this._fontSize,t)},registerFont:function(t,e,n){return this._registeredFonts[t]={src:e,family:n},this}}}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o,a;a=n(83),i=function(){function t(){throw new Error("Cannot construct a PDFFont directly.")}return t.open=function(t,n,i,s){var u;if("string"==typeof n){if(o.isStandardFont(n))return new o(t,n,s);u=a.openSync(n,i)}else e.isBuffer(n)?u=a.create(n,i):n instanceof Uint8Array?u=a.create(new e(n),i):n instanceof ArrayBuffer&&(u=a.create(new e(new Uint8Array(n)),i));if(null==u)throw new Error("Not a supported font format or standard PDF font.");return new r(t,u,s)},t.prototype.encode=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.widthOfString=function(t){throw new Error("Must be implemented by subclasses")},t.prototype.ref=function(){return null!=this.dictionary?this.dictionary:this.dictionary=this.document.ref()},t.prototype.finalize=function(){if(!this.embedded&&null!=this.dictionary)return this.embed(),this.embedded=!0},t.prototype.embed=function(){throw new Error("Must be implemented by subclasses")},t.prototype.lineHeight=function(t,e){var n;return null==e&&(e=!1),n=e?this.lineGap:0,(this.ascender+n-this.descender)/1e3*t},t}(),t.exports=i,o=n(285),r=n(287)}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e,r){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t.default:t}function o(t,e,n){if(n.get){var r=n.get;n.get=function(){var t=r.call(this);return ut(this,e,{value:t}),t}}else if("function"==typeof n.value){var i=n.value;return{get:function(){function t(){for(var t=arguments.length,e=Array(t),r=0;r<t;r++)e[r]=arguments[r];var o=e.length>0?e[0]:"value";if(n.has(o))return n.get(o);var a=i.apply(this,e);return n.set(o,a),a}var n=new ft;return ut(this,e,{value:t}),t}}}}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return 1===t&&qt[n]?qt[n]:Ht[t][e]}function s(t){var e=new nt.Struct({lookupType:nt.uint16,flags:Ie,subTableCount:nt.uint16,subTables:new nt.Array(new nt.Pointer(nt.uint16,t),"subTableCount"),markFilteringSet:new nt.Optional(nt.uint16,function(t){return t.flags.flags.useMarkFilteringSet})});return new nt.LazyArray(new nt.Pointer(nt.uint16,e),nt.uint16)}function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:nt.uint16,n=vt({newState:nt.uint16,flags:nt.uint16},t),r=new nt.Struct(n),i=new di(new nt.Array(nt.uint16,function(t){return t.nClasses}));return new nt.Struct({nClasses:nt.uint32,classTable:new nt.Pointer(nt.uint32,new gi(e)),stateArray:new nt.Pointer(nt.uint32,i),entryTable:new nt.Pointer(nt.uint32,new di(r))})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:nt.uint16,new nt.Struct({version:function(){return 8},firstGlyph:nt.uint16,values:new nt.Array(nt.uint8,nt.uint16)})),n=vt({newStateOffset:nt.uint16,newState:function(t){return(t.newStateOffset-(t.parent.stateArray.base-t.parent._startOffset))/t.parent.nClasses},flags:nt.uint16},t),r=new nt.Struct(n),i=new di(new nt.Array(nt.uint8,function(t){return t.nClasses}));return new nt.Struct({nClasses:nt.uint16,classTable:new nt.Pointer(nt.uint16,e),stateArray:new nt.Pointer(nt.uint16,i),entryTable:new nt.Pointer(nt.uint16,new di(r))})}function c(t,e){for(var n=0,r=t.length-1;n<=r;){var i=n+r>>1,o=e(t[i]);if(o<0)r=i-1;else{if(!(o>0))return i;n=i+1}}return-1}function f(t,e){for(var n=[];t<e;)n.push(t++);return n}function h(t,e,n,r,i){var o={};return Object.keys(r).forEach(function(t){o[t]=r[t]}),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(t,e,o),o=null),o}function p(t){return ro[t]}function d(t){for(var e=t.length,n=0;n<e;){var r=t.charCodeAt(n++);if(55296<=r&&r<=56319&&n<e){var i=t.charCodeAt(n);56320<=i&&i<=57343&&(n++,r=((1023&r)<<10)+(1023&i)+65536)}var o=xt.getScript(r);if("Common"!==o&&"Inherited"!==o&&"Unknown"!==o)return no[o]}return no.Unknown}function g(t){for(var e=0;e<t.length;e++){var n=t[e],r=xt.getScript(n);if("Common"!==r&&"Inherited"!==r&&"Unknown"!==r)return no[r]}return no.Unknown}function y(t){return fo[t]?"rtl":"ltr"}function v(t){var e={};for(var n in t){var r=void 0;(r=vo[n])&&(null==e[r[0]]&&(e[r[0]]={}),e[r[0]][r[1]]=t[n])}return e}function b(t){var e=t[0],n=t[1];if(isNaN(e))var r=go[e]&&go[e].code;else var r=e;if(isNaN(n))var i=go[e]&&go[e][n];else var i=n;return[r,i]}function m(t){var e={};if(Array.isArray(t))for(var n=0;n<t.length;n++){var r=void 0,i=b(t[n]);(r=mo[i[0]]&&mo[i[0]][i[1]])&&(e[r]=!0)}else if("object"===(void 0===t?"undefined":st(t)))for(var o in t){var a=t[o];for(var s in a){var u=void 0,l=b([o,s]);a[s]&&(u=mo[l[0]]&&mo[l[0]][l[1]])&&(e[u]=!0)}}return at(e)}function w(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=t.splice(n[0]-(n[1]-1),n[1]);i&&o.reverse();var a=t.splice.apply(t,[e[0],e[1]].concat(o));return r&&a.reverse(),t.splice.apply(t,[n[0]-(e[1]-1),0].concat(a)),t}function x(t,e,n,r){switch(e){case 0:return t;case 1:return w(t,[n,1],[r,0]);case 2:return w(t,[n,0],[r,1]);case 3:return w(t,[n,1],[r,1]);case 4:return w(t,[n,2],[r,0]);case 5:return w(t,[n,2],[r,0],!0,!1);case 6:return w(t,[n,0],[r,2]);case 7:return w(t,[n,0],[r,2],!1,!0);case 8:return w(t,[n,1],[r,2]);case 9:return w(t,[n,1],[r,2],!1,!0);case 10:return w(t,[n,2],[r,1]);case 11:return w(t,[n,2],[r,1],!0,!1);case 12:return w(t,[n,2],[r,2]);case 13:return w(t,[n,2],[r,2],!0,!1);case 14:return w(t,[n,2],[r,2],!1,!0);case 15:return w(t,[n,2],[r,2],!0,!0);default:throw new Error("Unknown verb: "+e)}}function _(t){var e=Go.get(t);if(e)return e-1;var n=xt.getCategory(t);return"Mn"===n||"Me"===n||"Cf"===n?Ho.Transparent:Ho.Non_Joining}function k(t){return ha(t)?_a:pa(t)?ka:da(t)?Sa:va(t)?Ca:ya(t)?Aa:ga(t)?Pa:xa}function S(t,e,n){return new $o(t,t.glyphForCodePoint(e).id,[e],n)}function C(t,e,n){var r=t[e],i=r.codePoints[0],o=i-ea,a=oa+o%sa;o=o/sa|0;var s=ra+o/aa|0,u=ia+o%aa;if(!n.hasGlyphForCodePoint(s)||!n.hasGlyphForCodePoint(u)||a!==oa&&!n.hasGlyphForCodePoint(a))return e;var l=S(n,s,r.features);l.features.ljmo=!0;var c=S(n,u,r.features);c.features.vjmo=!0;var f=[l,c];if(a>oa){var h=S(n,a,r.features);h.features.tjmo=!0,f.push(h)}return t.splice.apply(t,[e,1].concat(f)),e+f.length-1}function A(t,e,n){var r=t[e],i=t[e].codePoints[0],o=k(i),a=t[e-1].codePoints[0],s=k(a),u=void 0,l=void 0,c=void 0,f=void 0;if(s===Ca&&o===Sa)u=a,f=r;else{o===ka?(l=t[e-1],c=r):(l=t[e-2],c=t[e-1],f=r);var h=l.codePoints[0],p=c.codePoints[0];ba(h)&&ma(p)&&(u=ea+((h-ra)*aa+(p-ia))*sa)}var d=f&&f.codePoints[0]||oa;if(null!=u&&(d===oa||wa(d))){var g=u+(d-oa);if(n.hasGlyphForCodePoint(g)){var y=s===ka?3:2;return t.splice(e-y+1,y,S(n,g,r.features)),e-y+1}}return l&&(l.features.ljmo=!0),c&&(c.features.vjmo=!0),f&&(f.features.tjmo=!0),s===Ca?(C(t,e-1,n),e+1):e}function P(t){switch(k(t)){case Ca:case Aa:return 1;case ka:return 2;case Sa:return 3}}function E(t,e,n){var r=t[e],i=t[e].codePoints[0];if(0!==n.glyphForCodePoint(i).advanceWidth){var o=t[e-1].codePoints[0],a=P(o);return t.splice(e,1),t.splice(e-a,0,r)}}function I(t,e,n){var r=t[e],i=t[e].codePoints[0];if(n.hasGlyphForCodePoint(fa)){var o=S(n,fa,r.features),a=0===n.glyphForCodePoint(i).advanceWidth?e:e+1;t.splice(a,0,o),e++}return e}function T(t){return Ja.get(t.codePoints[0])>>8}function O(t){return 1<<(255&Ja.get(t.codePoints[0]))}function B(t,e){for(var n=0,r=0,i=Qa.match(e.map(T)),o=Array.isArray(i),a=0,i=o?i:it(i);;){var s;if(o){if(a>=i.length)break;s=i[a++]}else{if(a=i.next(),a.done)break;s=a.value}var u=s,l=u[0],c=u[1],f=u[2];if(l>r){++n;for(var h=r;h<l;h++)e[h].shaperInfo=new ts(Ga.X,Va.End,"non_indic_cluster",n)}++n;for(var p=l;p<=c;p++)e[p].shaperInfo=new ts(1<<T(e[p]),O(e[p]),f[0],n);r=c+1}if(r<e.length){++n;for(var d=r;d<e.length;d++)e[d].shaperInfo=new ts(Ga.X,Va.End,"non_indic_cluster",n)}}function L(t){return t.shaperInfo.category&Ha}function M(t){return t.shaperInfo.category&qa}function R(t){return t.shaperInfo.category&Za}function F(t,e){for(var n=t,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o,a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}a.features=(o={},o[e]=!0,o)}return t[0]._font._layoutEngine.engine.GSUBProcessor.applyFeatures([e],t),1===t.length}function z(t,e,n){var r=[n,e,n];return F(r.slice(0,2),"blwf")||F(r.slice(1,3),"blwf")?Va.Below_C:F(r.slice(0,2),"pstf")||F(r.slice(1,3),"pstf")?Va.Post_C:F(r.slice(0,2),"pref")||F(r.slice(1,3),"pref")?Va.Post_C:Va.Base_C}function D(t,e,n){var r=n.indicConfig,i=t._layoutEngine.engine.GSUBProcessor.features,o=t.glyphForCodePoint(9676).id,a=t.glyphForCodePoint(r.virama).id;if(a)for(var s=new $o(t,a,[r.virama]),u=0;u<e.length;u++)e[u].shaperInfo.position===Va.Base_C&&(e[u].shaperInfo.position=z(t,e[u].copy(),s));for(var l=0,c=U(e,0);l<e.length;l=c,c=U(e,l)){var f=e[l].shaperInfo,h=(f.category,f.syllableType);if("symbol_cluster"!==h&&"non_indic_cluster"!==h){if("broken_cluster"===h&&o){var p=new $o(t,o,[9676]);p.shaperInfo=new ts(1<<T(p),O(p),e[l].shaperInfo.syllableType,e[l].shaperInfo.syllable);for(var d=l;d<c&&e[d].shaperInfo.category===Ga.Repha;)d++;e.splice(d++,0,p),c++}var g=c,y=l,v=!1;if(r.rephPos!==Va.Ra_To_Become_Reph&&i.rphf&&l+3<=c&&("Implicit"===r.rephMode&&!M(e[l+2])||"Explicit"===r.rephMode&&e[l+2].shaperInfo.category===Ga.ZWJ)){var b=[e[l].copy(),e[l+1].copy(),e[l+2].copy()];if(F(b.slice(0,2),"rphf")||"Explicit"===r.rephMode&&F(b,"rphf")){for(y+=2;y<c&&M(e[y]);)y++;g=l,v=!0}}else if("Log_Repha"===r.rephMode&&e[l].shaperInfo.category===Ga.Repha){for(y++;y<c&&M(e[y]);)y++;g=l,v=!0}switch(r.basePos){case"Last":var m=c,w=!1;do{var x=e[--m].shaperInfo;if(L(e[m])){if(x.position!==Va.Below_C&&(x.position!==Va.Post_C||w)){g=m;break}x.position===Va.Below_C&&(w=!0),g=m}else if(l<m&&x.category===Ga.ZWJ&&e[m-1].shaperInfo.category===Ga.H)break}while(m>y);break;case"First":g=l;for(var _=g+1;_<c;_++)L(e[_])&&(e[_].shaperInfo.position=Va.Below_C)}v&&g===l&&y-g<=2&&(v=!1);for(var k=l;k<g;k++){var S=e[k].shaperInfo;S.position=Math.min(Va.Pre_C,S.position)}g<c&&(e[g].shaperInfo.position=Va.Base_C);for(var C=g+1;C<c;C++)if(e[C].shaperInfo.category===Ga.M){for(var A=C+1;A<c;A++)if(L(e[A])){e[A].shaperInfo.position=Va.Final_C;break}break}if(v&&(e[l].shaperInfo.position=Va.Ra_To_Become_Reph),n.isOldSpec)for(var P="Malayalam"!==n.unicodeScript,E=g+1;E<c;E++)if(e[E].shaperInfo.category===Ga.H){var I=void 0;for(I=c-1;I>E&&!(L(e[I])||P&&e[I].shaperInfo.category===Ga.H);I--);if(e[I].shaperInfo.category!==Ga.H&&I>E){var B=e[E];e.splice.apply(e,[E,0].concat(e.splice(E+1,I-E))),e[I]=B}break}for(var R=Va.Start,D=l;D<c;D++){var N=e[D].shaperInfo;if(N.category&(qa|Ga.N|Ga.RS|Ga.CM|Za&N.category)){if(N.position=R,N.category===Ga.H&&N.position===Va.Pre_M)for(var W=D;W>l;W--)if(e[W-1].shaperInfo.position!==Va.Pre_M){N.position=e[W-1].shaperInfo.position;break}}else N.position!==Va.SMVD&&(R=N.position)}for(var j=g,G=g+1;G<c;G++)if(L(e[G])){for(var V=j+1;V<G;V++)e[V].shaperInfo.position<Va.SMVD&&(e[V].shaperInfo.position=e[G].shaperInfo.position);j=G}else e[G].shaperInfo.category===Ga.M&&(j=G);var H=e.slice(l,c);H.sort(function(t,e){return t.shaperInfo.position-e.shaperInfo.position}),e.splice.apply(e,[l,H.length].concat(H));for(var q=l;q<c;q++)if(e[q].shaperInfo.position===Va.Base_C){g=q;break}for(var Z=l;Z<c&&e[Z].shaperInfo.position===Va.Ra_To_Become_Reph;Z++)e[Z].features.rphf=!0;for(var Y=!n.isOldSpec&&"Pre_And_Post"===r.blwfMode,X=l;X<g;X++)e[X].features.half=!0,Y&&(e[X].features.blwf=!0);for(var K=g+1;K<c;K++)e[K].features.abvf=!0,e[K].features.pstf=!0,e[K].features.blwf=!0;if(n.isOldSpec&&"Devanagari"===n.unicodeScript)for(var J=l;J+1<g;J++)e[J].shaperInfo.category!==Ga.Ra||e[J+1].shaperInfo.category!==Ga.H||J+1!==g&&e[J+2].shaperInfo.category!==Ga.ZWJ||(e[J].features.blwf=!0,e[J+1].features.blwf=!0);if(i.pref&&g+2<c)for(var Q=g+1;Q+2-1<c;Q++){var $=[e[Q].copy(),e[Q+1].copy()];if(F($,"pref")){for(var tt=0;tt<2;tt++)e[Q++].features.pref=!0;if(i.cfar)for(;Q<c;Q++)e[Q].features.cfar=!0;break}}for(var et=l+1;et<c;et++)if(M(e[et])){var nt=e[et].shaperInfo.category===Ga.ZWNJ,rt=et;do{rt--,nt&&delete e[rt].features.half}while(rt>l&&!L(e[rt]))}}}}function N(t,e,n){for(var r=n.indicConfig,i=t._layoutEngine.engine.GSUBProcessor.features,o=0,a=U(e,0);o<e.length;o=a,a=U(e,o)){for(var s=!!i.pref,u=o;u<a;u++)if(e[u].shaperInfo.position>=Va.Base_C){if(s&&u+1<a)for(var l=u+1;l<a;l++)if(e[l].features.pref){if(!e[l].substituted||!e[l].isLigated||e[l].isMultiplied){for(u=l;u<a&&R(e[u]);)u++;e[u].shaperInfo.position=Va.BASE_C,s=!1}break}if("Malayalam"===n.unicodeScript)for(var c=u+1;c<a;c++){for(;c<a&&M(e[c]);)c++;if(c===a||!R(e[c]))break;for(c++;c<a&&M(e[c]);)c++;c<a&&L(e[c])&&e[c].shaperInfo.position===Va.Below_C&&(u=c,e[u].shaperInfo.position=Va.Base_C)}o<u&&e[u].shaperInfo.position>Va.Base_C&&u--;break}if(u===a&&o<u&&e[u-1].shaperInfo.category===Ga.ZWJ&&u--,u<a)for(;o<u&&e[u].shaperInfo.category&(Ga.N|Za);)u--;if(o+1<a&&o<u){var f=u===a?u-2:u-1;if("Malayalam"!==n.unicodeScript&&"Tamil"!==n.unicodeScript){for(;f>o&&!(e[f].shaperInfo.category&(Ga.M|Za));)f--;R(e[f])&&e[f].shaperInfo.position!==Va.Pre_M?f+1<a&&M(e[f+1])&&f++:f=o}if(o<f&&e[f].shaperInfo.position!==Va.Pre_M)for(var h=f;h>o;h--)if(e[h-1].shaperInfo.position===Va.Pre_M){var p=h-1;p<u&&u<=f&&u--;var d=e[p];e.splice.apply(e,[p,0].concat(e.splice(p+1,f-p))),e[f]=d,f--}}if(o+1<a&&e[o].shaperInfo.position===Va.Ra_To_Become_Reph&&e[o].shaperInfo.category===Ga.Repha!==(e[o].isLigated&&!e[o].isMultiplied)){var g=void 0,y=r.rephPos,v=!1;if(y!==Va.After_Post){for(g=o+1;g<u&&!R(e[g]);)g++;if(g<u&&R(e[g])&&(g+1<u&&M(e[g+1])&&g++,v=!0),!v&&y===Va.After_Main){for(g=u;g+1<a&&e[g+1].shaperInfo.position<=Va.After_Main;)g++;v=g<a}if(!v&&y===Va.After_Sub){for(g=u;g+1<a&&!(e[g+1].shaperInfo.position&(Va.Post_C|Va.After_Post|Va.SMVD));)g++;v=g<a}}if(!v){for(g=o+1;g<u&&!R(e[g]);)g++;g<u&&R(e[g])&&(g+1<u&&M(e[g+1])&&g++,v=!0)}if(!v){for(g=a-1;g>o&&e[g].shaperInfo.position===Va.SMVD;)g--;if(R(e[g]))for(var b=u+1;b<g;b++)e[b].shaperInfo.category===Ga.M&&g--}var m=e[o];e.splice.apply(e,[o,0].concat(e.splice(o+1,g-o))),e[g]=m,o<u&&u<=g&&u--}if(s&&u+1<a)for(var w=u+1;w<a;w++)if(e[w].features.pref){if(e[w].isLigated&&!e[w].isMultiplied){var x=u;if("Malayalam"!==n.unicodeScript&&"Tamil"!==n.unicodeScript){for(;x>o&&!(e[x-1].shaperInfo.category&(Ga.M|Za));)x--;if(x>o&&e[x-1].shaperInfo.category===Ga.M)for(var _=w,k=u+1;k<_;k++)if(e[k].shaperInfo.category===Ga.M){x--;break}}x>o&&R(e[x-1])&&x<a&&M(e[x])&&x++;var S=w,C=e[S];e.splice.apply(e,[x+1,0].concat(e.splice(x,S-x))),e[x]=C,x<=u&&u<S&&u++}break}e[o].shaperInfo.position!==Va.Pre_M||o&&/Cf|Mn/.test(xt.getCategory(e[o-1].codePoints[0]))||(e[o].features.init=!0)}}function U(t,e){if(e>=t.length)return e;for(var n=t[e].shaperInfo.syllable;++e<t.length&&t[e].shaperInfo.syllable===n;);return e}function W(t){return rs.get(t.codePoints[0])}function j(t,e){for(var n=0,r=is.match(e.map(W)),i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=s[0],l=s[1],c=s[2];++n;for(var f=u;f<=l;f++)e[f].shaperInfo=new as(es[W(e[f])],c[0],n);for(var h="R"===e[u].shaperInfo.category?1:Math.min(3,l-u),p=u;p<u+h;p++)e[p].features.rphf=!0}}function G(t,e){for(var n=e,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}o.substituted=!1}}function V(t,e){for(var n=e,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;a.substituted&&a.features.rphf&&(a.shaperInfo.category="R")}}function H(t,e){for(var n=e,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;a.substituted&&(a.shaperInfo.category="VPre")}}function q(t,e){for(var n=t.glyphForCodePoint(9676).id,r=0,i=Z(e,0);r<e.length;r=i,i=Z(e,r)){var o=void 0,a=void 0,s=e[r].shaperInfo,u=s.syllableType;if("virama_terminated_cluster"===u||"standard_cluster"===u||"broken_cluster"===u){if("broken_cluster"===u&&n){var l=new $o(t,n,[9676]);for(l.shaperInfo=s,o=r;o<i&&"R"===e[o].shaperInfo.category;o++);e.splice(++o,0,l),i++}if("R"===s.category&&i-r>1)for(o=r+1;o<i;o++)if(s=e[o].shaperInfo,X(s)||Y(e[o])){Y(e[o])&&o--,e.splice.apply(e,[r,0].concat(e.splice(r+1,o-r),[e[o]]));break}for(o=r,a=i;o<i;o++)s=e[o].shaperInfo,X(s)||Y(e[o])?a=Y(e[o])?o+1:o:("VPre"===s.category||"VMPre"===s.category)&&a<o&&e.splice.apply(e,[a,1,e[o]].concat(e.splice(a,o-a)))}}}function Z(t,e){if(e>=t.length)return e;for(var n=t[e].shaperInfo.syllable;++e<t.length&&t[e].shaperInfo.syllable===n;);return e}function Y(t){return"H"===t.shaperInfo.category&&!t.isLigated}function X(t){return"B"===t.category||"GB"===t.category}function K(t){Array.isArray(t)||(t=[t]);for(var e=t,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=ss[o];if(a)return a}return jo}function J(t,e,n,r,i){var o={};return Object.keys(r).forEach(function(t){o[t]=r[t]}),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(t,e,o),o=null),o}function Q(t,e,n,r,i){var o={};return Object.keys(r).forEach(function(t){o[t]=r[t]}),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(t,e,o),o=null),o}function $(t){var e=t.readUInt8();return e===Zs?t.readUInt16BE():e===Xs?t.readUInt8()+Ks:e===Ys?t.readUInt8()+2*Ks:e}function tt(t,e){return 1&t?e:-e}function et(t,e,n){for(var r=void 0,i=r=0,o=[],a=0;a<n;a++){var s=0,u=0,l=t.readUInt8(),c=!(l>>7);if((l&=127)<10)s=0,u=tt(l,((14&l)<<7)+e.readUInt8());else if(l<20)s=tt(l,((l-10&14)<<7)+e.readUInt8()),u=0;else if(l<84){var f=l-20,h=e.readUInt8();s=tt(l,1+(48&f)+(h>>4)),u=tt(l>>1,1+((12&f)<<2)+(15&h))}else if(l<120){var f=l-84;s=tt(l,1+(f/12<<8)+e.readUInt8()),u=tt(l>>1,1+(f%12>>2<<8)+e.readUInt8())}else if(l<124){var h=e.readUInt8(),p=e.readUInt8();s=tt(l,(h<<4)+(p>>4)),u=tt(l>>1,((15&p)<<8)+e.readUInt8())}else s=tt(l,e.readUInt16BE()),u=tt(l>>1,e.readUInt16BE());i+=s,r+=u,o.push(new xs(c,!1,i,r))}return o}var nt=i(n(84)),rt=i(n(122)),it=i(n(148)),ot=i(n(181)),at=i(n(185)),st=i(n(188)),ut=i(n(205)),lt=i(n(208)),ct=i(n(209)),ft=i(n(210)),ht=i(n(227)),pt=i(n(228)),dt=n(110),gt=i(n(236)),yt=i(n(239)),vt=i(n(242)),bt=i(n(246)),mt=i(n(249)),wt=i(n(254)),xt=i(n(258)),_t=i(n(17)),kt=i(n(260)),St=i(n(269)),Ct=i(n(272)),At=i(n(18)),Pt=i(n(273)),Et={};Et.logErrors=!1;var It=[];Et.registerFormat=function(t){It.push(t)},Et.openSync=function(t,e){var r=n(56).readFileSync(t);return Et.create(r,e)},Et.open=function(t,e,r){"function"==typeof e&&(r=e,e=null),n(56).readFile(t,function(t,n){if(t)return r(t);try{var i=Et.create(n,e)}catch(t){return r(t)}return r(null,i)})},Et.create=function(t,e){for(var n=0;n<It.length;n++){var r=It[n];if(r.probe(t)){var i=new r(new nt.DecodeStream(t));return e?i.getFont(e):i}}throw new Error("Unknown font format")};var Tt=new nt.Struct({firstCode:nt.uint16,entryCount:nt.uint16,idDelta:nt.int16,idRangeOffset:nt.uint16}),Ot=new nt.Struct({startCharCode:nt.uint32,endCharCode:nt.uint32,glyphID:nt.uint32}),Bt=new nt.Struct({startUnicodeValue:nt.uint24,additionalCount:nt.uint8}),Lt=new nt.Struct({unicodeValue:nt.uint24,glyphID:nt.uint16}),Mt=new nt.Array(Bt,nt.uint32),Rt=new nt.Array(Lt,nt.uint32),Ft=new nt.Struct({varSelector:nt.uint24,defaultUVS:new nt.Pointer(nt.uint32,Mt,{type:"parent"}),nonDefaultUVS:new nt.Pointer(nt.uint32,Rt,{type:"parent"})}),zt=new nt.VersionedStruct(nt.uint16,{0:{length:nt.uint16,language:nt.uint16,codeMap:new nt.LazyArray(nt.uint8,256)},2:{length:nt.uint16,language:nt.uint16,subHeaderKeys:new nt.Array(nt.uint16,256),subHeaderCount:function(t){return Math.max.apply(Math,t.subHeaderKeys)},subHeaders:new nt.LazyArray(Tt,"subHeaderCount"),glyphIndexArray:new nt.LazyArray(nt.uint16,"subHeaderCount")},4:{length:nt.uint16,language:nt.uint16,segCountX2:nt.uint16,segCount:function(t){return t.segCountX2>>1},searchRange:nt.uint16,entrySelector:nt.uint16, rangeShift:nt.uint16,endCode:new nt.LazyArray(nt.uint16,"segCount"),reservedPad:new nt.Reserved(nt.uint16),startCode:new nt.LazyArray(nt.uint16,"segCount"),idDelta:new nt.LazyArray(nt.int16,"segCount"),idRangeOffset:new nt.LazyArray(nt.uint16,"segCount"),glyphIndexArray:new nt.LazyArray(nt.uint16,function(t){return(t.length-t._currentOffset)/2})},6:{length:nt.uint16,language:nt.uint16,firstCode:nt.uint16,entryCount:nt.uint16,glyphIndices:new nt.LazyArray(nt.uint16,"entryCount")},8:{reserved:new nt.Reserved(nt.uint16),length:nt.uint32,language:nt.uint16,is32:new nt.LazyArray(nt.uint8,8192),nGroups:nt.uint32,groups:new nt.LazyArray(Ot,"nGroups")},10:{reserved:new nt.Reserved(nt.uint16),length:nt.uint32,language:nt.uint32,firstCode:nt.uint32,entryCount:nt.uint32,glyphIndices:new nt.LazyArray(nt.uint16,"numChars")},12:{reserved:new nt.Reserved(nt.uint16),length:nt.uint32,language:nt.uint32,nGroups:nt.uint32,groups:new nt.LazyArray(Ot,"nGroups")},13:{reserved:new nt.Reserved(nt.uint16),length:nt.uint32,language:nt.uint32,nGroups:nt.uint32,groups:new nt.LazyArray(Ot,"nGroups")},14:{length:nt.uint32,numRecords:nt.uint32,varSelectors:new nt.LazyArray(Ft,"numRecords")}}),Dt=new nt.Struct({platformID:nt.uint16,encodingID:nt.uint16,table:new nt.Pointer(nt.uint32,zt,{type:"parent",lazy:!0})}),Nt=new nt.Struct({version:nt.uint16,numSubtables:nt.uint16,tables:new nt.Array(Dt,"numSubtables")}),Ut=new nt.Struct({version:nt.int32,revision:nt.int32,checkSumAdjustment:nt.uint32,magicNumber:nt.uint32,flags:nt.uint16,unitsPerEm:nt.uint16,created:new nt.Array(nt.int32,2),modified:new nt.Array(nt.int32,2),xMin:nt.int16,yMin:nt.int16,xMax:nt.int16,yMax:nt.int16,macStyle:new nt.Bitfield(nt.uint16,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:nt.uint16,fontDirectionHint:nt.int16,indexToLocFormat:nt.int16,glyphDataFormat:nt.int16}),Wt=new nt.Struct({version:nt.int32,ascent:nt.int16,descent:nt.int16,lineGap:nt.int16,advanceWidthMax:nt.uint16,minLeftSideBearing:nt.int16,minRightSideBearing:nt.int16,xMaxExtent:nt.int16,caretSlopeRise:nt.int16,caretSlopeRun:nt.int16,caretOffset:nt.int16,reserved:new nt.Reserved(nt.int16,4),metricDataFormat:nt.int16,numberOfMetrics:nt.uint16}),jt=new nt.Struct({advance:nt.uint16,bearing:nt.int16}),Gt=new nt.Struct({metrics:new nt.LazyArray(jt,function(t){return t.parent.hhea.numberOfMetrics}),bearings:new nt.LazyArray(nt.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.hhea.numberOfMetrics})}),Vt=new nt.Struct({version:nt.int32,numGlyphs:nt.uint16,maxPoints:nt.uint16,maxContours:nt.uint16,maxComponentPoints:nt.uint16,maxComponentContours:nt.uint16,maxZones:nt.uint16,maxTwilightPoints:nt.uint16,maxStorage:nt.uint16,maxFunctionDefs:nt.uint16,maxInstructionDefs:nt.uint16,maxStackElements:nt.uint16,maxSizeOfInstructions:nt.uint16,maxComponentElements:nt.uint16,maxComponentDepth:nt.uint16}),Ht=[["utf16be","utf16be","utf16be","utf16be","utf16be","utf16be"],["macroman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","macgreek","maccyrillic","symbol","Devanagari","Gurmukhi","Gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","macthai","Laotian","Georgian","Armenian","gb-2312-80","Tibetan","Mongolian","Geez","maccenteuro","Vietnamese","Sindhi"],["ascii"],["symbol","utf16be","shift-jis","gb18030","big5","wansung","johab",null,null,null,"utf16be"]],qt={15:"maciceland",17:"macturkish",18:"maccroatian",24:"maccenteuro",25:"maccenteuro",26:"maccenteuro",27:"maccenteuro",28:"maccenteuro",30:"maciceland",37:"macromania",38:"maccenteuro",39:"maccenteuro",40:"maccenteuro",143:"macinuit",146:"macgaelic"},Zt=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}],Yt=new nt.Struct({platformID:nt.uint16,encodingID:nt.uint16,languageID:nt.uint16,nameID:nt.uint16,length:nt.uint16,string:new nt.Pointer(nt.uint16,new nt.String("length",function(t){return a(t.platformID,t.encodingID,t.languageID)}),{type:"parent",relativeTo:"parent.stringOffset",allowNull:!1})}),Xt=new nt.Struct({length:nt.uint16,tag:new nt.Pointer(nt.uint16,new nt.String("length","utf16be"),{type:"parent",relativeTo:"stringOffset"})}),NameTable=new nt.VersionedStruct(nt.uint16,{0:{count:nt.uint16,stringOffset:nt.uint16,records:new nt.Array(Yt,"count")},1:{count:nt.uint16,stringOffset:nt.uint16,records:new nt.Array(Yt,"count"),langTagCount:nt.uint16,langTags:new nt.Array(Xt,"langTagCount")}}),Kt=["copyright","fontFamily","fontSubfamily","uniqueSubfamily","fullName","version","postscriptName","trademark","manufacturer","designer","description","vendorURL","designerURL","license","licenseURL",null,"preferredFamily","preferredSubfamily","compatibleFull","sampleText","postscriptCIDFontName","wwsFamilyName","wwsSubfamilyName"];NameTable.process=function(t){for(var e={},n=this.records,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=Zt[a.platformID][a.languageID];null==s&&null!=this.langTags&&a.languageID>=32768&&(s=this.langTags[a.languageID-32768].tag),null==s&&(s=a.platformID+"-"+a.languageID);var u=a.nameID>=256?"fontFeatures":Kt[a.nameID]||a.nameID;null==e[u]&&(e[u]={});var l=e[u];a.nameID>=256&&(l=l[a.nameID]||(l[a.nameID]={})),"string"!=typeof a.string&&"string"==typeof l[s]||(l[s]=a.string)}this.records=e},NameTable.preEncode=function(){if(!Array.isArray(this.records)){this.version=0;var t=[];for(var n in this.records){var r=this.records[n];"fontFeatures"!==n&&(t.push({platformID:3,encodingID:1,languageID:1033,nameID:Kt.indexOf(n),length:e.byteLength(r.en,"utf16le"),string:r.en}),"postscriptName"===n&&t.push({platformID:1,encodingID:0,languageID:0,nameID:Kt.indexOf(n),length:r.en.length,string:r.en}))}this.records=t,this.count=t.length,this.stringOffset=NameTable.size(this,null,!1)}};var Jt=new nt.VersionedStruct(nt.uint16,{header:{xAvgCharWidth:nt.int16,usWeightClass:nt.uint16,usWidthClass:nt.uint16,fsType:new nt.Bitfield(nt.uint16,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:nt.int16,ySubscriptYSize:nt.int16,ySubscriptXOffset:nt.int16,ySubscriptYOffset:nt.int16,ySuperscriptXSize:nt.int16,ySuperscriptYSize:nt.int16,ySuperscriptXOffset:nt.int16,ySuperscriptYOffset:nt.int16,yStrikeoutSize:nt.int16,yStrikeoutPosition:nt.int16,sFamilyClass:nt.int16,panose:new nt.Array(nt.uint8,10),ulCharRange:new nt.Array(nt.uint32,4),vendorID:new nt.String(4),fsSelection:new nt.Bitfield(nt.uint16,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:nt.uint16,usLastCharIndex:nt.uint16},0:{},1:{typoAscender:nt.int16,typoDescender:nt.int16,typoLineGap:nt.int16,winAscent:nt.uint16,winDescent:nt.uint16,codePageRange:new nt.Array(nt.uint32,2)},2:{typoAscender:nt.int16,typoDescender:nt.int16,typoLineGap:nt.int16,winAscent:nt.uint16,winDescent:nt.uint16,codePageRange:new nt.Array(nt.uint32,2),xHeight:nt.int16,capHeight:nt.int16,defaultChar:nt.uint16,breakChar:nt.uint16,maxContent:nt.uint16},5:{typoAscender:nt.int16,typoDescender:nt.int16,typoLineGap:nt.int16,winAscent:nt.uint16,winDescent:nt.uint16,codePageRange:new nt.Array(nt.uint32,2),xHeight:nt.int16,capHeight:nt.int16,defaultChar:nt.uint16,breakChar:nt.uint16,maxContent:nt.uint16,usLowerOpticalPointSize:nt.uint16,usUpperOpticalPointSize:nt.uint16}}),Qt=Jt.versions;Qt[3]=Qt[4]=Qt[2];var $t=new nt.VersionedStruct(nt.fixed32,{header:{italicAngle:nt.fixed32,underlinePosition:nt.int16,underlineThickness:nt.int16,isFixedPitch:nt.uint32,minMemType42:nt.uint32,maxMemType42:nt.uint32,minMemType1:nt.uint32,maxMemType1:nt.uint32},1:{},2:{numberOfGlyphs:nt.uint16,glyphNameIndex:new nt.Array(nt.uint16,"numberOfGlyphs"),names:new nt.Array(new nt.String(nt.uint8))},2.5:{numberOfGlyphs:nt.uint16,offsets:new nt.Array(nt.uint8,"numberOfGlyphs")},3:{},4:{map:new nt.Array(nt.uint32,function(t){return t.parent.maxp.numGlyphs})}}),te=new nt.Struct({controlValues:new nt.Array(nt.int16)}),ee=new nt.Struct({instructions:new nt.Array(nt.uint8)}),ne=new nt.VersionedStruct("head.indexToLocFormat",{0:{offsets:new nt.Array(nt.uint16)},1:{offsets:new nt.Array(nt.uint32)}});ne.process=function(){if(0===this.version)for(var t=0;t<this.offsets.length;t++)this.offsets[t]<<=1},ne.preEncode=function(){if(null==this.version&&(this.version=this.offsets[this.offsets.length-1]>65535?1:0,0===this.version))for(var t=0;t<this.offsets.length;t++)this.offsets[t]>>>=1};var re,ie=new nt.Struct({controlValueProgram:new nt.Array(nt.uint8)}),oe=new nt.Array(new nt.Buffer),ae=function(){function t(e){lt(this,t),this.type=e}return t.prototype.getCFFVersion=function(t){for(;t&&!t.hdrSize;)t=t.parent;return t?t.version:-1},t.prototype.decode=function(t,e){var n=this.getCFFVersion(e),r=n>=2?t.readUInt32BE():t.readUInt16BE();if(0===r)return[];var i=t.readUInt8(),o=void 0;if(1===i)o=nt.uint8;else if(2===i)o=nt.uint16;else if(3===i)o=nt.uint24;else{if(4!==i)throw new Error("Bad offset size in CFFIndex: "+i+" "+t.pos);o=nt.uint32}for(var a=[],s=t.pos+(r+1)*i-1,u=o.decode(t),l=0;l<r;l++){var c=o.decode(t);if(null!=this.type){var f=t.pos;t.pos=s+u,e.length=c-u,a.push(this.type.decode(t,e)),t.pos=f}else a.push({offset:s+u,length:c-u});u=c}return t.pos=s+u,a},t.prototype.size=function(t,e){var n=2;if(0===t.length)return n;for(var r=this.type||new nt.Buffer,i=1,o=0;o<t.length;o++){var a=t[o];i+=r.size(a,e)}var s=void 0;if(i<=255)s=nt.uint8;else if(i<=65535)s=nt.uint16;else if(i<=16777215)s=nt.uint24;else{if(!(i<=4294967295))throw new Error("Bad offset in CFFIndex");s=nt.uint32}return n+=1+s.size()*(t.length+1),n+=i-1,n},t.prototype.encode=function(t,e,n){if(t.writeUInt16BE(e.length),0!==e.length){for(var r=this.type||new nt.Buffer,i=[],o=1,a=e,s=Array.isArray(a),u=0,a=s?a:it(a);;){var l;if(s){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l,f=r.size(c,n);i.push(f),o+=f}var h=void 0;if(o<=255)h=nt.uint8;else if(o<=65535)h=nt.uint16;else if(o<=16777215)h=nt.uint24;else{if(!(o<=4294967295))throw new Error("Bad offset in CFFIndex");h=nt.uint32}t.writeUInt8(h.size()),o=1,h.encode(t,o);for(var p=i,d=Array.isArray(p),g=0,p=d?p:it(p);;){var y;if(d){if(g>=p.length)break;y=p[g++]}else{if(g=p.next(),g.done)break;y=g.value}o+=y,h.encode(t,o)}for(var v=e,b=Array.isArray(v),m=0,v=b?v:it(v);;){var w;if(b){if(m>=v.length)break;w=v[m++]}else{if(m=v.next(),m.done)break;w=m.value}var x=w;r.encode(t,x,n)}}},t}(),se=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],ue={".":10,E:11,"E-":12,"-":14},le=function(){function t(){lt(this,t)}return t.decode=function(t,e){if(32<=e&&e<=246)return e-139;if(247<=e&&e<=250)return 256*(e-247)+t.readUInt8()+108;if(251<=e&&e<=254)return 256*-(e-251)-t.readUInt8()-108;if(28===e)return t.readInt16BE();if(29===e)return t.readInt32BE();if(30===e){for(var n="";;){var r=t.readUInt8(),i=r>>4;if(15===i)break;n+=se[i];var o=15&r;if(15===o)break;n+=se[o]}return parseFloat(n)}return null},t.size=function(t){if(t.forceLarge&&(t=32768),(0|t)!==t){var e=""+t;return 1+Math.ceil((e.length+1)/2)}return-107<=t&&t<=107?1:108<=t&&t<=1131||-1131<=t&&t<=-108?2:-32768<=t&&t<=32767?3:5},t.encode=function(t,e){var n=Number(e);if(e.forceLarge)return t.writeUInt8(29),t.writeInt32BE(n);if((0|n)===n)return-107<=n&&n<=107?t.writeUInt8(n+139):108<=n&&n<=1131?(n-=108,t.writeUInt8(247+(n>>8)),t.writeUInt8(255&n)):-1131<=n&&n<=-108?(n=-n-108,t.writeUInt8(251+(n>>8)),t.writeUInt8(255&n)):-32768<=n&&n<=32767?(t.writeUInt8(28),t.writeInt16BE(n)):(t.writeUInt8(29),t.writeInt32BE(n));t.writeUInt8(30);for(var r=""+n,i=0;i<r.length;i+=2){var o=r[i],a=ue[o]||+o;if(i===r.length-1)var s=15;else var u=r[i+1],s=ue[u]||+u;t.writeUInt8(a<<4|15&s)}return 15!==s?t.writeUInt8(240):void 0},t}(),ce=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];lt(this,t),this.ops=e,this.fields={};for(var n=e,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=Array.isArray(a[0])?a[0][0]<<8|a[0][1]:a[0];this.fields[s]=a}}return t.prototype.decodeOperands=function(t,e,n,r){var i=this;if(Array.isArray(t))return r.map(function(r,o){return i.decodeOperands(t[o],e,n,[r])});if(null!=t.decode)return t.decode(e,n,r);switch(t){case"number":case"offset":case"sid":return r[0];case"boolean":return!!r[0];default:return r}},t.prototype.encodeOperands=function(t,e,n,r){var i=this;return Array.isArray(t)?r.map(function(r,o){return i.encodeOperands(t[o],e,n,r)[0]}):null!=t.encode?t.encode(e,r,n):"number"==typeof r?[r]:"boolean"==typeof r?[+r]:Array.isArray(r)?r:[r]},t.prototype.decode=function(t,e){var n=t.pos+e.length,r={},i=[];gt(r,{parent:{value:e},_startOffset:{value:t.pos}});for(var o in this.fields){var a=this.fields[o];r[a[1]]=a[3]}for(;t.pos<n;){var s=t.readUInt8();if(s<28){12===s&&(s=s<<8|t.readUInt8());var u=this.fields[s];if(!u)throw new Error("Unknown operator "+s);var l=this.decodeOperands(u[2],t,r,i);null!=l&&(l instanceof dt.PropertyDescriptor?ut(r,u[1],l):r[u[1]]=l),i=[]}else i.push(le.decode(t,s))}return r},t.prototype.size=function(t,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r={parent:e,val:t,pointerSize:0,startOffset:e.startOffset||0},i=0;for(var o in this.fields){var a=this.fields[o],s=t[a[1]];if(null!=s&&!yt(s,a[3])){for(var u=this.encodeOperands(a[2],null,r,s),l=u,c=Array.isArray(l),f=0,l=c?l:it(l);;){var h;if(c){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var p=h;i+=le.size(p)}i+=(Array.isArray(a[0])?a[0]:[a[0]]).length}}return n&&(i+=r.pointerSize),i},t.prototype.encode=function(t,e,n){var r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0};r.pointerOffset=t.pos+this.size(e,r,!1);for(var i=this.ops,o=Array.isArray(i),a=0,i=o?i:it(i);;){var s;if(o){if(a>=i.length)break;s=i[a++]}else{if(a=i.next(),a.done)break;s=a.value}var u=s,l=e[u[1]];if(null!=l&&!yt(l,u[3])){for(var c=this.encodeOperands(u[2],t,r,l),f=c,h=Array.isArray(f),p=0,f=h?f:it(f);;){var d;if(h){if(p>=f.length)break;d=f[p++]}else{if(p=f.next(),p.done)break;d=p.value}var g=d;le.encode(t,g)}for(var y=Array.isArray(u[0])?u[0]:[u[0]],v=y,b=Array.isArray(v),m=0,v=b?v:it(v);;){var w;if(b){if(m>=v.length)break;w=v[m++]}else{if(m=v.next(),m.done)break;w=m.value}var x=w;t.writeUInt8(x)}}}for(var _=0;_<r.pointers.length;){var k=r.pointers[_++];k.type.encode(t,k.val,k.parent)}},t}(),fe=function(t){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return lt(this,e),null==r.type&&(r.type="global"),ht(this,t.call(this,null,n,r))}return pt(e,t),e.prototype.decode=function(e,n,r){return this.offsetType={decode:function(){return r[0]}},t.prototype.decode.call(this,e,n,r)},e.prototype.encode=function(e,n,r){if(!e)return this.offsetType={size:function(){return 0}},this.size(n,r),[new he(0)];var i=null;return this.offsetType={encode:function(t,e){return i=e}},t.prototype.encode.call(this,e,n,r),[new he(i)]},e}(nt.Pointer),he=function(){function t(e){lt(this,t),this.val=e,this.forceLarge=!0}return t.prototype.valueOf=function(){return this.val},t}(),pe=function(){function t(){lt(this,t)}return t.decode=function(t,e,n){for(var r=n.pop();n.length>r;)n.pop()},t}(),de=new ce([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",!1],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[22,"vsindex","number",0],[23,"blend",pe,null],[19,"Subrs",new fe(new ae,{type:"local" }),null]]),ge=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],ye=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],ve=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],be=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],me=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],we=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],xe=new nt.Struct({reserved:new nt.Reserved(nt.uint16),reqFeatureIndex:nt.uint16,featureCount:nt.uint16,featureIndexes:new nt.Array(nt.uint16,"featureCount")}),_e=new nt.Struct({tag:new nt.String(4),langSys:new nt.Pointer(nt.uint16,xe,{type:"parent"})}),ke=new nt.Struct({defaultLangSys:new nt.Pointer(nt.uint16,xe),count:nt.uint16,langSysRecords:new nt.Array(_e,"count")}),Se=new nt.Struct({tag:new nt.String(4),script:new nt.Pointer(nt.uint16,ke,{type:"parent"})}),Ce=new nt.Array(Se,nt.uint16),Ae=new nt.Struct({featureParams:nt.uint16,lookupCount:nt.uint16,lookupListIndexes:new nt.Array(nt.uint16,"lookupCount")}),Pe=new nt.Struct({tag:new nt.String(4),feature:new nt.Pointer(nt.uint16,Ae,{type:"parent"})}),Ee=new nt.Array(Pe,nt.uint16),Ie=new nt.Struct({markAttachmentType:nt.uint8,flags:new nt.Bitfield(nt.uint8,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet"])}),Te=new nt.Struct({start:nt.uint16,end:nt.uint16,startCoverageIndex:nt.uint16}),Oe=new nt.VersionedStruct(nt.uint16,{1:{glyphCount:nt.uint16,glyphs:new nt.Array(nt.uint16,"glyphCount")},2:{rangeCount:nt.uint16,rangeRecords:new nt.Array(Te,"rangeCount")}}),Be=new nt.Struct({start:nt.uint16,end:nt.uint16,class:nt.uint16}),Le=new nt.VersionedStruct(nt.uint16,{1:{startGlyph:nt.uint16,glyphCount:nt.uint16,classValueArray:new nt.Array(nt.uint16,"glyphCount")},2:{classRangeCount:nt.uint16,classRangeRecord:new nt.Array(Be,"classRangeCount")}}),Me=new nt.Struct({a:nt.uint16,b:nt.uint16,deltaFormat:nt.uint16}),Re=new nt.Struct({sequenceIndex:nt.uint16,lookupListIndex:nt.uint16}),Fe=new nt.Struct({glyphCount:nt.uint16,lookupCount:nt.uint16,input:new nt.Array(nt.uint16,function(t){return t.glyphCount-1}),lookupRecords:new nt.Array(Re,"lookupCount")}),ze=new nt.Array(new nt.Pointer(nt.uint16,Fe),nt.uint16),De=new nt.Struct({glyphCount:nt.uint16,lookupCount:nt.uint16,classes:new nt.Array(nt.uint16,function(t){return t.glyphCount-1}),lookupRecords:new nt.Array(Re,"lookupCount")}),Ne=new nt.Array(new nt.Pointer(nt.uint16,De),nt.uint16),Ue=new nt.VersionedStruct(nt.uint16,{1:{coverage:new nt.Pointer(nt.uint16,Oe),ruleSetCount:nt.uint16,ruleSets:new nt.Array(new nt.Pointer(nt.uint16,ze),"ruleSetCount")},2:{coverage:new nt.Pointer(nt.uint16,Oe),classDef:new nt.Pointer(nt.uint16,Le),classSetCnt:nt.uint16,classSet:new nt.Array(new nt.Pointer(nt.uint16,Ne),"classSetCnt")},3:{glyphCount:nt.uint16,lookupCount:nt.uint16,coverages:new nt.Array(new nt.Pointer(nt.uint16,Oe),"glyphCount"),lookupRecords:new nt.Array(Re,"lookupCount")}}),We=new nt.Struct({backtrackGlyphCount:nt.uint16,backtrack:new nt.Array(nt.uint16,"backtrackGlyphCount"),inputGlyphCount:nt.uint16,input:new nt.Array(nt.uint16,function(t){return t.inputGlyphCount-1}),lookaheadGlyphCount:nt.uint16,lookahead:new nt.Array(nt.uint16,"lookaheadGlyphCount"),lookupCount:nt.uint16,lookupRecords:new nt.Array(Re,"lookupCount")}),je=new nt.Array(new nt.Pointer(nt.uint16,We),nt.uint16),Ge=new nt.VersionedStruct(nt.uint16,{1:{coverage:new nt.Pointer(nt.uint16,Oe),chainCount:nt.uint16,chainRuleSets:new nt.Array(new nt.Pointer(nt.uint16,je),"chainCount")},2:{coverage:new nt.Pointer(nt.uint16,Oe),backtrackClassDef:new nt.Pointer(nt.uint16,Le),inputClassDef:new nt.Pointer(nt.uint16,Le),lookaheadClassDef:new nt.Pointer(nt.uint16,Le),chainCount:nt.uint16,chainClassSet:new nt.Array(new nt.Pointer(nt.uint16,je),"chainCount")},3:{backtrackGlyphCount:nt.uint16,backtrackCoverage:new nt.Array(new nt.Pointer(nt.uint16,Oe),"backtrackGlyphCount"),inputGlyphCount:nt.uint16,inputCoverage:new nt.Array(new nt.Pointer(nt.uint16,Oe),"inputGlyphCount"),lookaheadGlyphCount:nt.uint16,lookaheadCoverage:new nt.Array(new nt.Pointer(nt.uint16,Oe),"lookaheadGlyphCount"),lookupCount:nt.uint16,lookupRecords:new nt.Array(Re,"lookupCount")}}),Ve=new nt.Fixed(16,"BE",14),He=new nt.Struct({startCoord:Ve,peakCoord:Ve,endCoord:Ve}),qe=new nt.Struct({axisCount:nt.uint16,regionCount:nt.uint16,variationRegions:new nt.Array(new nt.Array(He,"axisCount"),"regionCount")}),Ze=new nt.Struct({shortDeltas:new nt.Array(nt.int16,function(t){return t.parent.shortDeltaCount}),regionDeltas:new nt.Array(nt.int8,function(t){return t.parent.regionIndexCount-t.parent.shortDeltaCount}),deltas:function(t){return t.shortDeltas.concat(t.regionDeltas)}}),Ye=new nt.Struct({itemCount:nt.uint16,shortDeltaCount:nt.uint16,regionIndexCount:nt.uint16,regionIndexes:new nt.Array(nt.uint16,"regionIndexCount"),deltaSets:new nt.Array(Ze,"itemCount")}),Xe=new nt.Struct({format:nt.uint16,variationRegionList:new nt.Pointer(nt.uint32,qe),variationDataCount:nt.uint16,itemVariationData:new nt.Array(new nt.Pointer(nt.uint32,Ye),"variationDataCount")}),Ke=new nt.VersionedStruct(nt.uint16,{1:(re={axisIndex:nt.uint16},re.axisIndex=nt.uint16,re.filterRangeMinValue=Ve,re.filterRangeMaxValue=Ve,re)}),Je=new nt.Struct({conditionCount:nt.uint16,conditionTable:new nt.Array(new nt.Pointer(nt.uint32,Ke),"conditionCount")}),Qe=new nt.Struct({featureIndex:nt.uint16,alternateFeatureTable:new nt.Pointer(nt.uint32,Ae,{type:"parent"})}),$e=new nt.Struct({version:nt.fixed32,substitutionCount:nt.uint16,substitutions:new nt.Array(Qe,"substitutionCount")}),tn=new nt.Struct({conditionSet:new nt.Pointer(nt.uint32,Je,{type:"parent"}),featureTableSubstitution:new nt.Pointer(nt.uint32,$e,{type:"parent"})}),en=new nt.Struct({majorVersion:nt.uint16,minorVersion:nt.uint16,featureVariationRecordCount:nt.uint32,featureVariationRecords:new nt.Array(tn,"featureVariationRecordCount")}),nn=function(){function t(e,n){lt(this,t),this.predefinedOps=e,this.type=n}return t.prototype.decode=function(t,e,n){return this.predefinedOps[n[0]]?this.predefinedOps[n[0]]:this.type.decode(t,e,n)},t.prototype.size=function(t,e){return this.type.size(t,e)},t.prototype.encode=function(t,e,n){var r=this.predefinedOps.indexOf(e);return-1!==r?r:this.type.encode(t,e,n)},t}(),rn=function(t){function e(){return lt(this,e),ht(this,t.call(this,"UInt8"))}return pt(e,t),e.prototype.decode=function(t){return 127&nt.uint8.decode(t)},e}(nt.Number),on=new nt.Struct({first:nt.uint16,nLeft:nt.uint8}),an=new nt.Struct({first:nt.uint16,nLeft:nt.uint16}),sn=new nt.VersionedStruct(new rn,{0:{nCodes:nt.uint8,codes:new nt.Array(nt.uint8,"nCodes")},1:{nRanges:nt.uint8,ranges:new nt.Array(on,"nRanges")}}),un=new nn([ye,ve],new fe(sn,{lazy:!0})),ln=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype.decode=function(t,e){for(var n=dt.resolveLength(this.length,t,e),r=0,i=[];r<n;){var o=this.type.decode(t,e);o.offset=r,r+=o.nLeft+1,i.push(o)}return i},e}(nt.Array),cn=new nt.VersionedStruct(nt.uint8,{0:{glyphs:new nt.Array(nt.uint16,function(t){return t.parent.CharStrings.length-1})},1:{ranges:new ln(on,function(t){return t.parent.CharStrings.length-1})},2:{ranges:new ln(an,function(t){return t.parent.CharStrings.length-1})}}),fn=new nn([be,me,we],new fe(cn,{lazy:!0})),hn=new nt.Struct({first:nt.uint16,fd:nt.uint8}),pn=new nt.Struct({first:nt.uint32,fd:nt.uint16}),dn=new nt.VersionedStruct(nt.uint8,{0:{fds:new nt.Array(nt.uint8,function(t){return t.parent.CharStrings.length})},3:{nRanges:nt.uint16,ranges:new nt.Array(hn,"nRanges"),sentinel:nt.uint16},4:{nRanges:nt.uint32,ranges:new nt.Array(pn,"nRanges"),sentinel:nt.uint32}}),gn=new fe(de),yn=function(){function t(){lt(this,t)}return t.prototype.decode=function(t,e,n){return e.length=n[0],gn.decode(t,e,[n[1]])},t.prototype.size=function(t,e){return[de.size(t,e,!1),gn.size(t,e)[0]]},t.prototype.encode=function(t,e,n){return[de.size(e,n,!1),gn.encode(t,e,n)[0]]},t}(),vn=new ce([[18,"Private",new yn,null],[[12,38],"FontName","sid",null]]),bn=new ce([[[12,30],"ROS",["sid","sid","number"],null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","boolean",!1],[[12,2],"ItalicAngle","number",0],[[12,3],"UnderlinePosition","number",-100],[[12,4],"UnderlineThickness","number",50],[[12,5],"PaintType","number",0],[[12,6],"CharstringType","number",2],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[13,"UniqueID","number",null],[5,"FontBBox","array",[0,0,0,0]],[[12,8],"StrokeWidth","number",0],[14,"XUID","array",null],[15,"charset",fn,be],[16,"Encoding",un,ye],[17,"CharStrings",new fe(new ae),null],[18,"Private",new yn,null],[[12,20],"SyntheticBase","number",null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","number",0],[[12,32],"CIDFontRevision","number",0],[[12,33],"CIDFontType","number",0],[[12,34],"CIDCount","number",8720],[[12,35],"UIDBase","number",null],[[12,37],"FDSelect",new fe(dn),null],[[12,36],"FDArray",new fe(new ae(vn)),null],[[12,38],"FontName","sid",null]]),mn=new nt.Struct({length:nt.uint16,itemVariationStore:Xe}),wn=new ce([[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[17,"CharStrings",new fe(new ae),null],[[12,37],"FDSelect",new fe(dn),null],[[12,36],"FDArray",new fe(new ae(vn)),null],[24,"vstore",new fe(mn),null],[25,"maxstack","number",193]]),xn=new nt.VersionedStruct(nt.fixed16,{1:{hdrSize:nt.uint8,offSize:nt.uint8,nameIndex:new ae(new nt.String("length")),topDictIndex:new ae(bn),stringIndex:new ae(new nt.String("length")),globalSubrIndex:new ae},2:{hdrSize:nt.uint8,length:nt.uint16,topDict:wn,globalSubrIndex:new ae}}),_n=function(){function t(e){lt(this,t),this.stream=e,this.decode()}return t.decode=function(e){return new t(e)},t.prototype.decode=function(){var t=(this.stream.pos,xn.decode(this.stream));for(var e in t){var n=t[e];this[e]=n}if(this.version<2){if(1!==this.topDictIndex.length)throw new Error("Only a single font is allowed in CFF");this.topDict=this.topDictIndex[0]}return this.isCIDFont=null!=this.topDict.ROS,this},t.prototype.string=function(t){return this.version>=2?null:t<ge.length?ge[t]:this.stringIndex[t-ge.length]},t.prototype.getCharString=function(t){return this.stream.pos=this.topDict.CharStrings[t].offset,this.stream.readBuffer(this.topDict.CharStrings[t].length)},t.prototype.getGlyphName=function(t){if(this.version>=2)return null;if(this.isCIDFont)return null;var e=this.topDict.charset;if(Array.isArray(e))return e[t];if(0===t)return".notdef";switch(t-=1,e.version){case 0:return this.string(e.glyphs[t]);case 1:case 2:for(var n=0;n<e.ranges.length;n++){var r=e.ranges[n];if(r.offset<=t&&t<=r.offset+r.nLeft)return this.string(r.first+(t-r.offset))}}return null},t.prototype.fdForGlyph=function(t){if(!this.topDict.FDSelect)return null;switch(this.topDict.FDSelect.version){case 0:return this.topDict.FDSelect.fds[t];case 3:case 4:for(var e=this.topDict.FDSelect.ranges,n=0,r=e.length-1;n<=r;){var i=n+r>>1;if(t<e[i].first)r=i-1;else{if(!(i<r&&t>e[i+1].first))return e[i].fd;n=i+1}}default:throw new Error("Unknown FDSelect version: "+this.topDict.FDSelect.version)}},t.prototype.privateDictForGlyph=function(t){if(this.topDict.FDSelect){var e=this.fdForGlyph(t);return this.topDict.FDArray[e]?this.topDict.FDArray[e].Private:null}return this.version<2?this.topDict.Private:this.topDict.FDArray[0].Private},ct(t,[{key:"postscriptName",get:function(){return this.version<2?this.nameIndex[0]:null}},{key:"fullName",get:function(){return this.string(this.topDict.FullName)}},{key:"familyName",get:function(){return this.string(this.topDict.FamilyName)}}]),t}(),kn=new nt.Struct({glyphIndex:nt.uint16,vertOriginY:nt.int16}),Sn=new nt.Struct({majorVersion:nt.uint16,minorVersion:nt.uint16,defaultVertOriginY:nt.int16,numVertOriginYMetrics:nt.uint16,metrics:new nt.Array(kn,"numVertOriginYMetrics")}),Cn=new nt.Struct({height:nt.uint8,width:nt.uint8,horiBearingX:nt.int8,horiBearingY:nt.int8,horiAdvance:nt.uint8,vertBearingX:nt.int8,vertBearingY:nt.int8,vertAdvance:nt.uint8}),An=new nt.Struct({height:nt.uint8,width:nt.uint8,bearingX:nt.int8,bearingY:nt.int8,advance:nt.uint8}),Pn=new nt.Struct({glyph:nt.uint16,xOffset:nt.int8,yOffset:nt.int8}),En=function t(){lt(this,t)},In=function t(){lt(this,t)},Tn=(new nt.VersionedStruct("version",{1:{metrics:An,data:En},2:{metrics:An,data:In},5:{data:In},6:{metrics:Cn,data:En},7:{metrics:Cn,data:In},8:{metrics:An,pad:new nt.Reserved(nt.uint8),numComponents:nt.uint16,components:new nt.Array(Pn,"numComponents")},9:{metrics:Cn,pad:new nt.Reserved(nt.uint8),numComponents:nt.uint16,components:new nt.Array(Pn,"numComponents")},17:{metrics:An,dataLen:nt.uint32,data:new nt.Buffer("dataLen")},18:{metrics:Cn,dataLen:nt.uint32,data:new nt.Buffer("dataLen")},19:{dataLen:nt.uint32,data:new nt.Buffer("dataLen")}}),new nt.Struct({ascender:nt.int8,descender:nt.int8,widthMax:nt.uint8,caretSlopeNumerator:nt.int8,caretSlopeDenominator:nt.int8,caretOffset:nt.int8,minOriginSB:nt.int8,minAdvanceSB:nt.int8,maxBeforeBL:nt.int8,minAfterBL:nt.int8,pad:new nt.Reserved(nt.int8,2)})),On=new nt.Struct({glyphCode:nt.uint16,offset:nt.uint16}),Bn=new nt.VersionedStruct(nt.uint16,{header:{imageFormat:nt.uint16,imageDataOffset:nt.uint32},1:{offsetArray:new nt.Array(nt.uint32,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},2:{imageSize:nt.uint32,bigMetrics:Cn},3:{offsetArray:new nt.Array(nt.uint16,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},4:{numGlyphs:nt.uint32,glyphArray:new nt.Array(On,function(t){return t.numGlyphs+1})},5:{imageSize:nt.uint32,bigMetrics:Cn,numGlyphs:nt.uint32,glyphCodeArray:new nt.Array(nt.uint16,"numGlyphs")}}),Ln=new nt.Struct({firstGlyphIndex:nt.uint16,lastGlyphIndex:nt.uint16,subtable:new nt.Pointer(nt.uint32,Bn)}),Mn=new nt.Struct({indexSubTableArray:new nt.Pointer(nt.uint32,new nt.Array(Ln,1),{type:"parent"}),indexTablesSize:nt.uint32,numberOfIndexSubTables:nt.uint32,colorRef:nt.uint32,hori:Tn,vert:Tn,startGlyphIndex:nt.uint16,endGlyphIndex:nt.uint16,ppemX:nt.uint8,ppemY:nt.uint8,bitDepth:nt.uint8,flags:new nt.Bitfield(nt.uint8,["horizontal","vertical"])}),Rn=new nt.Struct({version:nt.uint32,numSizes:nt.uint32,sizes:new nt.Array(Mn,"numSizes")}),Fn=new nt.Struct({ppem:nt.uint16,resolution:nt.uint16,imageOffsets:new nt.Array(new nt.Pointer(nt.uint32,"void"),function(t){return t.parent.parent.maxp.numGlyphs+1})}),zn=new nt.Struct({version:nt.uint16,flags:new nt.Bitfield(nt.uint16,["renderOutlines"]),numImgTables:nt.uint32,imageTables:new nt.Array(new nt.Pointer(nt.uint32,Fn),"numImgTables")}),Dn=new nt.Struct({gid:nt.uint16,paletteIndex:nt.uint16}),Nn=new nt.Struct({gid:nt.uint16,firstLayerIndex:nt.uint16,numLayers:nt.uint16}),Un=new nt.Struct({version:nt.uint16,numBaseGlyphRecords:nt.uint16,baseGlyphRecord:new nt.Pointer(nt.uint32,new nt.Array(Nn,"numBaseGlyphRecords")),layerRecords:new nt.Pointer(nt.uint32,new nt.Array(Dn,"numLayerRecords"),{lazy:!0}),numLayerRecords:nt.uint16}),Wn=new nt.Struct({blue:nt.uint8,green:nt.uint8,red:nt.uint8,alpha:nt.uint8}),jn=new nt.VersionedStruct(nt.uint16,{header:{numPaletteEntries:nt.uint16,numPalettes:nt.uint16,numColorRecords:nt.uint16,colorRecords:new nt.Pointer(nt.uint32,new nt.Array(Wn,"numColorRecords")),colorRecordIndices:new nt.Array(nt.uint16,"numPalettes")},0:{},1:{offsetPaletteTypeArray:new nt.Pointer(nt.uint32,new nt.Array(nt.uint32,"numPalettes")),offsetPaletteLabelArray:new nt.Pointer(nt.uint32,new nt.Array(nt.uint16,"numPalettes")),offsetPaletteEntryLabelArray:new nt.Pointer(nt.uint32,new nt.Array(nt.uint16,"numPaletteEntries"))}}),Gn=new nt.VersionedStruct(nt.uint16,{1:{coordinate:nt.int16},2:{coordinate:nt.int16,referenceGlyph:nt.uint16,baseCoordPoint:nt.uint16},3:{coordinate:nt.int16,deviceTable:new nt.Pointer(nt.uint16,Me)}}),Vn=new nt.Struct({defaultIndex:nt.uint16,baseCoordCount:nt.uint16,baseCoords:new nt.Array(new nt.Pointer(nt.uint16,Gn),"baseCoordCount")}),Hn=new nt.Struct({tag:new nt.String(4),minCoord:new nt.Pointer(nt.uint16,Gn,{type:"parent"}),maxCoord:new nt.Pointer(nt.uint16,Gn,{type:"parent"})}),qn=new nt.Struct({minCoord:new nt.Pointer(nt.uint16,Gn),maxCoord:new nt.Pointer(nt.uint16,Gn),featMinMaxCount:nt.uint16,featMinMaxRecords:new nt.Array(Hn,"featMinMaxCount")}),Zn=new nt.Struct({tag:new nt.String(4),minMax:new nt.Pointer(nt.uint16,qn,{type:"parent"})}),Yn=new nt.Struct({baseValues:new nt.Pointer(nt.uint16,Vn),defaultMinMax:new nt.Pointer(nt.uint16,qn),baseLangSysCount:nt.uint16,baseLangSysRecords:new nt.Array(Zn,"baseLangSysCount")}),Xn=new nt.Struct({tag:new nt.String(4),script:new nt.Pointer(nt.uint16,Yn,{type:"parent"})}),Kn=new nt.Array(Xn,nt.uint16),Jn=new nt.Array(new nt.String(4),nt.uint16),Qn=new nt.Struct({baseTagList:new nt.Pointer(nt.uint16,Jn),baseScriptList:new nt.Pointer(nt.uint16,Kn)}),$n=new nt.VersionedStruct(nt.uint32,{header:{horizAxis:new nt.Pointer(nt.uint16,Qn),vertAxis:new nt.Pointer(nt.uint16,Qn)},65536:{},65537:{itemVariationStore:new nt.Pointer(nt.uint32,Xe)}}),tr=new nt.Array(nt.uint16,nt.uint16),er=new nt.Struct({coverage:new nt.Pointer(nt.uint16,Oe),glyphCount:nt.uint16,attachPoints:new nt.Array(new nt.Pointer(nt.uint16,tr),"glyphCount")}),nr=new nt.VersionedStruct(nt.uint16,{1:{coordinate:nt.int16},2:{caretValuePoint:nt.uint16},3:{coordinate:nt.int16,deviceTable:new nt.Pointer(nt.uint16,Me)}}),rr=new nt.Array(new nt.Pointer(nt.uint16,nr),nt.uint16),ir=new nt.Struct({coverage:new nt.Pointer(nt.uint16,Oe),ligGlyphCount:nt.uint16,ligGlyphs:new nt.Array(new nt.Pointer(nt.uint16,rr),"ligGlyphCount")}),or=new nt.Struct({markSetTableFormat:nt.uint16,markSetCount:nt.uint16,coverage:new nt.Array(new nt.Pointer(nt.uint32,Oe),"markSetCount")}),ar=new nt.VersionedStruct(nt.uint32,{header:{glyphClassDef:new nt.Pointer(nt.uint16,Le),attachList:new nt.Pointer(nt.uint16,er),ligCaretList:new nt.Pointer(nt.uint16,ir),markAttachClassDef:new nt.Pointer(nt.uint16,Le)},65536:{},65538:{markGlyphSetsDef:new nt.Pointer(nt.uint16,or)},65539:{markGlyphSetsDef:new nt.Pointer(nt.uint16,or),itemVariationStore:new nt.Pointer(nt.uint32,Xe)}}),sr=new nt.Bitfield(nt.uint16,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),ur={xPlacement:nt.int16,yPlacement:nt.int16,xAdvance:nt.int16,yAdvance:nt.int16,xPlaDevice:new nt.Pointer(nt.uint16,Me,{type:"global",relativeTo:"rel"}),yPlaDevice:new nt.Pointer(nt.uint16,Me,{type:"global",relativeTo:"rel"}),xAdvDevice:new nt.Pointer(nt.uint16,Me,{type:"global",relativeTo:"rel" }),yAdvDevice:new nt.Pointer(nt.uint16,Me,{type:"global",relativeTo:"rel"})},lr=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"valueFormat";lt(this,t),this.key=e}return t.prototype.buildStruct=function(t){for(var e=t;!e[this.key]&&e.parent;)e=e.parent;if(e[this.key]){var n={};n.rel=function(){return e._startOffset};var r=e[this.key];for(var i in r)r[i]&&(n[i]=ur[i]);return new nt.Struct(n)}},t.prototype.size=function(t,e){return this.buildStruct(e).size(t,e)},t.prototype.decode=function(t,e){var n=this.buildStruct(e).decode(t,e);return delete n.rel,n},t}(),cr=new nt.Struct({secondGlyph:nt.uint16,value1:new lr("valueFormat1"),value2:new lr("valueFormat2")}),fr=new nt.Array(cr,nt.uint16),hr=new nt.Struct({value1:new lr("valueFormat1"),value2:new lr("valueFormat2")}),pr=new nt.VersionedStruct(nt.uint16,{1:{xCoordinate:nt.int16,yCoordinate:nt.int16},2:{xCoordinate:nt.int16,yCoordinate:nt.int16,anchorPoint:nt.uint16},3:{xCoordinate:nt.int16,yCoordinate:nt.int16,xDeviceTable:new nt.Pointer(nt.uint16,Me),yDeviceTable:new nt.Pointer(nt.uint16,Me)}}),dr=new nt.Struct({entryAnchor:new nt.Pointer(nt.uint16,pr,{type:"parent"}),exitAnchor:new nt.Pointer(nt.uint16,pr,{type:"parent"})}),gr=new nt.Struct({class:nt.uint16,markAnchor:new nt.Pointer(nt.uint16,pr,{type:"parent"})}),yr=new nt.Array(gr,nt.uint16),vr=new nt.Array(new nt.Pointer(nt.uint16,pr),function(t){return t.parent.classCount}),br=new nt.Array(vr,nt.uint16),mr=new nt.Array(new nt.Pointer(nt.uint16,pr),function(t){return t.parent.parent.classCount}),wr=new nt.Array(mr,nt.uint16),xr=new nt.Array(new nt.Pointer(nt.uint16,wr),nt.uint16),_r=new nt.VersionedStruct("lookupType",{1:new nt.VersionedStruct(nt.uint16,{1:{coverage:new nt.Pointer(nt.uint16,Oe),valueFormat:sr,value:new lr},2:{coverage:new nt.Pointer(nt.uint16,Oe),valueFormat:sr,valueCount:nt.uint16,values:new nt.LazyArray(new lr,"valueCount")}}),2:new nt.VersionedStruct(nt.uint16,{1:{coverage:new nt.Pointer(nt.uint16,Oe),valueFormat1:sr,valueFormat2:sr,pairSetCount:nt.uint16,pairSets:new nt.LazyArray(new nt.Pointer(nt.uint16,fr),"pairSetCount")},2:{coverage:new nt.Pointer(nt.uint16,Oe),valueFormat1:sr,valueFormat2:sr,classDef1:new nt.Pointer(nt.uint16,Le),classDef2:new nt.Pointer(nt.uint16,Le),class1Count:nt.uint16,class2Count:nt.uint16,classRecords:new nt.LazyArray(new nt.LazyArray(hr,"class2Count"),"class1Count")}}),3:{format:nt.uint16,coverage:new nt.Pointer(nt.uint16,Oe),entryExitCount:nt.uint16,entryExitRecords:new nt.Array(dr,"entryExitCount")},4:{format:nt.uint16,markCoverage:new nt.Pointer(nt.uint16,Oe),baseCoverage:new nt.Pointer(nt.uint16,Oe),classCount:nt.uint16,markArray:new nt.Pointer(nt.uint16,yr),baseArray:new nt.Pointer(nt.uint16,br)},5:{format:nt.uint16,markCoverage:new nt.Pointer(nt.uint16,Oe),ligatureCoverage:new nt.Pointer(nt.uint16,Oe),classCount:nt.uint16,markArray:new nt.Pointer(nt.uint16,yr),ligatureArray:new nt.Pointer(nt.uint16,xr)},6:{format:nt.uint16,mark1Coverage:new nt.Pointer(nt.uint16,Oe),mark2Coverage:new nt.Pointer(nt.uint16,Oe),classCount:nt.uint16,mark1Array:new nt.Pointer(nt.uint16,yr),mark2Array:new nt.Pointer(nt.uint16,br)},7:Ue,8:Ge,9:{posFormat:nt.uint16,lookupType:nt.uint16,extension:new nt.Pointer(nt.uint32,_r)}});_r.versions[9].extension.type=_r;var kr=new nt.VersionedStruct(nt.uint32,{header:{scriptList:new nt.Pointer(nt.uint16,Ce),featureList:new nt.Pointer(nt.uint16,Ee),lookupList:new nt.Pointer(nt.uint16,new s(_r))},65536:{},65537:{featureVariations:new nt.Pointer(nt.uint32,en)}}),Sr=new nt.Array(nt.uint16,nt.uint16),Cr=Sr,Ar=new nt.Struct({glyph:nt.uint16,compCount:nt.uint16,components:new nt.Array(nt.uint16,function(t){return t.compCount-1})}),Pr=new nt.Array(new nt.Pointer(nt.uint16,Ar),nt.uint16),Er=new nt.VersionedStruct("lookupType",{1:new nt.VersionedStruct(nt.uint16,{1:{coverage:new nt.Pointer(nt.uint16,Oe),deltaGlyphID:nt.int16},2:{coverage:new nt.Pointer(nt.uint16,Oe),glyphCount:nt.uint16,substitute:new nt.LazyArray(nt.uint16,"glyphCount")}}),2:{substFormat:nt.uint16,coverage:new nt.Pointer(nt.uint16,Oe),count:nt.uint16,sequences:new nt.LazyArray(new nt.Pointer(nt.uint16,Sr),"count")},3:{substFormat:nt.uint16,coverage:new nt.Pointer(nt.uint16,Oe),count:nt.uint16,alternateSet:new nt.LazyArray(new nt.Pointer(nt.uint16,Cr),"count")},4:{substFormat:nt.uint16,coverage:new nt.Pointer(nt.uint16,Oe),count:nt.uint16,ligatureSets:new nt.LazyArray(new nt.Pointer(nt.uint16,Pr),"count")},5:Ue,6:Ge,7:{substFormat:nt.uint16,lookupType:nt.uint16,extension:new nt.Pointer(nt.uint32,Er)},8:{substFormat:nt.uint16,coverage:new nt.Pointer(nt.uint16,Oe),backtrackCoverage:new nt.Array(new nt.Pointer(nt.uint16,Oe),"backtrackGlyphCount"),lookaheadGlyphCount:nt.uint16,lookaheadCoverage:new nt.Array(new nt.Pointer(nt.uint16,Oe),"lookaheadGlyphCount"),glyphCount:nt.uint16,substitutes:new nt.Array(nt.uint16,"glyphCount")}});Er.versions[7].extension.type=Er;var Ir=new nt.VersionedStruct(nt.uint32,{header:{scriptList:new nt.Pointer(nt.uint16,Ce),featureList:new nt.Pointer(nt.uint16,Ee),lookupList:new nt.Pointer(nt.uint16,new s(Er))},65536:{},65537:{featureVariations:new nt.Pointer(nt.uint32,en)}}),Tr=new nt.Array(nt.uint16,nt.uint16),Or=new nt.Struct({shrinkageEnableGSUB:new nt.Pointer(nt.uint16,Tr),shrinkageDisableGSUB:new nt.Pointer(nt.uint16,Tr),shrinkageEnableGPOS:new nt.Pointer(nt.uint16,Tr),shrinkageDisableGPOS:new nt.Pointer(nt.uint16,Tr),shrinkageJstfMax:new nt.Pointer(nt.uint16,new s(_r)),extensionEnableGSUB:new nt.Pointer(nt.uint16,Tr),extensionDisableGSUB:new nt.Pointer(nt.uint16,Tr),extensionEnableGPOS:new nt.Pointer(nt.uint16,Tr),extensionDisableGPOS:new nt.Pointer(nt.uint16,Tr),extensionJstfMax:new nt.Pointer(nt.uint16,new s(_r))}),Br=new nt.Array(new nt.Pointer(nt.uint16,Or),nt.uint16),Lr=new nt.Struct({tag:new nt.String(4),jstfLangSys:new nt.Pointer(nt.uint16,Br)}),Mr=new nt.Struct({extenderGlyphs:new nt.Pointer(nt.uint16,new nt.Array(nt.uint16,nt.uint16)),defaultLangSys:new nt.Pointer(nt.uint16,Br),langSysCount:nt.uint16,langSysRecords:new nt.Array(Lr,"langSysCount")}),Rr=new nt.Struct({tag:new nt.String(4),script:new nt.Pointer(nt.uint16,Mr,{type:"parent"})}),Fr=new nt.Struct({version:nt.uint32,scriptCount:nt.uint16,scriptList:new nt.Array(Rr,"scriptCount")}),zr=function(){function t(e){lt(this,t),this._size=e}return t.prototype.decode=function(t,e){switch(this.size(0,e)){case 1:return t.readUInt8();case 2:return t.readUInt16BE();case 3:return t.readUInt24BE();case 4:return t.readUInt32BE()}},t.prototype.size=function(t,e){return dt.resolveLength(this._size,null,e)},t}(),Dr=new nt.Struct({entry:new zr(function(t){return 1+((48&t.parent.entryFormat)>>4)}),outerIndex:function(t){return t.entry>>1+(15&t.parent.entryFormat)},innerIndex:function(t){return t.entry&(1<<1+(15&t.parent.entryFormat))-1}}),Nr=new nt.Struct({entryFormat:nt.uint16,mapCount:nt.uint16,mapData:new nt.Array(Dr,"mapCount")}),Ur=new nt.Struct({majorVersion:nt.uint16,minorVersion:nt.uint16,itemVariationStore:new nt.Pointer(nt.uint32,Xe),advanceWidthMapping:new nt.Pointer(nt.uint32,Nr),LSBMapping:new nt.Pointer(nt.uint32,Nr),RSBMapping:new nt.Pointer(nt.uint32,Nr)}),Wr=new nt.Struct({format:nt.uint32,length:nt.uint32,offset:nt.uint32}),jr=new nt.Struct({reserved:new nt.Reserved(nt.uint16,2),cbSignature:nt.uint32,signature:new nt.Buffer("cbSignature")}),Gr=new nt.Struct({ulVersion:nt.uint32,usNumSigs:nt.uint16,usFlag:nt.uint16,signatures:new nt.Array(Wr,"usNumSigs"),signatureBlocks:new nt.Array(jr,"usNumSigs")}),Vr=new nt.Struct({rangeMaxPPEM:nt.uint16,rangeGaspBehavior:new nt.Bitfield(nt.uint16,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),Hr=new nt.Struct({version:nt.uint16,numRanges:nt.uint16,gaspRanges:new nt.Array(Vr,"numRanges")}),qr=new nt.Struct({pixelSize:nt.uint8,maximumWidth:nt.uint8,widths:new nt.Array(nt.uint8,function(t){return t.parent.parent.maxp.numGlyphs})}),Zr=new nt.Struct({version:nt.uint16,numRecords:nt.int16,sizeDeviceRecord:nt.int32,records:new nt.Array(qr,"numRecords")}),Yr=new nt.Struct({left:nt.uint16,right:nt.uint16,value:nt.int16}),Xr=new nt.Struct({firstGlyph:nt.uint16,nGlyphs:nt.uint16,offsets:new nt.Array(nt.uint16,"nGlyphs"),max:function(t){return t.offsets.length&&Math.max.apply(Math,t.offsets)}}),Kr=new nt.Struct({off:function(t){return t._startOffset-t.parent.parent._startOffset},len:function(t){return((t.parent.leftTable.max-t.off)/t.parent.rowWidth+1)*(t.parent.rowWidth/2)},values:new nt.LazyArray(nt.int16,"len")}),Jr=new nt.VersionedStruct("format",{0:{nPairs:nt.uint16,searchRange:nt.uint16,entrySelector:nt.uint16,rangeShift:nt.uint16,pairs:new nt.Array(Yr,"nPairs")},2:{rowWidth:nt.uint16,leftTable:new nt.Pointer(nt.uint16,Xr,{type:"parent"}),rightTable:new nt.Pointer(nt.uint16,Xr,{type:"parent"}),array:new nt.Pointer(nt.uint16,Kr,{type:"parent"})},3:{glyphCount:nt.uint16,kernValueCount:nt.uint8,leftClassCount:nt.uint8,rightClassCount:nt.uint8,flags:nt.uint8,kernValue:new nt.Array(nt.int16,"kernValueCount"),leftClass:new nt.Array(nt.uint8,"glyphCount"),rightClass:new nt.Array(nt.uint8,"glyphCount"),kernIndex:new nt.Array(nt.uint8,function(t){return t.leftClassCount*t.rightClassCount})}}),Qr=new nt.VersionedStruct("version",{0:{subVersion:nt.uint16,length:nt.uint16,format:nt.uint8,coverage:new nt.Bitfield(nt.uint8,["horizontal","minimum","crossStream","override"]),subtable:Jr,padding:new nt.Reserved(nt.uint8,function(t){return t.length-t._currentOffset})},1:{length:nt.uint32,coverage:new nt.Bitfield(nt.uint8,[null,null,null,null,null,"variation","crossStream","vertical"]),format:nt.uint8,tupleIndex:nt.uint16,subtable:Jr,padding:new nt.Reserved(nt.uint8,function(t){return t.length-t._currentOffset})}}),$r=new nt.VersionedStruct(nt.uint16,{0:{nTables:nt.uint16,tables:new nt.Array(Qr,"nTables")},1:{reserved:new nt.Reserved(nt.uint16),nTables:nt.uint32,tables:new nt.Array(Qr,"nTables")}}),ti=new nt.Struct({version:nt.uint16,numGlyphs:nt.uint16,yPels:new nt.Array(nt.uint8,"numGlyphs")}),ei=new nt.Struct({version:nt.uint16,fontNumber:nt.uint32,pitch:nt.uint16,xHeight:nt.uint16,style:nt.uint16,typeFamily:nt.uint16,capHeight:nt.uint16,symbolSet:nt.uint16,typeface:new nt.String(16),characterComplement:new nt.String(8),fileName:new nt.String(6),strokeWeight:new nt.String(1),widthType:new nt.String(1),serifStyle:nt.uint8,reserved:new nt.Reserved(nt.uint8)}),ni=new nt.Struct({bCharSet:nt.uint8,xRatio:nt.uint8,yStartRatio:nt.uint8,yEndRatio:nt.uint8}),ri=new nt.Struct({yPelHeight:nt.uint16,yMax:nt.int16,yMin:nt.int16}),ii=new nt.Struct({recs:nt.uint16,startsz:nt.uint8,endsz:nt.uint8,entries:new nt.Array(ri,"recs")}),oi=new nt.Struct({version:nt.uint16,numRecs:nt.uint16,numRatios:nt.uint16,ratioRanges:new nt.Array(ni,"numRatios"),offsets:new nt.Array(nt.uint16,"numRatios"),groups:new nt.Array(ii,"numRecs")}),ai=new nt.Struct({version:nt.uint16,ascent:nt.int16,descent:nt.int16,lineGap:nt.int16,advanceHeightMax:nt.int16,minTopSideBearing:nt.int16,minBottomSideBearing:nt.int16,yMaxExtent:nt.int16,caretSlopeRise:nt.int16,caretSlopeRun:nt.int16,caretOffset:nt.int16,reserved:new nt.Reserved(nt.int16,4),metricDataFormat:nt.int16,numberOfMetrics:nt.uint16}),si=new nt.Struct({advance:nt.uint16,bearing:nt.int16}),ui=new nt.Struct({metrics:new nt.LazyArray(si,function(t){return t.parent.vhea.numberOfMetrics}),bearings:new nt.LazyArray(nt.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.vhea.numberOfMetrics})}),li=new nt.Fixed(16,"BE",14),ci=new nt.Struct({fromCoord:li,toCoord:li}),fi=new nt.Struct({pairCount:nt.uint16,correspondence:new nt.Array(ci,"pairCount")}),hi=new nt.Struct({version:nt.fixed32,axisCount:nt.uint32,segment:new nt.Array(fi,"axisCount")}),pi=function(){function t(e,n,r){lt(this,t),this.type=e,this.stream=n,this.parent=r,this.base=this.stream.pos,this._items=[]}return t.prototype.getItem=function(t){if(null==this._items[t]){var e=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*t,this._items[t]=this.type.decode(this.stream,this.parent),this.stream.pos=e}return this._items[t]},t.prototype.inspect=function(){return"[UnboundedArray "+this.type.constructor.name+"]"},t}(),di=function(t){function e(n){return lt(this,e),ht(this,t.call(this,n,0))}return pt(e,t),e.prototype.decode=function(t,e){return new pi(this.type,t,e)},e}(nt.Array),gi=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:nt.uint16;t=new(function(){function t(e){lt(this,t),this.type=e}return t.prototype.decode=function(t,e){return e=e.parent.parent,this.type.decode(t,e)},t.prototype.size=function(t,e){return e=e.parent.parent,this.type.size(t,e)},t.prototype.encode=function(t,e,n){return n=n.parent.parent,this.type.encode(t,e,n)},t}())(t);var e=new nt.Struct({unitSize:nt.uint16,nUnits:nt.uint16,searchRange:nt.uint16,entrySelector:nt.uint16,rangeShift:nt.uint16}),n=new nt.Struct({lastGlyph:nt.uint16,firstGlyph:nt.uint16,value:t}),r=new nt.Struct({lastGlyph:nt.uint16,firstGlyph:nt.uint16,values:new nt.Pointer(nt.uint16,new nt.Array(t,function(t){return t.lastGlyph-t.firstGlyph+1}),{type:"parent"})}),i=new nt.Struct({glyph:nt.uint16,value:t});return new nt.VersionedStruct(nt.uint16,{0:{values:new di(t)},2:{binarySearchHeader:e,segments:new nt.Array(n,function(t){return t.binarySearchHeader.nUnits})},4:{binarySearchHeader:e,segments:new nt.Array(r,function(t){return t.binarySearchHeader.nUnits})},6:{binarySearchHeader:e,segments:new nt.Array(i,function(t){return t.binarySearchHeader.nUnits})},8:{firstGlyph:nt.uint16,count:nt.uint16,values:new nt.Array(t,"count")}})},yi=new nt.VersionedStruct("format",{0:{deltas:new nt.Array(nt.int16,32)},1:{deltas:new nt.Array(nt.int16,32),mappingData:new gi(nt.uint16)},2:{standardGlyph:nt.uint16,controlPoints:new nt.Array(nt.uint16,32)},3:{standardGlyph:nt.uint16,controlPoints:new nt.Array(nt.uint16,32),mappingData:new gi(nt.uint16)}}),vi=new nt.Struct({version:nt.fixed32,format:nt.uint16,defaultBaseline:nt.uint16,subtable:yi}),bi=new nt.Struct({setting:nt.uint16,nameIndex:nt.int16,name:function(t){return t.parent.parent.parent.name.records.fontFeatures[t.nameIndex]}}),mi=new nt.Struct({feature:nt.uint16,nSettings:nt.uint16,settingTable:new nt.Pointer(nt.uint32,new nt.Array(bi,"nSettings"),{type:"parent"}),featureFlags:new nt.Bitfield(nt.uint8,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:nt.uint8,nameIndex:nt.int16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameIndex]}}),wi=new nt.Struct({version:nt.fixed32,featureNameCount:nt.uint16,reserved1:new nt.Reserved(nt.uint16),reserved2:new nt.Reserved(nt.uint32),featureNames:new nt.Array(mi,"featureNameCount")}),xi=new nt.Struct({axisTag:new nt.String(4),minValue:nt.fixed32,defaultValue:nt.fixed32,maxValue:nt.fixed32,flags:nt.uint16,nameID:nt.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]}}),_i=new nt.Struct({nameID:nt.uint16,name:function(t){return t.parent.parent.name.records.fontFeatures[t.nameID]},flags:nt.uint16,coord:new nt.Array(nt.fixed32,function(t){return t.parent.axisCount}),postscriptNameID:new nt.Optional(nt.uint16,function(t){return t.parent.instanceSize-t._currentOffset>0})}),ki=new nt.Struct({version:nt.fixed32,offsetToData:nt.uint16,countSizePairs:nt.uint16,axisCount:nt.uint16,axisSize:nt.uint16,instanceCount:nt.uint16,instanceSize:nt.uint16,axis:new nt.Array(xi,"axisCount"),instance:new nt.Array(_i,"instanceCount")}),Si=new nt.Fixed(16,"BE",14),Ci=function(){function t(){lt(this,t)}return t.decode=function(t,e){return e.flags?t.readUInt32BE():2*t.readUInt16BE()},t}(),Ai=new nt.Struct({version:nt.uint16,reserved:new nt.Reserved(nt.uint16),axisCount:nt.uint16,globalCoordCount:nt.uint16,globalCoords:new nt.Pointer(nt.uint32,new nt.Array(new nt.Array(Si,"axisCount"),"globalCoordCount")),glyphCount:nt.uint16,flags:nt.uint16,offsetToData:nt.uint32,offsets:new nt.Array(new nt.Pointer(Ci,"void",{relativeTo:"offsetToData",allowNull:!1}),function(t){return t.glyphCount+1})}),Pi=new nt.Struct({length:nt.uint16,coverage:nt.uint16,subFeatureFlags:nt.uint32,stateTable:new l}),Ei=new nt.Struct({justClass:nt.uint32,beforeGrowLimit:nt.fixed32,beforeShrinkLimit:nt.fixed32,afterGrowLimit:nt.fixed32,afterShrinkLimit:nt.fixed32,growFlags:nt.uint16,shrinkFlags:nt.uint16}),Ii=new nt.Array(Ei,nt.uint32),Ti=new nt.VersionedStruct("actionType",{0:{lowerLimit:nt.fixed32,upperLimit:nt.fixed32,order:nt.uint16,glyphs:new nt.Array(nt.uint16,nt.uint16)},1:{addGlyph:nt.uint16},2:{substThreshold:nt.fixed32,addGlyph:nt.uint16,substGlyph:nt.uint16},3:{},4:{variationAxis:nt.uint32,minimumLimit:nt.fixed32,noStretchValue:nt.fixed32,maximumLimit:nt.fixed32},5:{flags:nt.uint16,glyph:nt.uint16}}),Oi=new nt.Struct({actionClass:nt.uint16,actionType:nt.uint16,actionLength:nt.uint32,actionData:Ti,padding:new nt.Reserved(nt.uint8,function(t){return t.actionLength-t._currentOffset})}),Bi=new nt.Array(Oi,nt.uint32),Li=new nt.Struct({lookupTable:new gi(new nt.Pointer(nt.uint16,Bi))}),Mi=new nt.Struct({classTable:new nt.Pointer(nt.uint16,Pi,{type:"parent"}),wdcOffset:nt.uint16,postCompensationTable:new nt.Pointer(nt.uint16,Li,{type:"parent"}),widthDeltaClusters:new gi(new nt.Pointer(nt.uint16,Ii,{type:"parent",relativeTo:"wdcOffset"}))}),Ri=new nt.Struct({version:nt.uint32,format:nt.uint16,horizontal:new nt.Pointer(nt.uint16,Mi),vertical:new nt.Pointer(nt.uint16,Mi)}),Fi={action:nt.uint16},zi={markIndex:nt.uint16,currentIndex:nt.uint16},Di={currentInsertIndex:nt.uint16,markedInsertIndex:nt.uint16},Ni=new nt.Struct({items:new di(new nt.Pointer(nt.uint32,new gi))}),Ui=new nt.VersionedStruct("type",{0:{stateTable:new u},1:{stateTable:new u(zi),substitutionTable:new nt.Pointer(nt.uint32,Ni)},2:{stateTable:new u(Fi),ligatureActions:new nt.Pointer(nt.uint32,new di(nt.uint32)),components:new nt.Pointer(nt.uint32,new di(nt.uint16)),ligatureList:new nt.Pointer(nt.uint32,new di(nt.uint16))},4:{lookupTable:new gi},5:{stateTable:new u(Di),insertionActions:new nt.Pointer(nt.uint32,new di(nt.uint16))}}),Wi=new nt.Struct({length:nt.uint32,coverage:nt.uint24,type:nt.uint8,subFeatureFlags:nt.uint32,table:Ui,padding:new nt.Reserved(nt.uint8,function(t){return t.length-t._currentOffset})}),ji=new nt.Struct({featureType:nt.uint16,featureSetting:nt.uint16,enableFlags:nt.uint32,disableFlags:nt.uint32}),Gi=new nt.Struct({defaultFlags:nt.uint32,chainLength:nt.uint32,nFeatureEntries:nt.uint32,nSubtables:nt.uint32,features:new nt.Array(ji,"nFeatureEntries"),subtables:new nt.Array(Wi,"nSubtables")}),Vi=new nt.Struct({version:nt.uint16,unused:new nt.Reserved(nt.uint16),nChains:nt.uint32,chains:new nt.Array(Gi,"nChains")}),Hi=new nt.Struct({left:nt.int16,top:nt.int16,right:nt.int16,bottom:nt.int16}),qi=new nt.Struct({version:nt.fixed32,format:nt.uint16,lookupTable:new gi(Hi)}),Zi={};Zi.cmap=Nt,Zi.head=Ut,Zi.hhea=Wt,Zi.hmtx=Gt,Zi.maxp=Vt,Zi.name=NameTable,Zi["OS/2"]=Jt,Zi.post=$t,Zi.fpgm=ee,Zi.loca=ne,Zi.prep=ie,Zi["cvt "]=te,Zi.glyf=oe,Zi["CFF "]=_n,Zi.CFF2=_n,Zi.VORG=Sn,Zi.EBLC=Rn,Zi.CBLC=Zi.EBLC,Zi.sbix=zn,Zi.COLR=Un,Zi.CPAL=jn,Zi.BASE=$n,Zi.GDEF=ar,Zi.GPOS=kr,Zi.GSUB=Ir,Zi.JSTF=Fr,Zi.HVAR=Ur,Zi.DSIG=Gr,Zi.gasp=Hr,Zi.hdmx=Zr,Zi.kern=$r,Zi.LTSH=ti,Zi.PCLT=ei,Zi.VDMX=oi,Zi.vhea=ai,Zi.vmtx=ui,Zi.avar=hi,Zi.bsln=vi,Zi.feat=wi,Zi.fvar=ki,Zi.gvar=Ai,Zi.just=Ri,Zi.morx=Vi,Zi.opbd=qi;var Yi=new nt.Struct({tag:new nt.String(4),checkSum:nt.uint32,offset:new nt.Pointer(nt.uint32,"void",{type:"global"}),length:nt.uint32}),Xi=new nt.Struct({tag:new nt.String(4),numTables:nt.uint16,searchRange:nt.uint16,entrySelector:nt.uint16,rangeShift:nt.uint16,tables:new nt.Array(Yi,"numTables")});Xi.process=function(){for(var t={},e=this.tables,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;t[o.tag]=o}this.tables=t},Xi.preEncode=function(t){var e=[];for(var n in this.tables){var r=this.tables[n];r&&e.push({tag:n,checkSum:0,offset:new nt.VoidPointer(Zi[n],r),length:Zi[n].size(r)})}this.tag="true",this.numTables=e.length,this.tables=e,this.searchRange=16*Math.floor(Math.log(this.numTables)/Math.LN2),this.entrySelector=Math.floor(this.searchRange/Math.LN2),this.rangeShift=16*this.numTables-this.searchRange};var Ki;try{var Ji=n(87)}catch(t){}var Qi=(Ki=function(){function t(e){if(lt(this,t),this.encoding=null,this.cmap=this.findSubtable(e,[[3,10],[0,6],[0,4],[3,1],[0,3],[0,2],[0,1],[0,0]]),!this.cmap&&Ji)for(var n=e.tables,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o,u=a(s.platformID,s.encodingID,s.table.language-1);Ji.encodingExists(u)&&(this.cmap=s.table,this.encoding=u)}if(!this.cmap)throw new Error("Could not find a supported cmap table");this.uvs=this.findSubtable(e,[[0,5]]),this.uvs&&14!==this.uvs.version&&(this.uvs=null)}return t.prototype.findSubtable=function(t,e){for(var n=e,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}for(var a=o,s=a[0],u=a[1],l=t.tables,c=Array.isArray(l),f=0,l=c?l:it(l);;){var h;if(c){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var p=h;if(p.platformID===s&&p.encodingID===u)return p.table}}return null},t.prototype.lookup=function(t,e){if(this.encoding){var n=Ji.encode(bt(t),this.encoding);t=0;for(var r=0;r<n.length;r++)t=t<<8|n[r]}else if(e){var i=this.getVariationSelector(t,e);if(i)return i}var o=this.cmap;switch(o.version){case 0:return o.codeMap.get(t)||0;case 4:for(var a=0,s=o.segCount-1;a<=s;){var u=a+s>>1;if(t<o.startCode.get(u))s=u-1;else{if(!(t>o.endCode.get(u))){var l=o.idRangeOffset.get(u),c=void 0;if(0===l)c=t+o.idDelta.get(u);else{var f=l/2+(t-o.startCode.get(u))-(o.segCount-u);c=o.glyphIndexArray.get(f)||0,0!==c&&(c+=o.idDelta.get(u))}return 65535&c}a=u+1}}return 0;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return o.glyphIndices.get(t-o.firstCode)||0;case 12:case 13:for(var h=0,p=o.nGroups-1;h<=p;){var d=h+p>>1,g=o.groups.get(d);if(t<g.startCharCode)p=d-1;else{if(!(t>g.endCharCode))return 12===o.version?g.glyphID+(t-g.startCharCode):g.glyphID;h=d+1}}return 0;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+o.version)}},t.prototype.getVariationSelector=function(t,e){if(!this.uvs)return 0;var n=this.uvs.varSelectors.toArray(),r=c(n,function(t){return e-t.varSelector}),i=n[r];return-1!==r&&i.defaultUVS&&(r=c(i.defaultUVS,function(e){return t<e.startUnicodeValue?-1:t>e.startUnicodeValue+e.additionalCount?1:0})),-1!==r&&i.nonDefaultUVS&&-1!==(r=c(i.nonDefaultUVS,function(e){return t-e.unicodeValue}))?i.nonDefaultUVS[r].glyphID:0},t.prototype.getCharacterSet=function(){var t=this.cmap;switch(t.version){case 0:return f(0,t.codeMap.length);case 4:for(var e=[],n=t.endCode.toArray(),r=0;r<n.length;r++){var i=n[r]+1,o=t.startCode.get(r);e.push.apply(e,f(o,i))}return e;case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return f(t.firstCode,t.firstCode+t.glyphIndices.length);case 12:case 13:for(var a=[],s=t.groups.toArray(),u=Array.isArray(s),l=0,s=u?s:it(s);;){var c;if(u){if(l>=s.length)break;c=s[l++]}else{if(l=s.next(),l.done)break;c=l.value}var h=c;a.push.apply(a,f(h.startCharCode,h.endCharCode+1))}return a;case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+t.version)}},t.prototype.codePointsForGlyph=function(t){var e=this.cmap;switch(e.version){case 0:for(var n=[],r=0;r<256;r++)e.codeMap.get(r)===t&&n.push(r);return n;case 4:for(var i=[],o=0;o<e.segCount;o++)for(var a=e.endCode.get(o),s=e.startCode.get(o),u=e.idRangeOffset.get(o),l=e.idDelta.get(o),c=s;c<=a;c++){var h=0;if(0===u)h=c+l;else{var p=u/2+(c-s)-(e.segCount-o);h=e.glyphIndexArray.get(p)||0,0!==h&&(h+=l)}h===t&&i.push(c)}return i;case 12:for(var d=[],g=e.groups.toArray(),y=Array.isArray(g),v=0,g=y?g:it(g);;){var b;if(y){if(v>=g.length)break;b=g[v++]}else{if(v=g.next(),v.done)break;b=v.value}var m=b;t>=m.glyphID&&t<=m.glyphID+(m.endCharCode-m.startCharCode)&&d.push(m.startCharCode+(t-m.glyphID))}return d;case 13:for(var w=[],x=e.groups.toArray(),_=Array.isArray(x),k=0,x=_?x:it(x);;){var S;if(_){if(k>=x.length)break;S=x[k++]}else{if(k=x.next(),k.done)break;S=k.value}var C=S;t===C.glyphID&&w.push.apply(w,f(C.startCharCode,C.endCharCode+1))}return w;default:throw new Error("Unknown cmap format "+e.version)}},t}(),h(Ki.prototype,"getCharacterSet",[o],rt(Ki.prototype,"getCharacterSet"),Ki.prototype),h(Ki.prototype,"codePointsForGlyph",[o],rt(Ki.prototype,"codePointsForGlyph"),Ki.prototype),Ki),$i=function(){function t(e){lt(this,t),this.kern=e.kern}return t.prototype.process=function(t,e){for(var n=0;n<t.length-1;n++){var r=t[n].id,i=t[n+1].id;e[n].xAdvance+=this.getKerning(r,i)}},t.prototype.getKerning=function(t,e){for(var n=0,r=this.kern.tables,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(!s.coverage.crossStream){switch(s.version){case 0:if(!s.coverage.horizontal)continue;break;case 1:if(s.coverage.vertical||s.coverage.variation)continue;break;default:throw new Error("Unsupported kerning table version "+s.version)}var u=0,l=s.subtable;switch(s.format){case 0:var f=c(l.pairs,function(n){return t-n.left||e-n.right});f>=0&&(u=l.pairs[f].value);break;case 2:var h=0,p=0;h=t>=l.leftTable.firstGlyph&&t<l.leftTable.firstGlyph+l.leftTable.nGlyphs?l.leftTable.offsets[t-l.leftTable.firstGlyph]:l.array.off,e>=l.rightTable.firstGlyph&&e<l.rightTable.firstGlyph+l.rightTable.nGlyphs&&(p=l.rightTable.offsets[e-l.rightTable.firstGlyph]);var d=(h+p-l.array.off)/2;u=l.array.values.get(d);break;case 3:if(t>=l.glyphCount||e>=l.glyphCount)return 0;u=l.kernValue[l.kernIndex[l.leftClass[t]*l.rightClassCount+l.rightClass[e]]];break;default:throw new Error("Unsupported kerning sub-table format "+s.format)}s.coverage.override?n=u:n+=u}}return n},t}(),to=function(){function t(e){lt(this,t),this.font=e}return t.prototype.positionGlyphs=function(t,e){for(var n=0,r=0,i=0;i<t.length;i++){t[i].isMark?r=i:(n!==r&&this.positionCluster(t,e,n,r),n=r=i)}return n!==r&&this.positionCluster(t,e,n,r),e},t.prototype.positionCluster=function(t,e,n,r){var i=t[n],o=i.cbox.copy();i.codePoints.length>1&&(o.minX+=(i.codePoints.length-1)*o.width/i.codePoints.length);for(var a=-e[n].xAdvance,s=0,u=this.font.unitsPerEm/16,l=n+1;l<=r;l++){var c=t[l],f=c.cbox,h=e[l],p=this.getCombiningClass(c.codePoints[0]);if("Not_Reordered"!==p){switch(h.xOffset=h.yOffset=0,p){case"Double_Above":case"Double_Below":h.xOffset+=o.minX-f.width/2-f.minX;break;case"Attached_Below_Left":case"Below_Left":case"Above_Left":h.xOffset+=o.minX-f.minX;break;case"Attached_Above_Right":case"Below_Right":case"Above_Right":h.xOffset+=o.maxX-f.width-f.minX;break;default:h.xOffset+=o.minX+(o.width-f.width)/2-f.minX}switch(p){case"Double_Below":case"Below_Left":case"Below":case"Below_Right":case"Attached_Below_Left":case"Attached_Below":"Attached_Below_Left"!==p&&"Attached_Below"!==p||(o.minY+=u),h.yOffset=-o.minY-f.maxY,o.minY+=f.height;break;case"Double_Above":case"Above_Left":case"Above":case"Above_Right":case"Attached_Above":case"Attached_Above_Right":"Attached_Above"!==p&&"Attached_Above_Right"!==p||(o.maxY+=u),h.yOffset=o.maxY-f.minY,o.maxY+=f.height}h.xAdvance=h.yAdvance=0,h.xOffset+=a,h.yOffset+=s}else a-=h.xAdvance,s-=h.yAdvance}},t.prototype.getCombiningClass=function(t){var e=xt.getCombiningClass(t);if(3584==(-256&t))if("Not_Reordered"===e)switch(t){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return"Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return"Above";case 3772:return"Below"}else if(3642===t)return"Below_Right";switch(e){case"CCC10":case"CCC11":case"CCC12":case"CCC13":case"CCC14":case"CCC15":case"CCC16":case"CCC17":case"CCC18":case"CCC20":case"CCC22":return"Below";case"CCC23":return"Attached_Above";case"CCC24":return"Above_Right";case"CCC25":case"CCC19":return"Above_Left";case"CCC26":return"Above";case"CCC21":break;case"CCC27":case"CCC28":case"CCC30":case"CCC31":case"CCC33":case"CCC34":case"CCC35":case"CCC36":return"Above";case"CCC29":case"CCC32":return"Below";case"CCC103":return"Below_Right";case"CCC107":return"Above_Right";case"CCC118":return"Below";case"CCC122":return"Above";case"CCC129":case"CCC132":return"Below";case"CCC130":return"Above"}return e},t}(),eo=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1/0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1/0;lt(this,t),this.minX=e,this.minY=n,this.maxX=r,this.maxY=i}return t.prototype.addPoint=function(t,e){Math.abs(t)!==1/0&&(t<this.minX&&(this.minX=t),t>this.maxX&&(this.maxX=t)),Math.abs(e)!==1/0&&(e<this.minY&&(this.minY=e),e>this.maxY&&(this.maxY=e))},t.prototype.copy=function(){return new t(this.minX,this.minY,this.maxX,this.maxY)},ct(t,[{key:"width",get:function(){return this.maxX-this.minX}},{key:"height",get:function(){return this.maxY-this.minY}}]),t}(),no={Caucasian_Albanian:"aghb",Arabic:"arab",Imperial_Aramaic:"armi",Armenian:"armn",Avestan:"avst",Balinese:"bali",Bamum:"bamu",Bassa_Vah:"bass",Batak:"batk",Bengali:["bng2","beng"],Bopomofo:"bopo",Brahmi:"brah",Braille:"brai",Buginese:"bugi",Buhid:"buhd",Chakma:"cakm",Canadian_Aboriginal:"cans",Carian:"cari",Cham:"cham",Cherokee:"cher",Coptic:"copt",Cypriot:"cprt",Cyrillic:"cyrl",Devanagari:["dev2","deva"],Deseret:"dsrt",Duployan:"dupl",Egyptian_Hieroglyphs:"egyp",Elbasan:"elba",Ethiopic:"ethi",Georgian:"geor",Glagolitic:"glag",Gothic:"goth",Grantha:"gran",Greek:"grek",Gujarati:["gjr2","gujr"],Gurmukhi:["gur2","guru"],Hangul:"hang",Han:"hani",Hanunoo:"hano",Hebrew:"hebr",Hiragana:"hira",Pahawh_Hmong:"hmng",Katakana_Or_Hiragana:"hrkt",Old_Italic:"ital",Javanese:"java",Kayah_Li:"kali",Katakana:"kana",Kharoshthi:"khar",Khmer:"khmr",Khojki:"khoj",Kannada:["knd2","knda"],Kaithi:"kthi",Tai_Tham:"lana",Lao:"lao ",Latin:"latn",Lepcha:"lepc",Limbu:"limb",Linear_A:"lina",Linear_B:"linb",Lisu:"lisu",Lycian:"lyci",Lydian:"lydi",Mahajani:"mahj",Mandaic:"mand",Manichaean:"mani",Mende_Kikakui:"mend",Meroitic_Cursive:"merc",Meroitic_Hieroglyphs:"mero",Malayalam:["mlm2","mlym"],Modi:"modi",Mongolian:"mong",Mro:"mroo",Meetei_Mayek:"mtei",Myanmar:["mym2","mymr"],Old_North_Arabian:"narb",Nabataean:"nbat",Nko:"nko ",Ogham:"ogam",Ol_Chiki:"olck",Old_Turkic:"orkh",Oriya:["ory2","orya"],Osmanya:"osma",Palmyrene:"palm",Pau_Cin_Hau:"pauc",Old_Permic:"perm",Phags_Pa:"phag",Inscriptional_Pahlavi:"phli",Psalter_Pahlavi:"phlp",Phoenician:"phnx",Miao:"plrd",Inscriptional_Parthian:"prti",Rejang:"rjng",Runic:"runr",Samaritan:"samr",Old_South_Arabian:"sarb",Saurashtra:"saur",Shavian:"shaw",Sharada:"shrd",Siddham:"sidd",Khudawadi:"sind",Sinhala:"sinh",Sora_Sompeng:"sora",Sundanese:"sund",Syloti_Nagri:"sylo",Syriac:"syrc",Tagbanwa:"tagb",Takri:"takr",Tai_Le:"tale",New_Tai_Lue:"talu",Tamil:["tml2","taml"],Tai_Viet:"tavt",Telugu:["tel2","telu"],Tifinagh:"tfng",Tagalog:"tglg",Thaana:"thaa",Thai:"thai",Tibetan:"tibt",Tirhuta:"tirh",Ugaritic:"ugar",Vai:"vai ",Warang_Citi:"wara",Old_Persian:"xpeo",Cuneiform:"xsux",Yi:"yi ",Inherited:"zinh",Common:"zyyy",Unknown:"zzzz"},ro={};for(var io in no){var oo=no[io];if(Array.isArray(oo))for(var ao=oo,so=Array.isArray(ao),uo=0,ao=so?ao:it(ao);;){var lo;if(so){if(uo>=ao.length)break;lo=ao[uo++]}else{if(uo=ao.next(),uo.done)break;lo=uo.value}var co=lo;ro[co]=io}else ro[oo]=io}for(var fo={arab:!0,hebr:!0,syrc:!0,thaa:!0,cprt:!0,khar:!0,phnx:!0,"nko ":!0,lydi:!0,avst:!0,armi:!0,phli:!0,prti:!0,sarb:!0,orkh:!0,samr:!0,mand:!0,merc:!0,mero:!0,mani:!0,mend:!0,nbat:!0,narb:!0,palm:!0,phlp:!0},ho=function(){function t(e,n,r,i,o){if(lt(this,t),this.glyphs=e,this.positions=null,this.script=r,this.language=i||null,this.direction=o||y(r),this.features={},Array.isArray(n))for(var a=n,s=Array.isArray(a),u=0,a=s?a:it(a);;){var l;if(s){ if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;this.features[c]=!0}else"object"===(void 0===n?"undefined":st(n))&&(this.features=n)}return ct(t,[{key:"advanceWidth",get:function(){for(var t=0,e=this.positions,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}t+=i.xAdvance}return t}},{key:"advanceHeight",get:function(){for(var t=0,e=this.positions,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}t+=i.yAdvance}return t}},{key:"bbox",get:function(){for(var t=new eo,e=0,n=0,r=0;r<this.glyphs.length;r++){var i=this.glyphs[r],o=this.positions[r],a=i.bbox;t.addPoint(a.minX+e+o.xOffset,a.minY+n+o.yOffset),t.addPoint(a.maxX+e+o.xOffset,a.maxY+n+o.yOffset),e+=o.xAdvance,n+=o.yAdvance}return t}}]),t}(),po=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;lt(this,t),this.xAdvance=e,this.yAdvance=n,this.xOffset=r,this.yOffset=i},go={allTypographicFeatures:{code:0,exclusive:!1,allTypeFeatures:0},ligatures:{code:1,exclusive:!1,requiredLigatures:0,commonLigatures:2,rareLigatures:4,rebusPictures:8,diphthongLigatures:10,squaredLigatures:12,abbrevSquaredLigatures:14,symbolLigatures:16,contextualLigatures:18,historicalLigatures:20},cursiveConnection:{code:2,exclusive:!0,unconnected:0,partiallyConnected:1,cursive:2},letterCase:{code:3,exclusive:!0},verticalSubstitution:{code:4,exclusive:!1,substituteVerticalForms:0},linguisticRearrangement:{code:5,exclusive:!1,linguisticRearrangement:0},numberSpacing:{code:6,exclusive:!0,monospacedNumbers:0,proportionalNumbers:1,thirdWidthNumbers:2,quarterWidthNumbers:3},smartSwash:{code:8,exclusive:!1,wordInitialSwashes:0,wordFinalSwashes:2,nonFinalSwashes:8},diacritics:{code:9,exclusive:!0,showDiacritics:0,hideDiacritics:1,decomposeDiacritics:2},verticalPosition:{code:10,exclusive:!0,normalPosition:0,superiors:1,inferiors:2,ordinals:3,scientificInferiors:4},fractions:{code:11,exclusive:!0,noFractions:0,verticalFractions:1,diagonalFractions:2},overlappingCharacters:{code:13,exclusive:!1,preventOverlap:0},typographicExtras:{code:14,exclusive:!1,slashedZero:4},mathematicalExtras:{code:15,exclusive:!1,mathematicalGreek:10},ornamentSets:{code:16,exclusive:!0,noOrnaments:0,dingbats:1,piCharacters:2,fleurons:3,decorativeBorders:4,internationalSymbols:5,mathSymbols:6},characterAlternatives:{code:17,exclusive:!0,noAlternates:0},designComplexity:{code:18,exclusive:!0,designLevel1:0,designLevel2:1,designLevel3:2,designLevel4:3,designLevel5:4},styleOptions:{code:19,exclusive:!0,noStyleOptions:0,displayText:1,engravedText:2,illuminatedCaps:3,titlingCaps:4,tallCaps:5},characterShape:{code:20,exclusive:!0,traditionalCharacters:0,simplifiedCharacters:1,JIS1978Characters:2,JIS1983Characters:3,JIS1990Characters:4,traditionalAltOne:5,traditionalAltTwo:6,traditionalAltThree:7,traditionalAltFour:8,traditionalAltFive:9,expertCharacters:10,JIS2004Characters:11,hojoCharacters:12,NLCCharacters:13,traditionalNamesCharacters:14},numberCase:{code:21,exclusive:!0,lowerCaseNumbers:0,upperCaseNumbers:1},textSpacing:{code:22,exclusive:!0,proportionalText:0,monospacedText:1,halfWidthText:2,thirdWidthText:3,quarterWidthText:4,altProportionalText:5,altHalfWidthText:6},transliteration:{code:23,exclusive:!0,noTransliteration:0},annotation:{code:24,exclusive:!0,noAnnotation:0,boxAnnotation:1,roundedBoxAnnotation:2,circleAnnotation:3,invertedCircleAnnotation:4,parenthesisAnnotation:5,periodAnnotation:6,romanNumeralAnnotation:7,diamondAnnotation:8,invertedBoxAnnotation:9,invertedRoundedBoxAnnotation:10},kanaSpacing:{code:25,exclusive:!0,fullWidthKana:0,proportionalKana:1},ideographicSpacing:{code:26,exclusive:!0,fullWidthIdeographs:0,proportionalIdeographs:1,halfWidthIdeographs:2},unicodeDecomposition:{code:27,exclusive:!1,canonicalComposition:0,compatibilityComposition:2,transcodingComposition:4},rubyKana:{code:28,exclusive:!1,rubyKana:2},CJKSymbolAlternatives:{code:29,exclusive:!0,noCJKSymbolAlternatives:0,CJKSymbolAltOne:1,CJKSymbolAltTwo:2,CJKSymbolAltThree:3,CJKSymbolAltFour:4,CJKSymbolAltFive:5},ideographicAlternatives:{code:30,exclusive:!0,noIdeographicAlternatives:0,ideographicAltOne:1,ideographicAltTwo:2,ideographicAltThree:3,ideographicAltFour:4,ideographicAltFive:5},CJKVerticalRomanPlacement:{code:31,exclusive:!0,CJKVerticalRomanCentered:0,CJKVerticalRomanHBaseline:1},italicCJKRoman:{code:32,exclusive:!1,CJKItalicRoman:2},caseSensitiveLayout:{code:33,exclusive:!1,caseSensitiveLayout:0,caseSensitiveSpacing:2},alternateKana:{code:34,exclusive:!1,alternateHorizKana:0,alternateVertKana:2},stylisticAlternatives:{code:35,exclusive:!1,noStylisticAlternates:0,stylisticAltOne:2,stylisticAltTwo:4,stylisticAltThree:6,stylisticAltFour:8,stylisticAltFive:10,stylisticAltSix:12,stylisticAltSeven:14,stylisticAltEight:16,stylisticAltNine:18,stylisticAltTen:20,stylisticAltEleven:22,stylisticAltTwelve:24,stylisticAltThirteen:26,stylisticAltFourteen:28,stylisticAltFifteen:30,stylisticAltSixteen:32,stylisticAltSeventeen:34,stylisticAltEighteen:36,stylisticAltNineteen:38,stylisticAltTwenty:40},contextualAlternates:{code:36,exclusive:!1,contextualAlternates:0,swashAlternates:2,contextualSwashAlternates:4},lowerCase:{code:37,exclusive:!0,defaultLowerCase:0,lowerCaseSmallCaps:1,lowerCasePetiteCaps:2},upperCase:{code:38,exclusive:!0,defaultUpperCase:0,upperCaseSmallCaps:1,upperCasePetiteCaps:2},languageTag:{code:39,exclusive:!0},CJKRomanSpacing:{code:103,exclusive:!0,halfWidthCJKRoman:0,proportionalCJKRoman:1,defaultCJKRoman:2,fullWidthCJKRoman:3}},yo=function(t,e){return[go[t].code,go[t][e]]},vo={rlig:yo("ligatures","requiredLigatures"),clig:yo("ligatures","contextualLigatures"),dlig:yo("ligatures","rareLigatures"),hlig:yo("ligatures","historicalLigatures"),liga:yo("ligatures","commonLigatures"),hist:yo("ligatures","historicalLigatures"),smcp:yo("lowerCase","lowerCaseSmallCaps"),pcap:yo("lowerCase","lowerCasePetiteCaps"),frac:yo("fractions","diagonalFractions"),dnom:yo("fractions","diagonalFractions"),numr:yo("fractions","diagonalFractions"),afrc:yo("fractions","verticalFractions"),case:yo("caseSensitiveLayout","caseSensitiveLayout"),ccmp:yo("unicodeDecomposition","canonicalComposition"),cpct:yo("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),valt:yo("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),swsh:yo("contextualAlternates","swashAlternates"),cswh:yo("contextualAlternates","contextualSwashAlternates"),curs:yo("cursiveConnection","cursive"),c2pc:yo("upperCase","upperCasePetiteCaps"),c2sc:yo("upperCase","upperCaseSmallCaps"),init:yo("smartSwash","wordInitialSwashes"),fin2:yo("smartSwash","wordFinalSwashes"),medi:yo("smartSwash","nonFinalSwashes"),med2:yo("smartSwash","nonFinalSwashes"),fin3:yo("smartSwash","wordFinalSwashes"),fina:yo("smartSwash","wordFinalSwashes"),pkna:yo("kanaSpacing","proportionalKana"),half:yo("textSpacing","halfWidthText"),halt:yo("textSpacing","altHalfWidthText"),hkna:yo("alternateKana","alternateHorizKana"),vkna:yo("alternateKana","alternateVertKana"),ital:yo("italicCJKRoman","CJKItalicRoman"),lnum:yo("numberCase","upperCaseNumbers"),onum:yo("numberCase","lowerCaseNumbers"),mgrk:yo("mathematicalExtras","mathematicalGreek"),calt:yo("contextualAlternates","contextualAlternates"),vrt2:yo("verticalSubstitution","substituteVerticalForms"),vert:yo("verticalSubstitution","substituteVerticalForms"),tnum:yo("numberSpacing","monospacedNumbers"),pnum:yo("numberSpacing","proportionalNumbers"),sups:yo("verticalPosition","superiors"),subs:yo("verticalPosition","inferiors"),ordn:yo("verticalPosition","ordinals"),pwid:yo("textSpacing","proportionalText"),hwid:yo("textSpacing","halfWidthText"),qwid:yo("textSpacing","quarterWidthText"),twid:yo("textSpacing","thirdWidthText"),fwid:yo("textSpacing","proportionalText"),palt:yo("textSpacing","altProportionalText"),trad:yo("characterShape","traditionalCharacters"),smpl:yo("characterShape","simplifiedCharacters"),jp78:yo("characterShape","JIS1978Characters"),jp83:yo("characterShape","JIS1983Characters"),jp90:yo("characterShape","JIS1990Characters"),jp04:yo("characterShape","JIS2004Characters"),expt:yo("characterShape","expertCharacters"),hojo:yo("characterShape","hojoCharacters"),nlck:yo("characterShape","NLCCharacters"),tnam:yo("characterShape","traditionalNamesCharacters"),ruby:yo("rubyKana","rubyKana"),titl:yo("styleOptions","titlingCaps"),zero:yo("typographicExtras","slashedZero"),ss01:yo("stylisticAlternatives","stylisticAltOne"),ss02:yo("stylisticAlternatives","stylisticAltTwo"),ss03:yo("stylisticAlternatives","stylisticAltThree"),ss04:yo("stylisticAlternatives","stylisticAltFour"),ss05:yo("stylisticAlternatives","stylisticAltFive"),ss06:yo("stylisticAlternatives","stylisticAltSix"),ss07:yo("stylisticAlternatives","stylisticAltSeven"),ss08:yo("stylisticAlternatives","stylisticAltEight"),ss09:yo("stylisticAlternatives","stylisticAltNine"),ss10:yo("stylisticAlternatives","stylisticAltTen"),ss11:yo("stylisticAlternatives","stylisticAltEleven"),ss12:yo("stylisticAlternatives","stylisticAltTwelve"),ss13:yo("stylisticAlternatives","stylisticAltThirteen"),ss14:yo("stylisticAlternatives","stylisticAltFourteen"),ss15:yo("stylisticAlternatives","stylisticAltFifteen"),ss16:yo("stylisticAlternatives","stylisticAltSixteen"),ss17:yo("stylisticAlternatives","stylisticAltSeventeen"),ss18:yo("stylisticAlternatives","stylisticAltEighteen"),ss19:yo("stylisticAlternatives","stylisticAltNineteen"),ss20:yo("stylisticAlternatives","stylisticAltTwenty")},bo=1;bo<=99;bo++)vo["cv"+("00"+bo).slice(-2)]=[go.characterAlternatives.code,bo];var mo={};for(var wo in vo){var xo=vo[wo];null==mo[xo[0]]&&(mo[xo[0]]={}),mo[xo[0]][xo[1]]=wo}for(var _o,ko,So,Co,Ao,Po,Eo,Io,To,Oo,Bo=(_o=function(){function t(e){lt(this,t),this.table=e}return t.prototype.lookup=function(t){switch(this.table.version){case 0:return this.table.values.getItem(t);case 2:case 4:for(var e=0,n=this.table.binarySearchHeader.nUnits-1;e<=n;){var r=e+n>>1,i=this.table.segments[r];if(65535===i.firstGlyph)return null;if(t<i.firstGlyph)n=r-1;else{if(!(t>i.lastGlyph))return 2===this.table.version?i.value:i.values[t-i.firstGlyph];e=r+1}}return null;case 6:for(var o=0,a=this.table.binarySearchHeader.nUnits-1;o<=a;){var r=o+a>>1,i=this.table.segments[r];if(65535===i.glyph)return null;if(t<i.glyph)a=r-1;else{if(!(t>i.glyph))return i.value;o=r+1}}return null;case 8:return this.table.values[t-this.table.firstGlyph];default:throw new Error("Unknown lookup table format: "+this.table.version)}},t.prototype.glyphsForValue=function(t){var e=[];switch(this.table.version){case 2:case 4:for(var n=this.table.segments,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;if(2===this.table.version&&a.value===t)e.push.apply(e,f(a.firstGlyph,a.lastGlyph+1));else for(var s=0;s<a.values.length;s++)a.values[s]===t&&e.push(a.firstGlyph+s)}break;case 6:for(var u=this.table.segments,l=Array.isArray(u),c=0,u=l?u:it(u);;){var h;if(l){if(c>=u.length)break;h=u[c++]}else{if(c=u.next(),c.done)break;h=c.value}var p=h;p.value===t&&e.push(p.glyph)}break;case 8:for(var d=0;d<this.table.values.length;d++)this.table.values[d]===t&&e.push(this.table.firstGlyph+d);break;default:throw new Error("Unknown lookup table format: "+this.table.version)}return e},t}(),function(t,e,n,r,i){var o={};return Object.keys(r).forEach(function(t){o[t]=r[t]}),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(t,e,o),o=null),o}(_o.prototype,"glyphsForValue",[o],rt(_o.prototype,"glyphsForValue"),_o.prototype),_o),Lo=function(){function t(e){lt(this,t),this.stateTable=e,this.lookupTable=new Bo(e.classTable)}return t.prototype.process=function(t,e,n){for(var r=0,i=e?t.length-1:0,o=e?-1:1;1===o&&i<=t.length||-1===o&&i>=-1;){var a=null,s=1,u=!0;i===t.length||-1===i?s=0:(a=t[i],65535===a.id?s=2:null==(s=this.lookupTable.lookup(a.id))&&(s=1));var l=this.stateTable.stateArray.getItem(r),c=l[s],f=this.stateTable.entryTable.getItem(c);0!==s&&2!==s&&(n(a,f,i),u=!(16384&f.flags)),r=f.newState,u&&(i+=o)}return t},t.prototype.traverse=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new wt;if(!n.has(e)){n.add(e);for(var r=this.stateTable,i=r.nClasses,o=r.stateArray,a=r.entryTable,s=o.getItem(e),u=4;u<i;u++)for(var l=s[u],c=a.getItem(l),f=this.lookupTable.glyphsForValue(u),h=Array.isArray(f),p=0,f=h?f:it(f);;){var d;if(h){if(p>=f.length)break;d=f[p++]}else{if(p=f.next(),p.done)break;d=p.value}var g=d;t.enter&&t.enter(g,c),0!==c.newState&&this.traverse(t,c.newState,n),t.exit&&t.exit(g,c)}}},t}(),Mo=(ko=function(){function t(e){lt(this,t),this.processIndicRearragement=this.processIndicRearragement.bind(this),this.processContextualSubstitution=this.processContextualSubstitution.bind(this),this.processLigature=this.processLigature.bind(this),this.processNoncontextualSubstitutions=this.processNoncontextualSubstitutions.bind(this),this.processGlyphInsertion=this.processGlyphInsertion.bind(this),this.font=e,this.morx=e.morx,this.inputCache=null}return t.prototype.process=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.morx.chains,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}for(var a=o,s=a.defaultFlags,u=a.features,l=Array.isArray(u),c=0,u=l?u:it(u);;){var f;if(l){if(c>=u.length)break;f=u[c++]}else{if(c=u.next(),c.done)break;f=c.value}var h=f,p=void 0;(p=e[h.featureType])&&p[h.featureSetting]&&(s&=h.disableFlags,s|=h.enableFlags)}for(var d=a.subtables,g=Array.isArray(d),y=0,d=g?d:it(d);;){var v;if(g){if(y>=d.length)break;v=d[y++]}else{if(y=d.next(),y.done)break;v=y.value}var b=v;b.subFeatureFlags&s&&this.processSubtable(b,t)}}for(var m=t.length-1;m>=0;)65535===t[m].id&&t.splice(m,1),m--;return t},t.prototype.processSubtable=function(t,e){if(this.subtable=t,this.glyphs=e,4===this.subtable.type)return void this.processNoncontextualSubstitutions(this.subtable,this.glyphs);this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;var n=this.getStateMachine(t),r=this.getProcessor(),i=!!(4194304&this.subtable.coverage);return n.process(this.glyphs,i,r)},t.prototype.getStateMachine=function(t){return new Lo(t.table.stateTable)},t.prototype.getProcessor=function(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error("Invalid morx subtable type: "+this.subtable.type)}},t.prototype.processIndicRearragement=function(t,e,n){32768&e.flags&&(this.firstGlyph=n),8192&e.flags&&(this.lastGlyph=n),x(this.glyphs,15&e.flags,this.firstGlyph,this.lastGlyph)},t.prototype.processContextualSubstitution=function(t,e,n){var r=this.subtable.table.substitutionTable.items;if(65535!==e.markIndex){var i=r.getItem(e.markIndex),o=new Bo(i);t=this.glyphs[this.markedGlyph];var a=o.lookup(t.id);a&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(a,t.codePoints))}if(65535!==e.currentIndex){var s=r.getItem(e.currentIndex),u=new Bo(s);t=this.glyphs[n];var a=u.lookup(t.id);a&&(this.glyphs[n]=this.font.getGlyph(a,t.codePoints))}32768&e.flags&&(this.markedGlyph=n)},t.prototype.processLigature=function(t,e,n){if(32768&e.flags&&this.ligatureStack.push(n),8192&e.flags){for(var r,i=this.subtable.table.ligatureActions,o=this.subtable.table.components,a=this.subtable.table.ligatureList,s=e.action,u=!1,l=0,c=[],f=[];!u;){var h,p=this.ligatureStack.pop();(h=c).unshift.apply(h,this.glyphs[p].codePoints);var d=i.getItem(s++);u=!!(2147483648&d);var g=!!(1073741824&d),y=(1073741823&d)<<2>>2;y+=this.glyphs[p].id;if(l+=o.getItem(y),u||g){var v=a.getItem(l);this.glyphs[p]=this.font.getGlyph(v,c),f.push(p),l=0,c=[]}else this.glyphs[p]=this.font.getGlyph(65535)}(r=this.ligatureStack).push.apply(r,f)}},t.prototype.processNoncontextualSubstitutions=function(t,e,n){var r=new Bo(t.table.lookupTable);for(n=0;n<e.length;n++){var i=e[n];if(65535!==i.id){var o=r.lookup(i.id);o&&(e[n]=this.font.getGlyph(o,i.codePoints))}}},t.prototype._insertGlyphs=function(t,e,n,r){for(var i,o=[];n--;){var a=this.subtable.table.insertionActions.getItem(e++);o.push(this.font.getGlyph(a))}r||t++,(i=this.glyphs).splice.apply(i,[t,0].concat(o))},t.prototype.processGlyphInsertion=function(t,e,n){if(32768&e.flags&&(this.markedIndex=n),65535!==e.markedInsertIndex){var r=(31&e.flags)>>>5,i=!!(1024&e.flags);this._insertGlyphs(this.markedIndex,e.markedInsertIndex,r,i)}if(65535!==e.currentInsertIndex){var o=(992&e.flags)>>>5,a=!!(2048&e.flags);this._insertGlyphs(n,e.currentInsertIndex,o,a)}},t.prototype.getSupportedFeatures=function(){for(var t=[],e=this.morx.chains,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a=o.features,s=Array.isArray(a),u=0,a=s?a:it(a);;){var l;if(s){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;t.push([c.featureType,c.featureSetting])}}return t},t.prototype.generateInputs=function(t){return this.inputCache||this.generateInputCache(),this.inputCache[t]||[]},t.prototype.generateInputCache=function(){this.inputCache={};for(var t=this.morx.chains,e=Array.isArray(t),n=0,t=e?t:it(t);;){var r;if(e){if(n>=t.length)break;r=t[n++]}else{if(n=t.next(),n.done)break;r=n.value}for(var i=r,o=i.defaultFlags,a=i.subtables,s=Array.isArray(a),u=0,a=s?a:it(a);;){var l;if(s){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;c.subFeatureFlags&o&&this.generateInputsForSubtable(c)}}},t.prototype.generateInputsForSubtable=function(t){var e=this;if(2===t.type){if(!!(4194304&t.coverage))throw new Error("Reverse subtable, not supported.");this.subtable=t,this.ligatureStack=[];var n=this.getStateMachine(t),r=this.getProcessor(),i=[],o=[];this.glyphs=[],n.traverse({enter:function(t,n){var a=e.glyphs;o.push({glyphs:a.slice(),ligatureStack:e.ligatureStack.slice()});var s=e.font.getGlyph(t);i.push(s),a.push(i[i.length-1]),r(a[a.length-1],n,a.length-1);for(var u=0,l=0,c=0;c<a.length&&u<=1;c++)65535!==a[c].id&&(u++,l=a[c].id);if(1===u){var f=i.map(function(t){return t.id}),h=e.inputCache[l];h?h.push(f):e.inputCache[l]=[f]}},exit:function(){var t=o.pop();e.glyphs=t.glyphs,e.ligatureStack=t.ligatureStack,i.pop()}})}},t}(),function(t,e,n,r,i){var o={};return Object.keys(r).forEach(function(t){o[t]=r[t]}),o.enumerable=!!o.enumerable,o.configurable=!!o.configurable,("value"in o||o.initializer)&&(o.writable=!0),o=n.slice().reverse().reduce(function(n,r){return r(t,e,n)||n},o),i&&void 0!==o.initializer&&(o.value=o.initializer?o.initializer.call(i):void 0,o.initializer=void 0),void 0===o.initializer&&(Object.defineProperty(t,e,o),o=null),o}(ko.prototype,"getStateMachine",[o],rt(ko.prototype,"getStateMachine"),ko.prototype),ko),Ro=function(){function t(e){lt(this,t),this.font=e,this.morxProcessor=new Mo(e),this.fallbackPosition=!1}return t.prototype.substitute=function(t){"rtl"===t.direction&&t.glyphs.reverse(),this.morxProcessor.process(t.glyphs,v(t.features))},t.prototype.getAvailableFeatures=function(t,e){return m(this.morxProcessor.getSupportedFeatures())},t.prototype.stringsForGlyph=function(t){for(var e=this.morxProcessor.generateInputs(t),n=new wt,r=e,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;this._addStrings(s,0,n,"")}return n},t.prototype._addStrings=function(t,e,n,r){for(var i=this.font._cmapProcessor.codePointsForGlyph(t[e]),o=i,a=Array.isArray(o),s=0,o=a?o:it(o);;){var u;if(a){if(s>=o.length)break;u=o[s++]}else{if(s=o.next(),s.done)break;u=s.value}var l=u,c=r+bt(l);e<t.length-1?this._addStrings(t,e+1,n,c):n.add(c)}},t}(),Fo=function(){function t(e,n,r){lt(this,t),this.font=e,this.script=n,this.direction=r,this.stages=[],this.globalFeatures={},this.allFeatures={}}return t.prototype._addFeatures=function(t,e){for(var n=this.stages.length-1,r=this.stages[n],i=t,o=Array.isArray(i),a=0,i=o?i:it(i);;){var s;if(o){if(a>=i.length)break;s=i[a++]}else{if(a=i.next(),a.done)break;s=a.value}var u=s;null==this.allFeatures[u]&&(r.push(u),this.allFeatures[u]=n,e&&(this.globalFeatures[u]=!0))}},t.prototype.add=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(0===this.stages.length&&this.stages.push([]),"string"==typeof t&&(t=[t]),Array.isArray(t))this._addFeatures(t,e);else{if("object"!==(void 0===t?"undefined":st(t)))throw new Error("Unsupported argument to ShapingPlan#add");this._addFeatures(t.global||[],!0),this._addFeatures(t.local||[],!1)}},t.prototype.addStage=function(t,e){"function"==typeof t?this.stages.push(t,[]):(this.stages.push([]),this.add(t,e))},t.prototype.setFeatureOverrides=function(t){if(Array.isArray(t))this.add(t);else if("object"===(void 0===t?"undefined":st(t)))for(var e in t)if(t[e])this.add(e);else if(null!=this.allFeatures[e]){var n=this.stages[this.allFeatures[e]];n.splice(n.indexOf(e),1),delete this.allFeatures[e],delete this.globalFeatures[e]}},t.prototype.assignGlobalFeatures=function(t){for(var e=t,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;for(var a in this.globalFeatures)o.features[a]=!0}},t.prototype.process=function(t,e,n){for(var r=this.stages,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;"function"==typeof s?n||s(this.font,e,this):s.length>0&&t.applyFeatures(s,e,n)}},t}(),zo=["rvrn"],Do=["ccmp","locl","rlig","mark","mkmk"],No=["frac","numr","dnom"],Uo=["calt","clig","liga","rclt","curs","kern"],Wo={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},jo=(Co=So=function(){function t(){lt(this,t)}return t.plan=function(t,e,n){this.planPreprocessing(t),this.planFeatures(t),this.planPostprocessing(t,n),t.assignGlobalFeatures(e),this.assignFeatures(t,e)},t.planPreprocessing=function(t){t.add({global:[].concat(zo,Wo[t.direction]),local:No})},t.planFeatures=function(t){},t.planPostprocessing=function(t,e){t.add([].concat(Do,Uo)),t.setFeatureOverrides(e)},t.assignFeatures=function(t,e){for(var n=0;n<e.length;n++){var r=e[n];if(8260===r.codePoints[0]){for(var i=n,o=n+1;i>0&&xt.isDigit(e[i-1].codePoints[0]);)e[i-1].features.numr=!0,e[i-1].features.frac=!0,i--;for(;o<e.length&&xt.isDigit(e[o].codePoints[0]);)e[o].features.dnom=!0,e[o].features.frac=!0,o++;r.features.frac=!0,n=o-1}}},t}(),So.zeroMarkWidths="AFTER_GPOS",Co),Go=new _t(e("AAEQAAAAAAAAADGgAZUBav7t2CtPA0EUBeDZB00pin9AJZIEgyUEj0QhweDAgQOJxCBRBElQSBwSicLgkOAwnNKZ5GaY2c7uzj4o5yZfZrrbefbuIx2nSq3CGmzAWH/+K+UO7MIe7MMhHMMpnMMFXMIVXIt2t3CnP088iPqjqNN8e4Ij7Rle4LUH82rLm6i/92A+RERERERERERNmfz/89GDeRARERERzbN8ceps2Iwt9H0C9/AJ6yOlDkbTczcot5VSm8Pm1vcFWfb7+BKOLTuOd2UlTX4wGP85Eg953lWPFbnuN7PkjtLmalOWbNenkHOSa7T3KmR9MVTZ2zZkVj1kHa68MueVKH0R4zqQ44WEXLM8VjcWHP0PtKLfPzQnMtGn3W4QYf6qxFxceVI394r2xnV+1rih0fV1Vzf3fO1n3evL5J78ruvZ5ptX2Rwy92Tfb1wlEqut3U+sZ3HXOeJ7/zDrbyuP6+Zz0fqa6Nv3vhY7Yu1xWnGevmsvsUpTT/RYIe8waUH/rvHMWKFzLfN8L+rTfp645mfX7ftlnfDtYxN59w0=","base64")),Vo=["isol","fina","fin2","fin3","medi","med2","init"],Ho={Non_Joining:0,Left_Joining:1,Right_Joining:2,Dual_Joining:3,Join_Causing:3,ALAPH:4,"DALATH RISH":5,Transparent:6},qo="isol",Zo="fina",Yo=[[[null,null,0],[null,qo,2],[null,qo,1],[null,qo,2],[null,qo,1],[null,qo,6]],[[null,null,0],[null,qo,2],[null,qo,1],[null,qo,2],[null,"fin2",5],[null,qo,6]],[[null,null,0],[null,qo,2],["init",Zo,1],["init",Zo,3],["init",Zo,4],["init",Zo,6]],[[null,null,0],[null,qo,2],["medi",Zo,1],["medi",Zo,3],["medi",Zo,4],["medi",Zo,6]],[[null,null,0],[null,qo,2],["med2",qo,1],["med2",qo,2],["med2","fin2",5],["med2",qo,6]],[[null,null,0],[null,qo,2],[qo,qo,1],[qo,qo,2],[qo,"fin2",5],[qo,qo,6]],[[null,null,0],[null,qo,2],[null,qo,1],[null,qo,2],[null,"fin3",5],[null,qo,6]]],Xo=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.planFeatures=function(t){t.add(["ccmp","locl"]);for(var e=0;e<Vo.length;e++){var n=Vo[e];t.addStage(n,!1)}t.addStage("mset")},e.assignFeatures=function(e,n){t.assignFeatures.call(this,e,n);for(var r=-1,i=0,o=[],a=0;a<n.length;a++){var s=void 0,u=void 0,l=n[a],c=_(l.codePoints[0]);if(c!==Ho.Transparent){var f=Yo[i][c];u=f[0],s=f[1],i=f[2],null!==u&&-1!==r&&(o[r]=u),o[a]=s,r=a}else o[a]=null}for(var h=0;h<n.length;h++){var p=void 0,l=n[h];(p=o[h])&&(l.features[p]=!0)}},e}(jo),Ko=function(){function t(e,n){lt(this,t),this.glyphs=e,this.reset(n)}return t.prototype.reset=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.options=t,this.flags=t.flags||{},this.markAttachmentType=t.markAttachmentType||0,this.index=e},t.prototype.shouldIgnore=function(t){return this.flags.ignoreMarks&&t.isMark||this.flags.ignoreBaseGlyphs&&t.isBase||this.flags.ignoreLigatures&&t.isLigature||this.markAttachmentType&&t.isMark&&t.markAttachmentType!==this.markAttachmentType},t.prototype.move=function(t){for(this.index+=t;0<=this.index&&this.index<this.glyphs.length&&this.shouldIgnore(this.glyphs[this.index]);)this.index+=t;return 0>this.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]},t.prototype.next=function(){return this.move(1)},t.prototype.prev=function(){return this.move(-1)},t.prototype.peek=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index,n=this.increment(t);return this.index=e,n},t.prototype.peekIndex=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.index;this.increment(t);var n=this.index;return this.index=e,n},t.prototype.increment=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=t<0?-1:1;for(t=Math.abs(t);t--;)this.move(e);return this.glyphs[this.index]},ct(t,[{key:"cur",get:function(){return this.glyphs[this.index]||null}}]),t}(),Jo=["DFLT","dflt","latn"],Qo=(function(){function t(e,n){lt(this,t),this.font=e,this.table=n,this.script=null,this.scriptTag=null,this.language=null,this.languageTag=null,this.features={},this.lookups={},this.variationsIndex=e._variationProcessor?this.findVariationsIndex(e._variationProcessor.normalizedCoords):-1,this.selectScript(),this.glyphs=[],this.positions=[],this.ligatureID=1,this.currentFeature=null}return t.prototype.findScript=function(t){if(null==this.table.scriptList)return null;Array.isArray(t)||(t=[t]);for(var e=t,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a=this.table.scriptList,s=Array.isArray(a),u=0,a=s?a:it(a);;){var l;if(s){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;if(c.tag===o)return c}}return null},t.prototype.selectScript=function(t,e,n){var r=!1,i=void 0;if(!this.script||t!==this.scriptTag){if(i=this.findScript(t),i||(i=this.findScript(Jo)),!i)return this.scriptTag;this.scriptTag=i.tag,this.script=i.script,this.language=null,this.languageTag=null,r=!0}if(n&&n===this.direction||(this.direction=n||y(t)),e&&e.length<4&&(e+=" ".repeat(4-e.length)),!e||e!==this.languageTag){this.language=null;for(var o=this.script.langSysRecords,a=Array.isArray(o),s=0,o=a?o:it(o);;){var u;if(a){if(s>=o.length)break;u=o[s++]}else{if(s=o.next(),s.done)break;u=s.value}var l=u;if(l.tag===e){this.language=l.langSys,this.languageTag=l.tag;break}}this.language||(this.language=this.script.defaultLangSys,this.languageTag=null),r=!0}if(r&&(this.features={},this.language))for(var c=this.language.featureIndexes,f=Array.isArray(c),h=0,c=f?c:it(c);;){var p;if(f){if(h>=c.length)break;p=c[h++]}else{if(h=c.next(),h.done)break;p=h.value}var d=p,g=this.table.featureList[d],v=this.substituteFeatureForVariations(d);this.features[g.tag]=v||g.feature}return this.scriptTag},t.prototype.lookupsForFeatures=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1],n=[],r=t,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=this.features[s];if(u)for(var l=u.lookupListIndexes,c=Array.isArray(l),f=0,l=c?l:it(l);;){var h;if(c){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var p=h;e&&-1!==e.indexOf(p)||n.push({feature:s,index:p,lookup:this.table.lookupList.get(p)})}}return n.sort(function(t,e){return t.index-e.index}),n},t.prototype.substituteFeatureForVariations=function(t){if(-1===this.variationsIndex)return null;for(var e=this.table.featureVariations.featureVariationRecords[this.variationsIndex],n=e.featureTableSubstitution.substitutions,r=n,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(s.featureIndex===t)return s.alternateFeatureTable}return null},t.prototype.findVariationsIndex=function(t){var e=this.table.featureVariations;if(!e)return-1;for(var n=e.featureVariationRecords,r=0;r<n.length;r++){var i=n[r].conditionSet.conditionTable;if(this.variationConditionsMatch(i,t))return r}return-1},t.prototype.variationConditionsMatch=function(t,e){return t.every(function(t){var n=t.axisIndex<e.length?e[t.axisIndex]:0;return t.filterRangeMinValue<=n&&n<=t.filterRangeMaxValue})},t.prototype.applyFeatures=function(t,e,n){var r=this.lookupsForFeatures(t);this.applyLookups(r,e,n)},t.prototype.applyLookups=function(t,e,n){this.glyphs=e,this.positions=n,this.glyphIterator=new Ko(e);for(var r=t,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=s.feature,l=s.lookup;for(this.currentFeature=u,this.glyphIterator.reset(l.flags);this.glyphIterator.index<e.length;)if(u in this.glyphIterator.cur.features){for(var c=l.subTables,f=Array.isArray(c),h=0,c=f?c:it(c);;){var p;if(f){if(h>=c.length)break;p=c[h++]}else{if(h=c.next(),h.done)break;p=h.value}var d=p,g=this.applyLookup(l.lookupType,d);if(g)break}this.glyphIterator.next()}else this.glyphIterator.next()}},t.prototype.applyLookup=function(t,e){throw new Error("applyLookup must be implemented by subclasses")},t.prototype.applyLookupList=function(t){for(var e=this.glyphIterator.options,n=this.glyphIterator.index,r=t,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;this.glyphIterator.reset(e,n),this.glyphIterator.increment(s.sequenceIndex);var u=this.table.lookupList.get(s.lookupListIndex);this.glyphIterator.reset(u.flags,this.glyphIterator.index);for(var l=u.subTables,c=Array.isArray(l),f=0,l=c?l:it(l);;){var h;if(c){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var p=h;if(this.applyLookup(u.lookupType,p))break}}return this.glyphIterator.reset(e,n),!0},t.prototype.coverageIndex=function(t,e){switch(null==e&&(e=this.glyphIterator.cur.id),t.version){case 1:return t.glyphs.indexOf(e);case 2:for(var n=t.rangeRecords,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o;if(a.start<=e&&e<=a.end)return a.startCoverageIndex+e-a.start}}return-1},t.prototype.match=function(t,e,n,r){for(var i=this.glyphIterator.index,o=this.glyphIterator.increment(t),a=0;a<e.length&&o&&n(e[a],o);)r&&r.push(this.glyphIterator.index),a++,o=this.glyphIterator.next() ;return this.glyphIterator.index=i,!(a<e.length)&&(r||!0)},t.prototype.sequenceMatches=function(t,e){return this.match(t,e,function(t,e){return t===e.id})},t.prototype.sequenceMatchIndices=function(t,e){var n=this;return this.match(t,e,function(t,e){return n.currentFeature in e.features&&t===e.id},[])},t.prototype.coverageSequenceMatches=function(t,e){var n=this;return this.match(t,e,function(t,e){return n.coverageIndex(t,e.id)>=0})},t.prototype.getClassID=function(t,e){switch(e.version){case 1:var n=t-e.startGlyph;if(n>=0&&n<e.classValueArray.length)return e.classValueArray[n];break;case 2:for(var r=e.classRangeRecord,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(s.start<=t&&t<=s.end)return s.class}}return 0},t.prototype.classSequenceMatches=function(t,e,n){var r=this;return this.match(t,e,function(t,e){return t===r.getClassID(e.id,n)})},t.prototype.applyContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(-1===e)return!1;for(var n=t.ruleSets[e],r=n,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(this.sequenceMatches(1,s.input))return this.applyLookupList(s.lookupRecords)}break;case 2:if(-1===this.coverageIndex(t.coverage))return!1;if(-1===(e=this.getClassID(this.glyphIterator.cur.id,t.classDef)))return!1;n=t.classSet[e];for(var u=n,l=Array.isArray(u),c=0,u=l?u:it(u);;){var f;if(l){if(c>=u.length)break;f=u[c++]}else{if(c=u.next(),c.done)break;f=c.value}var h=f;if(this.classSequenceMatches(1,h.classes,t.classDef))return this.applyLookupList(h.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(0,t.coverages))return this.applyLookupList(t.lookupRecords)}return!1},t.prototype.applyChainingContext=function(t){switch(t.version){case 1:var e=this.coverageIndex(t.coverage);if(-1===e)return!1;for(var n=t.chainRuleSets[e],r=n,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;if(this.sequenceMatches(-s.backtrack.length,s.backtrack)&&this.sequenceMatches(1,s.input)&&this.sequenceMatches(1+s.input.length,s.lookahead))return this.applyLookupList(s.lookupRecords)}break;case 2:if(-1===this.coverageIndex(t.coverage))return!1;e=this.getClassID(this.glyphIterator.cur.id,t.inputClassDef);var u=t.chainClassSet[e];if(!u)return!1;for(var l=u,c=Array.isArray(l),f=0,l=c?l:it(l);;){var h;if(c){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var p=h;if(this.classSequenceMatches(-p.backtrack.length,p.backtrack,t.backtrackClassDef)&&this.classSequenceMatches(1,p.input,t.inputClassDef)&&this.classSequenceMatches(1+p.input.length,p.lookahead,t.lookaheadClassDef))return this.applyLookupList(p.lookupRecords)}break;case 3:if(this.coverageSequenceMatches(-t.backtrackGlyphCount,t.backtrackCoverage)&&this.coverageSequenceMatches(0,t.inputCoverage)&&this.coverageSequenceMatches(t.inputGlyphCount,t.lookaheadCoverage))return this.applyLookupList(t.lookupRecords)}return!1},t}()),$o=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments[3];if(lt(this,t),this._font=e,this.codePoints=r,this.id=n,this.features={},Array.isArray(i))for(var o=0;o<i.length;o++){var a=i[o];this.features[a]=!0}else"object"===(void 0===i?"undefined":st(i))&&vt(this.features,i);this.ligatureID=null,this.ligatureComponent=null,this.isLigated=!1,this.cursiveAttachment=null,this.markAttachment=null,this.shaperInfo=null,this.substituted=!1,this.isMultiplied=!1}return t.prototype.copy=function(){return new t(this._font,this.id,this.codePoints,this.features)},ct(t,[{key:"id",get:function(){return this._id},set:function(t){this._id=t,this.substituted=!0;var e=this._font.GDEF;if(e&&e.glyphClassDef){var n=Qo.prototype.getClassID(t,e.glyphClassDef);this.isBase=1===n,this.isLigature=2===n,this.isMark=3===n,this.markAttachmentType=e.markAttachClassDef?Qo.prototype.getClassID(t,e.markAttachClassDef):0}else this.isMark=this.codePoints.every(xt.isMark),this.isBase=!this.isMark,this.isLigature=this.codePoints.length>1,this.markAttachmentType=0}}]),t}(),ta=(Po=Ao=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.planFeatures=function(t){t.add(["ljmo","vjmo","tjmo"],!1)},e.assignFeatures=function(t,e){for(var n=0,r=0;r<e.length;){var i=void 0,o=e[r],a=o.codePoints[0],s=k(a),u=Ba[n][s];switch(i=u[0],n=u[1],i){case Ea:t.font.hasGlyphForCodePoint(a)||(r=C(e,r,t.font));break;case Ia:r=A(e,r,t.font);break;case Ta:E(e,r,t.font);break;case Oa:r=I(e,r,t.font)}r++}},e}(jo),Ao.zeroMarkWidths="NONE",Po),ea=44032,na=55204-ea+1,ra=4352,ia=4449,oa=4519,aa=21,sa=28,ua=ra+19-1,la=ia+aa-1,ca=oa+sa-1,fa=9676,ha=function(t){return 4352<=t&&t<=4447||43360<=t&&t<=43388},pa=function(t){return 4448<=t&&t<=4519||55216<=t&&t<=55238},da=function(t){return 4520<=t&&t<=4607||55243<=t&&t<=55291},ga=function(t){return 12334<=t&&t<=12335},ya=function(t){return ea<=t&&t<=55204},va=function(t){return t-ea<na&&(t-ea)%sa==0},ba=function(t){return ra<=t&&t<=ua},ma=function(t){return ia<=t&&t<=la},wa=function(t){return oa+1&&1<=t&&t<=ca },xa=0,_a=1,ka=2,Sa=3,Ca=4,Aa=5,Pa=6,Ea=1,Ia=2,Ta=4,Oa=5,Ba=[[[0,0],[0,1],[0,0],[0,0],[Ea,2],[Ea,3],[Oa,0]],[[0,0],[0,1],[Ia,2],[0,0],[Ea,2],[Ea,3],[Oa,0]],[[0,0],[0,1],[0,0],[Ia,3],[Ea,2],[Ea,3],[Ta,0]],[[0,0],[0,1],[0,0],[0,0],[Ea,2],[Ea,3],[Ta,0]]],La=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,14,15,16,17],[0,0,0,18,19,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,28,29,30,31,32,33,0,34,0,0,35,36,0,0,37,0],[0,0,0,38,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,39,0,0,0,40,41,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,12,43,0,0,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,0,43,0,0,0,0],[0,0,0,45,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,50,0,0,51,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0],[0,0,0,53,54,55,56,57,58,0,59,0,0,60,61,0,0,62,0],[0,0,0,4,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,63,64,0,0,40,41,0,9,0,10,0,0,0,42,0,63,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,0,2,16,0],[0,0,0,18,65,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,0,0],[0,0,0,69,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,73,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,75,0,0,0,76,77,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,25,79,0,0,0,0],[0,0,0,18,19,20,74,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,81,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,86,0,0,87,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0],[0,0,0,18,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,89,90,0,0,76,77,0,23,0,24,0,0,0,78,0,89,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,0,0],[0,0,0,94,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,96,0,0,0,97,98,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,35,100,0,0,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,102,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,107,0,0,108,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0],[0,0,0,28,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,110,111,0,0,97,98,0,33,0,34,0,0,0,99,0,110,0,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,0,0],[0,0,0,0,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,0,0,115,116,117,118,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,39,0,122,0,123,123,8,9,0,10,0,0,0,42,0,39,0,0],[0,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0],[0,39,0,0,0,121,125,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,47,47,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,128,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,129,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,50,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0],[0,0,0,135,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,136,0,0,0,137,138,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,60,140,0,0,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,0,140,0,0,0,0],[0,0,0,142,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,147,0,0,148,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0],[0,0,0,53,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,150,151,0,0,137,138,0,58,0,59,0,0,0,139,0,150,0,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,0,0],[0,0,0,155,116,156,157,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,75,3,4,5,159,160,8,161,0,162,0,11,12,163,0,75,16,0],[0,0,0,0,0,40,164,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,0,165,0,0,0,0],[0,124,64,0,0,40,164,0,9,0,10,0,0,0,42,0,124,0,0],[0,0,0,0,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,167,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0],[0,0,0,0,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,0,79,0,0,0,0],[0,0,0,169,170,171,172,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,75,0,176,0,177,177,22,23,0,24,0,0,0,78,0,75,0,0],[0,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0],[0,75,0,0,0,175,179,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,83,83,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,183,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,86,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0],[0,0,0,189,170,190,191,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,76,193,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,0,194,0,0,0,0],[0,178,90,0,0,76,193,0,23,0,24,0,0,0,78,0,178,0,0],[0,0,0,0,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,195,196,197,198,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,96,0,202,0,203,203,32,33,0,34,0,0,0,99,0,96,0,0],[0,204,111,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0],[0,96,0,0,0,201,205,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,104,104,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,209,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,107,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0],[0,0,0,215,196,216,217,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,97,219,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,0,220,0,0,0,0],[0,204,111,0,0,97,219,0,33,0,34,0,0,0,99,0,204,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,223,0,0,0,40,224,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,119,225,0,0,0,0],[0,0,0,115,116,117,222,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,115,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,226,64,0,0,40,224,0,9,0,10,0,0,0,42,0,226,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,39,0,0,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,44,44,8,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,227,0,228,229,0,9,0,10,0,0,230,0,0,0,0,0],[0,39,0,122,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,131,131,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,234,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,235,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,0,0,240,241,242,243,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,136,0,247,0,248,248,57,58,0,59,0,0,0,139,0,136,0,0],[0,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0],[0,136,0,0,0,246,250,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,144,144,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,254,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,147,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0],[0,0,0,260,241,261,262,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,137,264,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,0,265,0,0,0,0],[0,249,151,0,0,137,264,0,58,0,59,0,0,0,139,0,249,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,158,225,0,0,0,0],[0,0,0,155,116,156,222,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,155,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,43,266,266,8,161,0,24,0,0,12,267,0,0,0,0],[0,75,0,176,43,268,268,269,161,0,24,0,0,0,267,0,75,0,0],[0,0,0,0,0,270,0,0,271,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0],[0,273,274,0,0,40,41,0,9,0,10,0,0,0,42,0,273,0,0],[0,0,0,40,0,123,123,8,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,121,275,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,279,0,0,0,76,280,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,173,281,0,0,0,0],[0,0,0,169,170,171,278,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,169,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,282,90,0,0,76,280,0,23,0,24,0,0,0,78,0,282,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,75,0,0,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,283,0,284,285,0,23,0,24,0,0,286,0,0,0,0,0],[0,75,0,176,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,185,185,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,291,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,192,281,0,0,0,0],[0,0,0,189,170,190,278,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,189,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,76,0,177,177,22,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,175,296,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,299,0,0,0,97,300,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,199,301,0,0,0,0],[0,0,0,195,196,197,298,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,195,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,302,111,0,0,97,300,0,33,0,34,0,0,0,99,0,302,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,96,0,0,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,303,0,304,305,0,33,0,34,0,0,306,0,0,0,0,0],[0,96,0,202,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,211,211,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,311,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,218,301,0,0,0,0],[0,0,0,215,196,216,298,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,215,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,97,0,203,203,32,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,201,316,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,0,225,0,0,0,0],[0,0,0,317,318,319,320,8,9,0,10,0,0,321,322,0,0,16,0],[0,223,0,323,0,123,123,8,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,0,0,121,324,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,325,318,326,327,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,64,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,230,0,0,0,0,0],[0,0,0,227,0,228,121,0,9,0,10,0,0,230,0,0,0,0,0],[0,0,0,227,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0],[0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,237,237,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,332,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,333,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,337,0,0,0,137,338,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,244,339,0,0,0,0],[0,0,0,240,241,242,336,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,240,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,340,151,0,0,137,338,0,58,0,59,0,0,0,139,0,340,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,136,0,0,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,341,0,342,343,0,58,0,59,0,0,344,0,0,0,0,0],[0,136,0,247,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,256,256,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,349,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,263,339,0,0,0,0],[0,0,0,260,241,261,336,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,260,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,137,0,248,248,57,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,246,354,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0],[0,355,90,0,0,121,125,0,9,0,10,0,0,0,42,0,355,0,0],[0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,357,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,270,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0],[0,0,0,364,116,365,366,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,40,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,0,281,0,0,0,0],[0,0,0,369,370,371,372,22,23,0,24,0,0,373,374,0,0,27,0],[0,279,0,375,0,177,177,22,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,0,0,175,376,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,377,370,378,379,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,90,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,286,0,0,0,0,0],[0,0,0,283,0,284,175,0,23,0,24,0,0,286,0,0,0,0,0],[0,0,0,283,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0],[0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,293,293,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,385,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,76,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,0,301,0,0,0,0],[0,0,0,387,388,389,390,32,33,0,34,0,0,391,392,0,0,37,0],[0,299,0,393,0,203,203,32,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,0,0,201,394,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,395,388,396,397,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,111,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,306,0,0,0,0,0],[0,0,0,303,0,304,201,0,33,0,34,0,0,306,0,0,0,0,0],[0,0,0,303,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,0],[0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,313,313,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,403,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,97,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,407,0,0,0,40,408,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,321,409,0,0,0,0],[0,0,0,317,318,319,406,8,9,0,10,0,0,321,322,0,0,16,0],[0,0,0,317,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,410,64,0,0,40,408,0,9,0,10,0,0,0,42,0,410,0,0],[0,223,0,0,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,323,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,328,409,0,0,0,0],[0,0,0,325,318,326,406,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,325,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0],[0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,413,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,0,339,0,0,0,0],[0,0,0,414,415,416,417,57,58,0,59,0,0,418,419,0,0,62,0],[0,337,0,420,0,248,248,57,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,0,0,246,421,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,422,415,423,424,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,151,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,344,0,0,0,0,0],[0,0,0,341,0,342,246,0,58,0,59,0,0,344,0,0,0,0,0],[0,0,0,341,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0],[0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,351,351,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,430,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,137,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,432,116,433,434,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,359,359,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,437,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,438,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,367,225,0,0,0,0],[0,0,0,364,116,365,445,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,364,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,448,0,0,0,76,449,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,373,450,0,0,0,0],[0,0,0,369,370,371,447,22,23,0,24,0,0,373,374,0,0,27,0],[0,0,0,369,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,451,90,0,0,76,449,0,23,0,24,0,0,0,78,0,451,0,0],[0,279,0,0,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,375,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,380,450,0,0,0,0],[0,0,0,377,370,378,447,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,377,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0],[0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,457,0,0,0,97,458,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,391,459,0,0,0,0],[0,0,0,387,388,389,456,32,33,0,34,0,0,391,392,0,0,37,0],[0,0,0,387,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,460,111,0,0,97,458,0,33,0,34,0,0,0,99,0,460,0,0],[0,299,0,0,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,393,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,398,459,0,0,0,0],[0,0,0,395,388,396,456,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,395,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0],[0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,0,409,0,0,0,0],[0,0,0,464,465,466,467,8,9,0,10,0,0,468,469,0,0,16,0],[0,407,0,470,0,123,123,8,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,0,0,121,471,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,472,465,473,474,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,0,0,0,0,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0],[0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,479,0,0,0,137,480,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,418,481,0,0,0,0],[0,0,0,414,415,416,478,57,58,0,59,0,0,418,419,0,0,62,0],[0,0,0,414,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,482,151,0,0,137,480,0,58,0,59,0,0,0,139,0,482,0,0],[0,337,0,0,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,420,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,425,481,0,0,0,0],[0,0,0,422,415,423,478,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,422,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,0,0,0,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0],[0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,435,225,0,0,0,0],[0,0,0,432,116,433,445,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,432,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,440,440,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,489,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,490,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,495,0,496,497,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,0,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,0,225,0,0,0,0],[0,0,0,0,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,0,450,0,0,0,0],[0,0,0,499,500,501,502,22,23,0,24,0,0,503,504,0,0,27,0],[0,448,0,505,0,177,177,22,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,0,0,175,506,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,507,500,508,509,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,0,0,0,0,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0],[0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,0,459,0,0,0,0],[0,0,0,512,513,514,515,32,33,0,34,0,0,516,517,0,0,37,0],[0,457,0,518,0,203,203,32,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,0,0,201,519,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,520,513,521,522,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,0,0,0,0,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,0,0],[0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,527,0,0,0,40,528,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,468,529,0,0,0,0],[0,0,0,464,465,466,526,8,9,0,10,0,0,468,469,0,0,16,0],[0,0,0,464,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,530,64,0,0,40,528,0,9,0,10,0,0,0,42,0,530,0,0],[0,407,0,0,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,470,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,475,529,0,0,0,0],[0,0,0,472,465,473,526,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,472,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],[0,0,0,0,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,0,481,0,0,0,0],[0,0,0,531,532,533,534,57,58,0,59,0,0,535,536,0,0,62,0],[0,479,0,537,0,248,248,57,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,0,0,246,538,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,539,532,540,541,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,0,0,0,0,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,0],[0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,358,0,0],[0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,492,492,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,547,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,548,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,274,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,498,0,0,0,0,0],[0,0,0,495,0,496,368,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,495,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,553,0,0,0,76,554,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,503,555,0,0,0,0],[0,0,0,499,500,501,552,22,23,0,24,0,0,503,504,0,0,27,0],[0,0,0,499,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,556,90,0,0,76,554,0,23,0,24,0,0,0,78,0,556,0,0],[0,448,0,0,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,505,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,510,555,0,0,0,0],[0,0,0,507,500,508,552,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,507,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,559,0,0,0,97,560,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,516,561,0,0,0,0],[0,0,0,512,513,514,558,32,33,0,34,0,0,516,517,0,0,37,0],[0,0,0,512,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,562,111,0,0,97,560,0,33,0,34,0,0,0,99,0,562,0,0],[0,457,0,0,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,518,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,523,561,0,0,0,0],[0,0,0,520,513,521,558,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,520,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0],[0,0,0,0,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,0,529,0,0,0,0],[0,0,0,563,66,564,565,8,9,0,10,0,0,566,68,0,0,16,0],[0,527,0,567,0,123,123,8,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,0,0,121,568,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,569,66,570,571,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,575,0,0,0,137,576,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,535,577,0,0,0,0],[0,0,0,531,532,533,574,57,58,0,59,0,0,535,536,0,0,62,0],[0,0,0,531,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,578,151,0,0,137,576,0,58,0,59,0,0,0,139,0,578,0,0],[0,479,0,0,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,537,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,542,577,0,0,0,0],[0,0,0,539,532,540,574,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,539,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0],[0,0,0,0,0,0,0,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,439,0,0],[0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,581,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,0,555,0,0,0,0],[0,0,0,582,91,583,584,22,23,0,24,0,0,585,93,0,0,27,0],[0,553,0,586,0,177,177,22,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,0,0,175,587,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,588,91,589,590,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,0,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,0,561,0,0,0,0],[0,0,0,592,112,593,594,32,33,0,34,0,0,595,114,0,0,37,0],[0,559,0,596,0,203,203,32,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,0,0,201,597,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,598,112,599,600,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,566,165,0,0,0,0],[0,0,0,563,66,564,67,8,9,0,10,0,0,566,68,0,0,16,0],[0,0,0,563,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,527,0,0,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,567,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,572,165,0,0,0,0],[0,0,0,569,66,570,67,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,569,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,0,577,0,0,0,0],[0,0,0,603,152,604,605,57,58,0,59,0,0,606,154,0,0,62,0],[0,575,0,607,0,248,248,57,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,0,0,246,608,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,609,152,610,611,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,0,0,0,0,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,491,0,0],[0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,585,194,0,0,0,0],[0,0,0,582,91,583,92,22,23,0,24,0,0,585,93,0,0,27,0],[0,0,0,582,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,553,0,0,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,586,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,591,194,0,0,0,0],[0,0,0,588,91,589,92,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,588,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,595,220,0,0,0,0],[0,0,0,592,112,593,113,32,33,0,34,0,0,595,114,0,0,37,0],[0,0,0,592,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,559,0,0,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,596,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,601,220,0,0,0,0],[0,0,0,598,112,599,113,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,598,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,606,265,0,0,0,0],[0,0,0,603,152,604,153,57,58,0,59,0,0,606,154,0,0,62,0],[0,0,0,603,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,575,0,0,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,607,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,612,265,0,0,0,0],[0,0,0,609,152,610,153,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,609,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0]],Ma=[!1,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!1,!0,!1,!0,!0,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!0,!1,!1,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!0,!1,!0,!1,!0,!0,!1,!1,!0,!0,!1,!1,!0,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!1,!1,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!1,!0,!0,!1,!1,!1,!1,!1,!0,!0,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!1,!0,!0,!1,!0,!0,!0],Ra=[[],["broken_cluster"],["consonant_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],[],["broken_cluster"],["symbol_cluster"],[],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["symbol_cluster"],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],[],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],[],[],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],["consonant_syllable"],["vowel_syllable"],["standalone_cluster"]],Fa={ stateTable:La,accepting:Ma,tags:Ra},za=["O","IND","S","GB","B","FM","CGJ","VMAbv","VMPst","VAbv","VPst","CMBlw","VPre","VBlw","H","VMBlw","CMAbv","MBlw","CS","R","SUB","MPst","MPre","FAbv","FPst","FBlw","SMAbv","SMBlw","VMPre","ZWNJ","ZWJ","WJ","VS","N","HN","MAbv"],Da={2507:[2503,2494],2508:[2503,2519],2888:[2887,2902],2891:[2887,2878],2892:[2887,2903],3018:[3014,3006],3019:[3015,3006],3020:[3014,3031],3144:[3142,3158],3264:[3263,3285],3271:[3270,3285],3272:[3270,3286],3274:[3270,3266],3275:[3270,3266,3285],3402:[3398,3390],3403:[3399,3390],3404:[3398,3415],3546:[3545,3530],3548:[3545,3535],3549:[3545,3535,3530],3550:[3545,3551],3635:[3661,3634],3763:[3789,3762],3955:[3953,3954],3957:[3953,3956],3958:[4018,3968],3959:[4018,3953,3968],3960:[4019,3968],3961:[4019,3953,3968],3969:[3953,3968],6971:[6970,6965],6973:[6972,6965],6976:[6974,6965],6977:[6975,6965],6979:[6978,6965],69934:[69937,69927],69935:[69938,69927],70475:[70471,70462],70476:[70471,70487],70843:[70841,70842],70844:[70841,70832],70846:[70841,70845],71098:[71096,71087],71099:[71097,71087]},Na=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[2,2,3,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,17,18,11,19,20,21,22,0,0,23,0,0,2,0,24,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,27,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,39,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,49,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,23,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,53,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,46,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,23,0,0,0,0,0,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,46,0,0,0,0,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0]],Ua=[!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0],Wa=[[],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["symbol_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["virama_terminated_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["number_joiner_terminated_cluster"],["standard_cluster"],["standard_cluster"],["numeral_cluster"]],ja={categories:za,decompositions:Da,stateTable:Na,accepting:Ua,tags:Wa},Ga={X:1,C:2,V:4,N:8,H:16,ZWNJ:32,ZWJ:64,M:128,SM:256,VD:512,A:1024,Placeholder:2048,Dotted_Circle:4096,RS:8192,Coeng:16384,Repha:32768,Ra:65536,CM:1<<17,Symbol:1<<18},Va={Start:1,Ra_To_Become_Reph:2,Pre_M:4,Pre_C:8,Base_C:16,After_Main:32,Above_C:64,Before_Sub:128,Below_C:256,After_Sub:512,Before_Post:1024,Post_C:2048,After_Post:4096,Final_C:8192,SMVD:16384,End:32768},Ha=Ga.C|Ga.Ra|Ga.CM|Ga.V|Ga.Placeholder|Ga.Dotted_Circle,qa=Ga.ZWJ|Ga.ZWNJ,Za=Ga.H|Ga.Coeng,Ya={Default:{hasOldSpec:!1,virama:0,basePos:"Last",rephPos:Va.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Devanagari:{hasOldSpec:!0,virama:2381,basePos:"Last",rephPos:Va.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Bengali:{hasOldSpec:!0,virama:2509,basePos:"Last",rephPos:Va.After_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gurmukhi:{hasOldSpec:!0,virama:2637,basePos:"Last",rephPos:Va.Before_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gujarati:{hasOldSpec:!0,virama:2765,basePos:"Last",rephPos:Va.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Oriya:{hasOldSpec:!0,virama:2893,basePos:"Last",rephPos:Va.After_Main,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Tamil:{hasOldSpec:!0,virama:3021,basePos:"Last",rephPos:Va.After_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Telugu:{hasOldSpec:!0,virama:3149,basePos:"Last",rephPos:Va.After_Post,rephMode:"Explicit",blwfMode:"Post_Only"},Kannada:{hasOldSpec:!0,virama:3277,basePos:"Last",rephPos:Va.After_Post,rephMode:"Implicit",blwfMode:"Post_Only"},Malayalam:{hasOldSpec:!0,virama:3405,basePos:"Last",rephPos:Va.After_Main,rephMode:"Log_Repha",blwfMode:"Pre_And_Post"},Khmer:{hasOldSpec:!1,virama:6098,basePos:"First",rephPos:Va.Ra_To_Become_Reph,rephMode:"Vis_Repha",blwfMode:"Pre_And_Post"}},Xa={6078:[6081,6078],6079:[6081,6079],6080:[6081,6080],6084:[6081,6084],6085:[6081,6085]},Ka=ja.decompositions,Ja=new _t(e("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","base64")),Qa=new kt(Fa),$a=(Io=Eo=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.planFeatures=function(t){t.addStage(B),t.addStage(["locl","ccmp"]),t.addStage(D),t.addStage("nukt"),t.addStage("akhn"),t.addStage("rphf",!1),t.addStage("rkrf"),t.addStage("pref",!1),t.addStage("blwf",!1),t.addStage("abvf",!1),t.addStage("half",!1),t.addStage("pstf",!1),t.addStage("vatu"),t.addStage("cjct"),t.addStage("cfar",!1),t.addStage(N),t.addStage({local:["init"],global:["pres","abvs","blws","psts","haln","dist","abvm","blwm","calt","clig"]}),t.unicodeScript=p(t.script),t.indicConfig=Ya[t.unicodeScript]||Ya.Default,t.isOldSpec=t.indicConfig.hasOldSpec&&"2"!==t.script[t.script.length-1]},e.assignFeatures=function(t,e){for(var n=e.length-1;n>=0;n--)!function(n){var r=e[n].codePoints[0],i=Xa[r]||Ka[r];if(i){var o=i.map(function(r){var i=t.font.glyphForCodePoint(r);return new $o(t.font,i.id,[r],e[n].features)});e.splice.apply(e,[n,1].concat(o))}}(n)},e}(jo),Eo.zeroMarkWidths="NONE",Io),ts=function t(e,n,r,i){lt(this,t),this.category=e,this.position=n,this.syllableType=r,this.syllable=i},es=ja.categories,ns=ja.decompositions,rs=new _t(e("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","base64")),is=new kt(ja),os=(Oo=To=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.planFeatures=function(t){t.addStage(j),t.addStage(["locl","ccmp","nukt","akhn"]),t.addStage(G),t.addStage(["rphf"],!1),t.addStage(V),t.addStage(G),t.addStage(["pref"]),t.addStage(H),t.addStage(["rkrf","abvf","blwf","half","pstf","vatu","cjct"]),t.addStage(q),t.addStage(["abvs","blws","pres","psts","dist","abvm","blwm"])},e.assignFeatures=function(t,e){for(var n=e.length-1;n>=0;n--)!function(n){var r=e[n].codePoints[0];if(ns[r]){var i=ns[r].map(function(r){var i=t.font.glyphForCodePoint(r);return new $o(t.font,i.id,[r],e[n].features)});e.splice.apply(e,[n,1].concat(i))}}(n)},e}(jo),To.zeroMarkWidths="BEFORE_GPOS",Oo),as=function t(e,n,r){lt(this,t),this.category=e,this.syllableType=n,this.syllable=r},ss={arab:Xo,mong:Xo,syrc:Xo,"nko ":Xo,phag:Xo,mand:Xo,mani:Xo,phlp:Xo,hang:ta,bng2:$a,beng:$a,dev2:$a,deva:$a,gjr2:$a,gujr:$a,guru:$a,gur2:$a,knda:$a,knd2:$a,mlm2:$a,mlym:$a,ory2:$a,orya:$a,taml:$a,tml2:$a,telu:$a,tel2:$a,khmr:$a,bali:os,batk:os,brah:os,bugi:os,buhd:os,cakm:os,cham:os,dupl:os,egyp:os,gran:os,hano:os,java:os,kthi:os,kali:os,khar:os,khoj:os,sind:os,lepc:os,limb:os,mahj:os,mtei:os,modi:os,hmng:os,rjng:os,saur:os,shrd:os,sidd:os,sinh:os,sund:os,sylo:os,tglg:os,tagb:os,tale:os,lana:os,tavt:os,takr:os,tibt:os,tfng:os,tirh:os,latn:jo,DFLT:jo},us=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype.applyLookup=function(t,e){var n=this;switch(t){case 1:var r=this.coverageIndex(e.coverage);if(-1===r)return!1;var i=this.glyphIterator.cur;switch(e.version){case 1:i.id=i.id+e.deltaGlyphID&65535;break;case 2:i.id=e.substitute.get(r)}return!0;case 2:var o=this.coverageIndex(e.coverage);if(-1!==o){var a,s=e.sequences.get(o);this.glyphIterator.cur.id=s[0],this.glyphIterator.cur.ligatureComponent=0;var u=this.glyphIterator.cur.features,l=this.glyphIterator.cur,c=s.slice(1).map(function(t,e){var r=new $o(n.font,t,void 0,u);return r.shaperInfo=l.shaperInfo,r.isLigated=l.isLigated,r.ligatureComponent=e+1,r.substituted=!0,r.isMultiplied=!0,r});return(a=this.glyphs).splice.apply(a,[this.glyphIterator.index+1,0].concat(c)),!0}return!1;case 3:var f=this.coverageIndex(e.coverage);if(-1!==f){return this.glyphIterator.cur.id=e.alternateSet.get(f)[0],!0}return!1;case 4:var h=this.coverageIndex(e.coverage);if(-1===h)return!1;for(var p=e.ligatureSets.get(h),d=Array.isArray(p),g=0,p=d?p:it(p);;){var y;if(d){if(g>=p.length)break;y=p[g++]}else{if(g=p.next(),g.done)break;y=g.value}var v=y,b=this.sequenceMatchIndices(1,v.components);if(b){for(var m=this.glyphIterator.cur,w=m.codePoints.slice(),x=b,_=Array.isArray(x),k=0,x=_?x:it(x);;){var S;if(_){if(k>=x.length)break;S=x[k++]}else{if(k=x.next(),k.done)break;S=k.value}var C=S;w.push.apply(w,this.glyphs[C].codePoints)}var A=new $o(this.font,v.glyph,w,m.features);A.shaperInfo=m.shaperInfo,A.isLigated=!0,A.substituted=!0;for(var P=m.isMark,E=0;E<b.length&&P;E++)P=this.glyphs[b[E]].isMark;A.ligatureID=P?null:this.ligatureID++;for(var I=m.ligatureID,T=m.codePoints.length,O=T,B=this.glyphIterator.index+1,L=b,M=Array.isArray(L),R=0,L=M?L:it(L);;){var F;if(M){if(R>=L.length)break;F=L[R++]}else{if(R=L.next(),R.done)break;F=R.value}var z=F;if(P)B=z;else for(;B<z;){var D=O-T+Math.min(this.glyphs[B].ligatureComponent||1,T);this.glyphs[B].ligatureID=A.ligatureID,this.glyphs[B].ligatureComponent=D,B++}I=this.glyphs[B].ligatureID,T=this.glyphs[B].codePoints.length,O+=T,B++}if(I&&!P)for(var N=B;N<this.glyphs.length&&this.glyphs[N].ligatureID===I;N++){var D=O-T+Math.min(this.glyphs[N].ligatureComponent||1,T);this.glyphs[N].ligatureComponent=D}for(var U=b.length-1;U>=0;U--)this.glyphs.splice(b[U],1);return this.glyphs[this.glyphIterator.index]=A,!0}}return!1;case 5:return this.applyContext(e);case 6:return this.applyChainingContext(e);case 7:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("GSUB lookupType "+t+" is not supported")}},e}(Qo),ls=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype.applyPositionValue=function(t,e){var n=this.positions[this.glyphIterator.peekIndex(t)];null!=e.xAdvance&&(n.xAdvance+=e.xAdvance),null!=e.yAdvance&&(n.yAdvance+=e.yAdvance),null!=e.xPlacement&&(n.xOffset+=e.xPlacement),null!=e.yPlacement&&(n.yOffset+=e.yPlacement);var r=this.font._variationProcessor,i=this.font.GDEF&&this.font.GDEF.itemVariationStore;r&&i&&(e.xPlaDevice&&(n.xOffset+=r.getDelta(i,e.xPlaDevice.a,e.xPlaDevice.b)),e.yPlaDevice&&(n.yOffset+=r.getDelta(i,e.yPlaDevice.a,e.yPlaDevice.b)),e.xAdvDevice&&(n.xAdvance+=r.getDelta(i,e.xAdvDevice.a,e.xAdvDevice.b)),e.yAdvDevice&&(n.yAdvance+=r.getDelta(i,e.yAdvDevice.a,e.yAdvDevice.b)))},e.prototype.applyLookup=function(t,e){switch(t){case 1:var n=this.coverageIndex(e.coverage);if(-1===n)return!1;switch(e.version){case 1:this.applyPositionValue(0,e.value);break;case 2:this.applyPositionValue(0,e.values.get(n))}return!0;case 2:var r=this.glyphIterator.peek();if(!r)return!1;var i=this.coverageIndex(e.coverage);if(-1===i)return!1;switch(e.version){case 1:for(var o=e.pairSets.get(i),a=o,s=Array.isArray(a),u=0,a=s?a:it(a);;){var l;if(s){if(u>=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;if(c.secondGlyph===r.id)return this.applyPositionValue(0,c.value1),this.applyPositionValue(1,c.value2),!0}return!1;case 2:var f=this.getClassID(this.glyphIterator.cur.id,e.classDef1),h=this.getClassID(r.id,e.classDef2);if(-1===f||-1===h)return!1;var p=e.classRecords.get(f).get(h);return this.applyPositionValue(0,p.value1),this.applyPositionValue(1,p.value2),!0}case 3:var d=this.glyphIterator.peekIndex(),g=this.glyphs[d];if(!g)return!1;var y=e.entryExitRecords[this.coverageIndex(e.coverage)];if(!y||!y.exitAnchor)return!1;var v=e.entryExitRecords[this.coverageIndex(e.coverage,g.id)];if(!v||!v.entryAnchor)return!1;var b=this.getAnchor(v.entryAnchor),m=this.getAnchor(y.exitAnchor),w=this.positions[this.glyphIterator.index],x=this.positions[d];switch(this.direction){case"ltr":w.xAdvance=m.x+w.xOffset;var _=b.x+x.xOffset;x.xAdvance-=_,x.xOffset-=_;break;case"rtl":_=m.x+w.xOffset,w.xAdvance-=_,w.xOffset-=_,x.xAdvance=b.x+x.xOffset}return this.glyphIterator.flags.rightToLeft?(this.glyphIterator.cur.cursiveAttachment=d,w.yOffset=b.y-m.y):(g.cursiveAttachment=this.glyphIterator.index,w.yOffset=m.y-b.y),!0;case 4:var k=this.coverageIndex(e.markCoverage);if(-1===k)return!1;for(var S=this.glyphIterator.index;--S>=0&&(this.glyphs[S].isMark||this.glyphs[S].ligatureComponent>0););if(S<0)return!1;var C=this.coverageIndex(e.baseCoverage,this.glyphs[S].id);if(-1===C)return!1;var A=e.markArray[k],P=e.baseArray[C][A.class];return this.applyAnchor(A,P,S),!0;case 5:var E=this.coverageIndex(e.markCoverage);if(-1===E)return!1;for(var I=this.glyphIterator.index;--I>=0&&this.glyphs[I].isMark;);if(I<0)return!1;var T=this.coverageIndex(e.ligatureCoverage,this.glyphs[I].id);if(-1===T)return!1;var O=e.ligatureArray[T],B=this.glyphIterator.cur,L=this.glyphs[I],M=L.ligatureID&&L.ligatureID===B.ligatureID&&B.ligatureComponent>0?Math.min(B.ligatureComponent,L.codePoints.length)-1:L.codePoints.length-1,R=e.markArray[E],F=O[M][R.class];return this.applyAnchor(R,F,I),!0;case 6:var z=this.coverageIndex(e.mark1Coverage);if(-1===z)return!1;var D=this.glyphIterator.peekIndex(-1),N=this.glyphs[D];if(!N||!N.isMark)return!1;var U=this.glyphIterator.cur,W=!1;if(U.ligatureID===N.ligatureID?U.ligatureID?U.ligatureComponent===N.ligatureComponent&&(W=!0):W=!0:(U.ligatureID&&!U.ligatureComponent||N.ligatureID&&!N.ligatureComponent)&&(W=!0),!W)return!1;var j=this.coverageIndex(e.mark2Coverage,N.id);if(-1===j)return!1;var G=e.mark1Array[z],V=e.mark2Array[j][G.class];return this.applyAnchor(G,V,D),!0;case 7:return this.applyContext(e);case 8:return this.applyChainingContext(e);case 9:return this.applyLookup(e.lookupType,e.extension);default:throw new Error("Unsupported GPOS table: "+t)}},e.prototype.applyAnchor=function(t,e,n){var r=this.getAnchor(e),i=this.getAnchor(t.markAnchor),o=(this.positions[n],this.positions[this.glyphIterator.index]);o.xOffset=r.x-i.x,o.yOffset=r.y-i.y,this.glyphIterator.cur.markAttachment=n},e.prototype.getAnchor=function(t){var e=t.xCoordinate,n=t.yCoordinate,r=this.font._variationProcessor,i=this.font.GDEF&&this.font.GDEF.itemVariationStore;return r&&i&&(t.xDeviceTable&&(e+=r.getDelta(i,t.xDeviceTable.a,t.xDeviceTable.b)),t.yDeviceTable&&(n+=r.getDelta(i,t.yDeviceTable.a,t.yDeviceTable.b))),{x:e,y:n}},e.prototype.applyFeatures=function(e,n,r){t.prototype.applyFeatures.call(this,e,n,r);for(var i=0;i<this.glyphs.length;i++)this.fixCursiveAttachment(i);this.fixMarkAttachment()},e.prototype.fixCursiveAttachment=function(t){var e=this.glyphs[t];if(null!=e.cursiveAttachment){var n=e.cursiveAttachment;e.cursiveAttachment=null,this.fixCursiveAttachment(n),this.positions[t].yOffset+=this.positions[n].yOffset}},e.prototype.fixMarkAttachment=function(){for(var t=0;t<this.glyphs.length;t++){var e=this.glyphs[t];if(null!=e.markAttachment){var n=e.markAttachment;if(this.positions[t].xOffset+=this.positions[n].xOffset,this.positions[t].yOffset+=this.positions[n].yOffset,"ltr"===this.direction)for(var r=n;r<t;r++)this.positions[t].xOffset-=this.positions[r].xAdvance,this.positions[t].yOffset-=this.positions[r].yAdvance;else for(var i=n+1;i<t+1;i++)this.positions[t].xOffset+=this.positions[i].xAdvance,this.positions[t].yOffset+=this.positions[i].yAdvance}}},e}(Qo),cs=function(){function t(e){lt(this,t),this.font=e,this.glyphInfos=null,this.plan=null,this.GSUBProcessor=null,this.GPOSProcessor=null,this.fallbackPosition=!0,e.GSUB&&(this.GSUBProcessor=new us(e,e.GSUB)),e.GPOS&&(this.GPOSProcessor=new ls(e,e.GPOS))}return t.prototype.setup=function(t){var e=this;this.glyphInfos=t.glyphs.map(function(t){return new $o(e.font,t.id,[].concat(t.codePoints))});var n=null;this.GPOSProcessor&&(n=this.GPOSProcessor.selectScript(t.script,t.language,t.direction)),this.GSUBProcessor&&(n=this.GSUBProcessor.selectScript(t.script,t.language,t.direction)),this.shaper=K(n),this.plan=new Fo(this.font,n,t.direction),this.shaper.plan(this.plan,this.glyphInfos,t.features);for(var r in this.plan.allFeatures)t.features[r]=!0},t.prototype.substitute=function(t){var e=this;this.GSUBProcessor&&(this.plan.process(this.GSUBProcessor,this.glyphInfos),t.glyphs=this.glyphInfos.map(function(t){return e.font.getGlyph(t.id,t.codePoints)}))},t.prototype.position=function(t){return"BEFORE_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(t.positions),this.GPOSProcessor&&this.plan.process(this.GPOSProcessor,this.glyphInfos,t.positions),"AFTER_GPOS"===this.shaper.zeroMarkWidths&&this.zeroMarkAdvances(t.positions),"rtl"===t.direction&&(t.glyphs.reverse(),t.positions.reverse()),this.GPOSProcessor&&this.GPOSProcessor.features},t.prototype.zeroMarkAdvances=function(t){for(var e=0;e<this.glyphInfos.length;e++)this.glyphInfos[e].isMark&&(t[e].xAdvance=0,t[e].yAdvance=0)},t.prototype.cleanup=function(){this.glyphInfos=null,this.plan=null,this.shaper=null},t.prototype.getAvailableFeatures=function(t,e){var n=[];return this.GSUBProcessor&&(this.GSUBProcessor.selectScript(t,e),n.push.apply(n,at(this.GSUBProcessor.features))),this.GPOSProcessor&&(this.GPOSProcessor.selectScript(t,e),n.push.apply(n,at(this.GPOSProcessor.features))),n},t}(),fs=function(){function t(e){lt(this,t),this.font=e,this.unicodeLayoutEngine=null,this.kernProcessor=null,this.font.morx?this.engine=new Ro(this.font):(this.font.GSUB||this.font.GPOS)&&(this.engine=new cs(this.font))}return t.prototype.layout=function(t,e,n,r,i){if("string"==typeof e&&(i=r,r=n,n=e,e=[]),"string"==typeof t){null==n&&(n=d(t));var o=this.font.glyphsForString(t)}else{if(null==n){for(var a=[],s=t,u=Array.isArray(s),l=0,s=u?s:it(s);;){var c;if(u){if(l>=s.length)break;c=s[l++]}else{if(l=s.next(),l.done)break;c=l.value}var f=c;a.push.apply(a,f.codePoints)}n=g(a)}var o=t}var h=new ho(o,e,n,r,i);return 0===o.length?(h.positions=[],h):(this.engine&&this.engine.setup&&this.engine.setup(h),this.substitute(h),this.position(h),this.hideDefaultIgnorables(h.glyphs,h.positions),this.engine&&this.engine.cleanup&&this.engine.cleanup(),h)},t.prototype.substitute=function(t){this.engine&&this.engine.substitute&&this.engine.substitute(t)},t.prototype.position=function(t){t.positions=t.glyphs.map(function(t){return new po(t.advanceWidth)});var e=null;this.engine&&this.engine.position&&(e=this.engine.position(t)),e||this.engine&&!this.engine.fallbackPosition||(this.unicodeLayoutEngine||(this.unicodeLayoutEngine=new to(this.font)),this.unicodeLayoutEngine.positionGlyphs(t.glyphs,t.positions)),e&&e.kern||!1===t.features.kern||!this.font.kern||(this.kernProcessor||(this.kernProcessor=new $i(this.font)),this.kernProcessor.process(t.glyphs,t.positions),t.features.kern=!0)},t.prototype.hideDefaultIgnorables=function(t,e){for(var n=this.font.glyphForCodePoint(32),r=0;r<t.length;r++)this.isDefaultIgnorable(t[r].codePoints[0])&&(t[r]=n,e[r].xAdvance=0,e[r].yAdvance=0)}, t.prototype.isDefaultIgnorable=function(t){var e=t>>16;if(0===e)switch(t>>8){case 0:return 173===t;case 3:return 847===t;case 6:return 1564===t;case 23:return 6068<=t&&t<=6069;case 24:return 6155<=t&&t<=6158;case 32:return 8203<=t&&t<=8207||8234<=t&&t<=8238||8288<=t&&t<=8303;case 254:return 65024<=t&&t<=65039||65279===t;case 255:return 65520<=t&&t<=65528;default:return!1}else switch(e){case 1:return 113824<=t&&t<=113827||119155<=t&&t<=119162;case 14:return 917504<=t&&t<=921599;default:return!1}},t.prototype.getAvailableFeatures=function(t,e){var n=[];return this.engine&&n.push.apply(n,this.engine.getAvailableFeatures(t,e)),this.font.kern&&-1===n.indexOf("kern")&&n.push("kern"),n},t.prototype.stringsForGlyph=function(t){for(var e=new wt,n=this.font._cmapProcessor.codePointsForGlyph(t),r=n,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a;e.add(bt(s))}if(this.engine&&this.engine.stringsForGlyph)for(var u=this.engine.stringsForGlyph(t),l=Array.isArray(u),c=0,u=l?u:it(u);;){var f;if(l){if(c>=u.length)break;f=u[c++]}else{if(c=u.next(),c.done)break;f=c.value}var h=f;e.add(h)}return mt(e)},t}(),hs={moveTo:"M",lineTo:"L",quadraticCurveTo:"Q",bezierCurveTo:"C",closePath:"Z"},ps=function(){function t(){lt(this,t),this.commands=[],this._bbox=null,this._cbox=null}return t.prototype.toFunction=function(){var t=this.commands.map(function(t){return" ctx."+t.command+"("+t.args.join(", ")+");"});return new Function("ctx",t.join("\n"))},t.prototype.toSVG=function(){return this.commands.map(function(t){var e=t.args.map(function(t){return Math.round(100*t)/100});return""+hs[t.command]+e.join(" ")}).join("")},t.prototype.mapPoints=function(e){for(var n=new t,r=this.commands,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}for(var s=a,u=[],l=0;l<s.args.length;l+=2){var c=e(s.args[l],s.args[l+1]),f=c[0],h=c[1];u.push(f,h)}n[s.command].apply(n,u)}return n},t.prototype.transform=function(t,e,n,r,i,o){return this.mapPoints(function(a,s){return a=t*a+n*s+i,s=e*a+r*s+o,[a,s]})},t.prototype.translate=function(t,e){return this.transform(1,0,0,1,t,e)},t.prototype.rotate=function(t){var e=Math.cos(t),n=Math.sin(t);return this.transform(e,n,-n,e,0,0)},t.prototype.scale=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;return this.transform(t,0,0,e,0,0)},ct(t,[{key:"cbox",get:function(){if(!this._cbox){for(var t=new eo,e=this.commands,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a=0;a<o.args.length;a+=2)t.addPoint(o.args[a],o.args[a+1])}this._cbox=ot(t)}return this._cbox}},{key:"bbox",get:function(){if(this._bbox)return this._bbox;for(var t=new eo,e=0,n=0,r=function(t){return Math.pow(1-t,3)*_[A]+3*Math.pow(1-t,2)*t*k[A]+3*(1-t)*Math.pow(t,2)*S[A]+Math.pow(t,3)*C[A]},i=this.commands,o=Array.isArray(i),a=0,i=o?i:it(i);;){var s;if(o){if(a>=i.length)break;s=i[a++]}else{if(a=i.next(),a.done)break;s=a.value}var u=s;switch(u.command){case"moveTo":case"lineTo":var l=u.args,c=l[0],f=l[1];t.addPoint(c,f),e=c,n=f;break;case"quadraticCurveTo":case"bezierCurveTo":if("quadraticCurveTo"===u.command)var h=u.args,p=h[0],d=h[1],g=h[2],y=h[3],v=e+2/3*(p-e),b=n+2/3*(d-n),m=g+2/3*(p-g),w=y+2/3*(d-y);else var x=u.args,v=x[0],b=x[1],m=x[2],w=x[3],g=x[4],y=x[5];t.addPoint(g,y);for(var _=[e,n],k=[v,b],S=[m,w],C=[g,y],A=0;A<=1;A++){var P=6*_[A]-12*k[A]+6*S[A],E=-3*_[A]+9*k[A]-9*S[A]+3*C[A];if(u=3*k[A]-3*_[A],0!==E){var I=Math.pow(P,2)-4*u*E;if(!(I<0)){var T=(-P+Math.sqrt(I))/(2*E);0<T&&T<1&&(0===A?t.addPoint(r(T),t.maxY):1===A&&t.addPoint(t.maxX,r(T)));var O=(-P-Math.sqrt(I))/(2*E);0<O&&O<1&&(0===A?t.addPoint(r(O),t.maxY):1===A&&t.addPoint(t.maxX,r(O)))}}else{if(0===P)continue;var B=-u/P;0<B&&B<1&&(0===A?t.addPoint(r(B),t.maxY):1===A&&t.addPoint(t.maxX,r(B)))}}e=g,n=y}}return this._bbox=ot(t)}}]),t}(),ds=["moveTo","lineTo","quadraticCurveTo","bezierCurveTo","closePath"],gs=0;gs<ds.length;gs++)!function(){var t=ds[gs];ps.prototype[t]=function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return this._bbox=this._cbox=null,this.commands.push({command:t,args:n}),this}}();var ys,vs,bs=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],ms=(ys=function(){function t(e,n,r){lt(this,t),this.id=e,this.codePoints=n,this._font=r,this.isMark=this.codePoints.every(xt.isMark),this.isLigature=this.codePoints.length>1}return t.prototype._getPath=function(){return new ps},t.prototype._getCBox=function(){return this.path.cbox},t.prototype._getBBox=function(){return this.path.bbox},t.prototype._getTableMetrics=function(t){if(this.id<t.metrics.length)return t.metrics.get(this.id);var e=t.metrics.get(t.metrics.length-1);return{advance:e?e.advance:0,bearing:t.bearings.get(this.id-t.metrics.length)||0}},t.prototype._getMetrics=function(t){if(this._metrics)return this._metrics;var e=this._getTableMetrics(this._font.hmtx),n=e.advance,r=e.bearing;if(this._font.vmtx)var i=this._getTableMetrics(this._font.vmtx),o=i.advance,a=i.bearing;else{var s=void 0;if(void 0!==t&&null!==t||(t=this.cbox),(s=this._font["OS/2"])&&s.version>0)var o=Math.abs(s.typoAscender-s.typoDescender),a=s.typoAscender-t.maxY;else var u=this._font.hhea,o=Math.abs(u.ascent-u.descent),a=u.ascent-t.maxY}return this._font._variationProcessor&&this._font.HVAR&&(n+=this._font._variationProcessor.getAdvanceAdjustment(this.id,this._font.HVAR)),this._metrics={advanceWidth:n,advanceHeight:o,leftBearing:r,topBearing:a}},t.prototype.getScaledPath=function(t){var e=1/this._font.unitsPerEm*t;return this.path.scale(e)},t.prototype._getName=function(){var t=this._font.post;if(!t)return null;switch(t.version){case 1:return bs[this.id];case 2:var e=t.glyphNameIndex[this.id];return e<bs.length?bs[e]:t.names[e-bs.length];case 2.5:return bs[this.id+t.offsets[this.id]];case 4:return String.fromCharCode(t.map[this.id])}},t.prototype.render=function(t,e){t.save();var n=1/this._font.head.unitsPerEm*e;t.scale(n,n),this.path.toFunction()(t),t.fill(),t.restore()},ct(t,[{key:"cbox",get:function(){return this._getCBox()}},{key:"bbox",get:function(){return this._getBBox()}},{key:"path",get:function(){return this._getPath()}},{key:"advanceWidth",get:function(){return this._getMetrics().advanceWidth}},{key:"advanceHeight",get:function(){return this._getMetrics().advanceHeight}},{key:"ligatureCaretPositions",get:function(){}},{key:"name",get:function(){return this._getName()}}]),t}(),J(ys.prototype,"cbox",[o],rt(ys.prototype,"cbox"),ys.prototype),J(ys.prototype,"bbox",[o],rt(ys.prototype,"bbox"),ys.prototype),J(ys.prototype,"path",[o],rt(ys.prototype,"path"),ys.prototype),J(ys.prototype,"advanceWidth",[o],rt(ys.prototype,"advanceWidth"),ys.prototype),J(ys.prototype,"advanceHeight",[o],rt(ys.prototype,"advanceHeight"),ys.prototype),J(ys.prototype,"name",[o],rt(ys.prototype,"name"),ys.prototype),ys),ws=new nt.Struct({numberOfContours:nt.int16,xMin:nt.int16,yMin:nt.int16,xMax:nt.int16,yMax:nt.int16}),xs=function(){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;lt(this,t),this.onCurve=e,this.endContour=n,this.x=r,this.y=i}return t.prototype.copy=function(){return new t(this.onCurve,this.endContour,this.x,this.y)},t}(),_s=function t(e,n,r){lt(this,t),this.glyphID=e,this.dx=n,this.dy=r,this.pos=0,this.scaleX=this.scaleY=1,this.scale01=this.scale10=0},ks=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype._getCBox=function(t){if(this._font._variationProcessor&&!t)return this.path.cbox;var e=this._font._getTableStream("glyf");e.pos+=this._font.loca.offsets[this.id];var n=ws.decode(e),r=new eo(n.xMin,n.yMin,n.xMax,n.yMax);return ot(r)},e.prototype._parseGlyphCoord=function(t,e,n,r){if(n){var i=t.readUInt8();r||(i=-i),i+=e}else if(r)var i=e;else var i=e+t.readInt16BE();return i},e.prototype._decode=function(){var t=this._font.loca.offsets[this.id];if(t===this._font.loca.offsets[this.id+1])return null;var e=this._font._getTableStream("glyf");e.pos+=t;var n=e.pos,r=ws.decode(e);return r.numberOfContours>0?this._decodeSimple(r,e):r.numberOfContours<0&&this._decodeComposite(r,e,n),r},e.prototype._decodeSimple=function(t,e){t.points=[];var n=new nt.Array(nt.uint16,t.numberOfContours).decode(e);t.instructions=new nt.Array(nt.uint8,nt.uint16).decode(e);for(var r=[],i=n[n.length-1]+1;r.length<i;){var o=e.readUInt8();if(r.push(o),8&o)for(var a=e.readUInt8(),s=0;s<a;s++)r.push(o)}for(var u=0;u<r.length;u++){var o=r[u],l=new xs(!!(1&o),n.indexOf(u)>=0,0,0);t.points.push(l)}for(var c=0,u=0;u<r.length;u++){var o=r[u];t.points[u].x=c=this._parseGlyphCoord(e,c,2&o,16&o)}for(var f=0,u=0;u<r.length;u++){var o=r[u];t.points[u].y=f=this._parseGlyphCoord(e,f,4&o,32&o)}if(this._font._variationProcessor){var h=t.points.slice();h.push.apply(h,this._getPhantomPoints(t)),this._font._variationProcessor.transformPoints(this.id,h),t.phantomPoints=h.slice(-4)}},e.prototype._decodeComposite=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t.components=[];for(var r=!1,i=32;32&i;){i=e.readUInt16BE();var o=e.pos-n,a=e.readUInt16BE();if(r||(r=0!=(256&i)),1&i)var s=e.readInt16BE(),u=e.readInt16BE();else var s=e.readInt8(),u=e.readInt8();var l=new _s(a,s,u);l.pos=o,8&i?l.scaleX=l.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824:64&i?(l.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,l.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824):128&i&&(l.scaleX=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,l.scale01=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,l.scale10=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824,l.scaleY=(e.readUInt8()<<24|e.readUInt8()<<16)/1073741824),t.components.push(l)}if(this._font._variationProcessor){for(var c=[],f=0;f<t.components.length;f++){var l=t.components[f];c.push(new xs(!0,!0,l.dx,l.dy))}c.push.apply(c,this._getPhantomPoints(t)),this._font._variationProcessor.transformPoints(this.id,c),t.phantomPoints=c.splice(-4,4);for(var h=0;h<c.length;h++){var p=c[h];t.components[h].dx=p.x,t.components[h].dy=p.y}}return r},e.prototype._getPhantomPoints=function(t){var e=this._getCBox(!0);null==this._metrics&&(this._metrics=ms.prototype._getMetrics.call(this,e));var n=this._metrics,r=n.advanceWidth,i=n.advanceHeight,o=n.leftBearing,a=n.topBearing;return[new xs(!1,!0,t.xMin-o,0),new xs(!1,!0,t.xMin-o+r,0),new xs(!1,!0,0,t.yMax+a),new xs(!1,!0,0,t.yMax+a+i)]},e.prototype._getContours=function(){var t=this._decode();if(!t)return[];var e=[];if(t.numberOfContours<0)for(var n=t.components,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}for(var a=o,s=this._font.getGlyph(a.glyphID)._getContours(),u=0;u<s.length;u++)for(var l=s[u],c=0;c<l.length;c++){var f=l[c],h=f.x*a.scaleX+f.y*a.scale01+a.dx,p=f.y*a.scaleY+f.x*a.scale10+a.dy;e.push(new xs(f.onCurve,f.endContour,h,p))}}else e=t.points||[];t.phantomPoints&&!this._font.directory.tables.HVAR&&(this._metrics.advanceWidth=t.phantomPoints[1].x-t.phantomPoints[0].x,this._metrics.advanceHeight=t.phantomPoints[3].y-t.phantomPoints[2].y,this._metrics.leftBearing=t.xMin-t.phantomPoints[0].x,this._metrics.topBearing=t.phantomPoints[2].y-t.yMax);for(var d=[],g=[],y=0;y<e.length;y++){var v=e[y];g.push(v),v.endContour&&(d.push(g),g=[])}return d},e.prototype._getMetrics=function(){if(this._metrics)return this._metrics;var e=this._getCBox(!0);return t.prototype._getMetrics.call(this,e),this._font._variationProcessor&&!this._font.HVAR&&this.path,this._metrics},e.prototype._getPath=function(){for(var t=this._getContours(),e=new ps,n=0;n<t.length;n++){var r=t[n],i=r[0],o=r[r.length-1],a=0;if(i.onCurve){var s=null;a=1}else{i=o.onCurve?o:new xs(!1,!1,(i.x+o.x)/2,(i.y+o.y)/2);var s=i}e.moveTo(i.x,i.y);for(var u=a;u<r.length;u++){var l=r[u],c=0===u?i:r[u-1];if(c.onCurve&&l.onCurve)e.lineTo(l.x,l.y);else if(c.onCurve&&!l.onCurve)var s=l;else if(c.onCurve||l.onCurve){if(c.onCurve||!l.onCurve)throw new Error("Unknown TTF path state");e.quadraticCurveTo(s.x,s.y,l.x,l.y);var s=null}else{var f=(c.x+l.x)/2,h=(c.y+l.y)/2;e.quadraticCurveTo(c.x,c.y,f,h);var s=l}}s&&e.quadraticCurveTo(s.x,s.y,i.x,i.y),e.closePath()}return e},e}(ms),Ss=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype._getName=function(){return this._font.CFF2?t.prototype._getName.call(this):this._font["CFF "].getGlyphName(this.id)},e.prototype.bias=function(t){return t.length<1240?107:t.length<33900?1131:32768},e.prototype._getPath=function(){function t(){null==c&&(c=u.shift()+m.nominalWidthX)}function e(){return u.length%2!=0&&t(),f+=u.length>>1,u.length=0}function n(t,e){y&&s.closePath(),s.moveTo(t,e),y=!0}var r=this._font.stream,i=(r.pos,this._font.CFF2||this._font["CFF "]),o=i.topDict.CharStrings[this.id],a=o.offset+o.length;r.pos=o.offset;var s=new ps,u=[],l=[],c=null,f=0,h=0,p=0,d=void 0,g=void 0,y=!1;this._usedGsubrs=d={},this._usedSubrs=g={};var v=i.globalSubrIndex||[],b=this.bias(v),m=i.privateDictForGlyph(this.id),w=m.Subrs||[],x=this.bias(w),_=i.topDict.vstore&&i.topDict.vstore.itemVariationStore,k=m.vsindex,S=this._font._variationProcessor;return function o(){for(;r.pos<a;){var c=r.readUInt8();if(c<32)switch(c){case 1:case 3:case 18:case 23:e();break;case 4:u.length>1&&t(),p+=u.shift(),n(h,p);break;case 5:for(;u.length>=2;)h+=u.shift(),p+=u.shift(),s.lineTo(h,p);break;case 6:case 7:for(var m=6===c;u.length>=1;)m?h+=u.shift():p+=u.shift(),s.lineTo(h,p),m=!m;break;case 8:for(;u.length>0;){var C=h+u.shift(),A=p+u.shift(),P=C+u.shift(),E=A+u.shift();h=P+u.shift(),p=E+u.shift(),s.bezierCurveTo(C,A,P,E,h,p)}break;case 10:var I=u.pop()+x,T=w[I];if(T){g[I]=!0;var O=r.pos,B=a;r.pos=T.offset,a=T.offset+T.length,o(),r.pos=O,a=B}break;case 11:if(i.version>=2)break;return;case 14:if(i.version>=2)break;u.length>0&&t(),y&&(s.closePath(),y=!1);break;case 15:if(i.version<2)throw new Error("vsindex operator not supported in CFF v1");k=u.pop();break;case 16:if(i.version<2)throw new Error("blend operator not supported in CFF v1");if(!S)throw new Error("blend operator in non-variation font");for(var L=S.getBlendVector(_,k),M=u.pop(),R=M*L.length,F=u.length-R,z=F-M,D=0;D<M;D++){for(var N=u[z+D],U=0;U<L.length;U++)N+=L[U]*u[F++];u[z+D]=N}for(;R--;)u.pop();break;case 19:case 20:e(),r.pos+=f+7>>3;break;case 21:u.length>2&&t(),h+=u.shift(),p+=u.shift(),n(h,p);break;case 22:u.length>1&&t(),h+=u.shift(),n(h,p);break;case 24:for(;u.length>=8;){var C=h+u.shift(),A=p+u.shift(),P=C+u.shift(),E=A+u.shift();h=P+u.shift(),p=E+u.shift(),s.bezierCurveTo(C,A,P,E,h,p)}h+=u.shift(),p+=u.shift(),s.lineTo(h,p);break;case 25:for(;u.length>=8;)h+=u.shift(),p+=u.shift(),s.lineTo(h,p);var C=h+u.shift(),A=p+u.shift(),P=C+u.shift(),E=A+u.shift();h=P+u.shift(),p=E+u.shift(),s.bezierCurveTo(C,A,P,E,h,p);break;case 26:for(u.length%2&&(h+=u.shift());u.length>=4;)C=h,A=p+u.shift(),P=C+u.shift(),E=A+u.shift(),h=P,p=E+u.shift(),s.bezierCurveTo(C,A,P,E,h,p);break;case 27:for(u.length%2&&(p+=u.shift());u.length>=4;)C=h+u.shift(),A=p,P=C+u.shift(),E=A+u.shift(),h=P+u.shift(),p=E,s.bezierCurveTo(C,A,P,E,h,p);break;case 28:u.push(r.readInt16BE());break;case 29:if(I=u.pop()+b,T=v[I]){d[I]=!0;var O=r.pos,B=a;r.pos=T.offset,a=T.offset+T.length,o(),r.pos=O,a=B}break;case 30:case 31:for(m=31===c;u.length>=4;)m?(C=h+u.shift(),A=p,P=C+u.shift(),E=A+u.shift(),p=E+u.shift(),h=P+(1===u.length?u.shift():0)):(C=h,A=p+u.shift(),P=C+u.shift(),E=A+u.shift(),h=P+u.shift(),p=E+(1===u.length?u.shift():0)),s.bezierCurveTo(C,A,P,E,h,p),m=!m;break;case 12:switch(c=r.readUInt8()){case 3:var W=u.pop(),j=u.pop();u.push(W&&j?1:0);break;case 4:W=u.pop(),j=u.pop(),u.push(W||j?1:0);break;case 5:W=u.pop(),u.push(W?0:1);break;case 9:W=u.pop(),u.push(Math.abs(W));break;case 10:W=u.pop(),j=u.pop(),u.push(W+j);break;case 11:W=u.pop(),j=u.pop(),u.push(W-j);break;case 12:W=u.pop(),j=u.pop(),u.push(W/j);break;case 14:W=u.pop(),u.push(-W);break;case 15:W=u.pop(),j=u.pop(),u.push(W===j?1:0);break;case 18:u.pop();break;case 20:var G=u.pop(),V=u.pop();l[V]=G;break;case 21:V=u.pop(),u.push(l[V]||0);break;case 22:var H=u.pop(),q=u.pop(),Z=u.pop(),Y=u.pop();u.push(Z<=Y?H:q);break;case 23:u.push(Math.random());break;case 24:W=u.pop(),j=u.pop(),u.push(W*j);break;case 26:W=u.pop(),u.push(Math.sqrt(W));break;case 27:W=u.pop(),u.push(W,W);break;case 28:W=u.pop(),j=u.pop(),u.push(j,W);break;case 29:V=u.pop(),V<0?V=0:V>u.length-1&&(V=u.length-1),u.push(u[V]);break;case 30:var X=u.pop(),K=u.pop();if(K>=0)for(;K>0;){for(var J=u[X-1],Q=X-2;Q>=0;Q--)u[Q+1]=u[Q];u[0]=J,K--}else for(;K<0;){for(var J=u[0],$=0;$<=X;$++)u[$]=u[$+1];u[X-1]=J,K++}break;case 34:C=h+u.shift(),A=p,P=C+u.shift(),E=A+u.shift();var tt=P+u.shift(),et=E,nt=tt+u.shift(),rt=et,it=nt+u.shift(),ot=rt,at=it+u.shift(),st=ot;h=at,p=st,s.bezierCurveTo(C,A,P,E,tt,et),s.bezierCurveTo(nt,rt,it,ot,at,st);break;case 35:for(var ut=[],lt=0;lt<=5;lt++)h+=u.shift(),p+=u.shift(),ut.push(h,p);s.bezierCurveTo.apply(s,ut.slice(0,6)),s.bezierCurveTo.apply(s,ut.slice(6)),u.shift();break;case 36:C=h+u.shift(),A=p+u.shift(),P=C+u.shift(),E=A+u.shift(),tt=P+u.shift(),et=E,nt=tt+u.shift(),rt=et,it=nt+u.shift(),ot=rt+u.shift(),at=it+u.shift(),st=ot,h=at,p=st,s.bezierCurveTo(C,A,P,E,tt,et),s.bezierCurveTo(nt,rt,it,ot,at,st);break;case 37:var ct=h,ft=p;ut=[];for(var ht=0;ht<=4;ht++)h+=u.shift(),p+=u.shift(),ut.push(h,p);Math.abs(h-ct)>Math.abs(p-ft)?(h+=u.shift(),p=ft):(h=ct,p+=u.shift()),ut.push(h,p),s.bezierCurveTo.apply(s,ut.slice(0,6)),s.bezierCurveTo.apply(s,ut.slice(6));break;default:throw new Error("Unknown op: 12 "+c)}break;default:throw new Error("Unknown op: "+c)}else if(c<247)u.push(c-139);else if(c<251){var pt=r.readUInt8();u.push(256*(c-247)+pt+108)}else if(c<255){var pt=r.readUInt8();u.push(256*-(c-251)-pt-108)}else u.push(r.readInt32BE()/65536)}}(),y&&s.closePath(),s},e}(ms),Cs=new nt.Struct({originX:nt.uint16,originY:nt.uint16,type:new nt.String(4),data:new nt.Buffer(function(t){return t.parent.buflen-t._currentOffset})}),As=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype.getImageForSize=function(t){for(var e=0;e<this._font.sbix.imageTables.length;e++){var n=this._font.sbix.imageTables[e];if(n.ppem>=t)break}var r=n.imageOffsets,i=r[this.id],o=r[this.id+1];return i===o?null:(this._font.stream.pos=i,Cs.decode(this._font.stream,{buflen:o-i}))},e.prototype.render=function(e,n){var r=this.getImageForSize(n);if(null!=r){var i=n/this._font.unitsPerEm;e.image(r.data,{height:n,x:r.originX,y:(this.bbox.minY-r.originY)*i})}this._font.sbix.flags.renderOutlines&&t.prototype.render.call(this,e,n)},e}(ks),Ps=function t(e,n){lt(this,t),this.glyph=e,this.color=n},Es=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype._getBBox=function(){for(var t=new eo,e=0;e<this.layers.length;e++){var n=this.layers[e],r=n.glyph.bbox;t.addPoint(r.minX,r.minY),t.addPoint(r.maxX,r.maxY)}return t},e.prototype.render=function(t,e){for(var n=this.layers,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=a.glyph,u=a.color;t.fillColor([u.red,u.green,u.blue],u.alpha/255*100),s.render(t,e)}},ct(e,[{key:"layers",get:function(){for(var t=this._font.CPAL,e=this._font.COLR,n=0,r=e.baseGlyphRecord.length-1;n<=r;){var i=n+r>>1,o=e.baseGlyphRecord[i];if(this.id<o.gid)r=i-1;else{if(!(this.id>o.gid)){var a=o;break}n=i+1}}if(null==a){var s=this._font._getBaseGlyph(this.id),u={red:0,green:0,blue:0,alpha:255};return[new Ps(s,u)]}for(var l=[],c=a.firstLayerIndex;c<a.firstLayerIndex+a.numLayers;c++){var o=e.layerRecords[c],u=t.colorRecords[o.paletteIndex],s=this._font._getBaseGlyph(o.gid);l.push(new Ps(s,u))}return l}}]),e}(ms),Is=function(){function t(e,n){lt(this,t),this.font=e,this.normalizedCoords=this.normalizeCoords(n),this.blendVectors=new ft}return t.prototype.normalizeCoords=function(t){for(var e=[],n=0;n<this.font.fvar.axis.length;n++){var r=this.font.fvar.axis[n];t[n]<r.defaultValue?e.push((t[n]-r.defaultValue+St)/(r.defaultValue-r.minValue+St)):e.push((t[n]-r.defaultValue+St)/(r.maxValue-r.defaultValue+St))}if(this.font.avar)for(var n=0;n<this.font.avar.segment.length;n++)for(var i=this.font.avar.segment[n],o=0;o<i.correspondence.length;o++){var a=i.correspondence[o];if(o>=1&&e[n]<a.fromCoord){var s=i.correspondence[o-1];e[n]=((e[n]-s.fromCoord)*(a.toCoord-s.toCoord)+St)/(a.fromCoord-s.fromCoord+St)+s.toCoord;break}}return e},t.prototype.transformPoints=function(t,e){if(this.font.fvar&&this.font.gvar){var n=this.font.gvar;if(!(t>=n.glyphCount)){var r=n.offsets[t];if(r!==n.offsets[t+1]){var i=this.font.stream;if(i.pos=r,!(i.pos>=i.length)){var o=i.readUInt16BE(),a=r+i.readUInt16BE();if(32768&o){var s=i.pos;i.pos=a;var u=this.decodePoints();a=i.pos,i.pos=s}var l=e.map(function(t){return t.copy()});o&=4095;for(var c=0;c<o;c++){var f=i.readUInt16BE(),h=i.readUInt16BE();if(32768&h)for(var p=[],d=0;d<n.axisCount;d++)p.push(i.readInt16BE()/16384);else{if((4095&h)>=n.globalCoordCount)throw new Error("Invalid gvar table");var p=n.globalCoords[4095&h]}if(16384&h){for(var g=[],y=0;y<n.axisCount;y++)g.push(i.readInt16BE()/16384);for(var v=[],b=0;b<n.axisCount;b++)v.push(i.readInt16BE()/16384)}var m=this.tupleFactor(h,p,g,v);if(0!==m){var s=i.pos;if(i.pos=a,8192&h)var w=this.decodePoints();else var w=u;var x=0===w.length?e.length:w.length,_=this.decodeDeltas(x),k=this.decodeDeltas(x);if(0===w.length)for(var S=0;S<e.length;S++){var C=e[S];C.x+=Math.round(_[S]*m),C.y+=Math.round(k[S]*m)}else{for(var A=l.map(function(t){return t.copy()}),P=e.map(function(){return!1}),E=0;E<w.length;E++){var I=w[E];if(I<e.length){var T=A[I];P[I]=!0,T.x+=Math.round(_[E]*m),T.y+=Math.round(k[E]*m)}}this.interpolateMissingDeltas(A,l,P);for(var O=0;O<e.length;O++){var B=A[O].x-l[O].x,L=A[O].y-l[O].y;e[O].x+=B,e[O].y+=L}}a+=f,i.pos=s}else a+=f}}}}}},t.prototype.decodePoints=function(){var t=this.font.stream,e=t.readUInt8();128&e&&(e=(127&e)<<8|t.readUInt8());for(var n=new Uint16Array(e),r=0,i=0;r<e;)for(var o=t.readUInt8(),a=1+(127&o),s=128&o?t.readUInt16:t.readUInt8,u=0;u<a&&r<e;u++)i+=s.call(t),n[r++]=i;return n},t.prototype.decodeDeltas=function(t){for(var e=this.font.stream,n=0,r=new Int16Array(t);n<t;){var i=e.readUInt8(),o=1+(63&i);if(128&i)n+=o;else for(var a=64&i?e.readInt16BE:e.readInt8,s=0;s<o&&n<t;s++)r[n++]=a.call(e)}return r},t.prototype.tupleFactor=function(t,e,n,r){for(var i=this.normalizedCoords,o=this.font.gvar,a=1,s=0;s<o.axisCount;s++)if(0!==e[s]){if(0===i[s])return 0;if(0==(16384&t)){if(i[s]<Math.min(0,e[s])||i[s]>Math.max(0,e[s]))return 0;a=(a*i[s]+St)/(e[s]+St)}else{if(i[s]<n[s]||i[s]>r[s])return 0;a=i[s]<e[s]?a*(i[s]-n[s]+St)/(e[s]-n[s]+St):a*(r[s]-i[s]+St)/(r[s]-e[s]+St)}}return a},t.prototype.interpolateMissingDeltas=function(t,e,n){if(0!==t.length)for(var r=0;r<t.length;){for(var i=r,o=r,a=t[o];!a.endContour;)a=t[++o];for(;r<=o&&!n[r];)r++;if(!(r>o)){var s=r,u=r;for(r++;r<=o;)n[r]&&(this.deltaInterpolate(u+1,r-1,u,r,e,t),u=r),r++;u===s?this.deltaShift(i,o,u,e,t):(this.deltaInterpolate(u+1,o,u,s,e,t),s>0&&this.deltaInterpolate(i,s-1,u,s,e,t)),r=o+1}}},t.prototype.deltaInterpolate=function(t,e,n,r,i,o){if(!(t>e))for(var a=["x","y"],s=0;s<a.length;s++){var u=a[s];if(i[n][u]>i[r][u]){var l=n;n=r,r=l}var c=i[n][u],f=i[r][u],h=o[n][u],p=o[r][u];if(c!==f||h===p)for(var d=c===f?0:(p-h)/(f-c),g=t;g<=e;g++){var y=i[g][u];y<=c?y+=h-c:y>=f?y+=p-f:y=h+(y-c)*d,o[g][u]=y}}},t.prototype.deltaShift=function(t,e,n,r,i){var o=i[n].x-r[n].x,a=i[n].y-r[n].y;if(0!==o||0!==a)for(var s=t;s<=e;s++)s!==n&&(i[s].x+=o,i[s].y+=a)},t.prototype.getAdvanceAdjustment=function(t,e){var n=void 0,r=void 0;if(e.advanceWidthMapping){var i=t;i>=e.advanceWidthMapping.mapCount&&(i=e.advanceWidthMapping.mapCount-1);var o=(e.advanceWidthMapping.entryFormat,e.advanceWidthMapping.mapData[i]);n=o.outerIndex,r=o.innerIndex}else n=0,r=t;return this.getDelta(e.itemVariationStore,n,r)},t.prototype.getDelta=function(t,e,n){if(e>=t.itemVariationData.length)return 0;var r=t.itemVariationData[e];if(n>=r.deltaSets.length)return 0;for(var i=r.deltaSets[n],o=this.getBlendVector(t,e),a=0,s=0;s<r.regionIndexCount;s++)a+=i.deltas[s]*o[s];return a},t.prototype.getBlendVector=function(t,e){var n=t.itemVariationData[e];if(this.blendVectors.has(n))return this.blendVectors.get(n);for(var r=this.normalizedCoords,i=[],o=0;o<n.regionIndexCount;o++){for(var a=1,s=n.regionIndexes[o],u=t.variationRegionList.variationRegions[s],l=0;l<u.length;l++){var c=u[l],f=void 0;f=c.startCoord>c.peakCoord||c.peakCoord>c.endCoord?1:c.startCoord<0&&c.endCoord>0&&0!==c.peakCoord?1:0===c.peakCoord?1:r[l]<c.startCoord||r[l]>c.endCoord?0:r[l]===c.peakCoord?1:r[l]<c.peakCoord?(r[l]-c.startCoord+St)/(c.peakCoord-c.startCoord+St):(c.endCoord-r[l]+St)/(c.endCoord-c.peakCoord+St),a*=f}i[o]=a}return this.blendVectors.set(n,i),i},t}(),Ts=function(){function t(e){lt(this,t),this.font=e,this.glyphs=[],this.mapping={},this.includeGlyph(0)}return t.prototype.includeGlyph=function(t){return"object"===(void 0===t?"undefined":st(t))&&(t=t.id),null==this.mapping[t]&&(this.glyphs.push(t),this.mapping[t]=this.glyphs.length-1),this.mapping[t]},t.prototype.encodeStream=function(){var t=this,e=new nt.EncodeStream;return r.nextTick(function(){return t.encode(e),e.end()}),e},t}(),Os=function(){function t(){lt(this,t)}return t.size=function(t){return t>=0&&t<=255?1:2},t.encode=function(t,e){e>=0&&e<=255?t.writeUInt8(e):t.writeInt16BE(e)},t}(),Bs=new nt.Struct({numberOfContours:nt.int16,xMin:nt.int16,yMin:nt.int16,xMax:nt.int16,yMax:nt.int16,endPtsOfContours:new nt.Array(nt.uint16,"numberOfContours"),instructions:new nt.Array(nt.uint8,nt.uint16),flags:new nt.Array(nt.uint8,0),xPoints:new nt.Array(Os,0),yPoints:new nt.Array(Os,0)}),Ls=function(){function t(){lt(this,t)}return t.prototype.encodeSimple=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=[],i=[],o=[],a=0,s=0,u=0,l=0,c=0,f=0;f<t.commands.length;f++){for(var h=t.commands[f],p=0;p<h.args.length;p+=2){var d=h.args[p],g=h.args[p+1],y=0;if("quadraticCurveTo"===h.command&&2===p){var v=t.commands[f+1];if(v&&"quadraticCurveTo"===v.command){var b=(s+v.args[0])/2,m=(u+v.args[1])/2;if(d===b&&g===m)continue}}"quadraticCurveTo"===h.command&&0===p||(y|=1),y=this._encodePoint(d,s,r,y,2,16),y=this._encodePoint(g,u,i,y,4,32),y===l&&a<255?(o[o.length-1]|=8,a++):(a>0&&(o.push(a),a=0),o.push(y),l=y),s=d,u=g,c++}"closePath"===h.command&&n.push(c-1)}t.commands.length>1&&"closePath"!==t.commands[t.commands.length-1].command&&n.push(c-1);var w=t.bbox,x={numberOfContours:n.length,xMin:w.minX,yMin:w.minY,xMax:w.maxX,yMax:w.maxY,endPtsOfContours:n,instructions:e,flags:o,xPoints:r,yPoints:i},_=Bs.size(x),k=4-_%4,S=new nt.EncodeStream(_+k);return Bs.encode(S,x),0!==k&&S.fill(0,k),S.buffer},t.prototype._encodePoint=function(t,e,n,r,i,o){var a=t-e;return t===e?r|=o:(-255<=a&&a<=255&&(r|=i,a<0?a=-a:r|=o),n.push(a)),r},t}(),Ms=function(t){function n(e){lt(this,n);var r=ht(this,t.call(this,e));return r.glyphEncoder=new Ls,r}return pt(n,t),n.prototype._addGlyph=function(t){var n=this.font.getGlyph(t),r=n._decode(),i=this.font.loca.offsets[t],o=this.font.loca.offsets[t+1],a=this.font._getTableStream("glyf");a.pos+=i;var s=a.readBuffer(o-i);if(r&&r.numberOfContours<0){s=new e(s);for(var u=r.components,l=Array.isArray(u),c=0,u=l?u:it(u);;){var f;if(l){if(c>=u.length)break;f=u[c++]}else{if(c=u.next(),c.done)break;f=c.value}var h=f;t=this.includeGlyph(h.glyphID),s.writeUInt16BE(t,h.pos)}}else r&&this.font._variationProcessor&&(s=this.glyphEncoder.encodeSimple(n.path,r.instructions));return this.glyf.push(s),this.loca.offsets.push(this.offset),this.hmtx.metrics.push({advance:n.advanceWidth,bearing:n._getMetrics().leftBearing}),this.offset+=s.length,this.glyf.length-1},n.prototype.encode=function(t){this.glyf=[],this.offset=0,this.loca={offsets:[]},this.hmtx={metrics:[],bearings:[]};for(var e=0;e<this.glyphs.length;)this._addGlyph(this.glyphs[e++]);var n=Ct(this.font.maxp);n.numGlyphs=this.glyf.length,this.loca.offsets.push(this.offset),Zi.loca.preEncode.call(this.loca);var r=Ct(this.font.head);r.indexToLocFormat=this.loca.version;var i=Ct(this.font.hhea);i.numberOfMetrics=this.hmtx.metrics.length,Xi.encode(t,{tables:{head:r,hhea:i,loca:this.loca,maxp:n,"cvt ":this.font["cvt "],prep:this.font.prep,glyf:this.glyf,hmtx:this.hmtx,fpgm:this.font.fpgm}})},n}(Ts),Rs=function(t){function n(e){lt(this,n);var r=ht(this,t.call(this,e));if(r.cff=r.font["CFF "],!r.cff)throw new Error("Not a CFF Font");return r}return pt(n,t),n.prototype.subsetCharstrings=function(){this.charstrings=[];for(var t={},e=this.glyphs,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;this.charstrings.push(this.cff.getCharString(o));var a=this.font.getGlyph(o);a.path;for(var s in a._usedGsubrs)t[s]=!0}this.gsubrs=this.subsetSubrs(this.cff.globalSubrIndex,t)},n.prototype.subsetSubrs=function(t,n){for(var r=[],i=0;i<t.length;i++){var o=t[i];n[i]?(this.cff.stream.pos=o.offset,r.push(this.cff.stream.readBuffer(o.length))):r.push(new e([11]))}return r},n.prototype.subsetFontdict=function(t){t.FDArray=[],t.FDSelect={version:0,fds:[]};for(var e={},n=[],r=this.glyphs,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}var s=a,u=this.cff.fdForGlyph(s);if(null!=u){e[u]||(t.FDArray.push(vt({},this.cff.topDict.FDArray[u])),n.push({})),e[u]=!0, t.FDSelect.fds.push(t.FDArray.length-1);var l=this.font.getGlyph(s);l.path;for(var c in l._usedSubrs)n[n.length-1][c]=!0}}for(var f=0;f<t.FDArray.length;f++){var h=t.FDArray[f];delete h.FontName,h.Private&&h.Private.Subrs&&(h.Private=vt({},h.Private),h.Private.Subrs=this.subsetSubrs(h.Private.Subrs,n[f]))}},n.prototype.createCIDFontdict=function(t){for(var e={},n=this.glyphs,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var a=o,s=this.font.getGlyph(a);s.path;for(var u in s._usedSubrs)e[u]=!0}var l=vt({},this.cff.topDict.Private);return l.Subrs=this.subsetSubrs(this.cff.topDict.Private.Subrs,e),t.FDArray=[{Private:l}],t.FDSelect={version:3,nRanges:1,ranges:[{first:0,fd:0}],sentinel:this.charstrings.length}},n.prototype.addString=function(t){return t?(this.strings||(this.strings=[]),this.strings.push(t),ge.length+this.strings.length-1):null},n.prototype.encode=function(t){this.subsetCharstrings();var e={version:this.charstrings.length>255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},n=vt({},this.cff.topDict);n.Private=null,n.charset=e,n.Encoding=null,n.CharStrings=this.charstrings;for(var r=["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"],i=0;i<r.length;i++){var o=r[i];n[o]=this.addString(this.cff.string(n[o]))}n.ROS=[this.addString("Adobe"),this.addString("Identity"),0],n.CIDCount=this.charstrings.length,this.cff.isCIDFont?this.subsetFontdict(n):this.createCIDFontdict(n);var a={version:1,hdrSize:this.cff.hdrSize,offSize:this.cff.length,header:this.cff.header,nameIndex:[this.cff.postscriptName],topDictIndex:[n],stringIndex:this.strings,globalSubrIndex:this.gsubrs};xn.encode(t,a)},n}(Ts),Fs=(vs=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;lt(this,t),this.stream=e,this.variationCoords=n,this._directoryPos=this.stream.pos,this._tables={},this._glyphs={},this._decodeDirectory();for(var r in this.directory.tables){var i=this.directory.tables[r];Zi[r]&&i.length>0&&ut(this,r,{get:this._getTable.bind(this,i)})}}return t.probe=function(t){var e=t.toString("ascii",0,4);return"true"===e||"OTTO"===e||e===String.fromCharCode(0,1,0,0)},t.prototype._getTable=function(t){if(!(t.tag in this._tables))try{this._tables[t.tag]=this._decodeTable(t)}catch(t){Et.logErrors}return this._tables[t.tag]},t.prototype._getTableStream=function(t){var e=this.directory.tables[t];return e?(this.stream.pos=e.offset,this.stream):null},t.prototype._decodeDirectory=function(){return this.directory=Xi.decode(this.stream,{_startOffset:0})},t.prototype._decodeTable=function(t){var e=this.stream.pos,n=this._getTableStream(t.tag),r=Zi[t.tag].decode(n,this,t.length);return this.stream.pos=e,r},t.prototype.getName=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en",n=this.name.records[t];return n?n[e]:null},t.prototype.hasGlyphForCodePoint=function(t){return!!this._cmapProcessor.lookup(t)},t.prototype.glyphForCodePoint=function(t){return this.getGlyph(this._cmapProcessor.lookup(t),[t])},t.prototype.glyphsForString=function(t){for(var e=[],n=t.length,r=0,i=-1,o=-1;r<=n;){var a=0,s=0;if(r<n){if(55296<=(a=t.charCodeAt(r++))&&a<=56319&&r<n){var u=t.charCodeAt(r);56320<=u&&u<=57343&&(r++,a=((1023&a)<<10)+(1023&u)+65536)}s=65024<=a&&a<=65039||917760<=a&&a<=917999?1:0}else r++;0===o&&1===s?e.push(this.getGlyph(this._cmapProcessor.lookup(i,a),[i,a])):0===o&&0===s&&e.push(this.glyphForCodePoint(i)),i=a,o=s}return e},t.prototype.layout=function(t,e,n,r,i){return this._layoutEngine.layout(t,e,n,r,i)},t.prototype.stringsForGlyph=function(t){return this._layoutEngine.stringsForGlyph(t)},t.prototype.getAvailableFeatures=function(t,e){return this._layoutEngine.getAvailableFeatures(t,e)},t.prototype._getBaseGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.glyf?this._glyphs[t]=new ks(t,e,this):(this.directory.tables["CFF "]||this.directory.tables.CFF2)&&(this._glyphs[t]=new Ss(t,e,this))),this._glyphs[t]||null},t.prototype.getGlyph=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this._glyphs[t]||(this.directory.tables.sbix?this._glyphs[t]=new As(t,e,this):this.directory.tables.COLR&&this.directory.tables.CPAL?this._glyphs[t]=new Es(t,e,this):this._getBaseGlyph(t,e)),this._glyphs[t]||null},t.prototype.createSubset=function(){return this.directory.tables["CFF "]?new Rs(this):new Ms(this)},t.prototype.getVariation=function(e){if(!this.directory.tables.fvar||!(this.directory.tables.gvar&&this.directory.tables.glyf||this.directory.tables.CFF2))throw new Error("Variations require a font with the fvar, gvar and glyf, or CFF2 tables.");if("string"==typeof e&&(e=this.namedVariations[e]),"object"!==(void 0===e?"undefined":st(e)))throw new Error("Variation settings must be either a variation name or settings object.");var n=this.fvar.axis.map(function(t,n){var r=t.axisTag.trim();return r in e?Math.max(t.minValue,Math.min(t.maxValue,e[r])):t.defaultValue}),r=new nt.DecodeStream(this.stream.buffer);r.pos=this._directoryPos;var i=new t(r,n);return i._tables=this._tables,i},t.prototype.getFont=function(t){return this.getVariation(t)},ct(t,[{key:"postscriptName",get:function(){var t=this.name.records.postscriptName;if(t){return t[at(t)[0]]}return null}},{key:"fullName",get:function(){return this.getName("fullName")}},{key:"familyName",get:function(){return this.getName("fontFamily")}},{key:"subfamilyName",get:function(){return this.getName("fontSubfamily")}},{key:"copyright",get:function(){return this.getName("copyright")}},{key:"version",get:function(){return this.getName("version")}},{key:"ascent",get:function(){return this.hhea.ascent}},{key:"descent",get:function(){return this.hhea.descent}},{key:"lineGap",get:function(){return this.hhea.lineGap}},{key:"underlinePosition",get:function(){return this.post.underlinePosition}},{key:"underlineThickness",get:function(){return this.post.underlineThickness}},{key:"italicAngle",get:function(){return this.post.italicAngle}},{key:"capHeight",get:function(){var t=this["OS/2"];return t?t.capHeight:this.ascent}},{key:"xHeight",get:function(){var t=this["OS/2"];return t?t.xHeight:0}},{key:"numGlyphs",get:function(){return this.maxp.numGlyphs}},{key:"unitsPerEm",get:function(){return this.head.unitsPerEm}},{key:"bbox",get:function(){return ot(new eo(this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax))}},{key:"_cmapProcessor",get:function(){return new Qi(this.cmap)}},{key:"characterSet",get:function(){return this._cmapProcessor.getCharacterSet()}},{key:"_layoutEngine",get:function(){return new fs(this)}},{key:"availableFeatures",get:function(){return this._layoutEngine.getAvailableFeatures()}},{key:"variationAxes",get:function(){var t={};if(!this.fvar)return t;for(var e=this.fvar.axis,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;t[o.axisTag.trim()]={name:o.name.en,min:o.minValue,default:o.defaultValue,max:o.maxValue}}return t}},{key:"namedVariations",get:function(){var t={};if(!this.fvar)return t;for(var e=this.fvar.instance,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}for(var o=i,a={},s=0;s<this.fvar.axis.length;s++){a[this.fvar.axis[s].axisTag.trim()]=o.coord[s]}t[o.name.en]=a}return t}},{key:"_variationProcessor",get:function(){if(!this.fvar)return null;var t=this.variationCoords;return t||this.CFF2?(t||(t=this.fvar.axis.map(function(t){return t.defaultValue})),new Is(this,t)):null}}]),t}(),Q(vs.prototype,"bbox",[o],rt(vs.prototype,"bbox"),vs.prototype),Q(vs.prototype,"_cmapProcessor",[o],rt(vs.prototype,"_cmapProcessor"),vs.prototype),Q(vs.prototype,"characterSet",[o],rt(vs.prototype,"characterSet"),vs.prototype),Q(vs.prototype,"_layoutEngine",[o],rt(vs.prototype,"_layoutEngine"),vs.prototype),Q(vs.prototype,"variationAxes",[o],rt(vs.prototype,"variationAxes"),vs.prototype),Q(vs.prototype,"namedVariations",[o],rt(vs.prototype,"namedVariations"),vs.prototype),Q(vs.prototype,"_variationProcessor",[o],rt(vs.prototype,"_variationProcessor"),vs.prototype),vs),zs=new nt.Struct({tag:new nt.String(4),offset:new nt.Pointer(nt.uint32,"void",{type:"global"}),compLength:nt.uint32,length:nt.uint32,origChecksum:nt.uint32}),Ds=new nt.Struct({tag:new nt.String(4),flavor:nt.uint32,length:nt.uint32,numTables:nt.uint16,reserved:new nt.Reserved(nt.uint16),totalSfntSize:nt.uint32,majorVersion:nt.uint16,minorVersion:nt.uint16,metaOffset:nt.uint32,metaLength:nt.uint32,metaOrigLength:nt.uint32,privOffset:nt.uint32,privLength:nt.uint32,tables:new nt.Array(zs,"numTables")});Ds.process=function(){for(var t={},e=this.tables,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i;t[o.tag]=o}this.tables=t};var Ns=function(t){function n(){return lt(this,n),ht(this,t.apply(this,arguments))}return pt(n,t),n.probe=function(t){return"wOFF"===t.toString("ascii",0,4)},n.prototype._decodeDirectory=function(){this.directory=Ds.decode(this.stream,{_startOffset:0})},n.prototype._getTableStream=function(t){var n=this.directory.tables[t];if(n){if(this.stream.pos=n.offset,n.compLength<n.length){this.stream.pos+=2;var r=new e(n.length),i=At(this.stream.readBuffer(n.compLength-2),r);return new nt.DecodeStream(i)}return this.stream}return null},n}(Fs),Us=function(t){function e(){return lt(this,e),ht(this,t.apply(this,arguments))}return pt(e,t),e.prototype._decode=function(){return this._font._transformedGlyphs[this.id]},e.prototype._getCBox=function(){return this.path.bbox},e}(ks),Ws={decode:function(t){for(var e=0,n=[0,1,2,3,4],r=0;r<n.length;r++){var i=t.readUInt8();if(3758096384&e)throw new Error("Overflow");if(e=e<<7|127&i,0==(128&i))return e}throw new Error("Bad base 128 number")}},js=["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"],Gs=new nt.Struct({flags:nt.uint8,customTag:new nt.Optional(new nt.String(4),function(t){return 63==(63&t.flags)}),tag:function(t){return t.customTag||js[63&t.flags]},length:Ws,transformVersion:function(t){return t.flags>>>6&3},transformed:function(t){return"glyf"===t.tag||"loca"===t.tag?0===t.transformVersion:0!==t.transformVersion},transformLength:new nt.Optional(Ws,function(t){return t.transformed})}),Vs=new nt.Struct({tag:new nt.String(4),flavor:nt.uint32,length:nt.uint32,numTables:nt.uint16,reserved:new nt.Reserved(nt.uint16),totalSfntSize:nt.uint32,totalCompressedSize:nt.uint32,majorVersion:nt.uint16,minorVersion:nt.uint16,metaOffset:nt.uint32,metaLength:nt.uint32,metaOrigLength:nt.uint32,privOffset:nt.uint32,privLength:nt.uint32,tables:new nt.Array(Gs,"numTables")});Vs.process=function(){for(var t={},e=0;e<this.tables.length;e++){var n=this.tables[e];t[n.tag]=n}return this.tables=t};var Hs=function(t){function n(){return lt(this,n),ht(this,t.apply(this,arguments))}return pt(n,t),n.probe=function(t){return"wOF2"===t.toString("ascii",0,4)},n.prototype._decodeDirectory=function(){this.directory=Vs.decode(this.stream),this._dataPos=this.stream.pos},n.prototype._decompress=function(){if(!this._decompressed){this.stream.pos=this._dataPos;var t=this.stream.readBuffer(this.directory.totalCompressedSize),n=0;for(var r in this.directory.tables){var i=this.directory.tables[r];i.offset=n,n+=null!=i.transformLength?i.transformLength:i.length}var o=Pt(t,n);if(!o)throw new Error("Error decoding compressed data in WOFF2");this.stream=new nt.DecodeStream(new e(o)),this._decompressed=!0}},n.prototype._decodeTable=function(e){return this._decompress(),t.prototype._decodeTable.call(this,e)},n.prototype._getBaseGlyph=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!this._glyphs[e])return this.directory.tables.glyf&&this.directory.tables.glyf.transformed?(this._transformedGlyphs||this._transformGlyfTable(),this._glyphs[e]=new Us(e,n,this)):t.prototype._getBaseGlyph.call(this,e,n)},n.prototype._transformGlyfTable=function(){this._decompress(),this.stream.pos=this.directory.tables.glyf.offset;for(var t=GlyfTable.decode(this.stream),e=[],n=0;n<t.numGlyphs;n++){var r={},i=t.nContours.readInt16BE();if(r.numberOfContours=i,i>0){for(var o=[],a=0,s=0;s<i;s++){a+=$(t.nPoints),o.push(a)}r.points=et(t.flags,t.glyphs,a);for(var u=0;u<i;u++)r.points[o[u]-1].endContour=!0;$(t.glyphs)}else if(i<0){var l=ks.prototype._decodeComposite.call({_font:this},r,t.composites);if(l){$(t.glyphs)}}e.push(r)}this._transformedGlyphs=e},n}(Fs),qs=function(){function t(e){lt(this,t),this.length=e,this._buf=new nt.Buffer(e)}return t.prototype.decode=function(t,e){return new nt.DecodeStream(this._buf.decode(t,e))},t}(),GlyfTable=new nt.Struct({version:nt.uint32,numGlyphs:nt.uint16,indexFormat:nt.uint16,nContourStreamSize:nt.uint32,nPointsStreamSize:nt.uint32,flagStreamSize:nt.uint32,glyphStreamSize:nt.uint32,compositeStreamSize:nt.uint32,bboxStreamSize:nt.uint32,instructionStreamSize:nt.uint32,nContours:new qs("nContourStreamSize"),nPoints:new qs("nPointsStreamSize"),flags:new qs("flagStreamSize"),glyphs:new qs("glyphStreamSize"),composites:new qs("compositeStreamSize"),bboxes:new qs("bboxStreamSize"),instructions:new qs("instructionStreamSize")}),Zs=253,Ys=254,Xs=255,Ks=253,Js=new nt.VersionedStruct(nt.uint32,{65536:{numFonts:nt.uint32,offsets:new nt.Array(nt.uint32,"numFonts")},131072:{numFonts:nt.uint32,offsets:new nt.Array(nt.uint32,"numFonts"),dsigTag:nt.uint32,dsigLength:nt.uint32,dsigOffset:nt.uint32}}),Qs=function(){function t(e){if(lt(this,t),this.stream=e,"ttcf"!==e.readString(4))throw new Error("Not a TrueType collection");this.header=Js.decode(e)}return t.probe=function(t){return"ttcf"===t.toString("ascii",0,4)},t.prototype.getFont=function(t){for(var e=this.header.offsets,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=new nt.DecodeStream(this.stream.buffer);a.pos=o;var s=new Fs(a);if(s.postscriptName===t)return s}return null},ct(t,[{key:"fonts",get:function(){for(var t=[],e=this.header.offsets,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=new nt.DecodeStream(this.stream.buffer);a.pos=o,t.push(new Fs(a))}return t}}]),t}(),$s=new nt.String(nt.uint8),tu=(new nt.Struct({len:nt.uint32,buf:new nt.Buffer("len")}),new nt.Struct({id:nt.uint16,nameOffset:nt.int16,attr:nt.uint8,dataOffset:nt.uint24,handle:nt.uint32})),eu=new nt.Struct({name:new nt.String(4),maxTypeIndex:nt.uint16,refList:new nt.Pointer(nt.uint16,new nt.Array(tu,function(t){return t.maxTypeIndex+1}),{type:"parent"})}),nu=new nt.Struct({length:nt.uint16,types:new nt.Array(eu,function(t){return t.length+1})}),ru=new nt.Struct({reserved:new nt.Reserved(nt.uint8,24),typeList:new nt.Pointer(nt.uint16,nu),nameListOffset:new nt.Pointer(nt.uint16,"void")}),iu=new nt.Struct({dataOffset:nt.uint32,map:new nt.Pointer(nt.uint32,ru),dataLength:nt.uint32,mapLength:nt.uint32}),ou=function(){function t(e){lt(this,t),this.stream=e,this.header=iu.decode(this.stream);for(var n=this.header.map.typeList.types,r=Array.isArray(n),i=0,n=r?n:it(n);;){var o;if(r){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}for(var a=o,s=a.refList,u=Array.isArray(s),l=0,s=u?s:it(s);;){var c;if(u){if(l>=s.length)break;c=s[l++]}else{if(l=s.next(),l.done)break;c=l.value}var f=c;f.nameOffset>=0?(this.stream.pos=f.nameOffset+this.header.map.nameListOffset,f.name=$s.decode(this.stream)):f.name=null}"sfnt"===a.name&&(this.sfnt=a)}}return t.probe=function(t){var e=new nt.DecodeStream(t);try{var n=iu.decode(e)}catch(t){return!1}for(var r=n.map.typeList.types,i=Array.isArray(r),o=0,r=i?r:it(r);;){var a;if(i){if(o>=r.length)break;a=r[o++]}else{if(o=r.next(),o.done)break;a=o.value}if("sfnt"===a.name)return!0}return!1},t.prototype.getFont=function(t){if(!this.sfnt)return null;for(var e=this.sfnt.refList,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=this.header.dataOffset+o.dataOffset+4,s=new nt.DecodeStream(this.stream.buffer.slice(a)),u=new Fs(s);if(u.postscriptName===t)return u}return null},ct(t,[{key:"fonts",get:function(){for(var t=[],e=this.sfnt.refList,n=Array.isArray(e),r=0,e=n?e:it(e);;){var i;if(n){if(r>=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var o=i,a=this.header.dataOffset+o.dataOffset+4,s=new nt.DecodeStream(this.stream.buffer.slice(a));t.push(new Fs(s))}return t}}]),t}();Et.registerFormat(Fs),Et.registerFormat(Ns),Et.registerFormat(Hs),Et.registerFormat(Qs),Et.registerFormat(ou),t.exports=Et}).call(e,n(2).Buffer,n(36))},function(t,e,n){(function(){var t,r,i,o;e.EncodeStream=n(85),e.DecodeStream=n(86),e.Array=n(108),e.LazyArray=n(111),e.Bitfield=n(112),e.Boolean=n(113),e.Buffer=n(114),e.Enum=n(115),e.Optional=n(116),e.Reserved=n(117),e.String=n(118),e.Struct=n(119),e.VersionedStruct=n(120),i=n(109);for(t in i)r=i[t],e[t]=r;o=n(121);for(t in o)r=o[t],e[t]=r}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o,a,s={}.hasOwnProperty,u=function(t,e){function n(){this.constructor=t}for(var r in e)s.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};a=n(31),r=n(86);try{o=n(87)}catch(t){}i=function(t){function n(t){null==t&&(t=65536),n.__super__.constructor.apply(this,arguments),this.buffer=new e(t),this.bufferOffset=0,this.pos=0}var i;u(n,t);for(i in e.prototype)"write"===i.slice(0,5)&&function(t){var e;e=+r.TYPES[t.replace(/write|[BL]E/g,"")],n.prototype[t]=function(n){return this.ensure(e),this.buffer[t](n,this.bufferOffset),this.bufferOffset+=e,this.pos+=e}}(i);return n.prototype._read=function(){},n.prototype.ensure=function(t){if(this.bufferOffset+t>this.buffer.length)return this.flush()},n.prototype.flush=function(){if(this.bufferOffset>0)return this.push(new e(this.buffer.slice(0,this.bufferOffset))),this.bufferOffset=0},n.prototype.writeBuffer=function(t){return this.flush(),this.push(t),this.pos+=t.length},n.prototype.writeString=function(t,n){var r,i,a,s,u;switch(null==n&&(n="ascii"),n){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.writeBuffer(new e(t,n));case"utf16be":for(r=new e(t,"utf16le"),a=s=0,u=r.length-1;s<u;a=s+=2)i=r[a],r[a]=r[a+1],r[a+1]=i;return this.writeBuffer(r);default:if(o)return this.writeBuffer(o.encode(t,n));throw new Error("Install iconv-lite to enable additional string encodings.")}},n.prototype.writeUInt24BE=function(t){return this.ensure(3),this.buffer[this.bufferOffset++]=t>>>16&255,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=255&t,this.pos+=3},n.prototype.writeUInt24LE=function(t){return this.ensure(3),this.buffer[this.bufferOffset++]=255&t,this.buffer[this.bufferOffset++]=t>>>8&255,this.buffer[this.bufferOffset++]=t>>>16&255,this.pos+=3},n.prototype.writeInt24BE=function(t){return t>=0?this.writeUInt24BE(t):this.writeUInt24BE(t+16777215+1)},n.prototype.writeInt24LE=function(t){return t>=0?this.writeUInt24LE(t):this.writeUInt24LE(t+16777215+1)},n.prototype.fill=function(t,n){var r;return n<this.buffer.length?(this.ensure(n),this.buffer.fill(t,this.bufferOffset,this.bufferOffset+n),this.bufferOffset+=n,this.pos+=n):(r=new e(n),r.fill(t),this.writeBuffer(r))},n.prototype.end=function(){return this.flush(),this.push(null)},n}(a.Readable),t.exports=i}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e){(function(){var r,i;try{i=n(87)}catch(t){}r=function(){function t(t){this.buffer=t,this.pos=0,this.length=this.buffer.length}var n;t.TYPES={UInt8:1,UInt16:2,UInt24:3,UInt32:4,Int8:1,Int16:2,Int24:3,Int32:4,Float:4,Double:8};for(n in e.prototype)"read"===n.slice(0,4)&&function(e){var n;n=t.TYPES[e.replace(/read|[BL]E/g,"")],t.prototype[e]=function(){var t;return t=this.buffer[e](this.pos),this.pos+=n,t}}(n);return t.prototype.readString=function(t,n){var r,o,a,s,u;switch(null==n&&(n="ascii"),n){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.buffer.toString(n,this.pos,this.pos+=t);case"utf16be":for(r=new e(this.readBuffer(t)),a=s=0,u=r.length-1;s<u;a=s+=2)o=r[a],r[a]=r[a+1],r[a+1]=o;return r.toString("utf16le");default:if(r=this.readBuffer(t),i)try{return i.decode(r,n)}catch(t){}return r}},t.prototype.readBuffer=function(t){return this.buffer.slice(this.pos,this.pos+=t)},t.prototype.readUInt24BE=function(){return(this.readUInt16BE()<<8)+this.readUInt8()},t.prototype.readUInt24LE=function(){return this.readUInt16LE()+(this.readUInt8()<<16)},t.prototype.readInt24BE=function(){return(this.readInt16BE()<<8)+this.readUInt8()},t.prototype.readInt24LE=function(){return this.readUInt16LE()+(this.readInt8()<<16)},t}(),t.exports=r}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e){"use strict";var r=n(2).Buffer,i=n(88),o=t.exports;o.encodings=null,o.defaultCharUnicode="�",o.defaultCharSingleByte="?",o.encode=function(t,e,n){t=""+(t||"");var i=o.getEncoder(e,n),a=i.write(t),s=i.end();return s&&s.length>0?r.concat([a,s]):a},o.decode=function(t,e,n){"string"==typeof t&&(o.skipDecodeWarning||(o.skipDecodeWarning=!0),t=new r(""+(t||""),"binary"));var i=o.getDecoder(e,n),a=i.write(t),s=i.end();return s?a+s:a},o.encodingExists=function(t){try{return o.getCodec(t),!0}catch(t){return!1}},o.toEncoding=o.encode,o.fromEncoding=o.decode,o._codecDataCache={},o.getCodec=function(t){o.encodings||(o.encodings=n(89));for(var e=(""+t).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g,""),r={};;){var i=o._codecDataCache[e];if(i)return i;var a=o.encodings[e];switch(typeof a){case"string":e=a;break;case"object":for(var s in a)r[s]=a[s];r.encodingName||(r.encodingName=e),e=a.type;break;case"function":return r.encodingName||(r.encodingName=e),i=new a(r,o),o._codecDataCache[r.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+t+"' (searched as: '"+e+"')")}}},o.getEncoder=function(t,e){var n=o.getCodec(t),r=new n.encoder(e,n);return n.bomAware&&e&&e.addBOM&&(r=new i.PrependBOM(r,e)),r},o.getDecoder=function(t,e){var n=o.getCodec(t),r=new n.decoder(e,n);return!n.bomAware||e&&!1===e.stripBOM||(r=new i.StripBOM(r,e)),r};var a=void 0!==e&&e.versions&&e.versions.node;if(a){var s=a.split(".").map(Number);(s[0]>0||s[1]>=10)&&n(106)(o),n(107)(o)}}).call(e,n(36))},function(t,e){"use strict";function n(t,e){this.encoder=t,this.addBOM=!0}function r(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}e.PrependBOM=n,n.prototype.write=function(t){return this.addBOM&&(t="\ufeff"+t,this.addBOM=!1),this.encoder.write(t)},n.prototype.end=function(){return this.encoder.end()},e.StripBOM=r,r.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e?e:("\ufeff"===e[0]&&(e=e.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0,e)},r.prototype.end=function(){return this.decoder.end()}},function(t,e,n){"use strict";for(var r=[n(90),n(91),n(92),n(93),n(94),n(95),n(96),n(97)],i=0;i<r.length;i++){var t=r[i];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}},function(t,e,n){"use strict";function r(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,"base64"===this.enc?this.encoder=a:"cesu8"===this.enc&&(this.enc="utf8",this.encoder=s,"💩"!==new l("eda0bdedb2a9","hex").toString()&&(this.decoder=u,this.defaultCharUnicode=e.defaultCharUnicode))}function i(t,e){c.call(this,e.enc)}function o(t,e){this.enc=e.enc}function a(t,e){this.prevStr=""}function s(t,e){}function u(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}var l=n(2).Buffer;t.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},iso88591:"binary",base64:{type:"_internal"},hex:{type:"_internal"},_internal:r},r.prototype.encoder=o,r.prototype.decoder=i;var c=n(49).StringDecoder;c.prototype.end||(c.prototype.end=function(){}),i.prototype=c.prototype,o.prototype.write=function(t){return new l(t,this.enc)},o.prototype.end=function(){},a.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),new l(t,"base64")},a.prototype.end=function(){return new l(this.prevStr,"base64")},s.prototype.write=function(t){for(var e=new l(3*t.length),n=0,r=0;r<t.length;r++){var i=t.charCodeAt(r);i<128?e[n++]=i:i<2048?(e[n++]=192+(i>>>6),e[n++]=128+(63&i)):(e[n++]=224+(i>>>12),e[n++]=128+(i>>>6&63),e[n++]=128+(63&i))}return e.slice(0,n)},s.prototype.end=function(){},u.prototype.write=function(t){for(var e=this.acc,n=this.contBytes,r=this.accBytes,i="",o=0;o<t.length;o++){var a=t[o];128!=(192&a)?(n>0&&(i+=this.defaultCharUnicode,n=0),a<128?i+=String.fromCharCode(a):a<224?(e=31&a,n=1,r=1):a<240?(e=15&a,n=2,r=1):i+=this.defaultCharUnicode):n>0?(e=e<<6|63&a,n--,r++,0===n&&(i+=2===r&&e<128&&e>0?this.defaultCharUnicode:3===r&&e<2048?this.defaultCharUnicode:String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=n,this.accBytes=r,i},u.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}},function(t,e,n){"use strict";function r(){}function i(){}function o(){this.overflowByte=-1}function a(t,e){this.iconv=e}function s(t,e){t=t||{},void 0===t.addBOM&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder("utf-16le",t)}function u(t,e){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=t||{},this.iconv=e.iconv}function l(t,e){var n=e||"utf-16le";if(t.length>=2)if(254==t[0]&&255==t[1])n="utf-16be";else if(255==t[0]&&254==t[1])n="utf-16le";else{for(var r=0,i=0,o=Math.min(t.length-t.length%2,64),a=0;a<o;a+=2)0===t[a]&&0!==t[a+1]&&i++,0!==t[a]&&0===t[a+1]&&r++;i>r?n="utf-16be":i<r&&(n="utf-16le")}return n}var c=n(2).Buffer;e.utf16be=r,r.prototype.encoder=i,r.prototype.decoder=o,r.prototype.bomAware=!0,i.prototype.write=function(t){for(var e=new c(t,"ucs2"),n=0;n<e.length;n+=2){var r=e[n];e[n]=e[n+1],e[n+1]=r}return e},i.prototype.end=function(){},o.prototype.write=function(t){if(0==t.length)return"";var e=new c(t.length+1),n=0,r=0;for(-1!==this.overflowByte&&(e[0]=t[0],e[1]=this.overflowByte,n=1,r=2);n<t.length-1;n+=2,r+=2)e[r]=t[n+1],e[r+1]=t[n];return this.overflowByte=n==t.length-1?t[t.length-1]:-1,e.slice(0,r).toString("ucs2")},o.prototype.end=function(){},e.utf16=a,a.prototype.encoder=s,a.prototype.decoder=u,s.prototype.write=function(t){return this.encoder.write(t)},s.prototype.end=function(){return this.encoder.end()},u.prototype.write=function(t){if(!this.decoder){if(this.initialBytes.push(t),this.initialBytesLen+=t.length,this.initialBytesLen<16)return"";var t=c.concat(this.initialBytes),e=l(t,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options),this.initialBytes.length=this.initialBytesLen=0}return this.decoder.write(t)},u.prototype.end=function(){if(!this.decoder){var t=c.concat(this.initialBytes),e=l(t,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);var n=this.decoder.write(t),r=this.decoder.end();return r?n+r:n}return this.decoder.end()}},function(t,e,n){"use strict";function r(t,e){this.iconv=e}function i(t,e){this.iconv=e.iconv}function o(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}function a(t,e){this.iconv=e}function s(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=new l(6),this.base64AccumIdx=0}function u(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var l=n(2).Buffer;e.utf7=r,e.unicode11utf7="utf7",r.prototype.encoder=i,r.prototype.decoder=o,r.prototype.bomAware=!0;var c=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;i.prototype.write=function(t){return new l(t.replace(c,function(t){return"+"+("+"===t?"":this.iconv.encode(t,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))},i.prototype.end=function(){};for(var f=/[A-Za-z0-9\/+]/,h=[],p=0;p<256;p++)h[p]=f.test(String.fromCharCode(p));var d="+".charCodeAt(0),g="-".charCodeAt(0),y="&".charCodeAt(0);o.prototype.write=function(t){for(var e="",n=0,r=this.inBase64,i=this.base64Accum,o=0;o<t.length;o++)if(r){if(!h[t[o]]){if(o==n&&t[o]==g)e+="+";else{var a=i+t.slice(n,o).toString();e+=this.iconv.decode(new l(a,"base64"),"utf16-be")}t[o]!=g&&o--,n=o+1,r=!1,i=""}}else t[o]==d&&(e+=this.iconv.decode(t.slice(n,o),"ascii"),n=o+1,r=!0);if(r){var a=i+t.slice(n).toString(),s=a.length-a.length%8;i=a.slice(s),a=a.slice(0,s),e+=this.iconv.decode(new l(a,"base64"),"utf16-be")}else e+=this.iconv.decode(t.slice(n),"ascii");return this.inBase64=r,this.base64Accum=i,e},o.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(new l(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t},e.utf7imap=a,a.prototype.encoder=s,a.prototype.decoder=u,a.prototype.bomAware=!0,s.prototype.write=function(t){for(var e=this.inBase64,n=this.base64Accum,r=this.base64AccumIdx,i=new l(5*t.length+10),o=0,a=0;a<t.length;a++){var s=t.charCodeAt(a);32<=s&&s<=126?(e&&(r>0&&(o+=i.write(n.slice(0,r).toString("base64").replace(/\//g,",").replace(/=+$/,""),o),r=0),i[o++]=g,e=!1),e||(i[o++]=s,s===y&&(i[o++]=g))):(e||(i[o++]=y,e=!0),e&&(n[r++]=s>>8,n[r++]=255&s,r==n.length&&(o+=i.write(n.toString("base64").replace(/\//g,","),o),r=0)))}return this.inBase64=e,this.base64AccumIdx=r,i.slice(0,o)},s.prototype.end=function(){var t=new l(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=g,this.inBase64=!1),t.slice(0,e)};var v=h.slice();v[",".charCodeAt(0)]=!0,u.prototype.write=function(t){for(var e="",n=0,r=this.inBase64,i=this.base64Accum,o=0;o<t.length;o++)if(r){if(!v[t[o]]){if(o==n&&t[o]==g)e+="&";else{var a=i+t.slice(n,o).toString().replace(/,/g,"/");e+=this.iconv.decode(new l(a,"base64"),"utf16-be")}t[o]!=g&&o--,n=o+1,r=!1,i=""}}else t[o]==y&&(e+=this.iconv.decode(t.slice(n,o),"ascii"),n=o+1,r=!0);if(r){var a=i+t.slice(n).toString().replace(/,/g,"/"),s=a.length-a.length%8;i=a.slice(s),a=a.slice(0,s),e+=this.iconv.decode(new l(a,"base64"),"utf16-be")}else e+=this.iconv.decode(t.slice(n),"ascii");return this.inBase64=r,this.base64Accum=i,e},u.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(new l(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}},function(t,e,n){"use strict";function r(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||128!==t.chars.length&&256!==t.chars.length)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===t.chars.length){for(var n="",r=0;r<128;r++)n+=String.fromCharCode(r);t.chars=n+t.chars}this.decodeBuf=new a(t.chars,"ucs2");var i=new a(65536);i.fill(e.defaultCharSingleByte.charCodeAt(0));for(var r=0;r<t.chars.length;r++)i[t.chars.charCodeAt(r)]=r;this.encodeBuf=i}function i(t,e){this.encodeBuf=e.encodeBuf}function o(t,e){this.decodeBuf=e.decodeBuf}var a=n(2).Buffer;e._sbcs=r,r.prototype.encoder=i,r.prototype.decoder=o,i.prototype.write=function(t){for(var e=new a(t.length),n=0;n<t.length;n++)e[n]=this.encodeBuf[t.charCodeAt(n)];return e},i.prototype.end=function(){},o.prototype.write=function(t){for(var e=this.decodeBuf,n=new a(2*t.length),r=0,i=0,o=0;o<t.length;o++)r=2*t[o],i=2*o,n[i]=e[r],n[i+1]=e[r+1];return n.toString("ucs2")},o.prototype.end=function(){}},function(t,e){"use strict";t.exports={10029:"maccenteuro", maccenteuro:{type:"_sbcs",chars:"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cp28591:"iso88591",28591:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",10000:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}},function(t,e){"use strict";t.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת���"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œں ،¢£¤¥¦§¨©ھ«¬®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûüے"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},win1258:"windows1258",cp1258:"windows1258",iso88592:{type:"_sbcs",chars:" Ą˘Ł¤ĽŚ§¨ŠŞŤŹŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:" Ħ˘£¤�Ĥ§¨İŞĞĴ�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:" ĄĸŖ¤Ĩϧ¨ŠĒĢŦޝ°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:" ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:" ���¤�������،�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:" ‘’£€₯¦§¨©ͺ«¬�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:" �¢£¤¥¦§¨©×«¬®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת���"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:" ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:" ĄĒĢĪĨͧĻĐŠŦŽŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:" กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:" ”¢£¤„¦§Ø©Ŗ«¬®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:" Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:" ¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:" ĄąŁ€„Чš©Ș«ŹźŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’±“¾¶§÷„°∙·¹³²■ "},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ "},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´˝˛ˇ˘§÷¸°¨˙űŘř■ "},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№ыЫзЗшШэЭщЩчЧ§■ "},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´±‗¾¶§÷¸°¨·¹³²■ "},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´±�¾¶§÷¸°¨·¹³²■ "},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ "},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:" ¡¢£¤¥¦§¨©ª«¬®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:" ЁЂҐЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:" ¡¢£¤¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:" ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:" ¡¢£€¥¦§œ©ª«¬®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:" �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:" ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},function(t,e,n){"use strict";function r(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var n=t.table();this.decodeTables=[],this.decodeTables[0]=f.slice(0),this.decodeTableSeq=[];for(var r=0;r<n.length;r++)this._addDecodeChunk(n[r]);this.defaultCharUnicode=e.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var i={};if(t.encodeSkipVals)for(var r=0;r<t.encodeSkipVals.length;r++){var o=t.encodeSkipVals[r];if("number"==typeof o)i[o]=!0;else for(var a=o.from;a<=o.to;a++)i[a]=!0}if(this._fillEncodeTable(0,0,i),t.encodeAdd)for(var s in t.encodeAdd)Object.prototype.hasOwnProperty.call(t.encodeAdd,s)&&this._setEncodeChar(s.charCodeAt(0),t.encodeAdd[s]);if(this.defCharSB=this.encodeTable[0][e.defaultCharSingleByte.charCodeAt(0)],this.defCharSB===u&&(this.defCharSB=this.encodeTable[0]["?"]),this.defCharSB===u&&(this.defCharSB="?".charCodeAt(0)),"function"==typeof t.gb18030){this.gb18030=t.gb18030();for(var h=this.decodeTables.length,p=this.decodeTables[h]=f.slice(0),d=this.decodeTables.length,g=this.decodeTables[d]=f.slice(0),r=129;r<=254;r++)for(var y=c-this.decodeTables[0][r],v=this.decodeTables[y],a=48;a<=57;a++)v[a]=c-h;for(var r=129;r<=254;r++)p[r]=c-d;for(var r=48;r<=57;r++)g[r]=l}}function i(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}function o(t,e){this.nodeIdx=0,this.prevBuf=new s(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}function a(t,e){if(t[0]>e)return-1;for(var n=0,r=t.length;n<r-1;){var i=n+Math.floor((r-n+1)/2);t[i]<=e?n=i:r=i}return n}var s=n(2).Buffer;e._dbcs=r;for(var u=-1,l=-2,c=-1e3,f=new Array(256),h=0;h<256;h++)f[h]=u;r.prototype.encoder=i,r.prototype.decoder=o,r.prototype._getDecodeTrieNode=function(t){for(var e=[];t>0;t>>=8)e.push(255&t);0==e.length&&e.push(0);for(var n=this.decodeTables[0],r=e.length-1;r>0;r--){var i=n[e[r]];if(i==u)n[e[r]]=c-this.decodeTables.length,this.decodeTables.push(n=f.slice(0));else{if(!(i<=c))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16));n=this.decodeTables[c-i]}}return n},r.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),n=this._getDecodeTrieNode(e);e&=255;for(var r=1;r<t.length;r++){var i=t[r];if("string"==typeof i)for(var o=0;o<i.length;){var a=i.charCodeAt(o++);if(55296<=a&&a<56320){var s=i.charCodeAt(o++);if(!(56320<=s&&s<57344))throw new Error("Incorrect surrogate pair in "+this.encodingName+" at chunk "+t[0]);n[e++]=65536+1024*(a-55296)+(s-56320)}else if(4080<a&&a<=4095){for(var u=4095-a+2,l=[],c=0;c<u;c++)l.push(i.charCodeAt(o++));n[e++]=-10-this.decodeTableSeq.length,this.decodeTableSeq.push(l)}else n[e++]=a}else{if("number"!=typeof i)throw new Error("Incorrect type '"+typeof i+"' given in "+this.encodingName+" at chunk "+t[0]);for(var f=n[e-1]+1,o=0;o<i;o++)n[e++]=f++}}if(e>255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)},r.prototype._getEncodeBucket=function(t){var e=t>>8;return void 0===this.encodeTable[e]&&(this.encodeTable[e]=f.slice(0)),this.encodeTable[e]},r.prototype._setEncodeChar=function(t,e){var n=this._getEncodeBucket(t),r=255&t;n[r]<=-10?this.encodeTableSeq[-10-n[r]][-1]=e:n[r]==u&&(n[r]=e)},r.prototype._setEncodeSequence=function(t,e){var n,r=t[0],i=this._getEncodeBucket(r),o=255&r;i[o]<=-10?n=this.encodeTableSeq[-10-i[o]]:(n={},i[o]!==u&&(n[-1]=i[o]),i[o]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(n));for(var a=1;a<t.length-1;a++){var s=n[r];"object"==typeof s?n=s:(n=n[r]={},void 0!==s&&(n[-1]=s))}r=t[t.length-1],n[r]=e},r.prototype._fillEncodeTable=function(t,e,n){for(var r=this.decodeTables[t],i=0;i<256;i++){var o=r[i],a=e+i;n[a]||(o>=0?this._setEncodeChar(o,a):o<=c?this._fillEncodeTable(c-o,a<<8,n):o<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-o],a))}},i.prototype.write=function(t){for(var e=new s(t.length*(this.gb18030?4:3)),n=this.leadSurrogate,r=this.seqObj,i=-1,o=0,l=0;;){if(-1===i){if(o==t.length)break;var c=t.charCodeAt(o++)}else{var c=i;i=-1}if(55296<=c&&c<57344)if(c<56320){if(-1===n){n=c;continue}n=c,c=u}else-1!==n?(c=65536+1024*(n-55296)+(c-56320),n=-1):c=u;else-1!==n&&(i=c,c=u,n=-1);var f=u;if(void 0!==r&&c!=u){var h=r[c];if("object"==typeof h){r=h;continue}"number"==typeof h?f=h:void 0==h&&void 0!==(h=r[-1])&&(f=h,i=c),r=void 0}else if(c>=0){var p=this.encodeTable[c>>8];if(void 0!==p&&(f=p[255&c]),f<=-10){r=this.encodeTableSeq[-10-f];continue}if(f==u&&this.gb18030){var d=a(this.gb18030.uChars,c);if(-1!=d){var f=this.gb18030.gbChars[d]+(c-this.gb18030.uChars[d]);e[l++]=129+Math.floor(f/12600),f%=12600,e[l++]=48+Math.floor(f/1260),f%=1260,e[l++]=129+Math.floor(f/10),f%=10,e[l++]=48+f;continue}}}f===u&&(f=this.defaultCharSingleByte),f<256?e[l++]=f:f<65536?(e[l++]=f>>8,e[l++]=255&f):(e[l++]=f>>16,e[l++]=f>>8&255,e[l++]=255&f)}return this.seqObj=r,this.leadSurrogate=n,e.slice(0,l)},i.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var t=new s(10),e=0;if(this.seqObj){var n=this.seqObj[-1];void 0!==n&&(n<256?t[e++]=n:(t[e++]=n>>8,t[e++]=255&n)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}},i.prototype.findIdx=a,o.prototype.write=function(t){var e,n=new s(2*t.length),r=this.nodeIdx,i=this.prevBuf,o=this.prevBuf.length,f=-this.prevBuf.length;o>0&&(i=s.concat([i,t.slice(0,10)]));for(var h=0,p=0;h<t.length;h++){var d=h>=0?t[h]:i[h+o],e=this.decodeTables[r][d];if(e>=0);else if(e===u)h=f,e=this.defaultCharUnicode.charCodeAt(0);else if(e===l){var g=f>=0?t.slice(f,h+1):i.slice(f+o,h+1+o),y=12600*(g[0]-129)+1260*(g[1]-48)+10*(g[2]-129)+(g[3]-48),v=a(this.gb18030.gbChars,y);e=this.gb18030.uChars[v]+y-this.gb18030.gbChars[v]}else{if(e<=c){r=c-e;continue}if(!(e<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+e+" at "+r+"/"+d);for(var b=this.decodeTableSeq[-10-e],m=0;m<b.length-1;m++)e=b[m],n[p++]=255&e,n[p++]=e>>8;e=b[b.length-1]}if(e>65535){e-=65536;var w=55296+Math.floor(e/1024);n[p++]=255&w,n[p++]=w>>8,e=56320+e%1024}n[p++]=255&e,n[p++]=e>>8,r=0,f=h+1}return this.nodeIdx=r,this.prevBuf=f>=0?t.slice(f):i.slice(f+o),n.slice(0,p).toString("ucs2")},o.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=new s(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t}},function(t,e,n){"use strict";t.exports={shiftjis:{type:"_dbcs",table:function(){return n(98)},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return n(99)},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return n(100)}},gbk:{type:"_dbcs",table:function(){return n(100).concat(n(101))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return n(100).concat(n(101))},gb18030:function(){return n(102)},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return n(103)}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return n(104)}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return n(104).concat(n(105))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},function(t,e){ t.exports=[["0","\0",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]},function(t,e){t.exports=[["0","\0",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]},function(t,e){ t.exports=[["0","\0",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]},function(t,e){t.exports=[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]},function(t,e){t.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}},function(t,e){ t.exports=[["0","\0",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]},function(t,e){ t.exports=[["0","\0",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]},function(t,e){t.exports=[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒÊ̄ẾÊ̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜüê̄ếê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]},function(t,e,n){"use strict";function r(t,e){this.conv=t,e=e||{},e.decodeStrings=!1,a.call(this,e)}function i(t,e){this.conv=t,e=e||{},e.encoding=this.encoding="utf8",a.call(this,e)}var o=n(2).Buffer,a=n(31).Transform;t.exports=function(t){t.encodeStream=function(e,n){return new r(t.getEncoder(e,n),n)},t.decodeStream=function(e,n){return new i(t.getDecoder(e,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=r,t.IconvLiteDecoderStream=i,t._collect=i.prototype.collect},r.prototype=Object.create(a.prototype,{constructor:{value:r}}),r.prototype._transform=function(t,e,n){if("string"!=typeof t)return n(new Error("Iconv encoding stream needs strings as its input."));try{var r=this.conv.write(t);r&&r.length&&this.push(r),n()}catch(t){n(t)}},r.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(e){t(e)}},r.prototype.collect=function(t){var e=[];return this.on("error",t),this.on("data",function(t){e.push(t)}),this.on("end",function(){t(null,o.concat(e))}),this},i.prototype=Object.create(a.prototype,{constructor:{value:i}}),i.prototype._transform=function(t,e,n){if(!o.isBuffer(t))return n(new Error("Iconv decoding stream needs buffers as its input."));try{var r=this.conv.write(t);r&&r.length&&this.push(r,this.encoding),n()}catch(t){n(t)}},i.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(e){t(e)}},i.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(t){e+=t}),this.on("end",function(){t(null,e)}),this}},function(t,e,n){"use strict";var r=n(2).Buffer;t.exports=function(t){var e=void 0;t.supportsNodeEncodingsExtension=!(new r(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!e&&(e={},t.supportsNodeEncodingsExtension)){var i={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};r.isNativeEncoding=function(t){return t&&i[t.toLowerCase()]};var o=n(2).SlowBuffer;if(e.SlowBufferToString=o.prototype.toString,o.prototype.toString=function(n,i,o){return n=String(n||"utf8").toLowerCase(),r.isNativeEncoding(n)?e.SlowBufferToString.call(this,n,i,o):(void 0===i&&(i=0),void 0===o&&(o=this.length),t.decode(this.slice(i,o),n))},e.SlowBufferWrite=o.prototype.write,o.prototype.write=function(n,i,o,a){if(isFinite(i))isFinite(o)||(a=o,o=void 0);else{var s=a;a=i,i=o,o=s}i=+i||0;var u=this.length-i;if(o?(o=+o)>u&&(o=u):o=u,a=String(a||"utf8").toLowerCase(),r.isNativeEncoding(a))return e.SlowBufferWrite.call(this,n,i,o,a);if(n.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var l=t.encode(n,a);return l.length<o&&(o=l.length),l.copy(this,i,0,o),o},e.BufferIsEncoding=r.isEncoding,r.isEncoding=function(e){return r.isNativeEncoding(e)||t.encodingExists(e)},e.BufferByteLength=r.byteLength,r.byteLength=o.byteLength=function(n,i){return i=String(i||"utf8").toLowerCase(),r.isNativeEncoding(i)?e.BufferByteLength.call(this,n,i):t.encode(n,i).length},e.BufferToString=r.prototype.toString,r.prototype.toString=function(n,i,o){return n=String(n||"utf8").toLowerCase(),r.isNativeEncoding(n)?e.BufferToString.call(this,n,i,o):(void 0===i&&(i=0),void 0===o&&(o=this.length),t.decode(this.slice(i,o),n))},e.BufferWrite=r.prototype.write,r.prototype.write=function(n,i,o,a){var s=i,u=o,l=a;if(isFinite(i))isFinite(o)||(a=o,o=void 0);else{var c=a;a=i,i=o,o=c}if(a=String(a||"utf8").toLowerCase(),r.isNativeEncoding(a))return e.BufferWrite.call(this,n,s,u,l);i=+i||0;var f=this.length-i;if(o?(o=+o)>f&&(o=f):o=f,n.length>0&&(o<0||i<0))throw new RangeError("attempt to write beyond buffer bounds");var h=t.encode(n,a);return h.length<o&&(o=h.length),h.copy(this,i,0,o),o},t.supportsStreams){var a=n(31).Readable;e.ReadableSetEncoding=a.prototype.setEncoding,a.prototype.setEncoding=function(e,n){this._readableState.decoder=t.getDecoder(e,n),this._readableState.encoding=e},a.prototype.collect=t._collect}}},t.undoExtendNodeEncodings=function(){if(t.supportsNodeEncodingsExtension){if(!e)throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.");delete r.isNativeEncoding;var i=n(2).SlowBuffer;if(i.prototype.toString=e.SlowBufferToString,i.prototype.write=e.SlowBufferWrite,r.isEncoding=e.BufferIsEncoding,r.byteLength=e.BufferByteLength,r.prototype.toString=e.BufferToString,r.prototype.write=e.BufferWrite,t.supportsStreams){var o=n(31).Readable;o.prototype.setEncoding=e.ReadableSetEncoding,delete o.prototype.collect}e=void 0}}}},function(t,e,n){(function(){var e,r,i;r=n(109).Number,i=n(110),e=function(){function t(t,e,n){this.type=t,this.length=e,this.lengthType=null!=n?n:"count"}return t.prototype.decode=function(t,e){var n,o,a,s,u,l;if(a=t.pos,s=[],n=e,null!=this.length&&(o=i.resolveLength(this.length,t,e)),this.length instanceof r&&(Object.defineProperties(s,{parent:{value:e},_startOffset:{value:a},_currentOffset:{value:0,writable:!0},_length:{value:o}}),n=s),null==o||"bytes"===this.lengthType)for(u=null!=o?t.pos+o:(null!=e?e._length:void 0)?e._startOffset+e._length:t.length;t.pos<u;)s.push(this.type.decode(t,n));else for(l=0;l<o;l+=1)s.push(this.type.decode(t,n));return s},t.prototype.size=function(t,e){var n,o,a,s;if(!t)return this.type.size(null,e)*i.resolveLength(this.length,null,e);for(o=0,this.length instanceof r&&(o+=this.length.size(),e={parent:e}),a=0,s=t.length;a<s;a++)n=t[a],o+=this.type.size(n,e);return o},t.prototype.encode=function(t,e,n){var i,o,a,s,u,l;for(i=n,this.length instanceof r&&(i={pointers:[],startOffset:t.pos,parent:n},i.pointerOffset=t.pos+this.size(e,i),this.length.encode(t,e.length)),u=0,l=e.length;u<l;u++)a=e[u],this.type.encode(t,a,i);if(this.length instanceof r)for(o=0;o<i.pointers.length;)s=i.pointers[o++],s.type.encode(t,s.val)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var t,r,i,o={}.hasOwnProperty,a=function(t,e){function n(){this.constructor=t}for(var r in e)o.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};t=n(86),i=function(){function e(t,e){this.type=t,this.endian=null!=e?e:"BE",this.fn=this.type,"8"!==this.type[this.type.length-1]&&(this.fn+=this.endian)}return e.prototype.size=function(){return t.TYPES[this.type]},e.prototype.decode=function(t){return t["read"+this.fn]()},e.prototype.encode=function(t,e){return t["write"+this.fn](e)},e}(),e.Number=i,e.uint8=new i("UInt8"),e.uint16be=e.uint16=new i("UInt16","BE"),e.uint16le=new i("UInt16","LE"),e.uint24be=e.uint24=new i("UInt24","BE"),e.uint24le=new i("UInt24","LE"),e.uint32be=e.uint32=new i("UInt32","BE"),e.uint32le=new i("UInt32","LE"),e.int8=new i("Int8"),e.int16be=e.int16=new i("Int16","BE"),e.int16le=new i("Int16","LE"),e.int24be=e.int24=new i("Int24","BE"),e.int24le=new i("Int24","LE"),e.int32be=e.int32=new i("Int32","BE"),e.int32le=new i("Int32","LE"),e.floatbe=e.float=new i("Float","BE"),e.floatle=new i("Float","LE"),e.doublebe=e.double=new i("Double","BE"),e.doublele=new i("Double","LE"),r=function(t){function e(t,n,r){null==r&&(r=t>>1),e.__super__.constructor.call(this,"Int"+t,n),this._point=1<<r}return a(e,t),e.prototype.decode=function(t){return e.__super__.decode.call(this,t)/this._point},e.prototype.encode=function(t,n){return e.__super__.encode.call(this,t,n*this._point|0)},e}(i),e.Fixed=r,e.fixed16be=e.fixed16=new r(16,"BE"),e.fixed16le=new r(16,"LE"),e.fixed32be=e.fixed32=new r(32,"BE"),e.fixed32le=new r(32,"LE")}).call(this)},function(t,e,n){(function(){var t,r;t=n(109).Number,e.resolveLength=function(e,n,r){var i;if("number"==typeof e?i=e:"function"==typeof e?i=e.call(r,r):r&&"string"==typeof e?i=r[e]:n&&e instanceof t&&(i=e.decode(n)),isNaN(i))throw new Error("Not a fixed size");return i},r=function(){function t(t){var e,n;null==t&&(t={}),this.enumerable=!0,this.configurable=!0;for(e in t)n=t[e],this[e]=n}return t}(),e.PropertyDescriptor=r}).call(this)},function(t,e,n){(function(){var e,r,i,o,a,s,u={}.hasOwnProperty,l=function(t,e){function n(){this.constructor=t}for(var r in e)u.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};e=n(108),o=n(109).Number,s=n(110),a=n(72).inspect,i=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return l(e,t),e.prototype.decode=function(t,e){var n,i,a;return i=t.pos,n=s.resolveLength(this.length,t,e),this.length instanceof o&&(e={parent:e,_startOffset:i, _currentOffset:0,_length:n}),a=new r(this.type,n,t,e),t.pos+=n*this.type.size(null,e),a},e.prototype.size=function(t,n){return t instanceof r&&(t=t.toArray()),e.__super__.size.call(this,t,n)},e.prototype.encode=function(t,n,i){return n instanceof r&&(n=n.toArray()),e.__super__.encode.call(this,t,n,i)},e}(e),r=function(){function t(t,e,n,r){this.type=t,this.length=e,this.stream=n,this.ctx=r,this.base=this.stream.pos,this.items=[]}return t.prototype.get=function(t){var e;if(!(t<0||t>=this.length))return null==this.items[t]&&(e=this.stream.pos,this.stream.pos=this.base+this.type.size(null,this.ctx)*t,this.items[t]=this.type.decode(this.stream,this.ctx),this.stream.pos=e),this.items[t]},t.prototype.toArray=function(){var t,e,n,r;for(r=[],t=e=0,n=this.length;e<n;t=e+=1)r.push(this.get(t));return r},t.prototype.inspect=function(){return a(this.toArray())},t}(),t.exports=i}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.flags=null!=e?e:[]}return t.prototype.decode=function(t){var e,n,r,i,o,a,s;for(i=this.type.decode(t),r={},s=this.flags,n=o=0,a=s.length;o<a;n=++o)null!=(e=s[n])&&(r[e]=!!(i&1<<n));return r},t.prototype.size=function(){return this.type.size()},t.prototype.encode=function(t,e){var n,r,i,o,a,s;for(i=0,s=this.flags,r=o=0,a=s.length;o<a;r=++o)null!=(n=s[r])&&e[n]&&(i|=1<<r);return this.type.encode(t,i)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t){this.type=t}return t.prototype.decode=function(t,e){return!!this.type.decode(t,e)},t.prototype.size=function(t,e){return this.type.size(t,e)},t.prototype.encode=function(t,e,n){return this.type.encode(t,+e,n)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i;i=n(110),r=n(109).Number,e=function(){function t(t){this.length=t}return t.prototype.decode=function(t,e){var n;return n=i.resolveLength(this.length,t,e),t.readBuffer(n)},t.prototype.size=function(t,e){return t?t.length:i.resolveLength(this.length,null,e)},t.prototype.encode=function(t,e,n){return this.length instanceof r&&this.length.encode(t,e.length),t.writeBuffer(e)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.options=null!=e?e:[]}return t.prototype.decode=function(t){var e;return e=this.type.decode(t),this.options[e]||e},t.prototype.size=function(){return this.type.size()},t.prototype.encode=function(t,e){var n;if(-1===(n=this.options.indexOf(e)))throw new Error("Unknown option in enum: "+e);return this.type.encode(t,n)},t}(),t.exports=e}).call(this)},function(t,e){(function(){var e;e=function(){function t(t,e){this.type=t,this.condition=null==e||e}return t.prototype.decode=function(t,e){var n;if(n=this.condition,"function"==typeof n&&(n=n.call(e,e)),n)return this.type.decode(t,e)},t.prototype.size=function(t,e){var n;return n=this.condition,"function"==typeof n&&(n=n.call(e,e)),n?this.type.size(t,e):0},t.prototype.encode=function(t,e,n){var r;if(r=this.condition,"function"==typeof r&&(r=r.call(n,n)),r)return this.type.encode(t,e,n)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;r=n(110),e=function(){function t(t,e){this.type=t,this.count=null!=e?e:1}return t.prototype.decode=function(t,e){t.pos+=this.size(null,e)},t.prototype.size=function(t,e){var n;return n=r.resolveLength(this.count,null,e),this.type.size()*n},t.prototype.encode=function(t,e,n){return t.fill(0,this.size(e,n))},t}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o;r=n(109).Number,o=n(110),i=function(){function t(t,e){this.length=t,this.encoding=null!=e?e:"ascii"}return t.prototype.decode=function(t,e){var n,r,i,a,s;return i=function(){if(null!=this.length)return o.resolveLength(this.length,t,e);for(n=t.buffer,i=t.length,a=t.pos;a<i&&0!==n[a];)++a;return a-t.pos}.call(this),r=this.encoding,"function"==typeof r&&(r=r.call(e,e)||"ascii"),s=t.readString(i,r),null==this.length&&t.pos<t.length&&t.pos++,s},t.prototype.size=function(t,n){var i,a;return t?(i=this.encoding,"function"==typeof i&&(i=i.call(null!=n?n.val:void 0,null!=n?n.val:void 0)||"ascii"),"utf16be"===i&&(i="utf16le"),a=e.byteLength(t,i),this.length instanceof r&&(a+=this.length.size()),null==this.length&&a++,a):o.resolveLength(this.length,null,n)},t.prototype.encode=function(t,n,i){var o;if(o=this.encoding,"function"==typeof o&&(o=o.call(null!=i?i.val:void 0,null!=i?i.val:void 0)||"ascii"),this.length instanceof r&&this.length.encode(t,e.byteLength(n,o)),t.writeString(n,o),null==this.length)return t.writeUInt8(0)},t}(),t.exports=i}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(){var e,r;r=n(110),e=function(){function t(t){this.fields=null!=t?t:{}}return t.prototype.decode=function(t,e,n){var r,i;return null==n&&(n=0),r=this._setup(t,e,n),this._parseFields(t,r,this.fields),null!=(i=this.process)&&i.call(r,t),r},t.prototype._setup=function(t,e,n){var r;return r={},Object.defineProperties(r,{parent:{value:e},_startOffset:{value:t.pos},_currentOffset:{value:0,writable:!0},_length:{value:n}}),r},t.prototype._parseFields=function(t,e,n){var i,o,a;for(i in n)o=n[i],a="function"==typeof o?o.call(e,e):o.decode(t,e),void 0!==a&&(a instanceof r.PropertyDescriptor?Object.defineProperty(e,i,a):e[i]=a),e._currentOffset=t.pos-e._startOffset},t.prototype.size=function(t,e,n){var r,i,o,a,s;null==t&&(t={}),null==n&&(n=!0),r={parent:e,val:t,pointerSize:0},o=0,s=this.fields;for(i in s)a=s[i],null!=a.size&&(o+=a.size(t[i],r));return n&&(o+=r.pointerSize),o},t.prototype.encode=function(t,e,n){var r,i,o,a,s,u,l;null!=(u=this.preEncode)&&u.call(e,t),r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0},r.pointerOffset=t.pos+this.size(e,r,!1),l=this.fields;for(o in l)s=l[o],null!=s.encode&&s.encode(t,e[o],r);for(i=0;i<r.pointers.length;)a=r.pointers[i++],a.type.encode(t,a.val,a.parent)},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i={}.hasOwnProperty,o=function(t,e){function n(){this.constructor=t}for(var r in e)i.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t};e=n(119),r=function(t){function e(t,e){this.type=t,this.versions=null!=e?e:{},"string"==typeof this.type&&(this.versionGetter=new Function("parent","return parent."+this.type),this.versionSetter=new Function("parent","version","return parent."+this.type+" = version"))}return o(e,t),e.prototype.decode=function(t,n,r){var i,o,a;if(null==r&&(r=0),o=this._setup(t,n,r),"string"==typeof this.type?o.version=this.versionGetter(n):o.version=this.type.decode(t),this.versions.header&&this._parseFields(t,o,this.versions.header),null==(i=this.versions[o.version]))throw new Error("Unknown version "+o.version);return i instanceof e?i.decode(t,n):(this._parseFields(t,o,i),null!=(a=this.process)&&a.call(o,t),o)},e.prototype.size=function(t,e,n){var r,i,o,a,s,u;if(null==n&&(n=!0),!t)throw new Error("Not a fixed size");if(r={parent:e,val:t,pointerSize:0},a=0,"string"!=typeof this.type&&(a+=this.type.size(t.version,r)),this.versions.header){u=this.versions.header;for(o in u)s=u[o],null!=s.size&&(a+=s.size(t[o],r))}if(null==(i=this.versions[t.version]))throw new Error("Unknown version "+t.version);for(o in i)s=i[o],null!=s.size&&(a+=s.size(t[o],r));return n&&(a+=r.pointerSize),a},e.prototype.encode=function(t,e,n){var r,i,o,a,s,u,l,c;if(null!=(l=this.preEncode)&&l.call(e,t),r={pointers:[],startOffset:t.pos,parent:n,val:e,pointerSize:0},r.pointerOffset=t.pos+this.size(e,r,!1),"string"!=typeof this.type&&this.type.encode(t,e.version),this.versions.header){c=this.versions.header;for(a in c)u=c[a],null!=u.encode&&u.encode(t,e[a],r)}i=this.versions[e.version];for(a in i)u=i[a],null!=u.encode&&u.encode(t,e[a],r);for(o=0;o<r.pointers.length;)s=r.pointers[o++],s.type.encode(t,s.val,s.parent)},e}(e),t.exports=r}).call(this)},function(t,e,n){(function(){var t,r,i;i=n(110),t=function(){function t(t,e,n){var r,i,o,a;this.offsetType=t,this.type=e,this.options=null!=n?n:{},"void"===this.type&&(this.type=null),null==(r=this.options).type&&(r.type="local"),null==(i=this.options).allowNull&&(i.allowNull=!0),null==(o=this.options).nullValue&&(o.nullValue=0),null==(a=this.options).lazy&&(a.lazy=!1),this.options.relativeTo&&(this.relativeToGetter=new Function("ctx","return ctx."+this.options.relativeTo))}return t.prototype.decode=function(t,e){var n,r,o,a,s,u;return(o=this.offsetType.decode(t,e))===this.options.nullValue&&this.options.allowNull?null:(s=function(){switch(this.options.type){case"local":return e._startOffset;case"immediate":return t.pos-this.offsetType.size();case"parent":return e.parent._startOffset;default:for(n=e;n.parent;)n=n.parent;return n._startOffset||0}}.call(this),this.options.relativeTo&&(s+=this.relativeToGetter(e)),a=o+s,null!=this.type?(u=null,r=function(n){return function(){var r;return null!=u?u:(r=t.pos,t.pos=a,u=n.type.decode(t,e),t.pos=r,u)}}(this),this.options.lazy?new i.PropertyDescriptor({get:r}):r()):a)},t.prototype.size=function(t,e){var n,i;switch(n=e,this.options.type){case"local":case"immediate":break;case"parent":e=e.parent;break;default:for(;e.parent;)e=e.parent}if(null==(i=this.type)){if(!(t instanceof r))throw new Error("Must be a VoidPointer");i=t.type,t=t.value}return t&&e&&(e.pointerSize+=i.size(t,n)),this.offsetType.size()},t.prototype.encode=function(t,e,n){var i,o,a;if(i=n,null==e)return void this.offsetType.encode(t,this.options.nullValue);switch(this.options.type){case"local":o=n.startOffset;break;case"immediate":o=t.pos+this.offsetType.size(e,i);break;case"parent":n=n.parent,o=n.startOffset;break;default:for(o=0;n.parent;)n=n.parent}if(this.options.relativeTo&&(o+=this.relativeToGetter(i.val)),this.offsetType.encode(t,n.pointerOffset-o),null==(a=this.type)){if(!(e instanceof r))throw new Error("Must be a VoidPointer");a=e.type,e=e.value}return n.pointers.push({type:a,val:e,parent:i}),n.pointerOffset+=a.size(e,i)},t}(),r=function(){function t(t,e){this.type=t,this.value=e}return t}(),e.Pointer=t,e.VoidPointer=r}).call(this)},function(t,e,n){t.exports={default:n(123),__esModule:!0}},function(t,e,n){n(124);var r=n(142).Object;t.exports=function(t,e){return r.getOwnPropertyDescriptor(t,e)}},function(t,e,n){var r=n(125),i=n(129).f;n(140)("getOwnPropertyDescriptor",function(){return function(t,e){return i(r(t),e)}})},function(t,e,n){var r=n(126),i=n(128);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(127);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(130),i=n(131),o=n(125),a=n(132),s=n(134),u=n(135),l=Object.getOwnPropertyDescriptor;e.f=n(136)?l:function(t,e){if(t=o(t),e=a(e,!0),u)try{return l(t,e)}catch(t){}if(s(t,e))return i(!r.f.call(t,e),t[e])}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(133);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){t.exports=!n(136)&&!n(137)(function(){return 7!=Object.defineProperty(n(138)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){t.exports=!n(137)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(133),i=n(139).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var r=n(141),i=n(142),o=n(137);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*o(function(){n(1)}),"Object",a)}},function(t,e,n){var r=n(139),i=n(142),o=n(143),a=n(145),s=function(t,e,n){var u,l,c,f=t&s.F,h=t&s.G,p=t&s.S,d=t&s.P,g=t&s.B,y=t&s.W,v=h?i:i[e]||(i[e]={}),b=v.prototype,m=h?r:p?r[e]:(r[e]||{}).prototype;h&&(n=e);for(u in n)(l=!f&&m&&void 0!==m[u])&&u in v||(c=l?m[u]:n[u],v[u]=h&&"function"!=typeof m[u]?n[u]:g&&l?o(c,r):y&&m[u]==c?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(c):d&&"function"==typeof c?o(Function.call,c):c,d&&((v.virtual||(v.virtual={}))[u]=c,t&s.R&&b&&!b[u]&&a(b,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(144);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var r=n(146),i=n(131);t.exports=n(136)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(147),i=n(135),o=n(132),a=Object.defineProperty;e.f=n(136)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(133);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports={default:n(149),__esModule:!0}},function(t,e,n){n(150),n(176),t.exports=n(178)},function(t,e,n){n(151);for(var r=n(139),i=n(145),o=n(154),a=n(173)("toStringTag"),s=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var l=s[u],c=r[l],f=c&&c.prototype;f&&!f[a]&&i(f,a,l),o[l]=o.Array}},function(t,e,n){"use strict";var r=n(152),i=n(153),o=n(154),a=n(125);t.exports=n(155)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):"keys"==e?i(0,n):"values"==e?i(0,t[n]):i(0,[n,t[n]])},"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(156),i=n(141),o=n(157),a=n(145),s=n(134),u=n(154),l=n(158),c=n(172),f=n(174),h=n(173)("iterator"),p=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,g,y,v,b){l(n,e,g);var m,w,x,_=function(t){if(!p&&t in A)return A[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",S="values"==y,C=!1,A=t.prototype,P=A[h]||A["@@iterator"]||y&&A[y],E=P||_(y),I=y?S?_("entries"):E:void 0,T="Array"==e?A.entries||P:P;if(T&&(x=f(T.call(new t)))!==Object.prototype&&(c(x,k,!0),r||s(x,h)||a(x,h,d)),S&&P&&"values"!==P.name&&(C=!0,E=function(){return P.call(this)}),r&&!b||!p&&!C&&A[h]||a(A,h,E),u[e]=E,u[k]=d,y)if(m={values:S?E:_("values"),keys:v?E:_("keys"),entries:I},b)for(w in m)w in A||o(A,w,m[w]);else i(i.P+i.F*(p||C),e,m);return m}},function(t,e){t.exports=!0},function(t,e,n){t.exports=n(145)},function(t,e,n){"use strict";var r=n(159),i=n(131),o=n(172),a={};n(145)(a,n(173)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(147),i=n(160),o=n(170),a=n(167)("IE_PROTO"),s=function(){},u=function(){var t,e=n(138)("iframe"),r=o.length;for(e.style.display="none",n(171).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write("<script>document.F=Object<\/script>"),t.close(),u=t.F;r--;)delete u.prototype[o[r]];return u()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=u(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(146),i=n(147),o=n(161);t.exports=n(136)?Object.defineProperties:function(t,e){i(t);for(var n,a=o(e),s=a.length,u=0;s>u;)r.f(t,n=a[u++],e[n]);return t}},function(t,e,n){var r=n(162),i=n(170);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){var r=n(134),i=n(125),o=n(163)(!1),a=n(167)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),u=0,l=[];for(n in s)n!=a&&r(s,n)&&l.push(n);for(;e.length>u;)r(s,n=e[u++])&&(~o(l,n)||l.push(n));return l}},function(t,e,n){var r=n(125),i=n(164),o=n(166);t.exports=function(t){return function(e,n,a){var s,u=r(e),l=i(u.length),c=o(a,l);if(t&&n!=n){for(;l>c;)if((s=u[c++])!=s)return!0}else for(;l>c;c++)if((t||c in u)&&u[c]===n)return t||c||0;return!t&&-1}}},function(t,e,n){var r=n(165),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(165),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},function(t,e,n){var r=n(168)("keys"),i=n(169);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(139),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){t.exports=n(139).document&&document.documentElement},function(t,e,n){var r=n(146).f,i=n(134),o=n(173)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(168)("wks"),i=n(169),o=n(139).Symbol,a="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(134),i=n(175),o=n(167)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(128);t.exports=function(t){return Object(r(t))}},function(t,e,n){"use strict";var r=n(177)(!0);n(155)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(165),i=n(128);t.exports=function(t){return function(e,n){var o,a,s=String(i(e)),u=r(n),l=s.length;return u<0||u>=l?t?"":void 0:(o=s.charCodeAt(u),o<55296||o>56319||u+1===l||(a=s.charCodeAt(u+1))<56320||a>57343?t?s.charAt(u):o:t?s.slice(u,u+2):a-56320+(o-55296<<10)+65536)}}},function(t,e,n){var r=n(147),i=n(179);t.exports=n(142).getIterator=function(t){var e=i(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},function(t,e,n){var r=n(180),i=n(173)("iterator"),o=n(154);t.exports=n(142).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){var r=n(127),i=n(173)("toStringTag"),o="Arguments"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=a(e=Object(t),i))?n:o?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},function(t,e,n){t.exports={default:n(182),__esModule:!0}},function(t,e,n){n(183),t.exports=n(142).Object.freeze},function(t,e,n){var r=n(133),i=n(184).onFreeze;n(140)("freeze",function(t){return function(e){return t&&r(e)?t(i(e)):e}})},function(t,e,n){var r=n(169)("meta"),i=n(133),o=n(134),a=n(146).f,s=0,u=Object.isExtensible||function(){return!0},l=!n(137)(function(){return u(Object.preventExtensions({}))}),c=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,r)){if(!u(t))return"F";if(!e)return"E";c(t)}return t[r].i},h=function(t,e){if(!o(t,r)){if(!u(t))return!0;if(!e)return!1;c(t)}return t[r].w},p=function(t){return l&&d.NEED&&u(t)&&!o(t,r)&&c(t),t},d=t.exports={KEY:r,NEED:!1,fastKey:f,getWeak:h,onFreeze:p}},function(t,e,n){t.exports={default:n(186),__esModule:!0}},function(t,e,n){n(187),t.exports=n(142).Object.keys},function(t,e,n){var r=n(175),i=n(161);n(140)("keys",function(){return function(t){return i(r(t))}})},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=n(189),o=r(i),a=n(192),s=r(a),u="function"==typeof s.default&&"symbol"==typeof o.default?function(t){return typeof t}:function(t){return t&&"function"==typeof s.default&&t.constructor===s.default&&t!==s.default.prototype?"symbol":typeof t};e.default="function"==typeof s.default&&"symbol"===u(o.default)?function(t){return void 0===t?"undefined":u(t)}:function(t){return t&&"function"==typeof s.default&&t.constructor===s.default&&t!==s.default.prototype?"symbol":void 0===t?"undefined":u(t)}},function(t,e,n){t.exports={default:n(190),__esModule:!0}},function(t,e,n){n(176),n(150),t.exports=n(191).f("iterator")},function(t,e,n){e.f=n(173)},function(t,e,n){t.exports={default:n(193),__esModule:!0}},function(t,e,n){n(194),n(202),n(203),n(204),t.exports=n(142).Symbol},function(t,e,n){"use strict";var r=n(139),i=n(134),o=n(136),a=n(141),s=n(157),u=n(184).KEY,l=n(137),c=n(168),f=n(172),h=n(169),p=n(173),d=n(191),g=n(195),y=n(196),v=n(197),b=n(199),m=n(147),w=n(125),x=n(132),_=n(131),k=n(159),S=n(200),C=n(129),A=n(146),P=n(161),E=C.f,I=A.f,T=S.f,O=r.Symbol,B=r.JSON,L=B&&B.stringify,M=p("_hidden"),R=p("toPrimitive"),F={}.propertyIsEnumerable,z=c("symbol-registry"),D=c("symbols"),N=c("op-symbols"),U=Object.prototype,W="function"==typeof O,j=r.QObject,G=!j||!j.prototype||!j.prototype.findChild,V=o&&l(function(){return 7!=k(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=E(U,e);r&&delete U[e],I(t,e,n),r&&t!==U&&I(U,e,r)}:I,H=function(t){var e=D[t]=k(O.prototype);return e._k=t,e},q=W&&"symbol"==typeof O.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof O},Z=function(t,e,n){return t===U&&Z(N,e,n),m(t),e=x(e,!0),m(n),i(D,e)?(n.enumerable?(i(t,M)&&t[M][e]&&(t[M][e]=!1),n=k(n,{enumerable:_(0,!1)})):(i(t,M)||I(t,M,_(1,{})),t[M][e]=!0),V(t,e,n)):I(t,e,n)},Y=function(t,e){m(t);for(var n,r=v(e=w(e)),i=0,o=r.length;o>i;)Z(t,n=r[i++],e[n]);return t},X=function(t,e){return void 0===e?k(t):Y(k(t),e)},K=function(t){var e=F.call(this,t=x(t,!0));return!(this===U&&i(D,t)&&!i(N,t))&&(!(e||!i(this,t)||!i(D,t)||i(this,M)&&this[M][t])||e)},J=function(t,e){if(t=w(t),e=x(e,!0),t!==U||!i(D,e)||i(N,e)){var n=E(t,e);return!n||!i(D,e)||i(t,M)&&t[M][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=T(w(t)),r=[],o=0;n.length>o;)i(D,e=n[o++])||e==M||e==u||r.push(e);return r},$=function(t){for(var e,n=t===U,r=T(n?N:w(t)),o=[],a=0;r.length>a;)!i(D,e=r[a++])||n&&!i(U,e)||o.push(D[e]);return o};W||(O=function(){if(this instanceof O)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),e=function(n){this===U&&e.call(N,n),i(this,M)&&i(this[M],t)&&(this[M][t]=!1),V(this,t,_(1,n))};return o&&G&&V(U,t,{configurable:!0,set:e}),H(t)},s(O.prototype,"toString",function(){return this._k}),C.f=J,A.f=Z,n(201).f=S.f=Q,n(130).f=K,n(198).f=$,o&&!n(156)&&s(U,"propertyIsEnumerable",K,!0),d.f=function(t){return H(p(t))}),a(a.G+a.W+a.F*!W,{Symbol:O});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),et=0;tt.length>et;)p(tt[et++]);for(var tt=P(p.store),et=0;tt.length>et;)g(tt[et++]);a(a.S+a.F*!W,"Symbol",{for:function(t){return i(z,t+="")?z[t]:z[t]=O(t)},keyFor:function(t){if(q(t))return y(z,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!W,"Object",{create:X,defineProperty:Z,defineProperties:Y,getOwnPropertyDescriptor:J,getOwnPropertyNames:Q,getOwnPropertySymbols:$}),B&&a(a.S+a.F*(!W||l(function(){var t=O();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!q(t)){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);return e=r[1],"function"==typeof e&&(n=e),!n&&b(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!q(e))return e}),r[1]=e,L.apply(B,r)}}}),O.prototype[R]||n(145)(O.prototype,R,O.prototype.valueOf),f(O,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(t,e,n){var r=n(139),i=n(142),o=n(156),a=n(191),s=n(146).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},function(t,e,n){var r=n(161),i=n(125);t.exports=function(t,e){for(var n,o=i(t),a=r(o),s=a.length,u=0;s>u;)if(o[n=a[u++]]===e)return n}},function(t,e,n){var r=n(161),i=n(198),o=n(130);t.exports=function(t){var e=r(t),n=i.f;if(n)for(var a,s=n(t),u=o.f,l=0;s.length>l;)u.call(t,a=s[l++])&&e.push(a);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(127);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(125),i=n(201).f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return i(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==o.call(t)?s(t):i(r(t))}},function(t,e,n){var r=n(162),i=n(170).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e){},function(t,e,n){n(195)("asyncIterator")},function(t,e,n){n(195)("observable")},function(t,e,n){t.exports={default:n(206),__esModule:!0}},function(t,e,n){n(207);var r=n(142).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){var r=n(141);r(r.S+r.F*!n(136),"Object",{defineProperty:n(146).f})},function(t,e){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(205),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,i.default)(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},function(t,e,n){t.exports={default:n(211),__esModule:!0}},function(t,e,n){n(202),n(176),n(150),n(212),n(224),t.exports=n(142).Map},function(t,e,n){"use strict";var r=n(213);t.exports=n(220)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=r.getEntry(this,t);return e&&e.v},set:function(t,e){return r.def(this,0===t?0:t,e)}},r,!0)},function(t,e,n){"use strict";var r=n(146).f,i=n(159),o=n(214),a=n(143),s=n(215),u=n(128),l=n(216),c=n(155),f=n(153),h=n(219),p=n(136),d=n(184).fastKey,g=p?"_s":"size",y=function(t,e){var n,r=d(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,c){var f=t(function(t,r){s(t,f,e,"_i"),t._i=i(null),t._f=void 0,t._l=void 0,t[g]=0,void 0!=r&&l(r,n,t[c],t)});return o(f.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[g]=0},delete:function(t){var e=this,n=y(e,t);if(n){var r=n.n,i=n.p;delete e._i[n.i],n.r=!0,i&&(i.n=r),r&&(r.p=i),e._f==n&&(e._f=r),e._l==n&&(e._l=i),e[g]--}return!!n},forEach:function(t){s(this,f,"forEach");for(var e,n=a(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!y(this,t)}}),p&&r(f.prototype,"size",{get:function(){return u(this[g])}}),f},def:function(t,e,n){var r,i,o=y(t,e);return o?o.v=n:(t._l=o={i:i=d(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=o),r&&(r.n=o),t[g]++,"F"!==i&&(t._i[i]=o)),t},getEntry:y,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?f(0,n.k):"values"==e?f(0,n.v):f(0,[n.k,n.v]):(t._t=void 0,f(1))},n?"entries":"values",!n,!0),h(e)}}},function(t,e,n){var r=n(145);t.exports=function(t,e,n){for(var i in e)n&&t[i]?t[i]=e[i]:r(t,i,e[i]);return t}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(143),i=n(217),o=n(218),a=n(147),s=n(164),u=n(179),l={},c={},e=t.exports=function(t,e,n,f,h){var p,d,g,y,v=h?function(){return t}:u(t),b=r(n,f,e?2:1),m=0;if("function"!=typeof v)throw TypeError(t+" is not iterable!");if(o(v)){for(p=s(t.length);p>m;m++)if((y=e?b(a(d=t[m])[0],d[1]):b(t[m]))===l||y===c)return y}else for(g=v.call(t);!(d=g.next()).done;)if((y=i(g,b,d.value,e))===l||y===c)return y};e.BREAK=l,e.RETURN=c},function(t,e,n){var r=n(147);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(t,e,n){var r=n(154),i=n(173)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,e,n){"use strict";var r=n(139),i=n(142),o=n(146),a=n(136),s=n(173)("species");t.exports=function(t){var e="function"==typeof i[t]?i[t]:r[t];a&&e&&!e[s]&&o.f(e,s,{configurable:!0,get:function(){return this}})}},function(t,e,n){"use strict";var r=n(139),i=n(141),o=n(184),a=n(137),s=n(145),u=n(214),l=n(216),c=n(215),f=n(133),h=n(172),p=n(146).f,d=n(221)(0),g=n(136);t.exports=function(t,e,n,y,v,b){var m=r[t],w=m,x=v?"set":"add",_=w&&w.prototype,k={};return g&&"function"==typeof w&&(b||_.forEach&&!a(function(){(new w).entries().next()}))?(w=e(function(e,n){c(e,w,t,"_c"),e._c=new m,void 0!=n&&l(n,v,e[x],e)}),d("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(t){var e="add"==t||"set"==t;t in _&&(!b||"clear"!=t)&&s(w.prototype,t,function(n,r){if(c(this,w,t),!e&&b&&!f(n))return"get"==t&&void 0;var i=this._c[t](0===n?0:n,r);return e?this:i})}),"size"in _&&p(w.prototype,"size",{get:function(){return this._c.size}})):(w=y.getConstructor(e,t,v,x),u(w.prototype,n),o.NEED=!0),h(w,t),k[t]=w,i(i.G+i.W+i.F,k),b||y.setStrong(w,t,v),w}},function(t,e,n){var r=n(143),i=n(126),o=n(175),a=n(164),s=n(222);t.exports=function(t,e){var n=1==t,u=2==t,l=3==t,c=4==t,f=6==t,h=5==t||f,p=e||s;return function(e,s,d){for(var g,y,v=o(e),b=i(v),m=r(s,d,3),w=a(b.length),x=0,_=n?p(e,w):u?p(e,0):void 0;w>x;x++)if((h||x in b)&&(g=b[x],y=m(g,x,v),t))if(n)_[x]=y;else if(y)switch(t){case 3:return!0;case 5:return g;case 6:return x;case 2:_.push(g)}else if(c)return!1;return f?-1:l||c?c:_}}},function(t,e,n){var r=n(223);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){var r=n(133),i=n(199),o=n(173)("species");t.exports=function(t){var e;return i(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!i(e.prototype)||(e=void 0),r(e)&&null===(e=e[o])&&(e=void 0)),void 0===e?Array:e}},function(t,e,n){var r=n(141);r(r.P+r.R,"Map",{toJSON:n(225)("Map")})},function(t,e,n){var r=n(180),i=n(226);t.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}}},function(t,e,n){var r=n(216);t.exports=function(t,e){var n=[];return r(t,!1,n.push,n,e),n} },function(t,e,n){"use strict";e.__esModule=!0;var r=n(188),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,i.default)(e))&&"function"!=typeof e?t:e}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=n(229),o=r(i),a=n(233),s=r(a),u=n(188),l=r(u);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,l.default)(e)));t.prototype=(0,s.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(o.default?(0,o.default)(t,e):t.__proto__=e)}},function(t,e,n){t.exports={default:n(230),__esModule:!0}},function(t,e,n){n(231),t.exports=n(142).Object.setPrototypeOf},function(t,e,n){var r=n(141);r(r.S,"Object",{setPrototypeOf:n(232).set})},function(t,e,n){var r=n(133),i=n(147),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{r=n(143)(Function.call,n(129).f(Object.prototype,"__proto__").set,2),r(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},function(t,e,n){t.exports={default:n(234),__esModule:!0}},function(t,e,n){n(235);var r=n(142).Object;t.exports=function(t,e){return r.create(t,e)}},function(t,e,n){var r=n(141);r(r.S,"Object",{create:n(159)})},function(t,e,n){t.exports={default:n(237),__esModule:!0}},function(t,e,n){n(238);var r=n(142).Object;t.exports=function(t,e){return r.defineProperties(t,e)}},function(t,e,n){var r=n(141);r(r.S+r.F*!n(136),"Object",{defineProperties:n(160)})},function(t,e,n){function r(t){return null===t||void 0===t}function i(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function o(t,e,n){var o,c;if(r(t)||r(e))return!1;if(t.prototype!==e.prototype)return!1;if(u(t))return!!u(e)&&(t=a.call(t),e=a.call(e),l(t,e,n));if(i(t)){if(!i(e))return!1;if(t.length!==e.length)return!1;for(o=0;o<t.length;o++)if(t[o]!==e[o])return!1;return!0}try{var f=s(t),h=s(e)}catch(t){return!1}if(f.length!=h.length)return!1;for(f.sort(),h.sort(),o=f.length-1;o>=0;o--)if(f[o]!=h[o])return!1;for(o=f.length-1;o>=0;o--)if(c=f[o],!l(t[c],e[c],n))return!1;return typeof t==typeof e}var a=Array.prototype.slice,s=n(240),u=n(241),l=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:o(t,e,n))}},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function r(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var i="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=i?n:r,e.supported=n,e.unsupported=r},function(t,e,n){t.exports={default:n(243),__esModule:!0}},function(t,e,n){n(244),t.exports=n(142).Object.assign},function(t,e,n){var r=n(141);r(r.S+r.F,"Object",{assign:n(245)})},function(t,e,n){"use strict";var r=n(161),i=n(198),o=n(130),a=n(175),s=n(126),u=Object.assign;t.exports=!u||n(137)(function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach(function(t){e[t]=t}),7!=u({},t)[n]||Object.keys(u({},e)).join("")!=r})?function(t,e){for(var n=a(t),u=arguments.length,l=1,c=i.f,f=o.f;u>l;)for(var h,p=s(arguments[l++]),d=c?r(p).concat(c(p)):r(p),g=d.length,y=0;g>y;)f.call(p,h=d[y++])&&(n[h]=p[h]);return n}:u},function(t,e,n){t.exports={default:n(247),__esModule:!0}},function(t,e,n){n(248),t.exports=n(142).String.fromCodePoint},function(t,e,n){var r=n(141),i=n(166),o=String.fromCharCode,a=String.fromCodePoint;r(r.S+r.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,a=0;r>a;){if(e=+arguments[a++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?o(e):o(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){t.exports={default:n(250),__esModule:!0}},function(t,e,n){n(176),n(251),t.exports=n(142).Array.from},function(t,e,n){"use strict";var r=n(143),i=n(141),o=n(175),a=n(217),s=n(218),u=n(164),l=n(252),c=n(179);i(i.S+i.F*!n(253)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,i,f,h=o(t),p="function"==typeof this?this:Array,d=arguments.length,g=d>1?arguments[1]:void 0,y=void 0!==g,v=0,b=c(h);if(y&&(g=r(g,d>2?arguments[2]:void 0,2)),void 0==b||p==Array&&s(b))for(e=u(h.length),n=new p(e);e>v;v++)l(n,v,y?g(h[v],v):h[v]);else for(f=b.call(h),n=new p;!(i=f.next()).done;v++)l(n,v,y?a(f,g,[i.value,v],!0):i.value);return n.length=v,n}})},function(t,e,n){"use strict";var r=n(146),i=n(131);t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},function(t,e,n){var r=n(173)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],a=o[r]();a.next=function(){return{done:n=!0}},o[r]=function(){return a},t(o)}catch(t){}return n}},function(t,e,n){t.exports={default:n(255),__esModule:!0}},function(t,e,n){n(202),n(176),n(150),n(256),n(257),t.exports=n(142).Set},function(t,e,n){"use strict";var r=n(213);t.exports=n(220)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return r.def(this,t=0===t?0:t,t)}},r)},function(t,e,n){var r=n(141);r(r.P+r.R,"Set",{toJSON:n(225)("Set")})},function(t,e,n){(function(t){var r,i,o,a,s,u,l,c,f,h,p,d,g,y,v,b,m,w,x;v=n(17),m=n(259),x=new v(t("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","base64")),w=Math.log2||function(t){return Math.log(t)/Math.LN2},b=function(t){return w(t)+1|0},r=b(m.categories.length-1),a=b(m.combiningClasses.length-1),d=b(m.scripts.length-1),l=b(m.eaw.length-1),h=10,o=a+d+l+h,u=d+l+h,y=l+h,f=h,i=(1<<r)-1,s=(1<<a)-1,g=(1<<d)-1,c=(1<<l)-1,p=(1<<h)-1,e.getCategory=function(t){var e;return e=x.get(t),m.categories[e>>o&i]},e.getCombiningClass=function(t){var e;return e=x.get(t),m.combiningClasses[e>>u&s]},e.getScript=function(t){var e;return e=x.get(t),m.scripts[e>>y&g]},e.getEastAsianWidth=function(t){var e;return e=x.get(t),m.eaw[e>>f&c]},e.getNumericValue=function(t){var e,n,r,i,o;if(o=x.get(t),0===(r=o&p))return null;if(r<=50)return r-1;if(r<480)return i=(r>>4)-12,e=1+(15&r),i/e;if(r<768){for(o=(r>>5)-14,n=2+(31&r);n>0;)o*=10,n--;return o}for(o=(r>>2)-191,n=1+(3&r);n>0;)o*=60,n--;return o},e.isAlphabetic=function(t){var n;return"Lu"===(n=e.getCategory(t))||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Nl"===n},e.isDigit=function(t){return"Nd"===e.getCategory(t)},e.isPunctuation=function(t){var n;return"Pc"===(n=e.getCategory(t))||"Pd"===n||"Pe"===n||"Pf"===n||"Pi"===n||"Po"===n||"Ps"===n},e.isLowerCase=function(t){return"Ll"===e.getCategory(t)},e.isUpperCase=function(t){return"Lu"===e.getCategory(t)},e.isTitleCase=function(t){return"Lt"===e.getCategory(t)},e.isWhiteSpace=function(t){var n;return"Zs"===(n=e.getCategory(t))||"Zl"===n||"Zp"===n},e.isBaseForm=function(t){var n;return"Nd"===(n=e.getCategory(t))||"No"===n||"Nl"===n||"Lu"===n||"Ll"===n||"Lt"===n||"Lm"===n||"Lo"===n||"Me"===n||"Mc"===n},e.isMark=function(t){var n;return"Mn"===(n=e.getCategory(t))||"Me"===n||"Mc"===n}}).call(e,n(2).Buffer)},function(t,e){t.exports={categories:["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],combiningClasses:["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],scripts:["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Tirhuta","Siddham","Modi","Takri","Ahom","Warang_Citi","Pau_Cin_Hau","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Miao","Duployan","SignWriting","Mende_Kikakui"],eaw:["N","Na","A","W","H","F"]}},function(t,e,n){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t.default:t}var i=r(n(261)),o=r(n(148)),a=r(n(265)),s=r(n(266)),u=r(n(189)),l=r(n(208)),c=r(n(209)),f=function(){function t(e){l(this,t),this.stateTable=e.stateTable,this.accepting=e.accepting,this.tags=e.tags}return c(t,[{key:"match",value:function(t){var e=this;return a({},u,s.mark(function n(){var r,i,o,a,u,l;return s.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:r=1,i=null,o=null,a=null,u=0;case 5:if(!(u<t.length)){n.next=21;break}if(l=t[u],a=r,0!==(r=e.stateTable[r][l])){n.next=15;break}if(!(null!=i&&null!=o&&o>=i)){n.next=13;break}return n.next=13,[i,o,e.tags[a]];case 13:r=e.stateTable[1][l],i=null;case 15:0!==r&&null==i&&(i=u),e.accepting[r]&&(o=u),0===r&&(r=1);case 18:u++,n.next=5;break;case 21:if(!(null!=i&&null!=o&&o>=i)){n.next=24;break}return n.next=24,[i,o,e.tags[r]];case 24:case"end":return n.stop()}},n,this)}))}},{key:"apply",value:function(t,e){var n=!0,r=!1,a=void 0;try{for(var s,u=o(this.match(t));!(n=(s=u.next()).done);n=!0){var l=i(s.value,3),c=l[0],f=l[1],h=l[2],p=!0,d=!1,g=void 0;try{for(var y,v=o(h);!(p=(y=v.next()).done);p=!0){var b=y.value;"function"==typeof e[b]&&e[b](c,f,t.slice(c,f+1))}}catch(t){d=!0,g=t}finally{try{!p&&v.return&&v.return()}finally{if(d)throw g}}}}catch(t){r=!0,a=t}finally{try{!n&&u.return&&u.return()}finally{if(r)throw a}}}}]),t}();t.exports=f},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=n(262),o=r(i),a=n(148),s=r(a);e.default=function(){function t(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var a,u=(0,s.default)(t);!(r=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t}finally{try{!r&&u.return&&u.return()}finally{if(i)throw o}}return n}return function(e,n){if(Array.isArray(e))return e;if((0,o.default)(Object(e)))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e,n){t.exports={default:n(263),__esModule:!0}},function(t,e,n){n(150),n(176),t.exports=n(264)},function(t,e,n){var r=n(180),i=n(173)("iterator"),o=n(154);t.exports=n(142).isIterable=function(t){var e=Object(t);return void 0!==e[i]||"@@iterator"in e||o.hasOwnProperty(r(e))}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(205),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=function(t,e,n){return e in t?(0,i.default)(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){t.exports=n(267)},function(t,e,n){(function(e){var r="object"==typeof e?e:"object"==typeof window?window:"object"==typeof self?self:this,i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,o=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(268),i)r.regeneratorRuntime=o;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}}).call(e,function(){return this}())},function(t,e){(function(e){!function(e){"use strict";function n(t,e,n,r){var o=e&&e.prototype instanceof i?e:i,a=Object.create(o.prototype),s=new p(r||[]);return a._invoke=l(t,n,s),a}function r(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function i(){}function o(){}function a(){}function s(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function u(t){function n(e,i,o,a){var s=r(t[e],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&b.call(l,"__await")?Promise.resolve(l.__await).then(function(t){n("next",t,o,a)},function(t){n("throw",t,o,a)}):Promise.resolve(l).then(function(t){u.value=t,o(u)},a)}a(s.arg)}function i(t,e){function r(){return new Promise(function(r,i){n(t,e,r,i)})}return o=o?o.then(r,r):r()}"object"==typeof e.process&&e.process.domain&&(n=e.process.domain.bind(n));var o;this._invoke=i}function l(t,e,n){var i=C;return function(o,a){if(i===P)throw new Error("Generator is already running");if(i===E){if("throw"===o)throw a;return g()}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var u=c(s,n);if(u){if(u===I)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===C)throw i=E,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=P;var l=r(t,e,n);if("normal"===l.type){if(i=n.done?E:A,l.arg===I)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i=E,n.method="throw",n.arg=l.arg)}}}function c(t,e){var n=t.iterator[e.method];if(n===y){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=y,c(t,e),"throw"===e.method))return I;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return I}var i=r(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,I;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=y),e.delegate=null,I):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,I)}function f(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function h(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function p(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(f,this),this.reset(!0)}function d(t){if(t){var e=t[w];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function e(){for(;++n<t.length;)if(b.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=y,e.done=!0,e};return r.next=r}}return{next:g}}function g(){return{value:y,done:!0}}var y,v=Object.prototype,b=v.hasOwnProperty,m="function"==typeof Symbol?Symbol:{},w=m.iterator||"@@iterator",x=m.asyncIterator||"@@asyncIterator",_=m.toStringTag||"@@toStringTag",k="object"==typeof t,S=e.regeneratorRuntime;if(S)return void(k&&(t.exports=S));S=e.regeneratorRuntime=k?t.exports:{},S.wrap=n;var C="suspendedStart",A="suspendedYield",P="executing",E="completed",I={},T={};T[w]=function(){return this};var O=Object.getPrototypeOf,B=O&&O(O(d([])));B&&B!==v&&b.call(B,w)&&(T=B);var L=a.prototype=i.prototype=Object.create(T);o.prototype=L.constructor=a,a.constructor=o,a[_]=o.displayName="GeneratorFunction",S.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===o||"GeneratorFunction"===(e.displayName||e.name))},S.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,a):(t.__proto__=a,_ in t||(t[_]="GeneratorFunction")),t.prototype=Object.create(L),t},S.awrap=function(t){return{__await:t}},s(u.prototype),u.prototype[x]=function(){return this},S.AsyncIterator=u,S.async=function(t,e,r,i){var o=new u(n(t,e,r,i));return S.isGeneratorFunction(e)?o:o.next().then(function(t){return t.done?t.value:o.next()})},s(L),L[_]="Generator",L[w]=function(){return this},L.toString=function(){return"[object Generator]"},S.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},S.values=d,p.prototype={constructor:p,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=y,this.done=!1,this.delegate=null,this.method="next",this.arg=y,this.tryEntries.forEach(h),!t)for(var e in this)"t"===e.charAt(0)&&b.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=y)},stop:function(){this.done=!0;var t=this.tryEntries[0],e=t.completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){function e(e,r){return o.type="throw",o.arg=t,n.next=e,r&&(n.method="next",n.arg=y),!!r}if(this.done)throw t;for(var n=this,r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var a=b.call(i,"catchLoc"),s=b.call(i,"finallyLoc");if(a&&s){if(this.prev<i.catchLoc)return e(i.catchLoc,!0);if(this.prev<i.finallyLoc)return e(i.finallyLoc)}else if(a){if(this.prev<i.catchLoc)return e(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return e(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&b.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=t,o.arg=e,i?(this.method="next",this.next=i.finallyLoc,I):this.complete(o)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),I},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc), h(n),I}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;h(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:d(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=y),I}}}("object"==typeof e?e:"object"==typeof window?window:"object"==typeof self?self:this)}).call(e,function(){return this}())},function(t,e,n){t.exports={default:n(270),__esModule:!0}},function(t,e,n){n(271),t.exports=Math.pow(2,-52)},function(t,e,n){var r=n(141);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,n){(function(e){var n=function(){"use strict";function t(n,r,i,o){function s(n,i){if(null===n)return null;if(0==i)return n;var f,h;if("object"!=typeof n)return n;if(t.__isArray(n))f=[];else if(t.__isRegExp(n))f=new RegExp(n.source,a(n)),n.lastIndex&&(f.lastIndex=n.lastIndex);else if(t.__isDate(n))f=new Date(n.getTime());else{if(c&&e.isBuffer(n))return f=new e(n.length),n.copy(f),f;void 0===o?(h=Object.getPrototypeOf(n),f=Object.create(h)):(f=Object.create(o),h=o)}if(r){var p=u.indexOf(n);if(-1!=p)return l[p];u.push(n),l.push(f)}for(var d in n){var g;h&&(g=Object.getOwnPropertyDescriptor(h,d)),g&&null==g.set||(f[d]=s(n[d],i-1))}return f}"object"==typeof r&&(i=r.depth,o=r.prototype,r.filter,r=r.circular);var u=[],l=[],c=void 0!==e;return void 0===r&&(r=!0),void 0===i&&(i=1/0),s(n,i)}function n(t){return Object.prototype.toString.call(t)}function r(t){return"object"==typeof t&&"[object Date]"===n(t)}function i(t){return"object"==typeof t&&"[object Array]"===n(t)}function o(t){return"object"==typeof t&&"[object RegExp]"===n(t)}function a(t){var e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),e}return t.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},t.__objToStr=n,t.__isDate=r,t.__isArray=i,t.__isRegExp=o,t.__getRegExpFlags=a,t}();"object"==typeof t&&t.exports&&(t.exports=n)}).call(e,n(2).Buffer)},function(t,e,n){t.exports=n(274).BrotliDecompressBuffer},function(t,e,n){function r(t){var e;return 0===t.readBits(1)?16:(e=t.readBits(3))>0?17+e:(e=t.readBits(3),e>0?8+e:17)}function i(t){if(t.readBits(1)){var e=t.readBits(3);return 0===e?1:t.readBits(e)+(1<<e)}return 0}function o(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=!1}function a(t){var e,n,r,i=new o;if(i.input_end=t.readBits(1),i.input_end&&t.readBits(1))return i;if(7===(e=t.readBits(2)+4)){if(i.is_metadata=!0,0!==t.readBits(1))throw new Error("Invalid reserved bit");if(0===(n=t.readBits(2)))return i;for(r=0;r<n;r++){var a=t.readBits(8);if(r+1===n&&n>1&&0===a)throw new Error("Invalid size byte");i.meta_block_length|=a<<8*r}}else for(r=0;r<e;++r){var s=t.readBits(4);if(r+1===e&&e>4&&0===s)throw new Error("Invalid size nibble");i.meta_block_length|=s<<4*r}return++i.meta_block_length,i.input_end||i.is_metadata||(i.is_uncompressed=t.readBits(1)),i}function s(t,e,n){var r;return n.fillBitWindow(),e+=n.val_>>>n.bit_pos_&N,r=t[e].bits-D,r>0&&(n.bit_pos_+=D,e+=t[e].value,e+=n.val_>>>n.bit_pos_&(1<<r)-1),n.bit_pos_+=t[e].bits,t[e].value}function u(t,e,n,r){for(var i=0,o=O,a=0,s=0,u=32768,l=[],c=0;c<32;c++)l.push(new A(0,0));for(P(l,0,5,t,W);i<e&&u>0;){var f,h=0;if(r.readMoreInput(),r.fillBitWindow(),h+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=l[h].bits,(f=255&l[h].value)<B)a=0,n[i++]=f,0!==f&&(o=f,u-=32768>>f);else{var p,d,g=f-14,y=0;if(f===B&&(y=o),s!==y&&(a=0,s=y),p=a,a>0&&(a-=2,a<<=g),a+=r.readBits(g)+3,d=a-p,i+d>e)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var v=0;v<d;v++)n[i+v]=s;i+=d,0!==s&&(u-=d<<15-s)}}if(0!==u)throw new Error("[ReadHuffmanCodeLengths] space = "+u);for(;i<e;i++)n[i]=0}function l(t,e,n,r){var i,o=0,a=new Uint8Array(t);if(r.readMoreInput(),1===(i=r.readBits(2))){for(var s,l=t-1,c=0,f=new Int32Array(4),h=r.readBits(2)+1;l;)l>>=1,++c;for(s=0;s<h;++s)f[s]=r.readBits(c)%t,a[f[s]]=2;switch(a[f[0]]=1,h){case 1:break;case 3:if(f[0]===f[1]||f[0]===f[2]||f[1]===f[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(f[0]===f[1])throw new Error("[ReadHuffmanCode] invalid symbols");a[f[1]]=1;break;case 4:if(f[0]===f[1]||f[0]===f[2]||f[0]===f[3]||f[1]===f[2]||f[1]===f[3]||f[2]===f[3])throw new Error("[ReadHuffmanCode] invalid symbols");r.readBits(1)?(a[f[2]]=3,a[f[3]]=3):a[f[0]]=2}}else{var s,p=new Uint8Array(W),d=32,g=0,y=[new A(2,0),new A(2,4),new A(2,3),new A(3,2),new A(2,0),new A(2,4),new A(2,3),new A(4,1),new A(2,0),new A(2,4),new A(2,3),new A(3,2),new A(2,0),new A(2,4),new A(2,3),new A(4,5)];for(s=i;s<W&&d>0;++s){var v,b=j[s],m=0;r.fillBitWindow(),m+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=y[m].bits,v=y[m].value,p[b]=v,0!==v&&(d-=32>>v,++g)}if(1!==g&&0!==d)throw new Error("[ReadHuffmanCode] invalid num_codes or space");u(p,t,a,r)}if(0===(o=P(e,n,D,a,t)))throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return o}function c(t,e,n){var r,i;return r=s(t,e,n),i=I.kBlockLengthPrefixCode[r].nbits,I.kBlockLengthPrefixCode[r].offset+n.readBits(i)}function f(t,e,n){var r;return t<G?(n+=V[t],n&=3,r=e[n]+H[t]):r=t-G+1,r}function h(t,e){for(var n=t[e],r=e;r;--r)t[r]=t[r-1];t[0]=n}function p(t,e){var n,r=new Uint8Array(256);for(n=0;n<256;++n)r[n]=n;for(n=0;n<e;++n){var i=t[n];t[n]=r[i],i&&h(r,i)}}function d(t,e){this.alphabet_size=t,this.num_htrees=e,this.codes=new Array(e+e*q[t+31>>>5]),this.htrees=new Uint32Array(e)}function g(t,e){var n,r,o,a={num_htrees:null,context_map:null},u=0;e.readMoreInput();var c=a.num_htrees=i(e)+1,f=a.context_map=new Uint8Array(t);if(c<=1)return a;for(n=e.readBits(1),n&&(u=e.readBits(4)+1),r=[],o=0;o<U;o++)r[o]=new A(0,0);for(l(c+u,r,0,e),o=0;o<t;){var h;if(e.readMoreInput(),0===(h=s(r,0,e)))f[o]=0,++o;else if(h<=u)for(var d=1+(1<<h)+e.readBits(h);--d;){if(o>=t)throw new Error("[DecodeContextMap] i >= context_map_size");f[o]=0,++o}else f[o]=h-u,++o}return e.readBits(1)&&p(f,t),a}function y(t,e,n,r,i,o,a){var u,l=2*n,c=n,f=s(e,n*U,a);u=0===f?i[l+(1&o[c])]:1===f?i[l+(o[c]-1&1)]+1:f-2,u>=t&&(u-=t),r[n]=u,i[l+(1&o[c])]=u,++o[c]}function v(t,e,n,r,i,o){var a,s=i+1,u=n&i,l=o.pos_&S.IBUF_MASK;if(e<8||o.bit_pos_+(e<<3)<o.bit_end_pos_)for(;e-- >0;)o.readMoreInput(),r[u++]=o.readBits(8),u===s&&(t.write(r,s),u=0);else{if(o.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;o.bit_pos_<32;)r[u]=o.val_>>>o.bit_pos_,o.bit_pos_+=8,++u,--e;if(a=o.bit_end_pos_-o.bit_pos_>>3,l+a>S.IBUF_MASK){for(var c=S.IBUF_MASK+1-l,f=0;f<c;f++)r[u+f]=o.buf_[l+f];a-=c,u+=c,e-=c,l=0}for(var f=0;f<a;f++)r[u+f]=o.buf_[l+f];if(u+=a,e-=a,u>=s){t.write(r,s),u-=s;for(var f=0;f<u;f++)r[f]=r[s+f]}for(;u+e>=s;){if(a=s-u,o.input_.read(r,u,a)<a)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");t.write(r,s),e-=a,u=0}if(o.input_.read(r,u,e)<e)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");o.reset()}}function b(t){var e=t.bit_pos_+7&-8;return 0==t.readBits(e-t.bit_pos_)}function m(t){var e=new _(t),n=new S(e);return r(n),a(n).meta_block_length}function w(t,e){var n=new _(t);null==e&&(e=m(t));var r=new Uint8Array(e),i=new k(r);return x(n,i),i.pos<i.buffer.length&&(i.buffer=i.buffer.subarray(0,i.pos)),i.buffer}function x(t,e){var n,o,u,h,p,m,w,x,_,k=0,P=0,O=0,B=0,D=[16,15,11,4],N=0,W=0,j=0,V=[new d(0,0),new d(0,0),new d(0,0)],H=128+S.READ_SIZE;_=new S(t),O=r(_),o=(1<<O)-16,u=1<<O,h=u-1,p=new Uint8Array(u+H+C.maxDictionaryWordLength),m=u,w=[],x=[];for(var q=0;q<3*U;q++)w[q]=new A(0,0),x[q]=new A(0,0);for(;!P;){var Z,Y,X,K,J,Q,$,tt,et,nt=0,rt=[1<<28,1<<28,1<<28],it=[0],ot=[1,1,1],at=[0,1,0,1,0,1],st=[0],ut=null,lt=null,ct=null,ft=0,ht=null,pt=0,dt=0,gt=null,yt=0,vt=0,bt=0;for(n=0;n<3;++n)V[n].codes=null,V[n].htrees=null;_.readMoreInput();var mt=a(_);if(nt=mt.meta_block_length,k+nt>e.buffer.length){var wt=new Uint8Array(k+nt);wt.set(e.buffer),e.buffer=wt}if(P=mt.input_end,Z=mt.is_uncompressed,mt.is_metadata)for(b(_);nt>0;--nt)_.readMoreInput(),_.readBits(8);else if(0!==nt)if(Z)_.bit_pos_=_.bit_pos_+7&-8,v(e,nt,k,p,h,_),k+=nt;else{for(n=0;n<3;++n)ot[n]=i(_)+1,ot[n]>=2&&(l(ot[n]+2,w,n*U,_),l(R,x,n*U,_),rt[n]=c(x,n*U,_),st[n]=1);for(_.readMoreInput(),Y=_.readBits(2),X=G+(_.readBits(4)<<Y),K=(1<<Y)-1,J=X+(48<<Y),lt=new Uint8Array(ot[0]),n=0;n<ot[0];++n)_.readMoreInput(),lt[n]=_.readBits(2)<<1;var xt=g(ot[0]<<F,_);Q=xt.num_htrees,ut=xt.context_map;var _t=g(ot[2]<<z,_);for($=_t.num_htrees,ct=_t.context_map,V[0]=new d(L,Q),V[1]=new d(M,ot[1]),V[2]=new d(J,$),n=0;n<3;++n)V[n].decode(_);for(ht=0,gt=0,tt=lt[it[0]],vt=E.lookupOffsets[tt],bt=E.lookupOffsets[tt+1],et=V[1].htrees[0];nt>0;){var kt,St,Ct,At,Pt,Et,It,Tt,Ot,Bt,Lt;for(_.readMoreInput(),0===rt[1]&&(y(ot[1],w,1,it,at,st,_),rt[1]=c(x,U,_),et=V[1].htrees[it[1]]),--rt[1],kt=s(V[1].codes,et,_),St=kt>>6,St>=2?(St-=2,It=-1):It=0,Ct=I.kInsertRangeLut[St]+(kt>>3&7),At=I.kCopyRangeLut[St]+(7&kt),Pt=I.kInsertLengthPrefixCode[Ct].offset+_.readBits(I.kInsertLengthPrefixCode[Ct].nbits),Et=I.kCopyLengthPrefixCode[At].offset+_.readBits(I.kCopyLengthPrefixCode[At].nbits),W=p[k-1&h],j=p[k-2&h],Bt=0;Bt<Pt;++Bt)_.readMoreInput(),0===rt[0]&&(y(ot[0],w,0,it,at,st,_),rt[0]=c(x,0,_),ft=it[0]<<F,ht=ft,tt=lt[it[0]],vt=E.lookupOffsets[tt],bt=E.lookupOffsets[tt+1]),Ot=E.lookup[vt+W]|E.lookup[bt+j],pt=ut[ht+Ot],--rt[0],j=W,W=s(V[0].codes,V[0].htrees[pt],_),p[k&h]=W,(k&h)===h&&e.write(p,u),++k;if((nt-=Pt)<=0)break;if(It<0){var Ot;if(_.readMoreInput(),0===rt[2]&&(y(ot[2],w,2,it,at,st,_),rt[2]=c(x,2*U,_),dt=it[2]<<z,gt=dt),--rt[2],Ot=255&(Et>4?3:Et-2),yt=ct[gt+Ot],(It=s(V[2].codes,V[2].htrees[yt],_))>=X){var Mt,Rt,Ft;It-=X,Rt=It&K,It>>=Y,Mt=1+(It>>1),Ft=(2+(1&It)<<Mt)-4,It=X+(Ft+_.readBits(Mt)<<Y)+Rt}}if((Tt=f(It,D,N))<0)throw new Error("[BrotliDecompress] invalid distance");if(B=k<o&&B!==o?k:o,Lt=k&h,Tt>B){if(!(Et>=C.minDictionaryWordLength&&Et<=C.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+k+" distance: "+Tt+" len: "+Et+" bytes left: "+nt);var Ft=C.offsetsByLength[Et],zt=Tt-B-1,Dt=C.sizeBitsByLength[Et],Nt=(1<<Dt)-1,Ut=zt&Nt,Wt=zt>>Dt;if(Ft+=Ut*Et,!(Wt<T.kNumTransforms))throw new Error("Invalid backward reference. pos: "+k+" distance: "+Tt+" len: "+Et+" bytes left: "+nt);var jt=T.transformDictionaryWord(p,Lt,Ft,Et,Wt);if(Lt+=jt,k+=jt,nt-=jt,Lt>=m){e.write(p,u);for(var Gt=0;Gt<Lt-m;Gt++)p[Gt]=p[m+Gt]}}else{if(It>0&&(D[3&N]=Tt,++N),Et>nt)throw new Error("Invalid backward reference. pos: "+k+" distance: "+Tt+" len: "+Et+" bytes left: "+nt);for(Bt=0;Bt<Et;++Bt)p[k&h]=p[k-Tt&h],(k&h)===h&&e.write(p,u),++k,--nt}W=p[k-1&h],j=p[k-2&h]}k&=1073741823}}e.write(p,k&h)}var _=n(275).BrotliInput,k=n(275).BrotliOutput,S=n(276),C=n(277),A=n(281).HuffmanCode,P=n(281).BrotliBuildHuffmanTable,E=n(282),I=n(283),T=n(284),O=8,B=16,L=256,M=704,R=26,F=6,z=2,D=8,N=255,U=1080,W=18,j=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),G=16,V=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),H=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),q=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);d.prototype.decode=function(t){var e,n,r=0;for(e=0;e<this.num_htrees;++e)this.htrees[e]=r,n=l(this.alphabet_size,this.codes,r,t),r+=n},e.BrotliDecompressedSize=m,e.BrotliDecompressBuffer=w,e.BrotliDecompress=x,C.init()},function(t,e){function n(t){this.buffer=t,this.pos=0}function r(t){this.buffer=t,this.pos=0}n.prototype.read=function(t,e,n){this.pos+n>this.buffer.length&&(n=this.buffer.length-this.pos);for(var r=0;r<n;r++)t[e+r]=this.buffer[this.pos+r];return this.pos+=n,n},e.BrotliInput=n,r.prototype.write=function(t,e){if(this.pos+e>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(t.subarray(0,e),this.pos),this.pos+=e,e},e.BrotliOutput=r},function(t,e){function n(t){this.buf_=new Uint8Array(r),this.input_=t,this.reset()}var r=8224,i=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);n.READ_SIZE=4096,n.IBUF_MASK=8191,n.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var t=0;t<4;t++)this.val_|=this.buf_[this.pos_]<<8*t,++this.pos_;return this.bit_end_pos_>0},n.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var t=this.buf_ptr_,e=this.input_.read(this.buf_,t,4096);if(e<0)throw new Error("Unexpected end of input");if(e<4096){this.eos_=1;for(var n=0;n<32;n++)this.buf_[t+e+n]=0}if(0===t){for(var n=0;n<32;n++)this.buf_[8192+n]=this.buf_[n];this.buf_ptr_=4096}else this.buf_ptr_=0;this.bit_end_pos_+=e<<3}},n.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},n.prototype.readBits=function(t){32-this.bit_pos_<t&&this.fillBitWindow();var e=this.val_>>>this.bit_pos_&i[t];return this.bit_pos_+=t,e},t.exports=n},function(t,e,n){var r=n(278);e.init=function(){e.dictionary=r.init()},e.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),e.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),e.minDictionaryWordLength=4,e.maxDictionaryWordLength=24},function(t,e,n){var r=n(279);n(56);e.init=function(){return(0,n(274).BrotliDecompressBuffer)(r.toByteArray(n(280)))}},function(t,e){"use strict";function n(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function r(t){return 3*t.length/4-n(t)}function i(t){var e,r,i,o,a,s=t.length;o=n(t),a=new c(3*s/4-o),r=o>0?s-4:s;var u=0;for(e=0;e<r;e+=4)i=l[t.charCodeAt(e)]<<18|l[t.charCodeAt(e+1)]<<12|l[t.charCodeAt(e+2)]<<6|l[t.charCodeAt(e+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=l[t.charCodeAt(e)]<<2|l[t.charCodeAt(e+1)]>>4,a[u++]=255&i):1===o&&(i=l[t.charCodeAt(e)]<<10|l[t.charCodeAt(e+1)]<<4|l[t.charCodeAt(e+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function o(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function a(t,e,n){for(var r,i=[],a=e;a<n;a+=3)r=(t[a]<<16)+(t[a+1]<<8)+t[a+2],i.push(o(r));return i.join("")}function s(t){for(var e,n=t.length,r=n%3,i="",o=[],s=0,l=n-r;s<l;s+=16383)o.push(a(t,s,s+16383>l?l:s+16383));return 1===r?(e=t[n-1],i+=u[e>>2],i+=u[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=u[e>>10],i+=u[e>>4&63],i+=u[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=s;for(var u=[],l=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,p=f.length;h<p;++h)u[h]=f[h],l[f.charCodeAt(h)]=h;l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63},function(t,e){ t.exports="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" },function(t,e){function n(t,e){this.bits=t,this.value=e}function r(t,e){for(var n=1<<e-1;t&n;)n>>=1;return(t&n-1)+n}function i(t,e,r,i,o){do{i-=r,t[e+i]=new n(o.bits,o.value)}while(i>0)}function o(t,e,n){for(var r=1<<e-n;e<a&&!((r-=t[e])<=0);)++e,r<<=1;return e-n}e.HuffmanCode=n;var a=15;e.BrotliBuildHuffmanTable=function(t,e,s,u,l){var c,f,h,p,d,g,y,v,b,m,w,x=e,_=new Int32Array(a+1),k=new Int32Array(a+1);for(w=new Int32Array(l),h=0;h<l;h++)_[u[h]]++;for(k[1]=0,f=1;f<a;f++)k[f+1]=k[f]+_[f];for(h=0;h<l;h++)0!==u[h]&&(w[k[u[h]]++]=h);if(v=s,b=1<<v,m=b,1===k[a]){for(p=0;p<m;++p)t[e+p]=new n(0,65535&w[0]);return m}for(p=0,h=0,f=1,d=2;f<=s;++f,d<<=1)for(;_[f]>0;--_[f])c=new n(255&f,65535&w[h++]),i(t,e+p,d,b,c),p=r(p,f);for(y=m-1,g=-1,f=s+1,d=2;f<=a;++f,d<<=1)for(;_[f]>0;--_[f])(p&y)!==g&&(e+=b,v=o(_,f,s),b=1<<v,m+=b,g=p&y,t[x+g]=new n(v+s&255,e-x-g&65535)),c=new n(f-s&255,65535&w[h++]),i(t,e+(p>>s),d,b,c),p=r(p,f);return m}},function(t,e){e.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),e.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},function(t,e){function n(t,e){this.offset=t,this.nbits=e}e.kBlockLengthPrefixCode=[new n(1,2),new n(5,2),new n(9,2),new n(13,2),new n(17,3),new n(25,3),new n(33,3),new n(41,3),new n(49,4),new n(65,4),new n(81,4),new n(97,4),new n(113,5),new n(145,5),new n(177,5),new n(209,5),new n(241,6),new n(305,6),new n(369,7),new n(497,8),new n(753,9),new n(1265,10),new n(2289,11),new n(4337,12),new n(8433,13),new n(16625,24)],e.kInsertLengthPrefixCode=[new n(0,0),new n(1,0),new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,1),new n(8,1),new n(10,2),new n(14,2),new n(18,3),new n(26,3),new n(34,4),new n(50,4),new n(66,5),new n(98,5),new n(130,6),new n(194,7),new n(322,8),new n(578,9),new n(1090,10),new n(2114,12),new n(6210,14),new n(22594,24)],e.kCopyLengthPrefixCode=[new n(2,0),new n(3,0),new n(4,0),new n(5,0),new n(6,0),new n(7,0),new n(8,0),new n(9,0),new n(10,1),new n(12,1),new n(14,2),new n(18,2),new n(22,3),new n(30,3),new n(38,4),new n(54,4),new n(70,5),new n(102,5),new n(134,6),new n(198,7),new n(326,8),new n(582,9),new n(1094,10),new n(2118,24)],e.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],e.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},function(t,e,n){function r(t,e,n){this.prefix=new Uint8Array(t.length),this.transform=e,this.suffix=new Uint8Array(n.length);for(var r=0;r<t.length;r++)this.prefix[r]=t.charCodeAt(r);for(var r=0;r<n.length;r++)this.suffix[r]=n.charCodeAt(r)}function i(t,e){return t[e]<192?(t[e]>=97&&t[e]<=122&&(t[e]^=32),1):t[e]<224?(t[e+1]^=32,2):(t[e+2]^=5,3)}var o=n(277),a=[new r("",0,""),new r("",0," "),new r(" ",0," "),new r("",12,""),new r("",10," "),new r("",0," the "),new r(" ",0,""),new r("s ",0," "),new r("",0," of "),new r("",10,""),new r("",0," and "),new r("",13,""),new r("",1,""),new r(", ",0," "),new r("",0,", "),new r(" ",10," "),new r("",0," in "),new r("",0," to "),new r("e ",0," "),new r("",0,'"'),new r("",0,"."),new r("",0,'">'),new r("",0,"\n"),new r("",3,""),new r("",0,"]"),new r("",0," for "),new r("",14,""),new r("",2,""),new r("",0," a "),new r("",0," that "),new r(" ",10,""),new r("",0,". "),new r(".",0,""),new r(" ",0,", "),new r("",15,""),new r("",0," with "),new r("",0,"'"),new r("",0," from "),new r("",0," by "),new r("",16,""),new r("",17,""),new r(" the ",0,""),new r("",4,""),new r("",0,". The "),new r("",11,""),new r("",0," on "),new r("",0," as "),new r("",0," is "),new r("",7,""),new r("",1,"ing "),new r("",0,"\n\t"),new r("",0,":"),new r(" ",0,". "),new r("",0,"ed "),new r("",20,""),new r("",18,""),new r("",6,""),new r("",0,"("),new r("",10,", "),new r("",8,""),new r("",0," at "),new r("",0,"ly "),new r(" the ",0," of "),new r("",5,""),new r("",9,""),new r(" ",10,", "),new r("",10,'"'),new r(".",0,"("),new r("",11," "),new r("",10,'">'),new r("",0,'="'),new r(" ",0,"."),new r(".com/",0,""),new r(" the ",0," of the "),new r("",10,"'"),new r("",0,". This "),new r("",0,","),new r(".",0," "),new r("",10,"("),new r("",10,"."),new r("",0," not "),new r(" ",0,'="'),new r("",0,"er "),new r(" ",11," "),new r("",0,"al "),new r(" ",11,""),new r("",0,"='"),new r("",11,'"'),new r("",10,". "),new r(" ",0,"("),new r("",0,"ful "),new r(" ",10,". "),new r("",0,"ive "),new r("",0,"less "),new r("",11,"'"),new r("",0,"est "),new r(" ",10,"."),new r("",11,'">'),new r(" ",0,"='"),new r("",10,","),new r("",0,"ize "),new r("",11,"."),new r(" ",0,""),new r(" ",0,","),new r("",10,'="'),new r("",11,'="'),new r("",0,"ous "),new r("",11,", "),new r("",10,"='"),new r(" ",10,","),new r(" ",11,'="'),new r(" ",11,", "),new r("",11,","),new r("",11,"("),new r("",11,". "),new r(" ",11,"."),new r("",11,"='"),new r(" ",11,". "),new r(" ",10,'="'),new r(" ",11,"='"),new r(" ",10,"='")];e.kTransforms=a,e.kNumTransforms=a.length,e.transformDictionaryWord=function(t,e,n,r,s){var u,l=a[s].prefix,c=a[s].suffix,f=a[s].transform,h=f<12?0:f-11,p=0,d=e;h>r&&(h=r);for(var g=0;g<l.length;)t[e++]=l[g++];for(n+=h,r-=h,f<=9&&(r-=f),p=0;p<r;p++)t[e++]=o.dictionary[n+p];if(u=e-r,10===f)i(t,u);else if(11===f)for(;r>0;){var y=i(t,u);u+=y,r-=y}for(var v=0;v<c.length;)t[e++]=c[v++];return e-d}},function(t,e,n){(function(e){(function(){var r,i,o,a,s=function(t,e){function n(){this.constructor=t}for(var r in e)u.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},u={}.hasOwnProperty;r=n(286),i=n(82),a=n(56),o=function(t){function n(t,e,n){var o;this.document=t,this.name=e,this.id=n,this.font=new r(i[this.name]()),o=this.font,this.ascender=o.ascender,this.descender=o.descender,this.bbox=o.bbox,this.lineGap=o.lineGap}var i;return s(n,t),n.prototype.embed=function(){return this.dictionary.data={Type:"Font",BaseFont:this.name,Subtype:"Type1",Encoding:"WinAnsiEncoding"},this.dictionary.end()},n.prototype.encode=function(t){var e,n,r,i,o,a,s,u;for(n=this.font.encodeText(t),i=this.font.glyphsForString(""+t),e=this.font.advancesForGlyphs(i),u=[],o=a=0,s=i.length;a<s;o=++a)r=i[o],u.push({xAdvance:e[o],yAdvance:0,xOffset:0,yOffset:0,advanceWidth:this.font.widthOfGlyph(r)});return[n,u]},n.prototype.widthOfString=function(t,e){var n,r,i,o,a,s,u;for(i=this.font.glyphsForString(""+t),r=this.font.advancesForGlyphs(i),u=0,o=0,a=r.length;o<a;o++)n=r[o],u+=n;return s=e/1e3,u*s},n.isStandardFont=function(t){return t in i},i={Courier:function(){return a.readFileSync(e+"/../font/data/Courier.afm","utf8")},"Courier-Bold":function(){return a.readFileSync(e+"/../font/data/Courier-Bold.afm","utf8")},"Courier-Oblique":function(){return a.readFileSync(e+"/../font/data/Courier-Oblique.afm","utf8")},"Courier-BoldOblique":function(){return a.readFileSync(e+"/../font/data/Courier-BoldOblique.afm","utf8")},Helvetica:function(){return a.readFileSync(e+"/../font/data/Helvetica.afm","utf8")},"Helvetica-Bold":function(){return a.readFileSync(e+"/../font/data/Helvetica-Bold.afm","utf8")},"Helvetica-Oblique":function(){return a.readFileSync(e+"/../font/data/Helvetica-Oblique.afm","utf8")},"Helvetica-BoldOblique":function(){return a.readFileSync(e+"/../font/data/Helvetica-BoldOblique.afm","utf8")},"Times-Roman":function(){return a.readFileSync(e+"/../font/data/Times-Roman.afm","utf8")},"Times-Bold":function(){return a.readFileSync(e+"/../font/data/Times-Bold.afm","utf8")},"Times-Italic":function(){return a.readFileSync(e+"/../font/data/Times-Italic.afm","utf8")},"Times-BoldItalic":function(){return a.readFileSync(e+"/../font/data/Times-BoldItalic.afm","utf8")},Symbol:function(){return a.readFileSync(e+"/../font/data/Symbol.afm","utf8")},ZapfDingbats:function(){return a.readFileSync(e+"/../font/data/ZapfDingbats.afm","utf8")}},n}(i),t.exports=o}).call(this)}).call(e,"/")},function(t,e,n){(function(){var e,r;r=n(56),e=function(){function t(t){var e,r;this.contents=t,this.attributes={},this.glyphWidths={},this.boundingBoxes={},this.kernPairs={},this.parse(),this.charWidths=function(){var t,e;for(e=[],r=t=0;t<=255;r=++t)e.push(this.glyphWidths[n[r]]);return e}.call(this),this.bbox=function(){var t,n,r,i;for(r=this.attributes.FontBBox.split(/\s+/),i=[],t=0,n=r.length;t<n;t++)e=r[t],i.push(+e);return i}.call(this),this.ascender=+(this.attributes.Ascender||0),this.descender=+(this.attributes.Descender||0),this.lineGap=this.bbox[3]-this.bbox[1]-(this.ascender-this.descender)}var e,n;return t.open=function(e){return new t(r.readFileSync(e,"utf8"))},t.prototype.parse=function(){var t,e,n,r,i,o,a,s,u,l;for(u="",s=this.contents.split("\n"),e=0,r=s.length;e<r;e++)if(i=s[e],o=i.match(/^Start(\w+)/))u=o[1];else if(o=i.match(/^End(\w+)/))u="";else switch(u){case"FontMetrics":o=i.match(/(^\w+)\s+(.*)/),n=o[1],l=o[2],(t=this.attributes[n])?(Array.isArray(t)||(t=this.attributes[n]=[t]),t.push(l)):this.attributes[n]=l;break;case"CharMetrics":if(!/^CH?\s/.test(i))continue;a=i.match(/\bN\s+(\.?\w+)\s*;/)[1],this.glyphWidths[a]=+i.match(/\bWX\s+(\d+)\s*;/)[1];break;case"KernPairs":o=i.match(/^KPX\s+(\.?\w+)\s+(\.?\w+)\s+(-?\d+)/),o&&(this.kernPairs[o[1]+"\0"+o[2]]=parseInt(o[3]))}},e={402:131,8211:150,8212:151,8216:145,8217:146,8218:130,8220:147,8221:148,8222:132,8224:134,8225:135,8226:149,8230:133,8364:128,8240:137,8249:139,8250:155,710:136,8482:153,338:140,339:156,732:152,352:138,353:154,376:159,381:142,382:158},t.prototype.encodeText=function(t){var n,r,i,o,a;for(a=[],r=i=0,o=t.length;0<=o?i<o:i>o;r=0<=o?++i:--i)n=t.charCodeAt(r),n=e[n]||n,a.push(n.toString(16));return a},t.prototype.glyphsForString=function(t){var e,n,r,i,o;for(n=[],r=i=0,o=t.length;0<=o?i<o:i>o;r=0<=o?++i:--i)e=t.charCodeAt(r),n.push(this.characterToGlyph(e));return n},t.prototype.characterToGlyph=function(t){return n[e[t]||t]||".notdef"},t.prototype.widthOfGlyph=function(t){return this.glyphWidths[t]||0},t.prototype.getKernPair=function(t,e){return this.kernPairs[t+"\0"+e]||0},t.prototype.advancesForGlyphs=function(t){var e,n,r,i,o,a;for(e=[],n=r=0,o=t.length;r<o;n=++r)i=t[n],a=t[n+1],e.push(this.widthOfGlyph(i)+this.getKernPair(i,a));return e},n=".notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n.notdef .notdef .notdef .notdef\n\nspace exclam quotedbl numbersign\ndollar percent ampersand quotesingle\nparenleft parenright asterisk plus\ncomma hyphen period slash\nzero one two three\nfour five six seven\neight nine colon semicolon\nless equal greater question\n\nat A B C\nD E F G\nH I J K\nL M N O\nP Q R S\nT U V W\nX Y Z bracketleft\nbackslash bracketright asciicircum underscore\n\ngrave a b c\nd e f g\nh i j k\nl m n o\np q r s\nt u v w\nx y z braceleft\nbar braceright asciitilde .notdef\n\nEuro .notdef quotesinglbase florin\nquotedblbase ellipsis dagger daggerdbl\ncircumflex perthousand Scaron guilsinglleft\nOE .notdef Zcaron .notdef\n.notdef quoteleft quoteright quotedblleft\nquotedblright bullet endash emdash\ntilde trademark scaron guilsinglright\noe .notdef zcaron ydieresis\n\nspace exclamdown cent sterling\ncurrency yen brokenbar section\ndieresis copyright ordfeminine guillemotleft\nlogicalnot hyphen registered macron\ndegree plusminus twosuperior threesuperior\nacute mu paragraph periodcentered\ncedilla onesuperior ordmasculine guillemotright\nonequarter onehalf threequarters questiondown\n\nAgrave Aacute Acircumflex Atilde\nAdieresis Aring AE Ccedilla\nEgrave Eacute Ecircumflex Edieresis\nIgrave Iacute Icircumflex Idieresis\nEth Ntilde Ograve Oacute\nOcircumflex Otilde Odieresis multiply\nOslash Ugrave Uacute Ucircumflex\nUdieresis Yacute Thorn germandbls\n\nagrave aacute acircumflex atilde\nadieresis aring ae ccedilla\negrave eacute ecircumflex edieresis\nigrave iacute icircumflex idieresis\neth ntilde ograve oacute\nocircumflex otilde odieresis divide\noslash ugrave uacute ucircumflex\nudieresis yacute thorn ydieresis".split(/\s+/),t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r,i=function(t,e){function n(){this.constructor=t}for(var r in e)o.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty,a=[].slice;r=n(82),n(57),e=function(t){function e(t,e,n){this.document=t,this.font=e,this.id=n,this.subset=this.font.createSubset(),this.unicode=[[0]],this.widths=[this.font.getGlyph(0).advanceWidth],this.name=this.font.postscriptName,this.scale=1e3/this.font.unitsPerEm,this.ascender=this.font.ascent*this.scale,this.descender=this.font.descent*this.scale,this.lineGap=this.font.lineGap*this.scale,this.bbox=this.font.bbox,this.layoutCache=Object.create(null)}var n;return i(e,t),e.prototype.layoutRun=function(t,e){var n,r,i,o,a,s,u;for(u=this.font.layout(t,e),s=u.positions,n=r=0,o=s.length;r<o;n=++r){a=s[n];for(i in a)a[i]*=this.scale;a.advanceWidth=u.glyphs[n].advanceWidth*this.scale}return u},e.prototype.layoutCached=function(t){var e,n;return(e=this.layoutCache[t])?e:(n=this.layoutRun(t),this.layoutCache[t]=n,n)},e.prototype.layout=function(t,e,n){var r,i,o,a,s,u,l;if(null==n&&(n=!1),e)return this.layoutRun(t,e);for(i=n?null:[],s=n?null:[],r=0,a=0,o=0;o<=t.length;)o===t.length&&a<o||" "===(u=t.charAt(o))||"\t"===u?(l=this.layoutCached(t.slice(a,++o)),n||(i.push.apply(i,l.glyphs),s.push.apply(s,l.positions)),r+=l.advanceWidth,a=o):o++;return{glyphs:i,positions:s,advanceWidth:r}},e.prototype.encode=function(t,e){var n,r,i,o,a,s,u,l,c,f,h;for(f=this.layout(t,e),a=f.glyphs,c=f.positions,h=[],s=u=0,l=a.length;u<l;s=++u)o=a[s],i=this.subset.includeGlyph(o.id),h.push(("0000"+i.toString(16)).slice(-4)),null==(n=this.widths)[i]&&(n[i]=o.advanceWidth*this.scale),null==(r=this.unicode)[i]&&(r[i]=o.codePoints);return[h,c]},e.prototype.widthOfString=function(t,e,n){var r,i;return i=this.layout(t,n,!0).advanceWidth,r=e/1e3,i*r},e.prototype.embed=function(){var t,e,n,r,i,o,a,s,u,l,c;return s=null!=this.subset.cff,o=this.document.ref(),s&&(o.data.Subtype="CIDFontType0C"),this.subset.encodeStream().pipe(o),r=((null!=(l=this.font["OS/2"])?l.sFamilyClass:void 0)||0)>>8,i=0,this.font.post.isFixedPitch&&(i|=1),1<=r&&r<=7&&(i|=2),i|=4,10===r&&(i|=8),this.font.head.macStyle.italic&&(i|=64),c=function(){var t,e;for(e=[],a=t=0;t<6;a=++t)e.push(String.fromCharCode(26*Math.random()+65));return e}().join(""),u=c+"+"+this.font.postscriptName,t=this.font.bbox,n=this.document.ref({Type:"FontDescriptor",FontName:u,Flags:i,FontBBox:[t.minX*this.scale,t.minY*this.scale,t.maxX*this.scale,t.maxY*this.scale],ItalicAngle:this.font.italicAngle,Ascent:this.ascender,Descent:this.descender,CapHeight:(this.font.capHeight||this.font.ascent)*this.scale,XHeight:(this.font.xHeight||0)*this.scale,StemV:0}),s?n.data.FontFile3=o:n.data.FontFile2=o,n.end(),e=this.document.ref({Type:"Font",Subtype:s?"CIDFontType0":"CIDFontType2",BaseFont:u,CIDSystemInfo:{Registry:new String("Adobe"),Ordering:new String("Identity"),Supplement:0},FontDescriptor:n,W:[0,this.widths]}),e.end(),this.dictionary.data={Type:"Font",Subtype:"Type0",BaseFont:u,Encoding:"Identity-H",DescendantFonts:[e],ToUnicode:this.toUnicodeCmap()},this.dictionary.end()},n=function(){var t,e,n;return e=1<=arguments.length?a.call(arguments,0):[],n=function(){var n,r,i;for(i=[],n=0,r=e.length;n<r;n++)t=e[n],i.push(("0000"+t.toString(16)).slice(-4));return i}(),n.join("")},e.prototype.toUnicodeCmap=function(){var t,e,r,i,o,a,s,u,l,c;for(t=this.document.ref(),i=[],l=this.unicode,o=0,s=l.length;o<s;o++){for(e=l[o],r=[],a=0,u=e.length;a<u;a++)c=e[a],c>65535&&(c-=65536,r.push(n(c>>>10&1023|55296)),c=56320|1023&c),r.push(n(c));i.push("<"+r.join(" ")+">")}return t.end("/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange\n1 beginbfrange\n<0000> <"+n(i.length-1)+"> ["+i.join(" ")+"]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"),t},e}(r),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r;e=n(289),r=n(57).number,t.exports={initText:function(){return this.x=0,this.y=0,this._lineGap=0},lineGap:function(t){return this._lineGap=t,this},moveDown:function(t){return null==t&&(t=1),this.y+=this.currentLineHeight(!0)*t+this._lineGap,this},moveUp:function(t){return null==t&&(t=1),this.y-=this.currentLineHeight(!0)*t+this._lineGap,this},_text:function(t,n,r,i,o){var a,s,u,l,c;if(i=this._initOptions(n,r,i),t=null==t?"":""+t,i.wordSpacing&&(t=t.replace(/\s{2,}/g," ")),i.width)c=this._wrapper,c||(c=new e(this,i),c.on("line",o)),this._wrapper=i.continued?c:null,this._textOptions=i.continued?i:null,c.wrap(t,i);else for(l=t.split("\n"),a=0,s=l.length;a<s;a++)u=l[a],o(u,i);return this},text:function(t,e,n,r){return this._text(t,e,n,r,this._line.bind(this))},widthOfString:function(t,e){return null==e&&(e={}),this._font.widthOfString(t,this._fontSize,e.features)+(e.characterSpacing||0)*(t.length-1)},heightOfString:function(t,e){var n,r,i,o,a;return null==e&&(e={}),i=this,o=i.x,a=i.y,e=this._initOptions(e),e.height=Infinity,r=e.lineGap||this._lineGap||0,this._text(t,this.x,this.y,e,function(t){return function(e,n){return t.y+=t.currentLineHeight(!0)+r}}(this)),n=this.y-a,this.x=o,this.y=a,n},list:function(t,n,r,i,o){var a,s,u,l,c,f,h,p,d;return i=this._initOptions(n,r,i),p=Math.round(this._font.ascender/1e3*this._fontSize/2),d=i.bulletRadius||Math.round(this._font.ascender/1e3*this._fontSize/3),u=i.textIndent||5*d,l=i.bulletIndent||8*d,f=1,c=[],h=[],a=function(t){var e,n,r,i,o;for(o=[],e=r=0,i=t.length;r<i;e=++r)n=t[e],Array.isArray(n)?(f++,a(n),o.push(f--)):(c.push(n),o.push(h.push(f)));return o},a(t),o=new e(this,i),o.on("line",this._line.bind(this)),f=1,s=0,o.on("firstLine",function(t){return function(){var e,n;return(n=h[s++])!==f&&(e=l*(n-f),t.x+=e,o.lineWidth-=e,f=n),t.circle(t.x-u+d,t.y+p,d),t.fill()}}(this)),o.on("sectionStart",function(t){return function(){var e;return e=u+l*(f-1),t.x+=e,o.lineWidth-=e}}(this)),o.on("sectionEnd",function(t){return function(){var e;return e=u+l*(f-1),t.x-=e,o.lineWidth+=e}}(this)),o.wrap(c.join("\n"),i),this},_initOptions:function(t,e,n){var r,i,o;if(null==t&&(t={}),null==n&&(n={}),"object"==typeof t&&(n=t,t=null),n=function(){var t,e,r;e={};for(t in n)r=n[t],e[t]=r;return e}(),this._textOptions){i=this._textOptions;for(r in i)o=i[r],"continued"!==r&&null==n[r]&&(n[r]=o)}return null!=t&&(this.x=t),null!=e&&(this.y=e),!1!==n.lineBreak&&null==n.width&&(n.width=this.page.width-this.x-this.page.margins.right),n.columns||(n.columns=0),null==n.columnGap&&(n.columnGap=18),n},_line:function(t,e,n){var r;return null==e&&(e={}),this._fragment(t,this.x,this.y,e),r=e.lineGap||this._lineGap||0,n?this.y+=this.currentLineHeight(!0)+r:this.x+=this.widthOfString(t)},_fragment:function(t,e,n,i){var o,a,s,u,l,c,f,h,p,d,g,y,v,b,m,w,x,_,k,S,C,A,P,E,I,T,O,B,L,M,R,F,z,D,N,U;if(t=(""+t).replace(/\n/g,""),0!==t.length){if(a=i.align||"left",N=i.wordSpacing||0,u=i.characterSpacing||0,i.width)switch(a){case"right":F=this.widthOfString(t.replace(/\s+$/,""),i),e+=i.lineWidth-F;break;case"center":e+=i.lineWidth/2-i.textWidth/2;break;case"justify":U=t.trim().split(/\s+/),F=this.widthOfString(t.replace(/\s+/g,""),i),R=this.widthOfString(" ")+u,N=Math.max(0,(i.lineWidth-F)/Math.max(1,U.length-1)-R)}if(B=i.textWidth+N*(i.wordCount-1)+u*(t.length-1),i.link&&this.link(e,n,B,this.currentLineHeight(),i.link),(i.underline||i.strike)&&(this.save(),i.stroke||this.strokeColor.apply(this,this._fillColor),x=this._fontSize<10?.5:Math.floor(this._fontSize/10),this.lineWidth(x),c=i.underline?1:2,_=n+this.currentLineHeight()/c,i.underline&&(_-=x),this.moveTo(e,_),this.lineTo(e+B,_),this.stroke(),this.restore()),this.save(),this.transform(1,0,0,-1,0,this.page.height),n=this.page.height-n-this._font.ascender/1e3*this._fontSize,null==(s=this.page.fonts)[C=this._font.id]&&(s[C]=this._font.ref()),this.addContent("BT"),this.addContent("1 0 0 1 "+r(e)+" "+r(n)+" Tm"),this.addContent("/"+this._font.id+" "+r(this._fontSize)+" Tf"),S=i.fill&&i.stroke?2:i.stroke?1:0,S&&this.addContent(S+" Tr"),u&&this.addContent(r(u)+" Tc"),N)for(U=t.trim().split(/\s+/),N+=this.widthOfString(" ")+u,N*=1e3/this._fontSize,f=[],P=[],y=0,m=U.length;y<m;y++){D=U[y],I=this._font.encode(D,i.features),h=I[0],E=I[1],f.push.apply(f,h),P.push.apply(P,E),M={},T=P[P.length-1];for(v in T)z=T[v],M[v]=z;M.xAdvance+=N,P[P.length-1]=M}else O=this._font.encode(t,i.features),f=O[0],P=O[1];for(L=this._fontSize/1e3,l=[],b=0,d=!1,o=function(t){return function(t){var e,n;return b<t&&(n=f.slice(b,t).join(""),e=P[t-1].xAdvance-P[t-1].advanceWidth,l.push("<"+n+"> "+r(-e))),b=t}}(),p=function(t){return function(e){if(o(e),l.length>0)return t.addContent("["+l.join(" ")+"] TJ"),l.length=0}}(this),g=k=0,w=P.length;k<w;g=++k)A=P[g],A.xOffset||A.yOffset?(p(g),this.addContent("1 0 0 1 "+r(e+A.xOffset*L)+" "+r(n+A.yOffset*L)+" Tm"),p(g+1),d=!0):(d&&(this.addContent("1 0 0 1 "+r(e)+" "+r(n)+" Tm"),d=!1),A.xAdvance-A.advanceWidth!=0&&o(g+1)),e+=A.xAdvance*L;return p(g),this.addContent("ET"),this.restore()}}}}).call(this)},function(t,e,n){(function(){var e,r,i,o=function(t,e){function n(){this.constructor=t}for(var r in e)a.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty;e=n(32).EventEmitter,r=n(16),i=function(t){function e(t,e){var n;this.document=t,this.indent=e.indent||0,this.characterSpacing=e.characterSpacing||0,this.wordSpacing=0===e.wordSpacing,this.columns=e.columns||1,this.columnGap=null!=(n=e.columnGap)?n:18,this.lineWidth=(e.width-this.columnGap*(this.columns-1))/this.columns,this.spaceLeft=this.lineWidth,this.startX=this.document.x,this.startY=this.document.y,this.column=1,this.ellipsis=e.ellipsis,this.continuedX=0,this.features=e.features,null!=e.height?(this.height=e.height,this.maxY=this.startY+e.height):this.maxY=this.document.page.maxY(),this.on("firstLine",function(t){return function(e){var n;return n=t.continuedX||t.indent,t.document.x+=n,t.lineWidth-=n,t.once("line",function(){if(t.document.x-=n,t.lineWidth+=n,e.continued&&!t.continuedX&&(t.continuedX=t.indent),!e.continued)return t.continuedX=0})}}(this)),this.on("lastLine",function(t){return function(e){var n;return n=e.align,"justify"===n&&(e.align="left"),t.lastLine=!0,t.once("line",function(){return t.document.y+=e.paragraphGap||0,e.align=n,t.lastLine=!1})}}(this))}return o(e,t),e.prototype.wordWidth=function(t){return this.document.widthOfString(t,this)+this.characterSpacing+this.wordSpacing},e.prototype.eachWord=function(t,e){var n,i,o,a,s,u,l,c,f,h;for(i=new r(t),s=null,h=Object.create(null);n=i.nextBreak();){if(f=t.slice((null!=s?s.position:void 0)||0,n.position),(c=null!=h[f]?h[f]:h[f]=this.wordWidth(f))>this.lineWidth+this.continuedX)for(u=s,o={};f.length;){for(a=f.length;c>this.spaceLeft;)c=this.wordWidth(f.slice(0,--a));if(o.required=a<f.length,l=e(f.slice(0,a),c,o,u),u={required:!1},f=f.slice(a),c=this.wordWidth(f),!1===l)break}else l=e(f,c,n,s);if(!1===l)break;s=n}},e.prototype.wrap=function(t,e){var n,r,i,o,a,s,u;return null!=e.indent&&(this.indent=e.indent),null!=e.characterSpacing&&(this.characterSpacing=e.characterSpacing),null!=e.wordSpacing&&(this.wordSpacing=e.wordSpacing),null!=e.ellipsis&&(this.ellipsis=e.ellipsis),o=this.document.y+this.document.currentLineHeight(!0),(this.document.y>this.maxY||o>this.maxY)&&this.nextSection(),n="",a=0,s=0,i=0,u=this.document.y,r=function(t){return function(){return e.textWidth=a+t.wordSpacing*(s-1),e.wordCount=s,e.lineWidth=t.lineWidth,u=t.document.y,t.emit("line",n,e,t),i++}}(this),this.emit("sectionStart",e,this),this.eachWord(t,function(t){return function(i,o,u,l){var c;if((null==l||l.required)&&(t.emit("firstLine",e,t),t.spaceLeft=t.lineWidth),o<=t.spaceLeft&&(n+=i,a+=o,s++),u.required||o>t.spaceLeft){if(u.required&&t.emit("lastLine",e,t),c=t.document.currentLineHeight(!0),null!=t.height&&t.ellipsis&&t.document.y+2*c>t.maxY&&t.column>=t.columns){for(!0===t.ellipsis&&(t.ellipsis="…"),n=n.replace(/\s+$/,""),a=t.wordWidth(n+t.ellipsis);a>t.lineWidth;)n=n.slice(0,-1).replace(/\s+$/,""),a=t.wordWidth(n+t.ellipsis);n+=t.ellipsis}return u.required&&o>t.spaceLeft&&(n=i,a=o,s=1),r(),t.document.y+c>t.maxY&&!t.nextSection()?(s=0,n="",!1):u.required?(t.spaceLeft=t.lineWidth,n="",a=0,s=0):(t.spaceLeft=t.lineWidth-o,n=i,a=o,s=1)}return t.spaceLeft-=o}}(this)),s>0&&(this.emit("lastLine",e,this),r()),this.emit("sectionEnd",e,this),!0===e.continued?(i>1&&(this.continuedX=0),this.continuedX+=e.textWidth,this.document.y=u):this.document.x=this.startX},e.prototype.nextSection=function(t){var e;if(this.emit("sectionEnd",t,this),++this.column>this.columns){if(null!=this.height)return!1;this.document.addPage(),this.column=1,this.startY=this.document.page.margins.top,this.maxY=this.document.page.maxY(),this.document.x=this.startX,this.document._fillColor&&(e=this.document).fillColor.apply(e,this.document._fillColor),this.emit("pageBreak",t,this)}else this.document.x+=this.lineWidth+this.columnGap,this.document.y=this.startY,this.emit("columnBreak",t,this);return this.emit("sectionStart",t,this),!0},e}(e),t.exports=i}).call(this)},function(t,e,n){(function(){var e;e=n(291),t.exports={initImages:function(){return this._imageRegistry={},this._imageCount=0},image:function(t,e,n,r){var i,o,a,s,u,l,c,f,h,p,d,g,y,v,b;return null==r&&(r={}),"object"==typeof e&&(r=e,e=null),e=null!=(p=null!=e?e:r.x)?p:this.x,n=null!=(d=null!=n?n:r.y)?d:this.y,"string"==typeof t&&(c=this._imageRegistry[t]),c||(c=t.width&&t.height?t:this.openImage(t)),c.obj||c.embed(this),null==(i=this.page.xobjects)[h=c.label]&&(i[h]=c.obj),v=r.width||c.width,u=r.height||c.height,r.width&&!r.height?(b=v/c.width,v=c.width*b,u=c.height*b):r.height&&!r.width?(l=u/c.height,v=c.width*l,u=c.height*l):r.scale?(v=c.width*r.scale,u=c.height*r.scale):r.fit?(g=r.fit,s=g[0],o=g[1],a=s/o,f=c.width/c.height,f>a?(v=s,u=s/f):(u=o,v=o*f)):r.cover&&(y=r.cover,s=y[0],o=y[1],a=s/o,f=c.width/c.height,f>a?(u=o,v=o*f):(v=s,u=s/f)),(r.fit||r.cover)&&("center"===r.align?e=e+s/2-v/2:"right"===r.align&&(e=e+s-v),"center"===r.valign?n=n+o/2-u/2:"bottom"===r.valign&&(n=n+o-u)),this.y===n&&(this.y+=u),this.save(),this.transform(v,0,0,-u,e,n+u), this.addContent("/"+c.label+" Do"),this.restore(),this},openImage:function(t){var n;return"string"==typeof t&&(n=this._imageRegistry[t]),n||(n=e.open(t,"I"+ ++this._imageCount),"string"==typeof t&&(this._imageRegistry[t]=n)),n}}}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o,a;a=n(56),n(292),r=n(293),o=n(294),i=function(){function t(){}return t.open=function(t,n){var i,s;if(e.isBuffer(t))i=t;else if(t instanceof ArrayBuffer)i=new e(new Uint8Array(t));else if(s=/^data:.+;base64,(.*)$/.exec(t))i=new e(s[1],"base64");else if(!(i=a.readFileSync(t)))return;if(255===i[0]&&216===i[1])return new r(i,n);if(137===i[0]&&"PNG"===i.toString("ascii",1,4))return new o(i,n);throw new Error("Unknown image format.")},t}(),t.exports=i}).call(this)}).call(e,n(2).Buffer)},function(t,e){(function(){var e;e=function(){function t(t){this.data=null!=t?t:[],this.pos=0,this.length=this.data.length}return t.prototype.readByte=function(){return this.data[this.pos++]},t.prototype.writeByte=function(t){return this.data[this.pos++]=t},t.prototype.byteAt=function(t){return this.data[t]},t.prototype.readBool=function(){return!!this.readByte()},t.prototype.writeBool=function(t){return this.writeByte(t?1:0)},t.prototype.readUInt32=function(){var t,e,n,r;return t=16777216*this.readByte(),e=this.readByte()<<16,n=this.readByte()<<8,r=this.readByte(),t+e+n+r},t.prototype.writeUInt32=function(t){return this.writeByte(t>>>24&255),this.writeByte(t>>16&255),this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt32=function(){var t;return t=this.readUInt32(),t>=2147483648?t-4294967296:t},t.prototype.writeInt32=function(t){return t<0&&(t+=4294967296),this.writeUInt32(t)},t.prototype.readUInt16=function(){var t,e;return t=this.readByte()<<8,e=this.readByte(),t|e},t.prototype.writeUInt16=function(t){return this.writeByte(t>>8&255),this.writeByte(255&t)},t.prototype.readInt16=function(){var t;return t=this.readUInt16(),t>=32768?t-65536:t},t.prototype.writeInt16=function(t){return t<0&&(t+=65536),this.writeUInt16(t)},t.prototype.readString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t;0<=r?n<r:n>r;e=0<=r?++n:--n)i[e]=String.fromCharCode(this.readByte());return i.join("")},t.prototype.writeString=function(t){var e,n,r,i;for(i=[],e=n=0,r=t.length;0<=r?n<r:n>r;e=0<=r?++n:--n)i.push(this.writeByte(t.charCodeAt(e)));return i},t.prototype.stringAt=function(t,e){return this.pos=t,this.readString(e)},t.prototype.readShort=function(){return this.readInt16()},t.prototype.writeShort=function(t){return this.writeInt16(t)},t.prototype.readLongLong=function(){var t,e,n,r,i,o,a,s;return t=this.readByte(),e=this.readByte(),n=this.readByte(),r=this.readByte(),i=this.readByte(),o=this.readByte(),a=this.readByte(),s=this.readByte(),128&t?-1*(72057594037927940*(255^t)+281474976710656*(255^e)+1099511627776*(255^n)+4294967296*(255^r)+16777216*(255^i)+65536*(255^o)+256*(255^a)+(255^s)+1):72057594037927940*t+281474976710656*e+1099511627776*n+4294967296*r+16777216*i+65536*o+256*a+s},t.prototype.writeLongLong=function(t){var e,n;return e=Math.floor(t/4294967296),n=4294967295&t,this.writeByte(e>>24&255),this.writeByte(e>>16&255),this.writeByte(e>>8&255),this.writeByte(255&e),this.writeByte(n>>24&255),this.writeByte(n>>16&255),this.writeByte(n>>8&255),this.writeByte(255&n)},t.prototype.readInt=function(){return this.readInt32()},t.prototype.writeInt=function(t){return this.writeInt32(t)},t.prototype.slice=function(t,e){return this.data.slice(t,e)},t.prototype.read=function(t){var e,n,r;for(e=[],n=0,r=t;0<=r?n<r:n>r;0<=r?++n:--n)e.push(this.readByte());return e},t.prototype.write=function(t){var e,n,r,i;for(i=[],n=0,r=t.length;n<r;n++)e=t[n],i.push(this.writeByte(e));return i},t}(),t.exports=e}).call(this)},function(t,e,n){(function(){var e,r=[].indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1};n(56),e=function(){function t(t,n){var i,o,a;if(this.data=t,this.label=n,65496!==this.data.readUInt16BE(0))throw"SOI not found in JPEG";for(a=2;a<this.data.length&&(o=this.data.readUInt16BE(a),a+=2,!(r.call(e,o)>=0));)a+=this.data.readUInt16BE(a);if(r.call(e,o)<0)throw"Invalid JPEG.";a+=2,this.bits=this.data[a++],this.height=this.data.readUInt16BE(a),a+=2,this.width=this.data.readUInt16BE(a),a+=2,i=this.data[a++],this.colorSpace=function(){switch(i){case 1:return"DeviceGray";case 3:return"DeviceRGB";case 4:return"DeviceCMYK"}}(),this.obj=null}var e;return e=[65472,65473,65474,65475,65477,65478,65479,65480,65481,65482,65483,65484,65485,65486,65487],t.prototype.embed=function(t){if(!this.obj)return this.obj=t.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.bits,Width:this.width,Height:this.height,ColorSpace:this.colorSpace,Filter:"DCTDecode"}),"DeviceCMYK"===this.colorSpace&&(this.obj.data.Decode=[1,0,1,0,1,0,1,0]),this.obj.end(this.data),this.data=null},t}(),t.exports=e}).call(this)},function(t,e,n){(function(e){(function(){var r,i,o;o=n(59),r=n(295),i=function(){function t(t,e){this.label=e,this.image=new r(t),this.width=this.image.width,this.height=this.image.height,this.imgData=this.image.imgData,this.obj=null}return t.prototype.embed=function(t){var n,r,i,o,a,s,u,l;if(this.document=t,!this.obj){if(this.obj=this.document.ref({Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bits,Width:this.width,Height:this.height,Filter:"FlateDecode"}),this.image.hasAlphaChannel||(a=this.document.ref({Predictor:15,Colors:this.image.colors,BitsPerComponent:this.image.bits,Columns:this.width}),this.obj.data.DecodeParms=a,a.end()),0===this.image.palette.length?this.obj.data.ColorSpace=this.image.colorSpace:(o=this.document.ref(),o.end(new e(this.image.palette)),this.obj.data.ColorSpace=["Indexed","DeviceRGB",this.image.palette.length/3-1,o]),this.image.transparency.grayscale)return u=this.image.transparency.greyscale,this.obj.data.Mask=[u,u];if(this.image.transparency.rgb){for(s=this.image.transparency.rgb,i=[],n=0,r=s.length;n<r;n++)l=s[n],i.push(l,l);return this.obj.data.Mask=i}return this.image.transparency.indexed?this.loadIndexedAlphaChannel():this.image.hasAlphaChannel?this.splitAlphaChannel():this.finalize()}},t.prototype.finalize=function(){var t;return this.alphaChannel&&(t=this.document.ref({Type:"XObject",Subtype:"Image",Height:this.height,Width:this.width,BitsPerComponent:8,Filter:"FlateDecode",ColorSpace:"DeviceGray",Decode:[0,1]}),t.end(this.alphaChannel),this.obj.data.SMask=t),this.obj.end(this.imgData),this.image=null,this.imgData=null},t.prototype.splitAlphaChannel=function(){return this.image.decodePixels(function(t){return function(n){var r,i,a,s,u,l,c,f,h;for(a=t.image.colors*t.image.bits/8,h=t.width*t.height,l=new e(h*a),i=new e(h),u=f=r=0,c=n.length;u<c;)l[f++]=n[u++],l[f++]=n[u++],l[f++]=n[u++],i[r++]=n[u++];return s=0,o.deflate(l,function(e,n){if(t.imgData=n,e)throw e;if(2==++s)return t.finalize()}),o.deflate(i,function(e,n){if(t.alphaChannel=n,e)throw e;if(2==++s)return t.finalize()})}}(this))},t.prototype.loadIndexedAlphaChannel=function(t){var n;return n=this.image.transparency.indexed,this.image.decodePixels(function(t){return function(r){var i,a,s,u,l;for(i=new e(t.width*t.height),a=0,s=u=0,l=r.length;u<l;s=u+=1)i[a++]=n[r[s]];return o.deflate(i,function(e,n){if(t.alphaChannel=n,e)throw e;return t.finalize()})}}(this))},t}(),t.exports=i}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){(function(e){(function(){var r,i;r=n(56),i=n(59),t.exports=function(){function t(t){var n,r,i,o,a,s,u,l,c,f;for(this.data=t,this.pos=8,this.palette=[],this.imgData=[],this.transparency={},this.text={};;){switch(n=this.readUInt32(),function(){var t,e;for(e=[],i=t=0;t<4;i=++t)e.push(String.fromCharCode(this.data[this.pos++]));return e}.call(this).join("")){case"IHDR":this.width=this.readUInt32(),this.height=this.readUInt32(),this.bits=this.data[this.pos++],this.colorType=this.data[this.pos++],this.compressionMethod=this.data[this.pos++],this.filterMethod=this.data[this.pos++],this.interlaceMethod=this.data[this.pos++];break;case"PLTE":this.palette=this.read(n);break;case"IDAT":for(i=l=0;l<n;i=l+=1)this.imgData.push(this.data[this.pos++]);break;case"tRNS":switch(this.transparency={},this.colorType){case 3:if(this.transparency.indexed=this.read(n),(s=255-this.transparency.indexed.length)>0)for(i=c=0;0<=s?c<s:c>s;i=0<=s?++c:--c)this.transparency.indexed.push(255);break;case 0:this.transparency.grayscale=this.read(n)[0];break;case 2:this.transparency.rgb=this.read(n)}break;case"tEXt":u=this.read(n),o=u.indexOf(0),a=String.fromCharCode.apply(String,u.slice(0,o)),this.text[a]=String.fromCharCode.apply(String,u.slice(o+1));break;case"IEND":return this.colors=function(){switch(this.colorType){case 0:case 3:case 4:return 1;case 2:case 6:return 3}}.call(this),this.hasAlphaChannel=4===(f=this.colorType)||6===f,r=this.colors+(this.hasAlphaChannel?1:0),this.pixelBitlength=this.bits*r,this.colorSpace=function(){switch(this.colors){case 1:return"DeviceGray";case 3:return"DeviceRGB"}}.call(this),void(this.imgData=new e(this.imgData));default:this.pos+=n}if(this.pos+=4,this.pos>this.data.length)throw new Error("Incomplete or corrupt PNG file")}}return t.decode=function(e,n){return r.readFile(e,function(e,r){var i;return i=new t(r),i.decode(function(t){return n(t)})})},t.load=function(e){var n;return n=r.readFileSync(e),new t(n)},t.prototype.read=function(t){var e,n;for(n=[],e=0;0<=t?e<t:e>t;0<=t?++e:--e)n.push(this.data[this.pos++]);return n},t.prototype.readUInt32=function(){var t,e,n,r;return t=this.data[this.pos++]<<24,e=this.data[this.pos++]<<16,n=this.data[this.pos++]<<8,r=this.data[this.pos++],t|e|n|r},t.prototype.readUInt16=function(){var t,e;return t=this.data[this.pos++]<<8,e=this.data[this.pos++],t|e},t.prototype.decodePixels=function(t){var n=this;return i.inflate(this.imgData,function(r,i){var o,a,s,u,l,c,f,h,p,d,g,y,v,b,m,w,x,_,k,S,C,A,P;if(r)throw r;for(y=n.pixelBitlength/8,w=y*n.width,v=new e(w*n.height),c=i.length,m=0,b=0,a=0;b<c;){switch(i[b++]){case 0:for(u=k=0;k<w;u=k+=1)v[a++]=i[b++];break;case 1:for(u=S=0;S<w;u=S+=1)o=i[b++],l=u<y?0:v[a-y],v[a++]=(o+l)%256;break;case 2:for(u=C=0;C<w;u=C+=1)o=i[b++],s=(u-u%y)/y,x=m&&v[(m-1)*w+s*y+u%y],v[a++]=(x+o)%256;break;case 3:for(u=A=0;A<w;u=A+=1)o=i[b++],s=(u-u%y)/y,l=u<y?0:v[a-y],x=m&&v[(m-1)*w+s*y+u%y],v[a++]=(o+Math.floor((l+x)/2))%256;break;case 4:for(u=P=0;P<w;u=P+=1)o=i[b++],s=(u-u%y)/y,l=u<y?0:v[a-y],0===m?x=_=0:(x=v[(m-1)*w+s*y+u%y],_=s&&v[(m-1)*w+(s-1)*y+u%y]),f=l+x-_,h=Math.abs(f-l),d=Math.abs(f-x),g=Math.abs(f-_),p=h<=d&&h<=g?l:d<=g?x:_,v[a++]=(o+p)%256;break;default:throw new Error("Invalid filter algorithm: "+i[b-1])}m++}return t(v)})},t.prototype.decodePalette=function(){var t,n,r,i,o,a,s,u,l;for(r=this.palette,a=this.transparency.indexed||[],o=new e(a.length+r.length),i=0,r.length,t=0,n=s=0,u=r.length;s<u;n=s+=3)o[i++]=r[n],o[i++]=r[n+1],o[i++]=r[n+2],o[i++]=null!=(l=a[t++])?l:255;return o},t.prototype.copyToImageData=function(t,e){var n,r,i,o,a,s,u,l,c,f,h;if(r=this.colors,c=null,n=this.hasAlphaChannel,this.palette.length&&(c=null!=(h=this._decodedPalette)?h:this._decodedPalette=this.decodePalette(),r=4,n=!0),i=(null!=t?t.data:void 0)||t,l=i.length,a=c||e,o=s=0,1===r)for(;o<l;)u=c?4*e[o/4]:s,f=a[u++],i[o++]=f,i[o++]=f,i[o++]=f,i[o++]=n?a[u++]:255,s=u;else for(;o<l;)u=c?4*e[o/4]:s,i[o++]=a[u++],i[o++]=a[u++],i[o++]=a[u++],i[o++]=n?a[u++]:255,s=u},t.prototype.decode=function(t){var n,r=this;return n=new e(this.width*this.height*4),this.decodePixels(function(e){return r.copyToImageData(n,e),t(n)})},t}()}).call(this)}).call(e,n(2).Buffer)},function(t,e){(function(){t.exports={annotate:function(t,e,n,r,i){var o,a,s;i.Type="Annot",i.Rect=this._convertRect(t,e,n,r),i.Border=[0,0,0],"Link"!==i.Subtype&&null==i.C&&(i.C=this._normalizeColor(i.color||[0,0,0])),delete i.color,"string"==typeof i.Dest&&(i.Dest=new String(i.Dest));for(o in i)s=i[o],i[o[0].toUpperCase()+o.slice(1)]=s;return a=this.ref(i),this.page.annotations.push(a),a.end(),this},note:function(t,e,n,r,i,o){return null==o&&(o={}),o.Subtype="Text",o.Contents=new String(i),o.Name="Comment",null==o.color&&(o.color=[243,223,92]),this.annotate(t,e,n,r,o)},link:function(t,e,n,r,i,o){return null==o&&(o={}),o.Subtype="Link",o.A=this.ref({S:"URI",URI:new String(i)}),o.A.end(),this.annotate(t,e,n,r,o)},_markup:function(t,e,n,r,i){var o,a,s,u,l;return null==i&&(i={}),o=this._convertRect(t,e,n,r),a=o[0],u=o[1],s=o[2],l=o[3],i.QuadPoints=[a,l,s,l,a,u,s,u],i.Contents=new String,this.annotate(t,e,n,r,i)},highlight:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Highlight",null==i.color&&(i.color=[241,238,148]),this._markup(t,e,n,r,i)},underline:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Underline",this._markup(t,e,n,r,i)},strike:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="StrikeOut",this._markup(t,e,n,r,i)},lineAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Line",i.Contents=new String,i.L=[t,this.page.height-e,n,this.page.height-r],this.annotate(t,e,n,r,i)},rectAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Square",i.Contents=new String,this.annotate(t,e,n,r,i)},ellipseAnnotation:function(t,e,n,r,i){return null==i&&(i={}),i.Subtype="Circle",i.Contents=new String,this.annotate(t,e,n,r,i)},textAnnotation:function(t,e,n,r,i,o){return null==o&&(o={}),o.Subtype="FreeText",o.Contents=new String(i),o.DA=new String,this.annotate(t,e,n,r,o)},_convertRect:function(t,e,n,r){var i,o,a,s,u,l,c,f,h;return h=e,e+=r,f=t+n,c=this._ctm,i=c[0],o=c[1],a=c[2],s=c[3],u=c[4],l=c[5],t=i*t+a*e+u,e=o*t+s*e+l,f=i*f+a*h+u,h=o*f+s*h+l,[t,e,f,h]}}}).call(this)},function(t,e){"use strict";t.exports={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],EXECUTIVE:[521.86,756],FOLIO:[612,936],LEGAL:[612,1008],LETTER:[612,792],TABLOID:[792,1224]}},function(t,e,n){(function(e){"use strict";function r(t,e){this.pdfKitDoc=t,this.imageDictionary=e||{}}var i=n(291);r.prototype.measureImage=function(t){var n,r,o=this;if(this.pdfKitDoc._imageRegistry[t])n=this.pdfKitDoc._imageRegistry[t];else{r="I"+ ++this.pdfKitDoc._imageCount;try{n=i.open(function(t){var n=o.imageDictionary[t];if(!n)return t;var r=n.indexOf("base64,");return r<0?o.imageDictionary[t]:new e(n.substring(r+7),"base64")}(t),r)}catch(t){n=null}if(null===n||void 0===n)throw"invalid image, images dictionary should contain dataURL entries (or local file paths in node.js)";n.embed(this.pdfKitDoc),this.pdfKitDoc._imageRegistry[t]=n}return{width:n.width,height:n.height}},t.exports=r}).call(e,n(2).Buffer)},function(t,e){"use strict";function n(t){for(var e=[],n=null,r=0,i=t.inlines.length;r<i;r++){var o=t.inlines[r],a=o.decoration;if(a){var s=o.decorationColor||o.color||"black",u=o.decorationStyle||"solid";a=Array.isArray(a)?a:[a];for(var l=0,c=a.length;l<c;l++){var f=a[l];n&&f===n.decoration&&u===n.decorationStyle&&s===n.decorationColor&&"lineThrough"!==f?n.inlines.push(o):(n={line:t,decoration:f,decorationColor:s,decorationStyle:u,inlines:[o]},e.push(n))}}else n=null}return e}function r(t,e,n,r){var i=t.inlines[0],o=function(){for(var e=0,n=0,r=t.inlines.length;n<r;n++){e=t.inlines[n].fontSize>e?n:e}return t.inlines[e]}(),a=function(){for(var e=0,n=0,r=t.inlines.length;n<r;n++)e+=t.inlines[n].width;return e}(),s=t.line.getAscenderHeight(),u=o.font.ascender/1e3*o.fontSize,l=o.height,c=l-u,f=.5+.12*Math.floor(Math.max(o.fontSize-8,0)/2);switch(t.decoration){case"underline":n+=s+.45*c;break;case"overline":n+=s-.85*u;break;case"lineThrough":n+=s-.25*u;break;default:throw"Unkown decoration : "+t.decoration}if(r.save(),"double"===t.decorationStyle){var h=Math.max(.5,2*f);r.fillColor(t.decorationColor).rect(e+i.x,n-f/2,a,f/2).fill().rect(e+i.x,n+h-f/2,a,f/2).fill()}else if("dashed"===t.decorationStyle){var p=Math.ceil(a/6.8),d=e+i.x;r.rect(d,n,a,f).clip(),r.fillColor(t.decorationColor);for(var g=0;g<p;g++)r.rect(d,n-f/2,3.96,f).fill(),d+=6.8}else if("dotted"===t.decorationStyle){var y=Math.ceil(a/(3*f)),v=e+i.x;r.rect(v,n,a,f).clip(),r.fillColor(t.decorationColor);for(var b=0;b<y;b++)r.rect(v,n-f/2,f,f).fill(),v+=3*f}else if("wavy"===t.decorationStyle){var m=Math.ceil(a/1.4)+1,w=e+i.x-1;r.rect(e+i.x,n-1,a,n+1).clip(),r.lineWidth(.24),r.moveTo(w,n);for(var x=0;x<m;x++)r.bezierCurveTo(w+.7,n-1,w+1.4,n-1,w+.7*3,n).bezierCurveTo(w+2.8,n+1,w+3.5,n+1,w+.7*6,n),w+=.7*6;r.stroke(t.decorationColor)}else r.fillColor(t.decorationColor).rect(e+i.x,n-f/2,a,f).fill();r.restore()}function i(t,e,i,o){for(var a=n(t),s=0,u=a.length;s<u;s++)r(a[s],e,i,o)}function o(t,e,n,r){for(var i=t.getHeight(),o=0,a=t.inlines.length;o<a;o++){var s=t.inlines[o];if(s.background){var u=s.justifyShift||0;r.fillColor(s.background).rect(e+s.x-u,n,s.width+u,i).fill()}}}t.exports={drawBackground:o,drawDecorations:i}},function(t,e,n){var r,i=i||function(t){"use strict";if(!(void 0===t||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var e=t.document,n=function(){return t.URL||t.webkitURL||t},r=e?e.createElementNS("http://www.w3.org/1999/xhtml","a"):[],i="download"in r,o=function(t){var e=new MouseEvent("click");t.dispatchEvent(e)},a=/constructor/i.test(t.HTMLElement)||t.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(e){(t.setImmediate||t.setTimeout)(function(){throw e},0)},l=function(t){var e=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};setTimeout(e,4e4)},c=function(t,e,n){e=[].concat(e);for(var r=e.length;r--;){var i=t["on"+e[r]];if("function"==typeof i)try{i.call(t,n||t)}catch(t){u(t)}}},f=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob([String.fromCharCode(65279),t],{type:t.type}):t},h=function(e,u,h){h||(e=f(e));var p,d=this,g=e.type,y="application/octet-stream"===g,v=function(){c(d,"writestart progress write writeend".split(" "))};if(d.readyState=d.INIT,i)return p=n().createObjectURL(e),void setTimeout(function(){r.href=p,r.download=u,o(r),v(),l(p),d.readyState=d.DONE});!function(){if((s||y&&a)&&t.FileReader){var r=new FileReader;return r.onloadend=function(){var e=s?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");t.open(e,"_blank")||(t.location.href=e),e=void 0,d.readyState=d.DONE,v()},r.readAsDataURL(e),void(d.readyState=d.INIT)}if(p||(p=n().createObjectURL(e)),y)t.location.href=p;else{t.open(p,"_blank")||(t.location.href=p)}d.readyState=d.DONE,v(),l(p)}()},p=h.prototype,d=function(t,e,n){return new h(t,e||t.name||"download",n)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return e=e||t.name||"download",n||(t=f(t)),navigator.msSaveOrOpenBlob(t,e)}:(p.abort=function(){},p.readyState=p.INIT=0,p.WRITING=1,p.DONE=2,p.error=p.onwritestart=p.onprogress=p.onwrite=p.onabort=p.onerror=p.onwriteend=null,d)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);void 0!==t&&t.exports?t.exports.saveAs=i:null!==n(301)&&null!==n(302)&&void 0!==(r=function(){return i}.call(e,n,e,t))&&(t.exports=r)},function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e){(function(e){t.exports=e}).call(e,{})}])}); //# sourceMappingURL=pdfmake.min.js.map /*! DataTables 1.10.16 ©2008-2017 SpryMedia Ltd - datatables.net/license */ (function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,G){E||(E=window);G||(G="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(G,E,E.document)}:h(jQuery,window,document)})(function(h,E,G,k){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()), d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function I(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),I(a[d],b[d],c)):b[d]=b[e]})}function Ca(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords"); a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX= a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&I(m.models.oSearch,a[b])}function eb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"===typeof b&&!h.isArray(b)&&(a.aDataSort=[b])}function fb(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute", top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function gb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!== e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Da(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:G.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig= e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(eb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"=== typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass= d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ea(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&ka(a);r(a,null,"column-sizing",[a])}function Z(a,b){var c=la(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c= la(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){var b=0;h.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==h(d.nTh).css("display")&&b++});return b}function la(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Fa(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,t;e=0;for(f=b.length;e<f;e++)if(l=b[e],t=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){t[i]=== k&&(t[i]=B(a,i,e,"type"));q=d[g](t[i],a);if(!q&&g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function hb(a,b,c,d){var e,f,g,j,i,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var q=n.targets!==k?n.targets:n.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Da(a);d(q[f],n)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j< i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&d(j,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function M(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ga(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ha(a,e);return M(a, c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});if(i===k)return a.iDrawError!=e&&null===j&&(J(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j&&d!==k)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function ib(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData, d,{settings:a,row:b,col:c})}function Ia(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function Q(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=Q(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a, b,f){var g,j;if(""!==f){j=Ia(f);for(var i=0,n=j.length;i<n;i++){f=j[i].match(ba);g=j[i].match(U);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");if(h.isArray(a)){i=0;for(n=a.length;i<n;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(U,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function R(a){if(h.isPlainObject(a))return R(a._); if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ia(e),f;f=e[e.length-1];for(var g,j,i=0,n=e.length-1;i<n;i++){g=e[i].match(ba);j=e[i].match(U);if(g){e[i]=e[i].replace(ba,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(n=d.length;j<n;j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(U, ""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(U))a[f.replace(U,"")](d);else a[f.replace(ba,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ja(a){return D(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild); c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ha(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Ka(a,e)}}function Ha(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,n,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],t=function(a,b){if("string"===typeof a){var c=a.indexOf("@"); -1!==c&&(c=a.substring(c+1),R(a)(d,b.getAttribute(c)))}},m=function(a){if(c===k||c===i)j=l[i],n=h.trim(a.innerHTML),j&&j._bAttrSrc?(R(j.mData._)(d,n),t(j.mData.sort,a),t(j.mData.type,a),t(j.mData.filter,a)):q?(j._setter||(j._setter=R(j.mData)),j._setter(d,n)):d[i]=n;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)m(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)m(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&R(a.rowId)(d,b);return{data:d,cells:e}} function Ga(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,n,l,q;if(null===e.nTr){j=c||G.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Ka(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){n=a.aoColumns[l];i=c?d[l]:G.createElement(n.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if((!c||n.mRender||n.mData!==l)&&(!h.isPlainObject(n.mData)||n.mData._!==l+".display"))i.innerHTML=B(a,b,l,"display");n.sClass&&(i.className+=" "+n.sClass);n.bVisible&&!c?j.appendChild(i):!n.bVisible&&c&&i.parentNode.removeChild(i); n.fnCreatedCell&&n.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}r(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function Ka(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?qa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function jb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0=== h("th, td",g).length,n=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),La(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Ma(a,"header")(a,d,f,n);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH); if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=i=1,j[d][f]===k){a.appendChild(g[d][f].cell); for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<i;c++)j[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",n)}}}}function N(a){var b=r(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart= -1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ga(a,l);l=q.nTr;if(0!==e){var t=d[c%e];q._sRowStripe!=t&&(h(l).removeClass(q._sRowStripe).addClass(t),q._sRowStripe=t)}r(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords: f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];r(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ja(a),g,n,i]);r(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ja(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));r(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function S(a,b){var c=a.oFeatures,d=c.bFilter; c.bSort&&lb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;N(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,k=0;k<f.length;k++){g=null;j=f[k];if("<"==j){i=h("<div/>")[0]; n=f[k+1];if("'"==n||'"'==n){l="";for(q=2;f[k+q]!=n;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=nb(a);else if("f"==j&&d.bFilter)g=ob(a);else if("r"==j&&d.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==j&&d.bInfo)g=rb(a);else if("p"== j&&d.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q<n;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function da(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,n,l,q,k;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan"); q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;n=g;k=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][n+j]={cell:e,unique:k},a[f+g].nTr=d}e=e.nextSibling}}}function ra(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function sa(a,b,c){r(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={}, e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance,i=function(b){r(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&J(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=r(a,null,"xhr", [a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?J(a,0,"Invalid JSON response",1):4===b.readyState&&J(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;r(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?(a.iDraw++,C(a, !0),sa(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,n,l,k=V(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var t=function(a,b){j.push({name:a,value:b})};t("sEcho",a.iDraw);t("iColumns",c);t("sColumns",D(b,"sName").join(","));t("iDisplayStart",g);t("iDisplayLength",i);var pa={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g], l=f[g],i="function"==typeof n.mData?"function":n.mData,pa.columns.push({data:i,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),t("mDataProp_"+g,i),d.bFilter&&(t("sSearch_"+g,l.sSearch),t("bRegex_"+g,l.bRegex),t("bSearchable_"+g,n.bSearchable)),d.bSort&&t("bSortable_"+g,n.bSortable);d.bFilter&&(t("sSearch",e.sSearch),t("bRegex",e.bRegex));d.bSort&&(h.each(k,function(a,b){pa.order.push({column:b.col,dir:b.dir});t("iSortCol_"+a,b.col);t("sSortDir_"+ a,b.dir)}),t("iSortingCols",k.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:pa:b?j:pa}function ub(a,b){var c=ta(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)M(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;N(a);a._bInitComplete|| ua(a,b);a.bAjaxDataGet=!0;C(a,!1)}function ta(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?Q(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value? "":this.value;b!=e.sSearch&&(fa(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,N(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Na(f,g):f).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==G.activeElement&&i.val(e.sSearch)}catch(d){}}); return b[0]}function fa(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Fa(a);if("ssp"!=y(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)wb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=!0;r(a,null,"search",[a])}function xb(a){for(var b= m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,n=c.length;i<n;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function wb(a,b,c,d,e,f){if(""!==b){for(var g=[],j=a.aiDisplay,d=Oa(b,d,e,f),e=0;e<j.length;e++)b=a.aoData[j[e]]._aFilterData[c],d.test(b)&&g.push(j[e]);a.aiDisplay=g}}function vb(a,b,c,d,e,f){var d=Oa(b,d,e,f),f=a.oPreviousSearch.sSearch,g=a.aiDisplayMaster,j,e=[];0!==m.ext.search.length&&(c=!0);j=yb(a);if(0>=b.length)a.aiDisplay= g.slice();else{if(j||c||f.length>b.length||0!==b.indexOf(f)||a.bSorted)a.aiDisplay=g.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)d.test(a.aoData[b[c]]._sFilterRow)&&e.push(b[c]);a.aiDisplay=e}}function Oa(a,b,c,d){a=b?a:Pa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function yb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1; d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(va.innerHTML=i,i=Wb?va.textContent:va.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex, caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Bb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+ 1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a, f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ga(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ea(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=v(f.sWidth));r(a,null,"preInit",[a]);S(a);e=y(a);if("ssp"!=e||g)"ajax"==e?sa(a,[],function(c){var f=ta(a,c);for(b=0;b<f.length;b++)M(a,f[b]);a.iInitDisplayStart= d;S(a);C(a,!1);ua(a,c)},a):(C(a,!1),ua(a))}else setTimeout(function(){ga(a)},200)}function ua(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);r(a,null,"plugin-init",[a,b]);r(a,"aoInitComplete","init",[a,b])}function Qa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Ra(a);r(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]= new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Qa(a,h(this).val());N(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){N(a)}, b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Ma(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Sa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1=== e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:J(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(r(a,null,"page",[a]),c&&N(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display", b?"block":"none");r(a,null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>", {"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:v(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left", 0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"), j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),m=t.children("table"),o=h(a.nTHead),p=h(a.nTable),s=p[0],r=s.style,u=a.nTFoot?h(a.nTFoot):null,x=a.oBrowser,T=x.bScrollOversize,Xb=D(a.aoColumns,"nTh"),O,K,P,w,Ta=[],y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};K=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==K&&a.scrollBarVis!==k)a.scrollBarVis=K,Y(a);else{a.scrollBarVis=K;p.children("thead, tfoot").remove(); u&&(P=u.clone().prependTo(p),O=u.find("tr"),P=P.find("tr"));w=o.clone().prependTo(p);o=o.find("tr");K=w.find("tr");w.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(ra(a,w),function(b,c){B=Z(a,b);c.style.width=a.aoColumns[B].sWidth});u&&H(function(a){a.style.width=""},P);f=p.outerWidth();if(""===c){r.width="100%";if(T&&(p.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(p.outerWidth()-b);f=p.outerWidth()}else""!==d&&(r.width= v(d),f=p.outerWidth());H(C,K);H(function(a){z.push(a.innerHTML);Ta.push(v(h(a).css("width")))},K);H(function(a,b){if(h.inArray(a,Xb)!==-1)a.style.width=Ta[b]},o);h(K).height(0);u&&(H(C,P),H(function(a){A.push(a.innerHTML);y.push(v(h(a).css("width")))},P),H(function(a,b){a.style.width=y[b]},O),h(P).height(0));H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+z[b]+"</div>";a.style.width=Ta[b]},K);u&&H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+ A[b]+"</div>";a.style.width=y[b]},P);if(p.outerWidth()<f){O=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(T&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(O-b);(""===c||""!==d)&&J(a,1,"Possible column misalignment",6)}else O="100%";q.width=v(O);g.width=v(O);u&&(a.nScrollFoot.style.width=v(O));!e&&T&&(q.height=v(s.offsetHeight+b));c=p.outerWidth();n[0].style.width=v(c);i.width=v(c);d=p.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+ (x.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=v(c),t[0].style.width=v(c),t[0].style[e]=d?b+"px":"0px");p.children("colgroup").insertBefore(p.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function H(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Ea(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll, e=d.sY,f=d.sX,g=d.sXInner,j=c.length,i=la(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,t=!1,m,o,p=a.oBrowser,d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)o=c[i[m]],null!==o.sWidth&&(o.sWidth=Db(o.sWidthOrig,k),t=!0);if(d||!t&&!f&&!e&&j==aa(a)&&j==n.length)for(m=0;m<j;m++)i=Z(a,m),null!==i&&(c[i].sWidth=v(n.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var s=h("<tr/>").appendTo(j.find("tbody")); j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=ra(a,j.find("thead")[0]);for(m=0;m<i.length;m++)o=c[i[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?v(o.sWidthOrig):"",o.sWidthOrig&&f&&h(n[m]).append(h("<div/>").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)t=i[m],o=c[t],h(Eb(a,t)).clone(!1).append(o.sContentPadding).appendTo(s);h("[name]", j).removeAttr("name");o=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(n[m]),g=k.outerWidth()-k.width(),k=p.bBounding?Math.ceil(n[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=v(k-g);b.style.width=v(e);o.remove()}l&&(b.style.width= v(l));if((l||f)&&!a._reszEvt)b=function(){h(E).on("resize.DT-"+a.sInstance,Na(function(){Y(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",v(a)).appendTo(b||G.body),d=c[0].offsetWidth;c.remove();return d}function Eb(a,b){var c=Fb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Fb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace(Yb, ""),c=c.replace(/ /g," "),c.length>d&&(d=c.length,e=f);return e}function v(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){i=n[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType|| "string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:n[a][1],index:n[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function lb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Fa(a);h=V(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Gb(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g= 0;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,o=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=o[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Hb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g, "");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Ua(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b, D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);S(a);"function"==typeof d&&d(a)}function La(a,b,c,d){var e=a.aoColumns[c];Va(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,d))})} function wa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=V(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Gb(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j], c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function xa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[d])}})};r(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a, b)}}function Ib(a,b,c){var d,e,f=a.aoColumns,b=function(b){if(b&&b.time){var g=r(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===h.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g)&&!(b.columns&&f.length!==b.columns.length))){a.oLoadedState=h.extend(!0,{},b);b.start!==k&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==k&&(a._iDisplayLength=b.length);b.order!==k&&(a.aaSorting=[],h.each(b.order,function(b,c){a.aaSorting.push(c[0]>=f.length?[0,c[1]]:c)}));b.search!== k&&h.extend(a.oPreviousSearch,Ab(b.search));if(b.columns){d=0;for(e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==k&&(f[d].bVisible=g.visible),g.search!==k&&h.extend(a.aoPreSearchCols[d],Ab(g.search))}r(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==k&&b(g)}else c()}function ya(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function J(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+ " - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)E.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&r(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Jb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e], h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Va(a,b,c){h(a).on("click.DT",b,function(b){a.blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function r(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+ ".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Ra(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ma(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ha(a,b){var c=[],c=Kb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0, c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return za(b,a)},"num-fmt":function(b){return za(b,a,Wa)},"html-num":function(b){return za(b,a,Aa)},"html-num-fmt":function(b){return za(b,a,Aa,Wa)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Lb(a){return function(){var b= [ya(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new s(ya(this[x.iApiIndex])):new s(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing= function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)}; this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase(); return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ya(this[x.iApiIndex])}; this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var e in m.ext.internal)e&&(this[e]=Lb(e));this.each(function(){var e={},g=1<d?Jb(e,a,!0): a,j=0,i,e=this.getAttribute("id"),n=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())J(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{db(l);eb(l.column);I(l,l,!0);I(l.column,l.column,!0);I(l,h.extend(g,q.data()));var t=m.settings,j=0;for(i=t.length;j<i;j++){var o=t[j];if(o.nTable==this||o.nTHead.parentNode==this||o.nTFoot&&o.nTFoot.parentNode==this){var s=g.bRetrieve!==k?g.bRetrieve:l.bRetrieve;if(c||s)return o.oInstance;if(g.bDestroy!==k?g.bDestroy:l.bDestroy){o.oInstance.fnDestroy(); break}else{J(o,0,"Cannot reinitialise DataTable",3);return}}if(o.sTableId==this.id){t.splice(j,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:e,sTableId:e});p.nTable=this;p.oApi=b.internal;p.oInit=g;t.push(p);p.oInstance=1===b.length?b:q.dataTable();db(g);g.oLanguage&&Ca(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=h.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]); g=Jb(h.extend(!0,{},l),g);F(p.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(p,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"], ["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);F(p.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(p.oLanguage,g,"fnInfoCallback");z(p,"aoDrawCallback",g.fnDrawCallback,"user");z(p,"aoServerParams",g.fnServerParams,"user");z(p,"aoStateSaveParams",g.fnStateSaveParams,"user");z(p,"aoStateLoadParams",g.fnStateLoadParams,"user");z(p,"aoStateLoaded",g.fnStateLoaded,"user");z(p,"aoRowCallback", g.fnRowCallback,"user");z(p,"aoRowCreatedCallback",g.fnCreatedRow,"user");z(p,"aoHeaderCallback",g.fnHeaderCallback,"user");z(p,"aoFooterCallback",g.fnFooterCallback,"user");z(p,"aoInitComplete",g.fnInitComplete,"user");z(p,"aoPreDrawCallback",g.fnPreDrawCallback,"user");p.rowIdFn=Q(g.rowId);fb(p);var u=p.oClasses;h.extend(u,m.ext.classes,g.oClasses);q.addClass(u.sTable);p.iInitDisplayStart===k&&(p.iInitDisplayStart=g.iDisplayStart,p._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(p.bDeferLoading= !0,e=h.isArray(g.iDeferLoading),p._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,p._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var v=p.oLanguage;h.extend(!0,v,g.oLanguage);v.sUrl&&(h.ajax({dataType:"json",url:v.sUrl,success:function(a){Ca(a);I(l.oLanguage,a);h.extend(true,v,a);ga(p)},error:function(){ga(p)}}),n=!0);null===g.asStripeClasses&&(p.asStripeClasses=[u.sStripeOdd,u.sStripeEven]);var e=p.asStripeClasses,x=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(e,function(a){return x.hasClass(a)}))&& (h("tbody tr",this).removeClass(e.join(" ")),p.asDestroyStripes=e.slice());e=[];t=this.getElementsByTagName("thead");0!==t.length&&(da(p.aoHeader,t[0]),e=ra(p));if(null===g.aoColumns){t=[];j=0;for(i=e.length;j<i;j++)t.push(null)}else t=g.aoColumns;j=0;for(i=t.length;j<i;j++)Da(p,e?e[j]:null);hb(p,g.aoColumnDefs,t,function(a,b){ja(p,a,b)});if(x.length){var w=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(x[0]).children("th, td").each(function(a,b){var c=p.aoColumns[a];if(c.mData=== a){var d=w(b,"sort")||w(b,"order"),e=w(b,"filter")||w(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ja(p,a)}}})}var T=p.oFeatures,e=function(){if(g.aaSorting===k){var a=p.aaSorting;j=0;for(i=a.length;j<i;j++)a[j][1]=p.aoColumns[j].asSorting[0]}wa(p);T.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=V(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});r(p,null,"order",[p,a,b]);Hb(p)}}); z(p,"aoDrawCallback",function(){(p.bSorted||y(p)==="ssp"||T.bDeferRender)&&wa(p)},"sc");var a=q.children("caption").each(function(){this._captionSide=h(this).css("caption-side")}),b=q.children("thead");b.length===0&&(b=h("<thead/>").appendTo(q));p.nTHead=b[0];b=q.children("tbody");b.length===0&&(b=h("<tbody/>").appendTo(q));p.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(p.oScroll.sX!==""||p.oScroll.sY!==""))b=h("<tfoot/>").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(u.sNoFooter); else if(b.length>0){p.nTFoot=b[0];da(p.aoFooter,p.nTFoot)}if(g.aaData)for(j=0;j<g.aaData.length;j++)M(p,g.aaData[j]);else(p.bDeferLoading||y(p)=="dom")&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=true;n===false&&ga(p)};g.bStateSave?(T.bStateSave=!0,z(p,"aoDrawCallback",xa,"state_save"),Ib(p,g,e)):e()}});b=null;return this},x,s,o,u,Xa={},Mb=/[\r\n]/g,Aa=/<.*?>/g,Zb=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,$b=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)", "g"),Wa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,L=function(a){return!a||!0===a||"-"===a?!0:!1},Nb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Ob=function(a,b){Xa[b]||(Xa[b]=RegExp(Pa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var d="string"===typeof a;if(L(a))return!0;b&&d&&(a=Ob(a,b));c&&d&&(a=a.replace(Wa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Pb=function(a,b,c){return L(a)?!0:!(L(a)||"string"=== typeof a)?null:Ya(a.replace(Aa,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ia=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},W=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Qb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]); return b},qa=function(a){var b;a:{if(!(2>a.length)){b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];var e=a.length,f,g=0,d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b};m.util={throttle:function(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,j=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,j)},c)):(d=g,a.apply(b,j))}},escapeRegex:function(a){return a.replace($b, "\\$1")}};var A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,U=/\(\)$/,Pa=m.util.escapeRegex,va=h("<div>")[0],Wb=va.textContent!==k,Yb=/<.*?>/g,Na=m.util.throttle,Rb=[],w=Array.prototype,ac=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};s=function(a,b){if(!(this instanceof s))return new s(a,b);var c=[],d=function(a){(a=ac(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=qa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};s.extend(this,this,Rb)};m.Api=s;h.extend(s.prototype,{any:function(){return 0!==this.count()},concat:w.concat,context:[],count:function(){return this.flatten().length}, each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new s(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new s(this.context,b)},flatten:function(){var a=[];return new s(this.context,a.concat.apply(a,this.toArray()))},join:w.join,indexOf:w.indexOf||function(a,b){for(var c=b||0, d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,j,h,n,l=this.context,m,o,u=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(j=l.length;g<j;g++){var r=new s(l[g]);if("table"===b)f=c.call(r,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(r,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){o=this[g];"column-rows"===b&&(m=Ba(l[g],u.opts));h=0;for(n=o.length;h<n;h++)f=o[h],f= "cell"===b?c.call(r,l[g],f.row,f.column,g,h):c.call(r,l[g],f,g,h,m),f!==k&&e.push(f)}}return e.length||d?(a=new s(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=u.rows,b.cols=u.cols,b.opts=u.opts,a):this},lastIndexOf:w.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(w.map)b=w.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new s(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})}, pop:w.pop,push:w.push,reduce:w.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:w.reduceRight||function(a,b){return gb(this,a,b,this.length-1,-1,-1)},reverse:w.reverse,selector:null,shift:w.shift,slice:function(){return new s(this.context,this)},sort:w.sort,splice:w.splice,toArray:function(){return w.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new s(this.context,qa(this))},unshift:w.unshift});s.extend=function(a, b,c){if(c.length&&b&&(b instanceof s||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);s.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,s.extend(a,b[f.name],f.propExt)}};s.register=o=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<d;c++)s.register(a[c],b);else for(var e=a.split("."),f=Rb,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!== e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var n=f.length;i<n;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};s.registerPlural=u=function(a,b,c){s.register(a,c);s.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof s?a.length?h.isArray(a[0])?new s(a.context,a[0]):a[0]:k:a})};o("tables()",function(a){var b;if(a){b=s;var c=this.context;if("number"=== typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});o("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new s(b[0]):a});u("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});u("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});u("tables().header()", "table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});u("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});u("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});o("draw()",function(a){return this.iterator("table",function(b){"page"===a?N(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),S(b,!1===a))})});o("page()",function(a){return a=== k?this.page.info().page:this.iterator("table",function(b){Sa(b,a)})});o("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});o("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength: k:this.iterator("table",function(b){Qa(b,a)})});var Sb=function(a,b,c){if(c){var d=new s(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))S(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();sa(a,[],function(c){na(a);for(var c=ta(a,c),d=0,e=c.length;d<e;d++)M(a,c[d]);S(a,b);C(a,!1)})}};o("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});o("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});o("ajax.reload()",function(a, b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});o("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});o("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});var Za=function(a,b,c,d,e){var f=[],g,j,i,n,l,m;i=typeof b;if(!b||"string"===i||"function"=== i||b.length===k)b=[b];i=0;for(n=b.length;i<n;i++){j=b[i]&&b[i].split&&!b[i].match(/[\[\(:]/)?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=x.selector[a];if(a.length){i=0;for(n=a.length;i<n;i++)f=a[i](d,e,f)}return qa(f)},$a=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]= a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ba=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:W(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c< d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};o("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b,f;return Za("row",a,function(a){var b=Nb(a);if(b!==null&&!e)return[b];f||(f=Ba(c,e));if(b!==null&&h.inArray(b,f)!==-1)return[b];if(a===null||a===k||a==="")return f;if(typeof a==="function")return h.map(f,function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null}); b=Qb(ia(c.aoData,f,"nTr"));if(a.nodeName){if(a._DT_RowIndex!==k)return[a._DT_RowIndex];if(a._DT_CellIndex)return[a._DT_CellIndex.row];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){var i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});o("rows().nodes()",function(){return this.iterator("row",function(a, b){return a.aoData[b].nTr||k},1)});o("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});u("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});u("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ca(b,c,a)})});u("rows().indexes()","row().index()",function(){return this.iterator("row",function(a, b){return b},1)});u("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new s(c,b)});u("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,n,l;e.splice(c,1);g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(n=l.length;i< n;i++)l[i]._DT_CellIndex.row=g}oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Ra(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});o("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(M(b,c));return h},1),c=this.rows(-1); c.pop();h.merge(c,b);return c});o("row()",function(a,b){return ab(this.rows(a,b))});o("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});o("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});o("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&& "TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:M(b,a)});return this.row(b[0])});var bb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Tb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new s(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g, "_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&bb(f,c)}))}}};o("row().child()",function(a,b){var c=this.context; if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.detach();c._details=h(e);c._detailsShow&& c._details.insertAfter(c.nTr)}return this});o(["row().child.show()","row().child().show()"],function(){Tb(this,!0);return this});o(["row().child.hide()","row().child().hide()"],function(){Tb(this,!1);return this});o(["row().child.remove()","row().child().remove()"],function(){bb(this);return this});o("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var bc=/^([^:]+):(name|visIdx|visible)$/,Ub=function(a,b,c,d,e){for(var c= [],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};o("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return Za("column",e,function(a){var b=Nb(a);if(a==="")return W(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Ba(c,f);return h.map(g,function(b,f){return a(f,Ub(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(bc):"";if(k)switch(k[2]){case "visIdx":case "visible":b= parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});u("columns().header()", "column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});u("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});u("columns().data()","column().data()",function(){return this.iterator("column-rows",Ub,1)});u("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});u("columns().cache()","column().cache()", function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});u("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ia(a.aoData,e,"anCells",b)},1)});u("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m= h.inArray(!0,D(f,"bVisible"),c+1);i=0;for(n=j.length;i<n;i++)l=j[i].nTr,f=j[i].anCells,l&&l.insertBefore(f[c],f[m]||null)}else h(D(b.aoData,"anCells",c)).detach();g.bVisible=a;ea(b,b.aoHeader);ea(b,b.aoFooter);xa(b)}});a!==k&&(this.iterator("column",function(c,e){r(c,null,"column-visibility",[c,e,a,b])}),(b===k||b)&&this.columns.adjust());return c});u("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});o("columns.adjust()", function(){return this.iterator("table",function(a){Y(a)},1)});o("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return Z(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});o("column()",function(a,b){return ab(this.columns(a,b))});o("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=$a(c),f= b.aoData,g=Ba(b,e),j=Qb(ia(f,g,"anCells")),i=h([].concat.apply([],j)),l,n=b.aoColumns.length,m,o,u,s,r,v;return Za("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];o=0;for(u=g.length;o<u;o++){l=g[o];for(s=0;s<n;s++){r={row:l,column:s};if(c){v=f[l];a(r,B(b,l,s),v.anCells?v.anCells[s]:null)&&m.push(r)}else m.push(r)}}return m}if(h.isPlainObject(a))return[a];c=i.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length|| !a.nodeName)return c;v=h(a).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,n,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(n=d[b].length;i<n;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});u("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&& a.anCells?a.anCells[c]:k},1)});o("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});u("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});u("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});u("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a, b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});u("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ca(b,c,a,d)})});o("cell()",function(a,b,c){return ab(this.cells(a,b,c))});o("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;ib(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});o("order()",function(a,b){var c=this.context;if(a===k)return 0!== c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:a.length&&!h.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});o("order.listener()",function(a,b,c){return this.iterator("table",function(d){La(d,a,b,c)})});o("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});o(["columns().order()", "column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});o("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&fa(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});u("columns().search()","column().search()",function(a, b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),fa(e,e.oPreviousSearch,1))})});o("state()",function(){return this.context.length?this.context[0].oSavedState:null});o("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});o("state.loaded()",function(){return this.context.length? this.context[0].oLoadedState:null});o("state.save()",function(){return this.iterator("table",function(a){xa(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;if(a instanceof m.Api)return!0;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot? h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new s(c):c};m.camelToHungarian=I;o("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){o(b+"()",function(){var a=Array.prototype.slice.call(arguments); a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" ");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});o("clear()",function(){return this.iterator("table",function(a){na(a)})});o("settings()",function(){return new s(this.context,this.context)});o("init()",function(){var a=this.context;return a.length?a[0].oInit:null});o("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});o("destroy()",function(a){a=a|| !1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=!0;r(b,"aoDestroyCallback","destroy",[b]);a||(new s(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j)); b.aaSorting=[];b.aaSortingFixed=[];wa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(o=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%o])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c, 1)})});h.each(["column","row","cell"],function(a,b){o(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});o("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.16";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow= {nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null, sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+ "_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"}; X(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null, bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[], aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null, aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength, b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=x={buttons:{},classes:{},build:"bs/jszip-2.5.0/pdfmake-0.1.32/dt-1.10.16/af-2.2.2/b-1.4.2/b-colvis-1.4.2/b-flash-1.4.2/b-html5-1.4.2/b-print-1.4.2/fc-3.2.3/fh-3.1.3/kt-2.3.2/r-2.2.0",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}}, order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd", sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead", sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Kb=m.ext.pager;h.extend(Kb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ha(a, b)]},simple_numbers:function(a,b){return["previous",ha(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ha(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ha(a,b),"last"]},_numbers:ha,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},n,l,m=0,o=function(b,d){var k,s,u,r,v=function(b){Sa(a,b.data.action,true)};k=0;for(s=d.length;k<s;k++){r=d[k];if(h.isArray(r)){u= h("<"+(r.DT_el||"div")+"/>").appendTo(b);o(u,r)}else{n=null;l="";switch(r){case "ellipsis":b.append('<span class="ellipsis">…</span>');break;case "first":n=j.sFirst;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":n=j.sPrevious;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":n=j.sNext;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":n=j.sLast;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:n=r+1;l=e===r?g.sPageButtonActive:""}if(n!==null){u=h("<a>",{"class":g.sPageButton+ " "+l,"aria-controls":a.sTableId,"aria-label":i[r],"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof r==="string"?a.sTableId+"_"+r:null}).html(n).appendTo(b);Va(u,{action:r},v);m++}}}},s;try{s=h(b).find(G.activeElement).data("dt-idx")}catch(u){}o(h(b).empty(),d);s!==k&&h(b).find("[data-dt-idx="+s+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!Zb.test(a))return null;var b=Date.parse(a); return null!==b&&!isNaN(b)||L(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c,!0)?"html-num-fmt"+c:null},function(a){return L(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return L(a)?a:"string"===typeof a?a.replace(Mb," ").replace(Aa,""):""},string:function(a){return L(a)? a:"string"===typeof a?a.replace(Mb," "):a}});var za=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Ob(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||-Infinity},"html-pre":function(a){return L(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return L(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a< b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});cb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b); h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Vb=function(a){return"string"===typeof a?a.replace(/</g,"<").replace(/>/g,">").replace(/"/g, """):a};m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Vb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Vb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Lb,_fnBuildAjax:sa,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub, _fnAjaxDataSrc:ta,_fnAddColumn:Da,_fnColumnOptions:ja,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Fa,_fnApplyColumnDefs:hb,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:Ca,_fnBrowserDetect:fb,_fnAddData:M,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:ib, _fnSplitObjNotation:Ia,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R,_fnGetDataMaster:Ja,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ha,_fnCreateTr:Ga,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:N,_fnReDraw:S,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:ra,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Oa,_fnEscapeRegex:Pa,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga, _fnInitComplete:ua,_fnLengthChange:Qa,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Sa,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:ka,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ea,_fnThrottle:Na,_fnConvertToWidth:Db,_fnGetWidestNode:Eb,_fnGetMaxLenString:Fb,_fnStringToCss:v,_fnSortFlatten:V,_fnSort:lb,_fnSortAria:Hb,_fnSortListener:Ua,_fnSortAttachListener:La,_fnSortingClasses:wa,_fnSortData:Gb,_fnSaveState:xa,_fnLoadState:Ib,_fnSettingsFromNode:ya, _fnLog:J,_fnMap:F,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:r,_fnLengthOverflow:Ra,_fnRenderer:Ma,_fnDataSource:y,_fnRowAttributes:Ka,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable}); /*! DataTables Bootstrap 3 integration ©2011-2015 SpryMedia Ltd - datatables.net/license */ (function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(f.ext.classes, {sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")}; l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="…";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",{"class":t.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#", "aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f}); /*! AutoFill 2.2.2 ©2008-2017 SpryMedia Ltd - datatables.net/license */ (function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return e(l,window,document)}):"object"===typeof exports?module.exports=function(l,i){l||(l=window);if(!i||!i.fn.dataTable)i=require("datatables.net")(l,i).$;return e(i,l,l.document)}:e(jQuery,window,document)})(function(e,l,i,q){var k=e.fn.dataTable,p=0,j=function(c,b){if(!k.versionCheck||!k.versionCheck("1.10.8"))throw"Warning: AutoFill requires DataTables 1.10.8 or greater";this.c=e.extend(!0,{},k.defaults.autoFill, j.defaults,b);this.s={dt:new k.Api(c),namespace:".autoFill"+p++,scroll:{},scrollInterval:null,handle:{height:0,width:0},enabled:!1};this.dom={handle:e('<div class="dt-autofill-handle"/>'),select:{top:e('<div class="dt-autofill-select top"/>'),right:e('<div class="dt-autofill-select right"/>'),bottom:e('<div class="dt-autofill-select bottom"/>'),left:e('<div class="dt-autofill-select left"/>')},background:e('<div class="dt-autofill-background"/>'),list:e('<div class="dt-autofill-list">'+this.s.dt.i18n("autoFill.info", "")+"<ul/></div>"),dtScroll:null,offsetParent:null};this._constructor()};e.extend(j.prototype,{enabled:function(){return this.s.enabled},enable:function(c){var b=this;if(!1===c)return this.disable();this.s.enabled=!0;this._focusListener();this.dom.handle.on("mousedown",function(a){b._mousedown(a);return!1});return this},disable:function(){this.s.enabled=!1;this._focusListenerRemove();return this},_constructor:function(){var c=this,b=this.s.dt,a=e("div.dataTables_scrollBody",this.s.dt.table().container()); b.settings()[0].autoFill=this;a.length&&(this.dom.dtScroll=a,"static"===a.css("position")&&a.css("position","relative"));!1!==this.c.enable&&this.enable();b.on("destroy.autoFill",function(){c._focusListenerRemove()})},_attach:function(c){var b=this.s.dt,a=b.cell(c).index(),d=this.dom.handle,f=this.s.handle;if(!a||-1===b.columns(this.c.columns).indexes().indexOf(a.column))this._detach();else{this.dom.offsetParent||(this.dom.offsetParent=e(b.table().node()).offsetParent());if(!f.height||!f.width)d.appendTo("body"), f.height=d.outerHeight(),f.width=d.outerWidth();b=this._getPosition(c,this.dom.offsetParent);this.dom.attachedTo=c;d.css({top:b.top+c.offsetHeight-f.height,left:b.left+c.offsetWidth-f.width}).appendTo(this.dom.offsetParent)}},_actionSelector:function(c){var b=this,a=this.s.dt,d=j.actions,f=[];e.each(d,function(b,d){d.available(a,c)&&f.push(b)});if(1===f.length&&!1===this.c.alwaysAsk){var h=d[f[0]].execute(a,c);this._update(h,c)}else{var g=this.dom.list.children("ul").empty();f.push("cancel");e.each(f, function(f,h){g.append(e("<li/>").append('<div class="dt-autofill-question">'+d[h].option(a,c)+"<div>").append(e('<div class="dt-autofill-button">').append(e('<button class="'+j.classes.btn+'">'+a.i18n("autoFill.button",">")+"</button>").on("click",function(){var f=d[h].execute(a,c,e(this).closest("li"));b._update(f,c);b.dom.background.remove();b.dom.list.remove()}))))});this.dom.background.appendTo("body");this.dom.list.appendTo("body");this.dom.list.css("margin-top",-1*(this.dom.list.outerHeight()/ 2))}},_detach:function(){this.dom.attachedTo=null;this.dom.handle.detach()},_drawSelection:function(c){var b=this.s.dt,a=this.s.start,d=e(this.dom.start),f=e(c),h={row:b.rows({page:"current"}).nodes().indexOf(f.parent()[0]),column:f.index()},c=b.column.index("toData",h.column);if(b.cell(f).any()&&-1!==b.columns(this.c.columns).indexes().indexOf(c)){this.s.end=h;var g,b=a.row<h.row?d:f;g=a.row<h.row?f:d;c=a.column<h.column?d:f;d=a.column<h.column?f:d;b=this._getPosition(b).top;c=this._getPosition(c).left; a=this._getPosition(g).top+g.outerHeight()-b;d=this._getPosition(d).left+d.outerWidth()-c;f=this.dom.select;f.top.css({top:b,left:c,width:d});f.left.css({top:b,left:c,height:a});f.bottom.css({top:b+a,left:c,width:d});f.right.css({top:b,left:c+d,height:a})}},_editor:function(c){var b=this.s.dt,a=this.c.editor;if(a){for(var d={},f=[],e=a.fields(),g=0,i=c.length;g<i;g++)for(var j=0,l=c[g].length;j<l;j++){var o=c[g][j],k=b.settings()[0].aoColumns[o.index.column],n=k.editField;if(n===q)for(var k=k.mData, m=0,p=e.length;m<p;m++){var r=a.field(e[m]);if(r.dataSrc()===k){n=r.name();break}}if(!n)throw"Could not automatically determine field data. Please see https://datatables.net/tn/11";d[n]||(d[n]={});k=b.row(o.index.row).id();d[n][k]=o.set;f.push(o.index)}a.bubble(f,!1).multiSet(d).submit()}},_emitEvent:function(c,b){this.s.dt.iterator("table",function(a){e(a.nTable).triggerHandler(c+".dt",b)})},_focusListener:function(){var c=this,b=this.s.dt,a=this.s.namespace,d=null!==this.c.focus?this.c.focus:b.init().keys|| b.settings()[0].keytable?"focus":"hover";if("focus"===d)b.on("key-focus.autoFill",function(b,a,d){c._attach(d.node())}).on("key-blur.autoFill",function(){c._detach()});else if("click"===d)e(b.table().body()).on("click"+a,"td, th",function(){c._attach(this)}),e(i.body).on("click"+a,function(a){e(a.target).parents().filter(b.table().body()).length||c._detach()});else e(b.table().body()).on("mouseenter"+a,"td, th",function(){c._attach(this)}).on("mouseleave"+a,function(b){e(b.relatedTarget).hasClass("dt-autofill-handle")|| c._detach()})},_focusListenerRemove:function(){var c=this.s.dt;c.off(".autoFill");e(c.table().body()).off(this.s.namespace);e(i.body).off(this.s.namespace)},_getPosition:function(c,b){var a=e(c),d,f,h=0,g=0;b||(b=e(this.s.dt.table().node()).offsetParent());do{f=a.position();d=a.offsetParent();h+=f.top+d.scrollTop();g+=f.left+d.scrollLeft();if("body"===a.get(0).nodeName.toLowerCase())break;a=d}while(d.get(0)!==b.get(0));return{top:h,left:g}},_mousedown:function(c){var b=this,a=this.s.dt;this.dom.start= this.dom.attachedTo;this.s.start={row:a.rows({page:"current"}).nodes().indexOf(e(this.dom.start).parent()[0]),column:e(this.dom.start).index()};e(i.body).on("mousemove.autoFill",function(a){b._mousemove(a)}).on("mouseup.autoFill",function(a){b._mouseup(a)});var d=this.dom.select,a=e(a.table().node()).offsetParent();d.top.appendTo(a);d.left.appendTo(a);d.right.appendTo(a);d.bottom.appendTo(a);this._drawSelection(this.dom.start,c);this.dom.handle.css("display","none");c=this.dom.dtScroll;this.s.scroll= {windowHeight:e(l).height(),windowWidth:e(l).width(),dtTop:c?c.offset().top:null,dtLeft:c?c.offset().left:null,dtHeight:c?c.outerHeight():null,dtWidth:c?c.outerWidth():null}},_mousemove:function(c){var b=c.target.nodeName.toLowerCase();"td"!==b&&"th"!==b||(this._drawSelection(c.target,c),this._shiftScroll(c))},_mouseup:function(){e(i.body).off(".autoFill");var c=this.s.dt,b=this.dom.select;b.top.remove();b.left.remove();b.right.remove();b.bottom.remove();this.dom.handle.css("display","block");var b= this.s.start,a=this.s.end;if(!(b.row===a.row&&b.column===a.column)){for(var d=this._range(b.row,a.row),b=this._range(b.column,a.column),a=[],f=c.settings()[0],h=f.aoColumns,g=0;g<d.length;g++)a.push(e.map(b,function(a){var a=c.cell(":eq("+d[g]+")",a+":visible",{page:"current"}),b=a.data(),e=a.index(),i=h[e.column].editField;i!==q&&(b=f.oApi._fnGetObjectDataFn(i)(c.row(e.row).data()));return{cell:a,data:b,label:a.data(),index:e}}));this._actionSelector(a);clearInterval(this.s.scrollInterval);this.s.scrollInterval= null}},_range:function(c,b){var a=[],d;if(c<=b)for(d=c;d<=b;d++)a.push(d);else for(d=c;d>=b;d--)a.push(d);return a},_shiftScroll:function(c){var b=this,a=this.s.scroll,d=!1,f=c.pageY-i.body.scrollTop,e=c.pageX-i.body.scrollLeft,g,j,k,l;65>f?g=-5:f>a.windowHeight-65&&(g=5);65>e?j=-5:e>a.windowWidth-65&&(j=5);null!==a.dtTop&&c.pageY<a.dtTop+65?k=-5:null!==a.dtTop&&c.pageY>a.dtTop+a.dtHeight-65&&(k=5);null!==a.dtLeft&&c.pageX<a.dtLeft+65?l=-5:null!==a.dtLeft&&c.pageX>a.dtLeft+a.dtWidth-65&&(l=5);g|| j||k||l?(a.windowVert=g,a.windowHoriz=j,a.dtVert=k,a.dtHoriz=l,d=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null);!this.s.scrollInterval&&d&&(this.s.scrollInterval=setInterval(function(){if(a.windowVert)i.body.scrollTop=i.body.scrollTop+a.windowVert;if(a.windowHoriz)i.body.scrollLeft=i.body.scrollLeft+a.windowHoriz;if(a.dtVert||a.dtHoriz){var c=b.dom.dtScroll[0];if(a.dtVert)c.scrollTop=c.scrollTop+a.dtVert;if(a.dtHoriz)c.scrollLeft=c.scrollLeft+a.dtHoriz}}, 20))},_update:function(c,b){if(!1!==c){var a=this.s.dt,d;this._emitEvent("preAutoFill",[a,b]);this._editor(b);if(null!==this.c.update?this.c.update:!this.c.editor){for(var f=0,e=b.length;f<e;f++)for(var g=0,i=b[f].length;g<i;g++)d=b[f][g],d.cell.data(d.set);a.draw(!1)}this._emitEvent("autoFill",[a,b])}}});j.actions={increment:{available:function(c,b){return e.isNumeric(b[0][0].label)},option:function(c){return c.i18n("autoFill.increment",'Increment / decrement each cell by: <input type="number" value="1">')}, execute:function(c,b,a){for(var c=1*b[0][0].data,a=1*e("input",a).val(),d=0,f=b.length;d<f;d++)for(var h=0,g=b[d].length;h<g;h++)b[d][h].set=c,c+=a}},fill:{available:function(){return!0},option:function(c,b){return c.i18n("autoFill.fill","Fill all cells with <i>"+b[0][0].label+"</i>")},execute:function(c,b){for(var a=b[0][0].data,d=0,e=b.length;d<e;d++)for(var h=0,g=b[d].length;h<g;h++)b[d][h].set=a}},fillHorizontal:{available:function(c,b){return 1<b.length&&1<b[0].length},option:function(c){return c.i18n("autoFill.fillHorizontal", "Fill cells horizontally")},execute:function(c,b){for(var a=0,d=b.length;a<d;a++)for(var e=0,h=b[a].length;e<h;e++)b[a][e].set=b[a][0].data}},fillVertical:{available:function(c,b){return 1<b.length&&1<b[0].length},option:function(c){return c.i18n("autoFill.fillVertical","Fill cells vertically")},execute:function(c,b){for(var a=0,d=b.length;a<d;a++)for(var e=0,h=b[a].length;e<h;e++)b[a][e].set=b[0][e].data}},cancel:{available:function(){return!1},option:function(c){return c.i18n("autoFill.cancel", "Cancel")},execute:function(){return!1}}};j.version="2.2.2";j.defaults={alwaysAsk:!1,focus:null,columns:"",enable:!0,update:null,editor:null};j.classes={btn:"btn"};var m=e.fn.dataTable.Api;m.register("autoFill()",function(){return this});m.register("autoFill().enabled()",function(){var c=this.context[0];return c.autoFill?c.autoFill.enabled():!1});m.register("autoFill().enable()",function(c){return this.iterator("table",function(b){b.autoFill&&b.autoFill.enable(c)})});m.register("autoFill().disable()", function(){return this.iterator("table",function(c){c.autoFill&&c.autoFill.disable()})});e(i).on("preInit.dt.autofill",function(c,b){if("dt"===c.namespace){var a=b.oInit.autoFill,d=k.defaults.autoFill;if(a||d)d=e.extend({},a,d),!1!==a&&new j(b,d)}});k.AutoFill=j;return k.AutoFill=j}); /*! Bootstrap integration for DataTables' AutoFill ©2015 SpryMedia Ltd - datatables.net/license */ (function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-bs")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="btn btn-primary";return a}); /*! Buttons for DataTables 1.4.2 ©2016-2017 SpryMedia Ltd - datatables.net/license */ (function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(n){return d(n,window,document)}):"object"===typeof exports?module.exports=function(n,o){n||(n=window);if(!o||!o.fn.dataTable)o=require("datatables.net")(n,o).$;return d(o,n,n.document)}:d(jQuery,window,document)})(function(d,n,o,l){var i=d.fn.dataTable,w=0,x=0,j=i.ext.buttons,m=function(a,b){"undefined"===typeof b&&(b={});!0===b&&(b={});d.isArray(b)&&(b={buttons:b});this.c=d.extend(!0,{},m.defaults,b); b.buttons&&(this.c.buttons=b.buttons);this.s={dt:new i.Api(a),buttons:[],listenKeys:"",namespace:"dtb"+w++};this.dom={container:d("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};d.extend(m.prototype,{action:function(a,b){var c=this._nodeToButton(a);if(b===l)return c.conf.action;c.conf.action=b;return this},active:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.button.active,c=d(c.node);if(b===l)return c.hasClass(e);c.toggleClass(e,b===l?!0: b);return this},add:function(a,b){var c=this.s.buttons;if("string"===typeof b){for(var e=b.split("-"),c=this.s,d=0,h=e.length-1;d<h;d++)c=c.buttons[1*e[d]];c=c.buttons;b=1*e[e.length-1]}this._expandButton(c,a,!1,b);this._draw();return this},container:function(){return this.dom.container},disable:function(a){a=this._nodeToButton(a);d(a.node).addClass(this.c.dom.button.disabled);return this},destroy:function(){d("body").off("keyup."+this.s.namespace);var a=this.s.buttons.slice(),b,c;b=0;for(c=a.length;b< c;b++)this.remove(a[b].node);this.dom.container.remove();a=this.s.dt.settings()[0];b=0;for(c=a.length;b<c;b++)if(a.inst===this){a.splice(b,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);var c=this._nodeToButton(a);d(c.node).removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){a=this._nodeToButton(a);return d(a.node)},processing:function(a,b){var c=this._nodeToButton(a);if(b===l)return d(c.node).hasClass("processing"); d(c.node).toggleClass("processing",b);return this},remove:function(a){var b=this._nodeToButton(a),c=this._nodeToHost(a),e=this.s.dt;if(b.buttons.length)for(var g=b.buttons.length-1;0<=g;g--)this.remove(b.buttons[g].node);b.conf.destroy&&b.conf.destroy.call(e.button(a),e,d(a),b.conf);this._removeKey(b.conf);d(b.node).remove();a=d.inArray(b,c);c.splice(a,1);return this},text:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.collection.buttonLiner,e=c.inCollection&&e&&e.tag?e.tag:this.c.dom.buttonLiner.tag, g=this.s.dt,h=d(c.node),f=function(a){return"function"===typeof a?a(g,h,c.conf):a};if(b===l)return f(c.conf.text);c.conf.text=b;e?h.children(e).html(f(b)):h.html(f(b));return this},_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0],e=this.c.buttons;c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});for(var c=0,g=e.length;c<g;c++)this.add(e[c]);b.on("destroy",function(){a.destroy()});d("body").on("keyup."+this.s.namespace,function(b){if(!o.activeElement||o.activeElement=== o.body){var c=String.fromCharCode(b.keyCode).toLowerCase();a.s.listenKeys.toLowerCase().indexOf(c)!==-1&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=d.isPlainObject(a.key)?a.key.key:a.key)},_draw:function(a,b){a||(a=this.dom.container,b=this.s.buttons);a.children().detach();for(var c=0,e=b.length;c<e;c++)a.append(b[c].inserter),a.append(" "),b[c].buttons&&b[c].buttons.length&&this._draw(b[c].collection,b[c].buttons)},_expandButton:function(a,b,c,e){for(var g=this.s.dt,h=0, b=!d.isArray(b)?[b]:b,f=0,r=b.length;f<r;f++){var k=this._resolveExtends(b[f]);if(k)if(d.isArray(k))this._expandButton(a,k,c,e);else{var p=this._buildButton(k,c);if(p){e!==l?(a.splice(e,0,p),e++):a.push(p);if(p.conf.buttons){var t=this.c.dom.collection;p.collection=d("<"+t.tag+"/>").addClass(t.className).attr("role","menu");p.conf._collection=p.collection;this._expandButton(p.buttons,p.conf.buttons,!0,e)}k.init&&k.init.call(g.button(p.node),g,d(p.node),k);h++}}}},_buildButton:function(a,b){var c= this.c.dom.button,e=this.c.dom.buttonLiner,g=this.c.dom.collection,h=this.s.dt,f=function(b){return"function"===typeof b?b(h,k,a):b};b&&g.button&&(c=g.button);b&&g.buttonLiner&&(e=g.buttonLiner);if(a.available&&!a.available(h,a))return!1;var r=function(a,b,c,e){e.action.call(b.button(c),a,b,c,e);d(b.table().node()).triggerHandler("buttons-action.dt",[b.button(c),b,c,e])},k=d("<"+c.tag+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb", function(b){b.preventDefault();!k.hasClass(c.disabled)&&a.action&&r(b,h,k,a);k.blur()}).on("keyup.dtb",function(b){b.keyCode===13&&!k.hasClass(c.disabled)&&a.action&&r(b,h,k,a)});"a"===c.tag.toLowerCase()&&k.attr("href","#");e.tag?(g=d("<"+e.tag+"/>").html(f(a.text)).addClass(e.className),"a"===e.tag.toLowerCase()&&g.attr("href","#"),k.append(g)):k.html(f(a.text));!1===a.enabled&&k.addClass(c.disabled);a.className&&k.addClass(a.className);a.titleAttr&&k.attr("title",f(a.titleAttr));a.namespace||(a.namespace= ".dt-button-"+x++);e=(e=this.c.dom.buttonContainer)&&e.tag?d("<"+e.tag+"/>").addClass(e.className).append(k):k;this._addKey(a);return{conf:a,node:k.get(0),inserter:e,buttons:[],inCollection:b,collection:null}},_nodeToButton:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b[c];if(b[c].buttons.length){var d=this._nodeToButton(a,b[c].buttons);if(d)return d}}},_nodeToHost:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b; if(b[c].buttons.length){var d=this._nodeToHost(a,b[c].buttons);if(d)return d}}},_keypress:function(a,b){var c=function(e){for(var g=0,h=e.length;g<h;g++){var f=e[g].conf,r=e[g].node;if(f.key)if(f.key===a)d(r).click();else if(d.isPlainObject(f.key)&&f.key.key===a&&(!f.key.shiftKey||b.shiftKey))if(!f.key.altKey||b.altKey)if(!f.key.ctrlKey||b.ctrlKey)(!f.key.metaKey||b.metaKey)&&d(r).click();e[g].buttons.length&&c(e[g].buttons)}};c(this.s.buttons)},_removeKey:function(a){if(a.key){var b=d.isPlainObject(a.key)? a.key.key:a.key,a=this.s.listenKeys.split(""),b=d.inArray(b,a);a.splice(b,1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){for(var b=this.s.dt,c,e,g=function(c){for(var e=0;!d.isPlainObject(c)&&!d.isArray(c);){if(c===l)return;if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!j[c])throw"Unknown button type: "+c;c=j[c]}e++;if(30<e)throw"Buttons: Too many iterations";}return d.isArray(c)?c:d.extend({},c)},a=g(a);a&&a.extend;){if(!j[a.extend])throw"Cannot extend unknown button type: "+ a.extend;var h=g(j[a.extend]);if(d.isArray(h))return h;if(!h)return!1;c=h.className;a=d.extend({},h,a);c&&a.className!==c&&(a.className=c+" "+a.className);var f=a.postfixButtons;if(f){a.buttons||(a.buttons=[]);c=0;for(e=f.length;c<e;c++)a.buttons.push(f[c]);a.postfixButtons=null}if(f=a.prefixButtons){a.buttons||(a.buttons=[]);c=0;for(e=f.length;c<e;c++)a.buttons.splice(c,0,f[c]);a.prefixButtons=null}a.extend=h.extend}return a}});m.background=function(a,b,c){c===l&&(c=400);a?d("<div/>").addClass(b).css("display", "none").appendTo("body").fadeIn(c):d("body > div."+b).fadeOut(c,function(){d(this).removeClass(b).remove()})};m.instanceSelector=function(a,b){if(!a)return d.map(b,function(a){return a.inst});var c=[],e=d.map(b,function(a){return a.name}),g=function(a){if(d.isArray(a))for(var f=0,r=a.length;f<r;f++)g(a[f]);else"string"===typeof a?-1!==a.indexOf(",")?g(a.split(",")):(a=d.inArray(d.trim(a),e),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};g(a);return c};m.buttonSelector=function(a, b){for(var c=[],e=function(a,b,c){for(var d,g,f=0,h=b.length;f<h;f++)if(d=b[f])g=c!==l?c+f:f+"",a.push({node:d.node,name:d.conf.name,idx:g}),d.buttons&&e(a,d.buttons,g+"-")},g=function(a,b){var f,h,i=[];e(i,b.s.buttons);f=d.map(i,function(a){return a.node});if(d.isArray(a)||a instanceof d){f=0;for(h=a.length;f<h;f++)g(a[f],b)}else if(null===a||a===l||"*"===a){f=0;for(h=i.length;f<h;f++)c.push({inst:b,node:i[f].node})}else if("number"===typeof a)c.push({inst:b,node:b.s.buttons[a].node});else if("string"=== typeof a)if(-1!==a.indexOf(",")){i=a.split(",");f=0;for(h=i.length;f<h;f++)g(d.trim(i[f]),b)}else if(a.match(/^\d+(\-\d+)*$/))f=d.map(i,function(a){return a.idx}),c.push({inst:b,node:i[d.inArray(a,f)].node});else if(-1!==a.indexOf(":name")){var j=a.replace(":name","");f=0;for(h=i.length;f<h;f++)i[f].name===j&&c.push({inst:b,node:i[f].node})}else d(f).filter(a).each(function(){c.push({inst:b,node:this})});else"object"===typeof a&&a.nodeName&&(i=d.inArray(a,f),-1!==i&&c.push({inst:b,node:f[i]}))},h= 0,f=a.length;h<f;h++)g(b,a[h]);return c};m.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:"dt-button-collection"},button:{tag:"a",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};m.version="1.4.2";d.extend(j,{collection:{text:function(a){return a.i18n("buttons.collection","Collection")},className:"buttons-collection",action:function(a,b, c,e){var a=c.offset(),g=d(b.table().container()),h=!1;d("div.dt-button-background").length&&(h=d(".dt-button-collection").offset(),d("body").trigger("click.dtb-collection"));e._collection.addClass(e.collectionLayout).css("display","none").appendTo("body").fadeIn(e.fade);var f=e._collection.css("position");h&&"absolute"===f?e._collection.css({top:h.top,left:h.left}):"absolute"===f?(e._collection.css({top:a.top+c.outerHeight(),left:a.left}),h=g.offset().top+g.height(),c=a.top+c.outerHeight()+e._collection.outerHeight()- h,h=a.top-e._collection.outerHeight(),h=g.offset().top-h,c>h&&e._collection.css("top",a.top-e._collection.outerHeight()-5),c=a.left+e._collection.outerWidth(),g=g.offset().left+g.width(),c>g&&e._collection.css("left",a.left-(c-g))):(a=e._collection.height()/2,a>d(n).height()/2&&(a=d(n).height()/2),e._collection.css("marginTop",-1*a));e.background&&m.background(!0,e.backgroundClassName,e.fade);setTimeout(function(){d("div.dt-button-background").on("click.dtb-collection",function(){});d("body").on("click.dtb-collection", function(a){var c=d.fn.addBack?"addBack":"andSelf";if(!d(a.target).parents()[c]().filter(e._collection).length){e._collection.fadeOut(e.fade,function(){e._collection.detach()});d("div.dt-button-background").off("click.dtb-collection");m.background(false,e.backgroundClassName,e.fade);d("body").off("click.dtb-collection");b.off("buttons-action.b-internal")}})},10);if(e.autoClose)b.on("buttons-action.b-internal",function(){d("div.dt-button-background").click()})},background:!0,collectionLayout:"",backgroundClassName:"dt-button-background", autoClose:!1,fade:400},copy:function(a,b){if(j.copyHtml5)return"copyHtml5";if(j.copyFlash&&j.copyFlash.available(a,b))return"copyFlash"},csv:function(a,b){if(j.csvHtml5&&j.csvHtml5.available(a,b))return"csvHtml5";if(j.csvFlash&&j.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(j.excelHtml5&&j.excelHtml5.available(a,b))return"excelHtml5";if(j.excelFlash&&j.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,b){if(j.pdfHtml5&&j.pdfHtml5.available(a,b))return"pdfHtml5";if(j.pdfFlash&& j.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){var a=a.settings()[0].aLengthMenu,b=d.isArray(a[0])?a[0]:a,c=d.isArray(a[0])?a[1]:a,e=function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())};return{extend:"collection",text:e,className:"buttons-page-length",autoClose:!0,buttons:d.map(b,function(a,b){return{text:c[b],className:"button-page-length",action:function(b,c){c.page.len(a).draw()},init:function(b,c,d){var e=this,c=function(){e.active(b.page.len()=== a)};b.on("length.dt"+d.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),init:function(a,b,c){var d=this;a.on("length.dt"+c.namespace,function(){d.text(e(a))})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});i.Api.register("buttons()",function(a,b){b===l&&(b=a,a=l);this.selector.buttonGroup=a;var c=this.iterator(!0,"table",function(c){if(c._buttons)return m.buttonSelector(m.instanceSelector(a,c._buttons),b)},!0);c._groupSelector=a;return c});i.Api.register("button()", function(a,b){var c=this.buttons(a,b);1<c.length&&c.splice(1,c.length);return c});i.Api.registerPlural("buttons().active()","button().active()",function(a){return a===l?this.map(function(a){return a.inst.active(a.node)}):this.each(function(b){b.inst.active(b.node,a)})});i.Api.registerPlural("buttons().action()","button().action()",function(a){return a===l?this.map(function(a){return a.inst.action(a.node)}):this.each(function(b){b.inst.action(b.node,a)})});i.Api.register(["buttons().enable()","button().enable()"], function(a){return this.each(function(b){b.inst.enable(b.node,a)})});i.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(a){a.inst.disable(a.node)})});i.Api.registerPlural("buttons().nodes()","button().node()",function(){var a=d();d(this.each(function(b){a=a.add(b.inst.node(b.node))}));return a});i.Api.registerPlural("buttons().processing()","button().processing()",function(a){return a===l?this.map(function(a){return a.inst.processing(a.node)}):this.each(function(b){b.inst.processing(b.node, a)})});i.Api.registerPlural("buttons().text()","button().text()",function(a){return a===l?this.map(function(a){return a.inst.text(a.node)}):this.each(function(b){b.inst.text(b.node,a)})});i.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(a){a.inst.node(a.node).trigger("click")})});i.Api.registerPlural("buttons().containers()","buttons().container()",function(){var a=d(),b=this._groupSelector;this.iterator(!0,"table",function(c){if(c._buttons)for(var c= m.instanceSelector(b,c._buttons),d=0,g=c.length;d<g;d++)a=a.add(c[d].container())});return a});i.Api.register("button().add()",function(a,b){var c=this.context;c.length&&(c=m.instanceSelector(this._groupSelector,c[0]._buttons),c.length&&c[0].add(b,a));return this.button(this._groupSelector,a)});i.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()});return this});i.Api.registerPlural("buttons().remove()","buttons().remove()",function(){this.each(function(a){a.inst.remove(a.node)}); return this});var q;i.Api.register("buttons.info()",function(a,b,c){var e=this;if(!1===a)return d("#datatables_buttons_info").fadeOut(function(){d(this).remove()}),clearTimeout(q),q=null,this;q&&clearTimeout(q);d("#datatables_buttons_info").length&&d("#datatables_buttons_info").remove();d('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a?"<h2>"+a+"</h2>":"").append(d("<div/>")["string"===typeof b?"html":"append"](b)).css("display","none").appendTo("body").fadeIn();c!==l&&0!==c&& (q=setTimeout(function(){e.buttons.info(!1)},c));return this});i.Api.register("buttons.exportData()",function(a){if(this.context.length){for(var b=new i.Api(this.context[0]),c=d.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return e(a)},footer:function(a){return e(a)},body:function(a){return e(a)}}},a),e=function(a){if("string"!==typeof a)return a;a=a.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "");c.stripHtml&&(a=a.replace(/<[^>]*>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(u.innerHTML=a,a=u.value);return a},a=b.columns(c.columns).indexes().map(function(a){var d=b.column(a).header();return c.format.header(d.innerHTML,a,d)}).toArray(),g=b.table().footer()?b.columns(c.columns).indexes().map(function(a){var d=b.column(a).footer();return c.format.footer(d?d.innerHTML:"",a,d)}).toArray():null,h=b.rows(c.rows,c.modifier).indexes().toArray(), f=b.cells(h,c.columns),h=f.render(c.orthogonal).toArray(),f=f.nodes().toArray(),j=a.length,k=0<j?h.length/j:0,l=Array(k),m=0,n=0;n<k;n++){for(var o=Array(j),q=0;q<j;q++)o[q]=c.format.body(h[m],n,q,f[m]),m++;l[n]=o}return{header:a,footer:g,body:l}}});i.Api.register("buttons.exportInfo()",function(a){a||(a={});var b;var c=a;b="*"===c.filename&&"*"!==c.title&&c.title!==l?c.title:c.filename;"function"===typeof b&&(b=b());b===l||null===b?b=null:(-1!==b.indexOf("*")&&(b=d.trim(b.replace("*",d("title").text()))), b=b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""),(c=s(c.extension))||(c=""),b+=c);c=s(a.title);c=null===c?null:-1!==c.indexOf("*")?c.replace("*",d("title").text()||"Exported data"):c;return{filename:b,title:c,messageTop:v(this,a.messageTop||a.message,"top"),messageBottom:v(this,a.messageBottom,"bottom")}});var s=function(a){return null===a||a===l?null:"function"===typeof a?a():a},v=function(a,b,c){b=s(b);if(null===b)return null;a=d("caption",a.table().container()).eq(0);return"*"===b?a.css("caption-side")!== c?null:a.length?a.text():"":b},u=d("<textarea/>")[0];d.fn.dataTable.Buttons=m;d.fn.DataTable.Buttons=m;d(o).on("init.dt plugin-init.dt",function(a,b){if("dt"===a.namespace){var c=b.oInit.buttons||i.defaults.buttons;c&&!b._buttons&&(new m(b,c)).container()}});i.ext.feature.push({fnInit:function(a){var a=new i.Api(a),b=a.init().buttons||i.defaults.buttons;return(new m(a,b)).container()},cFeature:"B"});return m}); /*! Bootstrap integration for DataTables' Buttons ©2016 SpryMedia Ltd - datatables.net/license */ (function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"}, button:{className:"btn btn-default"},collection:{tag:"ul",className:"dt-button-collection dropdown-menu",button:{tag:"li",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"a",className:""}}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection <span class="caret"/>')};return a.Buttons}); (function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(d){return g(d,window,document)}):"object"===typeof exports?module.exports=function(d,e){d||(d=window);if(!e||!e.fn.dataTable)e=require("datatables.net")(d,e).$;e.fn.dataTable.Buttons||require("datatables.net-buttons")(d,e);return g(e,d,d.document)}:g(jQuery,window,document)})(function(g,d,e,h){d=g.fn.dataTable;g.extend(d.ext.buttons,{colvis:function(b,a){return{extend:"collection", text:function(a){return a.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",buttons:[{extend:"columnsToggle",columns:a.columns,columnText:a.columnText}]}},columnsToggle:function(b,a){return b.columns(a.columns).indexes().map(function(b){return{extend:"columnToggle",columns:b,columnText:a.columnText}}).toArray()},columnToggle:function(b,a){return{extend:"columnVisibility",columns:a.columns,columnText:a.columnText}},columnsVisibility:function(b,a){return b.columns(a.columns).indexes().map(function(b){return{extend:"columnVisibility", columns:b,visibility:a.visibility,columnText:a.columnText}}).toArray()},columnVisibility:{columns:h,text:function(b,a,c){return c._columnText(b,c)},className:"buttons-columnVisibility",action:function(b,a,c,f){b=a.columns(f.columns);a=b.visible();b.visible(f.visibility!==h?f.visibility:!(a.length&&a[0]))},init:function(b,a,c){var f=this;b.on("column-visibility.dt"+c.namespace,function(a,d){!d.bDestroying&&d.nTable==b.settings()[0].nTable&&f.active(b.column(c.columns).visible())}).on("column-reorder.dt"+ c.namespace,function(a,d,e){1===b.columns(c.columns).count()&&("number"===typeof c.columns&&(c.columns=e.mapping[c.columns]),a=b.column(c.columns),f.text(c._columnText(b,c)),f.active(a.visible()))});this.active(b.column(c.columns).visible())},destroy:function(b,a,c){b.off("column-visibility.dt"+c.namespace).off("column-reorder.dt"+c.namespace)},_columnText:function(b,a){var c=b.column(a.columns).index(),f=b.settings()[0].aoColumns[c].sTitle.replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<.*?>/g, "").replace(/^\s+|\s+$/g,"");return a.columnText?a.columnText(b,c,f):f}},colvisRestore:{className:"buttons-colvisRestore",text:function(b){return b.i18n("buttons.colvisRestore","Restore visibility")},init:function(b,a,c){c._visOriginal=b.columns().indexes().map(function(a){return b.column(a).visible()}).toArray()},action:function(b,a,c,d){a.columns().every(function(b){b=a.colReorder&&a.colReorder.transpose?a.colReorder.transpose(b,"toOriginal"):b;this.visible(d._visOriginal[b])})}},colvisGroup:{className:"buttons-colvisGroup", action:function(b,a,c,d){a.columns(d.show).visible(!0,!1);a.columns(d.hide).visible(!1,!1);a.columns.adjust()},show:[],hide:[]}});return d.Buttons}); (function(h){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(j){return h(j,window,document)}):"object"===typeof exports?module.exports=function(j,l){j||(j=window);if(!l||!l.fn.dataTable)l=require("datatables.net")(j,l).$;l.fn.dataTable.Buttons||require("datatables.net-buttons")(j,l);return h(l,j,j.document)}:h(jQuery,window,document)})(function(h,j,l,p){function v(a){for(var b="";0<=a;)b=String.fromCharCode(a%26+65)+b,a=Math.floor(a/26)- 1;return b}function o(a,b,d){var c=a.createElement(b);d&&(d.attr&&h(c).attr(d.attr),d.children&&h.each(d.children,function(a,b){c.appendChild(b)}),null!==d.text&&d.text!==p&&c.appendChild(a.createTextNode(d.text)));return c}function B(a,b){var d=a.header[b].length,c;a.footer&&a.footer[b].length>d&&(d=a.footer[b].length);for(var e=0,f=a.body.length;e<f;e++)if(c=a.body[e][b],c=null!==c&&c!==p?c.toString():"",-1!==c.indexOf("\n")?(c=c.split("\n"),c.sort(function(a,b){return b.length-a.length}),c=c[0].length): c=c.length,c>d&&(d=c),40<d)return 52;d*=1.3;return 6<d?d:6}function w(a){q===p&&(q=-1===u.serializeToString(h.parseXML(m["xl/worksheets/sheet1.xml"])).indexOf("xmlns:r"));h.each(a,function(b,d){if(h.isPlainObject(d))w(d);else{if(q){var c=d.childNodes[0],e,f,i=[];for(e=c.attributes.length-1;0<=e;e--){f=c.attributes[e].nodeName;var k=c.attributes[e].nodeValue;-1!==f.indexOf(":")&&(i.push({name:f,value:k}),c.removeAttribute(f))}e=0;for(f=i.length;e<f;e++)k=d.createAttribute(i[e].name.replace(":","_dt_b_namespace_token_")), k.value=i[e].value,c.setAttributeNode(k)}c=u.serializeToString(d);q&&(-1===c.indexOf("<?xml")&&(c='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+c),c=c.replace(/_dt_b_namespace_token_/g,":"));c=c.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");a[b]=c}})}var g=h.fn.dataTable,i={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,$:function(a){"string"==typeof a&&(a=l.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display= ""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,b,d){(a=this.clients[a])&&a.receiveEvent(b,d)},log:function(a){console.log("Flash: "+a)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b= {left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},Client:function(a){this.handlers={};this.id=i.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+this.id;i.register(this.id,this);a&&this.glue(a)}};i.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"", action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,sheetName:"",glue:function(a,b){this.domElement=i.$(a);var d=99;this.domElement.style.zIndex&&(d=parseInt(this.domElement.style.zIndex,10)+1);var c=i.getDOMObjectPosition(this.domElement);this.div=l.createElement("div");var e=this.div.style;e.position="absolute";e.left="0px";e.top="0px";e.width=c.width+"px";e.height=c.height+"px";e.zIndex=d;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==c.width&&0!==c.height&&(this.sized= !0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(c.width,c.height).replace(/&/g,"&"))},positionElement:function(){var a=i.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=a.height)},getHTML:function(a,b){var d="",c="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var e= location.href.match(/^https/i)?"https://":"http://",d=d+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+e+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+i.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+ c+'"/><param name="wmode" value="transparent"/></object>');else d+='<embed id="'+this.movieId+'" src="'+i.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+c+'" wmode="transparent" />';return d},hide:function(){this.div&&(this.div.style.left="-2000px")}, show:function(){this.reposition()},destroy:function(){var a=this;this.domElement&&this.div&&(h(this.div).remove(),this.div=this.domElement=null,h.each(i.clients,function(b,d){d===a&&delete i.clients[b]}))},reposition:function(a){a&&((this.domElement=i.$(a))||this.hide());if(this.domElement&&this.div){var a=i.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+"px";b.top=""+a.top+"px"}},clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+= a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setSheetData:function(a){this.ready&&this.movie.setSheetData(JSON.stringify(a))},setAction:function(a){this.action=a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled= a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var d,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=l.getElementById(this.movieId);if(!this.movie){d=this;setTimeout(function(){d.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){d=this;setTimeout(function(){d.receiveEvent("load",null)},100);this.ready=!0;return}this.ready= !0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&& this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var c=0,e=this.handlers[a].length;c<e;c++){var f=this.handlers[a][c];if("function"==typeof f)f(this,b);else if("object"==typeof f&&2==f.length)f[0][f[1]](this,b);else if("string"==typeof f)j[f](this,b)}}};i.hasFlash=function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&& navigator.mimeTypes["application/x-shockwave-flash"]!==p&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1};j.ZeroClipboard_TableTools=i;var x=function(a,b){b.attr("id");b.parents("html").length?a.glue(b[0],""):setTimeout(function(){x(a,b)},500)},C=function(a){var b="Sheet1";a.sheetName&&(b=a.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""));return b},s=function(a,b){var d=b.match(/[\s\S]{1,8192}/g)||[];a.clearText();for(var c=0,e=d.length;c<e;c++)a.appendText(d[c])}, y=function(a){return a.newline?a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},z=function(a,b){for(var d=y(b),c=a.buttons.exportData(b.exportOptions),e=b.fieldBoundary,f=b.fieldSeparator,h=RegExp(e,"g"),i=b.escapeChar!==p?b.escapeChar:"\\",j=function(a){for(var b="",c=0,d=a.length;c<d;c++)0<c&&(b+=f),b+=e?e+(""+a[c]).replace(h,i+e)+e:a[c];return b},l=b.header?j(c.header)+d:"",o=b.footer&&c.footer?d+j(c.footer):"",n=[],g=0,m=c.body.length;g<m;g++)n.push(j(c.body[g]));return{str:l+n.join(d)+ o,rows:n.length}},t={available:function(){return i.hasFlash()},init:function(a,b,d){i.moviePath=g.Buttons.swfPath;var c=new i.Client;c.setHandCursor(!0);c.addEventListener("mouseDown",function(){d._fromFlash=!0;a.button(b[0]).trigger();d._fromFlash=!1});x(c,b);d._flash=c},destroy:function(a,b,d){d._flash.destroy()},fieldSeparator:",",fieldBoundary:'"',exportOptions:{},title:"*",messageTop:"*",messageBottom:"*",filename:"*",extension:".csv",header:!0,footer:!1},u="",u="undefined"===typeof j.XMLSerializer? new function(){this.serializeToString=function(a){return a.xml}}:new XMLSerializer,q,m={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>', "[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>', "xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="" sheetId="1" r:id="rId1"/></sheets></workbook>', "xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="#,##0.00_- [$$-45C]"/><numFmt numFmtId="165" formatCode=""£"#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill/><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="61"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'}, A=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(a){return a/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(a){return a/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\([\d,]+\)$/,style:61,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^[\d,]+$/,style:63},{match:/^[\d,]+\.\d{2}$/,style:64}];g.Buttons.swfPath="//cdn.datatables.net/buttons/"+ g.Buttons.version+"/swf/flashExport.swf";g.Api.register("buttons.resize()",function(){h.each(i.clients,function(a,b){b.domElement!==p&&b.domElement.parentNode&&b.positionElement()})});g.ext.buttons.copyFlash=h.extend({},t,{className:"buttons-copy buttons-flash",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,d,c){if(c._fromFlash){this.processing(!0);var a=c._flash,e=z(b,c),d=b.buttons.exportInfo(c),f=y(c),e=e.str;d.title&&(e=d.title+f+f+e);d.messageTop&&(e=d.messageTop+ f+f+e);d.messageBottom&&(e=e+f+f+d.messageBottom);c.customize&&(e=c.customize(e,c));a.setAction("copy");s(a,e);this.processing(!1);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{_:"Copied %d rows to clipboard",1:"Copied 1 row to clipboard"},data.rows),3E3)}},fieldSeparator:"\t",fieldBoundary:""});g.ext.buttons.csvFlash=h.extend({},t,{className:"buttons-csv buttons-flash",text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,d,c){a=c._flash; b=z(b,c);b=c.customize?c.customize(b.str,c):b.str;a.setAction("csv");a.setFileName(_filename(c));s(a,b)},escapeChar:'"'});g.ext.buttons.excelFlash=h.extend({},t,{className:"buttons-excel buttons-flash",text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,d,c){this.processing(!0);var a=c._flash,e=0,f=h.parseXML(m["xl/worksheets/sheet1.xml"]),i=f.getElementsByTagName("sheetData")[0],d={_rels:{".rels":h.parseXML(m["_rels/.rels"])},xl:{_rels:{"workbook.xml.rels":h.parseXML(m["xl/_rels/workbook.xml.rels"])}, "workbook.xml":h.parseXML(m["xl/workbook.xml"]),"styles.xml":h.parseXML(m["xl/styles.xml"]),worksheets:{"sheet1.xml":f}},"[Content_Types].xml":h.parseXML(m["[Content_Types].xml"])},k=b.buttons.exportData(c.exportOptions),j,l,g=function(a){j=e+1;l=o(f,"row",{attr:{r:j}});for(var b=0,c=a.length;b<c;b++){var d=v(b)+""+j,g=null;if(!(null===a[b]||a[b]===p||""===a[b])){a[b]=h.trim(a[b]);for(var k=0,n=A.length;k<n;k++){var m=A[k];if(a[b].match&&!a[b].match(/^0\d+/)&&a[b].match(m.match)){g=a[b].replace(/[^\d\.\-]/g, "");m.fmt&&(g=m.fmt(g));g=o(f,"c",{attr:{r:d,s:m.style},children:[o(f,"v",{text:g})]});break}}g||("number"===typeof a[b]||a[b].match&&a[b].match(/^-?\d+(\.\d+)?$/)&&!a[b].match(/^0\d+/)?g=o(f,"c",{attr:{t:"n",r:d},children:[o(f,"v",{text:a[b]})]}):(m=!a[b].replace?a[b]:a[b].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""),g=o(f,"c",{attr:{t:"inlineStr",r:d},children:{row:o(f,"is",{children:{row:o(f,"t",{text:m})}})}})));l.appendChild(g)}}i.appendChild(l);e++};h("sheets sheet",d.xl["workbook.xml"]).attr("name", C(c));c.customizeData&&c.customizeData(k);var n=function(a,b){var c=h("mergeCells",f);c[0].appendChild(o(f,"mergeCell",{attr:{ref:"A"+a+":"+v(b)+a}}));c.attr("count",c.attr("count")+1);h("row:eq("+(a-1)+") c",f).attr("s","51")},b=b.buttons.exportInfo(c);b.title&&(g([b.title],e),n(e,k.header.length-1));b.messageTop&&(g([b.messageTop],e),n(e,k.header.length-1));c.header&&(g(k.header,e),h("row:last c",f).attr("s","2"));for(var r=0,q=k.body.length;r<q;r++)g(k.body[r],e);c.footer&&k.footer&&(g(k.footer, e),h("row:last c",f).attr("s","2"));b.messageBottom&&(g([b.messageBottom],e),n(e,k.header.length-1));g=o(f,"cols");h("worksheet",f).prepend(g);n=0;for(r=k.header.length;n<r;n++)g.appendChild(o(f,"col",{attr:{min:n+1,max:n+1,width:B(k,n),customWidth:1}}));c.customize&&c.customize(d);w(d);a.setAction("excel");a.setFileName(b.filename);a.setSheetData(d);s(a,"");this.processing(!1)},extension:".xlsx"});g.ext.buttons.pdfFlash=h.extend({},t,{className:"buttons-pdf buttons-flash",text:function(a){return a.i18n("buttons.pdf", "PDF")},action:function(a,b,d,c){this.processing(!0);var a=c._flash,d=b.buttons.exportData(c.exportOptions),e=b.buttons.exportInfo(c),f=b.table().node().offsetWidth,g=b.columns(c.columns).indexes().map(function(a){return b.column(a).header().offsetWidth/f});a.setAction("pdf");a.setFileName(e.filename);s(a,JSON.stringify({title:e.title||"",messageTop:e.messageTop||"",messageBottom:e.messageBottom||"",colWidth:g.toArray(),orientation:c.orientation,size:c.pageSize,header:c.header?d.header:null,footer:c.footer? d.footer:null,body:d.body}));this.processing(!1)},extension:".pdf",orientation:"portrait",pageSize:"A4",newline:"\n"});return g.Buttons}); (function(j){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(k){return j(k,window,document)}):"object"===typeof exports?module.exports=function(k,l,t,s){k||(k=window);if(!l||!l.fn.dataTable)l=require("datatables.net")(k,l).$;l.fn.dataTable.Buttons||require("datatables.net-buttons")(k,l);return j(l,k,k.document,t,s)}:j(jQuery,window,document)})(function(j,k,l,t,s,q){function x(a){for(var c="";0<=a;)c=String.fromCharCode(a%26+65)+c,a=Math.floor(a/ 26)-1;return c}function y(a,c){u===q&&(u=-1===w.serializeToString(j.parseXML(z["xl/worksheets/sheet1.xml"])).indexOf("xmlns:r"));j.each(c,function(c,b){if(j.isPlainObject(b)){var e=a.folder(c);y(e,b)}else{if(u){var e=b.childNodes[0],f,g,n=[];for(f=e.attributes.length-1;0<=f;f--){g=e.attributes[f].nodeName;var h=e.attributes[f].nodeValue;-1!==g.indexOf(":")&&(n.push({name:g,value:h}),e.removeAttribute(g))}f=0;for(g=n.length;f<g;f++)h=b.createAttribute(n[f].name.replace(":","_dt_b_namespace_token_")), h.value=n[f].value,e.setAttributeNode(h)}e=w.serializeToString(b);u&&(-1===e.indexOf("<?xml")&&(e='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+e),e=e.replace(/_dt_b_namespace_token_/g,":"));e=e.replace(/<([^<>]*?) xmlns=""([^<>]*?)>/g,"<$1 $2>");a.file(c,e)}})}function p(a,c,d){var b=a.createElement(c);d&&(d.attr&&j(b).attr(d.attr),d.children&&j.each(d.children,function(a,c){b.appendChild(c)}),null!==d.text&&d.text!==q&&b.appendChild(a.createTextNode(d.text)));return b}function J(a,c){var d= a.header[c].length,b;a.footer&&a.footer[c].length>d&&(d=a.footer[c].length);for(var e=0,f=a.body.length;e<f;e++)if(b=a.body[e][c],b=null!==b&&b!==q?b.toString():"",-1!==b.indexOf("\n")?(b=b.split("\n"),b.sort(function(a,b){return b.length-a.length}),b=b[0].length):b=b.length,b>d&&(d=b),40<d)return 52;d*=1.3;return 6<d?d:6}var m=j.fn.dataTable,r;var h="undefined"!==typeof self&&self||"undefined"!==typeof k&&k||this.content;if("undefined"===typeof h||"undefined"!==typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))r= void 0;else{var v=h.document.createElementNS("http://www.w3.org/1999/xhtml","a"),K="download"in v,L=/constructor/i.test(h.HTMLElement)||h.safari,A=/CriOS\/[\d]+/.test(navigator.userAgent),M=function(a){(h.setImmediate||h.setTimeout)(function(){throw a;},0)},B=function(a){setTimeout(function(){"string"===typeof a?(h.URL||h.webkitURL||h).revokeObjectURL(a):a.remove()},4E4)},C=function(a){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob([String.fromCharCode(65279), a],{type:a.type}):a},E=function(a,c,d){d||(a=C(a));var b=this,d="application/octet-stream"===a.type,e,f=function(){for(var a=["writestart","progress","write","writeend"],a=[].concat(a),c=a.length;c--;){var d=b["on"+a[c]];if("function"===typeof d)try{d.call(b,b)}catch(f){M(f)}}};b.readyState=b.INIT;if(K)e=(h.URL||h.webkitURL||h).createObjectURL(a),setTimeout(function(){v.href=e;v.download=c;var a=new MouseEvent("click");v.dispatchEvent(a);f();B(e);b.readyState=b.DONE});else if((A||d&&L)&&h.FileReader){var g= new FileReader;g.onloadend=function(){var a=A?g.result:g.result.replace(/^data:[^;]*;/,"data:attachment/file;");h.open(a,"_blank")||(h.location.href=a);b.readyState=b.DONE;f()};g.readAsDataURL(a);b.readyState=b.INIT}else e||(e=(h.URL||h.webkitURL||h).createObjectURL(a)),d?h.location.href=e:h.open(e,"_blank")||(h.location.href=e),b.readyState=b.DONE,f(),B(e)},i=E.prototype;"undefined"!==typeof navigator&&navigator.msSaveOrOpenBlob?r=function(a,c,d){c=c||a.name||"download";d||(a=C(a));return navigator.msSaveOrOpenBlob(a, c)}:(i.abort=function(){},i.readyState=i.INIT=0,i.WRITING=1,i.DONE=2,i.error=i.onwritestart=i.onprogress=i.onwrite=i.onabort=i.onerror=i.onwriteend=null,r=function(a,c,d){return new E(a,c||a.name||"download",d)})}m.fileSave=r;var N=function(a){var c="Sheet1";a.sheetName&&(c=a.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""));return c},F=function(a){return a.newline?a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},G=function(a,c){for(var d=F(c),b=a.buttons.exportData(c.exportOptions),e=c.fieldBoundary, f=c.fieldSeparator,g=RegExp(e,"g"),n=c.escapeChar!==q?c.escapeChar:"\\",j=function(a){for(var b="",c=0,d=a.length;c<d;c++)0<c&&(b+=f),b+=e?e+(""+a[c]).replace(g,n+e)+e:a[c];return b},h=c.header?j(b.header)+d:"",k=c.footer&&b.footer?d+j(b.footer):"",l=[],o=0,i=b.body.length;o<i;o++)l.push(j(b.body[o]));return{str:h+l.join(d)+k,rows:l.length}},H=function(){if(!(-1!==navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")))return!1; var a=navigator.userAgent.match(/AppleWebKit\/(\d+\.\d+)/);return a&&1<a.length&&603.1>1*a[1]?!0:!1};try{var w=new XMLSerializer,u}catch(O){}var z={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/></Relationships>', "[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml" /><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="jpeg" ContentType="image/jpeg" /><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" /><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" /><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" /></Types>', "xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/><workbookPr showInkAnnotation="0" autoCompressPictures="0"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/></bookViews><sheets><sheet name="" sheetId="1" r:id="rId1"/></sheets></workbook>', "xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><sheetData/><mergeCells count="0"/></worksheet>',"xl/styles.xml":'<?xml version="1.0" encoding="UTF-8"?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"><numFmts count="6"><numFmt numFmtId="164" formatCode="#,##0.00_- [$$-45C]"/><numFmt numFmtId="165" formatCode=""£"#,##0.00"/><numFmt numFmtId="166" formatCode="[$€-2] #,##0.00"/><numFmt numFmtId="167" formatCode="0.0%"/><numFmt numFmtId="168" formatCode="#,##0;(#,##0)"/><numFmt numFmtId="169" formatCode="#,##0.00;(#,##0.00)"/></numFmts><fonts count="5" x14ac:knownFonts="1"><font><sz val="11" /><name val="Calibri" /></font><font><sz val="11" /><name val="Calibri" /><color rgb="FFFFFFFF" /></font><font><sz val="11" /><name val="Calibri" /><b /></font><font><sz val="11" /><name val="Calibri" /><i /></font><font><sz val="11" /><name val="Calibri" /><u /></font></fonts><fills count="6"><fill><patternFill patternType="none" /></fill><fill/><fill><patternFill patternType="solid"><fgColor rgb="FFD9D9D9" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="FFD99795" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6efce" /><bgColor indexed="64" /></patternFill></fill><fill><patternFill patternType="solid"><fgColor rgb="ffc6cfef" /><bgColor indexed="64" /></patternFill></fill></fills><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border diagonalUp="false" diagonalDown="false"><left style="thin"><color auto="1" /></left><right style="thin"><color auto="1" /></right><top style="thin"><color auto="1" /></top><bottom style="thin"><color auto="1" /></bottom><diagonal /></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" /></cellStyleXfs><cellXfs count="67"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="4" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="2" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="3" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="4" fillId="5" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="left"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="center"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="right"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment horizontal="fill"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment textRotation="90"/></xf><xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyAlignment="1"><alignment wrapText="1"/></xf><xf numFmtId="9" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="164" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="169" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="3" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="4" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="1" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/><xf numFmtId="2" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0" /></cellStyles><dxfs count="0" /><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" /></styleSheet>'}, I=[{match:/^\-?\d+\.\d%$/,style:60,fmt:function(a){return a/100}},{match:/^\-?\d+\.?\d*%$/,style:56,fmt:function(a){return a/100}},{match:/^\-?\$[\d,]+.?\d*$/,style:57},{match:/^\-?£[\d,]+.?\d*$/,style:58},{match:/^\-?€[\d,]+.?\d*$/,style:59},{match:/^\-?\d+$/,style:65},{match:/^\-?\d+\.\d{2}$/,style:66},{match:/^\([\d,]+\)$/,style:61,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\([\d,]+\.\d{2}\)$/,style:62,fmt:function(a){return-1*a.replace(/[\(\)]/g,"")}},{match:/^\-?[\d,]+$/,style:63}, {match:/^\-?[\d,]+\.\d{2}$/,style:64}];m.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,c,d,b){this.processing(!0);var e=this,a=G(c,b),f=c.buttons.exportInfo(b),g=F(b),n=a.str,d=j("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0});f.title&&(n=f.title+g+g+n);f.messageTop&&(n=f.messageTop+g+g+n);f.messageBottom&&(n=n+g+g+f.messageBottom);b.customize&&(n=b.customize(n,b));b=j("<textarea readonly/>").val(n).appendTo(d); if(l.queryCommandSupported("copy")){d.appendTo(c.table().container());b[0].focus();b[0].select();try{var h=l.execCommand("copy");d.remove();if(h){c.buttons.info(c.i18n("buttons.copyTitle","Copy to clipboard"),c.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",_:"Copied %d rows to clipboard"},a.rows),2E3);this.processing(!1);return}}catch(k){}}h=j("<span>"+c.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+ "</span>").append(d);c.buttons.info(c.i18n("buttons.copyTitle","Copy to clipboard"),h,0);b[0].focus();b[0].select();var D=j(h).closest(".dt-button-info"),i=function(){D.off("click.buttons-copy");j(l).off(".buttons-copy");c.buttons.info(!1)};D.on("click.buttons-copy",i);j(l).on("keydown.buttons-copy",function(a){27===a.keyCode&&(i(),e.processing(!1))}).on("copy.buttons-copy cut.buttons-copy",function(){i();e.processing(!1)})},exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!1, title:"*",messageTop:"*",messageBottom:"*"};m.ext.buttons.csvHtml5={bom:!1,className:"buttons-csv buttons-html5",available:function(){return k.FileReader!==q&&k.Blob},text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,c,d,b){this.processing(!0);a=G(c,b).str;c=c.buttons.exportInfo(b);d=b.charset;b.customize&&(a=b.customize(a,b));!1!==d?(d||(d=l.characterSet||l.charset),d&&(d=";charset="+d)):d="";b.bom&&(a=""+a);r(new Blob([a],{type:"text/csv"+d}),c.filename,!0);this.processing(!1)}, filename:"*",extension:".csv",exportOptions:{},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!1};m.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return k.FileReader!==q&&(t||k.JSZip)!==q&&!H()&&w},text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,c,d,b){this.processing(!0);var e=this,f=0,a=function(a){return j.parseXML(z[a])},g=a("xl/worksheets/sheet1.xml"),n=g.getElementsByTagName("sheetData")[0], a={_rels:{".rels":a("_rels/.rels")},xl:{_rels:{"workbook.xml.rels":a("xl/_rels/workbook.xml.rels")},"workbook.xml":a("xl/workbook.xml"),"styles.xml":a("xl/styles.xml"),worksheets:{"sheet1.xml":g}},"[Content_Types].xml":a("[Content_Types].xml")},d=c.buttons.exportData(b.exportOptions),h,l,i=function(a){h=f+1;l=p(g,"row",{attr:{r:h}});for(var b=0,c=a.length;b<c;b++){var d=x(b)+""+h,e=null;if(!(null===a[b]||a[b]===q||""===a[b])){a[b]=j.trim(a[b]);for(var i=0,k=I.length;i<k;i++){var m=I[i];if(a[b].match&& !a[b].match(/^0\d+/)&&a[b].match(m.match)){e=a[b].replace(/[^\d\.\-]/g,"");m.fmt&&(e=m.fmt(e));e=p(g,"c",{attr:{r:d,s:m.style},children:[p(g,"v",{text:e})]});break}}e||("number"===typeof a[b]||a[b].match&&a[b].match(/^-?\d+(\.\d+)?$/)&&!a[b].match(/^0\d+/)?e=p(g,"c",{attr:{t:"n",r:d},children:[p(g,"v",{text:a[b]})]}):(m=!a[b].replace?a[b]:a[b].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""),e=p(g,"c",{attr:{t:"inlineStr",r:d},children:{row:p(g,"is",{children:{row:p(g,"t",{text:m})}})}})));l.appendChild(e)}}n.appendChild(l); f++};j("sheets sheet",a.xl["workbook.xml"]).attr("name",N(b));b.customizeData&&b.customizeData(d);var m=function(a,b){var c=j("mergeCells",g);c[0].appendChild(p(g,"mergeCell",{attr:{ref:"A"+a+":"+x(b)+a}}));c.attr("count",c.attr("count")+1);j("row:eq("+(a-1)+") c",g).attr("s","51")},o=c.buttons.exportInfo(b);o.title&&(i([o.title],f),m(f,d.header.length-1));o.messageTop&&(i([o.messageTop],f),m(f,d.header.length-1));b.header&&(i(d.header,f),j("row:last c",g).attr("s","2"));for(var c=0,s=d.body.length;c< s;c++)i(d.body[c],f);b.footer&&d.footer&&(i(d.footer,f),j("row:last c",g).attr("s","2"));o.messageBottom&&(i([o.messageBottom],f),m(f,d.header.length-1));c=p(g,"cols");j("worksheet",g).prepend(c);i=0;for(m=d.header.length;i<m;i++)c.appendChild(p(g,"col",{attr:{min:i+1,max:i+1,width:J(d,i),customWidth:1}}));b.customize&&b.customize(a);b=new (t||k.JSZip);d={type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};y(b,a);b.generateAsync?b.generateAsync(d).then(function(a){r(a, o.filename);e.processing(false)}):(r(b.generate(d),o.filename),this.processing(!1))},filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!1,title:"*",messageTop:"*",messageBottom:"*"};m.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return k.FileReader!==q&&(s||k.pdfMake)},text:function(a){return a.i18n("buttons.pdf","PDF")},action:function(a,c,d,b){this.processing(!0);var e=this,a=c.buttons.exportData(b.exportOptions),f=c.buttons.exportInfo(b),c=[]; b.header&&c.push(j.map(a.header,function(a){return{text:"string"===typeof a?a:a+"",style:"tableHeader"}}));for(var g=0,d=a.body.length;g<d;g++)c.push(j.map(a.body[g],function(a){return{text:"string"===typeof a?a:a+"",style:g%2?"tableBodyEven":"tableBodyOdd"}}));b.footer&&a.footer&&c.push(j.map(a.footer,function(a){return{text:"string"===typeof a?a:a+"",style:"tableFooter"}}));c={pageSize:b.pageSize,pageOrientation:b.orientation,content:[{table:{headerRows:1,body:c},layout:"noBorders"}],styles:{tableHeader:{bold:!0, fontSize:11,color:"white",fillColor:"#2d4154",alignment:"center"},tableBodyEven:{},tableBodyOdd:{fillColor:"#f3f3f3"},tableFooter:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154"},title:{alignment:"center",fontSize:15},message:{}},defaultStyle:{fontSize:10}};f.messageTop&&c.content.unshift({text:f.messageTop,style:"message",margin:[0,0,0,12]});f.messageBottom&&c.content.push({text:f.messageBottom,style:"message",margin:[0,0,0,12]});f.title&&c.content.unshift({text:f.title,style:"title",margin:[0, 0,0,12]});b.customize&&b.customize(c,b);c=(s||k.pdfMake).createPdf(c);"open"===b.download&&!H()?(c.open(),this.processing(!1)):c.getBuffer(function(a){a=new Blob([a],{type:"application/pdf"});r(a,f.filename);e.processing(!1)})},title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"A4",header:!0,footer:!1,messageTop:"*",messageBottom:"*",customize:null,download:"download"};return m.Buttons}); (function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(e){return d(e,window,document)}):"object"===typeof exports?module.exports=function(e,c){e||(e=window);if(!c||!c.fn.dataTable)c=require("datatables.net")(e,c).$;c.fn.dataTable.Buttons||require("datatables.net-buttons")(e,c);return d(c,e,e.document)}:d(jQuery,window,document)})(function(d,e,c){var i=d.fn.dataTable,f=c.createElement("a"),l=function(a){f.href=a;a=f.host;-1===a.indexOf("/")&& 0!==f.pathname.indexOf("/")&&(a+="/");return f.protocol+"//"+a+f.pathname+f.search};i.ext.buttons.print={className:"buttons-print",text:function(a){return a.i18n("buttons.print","Print")},action:function(a,b,c,h){var a=b.buttons.exportData(d.extend({decodeEntities:!1},h.exportOptions)),c=b.buttons.exportInfo(h),f=function(b,c){for(var a="<tr>",d=0,e=b.length;d<e;d++)a+="<"+c+">"+b[d]+"</"+c+">";return a+"</tr>"},b='<table class="'+b.table().node().className+'">';h.header&&(b+="<thead>"+f(a.header, "th")+"</thead>");for(var b=b+"<tbody>",k=0,i=a.body.length;k<i;k++)b+=f(a.body[k],"td");b+="</tbody>";h.footer&&a.footer&&(b+="<tfoot>"+f(a.footer,"th")+"</tfoot>");var b=b+"</table>",g=e.open("","");g.document.close();var j="<title>"+c.title+"</title>";d("style, link").each(function(){var b=j,a=d(this).clone()[0];"link"===a.nodeName.toLowerCase()&&(a.href=l(a.href));j=b+a.outerHTML});try{g.document.head.innerHTML=j}catch(m){d(g.document.head).html(j)}g.document.body.innerHTML="<h1>"+c.title+"</h1><div>"+ (c.messageTop||"")+"</div>"+b+"<div>"+(c.messageBottom||"")+"</div>";d(g.document.body).addClass("dt-print-view");d("img",g.document.body).each(function(a,b){b.setAttribute("src",l(b.getAttribute("src")))});h.customize&&h.customize(g);setTimeout(function(){h.autoPrint&&(g.print(),g.close())},1E3)},title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return i.Buttons}); /*! FixedColumns 3.2.3 ©2010-2016 SpryMedia Ltd - datatables.net/license */ (function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(p){return d(p,window,document)}):"object"===typeof exports?module.exports=function(p,r){p||(p=window);if(!r||!r.fn.dataTable)r=require("datatables.net")(p,r).$;return d(r,p,p.document)}:d(jQuery,window,document)})(function(d,p,r,t){var s=d.fn.dataTable,u,m=function(a,b){var c=this;if(this instanceof m){if(b===t||!0===b)b={};var e=d.fn.dataTable.camelToHungarian;e&&(e(m.defaults,m.defaults,!0),e(m.defaults, b));e=(new d.fn.dataTable.Api(a)).settings()[0];this.s={dt:e,iTableColumns:e.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[],rtl:"rtl"===d(e.nTable).css("direction")};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};if(e._oFixedColumns)throw"FixedColumns already initialised on this table"; e._oFixedColumns=this;e._bInitComplete?this._fnConstruct(b):e.oApi._fnCallbackReg(e,"aoInitComplete",function(){c._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};d.extend(m.prototype,{fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight;a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height= b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(d(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=d(a).index(),b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]);var c=d(a).index(),a=d(a.parentNode).index();return[b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]),c,b.oApi._fnVisibleToColumnIndex(this.s.dt,c)]}return b.fnGetPosition(a)},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+ m.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=d.extend(!0,this.s,m.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=d(this.s.dt.nTable).parents("div."+a.sScrollWrapper)[0];this.dom.scroller=d("div."+ a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var c,e=!1;d(this.s.dt.nTableWrapper).on("mousedown.DTFC",function(){e=!0;d(r).one("mouseup",function(){e=!1})});d(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="main")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="main");if("main"===c&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns))b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop}); var f="onwheel"in r.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)d(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="left")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="left");"left"===c&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX}); if(0<b.s.iRightColumns)d(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="right")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="right");"right"===c&&(b.dom.scroller.scrollTop=b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});d(p).on("resize.DTFC",function(){b._fnGridLayout.call(b)}); var g=!0,h=d(this.s.dt.nTable);h.on("draw.dt.DTFC",function(){b._fnColCalc();b._fnDraw.call(b,g);g=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(a,c,d,e,f){if(f===t||f)b._fnColCalc(),b._fnGridLayout(b),b._fnDraw(!0)}).on("select.dt.DTFC deselect.dt.DTFC",function(a){"dt"===a.namespace&&b._fnDraw(!1)}).on("destroy.dt.DTFC",function(){h.off(".DTFC");d(b.dom.scroller).off(".DTFC");d(p).off(".DTFC");d(b.s.dt.nTableWrapper).off(".DTFC"); d(b.dom.grid.left.liner).off(".DTFC "+f);d(b.dom.grid.left.wrapper).remove();d(b.dom.grid.right.liner).off(".DTFC "+f);d(b.dom.grid.right.wrapper).remove()});this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,c=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];d.each(this.s.dt.aoColumns,function(e,f){var g=d(f.nTh),h;if(g.filter(":visible").length){var i=g.outerWidth();0===a.s.aiOuterWidths.length&&(h=d(a.s.dt.nTable).css("border-left-width"),i+="string"=== typeof h?1:parseInt(h,10));a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(h=d(a.s.dt.nTable).css("border-right-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.push(i);a.s.aiInnerWidths.push(g.width());e<a.s.iLeftColumns&&(b+=i);a.s.iTableColumns-a.s.iRightColumns<=e&&(c+=i)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=c},_fnGridSetup:function(){var a=this._fnDTOverflow(),b;this.dom.body=this.s.dt.nTable;this.dom.header= this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var c=d('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0], e=c.childNodes[0],f=c.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(c,this.dom.grid.dt);c.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=c;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=e,this.dom.grid.left.head=e.childNodes[0],this.dom.grid.left.body=e.childNodes[1],this.dom.grid.left.liner=d("div.DTFC_LeftBodyLiner",c)[0],c.appendChild(e));0<this.s.iRightColumns&&(this.dom.grid.right.wrapper=f,this.dom.grid.right.head=f.childNodes[0],this.dom.grid.right.body=f.childNodes[1],this.dom.grid.right.liner= d("div.DTFC_RightBodyLiner",c)[0],f.style.right=a.bar+"px",b=d("div.DTFC_RightHeadBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.headBlock=b,b=d("div.DTFC_RightFootBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.footBlock=b,c.appendChild(f));if(this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=e.childNodes[2]),0<this.s.iRightColumns))this.dom.grid.right.foot=f.childNodes[2]; this.s.rtl&&d("div.DTFC_RightHeadBlocker",c).css({left:-a.bar+"px",right:""})},_fnGridLayout:function(){var a=this,b=this.dom.grid;d(b.wrapper).width();var c=d(this.s.dt.nTable.parentNode).outerHeight(),e=d(this.s.dt.nTable.parentNode.parentNode).outerHeight(),f=this._fnDTOverflow(),g=this.s.iLeftWidth,h=this.s.iRightWidth,i="rtl"===d(this.dom.body).css("direction"),k=function(b,c){f.bar?a._firefoxScrollError()?34<d(b).height()&&(b.style.width=c+f.bar+"px"):b.style.width=c+f.bar+"px":(b.style.width= c+20+"px",b.style.paddingRight="20px",b.style.boxSizing="border-box")};f.x&&(c-=f.bar);b.wrapper.style.height=e+"px";0<this.s.iLeftColumns&&(e=b.left.wrapper,e.style.width=g+"px",e.style.height="1px",i?(e.style.left="",e.style.right=0):(e.style.left=0,e.style.right=""),b.left.body.style.height=c+"px",b.left.foot&&(b.left.foot.style.top=(f.x?f.bar:0)+"px"),k(b.left.liner,g),b.left.liner.style.height=c+"px",b.left.liner.style.maxHeight=c+"px");0<this.s.iRightColumns&&(e=b.right.wrapper,e.style.width= h+"px",e.style.height="1px",this.s.rtl?(e.style.left=f.y?f.bar+"px":0,e.style.right=""):(e.style.left="",e.style.right=f.y?f.bar+"px":0),b.right.body.style.height=c+"px",b.right.foot&&(b.right.foot.style.top=(f.x?f.bar:0)+"px"),k(b.right.liner,h),b.right.liner.style.height=c+"px",b.right.liner.style.maxHeight=c+"px",b.right.headBlock.style.display=f.y?"block":"none",b.right.footBlock.style.display=f.y?"block":"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth}; a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);d(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&& c.push(b);this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b,c){for(var e=[],f=[],g=[],h=0,i=a.length;h<i;h++){var k=[];k.nTr=d(a[h].nTr).clone(c,!1)[0];for(var l=0,o=this.s.iTableColumns;l<o;l++)if(-1!==d.inArray(l,b)){var q=d.inArray(a[h][l].cell,g);-1===q?(q= d(a[h][l].cell).clone(c,!1)[0],f.push(q),g.push(a[h][l].cell),k.push({cell:q,unique:a[h][l].unique})):k.push({cell:f[q],unique:a[h][l].unique})}e.push(k)}return e},_fnClone:function(a,b,c,e){var f=this,g,h,i,k,l,o,q,n,m,j=this.s.dt;if(e){d(a.header).remove();a.header=d(this.dom.header).clone(!0,!1)[0];a.header.className+=" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);n=this._fnCopyLayout(j.aoHeader,c,!0);k=d(">thead",a.header);k.empty();g=0;for(h=n.length;g<h;g++)k[0].appendChild(n[g].nTr); j.oApi._fnDrawHead(j,n,!0)}else{n=this._fnCopyLayout(j.aoHeader,c,!1);m=[];j.oApi._fnDetectHeader(m,d(">thead",a.header)[0]);g=0;for(h=n.length;g<h;g++){i=0;for(k=n[g].length;i<k;i++)m[g][i].cell.className=n[g][i].cell.className,d("span.DataTables_sort_icon",m[g][i].cell).each(function(){this.className=d("span.DataTables_sort_icon",n[g][i].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&d(">tbody>tr",f.dom.body).css("height","auto");null!== a.body&&(d(a.body).remove(),a.body=null);a.body=d(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=j.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*j.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");d(">thead>tr",a.body).empty();d(">tfoot",a.body).remove();var p=d("tbody",a.body)[0];d(p).empty();if(0<j.aiDisplay.length){h=d(">thead>tr",a.body)[0];for(q=0;q<c.length;q++)l=c[q],o=d(j.aoColumns[l].nTh).clone(!0)[0],o.innerHTML= "",k=o.style,k.paddingTop="0",k.paddingBottom="0",k.borderTopWidth="0",k.borderBottomWidth="0",k.height=0,k.width=f.s.aiInnerWidths[l]+"px",h.appendChild(o);d(">tbody>tr",f.dom.body).each(function(a){var a=f.s.dt.oFeatures.bServerSide===false?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+a]:a,b=f.s.dt.aoData[a].anCells||d(this).children("td, th"),e=this.cloneNode(false);e.removeAttribute("id");e.setAttribute("data-dt-row",a);for(q=0;q<c.length;q++){l=c[q];if(b.length>0){o=d(b[l]).clone(true,true)[0];o.removeAttribute("id"); o.setAttribute("data-dt-row",a);o.setAttribute("data-dt-column",j.oApi._fnVisibleToColumnIndex(j,l));e.appendChild(o)}}p.appendChild(e)})}else d(">tbody>tr",f.dom.body).each(function(){o=this.cloneNode(true);o.className=o.className+" DTFC_NoData";d("td",o).html("");p.appendChild(o)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";j.oScroller!==t&&(h=j.oScroller.dom.force,b.forcer?b.forcer.style.height=h.style.height:(b.forcer=h.cloneNode(!0),b.liner.appendChild(b.forcer))); b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",f.dom.body,a.body);if(null!==j.nTFoot){if(e){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=d(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);n=this._fnCopyLayout(j.aoFooter,c,!0);b=d(">tfoot",a.footer);b.empty();g=0;for(h=n.length;g<h;g++)b[0].appendChild(n[g].nTr);j.oApi._fnDrawHead(j,n,!0)}else{n=this._fnCopyLayout(j.aoFooter,c,!1);b=[];j.oApi._fnDetectHeader(b, d(">tfoot",a.footer)[0]);g=0;for(h=n.length;g<h;g++){i=0;for(k=n[g].length;i<k;i++)b[g][i].cell.className=n[g][i].cell.className}}this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=j.oApi._fnGetUniqueThs(j,d(">thead",a.header)[0]);d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"});null!==f.s.dt.nTFoot&&(b=j.oApi._fnGetUniqueThs(j,d(">tfoot",a.footer)[0]),d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"}))},_fnGetTrNodes:function(a){for(var b= [],c=0,d=a.childNodes.length;c<d;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,c){if(!("none"==this.s.sHeightMatch&&"thead"!==a&&"tfoot"!==a)){var e,f,g=b.getElementsByTagName(a)[0],c=c.getElementsByTagName(a)[0],a=d(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();for(var g=this._fnGetTrNodes(g),b=this._fnGetTrNodes(c),h=[],c=0,a=b.length;c<a;c++)e=g[c].offsetHeight,f=b[c].offsetHeight,e=f>e?f:e,"semiauto"==this.s.sHeightMatch&& (g[c]._DTTC_iHeight=e),h.push(e);c=0;for(a=b.length;c<a;c++)b[c].style.height=h[c]+"px",g[c].style.height=h[c]+"px"}},_firefoxScrollError:function(){if(u===t){var a=d("<div/>").css({position:"absolute",top:0,left:0,height:10,width:50,overflow:"scroll"}).appendTo("body");u=a[0].clientWidth===a[0].offsetWidth&&0!==this._fnDTOverflow().bar;a.remove()}return u}});m.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};m.version="3.2.3";s.Api.register("fixedColumns()",function(){return this}); s.Api.register("fixedColumns().update()",function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnUpdate()})});s.Api.register("fixedColumns().relayout()",function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnRedrawLayout()})});s.Api.register("rows().recalcHeight()",function(){return this.iterator("row",function(a,b){a._oFixedColumns&&a._oFixedColumns.fnRecalculateHeight(this.row(b).node())})});s.Api.register("fixedColumns().rowIndex()", function(a){a=d(a);return a.parents(".DTFC_Cloned").length?this.rows({page:"current"}).indexes()[a.index()]:this.row(a).index()});s.Api.register("fixedColumns().cellIndex()",function(a){a=d(a);if(a.parents(".DTFC_Cloned").length){var b=a.parent().index(),b=this.rows({page:"current"}).indexes()[b],a=a.parents(".DTFC_LeftWrapper").length?a.index():this.columns().flatten().length-this.context[0]._oFixedColumns.s.iRightColumns+a.index();return{row:b,column:this.column.index("toData",a),columnVisible:a}}return this.cell(a).index()}); d(r).on("init.dt.fixedColumns",function(a,b){if("dt"===a.namespace){var c=b.oInit.fixedColumns,e=s.defaults.fixedColumns;if(c||e)e=d.extend({},c,e),!1!==c&&new m(b,e)}});d.fn.dataTable.FixedColumns=m;return d.fn.DataTable.FixedColumns=m}); /*! FixedHeader 3.1.3 ©2009-2017 SpryMedia Ltd - datatables.net/license */ (function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(g){return d(g,window,document)}):"object"===typeof exports?module.exports=function(g,h){g||(g=window);if(!h||!h.fn.dataTable)h=require("datatables.net")(g,h).$;return d(h,g,g.document)}:d(jQuery,window,document)})(function(d,g,h,k){var j=d.fn.dataTable,l=0,i=function(b,a){if(!(this instanceof i))throw"FixedHeader must be initialised with the 'new' keyword.";!0===a&&(a={});b=new j.Api(b);this.c=d.extend(!0, {},i.defaults,a);this.s={dt:b,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:d(g).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:b.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+l++,scrollLeft:{header:-1,footer:-1},enable:!0};this.dom={floatingHeader:null,thead:d(b.table().header()),tbody:d(b.table().body()),tfoot:d(b.table().footer()),header:{host:null,floating:null,placeholder:null},footer:{host:null,floating:null, placeholder:null}};this.dom.header.host=this.dom.thead.parent();this.dom.footer.host=this.dom.tfoot.parent();var e=b.settings()[0];if(e._fixedHeader)throw"FixedHeader already initialised on table "+e.nTable.id;e._fixedHeader=this;this._constructor()};d.extend(i.prototype,{enable:function(b){this.s.enable=b;this.c.header&&this._modeChange("in-place","header",!0);this.c.footer&&this.dom.tfoot.length&&this._modeChange("in-place","footer",!0);this.update()},headerOffset:function(b){b!==k&&(this.c.headerOffset= b,this.update());return this.c.headerOffset},footerOffset:function(b){b!==k&&(this.c.footerOffset=b,this.update());return this.c.footerOffset},update:function(){this._positions();this._scroll(!0)},_constructor:function(){var b=this,a=this.s.dt;d(g).on("scroll"+this.s.namespace,function(){b._scroll()}).on("resize"+this.s.namespace,function(){b.s.position.windowHeight=d(g).height();b.update()});var e=d(".fh-fixedHeader");!this.c.headerOffset&&e.length&&(this.c.headerOffset=e.outerHeight());e=d(".fh-fixedFooter"); !this.c.footerOffset&&e.length&&(this.c.footerOffset=e.outerHeight());a.on("column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc column-sizing.dt.dtfc",function(){b.update()});a.on("destroy.dtfc",function(){a.off(".dtfc");d(g).off(b.s.namespace)});this._positions();this._scroll()},_clone:function(b,a){var e=this.s.dt,c=this.dom[b],f="header"===b?this.dom.thead:this.dom.tfoot;!a&&c.floating?c.floating.removeClass("fixedHeader-floating fixedHeader-locked"):(c.floating&&(c.placeholder.remove(), this._unsize(b),c.floating.children().detach(),c.floating.remove()),c.floating=d(e.table().node().cloneNode(!1)).css("table-layout","fixed").removeAttr("id").append(f).appendTo("body"),c.placeholder=f.clone(!1),c.placeholder.find("*[id]").removeAttr("id"),c.host.prepend(c.placeholder),this._matchWidths(c.placeholder,c.floating))},_matchWidths:function(b,a){var e=function(a){return d(a,b).map(function(){return d(this).width()}).toArray()},c=function(b,c){d(b,a).each(function(a){d(this).css({width:c[a], minWidth:c[a]})})},f=e("th"),e=e("td");c("th",f);c("td",e)},_unsize:function(b){var a=this.dom[b].floating;a&&("footer"===b||"header"===b&&!this.s.autoWidth)?d("th, td",a).css({width:"",minWidth:""}):a&&"header"===b&&d("th, td",a).css("min-width","")},_horizontal:function(b,a){var e=this.dom[b],c=this.s.position,d=this.s.scrollLeft;e.floating&&d[b]!==a&&(e.floating.css("left",c.left-a),d[b]=a)},_modeChange:function(b,a,e){var c=this.dom[a],f=this.s.position,g=d.contains(this.dom["footer"===a?"tfoot": "thead"][0],h.activeElement)?h.activeElement:null;if("in-place"===b){if(c.placeholder&&(c.placeholder.remove(),c.placeholder=null),this._unsize(a),"header"===a?c.host.prepend(this.dom.thead):c.host.append(this.dom.tfoot),c.floating)c.floating.remove(),c.floating=null}else"in"===b?(this._clone(a,e),c.floating.addClass("fixedHeader-floating").css("header"===a?"top":"bottom",this.c[a+"Offset"]).css("left",f.left+"px").css("width",f.width+"px"),"footer"===a&&c.floating.css("top","")):"below"===b?(this._clone(a, e),c.floating.addClass("fixedHeader-locked").css("top",f.tfootTop-f.theadHeight).css("left",f.left+"px").css("width",f.width+"px")):"above"===b&&(this._clone(a,e),c.floating.addClass("fixedHeader-locked").css("top",f.tbodyTop).css("left",f.left+"px").css("width",f.width+"px"));g&&g!==h.activeElement&&g.focus();this.s.scrollLeft.header=-1;this.s.scrollLeft.footer=-1;this.s[a+"Mode"]=b},_positions:function(){var b=this.s.dt.table(),a=this.s.position,e=this.dom,b=d(b.node()),c=b.children("thead"),f= b.children("tfoot"),e=e.tbody;a.visible=b.is(":visible");a.width=b.outerWidth();a.left=b.offset().left;a.theadTop=c.offset().top;a.tbodyTop=e.offset().top;a.theadHeight=a.tbodyTop-a.theadTop;f.length?(a.tfootTop=f.offset().top,a.tfootBottom=a.tfootTop+f.outerHeight(),a.tfootHeight=a.tfootBottom-a.tfootTop):(a.tfootTop=a.tbodyTop+e.outerHeight(),a.tfootBottom=a.tfootTop,a.tfootHeight=a.tfootTop)},_scroll:function(b){var a=d(h).scrollTop(),e=d(h).scrollLeft(),c=this.s.position,f;if(this.s.enable&&(this.c.header&& (f=!c.visible||a<=c.theadTop-this.c.headerOffset?"in-place":a<=c.tfootTop-c.theadHeight-this.c.headerOffset?"in":"below",(b||f!==this.s.headerMode)&&this._modeChange(f,"header",b),this._horizontal("header",e)),this.c.footer&&this.dom.tfoot.length))a=!c.visible||a+c.windowHeight>=c.tfootBottom+this.c.footerOffset?"in-place":c.windowHeight+a>c.tbodyTop+c.tfootHeight+this.c.footerOffset?"in":"above",(b||a!==this.s.footerMode)&&this._modeChange(a,"footer",b),this._horizontal("footer",e)}});i.version= "3.1.3";i.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0};d.fn.dataTable.FixedHeader=i;d.fn.DataTable.FixedHeader=i;d(h).on("init.dt.dtfh",function(b,a){if("dt"===b.namespace){var e=a.oInit.fixedHeader,c=j.defaults.fixedHeader;if((e||c)&&!a._fixedHeader)c=d.extend({},c,e),!1!==e&&new i(a,c)}});j.Api.register("fixedHeader()",function(){});j.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.update()})});j.Api.register("fixedHeader.enable()", function(b){return this.iterator("table",function(a){a=a._fixedHeader;b=b!==k?b:!0;a&&b!==a.s.enable&&a.enable(b)})});j.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.s.enable&&b.enable(!1)})});d.each(["header","footer"],function(b,a){j.Api.register("fixedHeader."+a+"Offset()",function(b){var c=this.context;return b===k?c.length&&c[0]._fixedHeader?c[0]._fixedHeader[a+"Offset"]():k:this.iterator("table",function(c){if(c=c._fixedHeader)c[a+ "Offset"](b)})})});return i}); /*! KeyTable 2.3.2 ©2009-2017 SpryMedia Ltd - datatables.net/license */ (function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(k){return f(k,window,document)}):"object"===typeof exports?module.exports=function(k,h){k||(k=window);if(!h||!h.fn.dataTable)h=require("datatables.net")(k,h).$;return f(h,k,k.document)}:f(jQuery,window,document)})(function(f,k,h,o){var l=f.fn.dataTable,n=function(a,b){if(!l.versionCheck||!l.versionCheck("1.10.8"))throw"KeyTable requires DataTables 1.10.8 or newer";this.c=f.extend(!0,{},l.defaults.keyTable, n.defaults,b);this.s={dt:new l.Api(a),enable:!0,focusDraw:!1,waitingForDraw:!1,lastFocus:null};this.dom={};var c=this.s.dt.settings()[0],d=c.keytable;if(d)return d;c.keytable=this;this._constructor()};f.extend(n.prototype,{blur:function(){this._blur()},enable:function(a){this.s.enable=a},focus:function(a,b){this._focus(this.s.dt.cell(a,b))},focused:function(a){if(!this.s.lastFocus)return!1;var b=this.s.lastFocus.cell.index();return a.row===b.row&&a.column===b.column},_constructor:function(){this._tabInput(); var a=this,b=this.s.dt,c=f(b.table().node());"static"===c.css("position")&&c.css("position","relative");f(b.table().body()).on("click.keyTable","th, td",function(c){if(!1!==a.s.enable){var d=b.cell(this);d.any()&&a._focus(d,null,!1,c)}});f(h).on("keydown.keyTable",function(b){a._key(b)});if(this.c.blurable)f(h).on("mousedown.keyTable",function(c){f(c.target).parents(".dataTables_filter").length&&a._blur();f(c.target).parents().filter(b.table().container()).length||f(c.target).parents("div.DTE").length|| f(c.target).parents("div.editor-datetime").length||f(c.target).parents().filter(".DTFC_Cloned").length||a._blur()});if(this.c.editor){var d=this.c.editor;d.on("open.keyTableMain",function(b,c){"inline"!==c&&a.s.enable&&(a.enable(!1),d.one("close.keyTable",function(){a.enable(!0)}))});if(this.c.editOnFocus)b.on("key-focus.keyTable key-refocus.keyTable",function(b,c,d,e){a._editor(null,e)});b.on("key.keyTable",function(b,c,d,e,f){a._editor(d,f)})}if(b.settings()[0].oFeatures.bStateSave)b.on("stateSaveParams.keyTable", function(b,c,d){d.keyTable=a.s.lastFocus?a.s.lastFocus.cell.index():null});b.on("draw.keyTable",function(c){if(!a.s.focusDraw){var d=a.s.lastFocus;if(d&&d.node&&f(d.node).closest("body")===h.body){var d=a.s.lastFocus.relative,e=b.page.info(),j=d.row+e.start;0!==e.recordsDisplay&&(j>=e.recordsDisplay&&(j=e.recordsDisplay-1),a._focus(j,d.column,!0,c))}}});b.on("destroy.keyTable",function(){b.off(".keyTable");f(b.table().body()).off("click.keyTable","th, td");f(h.body).off("keydown.keyTable").off("click.keyTable")}); var e=b.state.loaded();if(e&&e.keyTable)b.one("init",function(){var a=b.cell(e.keyTable);a.any()&&a.focus()});else this.c.focus&&b.cell(this.c.focus).focus()},_blur:function(){if(this.s.enable&&this.s.lastFocus){var a=this.s.lastFocus.cell;f(a.node()).removeClass(this.c.className);this.s.lastFocus=null;this._updateFixedColumns(a.index().column);this._emitEvent("key-blur",[this.s.dt,a])}},_clipboardCopy:function(){var a=this.s.dt;if(this.s.lastFocus&&k.getSelection&&!k.getSelection().toString()){var b= this.s.lastFocus.cell.render("display"),c=f("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0}),b=f("<textarea readonly/>").val(b).appendTo(c);try{c.appendTo(a.table().container()),b[0].focus(),b[0].select(),h.execCommand("copy")}catch(d){}c.remove()}},_columns:function(){var a=this.s.dt,b=a.columns(this.c.columns).indexes(),c=[];a.columns(":visible").every(function(a){-1!==b.indexOf(a)&&c.push(a)});return c},_editor:function(a,b){var c=this,d=this.s.dt,e=this.c.editor; !f("div.DTE",this.s.lastFocus.cell.node()).length&&16!==a&&(b.stopPropagation(),13===a&&b.preventDefault(),e.one("open.keyTable",function(){e.off("cancelOpen.keyTable");c.c.editAutoSelect&&f("div.DTE_Field_InputControl input, div.DTE_Field_InputControl textarea").select();d.keys.enable(c.c.editorKeys);d.one("key-blur.editor",function(){e.displayed()&&e.submit()});e.one("close",function(){d.keys.enable(!0);d.off("key-blur.editor")})}).one("cancelOpen.keyTable",function(){e.off("open.keyTable")}).inline(this.s.lastFocus.cell.index()))}, _emitEvent:function(a,b){this.s.dt.iterator("table",function(c){f(c.nTable).triggerHandler(a,b)})},_focus:function(a,b,c,d){var e=this,m=this.s.dt,g=m.page.info(),i=this.s.lastFocus;d||(d=null);if(this.s.enable){if("number"!==typeof a){var j=a.index(),b=j.column,a=m.rows({filter:"applied",order:"applied"}).indexes().indexOf(j.row);g.serverSide&&(a+=g.start)}if(-1!==g.length&&(a<g.start||a>=g.start+g.length))this.s.focusDraw=!0,this.s.waitingForDraw=!0,m.one("draw",function(){e.s.focusDraw=!1;e.s.waitingForDraw= !1;e._focus(a,b,o,d)}).page(Math.floor(a/g.length)).draw(!1);else if(-1!==f.inArray(b,this._columns())){g.serverSide&&(a-=g.start);g=m.cells(null,b,{search:"applied",order:"applied"}).flatten();g=m.cell(g[a]);if(i){if(i.node===g.node()){this._emitEvent("key-refocus",[this.s.dt,g,d||null]);return}this._blur()}i=f(g.node());i.addClass(this.c.className);this._updateFixedColumns(b);if(c===o||!0===c)this._scroll(f(k),f(h.body),i,"offset"),c=m.table().body().parentNode,c!==m.table().header().parentNode&& (c=f(c.parentNode),this._scroll(c,c,i,"position"));this.s.lastFocus={cell:g,node:g.node(),relative:{row:m.rows({page:"current"}).indexes().indexOf(g.index().row),column:g.index().column}};this._emitEvent("key-focus",[this.s.dt,g,d||null]);m.state.save()}}},_key:function(a){if(this.s.waitingForDraw)a.preventDefault();else{var b=this.s.enable,c=!0===b||"navigation-only"===b;if(b)if(a.ctrlKey&&67===a.keyCode)this._clipboardCopy();else if(!(0===a.keyCode||a.ctrlKey||a.metaKey||a.altKey)&&this.s.lastFocus){var d= this.s.dt;if(!(this.c.keys&&-1===f.inArray(a.keyCode,this.c.keys)))switch(a.keyCode){case 9:this._shift(a,a.shiftKey?"left":"right",!0);break;case 27:this.s.blurable&&!0===b&&this._blur();break;case 33:case 34:c&&(a.preventDefault(),d.page(33===a.keyCode?"previous":"next").draw(!1));break;case 35:case 36:c&&(a.preventDefault(),b=d.cells({page:"current"}).indexes(),c=this._columns(),this._focus(d.cell(b[35===a.keyCode?b.length-1:c[0]]),null,!0,a));break;case 37:c&&this._shift(a,"left");break;case 38:c&& this._shift(a,"up");break;case 39:c&&this._shift(a,"right");break;case 40:c&&this._shift(a,"down");break;default:!0===b&&this._emitEvent("key",[d,a.keyCode,this.s.lastFocus.cell,a])}}}},_scroll:function(a,b,c,d){var e=c[d](),f=c.outerHeight(),g=c.outerWidth(),i=b.scrollTop(),j=b.scrollLeft(),h=a.height(),a=a.width();"position"===d&&(e.top+=parseInt(c.closest("table").css("top"),10));e.top<i&&b.scrollTop(e.top);e.left<j&&b.scrollLeft(e.left);e.top+f>i+h&&f<h&&b.scrollTop(e.top+f-h);e.left+g>j+a&&g< a&&b.scrollLeft(e.left+g-a)},_shift:function(a,b,c){var d=this.s.dt,e=d.page.info(),h=e.recordsDisplay,g=this.s.lastFocus.cell,i=this._columns();if(g){var j=d.rows({filter:"applied",order:"applied"}).indexes().indexOf(g.index().row);e.serverSide&&(j+=e.start);d=d.columns(i).indexes().indexOf(g.index().column);e=i[d];"right"===b?d>=i.length-1?(j++,e=i[0]):e=i[d+1]:"left"===b?0===d?(j--,e=i[i.length-1]):e=i[d-1]:"up"===b?j--:"down"===b&&j++;0<=j&&j<h&&-1!==f.inArray(e,i)?(a.preventDefault(),this._focus(j, e,!0,a)):!c||!this.c.blurable?a.preventDefault():this._blur()}},_tabInput:function(){var a=this,b=this.s.dt,c=null!==this.c.tabIndex?this.c.tabIndex:b.settings()[0].iTabIndex;if(-1!=c)f('<div><input type="text" tabindex="'+c+'"/></div>').css({position:"absolute",height:1,width:0,overflow:"hidden"}).insertBefore(b.table().node()).children().on("focus",function(c){b.cell(":eq(0)",{page:"current"}).any()&&a._focus(b.cell(":eq(0)","0:visible",{page:"current"}),null,!0,c)})},_updateFixedColumns:function(a){var b= this.s.dt,c=b.settings()[0];if(c._oFixedColumns){var d=c.aoColumns.length-c._oFixedColumns.s.iRightColumns;(a<c._oFixedColumns.s.iLeftColumns||a>=d)&&b.fixedColumns().update()}}});n.defaults={blurable:!0,className:"focus",columns:"",editor:null,editorKeys:"navigation-only",editAutoSelect:!0,editOnFocus:!1,focus:null,keys:null,tabIndex:null};n.version="2.3.2";f.fn.dataTable.KeyTable=n;f.fn.DataTable.KeyTable=n;l.Api.register("cell.blur()",function(){return this.iterator("table",function(a){a.keytable&& a.keytable.blur()})});l.Api.register("cell().focus()",function(){return this.iterator("cell",function(a,b,c){a.keytable&&a.keytable.focus(b,c)})});l.Api.register("keys.disable()",function(){return this.iterator("table",function(a){a.keytable&&a.keytable.enable(!1)})});l.Api.register("keys.enable()",function(a){return this.iterator("table",function(b){b.keytable&&b.keytable.enable(a===o?!0:a)})});l.ext.selector.cell.push(function(a,b,c){var b=b.focused,a=a.keytable,d=[];if(!a||b===o)return c;for(var e= 0,f=c.length;e<f;e++)(!0===b&&a.focused(c[e])||!1===b&&!a.focused(c[e]))&&d.push(c[e]);return d});f(h).on("preInit.dt.dtk",function(a,b){if("dt"===a.namespace){var c=b.oInit.keys,d=l.defaults.keys;if(c||d)d=f.extend({},d,c),!1!==c&&new n(b,d)}});return n}); /*! Responsive 2.2.0 2014-2017 SpryMedia Ltd - datatables.net/license */ (function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(k){return c(k,window,document)}):"object"===typeof exports?module.exports=function(k,j){k||(k=window);if(!j||!j.fn.dataTable)j=require("datatables.net")(k,j).$;return c(j,k,k.document)}:c(jQuery,window,document)})(function(c,k,j,q){function s(b,a,d){var e=a+"-"+d;if(l[e])return l[e];for(var c=[],b=b.cell(a,d).node().childNodes,a=0,d=b.length;a<d;a++)c.push(b[a]);return l[e]=c}function r(b,a,c){var e=a+ "-"+c;if(l[e]){for(var b=b.cell(a,c).node(),c=l[e][0].parentNode.childNodes,a=[],f=0,g=c.length;f<g;f++)a.push(c[f]);c=0;for(f=a.length;c<f;c++)b.appendChild(a[c]);l[e]=q}}var n=c.fn.dataTable,h=function(b,a){if(!n.versionCheck||!n.versionCheck("1.10.3"))throw"DataTables Responsive requires DataTables 1.10.3 or newer";this.s={dt:new n.Api(b),columns:[],current:[]};this.s.dt.settings()[0].responsive||(a&&"string"===typeof a.details?a.details={type:a.details}:a&&!1===a.details?a.details={type:!1}:a&& !0===a.details&&(a.details={type:"inline"}),this.c=c.extend(!0,{},h.defaults,n.defaults.responsive,a),b.responsive=this,this._constructor())};c.extend(h.prototype,{_constructor:function(){var b=this,a=this.s.dt,d=a.settings()[0],e=c(k).width();a.settings()[0]._responsive=this;c(k).on("resize.dtr orientationchange.dtr",n.util.throttle(function(){var a=c(k).width();a!==e&&(b._resize(),e=a)}));d.oApi._fnCallbackReg(d,"aoRowCreatedCallback",function(e){-1!==c.inArray(!1,b.s.current)&&c(">td, >th",e).each(function(e){e= a.column.index("toData",e);!1===b.s.current[e]&&c(this).css("display","none")})});a.on("destroy.dtr",function(){a.off(".dtr");c(a.table().body()).off(".dtr");c(k).off("resize.dtr orientationchange.dtr");c.each(b.s.current,function(a,e){!1===e&&b._setColumnVis(a,!0)})});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>b.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!==d.type&&(b._detailsInit(),a.on("column-visibility.dtr",function(){b._classLogic();b._resizeAuto(); b._resize()}),a.on("draw.dtr",function(){b._redrawChildren()}),c(a.table().node()).addClass("dtr-"+d.type));a.on("column-reorder.dtr",function(){b._classLogic();b._resizeAuto();b._resize()});a.on("column-sizing.dtr",function(){b._resizeAuto();b._resize()});a.on("preXhr.dtr",function(){var e=[];a.rows().every(function(){this.child.isShown()&&e.push(this.id(true))});a.one("draw.dtr",function(){a.rows(e).every(function(){b._detailsDisplay(this,false)})})});a.on("init.dtr",function(){b._resizeAuto(); b._resize();c.inArray(false,b.s.current)&&a.columns.adjust()});this._resize()},_columnsVisiblity:function(b){var a=this.s.dt,d=this.s.columns,e,f,g=d.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),i=c.map(d,function(a){return a.auto&&null===a.minWidth?!1:!0===a.auto?"-":-1!==c.inArray(b,a.includeIn)}),o=0;e=0;for(f=i.length;e<f;e++)!0===i[e]&&(o+=d[e].minWidth);e=a.settings()[0].oScroll; e=e.sY||e.sX?e.iBarWidth:0;a=a.table().container().offsetWidth-e-o;e=0;for(f=i.length;e<f;e++)d[e].control&&(a-=d[e].minWidth);o=!1;e=0;for(f=g.length;e<f;e++){var m=g[e].columnIdx;"-"===i[m]&&(!d[m].control&&d[m].minWidth)&&(o||0>a-d[m].minWidth?(o=!0,i[m]=!1):i[m]=!0,a-=d[m].minWidth)}g=!1;e=0;for(f=d.length;e<f;e++)if(!d[e].control&&!d[e].never&&!i[e]){g=!0;break}e=0;for(f=d.length;e<f;e++)d[e].control&&(i[e]=g);-1===c.inArray(!0,i)&&(i[0]=!0);return i},_classLogic:function(){var b=this,a=this.c.breakpoints, d=this.s.dt,e=d.columns().eq(0).map(function(a){var b=this.column(a),e=b.header().className,a=d.settings()[0].aoColumns[a].responsivePriority;a===q&&(b=c(b.header()).data("priority"),a=b!==q?1*b:1E4);return{className:e,includeIn:[],auto:!1,control:!1,never:e.match(/\bnever\b/)?!0:!1,priority:a}}),f=function(a,b){var d=e[a].includeIn;-1===c.inArray(b,d)&&d.push(b)},g=function(c,d,g,h){if(g)if("max-"===g){h=b._find(d).width;d=0;for(g=a.length;d<g;d++)a[d].width<=h&&f(c,a[d].name)}else if("min-"===g){h= b._find(d).width;d=0;for(g=a.length;d<g;d++)a[d].width>=h&&f(c,a[d].name)}else{if("not-"===g){d=0;for(g=a.length;d<g;d++)-1===a[d].name.indexOf(h)&&f(c,a[d].name)}}else e[c].includeIn.push(d)};e.each(function(b,e){for(var d=b.className.split(" "),f=!1,h=0,k=d.length;h<k;h++){var j=c.trim(d[h]);if("all"===j){f=!0;b.includeIn=c.map(a,function(a){return a.name});return}if("none"===j||b.never){f=!0;return}if("control"===j){f=!0;b.control=!0;return}c.each(a,function(a,b){var c=b.name.split("-"),d=j.match(RegExp("(min\\-|max\\-|not\\-)?("+ c[0]+")(\\-[_a-zA-Z0-9])?"));d&&(f=!0,d[2]===c[0]&&d[3]==="-"+c[1]?g(e,b.name,d[1],d[2]+d[3]):d[2]===c[0]&&!d[3]&&g(e,b.name,d[1],d[2]))})}f||(b.auto=!0)});this.s.columns=e},_detailsDisplay:function(b,a){var d=this,e=this.s.dt,f=this.c.details;if(f&&!1!==f.type){var g=f.display(b,a,function(){return f.renderer(e,b[0],d._detailsObj(b[0]))});(!0===g||!1===g)&&c(e.table().node()).triggerHandler("responsive-display.dt",[e,b,g,a])}},_detailsInit:function(){var b=this,a=this.s.dt,d=this.c.details;"inline"=== d.type&&(d.target="td:first-child, th:first-child");a.on("draw.dtr",function(){b._tabIndexes()});b._tabIndexes();c(a.table().body()).on("keyup.dtr","td, th",function(a){a.keyCode===13&&c(this).data("dtr-keyboard")&&c(this).click()});var e=d.target;c(a.table().body()).on("click.dtr mousedown.dtr mouseup.dtr","string"===typeof e?e:"td, th",function(d){if(c(a.table().node()).hasClass("collapsed")&&c.inArray(c(this).closest("tr").get(0),a.rows().nodes().toArray())!==-1){if(typeof e==="number"){var g= e<0?a.columns().eq(0).length+e:e;if(a.cell(this).index().column!==g)return}g=a.row(c(this).closest("tr"));d.type==="click"?b._detailsDisplay(g,false):d.type==="mousedown"?c(this).css("outline","none"):d.type==="mouseup"&&c(this).blur().css("outline","")}})},_detailsObj:function(b){var a=this,d=this.s.dt;return c.map(this.s.columns,function(e,c){if(!e.never&&!e.control)return{title:d.settings()[0].aoColumns[c].sTitle,data:d.cell(b,c).render(a.c.orthogonal),hidden:d.column(c).visible()&&!a.s.current[c], columnIndex:c,rowIndex:b}})},_find:function(b){for(var a=this.c.breakpoints,d=0,c=a.length;d<c;d++)if(a[d].name===b)return a[d]},_redrawChildren:function(){var b=this,a=this.s.dt;a.rows({page:"current"}).iterator("row",function(c,e){a.row(e);b._detailsDisplay(a.row(e),!0)})},_resize:function(){var b=this,a=this.s.dt,d=c(k).width(),e=this.c.breakpoints,f=e[0].name,g=this.s.columns,i,h=this.s.current.slice();for(i=e.length-1;0<=i;i--)if(d<=e[i].width){f=e[i].name;break}var j=this._columnsVisiblity(f); this.s.current=j;e=!1;i=0;for(d=g.length;i<d;i++)if(!1===j[i]&&!g[i].never&&!g[i].control){e=!0;break}c(a.table().node()).toggleClass("collapsed",e);var l=!1;a.columns().eq(0).each(function(a,c){j[c]!==h[c]&&(l=!0,b._setColumnVis(a,j[c]))});l&&(this._redrawChildren(),c(a.table().node()).trigger("responsive-resize.dt",[a,this.s.current]),0===a.page.info().recordsDisplay&&a.draw())},_resizeAuto:function(){var b=this.s.dt,a=this.s.columns;if(this.c.auto&&-1!==c.inArray(!0,c.map(a,function(a){return a.auto}))){c.isEmptyObject(l)|| c.each(l,function(a){a=a.split("-");r(b,1*a[0],1*a[1])});b.table().node();var d=b.table().node().cloneNode(!1),e=c(b.table().header().cloneNode(!1)).appendTo(d),f=c(b.table().body()).clone(!1,!1).empty().appendTo(d),g=b.columns().header().filter(function(a){return b.column(a).visible()}).to$().clone(!1).css("display","table-cell");c(f).append(c(b.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display","");if(f=b.table().footer()){var f=c(f.cloneNode(!1)).appendTo(d),i=b.columns().footer().filter(function(a){return b.column(a).visible()}).to$().clone(!1).css("display", "table-cell");c("<tr/>").append(i).appendTo(f)}c("<tr/>").append(g).appendTo(e);"inline"===this.c.details.type&&c(d).addClass("dtr-inline collapsed");c(d).find("[name]").removeAttr("name");d=c("<div/>").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(d);d.insertBefore(b.table().node());g.each(function(c){c=b.column.index("fromVisible",c);a[c].minWidth=this.offsetWidth||0});d.remove()}},_setColumnVis:function(b,a){var d=this.s.dt,e=a?"":"none";c(d.column(b).header()).css("display",e); c(d.column(b).footer()).css("display",e);d.column(b).nodes().to$().css("display",e);c.isEmptyObject(l)||d.cells(null,b).indexes().each(function(a){r(d,a.row,a.column)})},_tabIndexes:function(){var b=this.s.dt,a=b.cells({page:"current"}).nodes().to$(),d=b.settings()[0],e=this.c.details.target;a.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");a="number"===typeof e?":eq("+e+")":e;"td:first-child, th:first-child"===a&&(a=">td:first-child, >th:first-child");c(a,b.rows({page:"current"}).nodes()).attr("tabIndex", d.iTabIndex).data("dtr-keyboard",1)}});h.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];h.display={childRow:function(b,a,d){if(a){if(c(b.node()).hasClass("parent"))return b.child(d(),"child").show(),!0}else{if(b.child.isShown())return b.child(!1),c(b.node()).removeClass("parent"),!1;b.child(d(),"child").show();c(b.node()).addClass("parent");return!0}},childRowImmediate:function(b,a,d){if(!a&& b.child.isShown()||!b.responsive.hasHidden())return b.child(!1),c(b.node()).removeClass("parent"),!1;b.child(d(),"child").show();c(b.node()).addClass("parent");return!0},modal:function(b){return function(a,d,e){if(d)c("div.dtr-modal-content").empty().append(e());else{var f=function(){g.remove();c(j).off("keypress.dtr")},g=c('<div class="dtr-modal"/>').append(c('<div class="dtr-modal-display"/>').append(c('<div class="dtr-modal-content"/>').append(e())).append(c('<div class="dtr-modal-close">×</div>').click(function(){f()}))).append(c('<div class="dtr-modal-background"/>').click(function(){f()})).appendTo("body"); c(j).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}b&&b.header&&c("div.dtr-modal-content").prepend("<h2>"+b.header(a)+"</h2>")}}};var l={};h.renderer={listHiddenNodes:function(){return function(b,a,d){var e=c('<ul data-dtr-index="'+a+'" class="dtr-details"/>'),f=!1;c.each(d,function(a,d){d.hidden&&(c('<li data-dtr-index="'+d.columnIndex+'" data-dt-row="'+d.rowIndex+'" data-dt-column="'+d.columnIndex+'"><span class="dtr-title">'+d.title+"</span> </li>").append(c('<span class="dtr-data"/>').append(s(b, d.rowIndex,d.columnIndex))).appendTo(e),f=!0)});return f?e:!1}},listHidden:function(){return function(b,a,d){return(b=c.map(d,function(a){return a.hidden?'<li data-dtr-index="'+a.columnIndex+'" data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><span class="dtr-title">'+a.title+'</span> <span class="dtr-data">'+a.data+"</span></li>":""}).join(""))?c('<ul data-dtr-index="'+a+'" class="dtr-details"/>').append(b):!1}},tableAll:function(b){b=c.extend({tableClass:""},b);return function(a, d,e){a=c.map(e,function(a){return'<tr data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><td>'+a.title+":</td> <td>"+a.data+"</td></tr>"}).join("");return c('<table class="'+b.tableClass+' dtr-details" width="100%"/>').append(a)}}};h.defaults={breakpoints:h.breakpoints,auto:!0,details:{display:h.display.childRow,renderer:h.renderer.listHidden(),target:0,type:"inline"},orthogonal:"display"};var p=c.fn.dataTable.Api;p.register("responsive()",function(){return this});p.register("responsive.index()", function(b){b=c(b);return{column:b.data("dtr-index"),row:b.parent().data("dtr-index")}});p.register("responsive.rebuild()",function(){return this.iterator("table",function(b){b._responsive&&b._responsive._classLogic()})});p.register("responsive.recalc()",function(){return this.iterator("table",function(b){b._responsive&&(b._responsive._resizeAuto(),b._responsive._resize())})});p.register("responsive.hasHidden()",function(){var b=this.context[0];return b._responsive?-1!==c.inArray(!1,b._responsive.s.current): !1});h.version="2.2.0";c.fn.dataTable.Responsive=h;c.fn.DataTable.Responsive=h;c(j).on("preInit.dt.dtr",function(b,a){if("dt"===b.namespace&&(c(a.nTable).hasClass("responsive")||c(a.nTable).hasClass("dt-responsive")||a.oInit.responsive||n.defaults.responsive)){var d=a.oInit.responsive;!1!==d&&new h(a,c.isPlainObject(d)?d:{})}});return h}); /*! Bootstrap integration for DataTables' Responsive ©2015-2016 SpryMedia Ltd - datatables.net/license */ (function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,e=c('<div class="modal fade dtr-bs-modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button></div><div class="modal-body"/></div></div></div>'); b.modal=function(a){return function(b,d,f){if(c.fn.modal){if(!d){if(a&&a.header){var d=e.find("div.modal-header"),h=d.find("button").detach();d.empty().append('<h4 class="modal-title">'+a.header(b)+"</h4>").prepend(h)}e.find("div.modal-body").empty().append(f());e.appendTo("body").modal()}}else g(b,d,f)}};return a.Responsive}); AdminLTE/plugins/DataTables/pdfmake-0.1.32/pdfmake.min.js 0000644 00003756331 15002261751 0016524 0 ustar 00 /*! pdfmake v0.1.32, @license MIT, @link http://pdfmake.org */ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){(function(e){t.exports=e.pdfMake=n(1)}).call(e,function(){return this}())},function(t,e,n){(function(e,r){"use strict";function i(t,e,n,r){this.docDefinition=t,this.tableLayouts=e||null,this.fonts=n||l,this.vfs=r}function o(){return!!Object.keys}var a=n(6),s=n(300),u=s.saveAs,l={Roboto:{normal:"Roboto-Regular.ttf",bold:"Roboto-Medium.ttf",italics:"Roboto-Italic.ttf",bolditalics:"Roboto-MediumItalic.ttf"}};i.prototype._createDoc=function(t,n){t=t||{},this.tableLayouts&&(t.tableLayouts=this.tableLayouts);var r=new a(this.fonts);r.fs.bindFS(this.vfs);var i,o=r.createPdfKitDocument(this.docDefinition,t),s=[];o.on("readable",function(){for(var t;null!==(t=o.read(9007199254740991));)s.push(t)}),o.on("end",function(){i=e.concat(s),n(i,o._pdfMakePages)}),o.end()},i.prototype._getPages=function(t,e){if(!e)throw"_getPages is an async method and needs a callback argument";this._createDoc(t,function(t,n){e(n)})},i.prototype._bufferToBlob=function(t){var e;try{e=new Blob([t],{type:"application/pdf"})}catch(r){if("InvalidStateError"===r.name){var n=new Uint8Array(t);e=new Blob([n.buffer],{type:"application/pdf"})}}if(!e)throw"Could not generate blob";return e},i.prototype._openWindow=function(){var t=r.open("","_blank");if(null===t)throw"Open PDF in new window blocked by browser";return t},i.prototype._openPdf=function(t,e){e||(e=this._openWindow());try{this.getBlob(function(t){var n=r.URL||r.webkitURL,i=n.createObjectURL(t);e.location.href=i},t)}catch(t){throw e.close(),t}},i.prototype.open=function(t,e){t=t||{},t.autoPrint=!1,e=e||null,this._openPdf(t,e)},i.prototype.print=function(t,e){t=t||{},t.autoPrint=!0,e=e||null,this._openPdf(t,e)},i.prototype.download=function(t,e,n){"function"==typeof t&&(e=t,t=null),t=t||"file.pdf",this.getBlob(function(n){u(n,t),"function"==typeof e&&e()},n)},i.prototype.getBase64=function(t,e){if(!t)throw"getBase64 is an async method and needs a callback argument";this.getBuffer(function(e){t(e.toString("base64"))},e)},i.prototype.getDataUrl=function(t,e){if(!t)throw"getDataUrl is an async method and needs a callback argument";this.getBuffer(function(e){t("data:application/pdf;base64,"+e.toString("base64"))},e)},i.prototype.getBlob=function(t,e){if(!t)throw"getBlob is an async method and needs a callback argument";var n=this;this.getBuffer(function(e){var r=n._bufferToBlob(e);t(r)},e)},i.prototype.getBuffer=function(t,e){if(!t)throw"getBuffer is an async method and needs a callback argument";this._createDoc(e,function(e){t(e)})},t.exports={createPdf:function(t){if(!o())throw"Your browser does not provide the level of support needed";return new i(t,r.pdfMake.tableLayouts,r.pdfMake.fonts,r.pdfMake.vfs)}}}).call(e,n(2).Buffer,function(){return this}())},function(t,e,n){(function(t){"use strict";function r(){return o.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function i(t,e){if(r()<e)throw new RangeError("Invalid typed array length");return o.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=o.prototype):(null===t&&(t=new o(e)),t.length=e),t}function o(t,e,n){if(!(o.TYPED_ARRAY_SUPPORT||this instanceof o))return new o(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return l(this,t)}return a(this,t,e,n)}function a(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?h(t,e,n,r):"string"==typeof e?c(t,e,n):p(t,e)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function u(t,e,n,r){return s(e),e<=0?i(t,e):void 0!==n?"string"==typeof r?i(t,e).fill(n,r):i(t,e).fill(n):i(t,e)}function l(t,e){if(s(e),t=i(t,e<0?0:0|d(e)),!o.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function c(t,e,n){if("string"==typeof n&&""!==n||(n="utf8"),!o.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|y(e,n);t=i(t,r);var a=t.write(e,n);return a!==r&&(t=t.slice(0,a)),t}function f(t,e){var n=e.length<0?0:0|d(e.length);t=i(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function h(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r),o.TYPED_ARRAY_SUPPORT?(t=e,t.__proto__=o.prototype):t=f(t,e),t}function p(t,e){if(o.isBuffer(e)){var n=0|d(e.length);return t=i(t,n),0===t.length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||X(e.length)?i(t,0):f(t,e);if("Buffer"===e.type&&Q(e.data))return f(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function d(t){if(t>=r())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r().toString(16)+" bytes");return 0|t}function g(t){return+t!=t&&(t=0),o.alloc(+t)}function y(t,e){if(o.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(t).length;default:if(r)return V(t).length;e=(""+e).toLowerCase(),r=!0}}function v(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,e>>>=0,n<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return B(this,e,n);case"utf8":case"utf-8":return E(this,e,n);case"ascii":return T(this,e,n);case"latin1":case"binary":return O(this,e,n);case"base64":return P(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function b(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function m(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=o.from(e,r)),o.isBuffer(e))return 0===e.length?-1:w(t,e,n,r,i);if("number"==typeof e)return e&=255,o.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):w(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function w(t,e,n,r,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,s=t.length,u=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,n/=2}var l;if(i){var c=-1;for(l=n;l<s;l++)if(o(t,l)===o(e,-1===c?0:l-c)){if(-1===c&&(c=l),l-c+1===u)return c*a}else-1!==c&&(l-=l-c),c=-1}else for(n+u>s&&(n=s-u),l=n;l>=0;l--){for(var f=!0,h=0;h<u;h++)if(o(t,l+h)!==o(e,h)){f=!1;break}if(f)return l}return-1}function x(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a<r;++a){var s=parseInt(e.substr(2*a,2),16);if(isNaN(s))return a;t[n+a]=s}return a}function _(t,e,n,r){return Y(V(e,t.length-n),t,n,r)}function k(t,e,n,r){return Y(H(e),t,n,r)}function S(t,e,n,r){return k(t,e,n,r)}function C(t,e,n,r){return Y(Z(e),t,n,r)}function A(t,e,n,r){return Y(q(e,t.length-n),t,n,r)}function P(t,e,n){return 0===e&&n===t.length?K.fromByteArray(t):K.fromByteArray(t.slice(e,n))}function E(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var o=t[i],a=null,s=o>239?4:o>223?3:o>191?2:1;if(i+s<=n){var u,l,c,f;switch(s){case 1:o<128&&(a=o);break;case 2:u=t[i+1],128==(192&u)&&(f=(31&o)<<6|63&u)>127&&(a=f);break;case 3:u=t[i+1],l=t[i+2],128==(192&u)&&128==(192&l)&&(f=(15&o)<<12|(63&u)<<6|63&l)>2047&&(f<55296||f>57343)&&(a=f);break;case 4:u=t[i+1],l=t[i+2],c=t[i+3],128==(192&u)&&128==(192&l)&&128==(192&c)&&(f=(15&o)<<18|(63&u)<<12|(63&l)<<6|63&c)>65535&&f<1114112&&(a=f)}}null===a?(a=65533,s=1):a>65535&&(a-=65536,r.push(a>>>10&1023|55296),a=56320|1023&a),r.push(a),i+=s}return I(r)}function I(t){var e=t.length;if(e<=$)return String.fromCharCode.apply(String,t);for(var n="",r=0;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=$));return n}function T(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function O(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function B(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",o=e;o<n;++o)i+=G(t[o]);return i}function L(t,e,n){for(var r=t.slice(e,n),i="",o=0;o<r.length;o+=2)i+=String.fromCharCode(r[o]+256*r[o+1]);return i}function M(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function R(t,e,n,r,i,a){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<a)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function F(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);i<o;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function z(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);i<o;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function D(t,e,n,r,i,o){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(t,e,n,r,i){return i||D(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(t,e,n,r,23,4),n+4}function U(t,e,n,r,i){return i||D(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(t,e,n,r,52,8),n+8}function W(t){if(t=j(t).replace(tt,""),t.length<2)return"";for(;t.length%4!=0;)t+="=";return t}function j(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function G(t){return t<16?"0"+t.toString(16):t.toString(16)}function V(t,e){e=e||1/0;for(var n,r=t.length,i=null,o=[],a=0;a<r;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function H(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}function q(t,e){for(var n,r,i,o=[],a=0;a<t.length&&!((e-=2)<0);++a)n=t.charCodeAt(a),r=n>>8,i=n%256,o.push(i),o.push(r);return o}function Z(t){return K.toByteArray(W(t))}function Y(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function X(t){return t!==t}var K=n(3),J=n(4),Q=n(5);e.Buffer=o,e.SlowBuffer=g,e.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=r(),o.poolSize=8192,o._augment=function(t){return t.__proto__=o.prototype,t},o.from=function(t,e,n){return a(null,t,e,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(t,e,n){return u(null,t,e,n)},o.allocUnsafe=function(t){return l(null,t)},o.allocUnsafeSlow=function(t){return l(null,t)},o.isBuffer=function(t){return!(null==t||!t._isBuffer)},o.compare=function(t,e){if(!o.isBuffer(t)||!o.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},o.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(t,e){if(!Q(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return o.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=o.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var a=t[n];if(!o.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i),i+=a.length}return r},o.byteLength=y,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)b(this,e,e+1);return this},o.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)b(this,e,e+3),b(this,e+1,e+2);return this},o.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)b(this,e,e+7),b(this,e+1,e+6),b(this,e+2,e+5),b(this,e+3,e+4);return this},o.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?E(this,0,t):v.apply(this,arguments)},o.prototype.equals=function(t){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===o.compare(this,t)},o.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},o.prototype.compare=function(t,e,n,r,i){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,r>>>=0,i>>>=0,this===t)return 0;for(var a=i-r,s=n-e,u=Math.min(a,s),l=this.slice(r,i),c=t.slice(e,n),f=0;f<u;++f)if(l[f]!==c[f]){a=l[f],s=c[f];break}return a<s?-1:s<a?1:0},o.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},o.prototype.indexOf=function(t,e,n){return m(this,t,e,n,!0)},o.prototype.lastIndexOf=function(t,e,n){return m(this,t,e,n,!1)},o.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return x(this,t,e,n);case"utf8":case"utf-8":return _(this,t,e,n);case"ascii":return k(this,t,e,n);case"latin1":case"binary":return S(this,t,e,n);case"base64":return C(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var $=4096;o.prototype.slice=function(t,e){var n=this.length;t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t);var r;if(o.TYPED_ARRAY_SUPPORT)r=this.subarray(t,e),r.__proto__=o.prototype;else{var i=e-t;r=new o(i,void 0);for(var a=0;a<i;++a)r[a]=this[a+t]}return r},o.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r},o.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},o.prototype.readUInt8=function(t,e){return e||M(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,e){return e||M(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,e){return e||M(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,e){return e||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,e){return e||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return i*=128,r>=i&&(r-=Math.pow(2,8*e)),r},o.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||M(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return e||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){e||M(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(t,e){e||M(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(t,e){return e||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return e||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,e){return e||M(t,4,this.length),J.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return e||M(t,4,this.length),J.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return e||M(t,8,this.length),J.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return e||M(t,8,this.length),J.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){R(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=1,o=0;for(this[e]=255&t;++o<n&&(i*=256);)this[e+o]=t/i&255;return e+n},o.prototype.writeUIntBE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){R(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=n-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+n},o.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,1,255,0),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},o.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},o.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},o.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):z(this,t,e,!0),e+4},o.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):z(this,t,e,!1),e+4},o.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);R(this,t,e,n,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o<n&&(a*=256);)t<0&&0===s&&0!==this[e+o-1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);R(this,t,e,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,1,127,-128),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},o.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},o.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):z(this,t,e,!0),e+4},o.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):z(this,t,e,!1),e+4},o.prototype.writeFloatLE=function(t,e,n){return N(this,t,e,!0,n)},o.prototype.writeFloatBE=function(t,e,n){return N(this,t,e,!1,n)},o.prototype.writeDoubleLE=function(t,e,n){return U(this,t,e,!0,n)},o.prototype.writeDoubleBE=function(t,e,n){return U(this,t,e,!1,n)},o.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,a=r-n;if(this===t&&n<e&&e<r)for(i=a-1;i>=0;--i)t[i+e]=this[i+n];else if(a<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},o.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!o.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var a;if("number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var s=o.isBuffer(t)?t:V(new o(t,r).toString()),u=s.length;for(a=0;a<n-e;++a)this[a+e]=s[a%u]}return this};var tt=/[^+\/0-9A-Za-z-_]/g}).call(e,function(){return this}())},function(t,e){"use strict";function n(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function r(t){return 3*t.length/4-n(t)}function i(t){var e,r,i,o,a,s=t.length;o=n(t),a=new c(3*s/4-o),r=o>0?s-4:s;var u=0;for(e=0;e<r;e+=4)i=l[t.charCodeAt(e)]<<18|l[t.charCodeAt(e+1)]<<12|l[t.charCodeAt(e+2)]<<6|l[t.charCodeAt(e+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=l[t.charCodeAt(e)]<<2|l[t.charCodeAt(e+1)]>>4,a[u++]=255&i):1===o&&(i=l[t.charCodeAt(e)]<<10|l[t.charCodeAt(e+1)]<<4|l[t.charCodeAt(e+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function o(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function a(t,e,n){for(var r,i=[],a=e;a<n;a+=3)r=(t[a]<<16)+(t[a+1]<<8)+t[a+2],i.push(o(r));return i.join("")}function s(t){for(var e,n=t.length,r=n%3,i="",o=[],s=0,l=n-r;s<l;s+=16383)o.push(a(t,s,s+16383>l?l:s+16383));return 1===r?(e=t[n-1],i+=u[e>>2],i+=u[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=u[e>>10],i+=u[e>>4&63],i+=u[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=s;for(var u=[],l=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,p=f.length;h<p;++h)u[h]=f[h],l[f.charCodeAt(h)]=h;l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var o,a,s=8*i-r-1,u=(1<<s)-1,l=u>>1,c=-7,f=n?i-1:0,h=n?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-c)-1,p>>=-c,c+=s;c>0;o=256*o+t[e+f],f+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=r;c>0;a=256*a+t[e+f],f+=h,c-=8);if(0===o)o=1-l;else{if(o===u)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),o-=l}return(p?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,s,u,l=8*o-i-1,c=(1<<l)-1,f=c>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+f>=1?h/u:h*Math.pow(2,1-f),e*u>=2&&(a++,u/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(e*u-1)*Math.pow(2,i),a+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),a=0));i>=8;t[n+p]=255&s,p+=d,s/=256,i-=8);for(a=a<<i|s,l+=i;l>0;t[n+p]=255&a,p+=d,a/=256,l-=8);t[n+p-d]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){"use strict";function r(t){this.fontDescriptors=t}function i(t,e){if(e.info.Producer="pdfmake",e.info.Creator="pdfmake",t.info)for(var n in t.info){var r=t.info[n];r&&(n=function(t){var e=["Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped"],n=t.charAt(0).toUpperCase()+t.slice(1);return-1!==e.indexOf(n)?n:t.replace(/\s+/g,"")}(n),e.info[n]=r)}}function o(t,e){function n(t){return"function"==typeof t.item.getHeight?t.item.getHeight():t.item._height?t.item._height:0}var r=s(e||40),i=r.top+r.bottom;return t.forEach(function(t){t.items.forEach(function(t){i+=n(t)})}),i}function a(t,e){t&&"auto"===t.height&&(t.height=1/0);var n=l(t||"A4");return function(t){return("string"==typeof t||t instanceof String)&&("portrait"===(t=t.toLowerCase())&&n.width>n.height||"landscape"===t&&n.width<n.height)}(e)&&(n={width:n.height,height:n.width}),n.orientation=n.width>n.height?"landscape":"portrait",n}function s(t){if(!t)return null;if("number"==typeof t||t instanceof Number)t={left:t,right:t,top:t,bottom:t};else if(Array.isArray(t))if(2===t.length)t={left:t[0],top:t[1],right:t[0],bottom:t[1]};else{if(4!==t.length)throw"Invalid pageMargins definition";t={left:t[0],top:t[1],right:t[2],bottom:t[3]}}return t}function u(t){t.registerTableLayouts({noBorders:{hLineWidth:function(t){return 0},vLineWidth:function(t){return 0},paddingLeft:function(t){return t&&4||0},paddingRight:function(t,e){return t<e.table.widths.length-1?4:0}},headerLineOnly:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:0},vLineWidth:function(t){return 0},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}},lightHorizontalLines:{hLineWidth:function(t,e){return 0===t||t===e.table.body.length?0:t===e.table.headerRows?2:1},vLineWidth:function(t){return 0},hLineColor:function(t){return 1===t?"black":"#aaa"},paddingLeft:function(t){return 0===t?0:8},paddingRight:function(t,e){return t===e.table.widths.length-1?0:8}}})}function l(t){if("string"==typeof t||t instanceof String){var e=w[t.toUpperCase()];if(!e)throw"Page size "+t+" not recognized";return{width:e[0],height:e[1]}}return t}function c(t,e){var n=e.options.size[0]>e.options.size[1]?"landscape":"portrait";if(t.pageSize.orientation!==n){var r=e.options.size[0],i=e.options.size[1];e.options.size=[i,r]}}function f(t,e,n,r){n._pdfMakePages=t,n.addPage();var i=r&&y.sumBy(t,function(t){return t.items.length}),o=0;r=r||function(){};for(var a=0;a<t.length;a++){a>0&&(c(t[a],n),n.addPage(n.options));for(var s=t[a],u=0,l=s.items.length;u<l;u++){var f=s.items[u];switch(f.type){case"vector":d(f.item,n);break;case"line":h(f.item,f.item.x,f.item.y,n);break;case"image":g(f.item,f.item.x,f.item.y,n)}o++,r(o/i)}s.watermark&&p(s,n)}}function h(t,e,n,r){if(t._tocItemNode){var i,o,a=new k(null);switch(t.inlines[0].text=t._tocItemNode.positions[0].pageNumber.toString(),i=a.widthOfString(t.inlines[0].text,t.inlines[0].font,t.inlines[0].fontSize,t.inlines[0].characterSpacing),o=t.inlines[0].width-i,t.inlines[0].width=i,t.inlines[0].alignment){case"right":t.inlines[0].x+=o;break;case"center":t.inlines[0].x+=o/2}}e=e||0,n=n||0;var s=t.getHeight(),u=t.getAscenderHeight(),l=s-u;_.drawBackground(t,e,n,r);for(var c=0,f=t.inlines.length;c<f;c++){var h=t.inlines[c],p=s-h.font.ascender/1e3*h.fontSize-l;if(r.fill(h.color||"black"),r._font=h.font,r.fontSize(h.fontSize),r.text(h.text,e+h.x,n+p,{lineBreak:!1,textWidth:h.width,characterSpacing:h.characterSpacing,wordCount:1,link:h.link}),h.linkToPage){r.ref({Type:"Action",S:"GoTo",D:[h.linkToPage,0,0]}).end();r.annotate(e+h.x,n+p,h.width,h.height,{Subtype:"Link",Dest:[h.linkToPage-1,"XYZ",null,null,null]})}}_.drawDecorations(t,e,n,r)}function p(t,e){var n=t.watermark;e.fill(n.color),e.opacity(n.opacity),e.save();var r=-180*Math.atan2(e.page.height,e.page.width)/Math.PI;e.rotate(r,{origin:[e.page.width/2,e.page.height/2]});var i=e.page.width/2-n.size.size.width/2,o=e.page.height/2-n.size.size.height/4;e._font=n.font,e.fontSize(n.size.fontSize),e.text(n.text,i,o,{lineBreak:!1}),e.restore()}function d(t,e){switch(e.lineWidth(t.lineWidth||1),t.dash?e.dash(t.dash.length,{space:t.dash.space||t.dash.length,phase:t.dash.phase||0}):e.undash(),e.lineJoin(t.lineJoin||"miter"),t.type){case"ellipse":e.ellipse(t.x,t.y,t.r1,t.r2);break;case"rect":if(t.r?e.roundedRect(t.x,t.y,t.w,t.h,t.r):e.rect(t.x,t.y,t.w,t.h),t.linearGradient){for(var n=e.linearGradient(t.x,t.y,t.x+t.w,t.y),r=1/(t.linearGradient.length-1),i=0;i<t.linearGradient.length;i++)n.stop(i*r,t.linearGradient[i]);t.color=n}break;case"line":e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2);break;case"polyline":if(0===t.points.length)break;e.moveTo(t.points[0].x,t.points[0].y);for(var i=1,o=t.points.length;i<o;i++)e.lineTo(t.points[i].x,t.points[i].y);if(t.points.length>1){var a=t.points[0],s=t.points[t.points.length-1];(t.closePath||a.x===s.x&&a.y===s.y)&&e.closePath()}break;case"path":e.path(t.d)}t.color&&t.lineColor?(e.fillColor(t.color,t.fillOpacity||1),e.strokeColor(t.lineColor,t.strokeOpacity||1),e.fillAndStroke()):t.color?(e.fillColor(t.color,t.fillOpacity||1),e.fill()):(e.strokeColor(t.lineColor||"black",t.strokeOpacity||1),e.stroke())}function g(t,e,n,r){r.image(t.image,t.x,t.y,{width:t._width,height:t._height}),t.link&&r.link(t.x,t.y,t._width,t._height,t.link)}var y=n(7),v=n(9),b=n(10),m=n(30),w=n(297),x=n(298),_=n(299),k=n(15);y.noConflict(),r.prototype.createPdfKitDocument=function(t,e){e=e||{};var n=a(t.pageSize,t.pageOrientation);this.pdfKitDoc=new m({size:[n.width,n.height],autoFirstPage:!1,compress:t.compress||!0}),i(t,this.pdfKitDoc),this.fontProvider=new v(this.fontDescriptors,this.pdfKitDoc),t.images=t.images||{};var r=new b(n,s(t.pageMargins||40),new x(this.pdfKitDoc,t.images));u(r),e.tableLayouts&&r.registerTableLayouts(e.tableLayouts);var l=r.layoutDocument(t.content,this.fontProvider,t.styles||{},t.defaultStyle||{fontSize:12,font:"Roboto"},t.background,t.header,t.footer,t.images,t.watermark,t.pageBreakBefore),c=t.maxPagesNumber||-1;if("number"==typeof c&&c>-1&&(l=l.slice(0,c)),n.height===1/0){var h=o(l,t.pageMargins);this.pdfKitDoc.options.size=[n.width,h]}if(f(l,this.fontProvider,this.pdfKitDoc,e.progressCallback),e.autoPrint){var p=this.pdfKitDoc.ref({Type:"Action",S:"Named",N:"Print"});this.pdfKitDoc._root.data.OpenAction=p,p.end()}return this.pdfKitDoc},t.exports=r,r.prototype.fs=n(56)},function(t,e,n){var r;(function(t,i){(function(){function o(t,e){return t.set(e[0],e[1]),t}function a(t,e){return t.add(e),t}function s(t,e,n){switch(n.length){ case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function u(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function l(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function c(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function f(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function h(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function p(t,e){return!!(null==t?0:t.length)&&S(t,e,0)>-1}function d(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function g(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function y(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function v(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function b(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function m(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function w(t){return t.split("")}function x(t){return t.match(Ue)||[]}function _(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function k(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function S(t,e,n){return e===e?J(t,e,n):k(t,A,n)}function C(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function A(t){return t!==t}function P(t,e){var n=null==t?0:t.length;return n?B(t,e)/n:Rt}function E(t){return function(e){return null==e?it:e[t]}}function I(t){return function(e){return null==t?it:t[e]}}function T(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function O(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function B(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==it&&(n=n===it?o:n+o)}return n}function L(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function M(t,e){return g(e,function(e){return[e,t[e]]})}function R(t){return function(e){return t(e)}}function F(t,e){return g(e,function(e){return t[e]})}function z(t,e){return t.has(e)}function D(t,e){for(var n=-1,r=t.length;++n<r&&S(e,t[n],0)>-1;);return n}function N(t,e){for(var n=t.length;n--&&S(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function W(t){return"\\"+En[t]}function j(t,e){return null==t?it:t[e]}function G(t){return mn.test(t)}function V(t){return wn.test(t)}function H(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function q(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function Z(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==ct||(t[n]=ct,o[i++]=n)}return o}function X(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function K(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function J(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function Q(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function $(t){return G(t)?et(t):Hn(t)}function tt(t){return G(t)?nt(t):w(t)}function et(t){for(var e=vn.lastIndex=0;vn.test(t);)++e;return e}function nt(t){return t.match(vn)||[]}function rt(t){return t.match(bn)||[]}var it,ot=200,at="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",st="Expected a function",ut="__lodash_hash_undefined__",lt=500,ct="__lodash_placeholder__",ft=1,ht=2,pt=4,dt=1,gt=2,yt=1,vt=2,bt=4,mt=8,wt=16,xt=32,_t=64,kt=128,St=256,Ct=512,At=30,Pt="...",Et=800,It=16,Tt=1,Ot=2,Bt=1/0,Lt=9007199254740991,Mt=1.7976931348623157e308,Rt=NaN,Ft=4294967295,zt=Ft-1,Dt=Ft>>>1,Nt=[["ary",kt],["bind",yt],["bindKey",vt],["curry",mt],["curryRight",wt],["flip",Ct],["partial",xt],["partialRight",_t],["rearg",St]],Ut="[object Arguments]",Wt="[object Array]",jt="[object AsyncFunction]",Gt="[object Boolean]",Vt="[object Date]",Ht="[object DOMException]",qt="[object Error]",Zt="[object Function]",Yt="[object GeneratorFunction]",Xt="[object Map]",Kt="[object Number]",Jt="[object Null]",Qt="[object Object]",$t="[object Proxy]",te="[object RegExp]",ee="[object Set]",ne="[object String]",re="[object Symbol]",ie="[object Undefined]",oe="[object WeakMap]",ae="[object WeakSet]",se="[object ArrayBuffer]",ue="[object DataView]",le="[object Float32Array]",ce="[object Float64Array]",fe="[object Int8Array]",he="[object Int16Array]",pe="[object Int32Array]",de="[object Uint8Array]",ge="[object Uint8ClampedArray]",ye="[object Uint16Array]",ve="[object Uint32Array]",be=/\b__p \+= '';/g,me=/\b(__p \+=) '' \+/g,we=/(__e\(.*?\)|\b__t\)) \+\n'';/g,xe=/&(?:amp|lt|gt|quot|#39);/g,_e=/[&<>"']/g,ke=RegExp(xe.source),Se=RegExp(_e.source),Ce=/<%-([\s\S]+?)%>/g,Ae=/<%([\s\S]+?)%>/g,Pe=/<%=([\s\S]+?)%>/g,Ee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ie=/^\w*$/,Te=/^\./,Oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Be=/[\\^$.*+?()[\]{}|]/g,Le=RegExp(Be.source),Me=/^\s+|\s+$/g,Re=/^\s+/,Fe=/\s+$/,ze=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,De=/\{\n\/\* \[wrapped with (.+)\] \*/,Ne=/,? & /,Ue=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,We=/\\(\\)?/g,je=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ge=/\w*$/,Ve=/^[-+]0x[0-9a-f]+$/i,He=/^0b[01]+$/i,qe=/^\[object .+?Constructor\]$/,Ze=/^0o[0-7]+$/i,Ye=/^(?:0|[1-9]\d*)$/,Xe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ke=/($^)/,Je=/['\n\r\u2028\u2029\\]/g,Qe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",$e="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tn="["+$e+"]",en="["+Qe+"]",nn="[a-z\\xdf-\\xf6\\xf8-\\xff]",rn="[^\\ud800-\\udfff"+$e+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",on="\\ud83c[\\udffb-\\udfff]",an="(?:\\ud83c[\\udde6-\\uddff]){2}",sn="[\\ud800-\\udbff][\\udc00-\\udfff]",un="[A-Z\\xc0-\\xd6\\xd8-\\xde]",ln="(?:"+nn+"|"+rn+")",cn="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",fn="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",an,sn].join("|")+")[\\ufe0e\\ufe0f]?"+cn+")*",hn="[\\ufe0e\\ufe0f]?"+cn+fn,pn="(?:"+["[\\u2700-\\u27bf]",an,sn].join("|")+")"+hn,dn="(?:"+["[^\\ud800-\\udfff]"+en+"?",en,an,sn,"[\\ud800-\\udfff]"].join("|")+")",gn=RegExp("['’]","g"),yn=RegExp(en,"g"),vn=RegExp(on+"(?="+on+")|"+dn+hn,"g"),bn=RegExp([un+"?"+nn+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tn,un,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tn,un+ln,"$"].join("|")+")",un+"?"+ln+"+(?:['’](?:d|ll|m|re|s|t|ve))?",un+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",pn].join("|"),"g"),mn=RegExp("[\\u200d\\ud800-\\udfff"+Qe+"\\ufe0e\\ufe0f]"),wn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],_n=-1,kn={};kn[le]=kn[ce]=kn[fe]=kn[he]=kn[pe]=kn[de]=kn[ge]=kn[ye]=kn[ve]=!0,kn[Ut]=kn[Wt]=kn[se]=kn[Gt]=kn[ue]=kn[Vt]=kn[qt]=kn[Zt]=kn[Xt]=kn[Kt]=kn[Qt]=kn[te]=kn[ee]=kn[ne]=kn[oe]=!1;var Sn={};Sn[Ut]=Sn[Wt]=Sn[se]=Sn[ue]=Sn[Gt]=Sn[Vt]=Sn[le]=Sn[ce]=Sn[fe]=Sn[he]=Sn[pe]=Sn[Xt]=Sn[Kt]=Sn[Qt]=Sn[te]=Sn[ee]=Sn[ne]=Sn[re]=Sn[de]=Sn[ge]=Sn[ye]=Sn[ve]=!0,Sn[qt]=Sn[Zt]=Sn[oe]=!1;var Cn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},An={"&":"&","<":"<",">":">",'"':""","'":"'"},Pn={"&":"&","<":"<",">":">",""":'"',"'":"'"},En={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},In=parseFloat,Tn=parseInt,On="object"==typeof t&&t&&t.Object===Object&&t,Bn="object"==typeof self&&self&&self.Object===Object&&self,Ln=On||Bn||Function("return this")(),Mn="object"==typeof e&&e&&!e.nodeType&&e,Rn=Mn&&"object"==typeof i&&i&&!i.nodeType&&i,Fn=Rn&&Rn.exports===Mn,zn=Fn&&On.process,Dn=function(){try{return zn&&zn.binding&&zn.binding("util")}catch(t){}}(),Nn=Dn&&Dn.isArrayBuffer,Un=Dn&&Dn.isDate,Wn=Dn&&Dn.isMap,jn=Dn&&Dn.isRegExp,Gn=Dn&&Dn.isSet,Vn=Dn&&Dn.isTypedArray,Hn=E("length"),qn=I(Cn),Zn=I(An),Yn=I(Pn),Xn=function t(e){function n(t){if(ou(t)&&!vh(t)&&!(t instanceof w)){if(t instanceof i)return t;if(yc.call(t,"__wrapped__"))return na(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=it}function w(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Ft,this.__views__=[]}function I(){var t=new w(this.__wrapped__);return t.__actions__=zi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=zi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=zi(this.__views__),t}function J(){if(this.__filtered__){var t=new w(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=vh(t),r=e<0,i=n?t.length:0,o=Po(0,i,this.__views__),a=o.start,s=o.end,u=s-a,l=r?s:a-1,c=this.__iteratees__,f=c.length,h=0,p=qc(u,this.__takeCount__);if(!n||!r&&i==u&&p==u)return bi(t,this.__actions__);var d=[];t:for(;u--&&h<p;){l+=e;for(var g=-1,y=t[l];++g<f;){var v=c[g],b=v.iteratee,m=v.type,w=b(y);if(m==Ot)y=w;else if(!w){if(m==Tt)continue t;break t}}d[h++]=y}return d}function nt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ue(){this.__data__=nf?nf(null):{},this.size=0}function Qe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function $e(t){var e=this.__data__;if(nf){var n=e[t];return n===ut?it:n}return yc.call(e,t)?e[t]:it}function tn(t){var e=this.__data__;return nf?e[t]!==it:yc.call(e,t)}function en(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nf&&e===it?ut:e,this}function nn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function rn(){this.__data__=[],this.size=0}function on(t){var e=this.__data__,n=Kn(e,t);return!(n<0)&&(n==e.length-1?e.pop():Tc.call(e,n,1),--this.size,!0)}function an(t){var e=this.__data__,n=Kn(e,t);return n<0?it:e[n][1]}function sn(t){return Kn(this.__data__,t)>-1}function un(t,e){var n=this.__data__,r=Kn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function ln(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function cn(){this.size=0,this.__data__={hash:new nt,map:new(Qc||nn),string:new nt}}function fn(t){var e=ko(this,t).delete(t);return this.size-=e?1:0,e}function hn(t){return ko(this,t).get(t)}function pn(t){return ko(this,t).has(t)}function dn(t,e){var n=ko(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function vn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new ln;++e<n;)this.add(t[e])}function bn(t){return this.__data__.set(t,ut),this}function mn(t){return this.__data__.has(t)}function wn(t){var e=this.__data__=new nn(t);this.size=e.size}function Cn(){this.__data__=new nn,this.size=0}function An(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function Pn(t){return this.__data__.get(t)}function En(t){return this.__data__.has(t)}function On(t,e){var n=this.__data__;if(n instanceof nn){var r=n.__data__;if(!Qc||r.length<ot-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new ln(r)}return n.set(t,e),this.size=n.size,this}function Bn(t,e){var n=vh(t),r=!n&&yh(t),i=!n&&!r&&mh(t),o=!n&&!r&&!i&&Sh(t),a=n||r||i||o,s=a?L(t.length,lc):[],u=s.length;for(var l in t)!e&&!yc.call(t,l)||a&&("length"==l||i&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Ro(l,u))||s.push(l);return s}function Mn(t){var e=t.length;return e?t[$r(0,e-1)]:it}function Rn(t,e){return Qo(zi(t),nr(e,0,t.length))}function zn(t){return Qo(zi(t))}function Dn(t,e,n){(n===it||Hs(t[e],n))&&(n!==it||e in t)||tr(t,e,n)}function Hn(t,e,n){var r=t[e];yc.call(t,e)&&Hs(r,n)&&(n!==it||e in t)||tr(t,e,n)}function Kn(t,e){for(var n=t.length;n--;)if(Hs(t[n][0],e))return n;return-1}function Jn(t,e,n,r){return gf(t,function(t,i,o){e(r,t,n(t),o)}),r}function Qn(t,e){return t&&Di(e,Uu(e),t)}function $n(t,e){return t&&Di(e,Wu(e),t)}function tr(t,e,n){"__proto__"==e&&Mc?Mc(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function er(t,e){for(var n=-1,r=e.length,i=nc(r),o=null==t;++n<r;)i[n]=o?it:zu(t,e[n]);return i}function nr(t,e,n){return t===t&&(n!==it&&(t=t<=n?t:n),e!==it&&(t=t>=e?t:e)),t}function rr(t,e,n,r,i,o){var a,s=e&ft,u=e&ht,c=e&pt;if(n&&(a=i?n(t,r,i,o):n(t)),a!==it)return a;if(!iu(t))return t;var f=vh(t);if(f){if(a=To(t),!s)return zi(t,a)}else{var h=Pf(t),p=h==Zt||h==Yt;if(mh(t))return Ci(t,s);if(h==Qt||h==Ut||p&&!i){if(a=u||p?{}:Oo(t),!s)return u?Ui(t,$n(a,t)):Ni(t,Qn(a,t))}else{if(!Sn[h])return i?t:{};a=Bo(t,h,rr,s)}}o||(o=new wn);var d=o.get(t);if(d)return d;o.set(t,a);var g=c?u?mo:bo:u?Wu:Uu,y=f?it:g(t);return l(y||t,function(r,i){y&&(i=r,r=t[i]),Hn(a,i,rr(r,e,n,i,t,o))}),a}function ir(t){var e=Uu(t);return function(n){return or(n,t,e)}}function or(t,e,n){var r=n.length;if(null==t)return!r;for(t=sc(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===it&&!(i in t)||!o(a))return!1}return!0}function ar(t,e,n){if("function"!=typeof t)throw new cc(st);return Tf(function(){t.apply(it,n)},e)}function sr(t,e,n,r){var i=-1,o=p,a=!0,s=t.length,u=[],l=e.length;if(!s)return u;n&&(e=g(e,R(n))),r?(o=d,a=!1):e.length>=ot&&(o=z,a=!1,e=new vn(e));t:for(;++i<s;){var c=t[i],f=null==n?c:n(c);if(c=r||0!==c?c:0,a&&f===f){for(var h=l;h--;)if(e[h]===f)continue t;u.push(c)}else o(e,f,r)||u.push(c)}return u}function ur(t,e){var n=!0;return gf(t,function(t,r,i){return n=!!e(t,r,i)}),n}function lr(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],a=e(o);if(null!=a&&(s===it?a===a&&!yu(a):n(a,s)))var s=a,u=o}return u}function cr(t,e,n,r){var i=t.length;for(n=_u(n),n<0&&(n=-n>i?0:i+n),r=r===it||r>i?i:_u(r),r<0&&(r+=i),r=n>r?0:ku(r);n<r;)t[n++]=e;return t}function fr(t,e){var n=[];return gf(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function hr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=Mo),i||(i=[]);++o<a;){var s=t[o];e>0&&n(s)?e>1?hr(s,e-1,n,r,i):y(i,s):r||(i[i.length]=s)}return i}function pr(t,e){return t&&vf(t,e,Uu)}function dr(t,e){return t&&bf(t,e,Uu)}function gr(t,e){return h(e,function(e){return eu(t[e])})}function yr(t,e){e=ki(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[$o(e[n++])];return n&&n==r?t:it}function vr(t,e,n){var r=e(t);return vh(t)?r:y(r,n(t))}function br(t){return null==t?t===it?ie:Jt:Lc&&Lc in sc(t)?Ao(t):qo(t)}function mr(t,e){return t>e}function wr(t,e){return null!=t&&yc.call(t,e)}function xr(t,e){return null!=t&&e in sc(t)}function _r(t,e,n){return t>=qc(e,n)&&t<Hc(e,n)}function kr(t,e,n){for(var r=n?d:p,i=t[0].length,o=t.length,a=o,s=nc(o),u=1/0,l=[];a--;){var c=t[a];a&&e&&(c=g(c,R(e))),u=qc(c.length,u),s[a]=!n&&(e||i>=120&&c.length>=120)?new vn(a&&c):it}c=t[0];var f=-1,h=s[0];t:for(;++f<i&&l.length<u;){var y=c[f],v=e?e(y):y;if(y=n||0!==y?y:0,!(h?z(h,v):r(l,v,n))){for(a=o;--a;){var b=s[a];if(!(b?z(b,v):r(t[a],v,n)))continue t}h&&h.push(v),l.push(y)}}return l}function Sr(t,e,n,r){return pr(t,function(t,i,o){e(r,n(t),i,o)}),r}function Cr(t,e,n){e=ki(e,t),t=Yo(t,e);var r=null==t?t:t[$o(xa(e))];return null==r?it:s(r,t,n)}function Ar(t){return ou(t)&&br(t)==Ut}function Pr(t){return ou(t)&&br(t)==se}function Er(t){return ou(t)&&br(t)==Vt}function Ir(t,e,n,r,i){return t===e||(null==t||null==e||!ou(t)&&!ou(e)?t!==t&&e!==e:Tr(t,e,n,r,Ir,i))}function Tr(t,e,n,r,i,o){var a=vh(t),s=vh(e),u=a?Wt:Pf(t),l=s?Wt:Pf(e);u=u==Ut?Qt:u,l=l==Ut?Qt:l;var c=u==Qt,f=l==Qt,h=u==l;if(h&&mh(t)){if(!mh(e))return!1;a=!0,c=!1}if(h&&!c)return o||(o=new wn),a||Sh(t)?po(t,e,n,r,i,o):go(t,e,u,n,r,i,o);if(!(n&dt)){var p=c&&yc.call(t,"__wrapped__"),d=f&&yc.call(e,"__wrapped__");if(p||d){var g=p?t.value():t,y=d?e.value():e;return o||(o=new wn),i(g,y,n,r,o)}}return!!h&&(o||(o=new wn),yo(t,e,n,r,i,o))}function Or(t){return ou(t)&&Pf(t)==Xt}function Br(t,e,n,r){var i=n.length,o=i,a=!r;if(null==t)return!o;for(t=sc(t);i--;){var s=n[i];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++i<o;){s=n[i];var u=s[0],l=t[u],c=s[1];if(a&&s[2]){if(l===it&&!(u in t))return!1}else{var f=new wn;if(r)var h=r(l,c,u,t,e,f);if(!(h===it?Ir(c,l,dt|gt,r,f):h))return!1}}return!0}function Lr(t){return!(!iu(t)||Uo(t))&&(eu(t)?_c:qe).test(ta(t))}function Mr(t){return ou(t)&&br(t)==te}function Rr(t){return ou(t)&&Pf(t)==ee}function Fr(t){return ou(t)&&ru(t.length)&&!!kn[br(t)]}function zr(t){return"function"==typeof t?t:null==t?Tl:"object"==typeof t?vh(t)?Gr(t[0],t[1]):jr(t):Dl(t)}function Dr(t){if(!Wo(t))return Vc(t);var e=[];for(var n in sc(t))yc.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Nr(t){if(!iu(t))return Ho(t);var e=Wo(t),n=[];for(var r in t)("constructor"!=r||!e&&yc.call(t,r))&&n.push(r);return n}function Ur(t,e){return t<e}function Wr(t,e){var n=-1,r=qs(t)?nc(t.length):[];return gf(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function jr(t){var e=So(t);return 1==e.length&&e[0][2]?Go(e[0][0],e[0][1]):function(n){return n===t||Br(n,t,e)}}function Gr(t,e){return zo(t)&&jo(e)?Go($o(t),e):function(n){var r=zu(n,t);return r===it&&r===e?Nu(n,t):Ir(e,r,dt|gt)}}function Vr(t,e,n,r,i){t!==e&&vf(e,function(o,a){if(iu(o))i||(i=new wn),Hr(t,e,a,n,Vr,r,i);else{var s=r?r(t[a],o,a+"",t,e,i):it;s===it&&(s=o),Dn(t,a,s)}},Wu)}function Hr(t,e,n,r,i,o,a){var s=t[n],u=e[n],l=a.get(u);if(l)return void Dn(t,n,l);var c=o?o(s,u,n+"",t,e,a):it,f=c===it;if(f){var h=vh(u),p=!h&&mh(u),d=!h&&!p&&Sh(u);c=u,h||p||d?vh(s)?c=s:Zs(s)?c=zi(s):p?(f=!1,c=Ci(u,!0)):d?(f=!1,c=Bi(u,!0)):c=[]:pu(u)||yh(u)?(c=s,yh(s)?c=Cu(s):(!iu(s)||r&&eu(s))&&(c=Oo(u))):f=!1}f&&(a.set(u,c),i(c,u,r,o,a),a.delete(u)),Dn(t,n,c)}function qr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Ro(e,n)?t[e]:it}function Zr(t,e,n){var r=-1;return e=g(e.length?e:[Tl],R(_o())),O(Wr(t,function(t,n,i){return{criteria:g(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return Mi(t,e,n)})}function Yr(t,e){return Xr(t,e,function(e,n){return Nu(t,n)})}function Xr(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],s=yr(t,a);n(s,a)&&oi(o,ki(a,t),s)}return o}function Kr(t){return function(e){return yr(e,t)}}function Jr(t,e,n,r){var i=r?C:S,o=-1,a=e.length,s=t;for(t===e&&(e=zi(e)),n&&(s=g(t,R(n)));++o<a;)for(var u=0,l=e[o],c=n?n(l):l;(u=i(s,c,u,r))>-1;)s!==t&&Tc.call(s,u,1),Tc.call(t,u,1);return t}function Qr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Ro(i)?Tc.call(t,i,1):gi(t,i)}}return t}function $r(t,e){return t+Nc(Xc()*(e-t+1))}function ti(t,e,n,r){for(var i=-1,o=Hc(Dc((e-t)/(n||1)),0),a=nc(o);o--;)a[r?o:++i]=t,t+=n;return a}function ei(t,e){var n="";if(!t||e<1||e>Lt)return n;do{e%2&&(n+=t),(e=Nc(e/2))&&(t+=t)}while(e);return n}function ni(t,e){return Of(Zo(t,e,Tl),t+"")}function ri(t){return Mn($u(t))}function ii(t,e){var n=$u(t);return Qo(n,nr(e,0,n.length))}function oi(t,e,n,r){if(!iu(t))return t;e=ki(e,t);for(var i=-1,o=e.length,a=o-1,s=t;null!=s&&++i<o;){var u=$o(e[i]),l=n;if(i!=a){var c=s[u];l=r?r(c,u,s):it,l===it&&(l=iu(c)?c:Ro(e[i+1])?[]:{})}Hn(s,u,l),s=s[u]}return t}function ai(t){return Qo($u(t))}function si(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=nc(i);++r<i;)o[r]=t[r+e];return o}function ui(t,e){var n;return gf(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function li(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e===e&&i<=Dt){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!yu(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return ci(t,e,Tl,n)}function ci(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,a=e!==e,s=null===e,u=yu(e),l=e===it;i<o;){var c=Nc((i+o)/2),f=n(t[c]),h=f!==it,p=null===f,d=f===f,g=yu(f);if(a)var y=r||d;else y=l?d&&(r||h):s?d&&h&&(r||!p):u?d&&h&&!p&&(r||!g):!p&&!g&&(r?f<=e:f<e);y?i=c+1:o=c}return qc(o,zt)}function fi(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],s=e?e(a):a;if(!n||!Hs(s,u)){var u=s;o[i++]=0===a?0:a}}return o}function hi(t){return"number"==typeof t?t:yu(t)?Rt:+t}function pi(t){if("string"==typeof t)return t;if(vh(t))return g(t,pi)+"";if(yu(t))return pf?pf.call(t):"";var e=t+"";return"0"==e&&1/t==-Bt?"-0":e}function di(t,e,n){var r=-1,i=p,o=t.length,a=!0,s=[],u=s;if(n)a=!1,i=d;else if(o>=ot){var l=e?null:kf(t);if(l)return X(l);a=!1,i=z,u=new vn}else u=e?[]:s;t:for(;++r<o;){var c=t[r],f=e?e(c):c;if(c=n||0!==c?c:0,a&&f===f){for(var h=u.length;h--;)if(u[h]===f)continue t;e&&u.push(f),s.push(c)}else i(u,f,n)||(u!==s&&u.push(f),s.push(c))}return s}function gi(t,e){return e=ki(e,t),null==(t=Yo(t,e))||delete t[$o(xa(e))]}function yi(t,e,n,r){return oi(t,e,n(yr(t,e)),r)}function vi(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?si(t,r?0:o,r?o+1:i):si(t,r?o+1:0,r?i:o)}function bi(t,e){var n=t;return n instanceof w&&(n=n.value()),v(e,function(t,e){return e.func.apply(e.thisArg,y([t],e.args))},n)}function mi(t,e,n){var r=t.length;if(r<2)return r?di(t[0]):[];for(var i=-1,o=nc(r);++i<r;)for(var a=t[i],s=-1;++s<r;)s!=i&&(o[i]=sr(o[i]||a,t[s],e,n));return di(hr(o,1),e,n)}function wi(t,e,n){for(var r=-1,i=t.length,o=e.length,a={};++r<i;){var s=r<o?e[r]:it;n(a,t[r],s)}return a}function xi(t){return Zs(t)?t:[]}function _i(t){return"function"==typeof t?t:Tl}function ki(t,e){return vh(t)?t:zo(t,e)?[t]:Bf(Pu(t))}function Si(t,e,n){var r=t.length;return n=n===it?r:n,!e&&n>=r?t:si(t,e,n)}function Ci(t,e){if(e)return t.slice();var n=t.length,r=Ac?Ac(n):new t.constructor(n);return t.copy(r),r}function Ai(t){var e=new t.constructor(t.byteLength);return new Cc(e).set(new Cc(t)),e}function Pi(t,e){var n=e?Ai(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function Ei(t,e,n){return v(e?n(q(t),ft):q(t),o,new t.constructor)}function Ii(t){var e=new t.constructor(t.source,Ge.exec(t));return e.lastIndex=t.lastIndex,e}function Ti(t,e,n){return v(e?n(X(t),ft):X(t),a,new t.constructor)}function Oi(t){return hf?sc(hf.call(t)):{}}function Bi(t,e){var n=e?Ai(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Li(t,e){if(t!==e){var n=t!==it,r=null===t,i=t===t,o=yu(t),a=e!==it,s=null===e,u=e===e,l=yu(e);if(!s&&!l&&!o&&t>e||o&&a&&u&&!s&&!l||r&&a&&u||!n&&u||!i)return 1;if(!r&&!o&&!l&&t<e||l&&n&&i&&!r&&!o||s&&n&&i||!a&&i||!u)return-1}return 0}function Mi(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,a=i.length,s=n.length;++r<a;){var u=Li(i[r],o[r]);if(u){if(r>=s)return u;return u*("desc"==n[r]?-1:1)}}return t.index-e.index}function Ri(t,e,n,r){for(var i=-1,o=t.length,a=n.length,s=-1,u=e.length,l=Hc(o-a,0),c=nc(u+l),f=!r;++s<u;)c[s]=e[s];for(;++i<a;)(f||i<o)&&(c[n[i]]=t[i]);for(;l--;)c[s++]=t[i++];return c}function Fi(t,e,n,r){for(var i=-1,o=t.length,a=-1,s=n.length,u=-1,l=e.length,c=Hc(o-s,0),f=nc(c+l),h=!r;++i<c;)f[i]=t[i];for(var p=i;++u<l;)f[p+u]=e[u];for(;++a<s;)(h||i<o)&&(f[p+n[a]]=t[i++]);return f}function zi(t,e){var n=-1,r=t.length;for(e||(e=nc(r));++n<r;)e[n]=t[n];return e}function Di(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],u=r?r(n[s],t[s],s,n,t):it;u===it&&(u=t[s]),i?tr(n,s,u):Hn(n,s,u)}return n}function Ni(t,e){return Di(t,Cf(t),e)}function Ui(t,e){return Di(t,Af(t),e)}function Wi(t,e){return function(n,r){var i=vh(n)?u:Jn,o=e?e():{};return i(n,t,_o(r,2),o)}}function ji(t){return ni(function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:it,a=i>2?n[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,a&&Fo(n[0],n[1],a)&&(o=i<3?it:o,i=1),e=sc(e);++r<i;){var s=n[r];s&&t(e,s,r,o)}return e})}function Gi(t,e){return function(n,r){if(null==n)return n;if(!qs(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=sc(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function Vi(t){return function(e,n,r){for(var i=-1,o=sc(e),a=r(e),s=a.length;s--;){var u=a[t?s:++i];if(!1===n(o[u],u,o))break}return e}}function Hi(t,e,n){function r(){return(this&&this!==Ln&&this instanceof r?o:t).apply(i?n:this,arguments)}var i=e&yt,o=Yi(t);return r}function qi(t){return function(e){e=Pu(e);var n=G(e)?tt(e):it,r=n?n[0]:e.charAt(0),i=n?Si(n,1).join(""):e.slice(1);return r[t]()+i}}function Zi(t){return function(e){return v(Cl(ol(e).replace(gn,"")),t,"")}}function Yi(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=df(t.prototype),r=t.apply(n,e);return iu(r)?r:n}}function Xi(t,e,n){function r(){for(var o=arguments.length,a=nc(o),u=o,l=xo(r);u--;)a[u]=arguments[u];var c=o<3&&a[0]!==l&&a[o-1]!==l?[]:Y(a,l);return(o-=c.length)<n?ao(t,e,Qi,r.placeholder,it,a,c,it,it,n-o):s(this&&this!==Ln&&this instanceof r?i:t,this,a)}var i=Yi(t);return r}function Ki(t){return function(e,n,r){var i=sc(e);if(!qs(e)){var o=_o(n,3);e=Uu(e),n=function(t){return o(i[t],t,i)}}var a=t(e,n,r);return a>-1?i[o?e[a]:a]:it}}function Ji(t){return vo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new cc(st);if(o&&!s&&"wrapper"==wo(a))var s=new i([],!0)}for(r=s?r:n;++r<n;){a=e[r];var u=wo(a),l="wrapper"==u?Sf(a):it;s=l&&No(l[0])&&l[1]==(kt|mt|xt|St)&&!l[4].length&&1==l[9]?s[wo(l[0])].apply(s,l[3]):1==a.length&&No(a)?s[u]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&vh(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function Qi(t,e,n,r,i,o,a,s,u,l){function c(){for(var v=arguments.length,b=nc(v),m=v;m--;)b[m]=arguments[m];if(d)var w=xo(c),x=U(b,w);if(r&&(b=Ri(b,r,i,d)),o&&(b=Fi(b,o,a,d)),v-=x,d&&v<l){var _=Y(b,w);return ao(t,e,Qi,c.placeholder,n,b,_,s,u,l-v)}var k=h?n:this,S=p?k[t]:t;return v=b.length,s?b=Xo(b,s):g&&v>1&&b.reverse(),f&&u<v&&(b.length=u),this&&this!==Ln&&this instanceof c&&(S=y||Yi(S)),S.apply(k,b)}var f=e&kt,h=e&yt,p=e&vt,d=e&(mt|wt),g=e&Ct,y=p?it:Yi(t);return c}function $i(t,e){return function(n,r){return Sr(n,t,e(r),{})}}function to(t,e){return function(n,r){var i;if(n===it&&r===it)return e;if(n!==it&&(i=n),r!==it){if(i===it)return r;"string"==typeof n||"string"==typeof r?(n=pi(n),r=pi(r)):(n=hi(n),r=hi(r)),i=t(n,r)}return i}}function eo(t){return vo(function(e){return e=g(e,R(_o())),ni(function(n){var r=this;return t(e,function(t){return s(t,r,n)})})})}function no(t,e){e=e===it?" ":pi(e);var n=e.length;if(n<2)return n?ei(e,t):e;var r=ei(e,Dc(t/$(e)));return G(e)?Si(tt(r),0,t).join(""):r.slice(0,t)}function ro(t,e,n,r){function i(){for(var e=-1,u=arguments.length,l=-1,c=r.length,f=nc(c+u),h=this&&this!==Ln&&this instanceof i?a:t;++l<c;)f[l]=r[l];for(;u--;)f[l++]=arguments[++e];return s(h,o?n:this,f)}var o=e&yt,a=Yi(t);return i}function io(t){return function(e,n,r){return r&&"number"!=typeof r&&Fo(e,n,r)&&(n=r=it),e=xu(e),n===it?(n=e,e=0):n=xu(n),r=r===it?e<n?1:-1:xu(r),ti(e,n,r,t)}}function oo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Su(e),n=Su(n)),t(e,n)}}function ao(t,e,n,r,i,o,a,s,u,l){var c=e&mt,f=c?a:it,h=c?it:a,p=c?o:it,d=c?it:o;e|=c?xt:_t,(e&=~(c?_t:xt))&bt||(e&=~(yt|vt));var g=[t,e,i,p,f,d,h,s,u,l],y=n.apply(it,g);return No(t)&&If(y,g),y.placeholder=r,Ko(y,t,e)}function so(t){var e=ac[t];return function(t,n){if(t=Su(t),n=null==n?0:qc(_u(n),292)){var r=(Pu(t)+"e").split("e");return r=(Pu(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"),+(r[0]+"e"+(+r[1]-n))}return e(t)}}function uo(t){return function(e){var n=Pf(e);return n==Xt?q(e):n==ee?K(e):M(e,t(e))}}function lo(t,e,n,r,i,o,a,s){var u=e&vt;if(!u&&"function"!=typeof t)throw new cc(st);var l=r?r.length:0;if(l||(e&=~(xt|_t),r=i=it),a=a===it?a:Hc(_u(a),0),s=s===it?s:_u(s),l-=i?i.length:0,e&_t){var c=r,f=i;r=i=it}var h=u?it:Sf(t),p=[t,e,n,r,i,c,f,o,a,s];if(h&&Vo(p,h),t=p[0],e=p[1],n=p[2],r=p[3],i=p[4],s=p[9]=p[9]===it?u?0:t.length:Hc(p[9]-l,0),!s&&e&(mt|wt)&&(e&=~(mt|wt)),e&&e!=yt)d=e==mt||e==wt?Xi(t,e,s):e!=xt&&e!=(yt|xt)||i.length?Qi.apply(it,p):ro(t,e,n,r);else var d=Hi(t,e,n);return Ko((h?mf:If)(d,p),t,e)}function co(t,e,n,r){return t===it||Hs(t,pc[n])&&!yc.call(r,n)?e:t}function fo(t,e,n,r,i,o){return iu(t)&&iu(e)&&(o.set(e,t),Vr(t,e,it,fo,o),o.delete(e)),t}function ho(t){return pu(t)?it:t}function po(t,e,n,r,i,o){var a=n&dt,s=t.length,u=e.length;if(s!=u&&!(a&&u>s))return!1;var l=o.get(t);if(l&&o.get(e))return l==e;var c=-1,f=!0,h=n>?new vn:it;for(o.set(t,e),o.set(e,t);++c<s;){var p=t[c],d=e[c];if(r)var g=a?r(d,p,c,e,t,o):r(p,d,c,t,e,o);if(g!==it){if(g)continue;f=!1;break}if(h){if(!m(e,function(t,e){if(!z(h,e)&&(p===t||i(p,t,n,r,o)))return h.push(e)})){f=!1;break}}else if(p!==d&&!i(p,d,n,r,o)){f=!1;break}}return o.delete(t),o.delete(e),f}function go(t,e,n,r,i,o,a){switch(n){case ue:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case se:return!(t.byteLength!=e.byteLength||!o(new Cc(t),new Cc(e)));case Gt:case Vt:case Kt:return Hs(+t,+e);case qt:return t.name==e.name&&t.message==e.message;case te:case ne:return t==e+"";case Xt:var s=q;case ee:var u=r&dt;if(s||(s=X),t.size!=e.size&&!u)return!1;var l=a.get(t);if(l)return l==e;r|=gt,a.set(t,e);var c=po(s(t),s(e),r,i,o,a);return a.delete(t),c;case re:if(hf)return hf.call(t)==hf.call(e)}return!1}function yo(t,e,n,r,i,o){var a=n&dt,s=bo(t),u=s.length;if(u!=bo(e).length&&!a)return!1;for(var l=u;l--;){var c=s[l];if(!(a?c in e:yc.call(e,c)))return!1}var f=o.get(t);if(f&&o.get(e))return f==e;var h=!0;o.set(t,e),o.set(e,t);for(var p=a;++l<u;){c=s[l];var d=t[c],g=e[c];if(r)var y=a?r(g,d,c,e,t,o):r(d,g,c,t,e,o) ;if(!(y===it?d===g||i(d,g,n,r,o):y)){h=!1;break}p||(p="constructor"==c)}if(h&&!p){var v=t.constructor,b=e.constructor;v!=b&&"constructor"in t&&"constructor"in e&&!("function"==typeof v&&v instanceof v&&"function"==typeof b&&b instanceof b)&&(h=!1)}return o.delete(t),o.delete(e),h}function vo(t){return Of(Zo(t,it,pa),t+"")}function bo(t){return vr(t,Uu,Cf)}function mo(t){return vr(t,Wu,Af)}function wo(t){for(var e=t.name+"",n=of[e],r=yc.call(of,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function xo(t){return(yc.call(n,"placeholder")?n:t).placeholder}function _o(){var t=n.iteratee||Ol;return t=t===Ol?zr:t,arguments.length?t(arguments[0],arguments[1]):t}function ko(t,e){var n=t.__data__;return Do(e)?n["string"==typeof e?"string":"hash"]:n.map}function So(t){for(var e=Uu(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,jo(i)]}return e}function Co(t,e){var n=j(t,e);return Lr(n)?n:it}function Ao(t){var e=yc.call(t,Lc),n=t[Lc];try{t[Lc]=it;var r=!0}catch(t){}var i=mc.call(t);return r&&(e?t[Lc]=n:delete t[Lc]),i}function Po(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=qc(e,t+a);break;case"takeRight":t=Hc(t,e-a)}}return{start:t,end:e}}function Eo(t){var e=t.match(De);return e?e[1].split(Ne):[]}function Io(t,e,n){e=ki(e,t);for(var r=-1,i=e.length,o=!1;++r<i;){var a=$o(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&ru(i)&&Ro(a,i)&&(vh(t)||yh(t))}function To(t){var e=t.length,n=t.constructor(e);return e&&"string"==typeof t[0]&&yc.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function Oo(t){return"function"!=typeof t.constructor||Wo(t)?{}:df(Pc(t))}function Bo(t,e,n,r){var i=t.constructor;switch(e){case se:return Ai(t);case Gt:case Vt:return new i(+t);case ue:return Pi(t,r);case le:case ce:case fe:case he:case pe:case de:case ge:case ye:case ve:return Bi(t,r);case Xt:return Ei(t,r,n);case Kt:case ne:return new i(t);case te:return Ii(t);case ee:return Ti(t,r,n);case re:return Oi(t)}}function Lo(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(ze,"{\n/* [wrapped with "+e+"] */\n")}function Mo(t){return vh(t)||yh(t)||!!(Oc&&t&&t[Oc])}function Ro(t,e){return!!(e=null==e?Lt:e)&&("number"==typeof t||Ye.test(t))&&t>-1&&t%1==0&&t<e}function Fo(t,e,n){if(!iu(n))return!1;var r=typeof e;return!!("number"==r?qs(n)&&Ro(e,n.length):"string"==r&&e in n)&&Hs(n[e],t)}function zo(t,e){if(vh(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!yu(t))||(Ie.test(t)||!Ee.test(t)||null!=e&&t in sc(e))}function Do(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}function No(t){var e=wo(t),r=n[e];if("function"!=typeof r||!(e in w.prototype))return!1;if(t===r)return!0;var i=Sf(r);return!!i&&t===i[0]}function Uo(t){return!!bc&&bc in t}function Wo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||pc)}function jo(t){return t===t&&!iu(t)}function Go(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==it||t in sc(n)))}}function Vo(t,e){var n=t[1],r=e[1],i=n|r,o=i<(yt|vt|kt),a=r==kt&&n==mt||r==kt&&n==St&&t[7].length<=e[8]||r==(kt|St)&&e[7].length<=e[8]&&n==mt;if(!o&&!a)return t;r&yt&&(t[2]=e[2],i|=n&yt?0:bt);var s=e[3];if(s){var u=t[3];t[3]=u?Ri(u,s,e[4]):s,t[4]=u?Y(t[3],ct):e[4]}return s=e[5],s&&(u=t[5],t[5]=u?Fi(u,s,e[6]):s,t[6]=u?Y(t[5],ct):e[6]),s=e[7],s&&(t[7]=s),r&kt&&(t[8]=null==t[8]?e[8]:qc(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Ho(t){var e=[];if(null!=t)for(var n in sc(t))e.push(n);return e}function qo(t){return mc.call(t)}function Zo(t,e,n){return e=Hc(e===it?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Hc(r.length-e,0),a=nc(o);++i<o;)a[i]=r[e+i];i=-1;for(var u=nc(e+1);++i<e;)u[i]=r[i];return u[e]=n(a),s(t,this,u)}}function Yo(t,e){return e.length<2?t:yr(t,si(e,0,-1))}function Xo(t,e){for(var n=t.length,r=qc(e.length,n),i=zi(t);r--;){var o=e[r];t[r]=Ro(o,n)?i[o]:it}return t}function Ko(t,e,n){var r=e+"";return Of(t,Lo(r,ea(Eo(r),n)))}function Jo(t){var e=0,n=0;return function(){var r=Zc(),i=It-(r-n);if(n=r,i>0){if(++e>=Et)return arguments[0]}else e=0;return t.apply(it,arguments)}}function Qo(t,e){var n=-1,r=t.length,i=r-1;for(e=e===it?r:e;++n<e;){var o=$r(n,i),a=t[o];t[o]=t[n],t[n]=a}return t.length=e,t}function $o(t){if("string"==typeof t||yu(t))return t;var e=t+"";return"0"==e&&1/t==-Bt?"-0":e}function ta(t){if(null!=t){try{return gc.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function ea(t,e){return l(Nt,function(n){var r="_."+n[0];e&n[1]&&!p(t,r)&&t.push(r)}),t.sort()}function na(t){if(t instanceof w)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=zi(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function ra(t,e,n){e=(n?Fo(t,e,n):e===it)?1:Hc(_u(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=nc(Dc(r/e));i<r;)a[o++]=si(t,i,i+=e);return a}function ia(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i}function oa(){var t=arguments.length;if(!t)return[];for(var e=nc(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return y(vh(n)?zi(n):[n],hr(e,1))}function aa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:_u(e),si(t,e<0?0:e,r)):[]}function sa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:_u(e),e=r-e,si(t,0,e<0?0:e)):[]}function ua(t,e){return t&&t.length?vi(t,_o(e,3),!0,!0):[]}function la(t,e){return t&&t.length?vi(t,_o(e,3),!0):[]}function ca(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Fo(t,e,n)&&(n=0,r=i),cr(t,e,n,r)):[]}function fa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:_u(n);return i<0&&(i=Hc(r+i,0)),k(t,_o(e,3),i)}function ha(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==it&&(i=_u(n),i=n<0?Hc(r+i,0):qc(i,r-1)),k(t,_o(e,3),i,!0)}function pa(t){return(null==t?0:t.length)?hr(t,1):[]}function da(t){return(null==t?0:t.length)?hr(t,Bt):[]}function ga(t,e){return(null==t?0:t.length)?(e=e===it?1:_u(e),hr(t,e)):[]}function ya(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r}function va(t){return t&&t.length?t[0]:it}function ba(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:_u(n);return i<0&&(i=Hc(r+i,0)),S(t,e,i)}function ma(t){return(null==t?0:t.length)?si(t,0,-1):[]}function wa(t,e){return null==t?"":Gc.call(t,e)}function xa(t){var e=null==t?0:t.length;return e?t[e-1]:it}function _a(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==it&&(i=_u(n),i=i<0?Hc(r+i,0):qc(i,r-1)),e===e?Q(t,e,i):k(t,A,i,!0)}function ka(t,e){return t&&t.length?qr(t,_u(e)):it}function Sa(t,e){return t&&t.length&&e&&e.length?Jr(t,e):t}function Ca(t,e,n){return t&&t.length&&e&&e.length?Jr(t,e,_o(n,2)):t}function Aa(t,e,n){return t&&t.length&&e&&e.length?Jr(t,e,it,n):t}function Pa(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=_o(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return Qr(t,i),n}function Ea(t){return null==t?t:Kc.call(t)}function Ia(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Fo(t,e,n)?(e=0,n=r):(e=null==e?0:_u(e),n=n===it?r:_u(n)),si(t,e,n)):[]}function Ta(t,e){return li(t,e)}function Oa(t,e,n){return ci(t,e,_o(n,2))}function Ba(t,e){var n=null==t?0:t.length;if(n){var r=li(t,e);if(r<n&&Hs(t[r],e))return r}return-1}function La(t,e){return li(t,e,!0)}function Ma(t,e,n){return ci(t,e,_o(n,2),!0)}function Ra(t,e){if(null==t?0:t.length){var n=li(t,e,!0)-1;if(Hs(t[n],e))return n}return-1}function Fa(t){return t&&t.length?fi(t):[]}function za(t,e){return t&&t.length?fi(t,_o(e,2)):[]}function Da(t){var e=null==t?0:t.length;return e?si(t,1,e):[]}function Na(t,e,n){return t&&t.length?(e=n||e===it?1:_u(e),si(t,0,e<0?0:e)):[]}function Ua(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:_u(e),e=r-e,si(t,e<0?0:e,r)):[]}function Wa(t,e){return t&&t.length?vi(t,_o(e,3),!1,!0):[]}function ja(t,e){return t&&t.length?vi(t,_o(e,3)):[]}function Ga(t){return t&&t.length?di(t):[]}function Va(t,e){return t&&t.length?di(t,_o(e,2)):[]}function Ha(t,e){return e="function"==typeof e?e:it,t&&t.length?di(t,it,e):[]}function qa(t){if(!t||!t.length)return[];var e=0;return t=h(t,function(t){if(Zs(t))return e=Hc(t.length,e),!0}),L(e,function(e){return g(t,E(e))})}function Za(t,e){if(!t||!t.length)return[];var n=qa(t);return null==e?n:g(n,function(t){return s(e,it,t)})}function Ya(t,e){return wi(t||[],e||[],Hn)}function Xa(t,e){return wi(t||[],e||[],oi)}function Ka(t){var e=n(t);return e.__chain__=!0,e}function Ja(t,e){return e(t),t}function Qa(t,e){return e(t)}function $a(){return Ka(this)}function ts(){return new i(this.value(),this.__chain__)}function es(){this.__values__===it&&(this.__values__=wu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function ns(){return this}function rs(t){for(var e,n=this;n instanceof r;){var i=na(n);i.__index__=0,i.__values__=it,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function is(){var t=this.__wrapped__;if(t instanceof w){var e=t;return this.__actions__.length&&(e=new w(this)),e=e.reverse(),e.__actions__.push({func:Qa,args:[Ea],thisArg:it}),new i(e,this.__chain__)}return this.thru(Ea)}function os(){return bi(this.__wrapped__,this.__actions__)}function as(t,e,n){var r=vh(t)?f:ur;return n&&Fo(t,e,n)&&(e=it),r(t,_o(e,3))}function ss(t,e){return(vh(t)?h:fr)(t,_o(e,3))}function us(t,e){return hr(ds(t,e),1)}function ls(t,e){return hr(ds(t,e),Bt)}function cs(t,e,n){return n=n===it?1:_u(n),hr(ds(t,e),n)}function fs(t,e){return(vh(t)?l:gf)(t,_o(e,3))}function hs(t,e){return(vh(t)?c:yf)(t,_o(e,3))}function ps(t,e,n,r){t=qs(t)?t:$u(t),n=n&&!r?_u(n):0;var i=t.length;return n<0&&(n=Hc(i+n,0)),gu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&S(t,e,n)>-1}function ds(t,e){return(vh(t)?g:Wr)(t,_o(e,3))}function gs(t,e,n,r){return null==t?[]:(vh(e)||(e=null==e?[]:[e]),n=r?it:n,vh(n)||(n=null==n?[]:[n]),Zr(t,e,n))}function ys(t,e,n){var r=vh(t)?v:T,i=arguments.length<3;return r(t,_o(e,4),n,i,gf)}function vs(t,e,n){var r=vh(t)?b:T,i=arguments.length<3;return r(t,_o(e,4),n,i,yf)}function bs(t,e){return(vh(t)?h:fr)(t,Bs(_o(e,3)))}function ms(t){return(vh(t)?Mn:ri)(t)}function ws(t,e,n){return e=(n?Fo(t,e,n):e===it)?1:_u(e),(vh(t)?Rn:ii)(t,e)}function xs(t){return(vh(t)?zn:ai)(t)}function _s(t){if(null==t)return 0;if(qs(t))return gu(t)?$(t):t.length;var e=Pf(t);return e==Xt||e==ee?t.size:Dr(t).length}function ks(t,e,n){var r=vh(t)?m:ui;return n&&Fo(t,e,n)&&(e=it),r(t,_o(e,3))}function Ss(t,e){if("function"!=typeof e)throw new cc(st);return t=_u(t),function(){if(--t<1)return e.apply(this,arguments)}}function Cs(t,e,n){return e=n?it:e,e=t&&null==e?t.length:e,lo(t,kt,it,it,it,it,e)}function As(t,e){var n;if("function"!=typeof e)throw new cc(st);return t=_u(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=it),n}}function Ps(t,e,n){e=n?it:e;var r=lo(t,mt,it,it,it,it,it,e);return r.placeholder=Ps.placeholder,r}function Es(t,e,n){e=n?it:e;var r=lo(t,wt,it,it,it,it,it,e);return r.placeholder=Es.placeholder,r}function Is(t,e,n){function r(e){var n=h,r=p;return h=p=it,b=e,g=t.apply(r,n)}function i(t){return b=t,y=Tf(s,e),m?r(t):g}function o(t){var n=t-v,r=t-b,i=e-n;return w?qc(i,d-r):i}function a(t){var n=t-v,r=t-b;return v===it||n>=e||n<0||w&&r>=d}function s(){var t=oh();if(a(t))return u(t);y=Tf(s,o(t))}function u(t){return y=it,x&&h?r(t):(h=p=it,g)}function l(){y!==it&&_f(y),b=0,h=v=p=y=it}function c(){return y===it?g:u(oh())}function f(){var t=oh(),n=a(t);if(h=arguments,p=this,v=t,n){if(y===it)return i(v);if(w)return y=Tf(s,e),r(v)}return y===it&&(y=Tf(s,e)),g}var h,p,d,g,y,v,b=0,m=!1,w=!1,x=!0;if("function"!=typeof t)throw new cc(st);return e=Su(e)||0,iu(n)&&(m=!!n.leading,w="maxWait"in n,d=w?Hc(Su(n.maxWait)||0,e):d,x="trailing"in n?!!n.trailing:x),f.cancel=l,f.flush=c,f}function Ts(t){return lo(t,Ct)}function Os(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new cc(st);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Os.Cache||ln),n}function Bs(t){if("function"!=typeof t)throw new cc(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Ls(t){return As(2,t)}function Ms(t,e){if("function"!=typeof t)throw new cc(st);return e=e===it?e:_u(e),ni(t,e)}function Rs(t,e){if("function"!=typeof t)throw new cc(st);return e=null==e?0:Hc(_u(e),0),ni(function(n){var r=n[e],i=Si(n,0,e);return r&&y(i,r),s(t,this,i)})}function Fs(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new cc(st);return iu(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Is(t,e,{leading:r,maxWait:e,trailing:i})}function zs(t){return Cs(t,1)}function Ds(t,e){return fh(_i(e),t)}function Ns(){if(!arguments.length)return[];var t=arguments[0];return vh(t)?t:[t]}function Us(t){return rr(t,pt)}function Ws(t,e){return e="function"==typeof e?e:it,rr(t,pt,e)}function js(t){return rr(t,ft|pt)}function Gs(t,e){return e="function"==typeof e?e:it,rr(t,ft|pt,e)}function Vs(t,e){return null==e||or(t,e,Uu(e))}function Hs(t,e){return t===e||t!==t&&e!==e}function qs(t){return null!=t&&ru(t.length)&&!eu(t)}function Zs(t){return ou(t)&&qs(t)}function Ys(t){return!0===t||!1===t||ou(t)&&br(t)==Gt}function Xs(t){return ou(t)&&1===t.nodeType&&!pu(t)}function Ks(t){if(null==t)return!0;if(qs(t)&&(vh(t)||"string"==typeof t||"function"==typeof t.splice||mh(t)||Sh(t)||yh(t)))return!t.length;var e=Pf(t);if(e==Xt||e==ee)return!t.size;if(Wo(t))return!Dr(t).length;for(var n in t)if(yc.call(t,n))return!1;return!0}function Js(t,e){return Ir(t,e)}function Qs(t,e,n){n="function"==typeof n?n:it;var r=n?n(t,e):it;return r===it?Ir(t,e,it,n):!!r}function $s(t){if(!ou(t))return!1;var e=br(t);return e==qt||e==Ht||"string"==typeof t.message&&"string"==typeof t.name&&!pu(t)}function tu(t){return"number"==typeof t&&jc(t)}function eu(t){if(!iu(t))return!1;var e=br(t);return e==Zt||e==Yt||e==jt||e==$t}function nu(t){return"number"==typeof t&&t==_u(t)}function ru(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Lt}function iu(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ou(t){return null!=t&&"object"==typeof t}function au(t,e){return t===e||Br(t,e,So(e))}function su(t,e,n){return n="function"==typeof n?n:it,Br(t,e,So(e),n)}function uu(t){return hu(t)&&t!=+t}function lu(t){if(Ef(t))throw new ic(at);return Lr(t)}function cu(t){return null===t}function fu(t){return null==t}function hu(t){return"number"==typeof t||ou(t)&&br(t)==Kt}function pu(t){if(!ou(t)||br(t)!=Qt)return!1;var e=Pc(t);if(null===e)return!0;var n=yc.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&gc.call(n)==wc}function du(t){return nu(t)&&t>=-Lt&&t<=Lt}function gu(t){return"string"==typeof t||!vh(t)&&ou(t)&&br(t)==ne}function yu(t){return"symbol"==typeof t||ou(t)&&br(t)==re}function vu(t){return t===it}function bu(t){return ou(t)&&Pf(t)==oe}function mu(t){return ou(t)&&br(t)==ae}function wu(t){if(!t)return[];if(qs(t))return gu(t)?tt(t):zi(t);if(Bc&&t[Bc])return H(t[Bc]());var e=Pf(t);return(e==Xt?q:e==ee?X:$u)(t)}function xu(t){if(!t)return 0===t?t:0;if((t=Su(t))===Bt||t===-Bt){return(t<0?-1:1)*Mt}return t===t?t:0}function _u(t){var e=xu(t),n=e%1;return e===e?n?e-n:e:0}function ku(t){return t?nr(_u(t),0,Ft):0}function Su(t){if("number"==typeof t)return t;if(yu(t))return Rt;if(iu(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=iu(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Me,"");var n=He.test(t);return n||Ze.test(t)?Tn(t.slice(2),n?2:8):Ve.test(t)?Rt:+t}function Cu(t){return Di(t,Wu(t))}function Au(t){return t?nr(_u(t),-Lt,Lt):0===t?t:0}function Pu(t){return null==t?"":pi(t)}function Eu(t,e){var n=df(t);return null==e?n:Qn(n,e)}function Iu(t,e){return _(t,_o(e,3),pr)}function Tu(t,e){return _(t,_o(e,3),dr)}function Ou(t,e){return null==t?t:vf(t,_o(e,3),Wu)}function Bu(t,e){return null==t?t:bf(t,_o(e,3),Wu)}function Lu(t,e){return t&&pr(t,_o(e,3))}function Mu(t,e){return t&&dr(t,_o(e,3))}function Ru(t){return null==t?[]:gr(t,Uu(t))}function Fu(t){return null==t?[]:gr(t,Wu(t))}function zu(t,e,n){var r=null==t?it:yr(t,e);return r===it?n:r}function Du(t,e){return null!=t&&Io(t,e,wr)}function Nu(t,e){return null!=t&&Io(t,e,xr)}function Uu(t){return qs(t)?Bn(t):Dr(t)}function Wu(t){return qs(t)?Bn(t,!0):Nr(t)}function ju(t,e){var n={};return e=_o(e,3),pr(t,function(t,r,i){tr(n,e(t,r,i),t)}),n}function Gu(t,e){var n={};return e=_o(e,3),pr(t,function(t,r,i){tr(n,r,e(t,r,i))}),n}function Vu(t,e){return Hu(t,Bs(_o(e)))}function Hu(t,e){if(null==t)return{};var n=g(mo(t),function(t){return[t]});return e=_o(e),Xr(t,n,function(t,n){return e(t,n[0])})}function qu(t,e,n){e=ki(e,t);var r=-1,i=e.length;for(i||(i=1,t=it);++r<i;){var o=null==t?it:t[$o(e[r])];o===it&&(r=i,o=n),t=eu(o)?o.call(t):o}return t}function Zu(t,e,n){return null==t?t:oi(t,e,n)}function Yu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:oi(t,e,n,r)}function Xu(t,e,n){var r=vh(t),i=r||mh(t)||Sh(t);if(e=_o(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:iu(t)&&eu(o)?df(Pc(t)):{}}return(i?l:pr)(t,function(t,r,i){return e(n,t,r,i)}),n}function Ku(t,e){return null==t||gi(t,e)}function Ju(t,e,n){return null==t?t:yi(t,e,_i(n))}function Qu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:yi(t,e,_i(n),r)}function $u(t){return null==t?[]:F(t,Uu(t))}function tl(t){return null==t?[]:F(t,Wu(t))}function el(t,e,n){return n===it&&(n=e,e=it),n!==it&&(n=Su(n),n=n===n?n:0),e!==it&&(e=Su(e),e=e===e?e:0),nr(Su(t),e,n)}function nl(t,e,n){return e=xu(e),n===it?(n=e,e=0):n=xu(n),t=Su(t),_r(t,e,n)}function rl(t,e,n){if(n&&"boolean"!=typeof n&&Fo(t,e,n)&&(e=n=it),n===it&&("boolean"==typeof e?(n=e,e=it):"boolean"==typeof t&&(n=t,t=it)),t===it&&e===it?(t=0,e=1):(t=xu(t),e===it?(e=t,t=0):e=xu(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Xc();return qc(t+i*(e-t+In("1e-"+((i+"").length-1))),e)}return $r(t,e)}function il(t){return Kh(Pu(t).toLowerCase())}function ol(t){return(t=Pu(t))&&t.replace(Xe,qn).replace(yn,"")}function al(t,e,n){t=Pu(t),e=pi(e);var r=t.length;n=n===it?r:nr(_u(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function sl(t){return t=Pu(t),t&&Se.test(t)?t.replace(_e,Zn):t}function ul(t){return t=Pu(t),t&&Le.test(t)?t.replace(Be,"\\$&"):t}function ll(t,e,n){t=Pu(t),e=_u(e);var r=e?$(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return no(Nc(i),n)+t+no(Dc(i),n)}function cl(t,e,n){t=Pu(t),e=_u(e);var r=e?$(t):0;return e&&r<e?t+no(e-r,n):t}function fl(t,e,n){t=Pu(t),e=_u(e);var r=e?$(t):0;return e&&r<e?no(e-r,n)+t:t}function hl(t,e,n){return n||null==e?e=0:e&&(e=+e),Yc(Pu(t).replace(Re,""),e||0)}function pl(t,e,n){return e=(n?Fo(t,e,n):e===it)?1:_u(e),ei(Pu(t),e)}function dl(){var t=arguments,e=Pu(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function gl(t,e,n){return n&&"number"!=typeof n&&Fo(t,e,n)&&(e=n=it),(n=n===it?Ft:n>>>0)?(t=Pu(t),t&&("string"==typeof e||null!=e&&!_h(e))&&!(e=pi(e))&&G(t)?Si(tt(t),0,n):t.split(e,n)):[]}function yl(t,e,n){return t=Pu(t),n=null==n?0:nr(_u(n),0,t.length),e=pi(e),t.slice(n,n+e.length)==e}function vl(t,e,r){var i=n.templateSettings;r&&Fo(t,e,r)&&(e=it),t=Pu(t),e=Ih({},e,i,co);var o,a,s=Ih({},e.imports,i.imports,co),u=Uu(s),l=F(s,u),c=0,f=e.interpolate||Ke,h="__p += '",p=uc((e.escape||Ke).source+"|"+f.source+"|"+(f===Pe?je:Ke).source+"|"+(e.evaluate||Ke).source+"|$","g"),d="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++_n+"]")+"\n";t.replace(p,function(e,n,r,i,s,u){return r||(r=i),h+=t.slice(c,u).replace(Je,W),n&&(o=!0,h+="' +\n__e("+n+") +\n'"),s&&(a=!0,h+="';\n"+s+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),c=u+e.length,e}),h+="';\n";var g=e.variable;g||(h="with (obj) {\n"+h+"\n}\n"),h=(a?h.replace(be,""):h).replace(me,"$1").replace(we,"$1;"),h="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var y=Jh(function(){return oc(u,d+"return "+h).apply(it,l)});if(y.source=h,$s(y))throw y;return y}function bl(t){return Pu(t).toLowerCase()}function ml(t){return Pu(t).toUpperCase()}function wl(t,e,n){if((t=Pu(t))&&(n||e===it))return t.replace(Me,"");if(!t||!(e=pi(e)))return t;var r=tt(t),i=tt(e);return Si(r,D(r,i),N(r,i)+1).join("")}function xl(t,e,n){if((t=Pu(t))&&(n||e===it))return t.replace(Fe,"");if(!t||!(e=pi(e)))return t;var r=tt(t);return Si(r,0,N(r,tt(e))+1).join("")}function _l(t,e,n){if((t=Pu(t))&&(n||e===it))return t.replace(Re,"");if(!t||!(e=pi(e)))return t;var r=tt(t);return Si(r,D(r,tt(e))).join("")}function kl(t,e){var n=At,r=Pt;if(iu(e)){var i="separator"in e?e.separator:i;n="length"in e?_u(e.length):n,r="omission"in e?pi(e.omission):r}t=Pu(t);var o=t.length;if(G(t)){var a=tt(t);o=a.length}if(n>=o)return t;var s=n-$(r);if(s<1)return r;var u=a?Si(a,0,s).join(""):t.slice(0,s);if(i===it)return u+r;if(a&&(s+=u.length-s),_h(i)){if(t.slice(s).search(i)){var l,c=u;for(i.global||(i=uc(i.source,Pu(Ge.exec(i))+"g")),i.lastIndex=0;l=i.exec(c);)var f=l.index;u=u.slice(0,f===it?s:f)}}else if(t.indexOf(pi(i),s)!=s){var h=u.lastIndexOf(i);h>-1&&(u=u.slice(0,h))}return u+r}function Sl(t){return t=Pu(t),t&&ke.test(t)?t.replace(xe,Yn):t}function Cl(t,e,n){return t=Pu(t),e=n?it:e,e===it?V(t)?rt(t):x(t):t.match(e)||[]}function Al(t){var e=null==t?0:t.length,n=_o();return t=e?g(t,function(t){if("function"!=typeof t[1])throw new cc(st);return[n(t[0]),t[1]]}):[],ni(function(n){for(var r=-1;++r<e;){var i=t[r];if(s(i[0],this,n))return s(i[1],this,n)}})}function Pl(t){return ir(rr(t,ft))}function El(t){return function(){return t}}function Il(t,e){return null==t||t!==t?e:t}function Tl(t){return t}function Ol(t){return zr("function"==typeof t?t:rr(t,ft))}function Bl(t){return jr(rr(t,ft))}function Ll(t,e){return Gr(t,rr(e,ft))}function Ml(t,e,n){var r=Uu(e),i=gr(e,r);null!=n||iu(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=gr(e,Uu(e)));var o=!(iu(n)&&"chain"in n&&!n.chain),a=eu(t);return l(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=zi(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,y([this.value()],arguments))})}),t}function Rl(){return Ln._===this&&(Ln._=xc),this}function Fl(){}function zl(t){return t=_u(t),ni(function(e){return qr(e,t)})}function Dl(t){return zo(t)?E($o(t)):Kr(t)}function Nl(t){return function(e){return null==t?it:yr(t,e)}}function Ul(){return[]}function Wl(){return!1}function jl(){return{}}function Gl(){return""}function Vl(){return!0}function Hl(t,e){if((t=_u(t))<1||t>Lt)return[];var n=Ft,r=qc(t,Ft);e=_o(e),t-=Ft;for(var i=L(r,e);++n<t;)e(n);return i}function ql(t){return vh(t)?g(t,$o):yu(t)?[t]:zi(Bf(Pu(t)))}function Zl(t){var e=++vc;return Pu(t)+e}function Yl(t){return t&&t.length?lr(t,Tl,mr):it}function Xl(t,e){return t&&t.length?lr(t,_o(e,2),mr):it}function Kl(t){return P(t,Tl)}function Jl(t,e){return P(t,_o(e,2))}function Ql(t){return t&&t.length?lr(t,Tl,Ur):it}function $l(t,e){return t&&t.length?lr(t,_o(e,2),Ur):it}function tc(t){return t&&t.length?B(t,Tl):0}function ec(t,e){return t&&t.length?B(t,_o(e,2)):0}e=null==e?Ln:Xn.defaults(Ln.Object(),e,Xn.pick(Ln,xn));var nc=e.Array,rc=e.Date,ic=e.Error,oc=e.Function,ac=e.Math,sc=e.Object,uc=e.RegExp,lc=e.String,cc=e.TypeError,fc=nc.prototype,hc=oc.prototype,pc=sc.prototype,dc=e["__core-js_shared__"],gc=hc.toString,yc=pc.hasOwnProperty,vc=0,bc=function(){var t=/[^.]+$/.exec(dc&&dc.keys&&dc.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),mc=pc.toString,wc=gc.call(sc),xc=Ln._,_c=uc("^"+gc.call(yc).replace(Be,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),kc=Fn?e.Buffer:it,Sc=e.Symbol,Cc=e.Uint8Array,Ac=kc?kc.allocUnsafe:it,Pc=Z(sc.getPrototypeOf,sc),Ec=sc.create,Ic=pc.propertyIsEnumerable,Tc=fc.splice,Oc=Sc?Sc.isConcatSpreadable:it,Bc=Sc?Sc.iterator:it,Lc=Sc?Sc.toStringTag:it,Mc=function(){try{var t=Co(sc,"defineProperty");return t({},"",{}),t}catch(t){}}(),Rc=e.clearTimeout!==Ln.clearTimeout&&e.clearTimeout,Fc=rc&&rc.now!==Ln.Date.now&&rc.now,zc=e.setTimeout!==Ln.setTimeout&&e.setTimeout,Dc=ac.ceil,Nc=ac.floor,Uc=sc.getOwnPropertySymbols,Wc=kc?kc.isBuffer:it,jc=e.isFinite,Gc=fc.join,Vc=Z(sc.keys,sc),Hc=ac.max,qc=ac.min,Zc=rc.now,Yc=e.parseInt,Xc=ac.random,Kc=fc.reverse,Jc=Co(e,"DataView"),Qc=Co(e,"Map"),$c=Co(e,"Promise"),tf=Co(e,"Set"),ef=Co(e,"WeakMap"),nf=Co(sc,"create"),rf=ef&&new ef,of={},af=ta(Jc),sf=ta(Qc),uf=ta($c),lf=ta(tf),cf=ta(ef),ff=Sc?Sc.prototype:it,hf=ff?ff.valueOf:it,pf=ff?ff.toString:it,df=function(){function t(){}return function(e){if(!iu(e))return{};if(Ec)return Ec(e);t.prototype=e;var n=new t;return t.prototype=it,n}}();n.templateSettings={escape:Ce,evaluate:Ae,interpolate:Pe,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=df(r.prototype),i.prototype.constructor=i,w.prototype=df(r.prototype),w.prototype.constructor=w,nt.prototype.clear=Ue,nt.prototype.delete=Qe,nt.prototype.get=$e,nt.prototype.has=tn,nt.prototype.set=en,nn.prototype.clear=rn,nn.prototype.delete=on,nn.prototype.get=an,nn.prototype.has=sn,nn.prototype.set=un,ln.prototype.clear=cn,ln.prototype.delete=fn,ln.prototype.get=hn,ln.prototype.has=pn,ln.prototype.set=dn,vn.prototype.add=vn.prototype.push=bn,vn.prototype.has=mn,wn.prototype.clear=Cn,wn.prototype.delete=An,wn.prototype.get=Pn,wn.prototype.has=En,wn.prototype.set=On;var gf=Gi(pr),yf=Gi(dr,!0),vf=Vi(),bf=Vi(!0),mf=rf?function(t,e){return rf.set(t,e),t}:Tl,wf=Mc?function(t,e){return Mc(t,"toString",{configurable:!0,enumerable:!1,value:El(e),writable:!0})}:Tl,xf=ni,_f=Rc||function(t){return Ln.clearTimeout(t)},kf=tf&&1/X(new tf([,-0]))[1]==Bt?function(t){return new tf(t)}:Fl,Sf=rf?function(t){return rf.get(t)}:Fl,Cf=Uc?function(t){return null==t?[]:(t=sc(t),h(Uc(t),function(e){return Ic.call(t,e)}))}:Ul,Af=Uc?function(t){for(var e=[];t;)y(e,Cf(t)),t=Pc(t);return e}:Ul,Pf=br;(Jc&&Pf(new Jc(new ArrayBuffer(1)))!=ue||Qc&&Pf(new Qc)!=Xt||$c&&"[object Promise]"!=Pf($c.resolve())||tf&&Pf(new tf)!=ee||ef&&Pf(new ef)!=oe)&&(Pf=function(t){var e=br(t),n=e==Qt?t.constructor:it,r=n?ta(n):"";if(r)switch(r){case af:return ue;case sf:return Xt;case uf:return"[object Promise]";case lf:return ee;case cf:return oe}return e});var Ef=dc?eu:Wl,If=Jo(mf),Tf=zc||function(t,e){return Ln.setTimeout(t,e)},Of=Jo(wf),Bf=function(t){var e=Os(t,function(t){return n.size===lt&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return Te.test(t)&&e.push(""),t.replace(Oe,function(t,n,r,i){e.push(r?i.replace(We,"$1"):n||t)}),e}),Lf=ni(function(t,e){return Zs(t)?sr(t,hr(e,1,Zs,!0)):[]}),Mf=ni(function(t,e){var n=xa(e);return Zs(n)&&(n=it),Zs(t)?sr(t,hr(e,1,Zs,!0),_o(n,2)):[]}),Rf=ni(function(t,e){var n=xa(e);return Zs(n)&&(n=it),Zs(t)?sr(t,hr(e,1,Zs,!0),it,n):[]}),Ff=ni(function(t){var e=g(t,xi);return e.length&&e[0]===t[0]?kr(e):[]}),zf=ni(function(t){var e=xa(t),n=g(t,xi);return e===xa(n)?e=it:n.pop(),n.length&&n[0]===t[0]?kr(n,_o(e,2)):[]}),Df=ni(function(t){var e=xa(t),n=g(t,xi);return e="function"==typeof e?e:it,e&&n.pop(),n.length&&n[0]===t[0]?kr(n,it,e):[]}),Nf=ni(Sa),Uf=vo(function(t,e){var n=null==t?0:t.length,r=er(t,e);return Qr(t,g(e,function(t){return Ro(t,n)?+t:t}).sort(Li)),r}),Wf=ni(function(t){return di(hr(t,1,Zs,!0))}),jf=ni(function(t){var e=xa(t);return Zs(e)&&(e=it),di(hr(t,1,Zs,!0),_o(e,2))}),Gf=ni(function(t){var e=xa(t);return e="function"==typeof e?e:it,di(hr(t,1,Zs,!0),it,e)}),Vf=ni(function(t,e){return Zs(t)?sr(t,e):[]}),Hf=ni(function(t){return mi(h(t,Zs))}),qf=ni(function(t){var e=xa(t);return Zs(e)&&(e=it),mi(h(t,Zs),_o(e,2))}),Zf=ni(function(t){var e=xa(t);return e="function"==typeof e?e:it,mi(h(t,Zs),it,e)}),Yf=ni(qa),Xf=ni(function(t){var e=t.length,n=e>1?t[e-1]:it;return n="function"==typeof n?(t.pop(),n):it,Za(t,n)}),Kf=vo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return er(e,t)};return!(e>1||this.__actions__.length)&&r instanceof w&&Ro(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Qa,args:[o],thisArg:it}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(it),t})):this.thru(o)}),Jf=Wi(function(t,e,n){yc.call(t,n)?++t[n]:tr(t,n,1)}),Qf=Ki(fa),$f=Ki(ha),th=Wi(function(t,e,n){yc.call(t,n)?t[n].push(e):tr(t,n,[e])}),eh=ni(function(t,e,n){var r=-1,i="function"==typeof e,o=qs(t)?nc(t.length):[];return gf(t,function(t){o[++r]=i?s(e,t,n):Cr(t,e,n)}),o}),nh=Wi(function(t,e,n){tr(t,n,e)}),rh=Wi(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),ih=ni(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Fo(t,e[0],e[1])?e=[]:n>2&&Fo(e[0],e[1],e[2])&&(e=[e[0]]),Zr(t,hr(e,1),[])}),oh=Fc||function(){return Ln.Date.now()},ah=ni(function(t,e,n){var r=yt;if(n.length){var i=Y(n,xo(ah));r|=xt}return lo(t,r,e,n,i)}),sh=ni(function(t,e,n){var r=yt|vt;if(n.length){var i=Y(n,xo(sh));r|=xt}return lo(e,r,t,n,i)}),uh=ni(function(t,e){return ar(t,1,e)}),lh=ni(function(t,e,n){return ar(t,Su(e)||0,n)});Os.Cache=ln;var ch=xf(function(t,e){e=1==e.length&&vh(e[0])?g(e[0],R(_o())):g(hr(e,1),R(_o()));var n=e.length;return ni(function(r){for(var i=-1,o=qc(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return s(t,this,r)})}),fh=ni(function(t,e){var n=Y(e,xo(fh));return lo(t,xt,it,e,n)}),hh=ni(function(t,e){var n=Y(e,xo(hh));return lo(t,_t,it,e,n)}),ph=vo(function(t,e){return lo(t,St,it,it,it,e)}),dh=oo(mr),gh=oo(function(t,e){return t>=e}),yh=Ar(function(){return arguments}())?Ar:function(t){return ou(t)&&yc.call(t,"callee")&&!Ic.call(t,"callee")},vh=nc.isArray,bh=Nn?R(Nn):Pr,mh=Wc||Wl,wh=Un?R(Un):Er,xh=Wn?R(Wn):Or,_h=jn?R(jn):Mr,kh=Gn?R(Gn):Rr,Sh=Vn?R(Vn):Fr,Ch=oo(Ur),Ah=oo(function(t,e){return t<=e}),Ph=ji(function(t,e){if(Wo(e)||qs(e))return void Di(e,Uu(e),t);for(var n in e)yc.call(e,n)&&Hn(t,n,e[n])}),Eh=ji(function(t,e){Di(e,Wu(e),t)}),Ih=ji(function(t,e,n,r){Di(e,Wu(e),t,r)}),Th=ji(function(t,e,n,r){Di(e,Uu(e),t,r)}),Oh=vo(er),Bh=ni(function(t){return t.push(it,co),s(Ih,it,t)}),Lh=ni(function(t){return t.push(it,fo),s(Dh,it,t)}),Mh=$i(function(t,e,n){t[e]=n},El(Tl)),Rh=$i(function(t,e,n){yc.call(t,e)?t[e].push(n):t[e]=[n]},_o),Fh=ni(Cr),zh=ji(function(t,e,n){Vr(t,e,n)}),Dh=ji(function(t,e,n,r){Vr(t,e,n,r)}),Nh=vo(function(t,e){var n={};if(null==t)return n;var r=!1;e=g(e,function(e){return e=ki(e,t),r||(r=e.length>1),e}),Di(t,mo(t),n),r&&(n=rr(n,ft|ht|pt,ho));for(var i=e.length;i--;)gi(n,e[i]);return n}),Uh=vo(function(t,e){return null==t?{}:Yr(t,e)}),Wh=uo(Uu),jh=uo(Wu),Gh=Zi(function(t,e,n){return e=e.toLowerCase(),t+(n?il(e):e)}),Vh=Zi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Hh=Zi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),qh=qi("toLowerCase"),Zh=Zi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Yh=Zi(function(t,e,n){return t+(n?" ":"")+Kh(e)}),Xh=Zi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Kh=qi("toUpperCase"),Jh=ni(function(t,e){try{return s(t,it,e)}catch(t){return $s(t)?t:new ic(t)}}),Qh=vo(function(t,e){return l(e,function(e){e=$o(e),tr(t,e,ah(t[e],t))}),t}),$h=Ji(),tp=Ji(!0),ep=ni(function(t,e){return function(n){return Cr(n,t,e)}}),np=ni(function(t,e){return function(n){return Cr(t,n,e)}}),rp=eo(g),ip=eo(f),op=eo(m),ap=io(),sp=io(!0),up=to(function(t,e){return t+e},0),lp=so("ceil"),cp=to(function(t,e){return t/e},1),fp=so("floor"),hp=to(function(t,e){return t*e},1),pp=so("round"),dp=to(function(t,e){return t-e},0);return n.after=Ss,n.ary=Cs,n.assign=Ph,n.assignIn=Eh,n.assignInWith=Ih,n.assignWith=Th,n.at=Oh,n.before=As,n.bind=ah,n.bindAll=Qh,n.bindKey=sh, n.castArray=Ns,n.chain=Ka,n.chunk=ra,n.compact=ia,n.concat=oa,n.cond=Al,n.conforms=Pl,n.constant=El,n.countBy=Jf,n.create=Eu,n.curry=Ps,n.curryRight=Es,n.debounce=Is,n.defaults=Bh,n.defaultsDeep=Lh,n.defer=uh,n.delay=lh,n.difference=Lf,n.differenceBy=Mf,n.differenceWith=Rf,n.drop=aa,n.dropRight=sa,n.dropRightWhile=ua,n.dropWhile=la,n.fill=ca,n.filter=ss,n.flatMap=us,n.flatMapDeep=ls,n.flatMapDepth=cs,n.flatten=pa,n.flattenDeep=da,n.flattenDepth=ga,n.flip=Ts,n.flow=$h,n.flowRight=tp,n.fromPairs=ya,n.functions=Ru,n.functionsIn=Fu,n.groupBy=th,n.initial=ma,n.intersection=Ff,n.intersectionBy=zf,n.intersectionWith=Df,n.invert=Mh,n.invertBy=Rh,n.invokeMap=eh,n.iteratee=Ol,n.keyBy=nh,n.keys=Uu,n.keysIn=Wu,n.map=ds,n.mapKeys=ju,n.mapValues=Gu,n.matches=Bl,n.matchesProperty=Ll,n.memoize=Os,n.merge=zh,n.mergeWith=Dh,n.method=ep,n.methodOf=np,n.mixin=Ml,n.negate=Bs,n.nthArg=zl,n.omit=Nh,n.omitBy=Vu,n.once=Ls,n.orderBy=gs,n.over=rp,n.overArgs=ch,n.overEvery=ip,n.overSome=op,n.partial=fh,n.partialRight=hh,n.partition=rh,n.pick=Uh,n.pickBy=Hu,n.property=Dl,n.propertyOf=Nl,n.pull=Nf,n.pullAll=Sa,n.pullAllBy=Ca,n.pullAllWith=Aa,n.pullAt=Uf,n.range=ap,n.rangeRight=sp,n.rearg=ph,n.reject=bs,n.remove=Pa,n.rest=Ms,n.reverse=Ea,n.sampleSize=ws,n.set=Zu,n.setWith=Yu,n.shuffle=xs,n.slice=Ia,n.sortBy=ih,n.sortedUniq=Fa,n.sortedUniqBy=za,n.split=gl,n.spread=Rs,n.tail=Da,n.take=Na,n.takeRight=Ua,n.takeRightWhile=Wa,n.takeWhile=ja,n.tap=Ja,n.throttle=Fs,n.thru=Qa,n.toArray=wu,n.toPairs=Wh,n.toPairsIn=jh,n.toPath=ql,n.toPlainObject=Cu,n.transform=Xu,n.unary=zs,n.union=Wf,n.unionBy=jf,n.unionWith=Gf,n.uniq=Ga,n.uniqBy=Va,n.uniqWith=Ha,n.unset=Ku,n.unzip=qa,n.unzipWith=Za,n.update=Ju,n.updateWith=Qu,n.values=$u,n.valuesIn=tl,n.without=Vf,n.words=Cl,n.wrap=Ds,n.xor=Hf,n.xorBy=qf,n.xorWith=Zf,n.zip=Yf,n.zipObject=Ya,n.zipObjectDeep=Xa,n.zipWith=Xf,n.entries=Wh,n.entriesIn=jh,n.extend=Eh,n.extendWith=Ih,Ml(n,n),n.add=up,n.attempt=Jh,n.camelCase=Gh,n.capitalize=il,n.ceil=lp,n.clamp=el,n.clone=Us,n.cloneDeep=js,n.cloneDeepWith=Gs,n.cloneWith=Ws,n.conformsTo=Vs,n.deburr=ol,n.defaultTo=Il,n.divide=cp,n.endsWith=al,n.eq=Hs,n.escape=sl,n.escapeRegExp=ul,n.every=as,n.find=Qf,n.findIndex=fa,n.findKey=Iu,n.findLast=$f,n.findLastIndex=ha,n.findLastKey=Tu,n.floor=fp,n.forEach=fs,n.forEachRight=hs,n.forIn=Ou,n.forInRight=Bu,n.forOwn=Lu,n.forOwnRight=Mu,n.get=zu,n.gt=dh,n.gte=gh,n.has=Du,n.hasIn=Nu,n.head=va,n.identity=Tl,n.includes=ps,n.indexOf=ba,n.inRange=nl,n.invoke=Fh,n.isArguments=yh,n.isArray=vh,n.isArrayBuffer=bh,n.isArrayLike=qs,n.isArrayLikeObject=Zs,n.isBoolean=Ys,n.isBuffer=mh,n.isDate=wh,n.isElement=Xs,n.isEmpty=Ks,n.isEqual=Js,n.isEqualWith=Qs,n.isError=$s,n.isFinite=tu,n.isFunction=eu,n.isInteger=nu,n.isLength=ru,n.isMap=xh,n.isMatch=au,n.isMatchWith=su,n.isNaN=uu,n.isNative=lu,n.isNil=fu,n.isNull=cu,n.isNumber=hu,n.isObject=iu,n.isObjectLike=ou,n.isPlainObject=pu,n.isRegExp=_h,n.isSafeInteger=du,n.isSet=kh,n.isString=gu,n.isSymbol=yu,n.isTypedArray=Sh,n.isUndefined=vu,n.isWeakMap=bu,n.isWeakSet=mu,n.join=wa,n.kebabCase=Vh,n.last=xa,n.lastIndexOf=_a,n.lowerCase=Hh,n.lowerFirst=qh,n.lt=Ch,n.lte=Ah,n.max=Yl,n.maxBy=Xl,n.mean=Kl,n.meanBy=Jl,n.min=Ql,n.minBy=$l,n.stubArray=Ul,n.stubFalse=Wl,n.stubObject=jl,n.stubString=Gl,n.stubTrue=Vl,n.multiply=hp,n.nth=ka,n.noConflict=Rl,n.noop=Fl,n.now=oh,n.pad=ll,n.padEnd=cl,n.padStart=fl,n.parseInt=hl,n.random=rl,n.reduce=ys,n.reduceRight=vs,n.repeat=pl,n.replace=dl,n.result=qu,n.round=pp,n.runInContext=t,n.sample=ms,n.size=_s,n.snakeCase=Zh,n.some=ks,n.sortedIndex=Ta,n.sortedIndexBy=Oa,n.sortedIndexOf=Ba,n.sortedLastIndex=La,n.sortedLastIndexBy=Ma,n.sortedLastIndexOf=Ra,n.startCase=Yh,n.startsWith=yl,n.subtract=dp,n.sum=tc,n.sumBy=ec,n.template=vl,n.times=Hl,n.toFinite=xu,n.toInteger=_u,n.toLength=ku,n.toLower=bl,n.toNumber=Su,n.toSafeInteger=Au,n.toString=Pu,n.toUpper=ml,n.trim=wl,n.trimEnd=xl,n.trimStart=_l,n.truncate=kl,n.unescape=Sl,n.uniqueId=Zl,n.upperCase=Xh,n.upperFirst=Kh,n.each=fs,n.eachRight=hs,n.first=va,Ml(n,function(){var t={};return pr(n,function(e,r){yc.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.4",l(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),l(["drop","take"],function(t,e){w.prototype[t]=function(n){n=n===it?1:Hc(_u(n),0);var r=this.__filtered__&&!e?new w(this):this.clone();return r.__filtered__?r.__takeCount__=qc(n,r.__takeCount__):r.__views__.push({size:qc(n,Ft),type:t+(r.__dir__<0?"Right":"")}),r},w.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),l(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==Tt||3==n;w.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:_o(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),l(["head","last"],function(t,e){var n="take"+(e?"Right":"");w.prototype[t]=function(){return this[n](1).value()[0]}}),l(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");w.prototype[t]=function(){return this.__filtered__?new w(this):this[n](1)}}),w.prototype.compact=function(){return this.filter(Tl)},w.prototype.find=function(t){return this.filter(t).head()},w.prototype.findLast=function(t){return this.reverse().find(t)},w.prototype.invokeMap=ni(function(t,e){return"function"==typeof t?new w(this):this.map(function(n){return Cr(n,t,e)})}),w.prototype.reject=function(t){return this.filter(Bs(_o(t)))},w.prototype.slice=function(t,e){t=_u(t);var n=this;return n.__filtered__&&(t>0||e<0)?new w(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==it&&(e=_u(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},w.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},w.prototype.toArray=function(){return this.take(Ft)},pr(w.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],s=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,u=o?[1]:arguments,l=e instanceof w,c=u[0],f=l||vh(e),h=function(t){var e=a.apply(n,y([t],u));return o&&p?e[0]:e};f&&r&&"function"==typeof c&&1!=c.length&&(l=f=!1);var p=this.__chain__,d=!!this.__actions__.length,g=s&&!p,v=l&&!d;if(!s&&f){e=v?e:new w(this);var b=t.apply(e,u);return b.__actions__.push({func:Qa,args:[h],thisArg:it}),new i(b,p)}return g&&v?t.apply(this,u):(b=this.thru(h),g?o?b.value()[0]:b.value():b)})}),l(["pop","push","shift","sort","splice","unshift"],function(t){var e=fc[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(vh(n)?n:[],t)}return this[r](function(n){return e.apply(vh(n)?n:[],t)})}}),pr(w.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(of[i]||(of[i]=[])).push({name:e,func:r})}}),of[Qi(it,vt).name]=[{name:"wrapper",func:it}],w.prototype.clone=I,w.prototype.reverse=J,w.prototype.value=et,n.prototype.at=Kf,n.prototype.chain=$a,n.prototype.commit=ts,n.prototype.next=es,n.prototype.plant=rs,n.prototype.reverse=is,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=os,n.prototype.first=n.prototype.head,Bc&&(n.prototype[Bc]=ns),n}();Ln._=Xn,(r=function(){return Xn}.call(e,n,e,i))!==it&&(i.exports=r)}).call(this)}).call(e,function(){return this}(),n(8)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";function r(t,e){var n="normal";return t&&e?n="bolditalics":t?n="bold":e&&(n="italics"),n}function i(t,e){this.fonts={},this.pdfKitDoc=e,this.fontCache={};for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];this.fonts[n]={normal:r.normal,bold:r.bold,italics:r.italics,bolditalics:r.bolditalics}}}n(7).noConflict(),i.prototype.provideFont=function(t,e,n){var i=r(e,n);if(!this.fonts[t]||!this.fonts[t][i])throw new Error("Font '"+t+"' in style '"+i+"' is not defined in the font section of the document definition.");if(this.fontCache[t]=this.fontCache[t]||{},!this.fontCache[t][i]){var o=this.fonts[t][i];Array.isArray(o)||(o=[o]),this.fontCache[t][i]=this.pdfKitDoc.font.apply(this.pdfKitDoc,o)._font}return this.fontCache[t][i]},t.exports=i},function(t,e,n){"use strict";function r(t,e){a.each(e,function(e){t.push(e)})}function i(t,e,n){this.pageSize=t,this.pageMargins=e,this.tracker=new s,this.imageMeasure=n,this.tableLayouts={}}function o(t){var e=t.x,n=t.y;t.positions=[],a.each(t.canvas,function(t){var e=t.x,n=t.y,r=t.x1,i=t.y1,o=t.x2,a=t.y2;t.resetXY=function(){t.x=e,t.y=n,t.x1=r,t.y1=i,t.x2=o,t.y2=a}}),t.resetXY=function(){t.x=e,t.y=n,a.each(t.canvas,function(t){t.resetXY()})}}var a=n(7),s=n(11),u=n(12),l=n(14),c=n(25),f=n(26),h=n(23),p=n(29),d=n(28),g=n(13).pack,y=n(13).offsetVector,v=n(13).fontStringify,b=n(13).isFunction,m=n(15),w=n(22);i.prototype.registerTableLayouts=function(t){this.tableLayouts=g(this.tableLayouts,t)},i.prototype.layoutDocument=function(t,e,n,r,i,o,s,c,f,h){this.docPreprocessor=new u,this.docMeasure=new l(e,n,r,this.imageMeasure,this.tableLayouts,c);for(var p=this.tryLayoutDocument(t,e,n,r,i,o,s,c,f);function(t,e){return!!b(h)&&(t=a.reject(t,function(t){return a.isEmpty(t.positions)}),a.each(t,function(t){var n=a.pick(t,["id","text","ul","ol","table","image","qr","canvas","columns","headlineLevel","style","pageBreak","pageOrientation","width","height"]);n.startPosition=a.first(t.positions),n.pageNumbers=a.chain(t.positions).map("pageNumber").uniq().value(),n.pages=e.length,n.stack=a.isArray(t.stack),t.nodeInfo=n}),a.some(t,function(t,e,n){if("before"!==t.pageBreak&&!t.pageBreakCalculated){t.pageBreakCalculated=!0;var r=a.first(t.nodeInfo.pageNumbers),i=a.chain(n).drop(e+1).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r)}).value(),o=a.chain(n).drop(e+1).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r+1)}).value(),s=a.chain(n).take(e).filter(function(t){return a.includes(t.nodeInfo.pageNumbers,r)}).value();if(h(t.nodeInfo,a.map(i,"nodeInfo"),a.map(o,"nodeInfo"),a.map(s,"nodeInfo")))return t.pageBreak="before",!0}}))}(p.linearNodeList,p.pages);)!function(t){a.each(t.linearNodeList,function(t){t.resetXY()})}(p),p=this.tryLayoutDocument(t,e,n,r,i,o,s,c,f);return p.pages},i.prototype.tryLayoutDocument=function(t,e,n,r,i,o,a,s,u,l){this.linearNodeList=[],t=this.docPreprocessor.preprocessDocument(t),t=this.docMeasure.measureDocument(t),this.writer=new f(new c(this.pageSize,this.pageMargins),this.tracker);var h=this;return this.writer.context().tracker.startTracking("pageAdded",function(){h.addBackground(i)}),this.addBackground(i),this.processNode(t),this.addHeadersAndFooters(o,a),null!=u&&this.addWatermark(u,e,r),{pages:this.writer.context().pages,linearNodeList:this.linearNodeList}},i.prototype.addBackground=function(t){var e=b(t)?t:function(){return t},n=e(this.writer.context().page+1);if(n){var r=this.writer.context().getCurrentPage().pageSize;this.writer.beginUnbreakableBlock(r.width,r.height),n=this.docPreprocessor.preprocessDocument(n),this.processNode(this.docMeasure.measureDocument(n)),this.writer.commitUnbreakableBlock(0,0)}},i.prototype.addStaticRepeatable=function(t,e){this.addDynamicRepeatable(function(){return JSON.parse(JSON.stringify(t))},e)},i.prototype.addDynamicRepeatable=function(t,e){for(var n=this.writer.context().pages,r=0,i=n.length;r<i;r++){this.writer.context().page=r;var o=t(r+1,i,this.writer.context().pages[r].pageSize);if(o){var a=e(this.writer.context().getCurrentPage().pageSize,this.pageMargins);this.writer.beginUnbreakableBlock(a.width,a.height),o=this.docPreprocessor.preprocessDocument(o),this.processNode(this.docMeasure.measureDocument(o)),this.writer.commitUnbreakableBlock(a.x,a.y)}}},i.prototype.addHeadersAndFooters=function(t,e){var n=function(t,e){return{x:0,y:0,width:t.width,height:e.top}},r=function(t,e){return{x:0,y:t.height-e.bottom,width:t.width,height:e.bottom}};b(t)?this.addDynamicRepeatable(t,n):t&&this.addStaticRepeatable(t,n),b(e)?this.addDynamicRepeatable(e,r):e&&this.addStaticRepeatable(e,r)},i.prototype.addWatermark=function(t,e,n){if("string"==typeof t&&(t={text:t}),t.text){t.font=t.font||n.font||"Roboto",t.color=t.color||"black",t.opacity=t.opacity||.6,t.bold=t.bold||!1,t.italics=t.italics||!1;for(var r={text:t.text,font:e.provideFont(t.font,t.bold,t.italics),size:function(t,e,n){for(var r,i=t.width,o=t.height,a=.8*Math.sqrt(i*i+o*o),s=new m(n),u=new w(null,{font:e.font,bold:e.bold,italics:e.italics}),l=0,c=1e3,f=(l+c)/2;Math.abs(l-c)>1;)u.push({fontSize:f}),r=s.sizeOfString(e.text,u),r.width>a?(c=f,f=(l+c)/2):r.width<a&&(l=f,f=(l+c)/2),u.pop();return{size:r,fontSize:f}}(this.pageSize,t,e),color:t.color,opacity:t.opacity},i=this.writer.context().pages,o=0,a=i.length;o<a;o++)i[o].watermark=r}},i.prototype.processNode=function(t){var e=this;this.linearNodeList.push(t),o(t),function(n){var r=t._margin;"before"===t.pageBreak&&e.writer.moveToNextPage(t.pageOrientation),r&&(e.writer.context().moveDown(r[1]),e.writer.context().addMargin(r[0],r[2])),n(),r&&(e.writer.context().addMargin(-r[0],-r[2]),e.writer.context().moveDown(r[3])),"after"===t.pageBreak&&e.writer.moveToNextPage(t.pageOrientation)}(function(){var n=t.unbreakable;n&&e.writer.beginUnbreakableBlock();var r=t.absolutePosition;r&&(e.writer.context().beginDetachedBlock(),e.writer.context().moveTo(r.x||0,r.y||0));var i=t.relativePosition;if(i&&(e.writer.context().beginDetachedBlock(),e.writer.context().moveTo((i.x||0)+e.writer.context().x,(i.y||0)+e.writer.context().y)),t.stack)e.processVerticalContainer(t);else if(t.columns)e.processColumns(t);else if(t.ul)e.processList(!1,t);else if(t.ol)e.processList(!0,t);else if(t.table)e.processTable(t);else if(void 0!==t.text)e.processLeaf(t);else if(t.toc)e.processToc(t);else if(t.image)e.processImage(t);else if(t.canvas)e.processCanvas(t);else if(t.qr)e.processQr(t);else if(!t._span)throw"Unrecognized document structure: "+JSON.stringify(t,v);(r||i)&&e.writer.context().endDetachedBlock(),n&&e.writer.commitUnbreakableBlock()})},i.prototype.processVerticalContainer=function(t){var e=this;t.stack.forEach(function(n){e.processNode(n),r(t.positions,n.positions)})},i.prototype.processColumns=function(t){var e=t.columns,n=this.writer.context().availableWidth,i=function(t){if(!t)return null;var n=[];n.push(0);for(var r=e.length-1;r>0;r--)n.push(t);return n}(t._gap);i&&(n-=(i.length-1)*t._gap),h.buildColumnWidths(e,n);var o=this.processRow(e,e,i);r(t.positions,o.positions)},i.prototype.processRow=function(t,e,n,i,o){function a(t){for(var e,n=0,r=c.length;n<r;n++){var i=c[n];if(i.prevPage===t.prevPage){e=i;break}}e||(e=t,c.push(e)),e.prevY=Math.max(e.prevY,t.prevY),e.y=Math.min(e.y,t.y)}function s(t){return n&&n.length>t?n[t]:0}function u(t,e){if(t.rowSpan&&t.rowSpan>1){var n=o+t.rowSpan-1;if(n>=i.length)throw"Row span for column "+e+" (with indexes starting from 0) exceeded row count";return i[n][e]}return null}var l=this,c=[],f=[];return this.tracker.auto("pageChanged",a,function(){e=e||t,l.writer.context().beginColumnGroup();for(var i=0,o=t.length;i<o;i++){var a=t[i],c=e[i]._calcWidth,h=s(i);if(a.colSpan&&a.colSpan>1)for(var p=1;p<a.colSpan;p++)c+=e[++i]._calcWidth+n[i];l.writer.context().beginColumn(c,h,u(a,i)),a._span?a._columnEndingContext&&l.writer.context().markEnding(a):(l.processNode(a),r(f,a.positions))}l.writer.context().completeColumnGroup()}),{pageBreaks:c,positions:f}},i.prototype.processList=function(t,e){function n(t){if(s){var e=s;if(s=null,e.canvas){var n=e.canvas[0];y(n,-e._minWidth,0),i.writer.addVector(n)}else if(e._inlines){var r=new d(i.pageSize.width);r.addInline(e._inlines[0]),r.x=-e._minWidth,r.y=t.getAscenderHeight()-r.getAscenderHeight(),i.writer.addLine(r,!0)}}}var i=this,o=t?e.ol:e.ul,a=e._gapSize;this.writer.context().addMargin(a.width);var s;this.tracker.auto("lineAdded",n,function(){o.forEach(function(t){s=t.listMarker,i.processNode(t),r(e.positions,t.positions)})}),this.writer.context().addMargin(-a.width)},i.prototype.processTable=function(t){var e=new p(t);e.beginTable(this.writer);for(var n=0,i=t.table.body.length;n<i;n++){e.beginRow(n,this.writer);var o=this.processRow(t.table.body[n],t.table.widths,t._offsets.offsets,t.table.body,n);r(t.positions,o.positions),e.endRow(n,this.writer,o.pageBreaks)}e.endTable(this.writer)},i.prototype.processLeaf=function(t){var e=this.buildNextLine(t),n=e?e.getHeight():0,r=t.maxHeight||-1;for(t._tocItemRef&&(e._tocItemNode=t._tocItemRef);e&&(-1===r||n<r);){var i=this.writer.addLine(e);t.positions.push(i),e=this.buildNextLine(t),e&&(n+=e.getHeight())}},i.prototype.processToc=function(t){t.toc.title&&this.processNode(t.toc.title),this.processNode(t.toc._table)},i.prototype.buildNextLine=function(t){if(!t._inlines||0===t._inlines.length)return null;for(var e=new d(this.writer.context().availableWidth),n=new m(null);t._inlines&&t._inlines.length>0&&e.hasEnoughSpaceForInline(t._inlines[0]);){var r=t._inlines.shift();if(!r.noWrap&&r.text.length>1&&r.width>e.maxWidth){var i=r.width/r.text.length,o=Math.floor(e.maxWidth/i);if(o<1&&(o=1),o<r.text.length){var a=function(t){var e=t.constructor();for(var n in t)e[n]=t[n];return e}(r);a.text=r.text.substr(o),r.text=r.text.substr(0,o),a.width=n.widthOfString(a.text,a.font,a.fontSize,a.characterSpacing),r.width=n.widthOfString(r.text,r.font,r.fontSize,r.characterSpacing),t._inlines.unshift(a)}}e.addInline(r)}return e.lastLineInParagraph=0===t._inlines.length,e},i.prototype.processImage=function(t){var e=this.writer.addImage(t);t.positions.push(e)},i.prototype.processCanvas=function(t){var e=t._minHeight;this.writer.context().availableHeight<e&&this.writer.moveToNextPage(),t.canvas.forEach(function(e){var n=this.writer.addVector(e);t.positions.push(n)},this),this.writer.context().moveDown(e)},i.prototype.processQr=function(t){var e=this.writer.addQr(t);t.positions.push(e)},t.exports=i},function(t,e){"use strict";function n(){this.events={}}n.prototype.startTracking=function(t,e){var n=this.events[t]||(this.events[t]=[]);n.indexOf(e)<0&&n.push(e)},n.prototype.stopTracking=function(t,e){var n=this.events[t];if(n){var r=n.indexOf(e);r>=0&&n.splice(r,1)}},n.prototype.emit=function(t){var e=Array.prototype.slice.call(arguments,1),n=this.events[t];n&&n.forEach(function(t){t.apply(this,e)})},n.prototype.auto=function(t,e,n){this.startTracking(t,e),n(),this.stopTracking(t,e)},t.exports=n},function(t,e,n){"use strict";function r(){}var i=n(13).fontStringify;r.prototype.preprocessDocument=function(t){return this.tocs=[],this.preprocessNode(t)},r.prototype.preprocessNode=function(t){if(Array.isArray(t)?t={stack:t}:"string"==typeof t||t instanceof String?t={text:t}:"number"==typeof t||"boolean"==typeof t?t={text:t.toString()}:null===t?t={text:""}:0===Object.keys(t).length&&(t={text:""}),t.columns)return this.preprocessColumns(t);if(t.stack)return this.preprocessVerticalContainer(t);if(t.ul)return this.preprocessList(t);if(t.ol)return this.preprocessList(t);if(t.table)return this.preprocessTable(t);if(void 0!==t.text)return this.preprocessText(t);if(t.toc)return this.preprocessToc(t);if(t.image)return this.preprocessImage(t);if(t.canvas)return this.preprocessCanvas(t);if(t.qr)return this.preprocessQr(t);throw"Unrecognized document structure: "+JSON.stringify(t,i)},r.prototype.preprocessColumns=function(t){for(var e=t.columns,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},r.prototype.preprocessVerticalContainer=function(t){for(var e=t.stack,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},r.prototype.preprocessList=function(t){for(var e=t.ul||t.ol,n=0,r=e.length;n<r;n++)e[n]=this.preprocessNode(e[n]);return t},r.prototype.preprocessTable=function(t){var e,n,r,i;for(e=0,r=t.table.body[0].length;e<r;e++)for(n=0,i=t.table.body.length;n<i;n++){var o=t.table.body[n],a=o[e];void 0!==a&&(null===a&&(a=""),a._span||(o[e]=this.preprocessNode(a)))}return t},r.prototype.preprocessText=function(t){if(t.tocItem){Array.isArray(t.tocItem)||(t.tocItem=[t.tocItem]);for(var e=0,n=t.tocItem.length;e<n;e++){"string"==typeof t.tocItem[e]||t.tocItem[e]instanceof String||(t.tocItem[e]="_default_");var r=t.tocItem[e];this.tocs[r]||(this.tocs[r]={toc:{_items:[],_pseudo:!0}}),this.tocs[r].toc._items.push(t)}}return t},r.prototype.preprocessToc=function(t){if(t.toc.id||(t.toc.id="_default_"),t.toc.title=t.toc.title?this.preprocessNode(t.toc.title):null,t.toc._items=[],this.tocs[t.toc.id]){if(!this.tocs[t.toc.id].toc._pseudo)throw"TOC '"+t.toc.id+"' already exists";t.toc._items=this.tocs[t.toc.id].toc._items}return this.tocs[t.toc.id]=t,t},r.prototype.preprocessImage=function(t){return t},r.prototype.preprocessCanvas=function(t){return t},r.prototype.preprocessQr=function(t){return t},t.exports=r},function(t,e){"use strict";function n(){for(var t={},e=0,n=arguments.length;e<n;e++){var r=arguments[e];if(r)for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i])}return t}function r(t,e,n){switch(t.type){case"ellipse":case"rect":t.x+=e,t.y+=n;break;case"line":t.x1+=e,t.x2+=e,t.y1+=n,t.y2+=n;break;case"polyline":for(var r=0,i=t.points.length;r<i;r++)t.points[r].x+=e,t.points[r].y+=n}}function i(t,e){return"font"===t?"font":e}function o(t){var e={};return t&&"[object Function]"===e.toString.call(t)}t.exports={pack:n,fontStringify:i,offsetVector:r,isFunction:o}},function(t,e,n){"use strict";function r(t,e,n,r,a,s){this.textTools=new i(t),this.styleStack=new o(e,n),this.imageMeasure=r,this.tableLayouts=a,this.images=s,this.autoImageIndex=1}var i=n(15),o=n(22),a=n(23),s=n(13).fontStringify,u=n(13).pack,l=n(24);r.prototype.measureDocument=function(t){return this.measureNode(t)},r.prototype.measureNode=function(t){function e(t){var e=t._margin;return e&&(t._minWidth+=e[0]+e[2],t._maxWidth+=e[0]+e[2]),t}function n(){function e(t,e){return t.marginLeft||t.marginTop||t.marginRight||t.marginBottom?[t.marginLeft||e[0]||0,t.marginTop||e[1]||0,t.marginRight||e[2]||0,t.marginBottom||e[3]||0]:e}function n(t){return"number"==typeof t||t instanceof Number?t=[t,t,t,t]:Array.isArray(t)&&2===t.length&&(t=[t[0],t[1],t[0],t[1]]),t}var i=[void 0,void 0,void 0,void 0];if(t.style){var o=Array.isArray(t.style)?t.style:[t.style],a=function(t){for(var e={},n=t.length-1;n>=0;n--){var i=t[n],o=r.styleStack.styleDictionary[i];for(var a in o)o.hasOwnProperty(a)&&(e[a]=o[a])}return e}(o);a&&(i=e(a,i)),a.margin&&(i=n(a.margin))}return i=e(t,i),t.margin&&(i=n(t.margin)),void 0===i[0]&&void 0===i[1]&&void 0===i[2]&&void 0===i[3]?null:i}var r=this;return this.styleStack.auto(t,function(){if(t._margin=n(),t.columns)return e(r.measureColumns(t));if(t.stack)return e(r.measureVerticalContainer(t));if(t.ul)return e(r.measureUnorderedList(t));if(t.ol)return e(r.measureOrderedList(t));if(t.table)return e(r.measureTable(t));if(void 0!==t.text)return e(r.measureLeaf(t));if(t.toc)return e(r.measureToc(t));if(t.image)return e(r.measureImage(t));if(t.canvas)return e(r.measureCanvas(t));if(t.qr)return e(r.measureQr(t));throw"Unrecognized document structure: "+JSON.stringify(t,s)})},r.prototype.convertIfBase64Image=function(t){if(/^data:image\/(jpeg|jpg|png);base64,/.test(t.image)){var e="$$pdfmake$$"+this.autoImageIndex++;this.images[e]=t.image,t.image=e}},r.prototype.measureImage=function(t){this.images&&this.convertIfBase64Image(t);var e=this.imageMeasure.measureImage(t.image);if(t.fit){var n=e.width/e.height>t.fit[0]/t.fit[1]?t.fit[0]/e.width:t.fit[1]/e.height;t._width=t._minWidth=t._maxWidth=e.width*n,t._height=e.height*n}else t._width=t._minWidth=t._maxWidth=t.width||e.width,t._height=t.height||e.height*t._width/e.width,"number"==typeof t.maxWidth&&t.maxWidth<t._width&&(t._width=t._minWidth=t._maxWidth=t.maxWidth,t._height=t._width*e.height/e.width),"number"==typeof t.maxHeight&&t.maxHeight<t._height&&(t._height=t.maxHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height),"number"==typeof t.minWidth&&t.minWidth>t._width&&(t._width=t._minWidth=t._maxWidth=t.minWidth,t._height=t._width*e.height/e.width),"number"==typeof t.minHeight&&t.minHeight>t._height&&(t._height=t.minHeight,t._width=t._minWidth=t._maxWidth=t._height*e.width/e.height);return t._alignment=this.styleStack.getProperty("alignment"),t},r.prototype.measureLeaf=function(t){var e=this.styleStack.clone();e.push(t);var n=this.textTools.buildInlines(t.text,e);return t._inlines=n.items,t._minWidth=n.minWidth,t._maxWidth=n.maxWidth,t},r.prototype.measureToc=function(t){t.toc.title&&(t.toc.title=this.measureNode(t.toc.title));for(var e=[],n=0,r=t.toc._items.length;n<r;n++){var i=t.toc._items[n];e.push([{text:i.text,alignment:"left"},{text:"00000",alignment:"right",_tocItemRef:i}])}return t.toc._table={table:{dontBreakRows:!0,widths:["*","auto"],body:e},layout:"noBorders"},t.toc._table=this.measureNode(t.toc._table),t},r.prototype.measureVerticalContainer=function(t){var e=t.stack;t._minWidth=0,t._maxWidth=0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]),t._minWidth=Math.max(t._minWidth,e[n]._minWidth),t._maxWidth=Math.max(t._maxWidth,e[n]._maxWidth);return t},r.prototype.gapSizeForList=function(){return this.textTools.sizeOfString("9. ",this.styleStack)},r.prototype.buildUnorderedMarker=function(t,e,n){var r,i=t.getProperty("markerColor")||t.getProperty("color")||"black";switch(n){case"circle":r=function(t,e){var n=t.fontSize/6;return{canvas:[{x:n,y:t.height/t.lineHeight+t.descender-t.fontSize/3,r1:n,r2:n,type:"ellipse",lineColor:e}]}}(e,i);break;case"square":r=function(t,e){var n=t.fontSize/3;return{canvas:[{x:0,y:t.height/t.lineHeight+t.descender-t.fontSize/3-n/2,h:n,w:n,type:"rect",color:e}]}}(e,i);break;case"none":r={};break;case"disc":default:r=function(t,e){var n=t.fontSize/6;return{canvas:[{x:n,y:t.height/t.lineHeight+t.descender-t.fontSize/3,r1:n,r2:n,type:"ellipse",color:e}]}}(e,i)}return r._minWidth=r._maxWidth=e.width,r._minHeight=r._maxHeight=e.height,r},r.prototype.buildOrderedMarker=function(t,e,n,r){function i(t){function e(t){return(t>=26?e((t/26>>0)-1):"")+"abcdefghijklmnopqrstuvwxyz"[t%26>>0]}return t<1?t.toString():e(t-1)}function o(t){if(t<1||t>4999)return t.toString();var e,n=t,r={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},i="";for(e in r)for(;n>=r[e];)i+=e,n-=r[e];return i}var a;switch(n){case"none":a=null;break;case"upper-alpha":a=i(t).toUpperCase();break;case"lower-alpha":a=i(t);break;case"upper-roman":a=o(t);break;case"lower-roman":a=o(t).toLowerCase();break;case"decimal":default:a=function(t){return t.toString()}(t)}if(null===a)return{};r&&(Array.isArray(r)?(r[0]&&(a=r[0]+a),r[1]&&(a+=r[1]),a+=" "):a+=r+" ");var s={text:a},u=e.getProperty("markerColor");return u&&(s.color=u),{_inlines:this.textTools.buildInlines(s,e).items}},r.prototype.measureUnorderedList=function(t){var e=this.styleStack.clone(),n=t.ul;t.type=t.type||"disc",t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=0,i=n.length;r<i;r++){var o=n[r]=this.measureNode(n[r]);o.ol||o.ul||(o.listMarker=this.buildUnorderedMarker(e,t._gapSize,t.type)),t._minWidth=Math.max(t._minWidth,n[r]._minWidth+t._gapSize.width),t._maxWidth=Math.max(t._maxWidth,n[r]._maxWidth+t._gapSize.width)}return t},r.prototype.measureOrderedList=function(t){var e=this.styleStack.clone(),n=t.ol;t.type=t.type||"decimal",t.separator=t.separator||".",t.reversed=t.reversed||!1,t.start||(t.start=t.reversed?n.length:1),t._gapSize=this.gapSizeForList(),t._minWidth=0,t._maxWidth=0;for(var r=t.start,i=0,o=n.length;i<o;i++){var a=n[i]=this.measureNode(n[i]);a.ol||a.ul||(a.listMarker=this.buildOrderedMarker(a.counter||r,e,t.type,t.separator),a.listMarker._inlines&&(t._gapSize.width=Math.max(t._gapSize.width,a.listMarker._inlines[0].width))),t._minWidth=Math.max(t._minWidth,n[i]._minWidth),t._maxWidth=Math.max(t._maxWidth,n[i]._maxWidth),t.reversed?r--:r++}t._minWidth+=t._gapSize.width,t._maxWidth+=t._gapSize.width;for(var i=0,o=n.length;i<o;i++){var a=n[i];a.ol||a.ul||(a.listMarker._minWidth=a.listMarker._maxWidth=t._gapSize.width)}return t},r.prototype.measureColumns=function(t){var e=t.columns;t._gap=this.styleStack.getProperty("columnGap")||0;for(var n=0,r=e.length;n<r;n++)e[n]=this.measureNode(e[n]);var i=a.measureMinMax(e),o=e.length>0?e.length-1:0;return t._minWidth=i.min+t._gap*o,t._maxWidth=i.max+t._gap*o,t},r.prototype.measureTable=function(t){function e(e,n,r){for(var i={minWidth:0,maxWidth:0},o=0;o<n;o++)i.minWidth+=t.table.widths[e+o]._minWidth+(o?r.offsets[e+o]:0),i.maxWidth+=t.table.widths[e+o]._maxWidth+(o?r.offsets[e+o]:0);return i}!function(t){if(t.table.widths||(t.table.widths="auto"),"string"==typeof t.table.widths||t.table.widths instanceof String)for(t.table.widths=[t.table.widths];t.table.widths.length<t.table.body[0].length;)t.table.widths.push(t.table.widths[t.table.widths.length-1]);for(var e=0,n=t.table.widths.length;e<n;e++){var r=t.table.widths[e];("number"==typeof r||r instanceof Number||"string"==typeof r||r instanceof String)&&(t.table.widths[e]={width:r})}}(t),t._layout=function(e){var n=t.layout;return("string"==typeof t.layout||t instanceof String)&&(n=e[n]),u({hLineWidth:function(t,e){return 1},vLineWidth:function(t,e){return 1},hLineColor:function(t,e){return"black"},vLineColor:function(t,e){return"black"},paddingLeft:function(t,e){return 4},paddingRight:function(t,e){return 4},paddingTop:function(t,e){return 2},paddingBottom:function(t,e){return 2},fillColor:function(t,e){return null},defaultBorder:!0},n)}(this.tableLayouts),t._offsets=function(e){for(var n=[],r=0,i=0,o=0,a=t.table.widths.length;o<a;o++){var s=i+e.vLineWidth(o,t)+e.paddingLeft(o,t);n.push(s),r+=s,i=e.paddingRight(o,t)}return r+=i+e.vLineWidth(t.table.widths.length,t),{total:r,offsets:n}}(t._layout);var n,r,i,o,s=[];for(n=0,i=t.table.body[0].length;n<i;n++){var l=t.table.widths[n];for(l._minWidth=0,l._maxWidth=0,r=0,o=t.table.body.length;r<o;r++){var c=t.table.body[r],f=c[n];if(void 0===f)throw"Malformed table row, a cell is undefined.";null===f&&(f=""),f._span||(f=c[n]=this.styleStack.auto(f,function(t,e){return function(){return null!==e&&"object"==typeof e&&(e.fillColor=t.styleStack.getProperty("fillColor")),t.measureNode(e)}}(this,f)),f.colSpan&&f.colSpan>1?(!function(t,e,n){for(var r=1;r<n;r++)t[e+r]={_span:!0,_minWidth:0,_maxWidth:0,rowSpan:t[e].rowSpan}}(c,n,f.colSpan),s.push({col:n,span:f.colSpan,minWidth:f._minWidth,maxWidth:f._maxWidth})):(l._minWidth=Math.max(l._minWidth,f._minWidth),l._maxWidth=Math.max(l._maxWidth,f._maxWidth))),f.rowSpan&&f.rowSpan>1&&function(t,e,n,r){for(var i=1;i<r;i++)t.body[e+i][n]={_span:!0,_minWidth:0,_maxWidth:0,fillColor:t.body[e][n].fillColor}}(t.table,r,n,f.rowSpan)}}!function(){for(var n,r,i=0,o=s.length;i<o;i++){var a=s[i],u=e(a.col,a.span,t._offsets),l=a.minWidth-u.minWidth,c=a.maxWidth-u.maxWidth;if(l>0)for(n=l/a.span,r=0;r<a.span;r++)t.table.widths[a.col+r]._minWidth+=n;if(c>0)for(n=c/a.span,r=0;r<a.span;r++)t.table.widths[a.col+r]._maxWidth+=n}}();var h=a.measureMinMax(t.table.widths);return t._minWidth=h.min+t._offsets.total,t._maxWidth=h.max+t._offsets.total,t},r.prototype.measureCanvas=function(t){for(var e=0,n=0,r=0,i=t.canvas.length;r<i;r++){var o=t.canvas[r];switch(o.type){case"ellipse":e=Math.max(e,o.x+o.r1),n=Math.max(n,o.y+o.r2);break;case"rect":e=Math.max(e,o.x+o.w),n=Math.max(n,o.y+o.h);break;case"line":e=Math.max(e,o.x1,o.x2),n=Math.max(n,o.y1,o.y2);break;case"polyline":for(var a=0,s=o.points.length;a<s;a++)e=Math.max(e,o.points[a].x),n=Math.max(n,o.points[a].y)}}return t._minWidth=t._maxWidth=e,t._minHeight=t._maxHeight=n,t},r.prototype.measureQr=function(t){return t=l.measure(t),t._alignment=this.styleStack.getProperty("alignment"),t},t.exports=r},function(t,e,n){"use strict";function r(t){this.fontProvider=t}function i(t,e){var n=[];if(t=t.replace("\t"," "),e)return n.push({text:t}),n;for(var r,i=new f(t),o=0;r=i.nextBreak();){var a=t.slice(o,r.position);r.required||a.match(/\r?\n$|\r$/)?(a=a.replace(/\r?\n$|\r$/,""),n.push({text:a,lineEnd:!0})):n.push({text:a}),o=r.position}return n}function o(t,e){e=e||{},t=t||{};for(var n in t)"text"!=n&&t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function a(t,e){var n=[];Array.isArray(t)||(t=[t]) ;for(var r=0,a=t.length;r<a;r++){var l,c=t[r],f=null,h=u(c||{},e,"noWrap",!1);null!==c&&("object"==typeof c||c instanceof Object)?(l=i(s(c.text),h),f=o(c)):l=i(s(c),h);for(var p=0,d=l.length;p<d;p++){var g={text:l[p].text};l[p].lineEnd&&(g.lineEnd=!0),o(f,g),n.push(g)}}return n}function s(t){return void 0===t||null===t?"":"number"==typeof t?t.toString():"string"==typeof t||t instanceof String?t:t.toString()}function u(t,e,n,r){var i;return void 0!==t[n]&&null!==t[n]?t[n]:e?(e.auto(t,function(){i=e.getProperty(n)}),null!==i&&void 0!==i?i:r):r}function l(t,e,n){var r=a(e,n);if(r.length){var i=u(r[0],n,"leadingIndent",0);i&&(r[0].leadingCut=-i,r[0].leadingIndent=i)}return r.forEach(function(e){var r=u(e,n,"font","Roboto"),i=u(e,n,"fontSize",12),o=u(e,n,"bold",!1),a=u(e,n,"italics",!1),s=u(e,n,"color","black"),l=u(e,n,"decoration",null),f=u(e,n,"decorationColor",null),d=u(e,n,"decorationStyle",null),g=u(e,n,"background",null),y=u(e,n,"lineHeight",1),v=u(e,n,"characterSpacing",0),b=u(e,n,"link",null),m=u(e,n,"linkToPage",null),w=u(e,n,"noWrap",null),x=u(e,n,"preserveLeadingSpaces",!1),_=t.provideFont(r,o,a);e.width=c(e.text,_,i,v),e.height=_.lineHeight(i)*y;var k=e.text.match(h);e.leadingCut||(e.leadingCut=0),k&&!x&&(e.leadingCut+=c(k[0],_,i,v));var S=e.text.match(p);e.trailingCut=S?c(S[0],_,i,v):0,e.alignment=u(e,n,"alignment","left"),e.font=_,e.fontSize=i,e.characterSpacing=v,e.color=s,e.decoration=l,e.decorationColor=f,e.decorationStyle=d,e.background=g,e.link=b,e.linkToPage=m,e.noWrap=w}),r}function c(t,e,n,r){return e.widthOfString(t,n)+(r||0)*(t.length-1)}var f=n(16),h=/^(\s)+/g,p=/(\s)+$/g;r.prototype.buildInlines=function(t,e){function n(t){return Math.max(0,t.width-t.leadingCut-t.trailingCut)}var r,i=l(this.fontProvider,t,e),o=0,a=0;return i.forEach(function(t){o=Math.max(o,t.width-t.leadingCut-t.trailingCut),r||(r={width:0,leadingCut:t.leadingCut,trailingCut:0}),r.width+=t.width,r.trailingCut=t.trailingCut,a=Math.max(a,n(r)),t.lineEnd&&(r=null)}),u({},e,"noWrap",!1)&&(o=a),{items:i,minWidth:o,maxWidth:a}},r.prototype.sizeOfString=function(t,e){t=t?t.toString().replace("\t"," "):"";var n=u({},e,"font","Roboto"),r=u({},e,"fontSize",12),i=u({},e,"bold",!1),o=u({},e,"italics",!1),a=u({},e,"lineHeight",1),s=u({},e,"characterSpacing",0),l=this.fontProvider.provideFont(n,i,o);return{width:c(t,l,r,s),height:l.lineHeight(r)*a,fontSize:r,lineHeight:a,ascender:l.ascender/1e3*r,descender:l.descender/1e3*r}},r.prototype.widthOfString=function(t,e,n,r){return c(t,e,n,r)},t.exports=r},function(t,e,n){(function(){var e,r,i,o,a,s,u,l,c,f,h,p,d,g,y,v,b,m,w,x,_,k,S,C,A,P,E;w=n(17),k=n(19),P=n(20),o=P.BK,c=P.CR,p=P.LF,g=P.NL,a=P.CB,i=P.BA,m=P.SP,x=P.WJ,m=P.SP,o=P.BK,p=P.LF,g=P.NL,e=P.AI,r=P.AL,v=P.SA,b=P.SG,_=P.XX,u=P.CJ,P.ID,y=P.NS,P.characterClasses,E=n(21),f=E.DI_BRK,h=E.IN_BRK,s=E.CI_BRK,l=E.CP_BRK,E.PR_BRK,A=E.pairTable,C=k.toByteArray("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"),S=new w(C),d=function(){function t(t){this.string=t,this.pos=0,this.lastPos=0,this.curClass=null,this.nextClass=null}var n,d,w;return t.prototype.nextCodePoint=function(){var t,e;return t=this.string.charCodeAt(this.pos++),e=this.string.charCodeAt(this.pos),55296<=t&&t<=56319&&56320<=e&&e<=57343?(this.pos++,1024*(t-55296)+(e-56320)+65536):t},d=function(t){switch(t){case e:return r;case v:case b:case _:return r;case u:return y;default:return t}},w=function(t){switch(t){case p:case g:return o;case a:return i;case m:return x;default:return t}},t.prototype.nextCharClass=function(t){return null==t&&(t=!1),d(S.get(this.nextCodePoint()))},n=function(){function t(t,e){this.position=t,this.required=null!=e&&e}return t}(),t.prototype.nextBreak=function(){var t,e,r;for(null==this.curClass&&(this.curClass=w(this.nextCharClass()));this.pos<this.string.length;){if(this.lastPos=this.pos,e=this.nextClass,this.nextClass=this.nextCharClass(),this.curClass===o||this.curClass===c&&this.nextClass!==p)return this.curClass=w(d(this.nextClass)),new n(this.lastPos,!0);if(null==(t=function(){switch(this.nextClass){case m:return this.curClass;case o:case p:case g:return o;case c:return c;case a:return i}}.call(this))){switch(r=!1,A[this.curClass][this.nextClass]){case f:r=!0;break;case h:r=e===m;break;case s:if(!(r=e===m))continue;break;case l:if(e!==m)continue}if(this.curClass=this.nextClass,r)return new n(this.lastPos)}else if(this.curClass=t,this.nextClass===a)return new n(this.lastPos)}if(this.pos>=this.string.length)return this.lastPos<this.string.length?(this.lastPos=this.string.length,new n(this.string.length)):null},t}(),t.exports=d}).call(this)},function(t,e,n){var r,i;i=n(18),r=function(){function t(t){var e,n,r;e="function"==typeof t.readUInt32BE&&"function"==typeof t.slice,e||t instanceof Uint8Array?(e?(this.highStart=t.readUInt32BE(0),this.errorValue=t.readUInt32BE(4),n=t.readUInt32BE(8),t=t.slice(12)):(r=new DataView(t.buffer),this.highStart=r.getUint32(0),this.errorValue=r.getUint32(4),n=r.getUint32(8),t=t.subarray(12)),t=i(t,new Uint8Array(n)),t=i(t,new Uint8Array(n)),this.data=new Uint32Array(t.buffer)):(this.data=t.data,this.highStart=t.highStart,this.errorValue=t.errorValue)}var e,n,r,o,a,s,u,l,c,f,h,p,d,g,y,v;return p=11,g=5,d=p-g,h=65536>>p,a=1<<d,u=a-1,l=2,e=1<<g,r=e-1,f=65536>>g,c=1024>>g,s=f+c,v=s,y=32,o=v+y,n=1<<l,t.prototype.get=function(t){var e;return t<0||t>1114111?this.errorValue:t<55296||t>56319&&t<=65535?(e=(this.data[t>>g]<<l)+(t&r),this.data[e]):t<=65535?(e=(this.data[f+(t-55296>>g)]<<l)+(t&r),this.data[e]):t<this.highStart?(e=this.data[o-h+(t>>p)],e=this.data[e+(t>>g&u)],e=(e<<l)+(t&r),this.data[e]):this.data[this.data.length-n]},t}(),t.exports=r},function(t,e){function n(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function r(t,e){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=e,this.destLen=0,this.ltree=new n,this.dtree=new n}function i(t,e,n,r){var i,o;for(i=0;i<n;++i)t[i]=0;for(i=0;i<30-n;++i)t[i+n]=i/n|0;for(o=r,i=0;i<30;++i)e[i]=o,o+=1<<t[i]}function o(t,e,n,r){var i,o;for(i=0;i<16;++i)t.table[i]=0;for(i=0;i<r;++i)t.table[e[n+i]]++;for(t.table[0]=0,o=0,i=0;i<16;++i)S[i]=o,o+=t.table[i];for(i=0;i<r;++i)e[n+i]&&(t.trans[S[e[n+i]]++]=i)}function a(t){t.bitcount--||(t.tag=t.source[t.sourceIndex++],t.bitcount=7);var e=1&t.tag;return t.tag>>>=1,e}function s(t,e,n){if(!e)return n;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var r=t.tag&65535>>>16-e;return t.tag>>>=e,t.bitcount-=e,r+n}function u(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<<t.bitcount,t.bitcount+=8;var n=0,r=0,i=0,o=t.tag;do{r=2*r+(1&o),o>>>=1,++i,n+=e.table[i],r-=e.table[i]}while(r>=0);return t.tag=o,t.bitcount-=i,e.trans[n+r]}function l(t,e,n){var r,i,a,l,c,f;for(r=s(t,5,257),i=s(t,5,1),a=s(t,4,4),l=0;l<19;++l)k[l]=0;for(l=0;l<a;++l){var h=s(t,3,0);k[x[l]]=h}for(o(_,k,0,19),c=0;c<r+i;){var p=u(t,_);switch(p){case 16:var d=k[c-1];for(f=s(t,2,3);f;--f)k[c++]=d;break;case 17:for(f=s(t,3,3);f;--f)k[c++]=0;break;case 18:for(f=s(t,7,11);f;--f)k[c++]=0;break;default:k[c++]=p}}o(e,k,0,r),o(n,k,r,i)}function c(t,e,n){for(;;){var r=u(t,e);if(256===r)return p;if(r<256)t.dest[t.destLen++]=r;else{var i,o,a,l;for(r-=257,i=s(t,v[r],b[r]),o=u(t,n),a=t.destLen-s(t,m[o],w[o]),l=a;l<a+i;++l)t.dest[t.destLen++]=t.dest[l]}}}function f(t){for(var e,n,r;t.bitcount>8;)t.sourceIndex--,t.bitcount-=8;if(e=t.source[t.sourceIndex+1],e=256*e+t.source[t.sourceIndex],n=t.source[t.sourceIndex+3],n=256*n+t.source[t.sourceIndex+2],e!==(65535&~n))return d;for(t.sourceIndex+=4,r=e;r;--r)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,p}function h(t,e){var n,i,o=new r(t,e);do{switch(n=a(o),s(o,2,0)){case 0:i=f(o);break;case 1:i=c(o,g,y);break;case 2:l(o,o.ltree,o.dtree),i=c(o,o.ltree,o.dtree);break;default:i=d}if(i!==p)throw new Error("Data error")}while(!n);return o.destLen<o.dest.length?"function"==typeof o.dest.slice?o.dest.slice(0,o.destLen):o.dest.subarray(0,o.destLen):o.dest}var p=0,d=-3,g=new n,y=new n,v=new Uint8Array(30),b=new Uint16Array(30),m=new Uint8Array(30),w=new Uint16Array(30),x=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),_=new n,k=new Uint8Array(320),S=new Uint16Array(16);!function(t,e){var n;for(n=0;n<7;++n)t.table[n]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,n=0;n<24;++n)t.trans[n]=256+n;for(n=0;n<144;++n)t.trans[24+n]=n;for(n=0;n<8;++n)t.trans[168+n]=280+n;for(n=0;n<112;++n)t.trans[176+n]=144+n;for(n=0;n<5;++n)e.table[n]=0;for(e.table[5]=32,n=0;n<32;++n)e.trans[n]=n}(g,y),i(v,b,4,3),i(m,w,2,1),v[28]=0,b[28]=258,t.exports=h},function(t,e,n){!function(t){"use strict";function e(t){var e=t.charCodeAt(0);return e===o||e===c?62:e===a||e===f?63:e<s?-1:e<s+10?e-s+26+26:e<l+26?e-l:e<u+26?e-u+26:void 0}function n(t){function n(t){l[f++]=t}var r,o,a,s,u,l;if(t.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var c=t.length;u="="===t.charAt(c-2)?2:"="===t.charAt(c-1)?1:0,l=new i(3*t.length/4-u),a=u>0?t.length-4:t.length;var f=0;for(r=0,o=0;r<a;r+=4,o+=3)s=e(t.charAt(r))<<18|e(t.charAt(r+1))<<12|e(t.charAt(r+2))<<6|e(t.charAt(r+3)),n((16711680&s)>>16),n((65280&s)>>8),n(255&s);return 2===u?(s=e(t.charAt(r))<<2|e(t.charAt(r+1))>>4,n(255&s)):1===u&&(s=e(t.charAt(r))<<10|e(t.charAt(r+1))<<4|e(t.charAt(r+2))>>2,n(s>>8&255),n(255&s)),l}function r(t){function e(t){return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t)}var n,r,i,o=t.length%3,a="";for(n=0,i=t.length-o;n<i;n+=3)r=(t[n]<<16)+(t[n+1]<<8)+t[n+2],a+=function(t){return e(t>>18&63)+e(t>>12&63)+e(t>>6&63)+e(63&t)}(r);switch(o){case 1:r=t[t.length-1],a+=e(r>>2),a+=e(r<<4&63),a+="==";break;case 2:r=(t[t.length-2]<<8)+t[t.length-1],a+=e(r>>10),a+=e(r>>4&63),a+=e(r<<2&63),a+="="}return a}var i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="+".charCodeAt(0),a="/".charCodeAt(0),s="0".charCodeAt(0),u="a".charCodeAt(0),l="A".charCodeAt(0),c="-".charCodeAt(0),f="_".charCodeAt(0);t.toByteArray=n,t.fromByteArray=r}(e)},function(t,e){(function(){e.OP=0,e.CL=1,e.CP=2,e.QU=3,e.GL=4,e.NS=5,e.EX=6,e.SY=7,e.IS=8,e.PR=9,e.PO=10,e.NU=11,e.AL=12,e.HL=13,e.ID=14,e.IN=15,e.HY=16,e.BA=17,e.BB=18,e.B2=19,e.ZW=20,e.CM=21,e.WJ=22,e.H2=23,e.H3=24,e.JL=25,e.JV=26,e.JT=27,e.RI=28,e.AI=29,e.BK=30,e.CB=31,e.CJ=32,e.CR=33,e.LF=34,e.NL=35,e.SA=36,e.SG=37,e.SP=38,e.XX=39}).call(this)},function(t,e){(function(){var t,n,r,i,o;e.DI_BRK=r=0,e.IN_BRK=i=1,e.CI_BRK=t=2,e.CP_BRK=n=3,e.PR_BRK=o=4,e.pairTable=[[o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,n,o,o,o,o,o,o,o],[r,o,o,i,i,o,o,o,o,i,i,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,o,o,o,o,i,i,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[o,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,i,r,i,i,r,r,o,t,o,i,i,i,i,i,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,i,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[r,o,o,i,r,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,o,o,t,o,r,r,r,r,r,r],[r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,o,r,r,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,r,r,i,i,i,r,i,i,i,r,r,o,t,o,r,r,r,r,r,r],[i,o,o,i,i,i,o,o,o,i,i,i,i,i,i,i,i,i,i,i,o,t,o,i,i,i,i,i,i],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,i,i,i,i,r,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,i,i,r],[r,o,o,i,i,i,o,o,o,r,i,r,r,r,r,i,i,i,r,r,o,t,o,r,r,r,r,i,r],[r,o,o,i,i,i,o,o,o,r,r,r,r,r,r,r,i,i,r,r,o,t,o,r,r,r,r,r,i]]}).call(this)},function(t,e){"use strict";function n(t,e){this.defaultStyle=e||{},this.styleDictionary=t,this.styleOverrides=[]}n.prototype.clone=function(){var t=new n(this.styleDictionary,this.defaultStyle);return this.styleOverrides.forEach(function(e){t.styleOverrides.push(e)}),t},n.prototype.push=function(t){this.styleOverrides.push(t)},n.prototype.pop=function(t){for(t=t||1;t-- >0;)this.styleOverrides.pop()},n.prototype.autopush=function(t){if("string"==typeof t||t instanceof String)return 0;var e=[];t.style&&(e=Array.isArray(t.style)?t.style:[t.style]);for(var n=0,r=e.length;n<r;n++)this.push(e[n]);var i={},o=!1;return["font","fontSize","bold","italics","alignment","color","columnGap","fillColor","decoration","decorationStyle","decorationColor","background","lineHeight","characterSpacing","noWrap","markerColor","leadingIndent"].forEach(function(e){void 0!==t[e]&&null!==t[e]&&(i[e]=t[e],o=!0)}),o&&this.push(i),e.length+(o?1:0)},n.prototype.auto=function(t,e){var n=this.autopush(t),r=e();return n>0&&this.pop(n),r},n.prototype.getProperty=function(t){if(this.styleOverrides)for(var e=this.styleOverrides.length-1;e>=0;e--){var n=this.styleOverrides[e];if("string"==typeof n||n instanceof String){var r=this.styleDictionary[n];if(r&&null!==r[t]&&void 0!==r[t])return r[t]}else if(void 0!==n[t]&&null!==n[t])return n[t]}return this.defaultStyle&&this.defaultStyle[t]},t.exports=n},function(t,e){"use strict";function n(t,e){var n=[],o=0,a=0,s=[],u=0,l=0,c=[],f=e;t.forEach(function(t){r(t)?(n.push(t),o+=t._minWidth,a+=t._maxWidth):i(t)?(s.push(t),u=Math.max(u,t._minWidth),l=Math.max(l,t._maxWidth)):c.push(t)}),c.forEach(function(t){"string"==typeof t.width&&/\d+%/.test(t.width)&&(t.width=parseFloat(t.width)*f/100),t.width<t._minWidth&&t.elasticWidth?t._calcWidth=t._minWidth:t._calcWidth=t.width,e-=t._calcWidth});var h=o+u*s.length,p=a+l*s.length;if(h>=e)n.forEach(function(t){t._calcWidth=t._minWidth}),s.forEach(function(t){t._calcWidth=u});else{if(p<e)n.forEach(function(t){t._calcWidth=t._maxWidth,e-=t._calcWidth});else{var d=e-h,g=p-h;n.forEach(function(t){var n=t._maxWidth-t._minWidth;t._calcWidth=t._minWidth+n*d/g,e-=t._calcWidth})}if(s.length>0){var y=e/s.length;s.forEach(function(t){t._calcWidth=y})}}}function r(t){return"auto"===t.width}function i(t){return null===t.width||void 0===t.width||"*"===t.width||"star"===t.width}function o(t){for(var e={min:0,max:0},n={min:0,max:0},o=0,a=0,s=t.length;a<s;a++){var u=t[a];i(u)?(n.min=Math.max(n.min,u._minWidth),n.max=Math.max(n.max,u._maxWidth),o++):r(u)?(e.min+=u._minWidth,e.max+=u._maxWidth):(e.min+=void 0!==u.width&&u.width||u._minWidth,e.max+=void 0!==u.width&&u.width||u._maxWidth)}return o&&(e.min+=o*n.min,e.max+=o*n.max),e}t.exports={buildColumnWidths:n,measureMinMax:o,isAutoColumn:r,isStarColumn:i}},function(t,e){"use strict";function n(t,e){var n={numeric:a,alphanumeric:s,octet:u},r={L:h,M:p,Q:d,H:g};e=e||{};var i=e.version||-1,o=r[(e.eccLevel||"L").toUpperCase()],c=e.mode?n[e.mode.toLowerCase()]:-1,y="mask"in e?e.mask:-1;if(c<0)c="string"==typeof t?t.match(l)?a:t.match(f)?s:u:u;else if(c!=a&&c!=s&&c!=u)throw"invalid or unsupported mode";if(null===(t=M(c,t)))throw"invalid data format";if(o<0||o>3)throw"invalid ECC level";if(i<0){for(i=1;i<=40&&!(t.length<=L(i,c,o));++i);if(i>40)throw"too large data for the Qr format"}else if(i<1||i>40)throw"invalid Qr version! should be between 1 and 40";if(-1!=y&&(y<0||y>8))throw"invalid mask";return V(t,i,c,o,y)}function r(t,e){var r=[],i=e.background||"#fff",o=e.foreground||"#000",a=n(t,e),s=a.length,u=Math.floor(e.fit?e.fit/s:5),l=s*u;r.push({type:"rect",x:0,y:0,w:l,h:l,lineWidth:0,color:i});for(var c=0;c<s;++c)for(var f=0;f<s;++f)a[c][f]&&r.push({type:"rect",x:u*f,y:u*c,w:u,h:u,lineWidth:0,color:o});return{canvas:r,size:l}}function i(t){var e=r(t.qr,t);return t._canvas=e.canvas,t._width=t._height=t._minWidth=t._maxWidth=t._minHeight=t._maxHeight=e.size,t}for(var o=[null,[[10,7,17,13],[1,1,1,1],[]],[[16,10,28,22],[1,1,1,1],[4,16]],[[26,15,22,18],[1,1,2,2],[4,20]],[[18,20,16,26],[2,1,4,2],[4,24]],[[24,26,22,18],[2,1,4,4],[4,28]],[[16,18,28,24],[4,2,4,4],[4,32]],[[18,20,26,18],[4,2,5,6],[4,20,36]],[[22,24,26,22],[4,2,6,6],[4,22,40]],[[22,30,24,20],[5,2,8,8],[4,24,44]],[[26,18,28,24],[5,4,8,8],[4,26,48]],[[30,20,24,28],[5,4,11,8],[4,28,52]],[[22,24,28,26],[8,4,11,10],[4,30,56]],[[22,26,22,24],[9,4,16,12],[4,32,60]],[[24,30,24,20],[9,4,16,16],[4,24,44,64]],[[24,22,24,30],[10,6,18,12],[4,24,46,68]],[[28,24,30,24],[10,6,16,17],[4,24,48,72]],[[28,28,28,28],[11,6,19,16],[4,28,52,76]],[[26,30,28,28],[13,6,21,18],[4,28,54,80]],[[26,28,26,26],[14,7,25,21],[4,28,56,84]],[[26,28,28,30],[16,8,25,20],[4,32,60,88]],[[26,28,30,28],[17,8,25,23],[4,26,48,70,92]],[[28,28,24,30],[17,9,34,23],[4,24,48,72,96]],[[28,30,30,30],[18,9,30,25],[4,28,52,76,100]],[[28,30,30,30],[20,10,32,27],[4,26,52,78,104]],[[28,26,30,30],[21,12,35,29],[4,30,56,82,108]],[[28,28,30,28],[23,12,37,34],[4,28,56,84,112]],[[28,30,30,30],[25,12,40,34],[4,32,60,88,116]],[[28,30,30,30],[26,13,42,35],[4,24,48,72,96,120]],[[28,30,30,30],[28,14,45,38],[4,28,52,76,100,124]],[[28,30,30,30],[29,15,48,40],[4,24,50,76,102,128]],[[28,30,30,30],[31,16,51,43],[4,28,54,80,106,132]],[[28,30,30,30],[33,17,54,45],[4,32,58,84,110,136]],[[28,30,30,30],[35,18,57,48],[4,28,56,84,112,140]],[[28,30,30,30],[37,19,60,51],[4,32,60,88,116,144]],[[28,30,30,30],[38,19,63,53],[4,28,52,76,100,124,148]],[[28,30,30,30],[40,20,66,56],[4,22,48,74,100,126,152]],[[28,30,30,30],[43,21,70,59],[4,26,52,78,104,130,156]],[[28,30,30,30],[45,22,74,62],[4,30,56,82,108,134,160]],[[28,30,30,30],[47,24,77,65],[4,24,52,80,108,136,164]],[[28,30,30,30],[49,25,81,68],[4,28,56,84,112,140,168]]],a=1,s=2,u=4,l=/^\d*$/,c=/^[A-Za-z0-9 $%*+\-.\/:]*$/,f=/^[A-Z0-9 $%*+\-.\/:]*$/,h=1,p=0,d=3,g=2,y=[],v=[-1],b=0,m=1;b<255;++b)y.push(m),v[m]=b,m=2*m^(m>=128?285:0);for(var w=[[]],b=0;b<30;++b){for(var x=w[b],_=[],k=0;k<=b;++k){var S=k<b?y[x[k]]:0,C=y[(b+(x[k-1]||0))%255];_.push(v[S^C])}w.push(_)}for(var A={},b=0;b<45;++b)A["0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:".charAt(b)]=b;var P=[function(t,e){return(t+e)%2==0},function(t,e){return t%2==0},function(t,e){return e%3==0},function(t,e){return(t+e)%3==0},function(t,e){return((t/2|0)+(e/3|0))%2==0},function(t,e){return t*e%2+t*e%3==0},function(t,e){return(t*e%2+t*e%3)%2==0},function(t,e){return((t+e)%2+t*e%3)%2==0}],E=function(t){return t>6},I=function(t){return 4*t+17},T=function(t){var e=o[t],n=16*t*t+128*t+64;return E(t)&&(n-=36),e[2].length&&(n-=25*e[2].length*e[2].length-10*e[2].length-55),n},O=function(t,e){var n=-8&T(t),r=o[t];return n-=8*r[0][e]*r[1][e]},B=function(t,e){switch(e){case a:return t<10?10:t<27?12:14;case s:return t<10?9:t<27?11:13;case u:return t<10?8:16;case 8:return t<10?8:t<27?10:12}},L=function(t,e,n){var r=O(t,n)-4-B(t,e);switch(e){case a:return 3*(r/10|0)+(r%10<4?0:r%10<7?1:2);case s:return 2*(r/11|0)+(r%11<6?0:1);case u:return r/8|0;case 8:return r/13|0}},M=function(t,e){switch(t){case a:return e.match(l)?e:null;case s:return e.match(c)?e.toUpperCase():null;case u:if("string"==typeof e){for(var n=[],r=0;r<e.length;++r){var i=e.charCodeAt(r);i<128?n.push(i):i<2048?n.push(192|i>>6,128|63&i):i<65536?n.push(224|i>>12,128|i>>6&63,128|63&i):n.push(240|i>>18,128|i>>12&63,128|i>>6&63,128|63&i)}return n}return e}},R=function(t,e,n,r){var i=[],o=0,l=8,c=n.length,f=function(t,e){if(e>=l){for(i.push(o|t>>(e-=l));e>=8;)i.push(t>>(e-=8)&255);o=0,l=8}e>0&&(o|=(t&(1<<e)-1)<<(l-=e))},h=B(t,e);switch(f(e,4),f(c,h),e){case a:for(var p=2;p<c;p+=3)f(parseInt(n.substring(p-2,p+1),10),10);f(parseInt(n.substring(p-2),10),[0,4,7][c%3]);break;case s:for(var p=1;p<c;p+=2)f(45*A[n.charAt(p-1)]+A[n.charAt(p)],11);c%2==1&&f(A[n.charAt(p-1)],6);break;case u:for(var p=0;p<c;++p)f(n[p],8)}for(f(0,4),l<8&&i.push(o);i.length+1<r;)i.push(236,17);return i.length<r&&i.push(236),i},F=function(t,e){for(var n=t.slice(0),r=t.length,i=e.length,o=0;o<i;++o)n.push(0);for(var o=0;o<r;){var a=v[n[o++]];if(a>=0)for(var s=0;s<i;++s)n[o+s]^=y[(a+e[s])%255]}return n.slice(r)},z=function(t,e,n){for(var r=[],i=t.length/e|0,o=0,a=e-t.length%e,s=0;s<a;++s)r.push(o),o+=i;for(var s=a;s<e;++s)r.push(o),o+=i+1;r.push(o);for(var u=[],s=0;s<e;++s)u.push(F(t.slice(r[s],r[s+1]),n));for(var l=[],c=t.length/e|0,s=0;s<c;++s)for(var f=0;f<e;++f)l.push(t[r[f]+s]);for(var f=a;f<e;++f)l.push(t[r[f+1]-1]);for(var s=0;s<n.length;++s)for(var f=0;f<e;++f)l.push(u[f][s]);return l},D=function(t,e,n,r){for(var i=t<<r,o=e-1;o>=0;--o)i>>r+o&1&&(i^=n<<o);return t<<r|i},N=function(t){for(var e=o[t],n=I(t),r=[],i=[],a=0;a<n;++a)r.push([]),i.push([]);var s=function(t,e,n,o,a){for(var s=0;s<n;++s)for(var u=0;u<o;++u)r[t+s][e+u]=a[s]>>u&1,i[t+s][e+u]=1};s(0,0,9,9,[127,65,93,93,93,65,383,0,64]),s(n-8,0,8,9,[256,127,65,93,93,93,65,127]),s(0,n-8,9,8,[254,130,186,186,186,130,254,0,0]);for(var a=9;a<n-8;++a)r[6][a]=r[a][6]=1&~a,i[6][a]=i[a][6]=1;for(var u=e[2],l=u.length,a=0;a<l;++a)for(var c=0===a||a===l-1?1:0,f=0===a?l-1:l,h=c;h<f;++h)s(u[a],u[h],5,5,[31,17,21,17,31]);if(E(t))for(var p=D(t,6,7973,12),d=0,a=0;a<6;++a)for(var h=0;h<3;++h)r[a][n-11+h]=r[n-11+h][a]=p>>d++&1,i[a][n-11+h]=i[n-11+h][a]=1;return{matrix:r,reserved:i}},U=function(t,e,n){for(var r=t.length,i=0,o=-1,a=r-1;a>=0;a-=2){6==a&&--a;for(var s=o<0?r-1:0,u=0;u<r;++u){for(var l=a;l>a-2;--l)e[s][l]||(t[s][l]=n[i>>3]>>(7&~i)&1,++i);s+=o}o=-o}return t},W=function(t,e,n){for(var r=P[n],i=t.length,o=0;o<i;++o)for(var a=0;a<i;++a)e[o][a]||(t[o][a]^=r(o,a));return t},j=function(t,e,n,r){for(var i=t.length,o=21522^D(n<<3|r,5,1335,10),a=0;a<15;++a){var s=[0,1,2,3,4,5,7,8,i-7,i-6,i-5,i-4,i-3,i-2,i-1][a],u=[i-1,i-2,i-3,i-4,i-5,i-6,i-7,i-8,7,5,4,3,2,1,0][a];t[s][8]=t[8][u]=o>>a&1}return t},G=function(t){for(var e=function(t){for(var e=0,n=0;n<t.length;++n)t[n]>=5&&(e+=t[n]-5+3);for(var n=5;n<t.length;n+=2){var r=t[n];t[n-1]==r&&t[n-2]==3*r&&t[n-3]==r&&t[n-4]==r&&(t[n-5]>=4*r||t[n+1]>=4*r)&&(e+=40)}return e},n=t.length,r=0,i=0,o=0;o<n;++o){var a,s=t[o];a=[0];for(var u=0;u<n;){var l;for(l=0;u<n&&s[u];++l)++u;for(a.push(l),l=0;u<n&&!s[u];++l)++u;a.push(l)}r+=e(a),a=[0];for(var u=0;u<n;){var l;for(l=0;u<n&&t[u][o];++l)++u;for(a.push(l),l=0;u<n&&!t[u][o];++l)++u;a.push(l)}r+=e(a);var c=t[o+1]||[];i+=s[0];for(var u=1;u<n;++u){var f=s[u];i+=f,s[u-1]==f&&c[u]===f&&c[u-1]===f&&(r+=3)}}return r+=10*(Math.abs(i/n/n-.5)/.05|0)},V=function(t,e,n,r,i){var a=o[e],s=R(e,n,t,O(e,r)>>3);s=z(s,a[1][r],w[a[0][r]]);var u=N(e),l=u.matrix,c=u.reserved;if(U(l,c,s),i<0){W(l,c,0),j(l,0,r,0);var f=0,h=G(l);for(W(l,c,0),i=1;i<8;++i){W(l,c,i),j(l,0,r,i);var p=G(l);h>p&&(h=p,f=i),W(l,c,i)}i=f}return W(l,c,i),j(l,0,r,i),l};t.exports={measure:i}},function(t,e,n){"use strict";function r(t,e){this.pages=[],this.pageMargins=e,this.x=e.left,this.availableWidth=t.width-e.left-e.right,this.availableHeight=0,this.page=-1,this.snapshots=[],this.endingCell=null,this.tracker=new a,this.addPage(t)}function i(t,e){return void 0===t?e:("string"==typeof t||t instanceof String)&&"landscape"===t.toLowerCase()?"landscape":"portrait"}function o(t,e){var n;return n=t.page>e.page?t:e.page>t.page?e:t.y>e.y?t:e,{page:n.page,x:n.x,y:n.y,availableHeight:n.availableHeight,availableWidth:n.availableWidth}}var a=n(11);r.prototype.beginColumnGroup=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,bottomMost:{x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page},endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth}),this.lastColumnWidth=0},r.prototype.beginColumn=function(t,e,n){var r=this.snapshots[this.snapshots.length-1];this.calculateBottomMost(r),this.endingCell=n,this.page=r.page,this.x=this.x+this.lastColumnWidth+(e||0),this.y=r.y,this.availableWidth=t,this.availableHeight=r.availableHeight,this.lastColumnWidth=t},r.prototype.calculateBottomMost=function(t){this.endingCell?(this.saveContextInEndingCell(this.endingCell),this.endingCell=null):t.bottomMost=o(this,t.bottomMost)},r.prototype.markEnding=function(t){this.page=t._columnEndingContext.page,this.x=t._columnEndingContext.x,this.y=t._columnEndingContext.y,this.availableWidth=t._columnEndingContext.availableWidth,this.availableHeight=t._columnEndingContext.availableHeight,this.lastColumnWidth=t._columnEndingContext.lastColumnWidth},r.prototype.saveContextInEndingCell=function(t){t._columnEndingContext={page:this.page,x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,lastColumnWidth:this.lastColumnWidth}},r.prototype.completeColumnGroup=function(){var t=this.snapshots.pop();this.calculateBottomMost(t),this.endingCell=null,this.x=t.x,this.y=t.bottomMost.y,this.page=t.bottomMost.page,this.availableWidth=t.availableWidth,this.availableHeight=t.bottomMost.availableHeight,this.lastColumnWidth=t.lastColumnWidth},r.prototype.addMargin=function(t,e){this.x+=t,this.availableWidth-=t+(e||0)},r.prototype.moveDown=function(t){return this.y+=t,this.availableHeight-=t,this.availableHeight>0},r.prototype.initializePage=function(){this.y=this.pageMargins.top,this.availableHeight=this.getCurrentPage().pageSize.height-this.pageMargins.top-this.pageMargins.bottom,this.pageSnapshot().availableWidth=this.getCurrentPage().pageSize.width-this.pageMargins.left-this.pageMargins.right},r.prototype.pageSnapshot=function(){return this.snapshots[0]?this.snapshots[0]:this},r.prototype.moveTo=function(t,e){void 0!==t&&null!==t&&(this.x=t,this.availableWidth=this.getCurrentPage().pageSize.width-this.x-this.pageMargins.right),void 0!==e&&null!==e&&(this.y=e,this.availableHeight=this.getCurrentPage().pageSize.height-this.y-this.pageMargins.bottom)},r.prototype.beginDetachedBlock=function(){this.snapshots.push({x:this.x,y:this.y,availableHeight:this.availableHeight,availableWidth:this.availableWidth,page:this.page,endingCell:this.endingCell,lastColumnWidth:this.lastColumnWidth})},r.prototype.endDetachedBlock=function(){var t=this.snapshots.pop();this.x=t.x,this.y=t.y,this.availableWidth=t.availableWidth,this.availableHeight=t.availableHeight,this.page=t.page,this.endingCell=t.endingCell,this.lastColumnWidth=t.lastColumnWidth};var s=function(t,e){return e=i(e,t.pageSize.orientation),e!==t.pageSize.orientation?{orientation:e,width:t.pageSize.height,height:t.pageSize.width}:{orientation:t.pageSize.orientation,width:t.pageSize.width,height:t.pageSize.height}};r.prototype.moveToNextPage=function(t){var e=this.page+1,n=this.page,r=this.y,i=e>=this.pages.length;if(i){var o=this.availableWidth,a=this.getCurrentPage().pageSize.orientation,u=s(this.getCurrentPage(),t);this.addPage(u),a===u.orientation&&(this.availableWidth=o)}else this.page=e,this.initializePage();return{newPageCreated:i,prevPage:n,prevY:r,y:this.y}},r.prototype.addPage=function(t){var e={items:[],pageSize:t};return this.pages.push(e),this.page=this.pages.length-1,this.initializePage(),this.tracker.emit("pageAdded"),e},r.prototype.getCurrentPage=function(){return this.page<0||this.page>=this.pages.length?null:this.pages[this.page]},r.prototype.getCurrentPosition=function(){ var t=this.getCurrentPage().pageSize,e=t.height-this.pageMargins.top-this.pageMargins.bottom,n=t.width-this.pageMargins.left-this.pageMargins.right;return{pageNumber:this.page+1,pageOrientation:t.orientation,pageInnerHeight:e,pageInnerWidth:n,left:this.x,top:this.y,verticalRatio:(this.y-this.pageMargins.top)/e,horizontalRatio:(this.x-this.pageMargins.left)/n}},t.exports=r},function(t,e,n){"use strict";function r(t,e){this.transactionLevel=0,this.repeatables=[],this.tracker=e,this.writer=new o(t,e)}function i(t,e){var n=e(t);return n||(t.moveToNextPage(),n=e(t)),n}var o=n(27);r.prototype.addLine=function(t,e,n){return i(this,function(r){return r.writer.addLine(t,e,n)})},r.prototype.addImage=function(t,e){return i(this,function(n){return n.writer.addImage(t,e)})},r.prototype.addQr=function(t,e){return i(this,function(n){return n.writer.addQr(t,e)})},r.prototype.addVector=function(t,e,n,r){return this.writer.addVector(t,e,n,r)},r.prototype.addFragment=function(t,e,n,r){this.writer.addFragment(t,e,n,r)||(this.moveToNextPage(),this.writer.addFragment(t,e,n,r))},r.prototype.moveToNextPage=function(t){var e=this.writer.context.moveToNextPage(t);e.newPageCreated?this.repeatables.forEach(function(t){this.writer.addFragment(t,!0)},this):this.repeatables.forEach(function(t){this.writer.context.moveDown(t.height)},this),this.writer.tracker.emit("pageChanged",{prevPage:e.prevPage,prevY:e.prevY,y:e.y})},r.prototype.beginUnbreakableBlock=function(t,e){0==this.transactionLevel++&&(this.originalX=this.writer.context.x,this.writer.pushContext(t,e))},r.prototype.commitUnbreakableBlock=function(t,e){if(0==--this.transactionLevel){var n=this.writer.context;this.writer.popContext();var r=n.pages.length;if(r>0){var i=n.pages[0];if(i.xOffset=t,i.yOffset=e,r>1)if(void 0!==t||void 0!==e)i.height=n.getCurrentPage().pageSize.height-n.pageMargins.top-n.pageMargins.bottom;else{i.height=this.writer.context.getCurrentPage().pageSize.height-this.writer.context.pageMargins.top-this.writer.context.pageMargins.bottom;for(var o=0,a=this.repeatables.length;o<a;o++)i.height-=this.repeatables[o].height}else i.height=n.y;void 0!==t||void 0!==e?this.writer.addFragment(i,!0,!0,!0):this.addFragment(i)}}},r.prototype.currentBlockToRepeatable=function(){var t=this.writer.context,e={items:[]};return t.pages[0].items.forEach(function(t){e.items.push(t)}),e.xOffset=this.originalX,e.height=t.y,e},r.prototype.pushToRepeatables=function(t){this.repeatables.push(t)},r.prototype.popFromRepeatables=function(){this.repeatables.pop()},r.prototype.context=function(){return this.writer.context},t.exports=r},function(t,e,n){"use strict";function r(t,e){this.context=t,this.contextStack=[],this.tracker=e}function i(t,e,n){null===n||void 0===n||n<0||n>t.items.length?t.items.push(e):t.items.splice(n,0,e)}function o(t){var e=new a(t.maxWidth);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var a=n(28),s=n(13).pack,u=n(13).offsetVector,l=n(25);r.prototype.addLine=function(t,e,n){var r=t.getHeight(),o=this.context,a=o.getCurrentPage(),s=this.getCurrentPositionOnPage();return!(o.availableHeight<r||!a)&&(t.x=o.x+(t.x||0),t.y=o.y+(t.y||0),this.alignLine(t),i(a,{type:"line",item:t},n),this.tracker.emit("lineAdded",t),e||o.moveDown(r),s)},r.prototype.alignLine=function(t){var e=this.context.availableWidth,n=t.getWidth(),r=t.inlines&&t.inlines.length>0&&t.inlines[0].alignment,i=0;switch(r){case"right":i=e-n;break;case"center":i=(e-n)/2}if(i&&(t.x=(t.x||0)+i),"justify"===r&&!t.newLineForced&&!t.lastLineInParagraph&&t.inlines.length>1)for(var o=(e-n)/(t.inlines.length-1),a=1,s=t.inlines.length;a<s;a++)i=a*o,t.inlines[a].x+=i,t.inlines[a].justifyShift=o},r.prototype.addImage=function(t,e){var n=this.context,r=n.getCurrentPage(),o=this.getCurrentPositionOnPage();return!(!r||n.availableHeight<t._height&&r.items.length>0)&&(void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t),i(r,{type:"image",item:t},e),n.moveDown(t._height),o)},r.prototype.addQr=function(t,e){var n=this.context,r=n.getCurrentPage(),i=this.getCurrentPositionOnPage();if(n.availableHeight<t._height||!r)return!1;void 0===t._x&&(t._x=t.x||0),t.x=n.x+t._x,t.y=n.y,this.alignImage(t);for(var o=0,a=t._canvas.length;o<a;o++){var s=t._canvas[o];s.x+=t.x,s.y+=t.y,this.addVector(s,!0,!0,e)}return n.moveDown(t._height),i},r.prototype.alignImage=function(t){var e=this.context.availableWidth,n=t._minWidth,r=0;switch(t._alignment){case"right":r=e-n;break;case"center":r=(e-n)/2}r&&(t.x=(t.x||0)+r)},r.prototype.addVector=function(t,e,n,r){var o=this.context,a=o.getCurrentPage(),s=this.getCurrentPositionOnPage();if(a)return u(t,e?0:o.x,n?0:o.y),i(a,{type:"vector",item:t},r),s},r.prototype.addFragment=function(t,e,n,r){var i=this.context,a=i.getCurrentPage();return!(!e&&t.height>i.availableHeight)&&(t.items.forEach(function(r){switch(r.type){case"line":var l=o(r.item);l.x=(l.x||0)+(e?t.xOffset||0:i.x),l.y=(l.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"line",item:l});break;case"vector":var c=s(r.item);u(c,e?t.xOffset||0:i.x,n?t.yOffset||0:i.y),a.items.push({type:"vector",item:c});break;case"image":var f=s(r.item);f.x=(f.x||0)+(e?t.xOffset||0:i.x),f.y=(f.y||0)+(n?t.yOffset||0:i.y),a.items.push({type:"image",item:f})}}),r||i.moveDown(t.height),!0)},r.prototype.pushContext=function(t,e){void 0===t&&(e=this.context.getCurrentPage().height-this.context.pageMargins.top-this.context.pageMargins.bottom,t=this.context.availableWidth),("number"==typeof t||t instanceof Number)&&(t=new l({width:t,height:e},{left:0,right:0,top:0,bottom:0})),this.contextStack.push(this.context),this.context=t},r.prototype.popContext=function(){this.context=this.contextStack.pop()},r.prototype.getCurrentPositionOnPage=function(){return(this.contextStack[0]||this.context).getCurrentPosition()},t.exports=r},function(t,e){"use strict";function n(t){this.maxWidth=t,this.leadingCut=0,this.trailingCut=0,this.inlineWidths=0,this.inlines=[]}n.prototype.getAscenderHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.font.ascender/1e3*e.fontSize)}),t},n.prototype.hasEnoughSpaceForInline=function(t){return 0===this.inlines.length||!this.newLineForced&&this.inlineWidths+t.width-this.leadingCut-(t.trailingCut||0)<=this.maxWidth},n.prototype.addInline=function(t){0===this.inlines.length&&(this.leadingCut=t.leadingCut||0),this.trailingCut=t.trailingCut||0,t.x=this.inlineWidths-this.leadingCut,this.inlines.push(t),this.inlineWidths+=t.width,t.lineEnd&&(this.newLineForced=!0)},n.prototype.getWidth=function(){return this.inlineWidths-this.leadingCut-this.trailingCut},n.prototype.getHeight=function(){var t=0;return this.inlines.forEach(function(e){t=Math.max(t,e.height||0)}),t},t.exports=n},function(t,e,n){"use strict";function r(t){this.tableNode=t}var i=n(23);r.prototype.beginTable=function(t){var e,n,r=this;e=this.tableNode,this.offsets=e._offsets,this.layout=e._layout,n=t.context().availableWidth-this.offsets.total,i.buildColumnWidths(e.table.widths,n),this.tableWidth=e._offsets.total+function(){var t=0;return e.table.widths.forEach(function(e){t+=e._calcWidth}),t}(),this.rowSpanData=function(){var t=[],e=0,n=0;t.push({left:0,rowSpan:0});for(var i=0,o=r.tableNode.table.body[0].length;i<o;i++){n=r.layout.paddingLeft(i,r.tableNode)+r.layout.paddingRight(i,r.tableNode)+r.layout.vLineWidth(i,r.tableNode)+r.tableNode.table.widths[i]._calcWidth,t[t.length-1].width=n,e+=n,t.push({left:e,rowSpan:0,width:0})}return t}(),this.cleanUpRepeatables=!1,this.headerRows=e.table.headerRows||0,this.rowsWithoutPageBreak=this.headerRows+(e.table.keepWithHeaderRows||0),this.dontBreakRows=e.table.dontBreakRows||!1,this.rowsWithoutPageBreak&&t.beginUnbreakableBlock(),function(t){function e(e,n,r,i){var o=t[e][n];o.border=o.border||{},o.border[r]=i}for(var n=0;n<t.length;n++)for(var r=t[n],i=0;i<r.length;i++){var o=r[i];if(o.border){for(var a=o.rowSpan||1,s=o.colSpan||1,u=0;u<a;u++)void 0!==o.border[0]&&u>0&&e(n+u,i,0,o.border[0]),void 0!==o.border[2]&&e(n+u,i+s-1,2,o.border[2]);for(var l=0;l<s;l++)void 0!==o.border[1]&&l>0&&e(n,i+l,1,o.border[1]),void 0!==o.border[3]&&e(n+a-1,i+l,3,o.border[3])}}}(this.tableNode.table.body),this.drawHorizontalLine(0,t)},r.prototype.onRowBreak=function(t,e){var n=this;return function(){var t=n.rowPaddingTop+(n.headerRows?0:n.topLineWidth);e.context().availableHeight-=n.reservedAtBottom,e.context().moveDown(t)}},r.prototype.beginRow=function(t,e){this.topLineWidth=this.layout.hLineWidth(t,this.tableNode),this.rowPaddingTop=this.layout.paddingTop(t,this.tableNode),this.bottomLineWidth=this.layout.hLineWidth(t+1,this.tableNode),this.rowPaddingBottom=this.layout.paddingBottom(t,this.tableNode),this.rowCallback=this.onRowBreak(t,e),e.tracker.startTracking("pageChanged",this.rowCallback),this.dontBreakRows&&e.beginUnbreakableBlock(),this.rowTopY=e.context().y,this.reservedAtBottom=this.bottomLineWidth+this.rowPaddingBottom,e.context().availableHeight-=this.reservedAtBottom,e.context().moveDown(this.rowPaddingTop)},r.prototype.drawHorizontalLine=function(t,e,n){var r=this.layout.hLineWidth(t,this.tableNode);if(r){for(var i=r/2,o=null,a=this.tableNode.table.body,s=0,u=this.rowSpanData.length;s<u;s++){var l=this.rowSpanData[s],c=!l.rowSpan;if(c&&s<u-1){var f=!1,h=!1;if(t<a.length){var p=a[t][s];f=p.border?p.border[1]:this.layout.defaultBorder}if(t>0){var d=a[t-1][s];h=d.border?d.border[3]:this.layout.defaultBorder}c=f||h}!o&&c&&(o={left:l.left,width:0}),c&&(o.width+=l.width||0);var g=(n||0)+i;c&&s!==u-1||o&&o.width&&(e.addVector({type:"line",x1:o.left,x2:o.left+o.width,y1:g,y2:g,lineWidth:r,lineColor:"function"==typeof this.layout.hLineColor?this.layout.hLineColor(t,this.tableNode):this.layout.hLineColor},!1,n),o=null)}e.context().moveDown(r)}},r.prototype.drawVerticalLine=function(t,e,n,r,i){var o=this.layout.vLineWidth(r,this.tableNode);0!==o&&i.addVector({type:"line",x1:t+o/2,x2:t+o/2,y1:e,y2:n,lineWidth:o,lineColor:"function"==typeof this.layout.vLineColor?this.layout.vLineColor(r,this.tableNode):this.layout.vLineColor},!1,!0)},r.prototype.endTable=function(t){this.cleanUpRepeatables&&(t.popFromRepeatables(),this.headerRepeatableHeight=null)},r.prototype.endRow=function(t,e,n){var r,i,o=this;e.tracker.stopTracking("pageChanged",this.rowCallback),e.context().moveDown(this.layout.paddingBottom(t,this.tableNode)),e.context().availableHeight+=this.reservedAtBottom;var a=e.context().page,s=e.context().y,u=function(){for(var e=[],n=0,r=0,i=o.tableNode.table.body[t].length;r<i;r++){if(!n){e.push({x:o.rowSpanData[r].left,index:r});var a=o.tableNode.table.body[t][r];n=a._colSpan||a.colSpan||0}n>0&&n--}return e.push({x:o.rowSpanData[o.rowSpanData.length-1].left,index:o.rowSpanData.length-1}),e}(),l=[],c=n&&n.length>0,f=this.tableNode.table.body;if(l.push({y0:this.rowTopY,page:c?n[0].prevPage:a}),c)for(i=0,r=n.length;i<r;i++){var h=n[i];l[l.length-1].y1=h.prevY,l.push({y0:h.y,page:h.prevPage+1}),this.headerRepeatableHeight&&(l[l.length-1].y0+=this.headerRepeatableHeight)}l[l.length-1].y1=s;for(var p=l[0].y1-l[0].y0===this.rowPaddingTop,d=p?1:0,g=l.length;d<g;d++){var y=d<l.length-1,v=d>0&&!this.headerRows,b=v?0:this.topLineWidth,m=l[d].y0,w=l[d].y1;for(y&&(w+=this.rowPaddingBottom),e.context().page!=l[d].page&&(e.context().page=l[d].page,this.reservedAtBottom=0),i=0,r=u.length;i<r;i++){var x=!1,_=!1,k=u[i].index;if(k<f[t].length){var S=f[t][k];x=S.border?S.border[0]:this.layout.defaultBorder}if(k>0){var S=f[t][k-1];_=S.border?S.border[2]:this.layout.defaultBorder}if((x||_)&&this.drawVerticalLine(u[i].x,m-b,w+this.bottomLineWidth,u[i].index,e),i<r-1){var C=f[t][k].fillColor;if(C||(C="function"==typeof this.layout.fillColor?this.layout.fillColor(t,this.tableNode):this.layout.fillColor),C){var A=x||_?this.layout.vLineWidth(k,this.tableNode):0,P=u[i].x+A,E=this.dontBreakRows?m:m-b;e.addVector({type:"rect",x:P,y:E,w:u[i+1].x-P,h:w+this.bottomLineWidth-E,lineWidth:0,color:C},!1,!0,0)}}}y&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t+1,e,w),v&&!1!==this.layout.hLineWhenBroken&&this.drawHorizontalLine(t,e,m)}e.context().page=a,e.context().y=s;var I=this.tableNode.table.body[t];for(i=0,r=I.length;i<r;i++){if(I[i].rowSpan&&(this.rowSpanData[i].rowSpan=I[i].rowSpan,I[i].colSpan&&I[i].colSpan>1))for(var T=1;T<I[i].rowSpan;T++)this.tableNode.table.body[t+T][i]._colSpan=I[i].colSpan;this.rowSpanData[i].rowSpan>0&&this.rowSpanData[i].rowSpan--}this.drawHorizontalLine(t+1,e),this.headerRows&&t===this.headerRows-1&&(this.headerRepeatable=e.currentBlockToRepeatable()),this.dontBreakRows&&e.tracker.auto("pageChanged",function(){o.headerRows||!1===o.layout.hLineWhenBroken||o.drawHorizontalLine(t,e)},function(){e.commitUnbreakableBlock()}),!this.headerRepeatable||t!==this.rowsWithoutPageBreak-1&&t!==this.tableNode.table.body.length-1||(this.headerRepeatableHeight=this.headerRepeatable.height,e.commitUnbreakableBlock(),e.pushToRepeatables(this.headerRepeatable),this.cleanUpRepeatables=!0,this.headerRepeatable=null)},t.exports=r},function(t,e,n){(function(e){(function(){var r,i,o,a,s,u,l=function(t,e){function n(){this.constructor=t}for(var r in e)c.call(e,r)&&(t[r]=e[r]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},c={}.hasOwnProperty;u=n(31),s=n(56),i=n(57),a=n(58),o=n(76),r=function(t){function r(t){var e,n,i,o;if(this.options=null!=t?t:{},r.__super__.constructor.apply(this,arguments),this.version=1.3,this.compress=null==(n=this.options.compress)||n,this._pageBuffer=[],this._pageBufferStart=0,this._offsets=[],this._waiting=0,this._ended=!1,this._offset=0,this._root=this.ref({Type:"Catalog",Pages:this.ref({Type:"Pages",Count:0,Kids:[]})}),this.page=null,this.initColor(),this.initVector(),this.initFonts(),this.initText(),this.initImages(),this.info={Producer:"PDFKit",Creator:"PDFKit",CreationDate:new Date},this.options.info){i=this.options.info;for(e in i)o=i[e],this.info[e]=o}this._write("%PDF-"+this.version),this._write("%ÿÿÿÿ"),!1!==this.options.autoFirstPage&&this.addPage()}var u;return l(r,t),u=function(t){var e,n,i;i=[];for(n in t)e=t[n],i.push(r.prototype[n]=e);return i},u(n(77)),u(n(79)),u(n(81)),u(n(288)),u(n(290)),u(n(296)),r.prototype.addPage=function(t){var e;return null==t&&(t=this.options),this.options.bufferPages||this.flushPages(),this.page=new o(this,t),this._pageBuffer.push(this.page),e=this._root.data.Pages.data,e.Kids.push(this.page.dictionary),e.Count++,this.x=this.page.margins.left,this.y=this.page.margins.top,this._ctm=[1,0,0,1,0,0],this.transform(1,0,0,-1,0,this.page.height),this.emit("pageAdded"),this},r.prototype.bufferedPageRange=function(){return{start:this._pageBufferStart,count:this._pageBuffer.length}},r.prototype.switchToPage=function(t){var e;if(!(e=this._pageBuffer[t-this._pageBufferStart]))throw new Error("switchToPage("+t+") out of bounds, current buffer covers pages "+this._pageBufferStart+" to "+(this._pageBufferStart+this._pageBuffer.length-1));return this.page=e},r.prototype.flushPages=function(){var t,e,n,r;for(r=this._pageBuffer,this._pageBuffer=[],this._pageBufferStart+=r.length,t=0,e=r.length;t<e;t++)n=r[t],n.end()},r.prototype.ref=function(t){var e;return e=new a(this,this._offsets.length+1,t),this._offsets.push(null),this._waiting++,e},r.prototype._read=function(){},r.prototype._write=function(t){return e.isBuffer(t)||(t=new e(t+"\n","binary")),this.push(t),this._offset+=t.length},r.prototype.addContent=function(t){return this.page.write(t),this},r.prototype._refEnd=function(t){if(this._offsets[t.id-1]=t.offset,0==--this._waiting&&this._ended)return this._finalize(),this._ended=!1},r.prototype.write=function(t,e){return new Error("PDFDocument#write is deprecated, and will be removed in a future version of PDFKit. Please pipe the document into a Node stream."),this.pipe(s.createWriteStream(t)),this.end(),this.once("end",e)},r.prototype.output=function(t){throw new Error("PDFDocument#output is deprecated, and has been removed from PDFKit. Please pipe the document into a Node stream.")},r.prototype.end=function(){var t,e,n,r,i,o;this.flushPages(),this._info=this.ref(),r=this.info;for(e in r)o=r[e],"string"==typeof o&&(o=new String(o)),this._info.data[e]=o;this._info.end(),i=this._fontFamilies;for(n in i)t=i[n],t.finalize();return this._root.end(),this._root.data.Pages.end(),0===this._waiting?this._finalize():this._ended=!0},r.prototype._finalize=function(t){var e,n,r,o,a;for(a=this._offset,this._write("xref"),this._write("0 "+(this._offsets.length+1)),this._write("0000000000 65535 f "),o=this._offsets,e=0,n=o.length;e<n;e++)r=o[e],r=("0000000000"+r).slice(-10),this._write(r+" 00000 n ");return this._write("trailer"),this._write(i.convert({Size:this._offsets.length+1,Root:this._root,Info:this._info})),this._write("startxref"),this._write(""+a),this._write("%%EOF"),this.push(null)},r.prototype.toString=function(){return"[object PDFDocument]"},r}(u.Readable),t.exports=r}).call(this)}).call(e,n(2).Buffer)},function(t,e,n){function r(){i.call(this)}t.exports=r;var i=n(32).EventEmitter;n(33)(r,i),r.Readable=n(34),r.Writable=n(52),r.Duplex=n(53),r.Transform=n(54),r.PassThrough=n(55),r.Stream=r,r.prototype.pipe=function(t,e){function n(e){t.writable&&!1===t.write(e)&&l.pause&&l.pause()}function r(){l.readable&&l.resume&&l.resume()}function o(){c||(c=!0,t.end())}function a(){c||(c=!0,"function"==typeof t.destroy&&t.destroy())}function s(t){if(u(),0===i.listenerCount(this,"error"))throw t}function u(){l.removeListener("data",n),t.removeListener("drain",r),l.removeListener("end",o),l.removeListener("close",a),l.removeListener("error",s),t.removeListener("error",s),l.removeListener("end",u),l.removeListener("close",u),t.removeListener("close",u)}var l=this;l.on("data",n),t.on("drain",r),t._isStdio||e&&!1===e.end||(l.on("end",o),l.on("close",a));var c=!1;return l.on("error",s),t.on("error",s),l.on("end",u),l.on("close",u),t.on("close",u),t.emit("pipe",l),t}},function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function i(t){return"number"==typeof t}function o(t){return"object"==typeof t&&null!==t}function a(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!i(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,n,i,s,u,l;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var c=new Error('Uncaught, unspecified "error" event. ('+e+")");throw c.context=e,c}if(n=this._events[t],a(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(o(n))for(s=Array.prototype.slice.call(arguments,1),l=n.slice(),i=l.length,u=0;u<i;u++)l[u].apply(this,s);return!0},n.prototype.addListener=function(t,e){var i;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,o(this._events[t])&&!this._events[t].warned&&(i=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.trace),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,a,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],a=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(s=a;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){e=t.exports=n(35),e.Stream=e,e.Readable=e,e.Writable=n(45),e.Duplex=n(44),e.Transform=n(50),e.PassThrough=n(51)},function(t,e,n){(function(e,r){"use strict";function i(t){return z.from(t)}function o(t){return z.isBuffer(t)||t instanceof D}function a(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?M(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}function s(t,e){L=L||n(44),t=t||{},this.objectMode=!!t.objectMode,e instanceof L&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new G,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(j||(j=n(49).StringDecoder),this.decoder=new j(t.encoding),this.encoding=t.encoding)}function u(t){if(L=L||n(44),!(this instanceof u))return new u(t);this._readableState=new s(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),F.call(this)}function l(t,e,n,r,o){var a=t._readableState;if(null===e)a.reading=!1,g(t,a);else{var s;o||(s=f(a,e)),s?t.emit("error",s):a.objectMode||e&&e.length>0?("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===z.prototype||(e=i(e)),r?a.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):c(t,a,e,!0):a.ended?t.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(e=a.decoder.write(e),a.objectMode||0!==e.length?c(t,a,e,!1):b(t,a)):c(t,a,e,!1))):r||(a.reading=!1)}return h(a)}function c(t,e,n,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,r?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&y(t)),b(t,e)}function f(t,e){var n;return o(e)||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function h(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}function p(t){return t>=q?t=q:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function d(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=p(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function g(t,e){if(!e.ended){if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,y(t)}}function y(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(W("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?B(v,t):v(t))}function v(t){W("emit readable"),t.emit("readable"),S(t)}function b(t,e){e.readingMore||(e.readingMore=!0,B(m,t,e))}function m(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(W("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function w(t){return function(){var e=t._readableState;W("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&R(t,"data")&&(e.flowing=!0,S(t))}}function x(t){W("readable nexttick read 0"),t.read(0)}function _(t,e){e.resumeScheduled||(e.resumeScheduled=!0,B(k,t,e))}function k(t,e){e.reading||(W("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),S(t),e.flowing&&!e.reading&&t.read(0)}function S(t){var e=t._readableState;for(W("flow",e.flowing);e.flowing&&null!==t.read(););}function C(t,e){if(0===e.length)return null;var n;return e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=A(t,e.buffer,e.decoder),n}function A(t,e,n){var r;return t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():n?P(t,e):E(t,e),r}function P(t,e){var n=e.head,r=1,i=n.data;for(t-=i.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(a===o.length?i+=o:i+=o.slice(0,t),0===(t-=a)){a===o.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++r}return e.length-=r,i}function E(t,e){var n=z.allocUnsafe(t),r=e.head,i=1;for(r.data.copy(n),t-=r.data.length;r=r.next;){var o=r.data,a=t>o.length?o.length:t;if(o.copy(n,n.length-t,0,a),0===(t-=a)){a===o.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++i}return e.length-=i,n}function I(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,B(T,e,t))}function T(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function O(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}var B=n(37);t.exports=u;var L,M=n(5);u.ReadableState=s;var R=(n(32).EventEmitter,function(t,e){return t.listeners(e).length}),F=n(38),z=n(39).Buffer,D=e.Uint8Array||function(){},N=n(40);N.inherits=n(33);var U=n(41),W=void 0;W=U&&U.debuglog?U.debuglog("stream"):function(){};var j,G=n(42),V=n(43);N.inherits(u,F);var H=["error","close","destroy","pause","resume"];Object.defineProperty(u.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&